@bkm016/calcite 0.3.0 → 0.5.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 (90) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +103 -20
  3. package/dist/accounts.js +4 -2
  4. package/dist/accounts.js.map +1 -1
  5. package/dist/cli.js +12 -141
  6. package/dist/cli.js.map +1 -1
  7. package/dist/client-core.d.ts +22 -13
  8. package/dist/client-core.js +217 -260
  9. package/dist/client-core.js.map +1 -1
  10. package/dist/client.d.ts +44 -15
  11. package/dist/client.js +58 -21
  12. package/dist/client.js.map +1 -1
  13. package/dist/display.d.ts +0 -6
  14. package/dist/display.js +31 -44
  15. package/dist/display.js.map +1 -1
  16. package/dist/feed.d.ts +17 -0
  17. package/dist/feed.js +47 -0
  18. package/dist/feed.js.map +1 -0
  19. package/dist/game-run.d.ts +30 -0
  20. package/dist/game-run.js +51 -0
  21. package/dist/game-run.js.map +1 -0
  22. package/dist/hmc.d.ts +7 -0
  23. package/dist/hmc.js +42 -31
  24. package/dist/hmc.js.map +1 -1
  25. package/dist/index.d.ts +4 -2
  26. package/dist/index.js +2 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/install.d.ts +6 -0
  29. package/dist/install.js +26 -3
  30. package/dist/install.js.map +1 -1
  31. package/dist/java.js +11 -2
  32. package/dist/java.js.map +1 -1
  33. package/dist/launch.d.ts +79 -0
  34. package/dist/launch.js +142 -0
  35. package/dist/launch.js.map +1 -0
  36. package/dist/lock.js +18 -18
  37. package/dist/lock.js.map +1 -1
  38. package/dist/mcp/accounts.d.ts +3 -0
  39. package/dist/mcp/accounts.js +45 -0
  40. package/dist/mcp/accounts.js.map +1 -0
  41. package/dist/mcp/act.d.ts +3 -0
  42. package/dist/mcp/act.js +129 -0
  43. package/dist/mcp/act.js.map +1 -0
  44. package/dist/mcp/extensions.d.ts +3 -0
  45. package/dist/mcp/extensions.js +21 -0
  46. package/dist/mcp/extensions.js.map +1 -0
  47. package/dist/mcp/index.d.ts +13 -0
  48. package/dist/mcp/index.js +58 -0
  49. package/dist/mcp/index.js.map +1 -0
  50. package/dist/mcp/items.d.ts +3 -0
  51. package/dist/mcp/items.js +71 -0
  52. package/dist/mcp/items.js.map +1 -0
  53. package/dist/mcp/lifecycle.d.ts +3 -0
  54. package/dist/mcp/lifecycle.js +120 -0
  55. package/dist/mcp/lifecycle.js.map +1 -0
  56. package/dist/mcp/observe.d.ts +3 -0
  57. package/dist/mcp/observe.js +110 -0
  58. package/dist/mcp/observe.js.map +1 -0
  59. package/dist/mcp/shared.d.ts +49 -0
  60. package/dist/mcp/shared.js +56 -0
  61. package/dist/mcp/shared.js.map +1 -0
  62. package/dist/mcp/tasks.d.ts +15 -0
  63. package/dist/mcp/tasks.js +46 -0
  64. package/dist/mcp/tasks.js.map +1 -0
  65. package/dist/mods.js +6 -4
  66. package/dist/mods.js.map +1 -1
  67. package/dist/mojang.d.ts +5 -1
  68. package/dist/mojang.js.map +1 -1
  69. package/dist/names.js +30 -8
  70. package/dist/names.js.map +1 -1
  71. package/dist/net.js +25 -19
  72. package/dist/net.js.map +1 -1
  73. package/dist/paper.d.ts +46 -0
  74. package/dist/paper.js +200 -0
  75. package/dist/paper.js.map +1 -0
  76. package/dist/probe-server.d.ts +14 -4
  77. package/dist/probe-server.js +11 -10
  78. package/dist/probe-server.js.map +1 -1
  79. package/dist/repl.d.ts +6 -0
  80. package/dist/repl.js +207 -0
  81. package/dist/repl.js.map +1 -0
  82. package/dist/stage.d.ts +6 -0
  83. package/dist/stage.js +19 -0
  84. package/dist/stage.js.map +1 -0
  85. package/dist/types.d.ts +139 -5
  86. package/dist/types.js +12 -1
  87. package/dist/types.js.map +1 -1
  88. package/dist/zip.js.map +1 -1
  89. package/package.json +11 -3
  90. package/vendor/calcite-probe.jar +0 -0
@@ -0,0 +1,3 @@
1
+ import { type ToolContext } from './shared.js';
2
+ /** Launching, stopping and listing clients; versions. */
3
+ export declare function registerLifecycleTools({ server, manager, paths, defaults }: ToolContext): void;
@@ -0,0 +1,120 @@
1
+ import { z } from 'zod';
2
+ import { defaultUsername, installVersion } from '../client.js';
3
+ import { getManifest } from '../mojang.js';
4
+ import { clientName, tool } from './shared.js';
5
+ /** Launching, stopping and listing clients; versions. */
6
+ export function registerLifecycleTools({ server, manager, paths, defaults }) {
7
+ tool(server, 'launch_client', {
8
+ title: 'Launch a Minecraft client',
9
+ description: 'Downloads (if needed) and starts a Minecraft client that joins a server or plays a singleplayer world. Resolves once the player is in the world (or on the title screen with neither).',
10
+ inputSchema: {
11
+ name: z
12
+ .string()
13
+ .regex(/^[A-Za-z0-9_.-]{1,32}$/)
14
+ .describe('Unique client name; also the instance directory'),
15
+ version: z.string().default('release').describe('Minecraft version id, "release" (latest release) or "snapshot"'),
16
+ loader: z
17
+ .string()
18
+ .optional()
19
+ .describe('Mod loader: "fabric", "forge" or "neoforge", optionally with a version ("fabric@0.19.5"); installed on first use'),
20
+ mods: z
21
+ .array(z.string())
22
+ .optional()
23
+ .describe('Mods (needs loader): "modrinth:<project>[@version]" (with required dependencies), http(s) URLs of jars, or local jar/folder paths'),
24
+ extensions: z
25
+ .array(z.string())
26
+ .optional()
27
+ .describe('Probe extension jars (local paths or http(s) URLs) that add commands and events; see list_extensions'),
28
+ server: z.string().optional().describe('host[:port] to join'),
29
+ world: z
30
+ .object({
31
+ name: z.string().describe('Save name (letters, digits, - _ and inner spaces)'),
32
+ create: z.boolean().optional().describe('Create it when missing (default true)'),
33
+ gameMode: z.enum(['survival', 'creative', 'hardcore']).optional().describe('Game mode of a new world (default survival)'),
34
+ seed: z.string().optional().describe('Seed of a new world'),
35
+ })
36
+ .optional()
37
+ .describe('Singleplayer world to play in instead of joining a server; new worlds allow commands'),
38
+ username: z.string().optional().describe('Offline username (3-16 chars). Ignored when microsoft is set'),
39
+ microsoft: z
40
+ .union([z.boolean(), z.string()])
41
+ .optional()
42
+ .describe('Use a stored Microsoft account: true for the primary one or the profile name'),
43
+ render: z
44
+ .enum(['on-demand', 'always', 'off'])
45
+ .optional()
46
+ .describe('on-demand (default): render only for screenshots; always; off: no renderer at all'),
47
+ memory: z
48
+ .string()
49
+ .regex(/^\d+[MG]$/)
50
+ .optional()
51
+ .describe('Max heap, e.g. "2G"'),
52
+ reconnect: z.boolean().optional().describe('Relaunch and rejoin after a disconnect/crash (default true)'),
53
+ timeoutSeconds: z.number().int().positive().optional().describe('Startup timeout (default 900)'),
54
+ },
55
+ }, async (a) => {
56
+ const account = a.microsoft
57
+ ? { type: 'microsoft', name: typeof a.microsoft === 'string' ? a.microsoft : undefined }
58
+ : { type: 'offline', username: a.username ?? defaultUsername(a.name) };
59
+ const client = await manager.launch({
60
+ ...defaults,
61
+ name: a.name,
62
+ version: a.version,
63
+ loader: a.loader,
64
+ mods: a.mods,
65
+ extensions: a.extensions ?? defaults.extensions,
66
+ server: a.server,
67
+ world: a.world,
68
+ account,
69
+ render: a.render ?? defaults.render,
70
+ memory: a.memory ?? defaults.memory,
71
+ reconnect: a.reconnect ?? defaults.reconnect,
72
+ startTimeoutMs: a.timeoutSeconds ? a.timeoutSeconds * 1000 : defaults.startTimeoutMs,
73
+ });
74
+ return client.status();
75
+ });
76
+ tool(server, 'stop_client', { title: 'Stop a client', description: 'Stops the game and frees its resources.', inputSchema: { client: clientName } }, async ({ client }) => {
77
+ const target = manager.resolve(client);
78
+ await manager.stop(target.options.name);
79
+ return `Stopped ${target.options.name}`;
80
+ });
81
+ tool(server, 'list_clients', { title: 'List clients', description: 'Status of every client managed by this server.', inputSchema: {} }, () => manager.list());
82
+ tool(server, 'get_state', {
83
+ title: 'Client state',
84
+ description: 'Lifecycle status plus live game state: screen, position, health, food, dimension, fps, disconnect reason.',
85
+ inputSchema: { client: clientName },
86
+ }, async ({ client }) => {
87
+ const target = manager.resolve(client);
88
+ const status = target.status();
89
+ if (status.probeConnected) {
90
+ try {
91
+ status.game = await target.state();
92
+ }
93
+ catch {
94
+ // keep the last polled state
95
+ }
96
+ }
97
+ return status;
98
+ });
99
+ tool(server, 'install_version', {
100
+ title: 'Pre-download a version',
101
+ description: 'Downloads a version (client, libraries, assets, Java, optionally a mod loader) without launching, so the next launch is fast.',
102
+ inputSchema: {
103
+ version: z.string().default('release'),
104
+ loader: z.string().optional().describe('Also install a mod loader: "fabric", "forge" or "neoforge", optionally "@<version>"'),
105
+ },
106
+ }, async ({ version, loader }) => installVersion(version, { paths, loader }));
107
+ tool(server, 'list_versions', {
108
+ title: 'Available versions',
109
+ description: "Minecraft versions from Mojang's manifest (newest first).",
110
+ inputSchema: {
111
+ type: z.enum(['release', 'snapshot', 'old_beta', 'old_alpha', 'all']).default('release'),
112
+ limit: z.number().int().positive().default(30),
113
+ },
114
+ }, async ({ type, limit }) => {
115
+ const manifest = await getManifest(paths);
116
+ const versions = manifest.versions.filter((v) => type === 'all' || v.type === type).slice(0, limit);
117
+ return { latest: manifest.latest, versions: versions.map((v) => ({ id: v.id, type: v.type, releaseTime: v.releaseTime })) };
118
+ });
119
+ }
120
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/mcp/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ToolContext } from './shared.js';
2
+ /** Reading the world: entities, blocks, surroundings, screenshots, chat, events and logs. */
3
+ export declare function registerObserveTools({ server, manager }: ToolContext): void;
@@ -0,0 +1,110 @@
1
+ import { z } from 'zod';
2
+ import { CalciteError } from '../client.js';
3
+ import { clientName, coord, entityFilter, safe, timeoutSeconds, tool } from './shared.js';
4
+ /** Reading the world: entities, blocks, surroundings, screenshots, chat, events and logs. */
5
+ export function registerObserveTools({ server, manager }) {
6
+ tool(server, 'surroundings', {
7
+ title: 'Look around',
8
+ description: 'A compact picture of the area: a top-down relief map centred on the player (@), the most common blocks nearby with the nearest of each, nearby entities with offsets, and biome, time of day and weather. Start here before acting in an unknown place.',
9
+ inputSchema: { client: clientName, radius: z.number().int().min(2).max(24).default(8).describe('Map radius in blocks') },
10
+ }, async ({ client, radius }) => manager.resolve(client).surroundings({ radius }));
11
+ tool(server, 'find_blocks', {
12
+ title: 'Find blocks',
13
+ description: 'Finds loaded blocks by id or pattern around the player, nearest first: "oak_log", "*_ore", "minecraft:*planks". Use with walk_to and dig to gather resources.',
14
+ inputSchema: {
15
+ client: clientName,
16
+ blocks: z
17
+ .union([z.string(), z.array(z.string()).min(1)])
18
+ .describe('Block ids or patterns ("*" matches anything; "minecraft:" is implied)'),
19
+ radius: z.number().int().min(1).max(128).default(32).describe('Search radius around the player in blocks'),
20
+ limit: z.number().int().positive().max(256).default(16),
21
+ },
22
+ }, async ({ client, ...search }) => manager.resolve(client).findBlocks(search));
23
+ tool(server, 'get_entities', {
24
+ title: 'Entities the client sees',
25
+ description: 'Entities currently known to the client (what the server actually sent), with position, type, names and vehicle.',
26
+ inputSchema: { client: clientName, ...entityFilter },
27
+ }, async ({ client, ...query }) => {
28
+ const list = await manager.resolve(client).entities(query);
29
+ return { count: list.length, entities: list };
30
+ });
31
+ tool(server, 'get_block', {
32
+ title: 'Block at a position',
33
+ description: 'Block id and state properties at x/y/z as the client sees them.',
34
+ inputSchema: { client: clientName, x: coord, y: coord, z: coord },
35
+ }, async ({ client, ...pos }) => manager.resolve(client).block(pos));
36
+ tool(server, 'get_target', {
37
+ title: 'Crosshair target',
38
+ description: 'The block (with face) or entity the crosshair points at.',
39
+ inputSchema: { client: clientName },
40
+ }, async ({ client }) => manager.resolve(client).target());
41
+ server.registerTool('screenshot', {
42
+ title: 'Screenshot',
43
+ description: 'Renders and returns the current view as a PNG image.',
44
+ inputSchema: { client: clientName, keep: z.boolean().optional().describe('Also keep the file in the instance screenshots folder') },
45
+ }, safe(async ({ client, keep }) => {
46
+ const shot = await manager.resolve(client).screenshot({ keep });
47
+ const content = [{ type: 'image', data: shot.png.toString('base64'), mimeType: 'image/png' }];
48
+ if (shot.path)
49
+ content.push({ type: 'text', text: shot.path });
50
+ return { content };
51
+ }));
52
+ tool(server, 'set_render', {
53
+ title: 'Toggle continuous rendering',
54
+ description: 'Turns continuous rendering on (e.g. while watching) or off (saves CPU). Screenshots work either way.',
55
+ inputSchema: { client: clientName, enabled: z.boolean() },
56
+ }, async ({ client, enabled }) => {
57
+ await manager.resolve(client).setRender(enabled);
58
+ return `render ${enabled ? 'on' : 'off'}`;
59
+ });
60
+ tool(server, 'get_chat', {
61
+ title: 'Chat history',
62
+ description: 'Chat lines received by the client. Pass the last seen seq as "since" to get only new lines.',
63
+ inputSchema: {
64
+ client: clientName,
65
+ since: z.number().int().nonnegative().optional(),
66
+ limit: z.number().int().positive().max(1000).default(50),
67
+ },
68
+ }, ({ client, since, limit }) => manager.resolve(client).chatSince(since ?? 0, limit));
69
+ tool(server, 'get_events', {
70
+ title: 'Game events',
71
+ description: 'Events the client noticed: world.join/leave, player.hurt/death/respawn/food/dimension, inventory.change, container.open/close, screen.change, plus those from extensions and mods. Pass the last seen seq as "since" to get only new ones.',
72
+ inputSchema: {
73
+ client: clientName,
74
+ since: z.number().int().nonnegative().optional(),
75
+ name: z.string().optional().describe('Regular expression the event name must match, e.g. "^player\\\\."'),
76
+ limit: z.number().int().positive().max(1000).default(50),
77
+ },
78
+ }, ({ client, ...query }) => manager.resolve(client).eventsSince(query));
79
+ tool(server, 'wait_for', {
80
+ title: 'Wait for a condition',
81
+ description: 'Blocks until a chat line matches, a game event arrives, an entity appears/disappears, or the client reaches a phase.',
82
+ inputSchema: {
83
+ client: clientName,
84
+ chat: z.string().optional().describe('Case-insensitive regular expression matched against new chat lines'),
85
+ event: z
86
+ .string()
87
+ .optional()
88
+ .describe('Regular expression matched against the names of new game events, e.g. "player.hurt|player.death"'),
89
+ entity: z.object({ ...entityFilter, present: z.boolean().optional().describe('false waits for it to disappear') }).optional(),
90
+ phase: z.enum(['in_game', 'disconnected', 'reconnecting', 'crashed', 'stopped']).optional(),
91
+ timeoutSeconds: timeoutSeconds(30),
92
+ },
93
+ }, async ({ client, timeoutSeconds: seconds, ...cond }) => {
94
+ if (!cond.chat && !cond.event && !cond.entity && !cond.phase)
95
+ throw new CalciteError('bad_condition', 'Give chat, event, entity or phase');
96
+ return manager.resolve(client).waitFor(cond, seconds * 1000);
97
+ });
98
+ tool(server, 'get_logs', {
99
+ title: 'Client logs',
100
+ description: 'Game and Calcite log lines (useful when a launch fails or the client crashed).',
101
+ inputSchema: {
102
+ client: clientName,
103
+ since: z.number().int().nonnegative().optional(),
104
+ limit: z.number().int().positive().max(2000).default(100),
105
+ contains: z.string().optional(),
106
+ source: z.enum(['game', 'calcite']).optional(),
107
+ },
108
+ }, ({ client, ...query }) => manager.resolve(client).logsSince(query));
109
+ }
110
+ //# sourceMappingURL=observe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/mcp/observe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import { z } from 'zod';
4
+ import { type ClientOptions } from '../client.js';
5
+ import type { ClientManager } from '../manager.js';
6
+ import type { CalcitePaths } from '../paths.js';
7
+ import type { BackgroundTasks } from './tasks.js';
8
+ export type Result = CallToolResult;
9
+ /** What every group of tools works with. */
10
+ export interface ToolContext {
11
+ server: McpServer;
12
+ manager: ClientManager;
13
+ paths: CalcitePaths;
14
+ tasks: BackgroundTasks;
15
+ /** Defaults applied to launch_client calls. */
16
+ defaults: Partial<ClientOptions>;
17
+ }
18
+ export declare function text(value: unknown): Result;
19
+ export declare function failure(err: unknown): Result;
20
+ /** Wraps a handler so every failure becomes an MCP tool error instead of a protocol error. */
21
+ export declare function safe<A>(fn: (args: A) => Promise<Result>): (args: A) => Promise<Result>;
22
+ interface ToolConfig<S extends z.ZodRawShape> {
23
+ title: string;
24
+ description: string;
25
+ inputSchema: S;
26
+ }
27
+ /** Registers a tool whose handler's return value is sent as JSON (or as is, for a string). */
28
+ export declare function tool<S extends z.ZodRawShape>(server: McpServer, name: string, config: ToolConfig<S>, handler: (args: z.objectOutputType<S, z.ZodTypeAny>) => unknown): void;
29
+ /** Requires all of x, y and z or none of them. */
30
+ export declare function optionalPoint(x?: number, y?: number, zz?: number): {
31
+ x: number;
32
+ y: number;
33
+ z: number;
34
+ } | undefined;
35
+ export declare const clientName: z.ZodOptional<z.ZodString>;
36
+ export declare const coord: z.ZodNumber;
37
+ export declare const face: z.ZodOptional<z.ZodEnum<["down", "up", "north", "south", "west", "east"]>>;
38
+ export declare const background: z.ZodDefault<z.ZodBoolean>;
39
+ export declare const stopOnDamage: z.ZodDefault<z.ZodBoolean>;
40
+ export declare const timeoutSeconds: (fallback: number, max?: number) => z.ZodDefault<z.ZodNumber>;
41
+ export declare const entityFilter: {
42
+ radius: z.ZodOptional<z.ZodNumber>;
43
+ type: z.ZodOptional<z.ZodString>;
44
+ uuid: z.ZodOptional<z.ZodString>;
45
+ name: z.ZodOptional<z.ZodString>;
46
+ limit: z.ZodOptional<z.ZodNumber>;
47
+ includeSelf: z.ZodOptional<z.ZodBoolean>;
48
+ };
49
+ export {};
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import { CalciteError } from '../client.js';
3
+ export function text(value) {
4
+ return { content: [{ type: 'text', text: typeof value === 'string' ? value : JSON.stringify(value, null, 2) }] };
5
+ }
6
+ export function failure(err) {
7
+ const code = err instanceof CalciteError ? err.code : err?.code;
8
+ const message = err instanceof Error ? err.message : String(err);
9
+ return { isError: true, content: [{ type: 'text', text: code ? `[${code}] ${message}` : message }] };
10
+ }
11
+ /** Wraps a handler so every failure becomes an MCP tool error instead of a protocol error. */
12
+ export function safe(fn) {
13
+ return async (args) => {
14
+ try {
15
+ return await fn(args);
16
+ }
17
+ catch (err) {
18
+ return failure(err);
19
+ }
20
+ };
21
+ }
22
+ /** Registers a tool whose handler's return value is sent as JSON (or as is, for a string). */
23
+ export function tool(server, name, config, handler) {
24
+ const callback = safe(async (args) => text(await handler(args)));
25
+ // the SDK computes the argument type through its own zod compatibility layer, which TypeScript cannot relate to S
26
+ server.registerTool(name, config, callback);
27
+ }
28
+ /** Requires all of x, y and z or none of them. */
29
+ export function optionalPoint(x, y, zz) {
30
+ if (x === undefined && y === undefined && zz === undefined)
31
+ return undefined;
32
+ if (x === undefined || y === undefined || zz === undefined)
33
+ throw new CalciteError('bad_request', 'Give all of x, y and z');
34
+ return { x, y, z: zz };
35
+ }
36
+ export const clientName = z.string().optional().describe('Client name; may be omitted when exactly one client is running');
37
+ export const coord = z.number().describe('Block coordinate');
38
+ export const face = z
39
+ .enum(['down', 'up', 'north', 'south', 'west', 'east'])
40
+ .optional()
41
+ .describe('Block face to target (default: the face nearest to the player)');
42
+ export const background = z
43
+ .boolean()
44
+ .default(false)
45
+ .describe('Return at once and keep going; follow it with get_task, cancel it with stop_actions');
46
+ export const stopOnDamage = z.boolean().default(false).describe('Stop (reason "damaged") as soon as the player takes damage');
47
+ export const timeoutSeconds = (fallback, max = 600) => z.number().positive().max(max).default(fallback);
48
+ export const entityFilter = {
49
+ radius: z.number().positive().optional().describe('Only entities within this many blocks of the player'),
50
+ type: z.string().optional().describe('Entity type id, e.g. "minecraft:player" or "zombie"'),
51
+ uuid: z.string().optional(),
52
+ name: z.string().optional().describe('Case-insensitive substring of the name or custom name'),
53
+ limit: z.number().int().positive().max(1000).optional(),
54
+ includeSelf: z.boolean().optional(),
55
+ };
56
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/mcp/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Client, TaskStatus } from '../client.js';
2
+ /**
3
+ * Long actions (walk_to, dig, craft) started with {@code background: true}. The probe runs one action per
4
+ * client at a time, so only the latest job of each client is kept; its outcome stays readable after it ends.
5
+ */
6
+ export declare class BackgroundTasks {
7
+ private readonly jobs;
8
+ /** Runs {@code action} and returns its result or, in the background, returns at once. */
9
+ run(client: Client, name: string, background: boolean, action: () => Promise<unknown>): Promise<unknown>;
10
+ private start;
11
+ /** The running action's progress plus the outcome of the latest background job, waiting up to {@code waitMs} for it. */
12
+ status(client: Client, waitMs: number): Promise<TaskStatus & {
13
+ background?: Record<string, unknown>;
14
+ }>;
15
+ }
@@ -0,0 +1,46 @@
1
+ import { sleep } from '../client-core.js';
2
+ /**
3
+ * Long actions (walk_to, dig, craft) started with {@code background: true}. The probe runs one action per
4
+ * client at a time, so only the latest job of each client is kept; its outcome stays readable after it ends.
5
+ */
6
+ export class BackgroundTasks {
7
+ jobs = new Map();
8
+ /** Runs {@code action} and returns its result or, in the background, returns at once. */
9
+ async run(client, name, background, action) {
10
+ return background ? this.start(client, name, action) : action();
11
+ }
12
+ start(client, name, run) {
13
+ const job = { name, startedAt: Date.now(), done: Promise.resolve() };
14
+ job.done = run()
15
+ .then((result) => {
16
+ job.result = result;
17
+ }, (err) => {
18
+ const e = err;
19
+ job.error = { code: e.code, message: e.message };
20
+ })
21
+ .finally(() => {
22
+ job.finishedAt = Date.now();
23
+ });
24
+ this.jobs.set(client.options.name, job);
25
+ return { started: name, next: 'Call get_task to follow it (waitSeconds waits for it to end); stop_actions cancels it' };
26
+ }
27
+ /** The running action's progress plus the outcome of the latest background job, waiting up to {@code waitMs} for it. */
28
+ async status(client, waitMs) {
29
+ const job = this.jobs.get(client.options.name);
30
+ if (job && job.finishedAt === undefined && waitMs > 0)
31
+ await Promise.race([job.done, sleep(waitMs)]);
32
+ let running = { running: false };
33
+ try {
34
+ running = await client.task();
35
+ }
36
+ catch {
37
+ // not in a world: nothing runs
38
+ }
39
+ if (!job)
40
+ return running;
41
+ const state = job.finishedAt === undefined ? 'running' : job.error ? 'failed' : 'done';
42
+ const seconds = Math.round(((job.finishedAt ?? Date.now()) - job.startedAt) / 100) / 10;
43
+ return { ...running, background: { name: job.name, state, seconds, result: job.result, error: job.error } };
44
+ }
45
+ }
46
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/mcp/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAY1C;;;GAGG;AACH,MAAM,OAAO,eAAe;IACT,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IAE/C,yFAAyF;IACzF,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,UAAmB,EAAE,MAA8B;QACzF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,MAAc,EAAE,IAAY,EAAE,GAA2B;QACrE,MAAM,GAAG,GAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1E,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE;aACb,IAAI,CACH,CAAC,MAAM,EAAE,EAAE;YACT,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,CAAC,EACD,CAAC,GAAY,EAAE,EAAE;YACf,MAAM,CAAC,GAAG,GAAgC,CAAC;YAC3C,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACnD,CAAC,CACF;aACA,OAAO,CAAC,GAAG,EAAE;YACZ,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,uFAAuF,EAAE,CAAC;IAC1H,CAAC;IAED,wHAAwH;IACxH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,OAAO,GAAe,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAO,OAAO,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACvF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACxF,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;IAC9G,CAAC;CACF"}
package/dist/mods.js CHANGED
@@ -32,7 +32,7 @@ async function modrinthVersion(project, version, mc, loader) {
32
32
  return pick;
33
33
  }
34
34
  async function modrinthFile(paths, v) {
35
- const f = v.files.find((x) => x.primary) ?? v.files[0];
35
+ const f = v.files.find((x) => x.primary) ?? v.files.at(0);
36
36
  if (!f)
37
37
  throw new CalciteError('mod_not_found', `Modrinth version ${v.id} has no files`);
38
38
  const name = safeName(f.filename);
@@ -51,7 +51,10 @@ async function localJars(spec) {
51
51
  }
52
52
  if (!info.isDirectory())
53
53
  return [path];
54
- return (await readdir(path)).filter((n) => n.toLowerCase().endsWith('.jar')).sort().map((n) => join(path, n));
54
+ return (await readdir(path))
55
+ .filter((n) => n.toLowerCase().endsWith('.jar'))
56
+ .sort()
57
+ .map((n) => join(path, n));
55
58
  }
56
59
  /**
57
60
  * Resolves mod specs to local jars: a jar or folder of jars, an http(s) URL, or "modrinth:<project>[@<version>]"
@@ -82,8 +85,7 @@ export async function resolveMods(paths, specs, mc, loader) {
82
85
  }
83
86
  }
84
87
  // Modrinth projects and their required dependencies, breadth first
85
- while (pending.length) {
86
- const next = pending.shift();
88
+ for (let next = pending.shift(); next; next = pending.shift()) {
87
89
  const v = await modrinthVersion(next.project, next.version, mc, loader);
88
90
  if (projects.has(v.project_id))
89
91
  continue;
package/dist/mods.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mods.js","sourceRoot":"","sources":["../src/mods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,YAAY,GAAG,6BAA6B,CAAC;AACnD,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AA4BtC,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,mBAAmB,IAAI,GAAG,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,OAA2B,EAAE,EAAU,EAAE,MAAkB;IACzG,MAAM,KAAK,GAAG,WAAW,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClI,IAAI,QAA2B,CAAC;IAChC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAoB,GAAG,YAAY,YAAY,kBAAkB,CAAC,OAAO,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;IAC1H,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA2B,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,YAAY,CAAC,eAAe,EAAE,4BAA4B,OAAO,GAAG,CAAC,CAAC;QACjI,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,OAAO;QAClB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;QACxE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,qBAAqB,OAAO,YAAY,OAAO,CAAC,CAAC,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,QAAQ,MAAM,iBAAiB,EAAE,EAAE,CACxH,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAmB,EAAE,CAAkB;IACjE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,eAAe,EAAE,iCAAiC,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAmB,EAAE,KAAe,EAAE,EAAU,EAAE,MAAkB;IACpG,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,OAAO,GAA4D,EAAE,CAAC;IAC5E,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,QAAQ,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACzG,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,MAAM,SAAS,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IACD,mEAAmE;IACnE,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAG,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YAAE,SAAS;QACzC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,eAAe,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,SAAS;YACpG,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI;YAAE,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,gCAAgC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3G,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAe;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrC,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,QAAQ,GAAI,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA0B,CAAC,KAAK,IAAI,EAAE,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,aAAa;IACf,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAmB,EAAE,KAAe;IAC1E,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAChH,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,YAAY,CAAC,qBAAqB,EAAE,4BAA4B,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,YAAY,CAAC,qBAAqB,EAAE,4BAA4B,IAAI,EAAE,CAAC,CAAC;QACtG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"mods.js","sourceRoot":"","sources":["../src/mods.ts"],"names":[],"mappings":"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"}
package/dist/mojang.d.ts CHANGED
@@ -2,7 +2,8 @@ import type { CalcitePaths } from './paths.js';
2
2
  export declare const MANIFEST_URL = "https://piston-meta.mojang.com/mc/game/version_manifest_v2.json";
3
3
  export interface ManifestVersion {
4
4
  id: string;
5
- type: 'release' | 'snapshot' | 'old_beta' | 'old_alpha' | string;
5
+ /** "release", "snapshot", "old_beta" or "old_alpha". */
6
+ type: string;
6
7
  url: string;
7
8
  sha1: string;
8
9
  releaseTime: string;
@@ -32,6 +33,9 @@ export interface VersionJson {
32
33
  client_mappings?: Download;
33
34
  server?: Download;
34
35
  };
36
+ assetIndex?: {
37
+ id: string;
38
+ };
35
39
  arguments?: {
36
40
  game?: unknown[];
37
41
  jvm?: unknown[];
@@ -1 +1 @@
1
- {"version":3,"file":"mojang.js","sourceRoot":"","sources":["../src/mojang.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mojang.js","sourceRoot":"","sources":["../src/mojang.ts"],"names":[],"mappings":"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"}