@mintmcp/hosted-cli 0.0.17 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +87 -5
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +65 -4
- package/dist/api.js.map +1 -1
- package/dist/containerBuilder.d.ts +48 -0
- package/dist/containerBuilder.d.ts.map +1 -0
- package/dist/containerBuilder.js +364 -0
- package/dist/containerBuilder.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +400 -38
- package/dist/index.js.map +1 -1
- package/dist/updateBuilder.d.ts +28 -3
- package/dist/updateBuilder.d.ts.map +1 -1
- package/dist/updateBuilder.js +8 -3
- package/dist/updateBuilder.js.map +1 -1
- package/package.json +2 -2
- package/src/api.ts +87 -4
- package/src/containerBuilder.ts +602 -0
- package/src/index.ts +633 -63
- package/src/updateBuilder.ts +10 -3
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
import { execFileSync, spawn } from "node:child_process";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import net from "node:net";
|
|
4
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
5
|
+
const defaultDeps = {
|
|
6
|
+
execFileSync,
|
|
7
|
+
spawn,
|
|
8
|
+
fetch,
|
|
9
|
+
getAvailablePort,
|
|
10
|
+
sleep: (ms) => delay(ms),
|
|
11
|
+
now: () => Date.now(),
|
|
12
|
+
};
|
|
13
|
+
const SIZE_WARN_BYTES = 250 * 1024 * 1024;
|
|
14
|
+
const SIZE_REJECT_BYTES = 1024 * 1024 * 1024;
|
|
15
|
+
const DEFAULT_BUILD_PLATFORM = "linux/amd64";
|
|
16
|
+
const DEFAULT_PROBE_PATH = "/mcp";
|
|
17
|
+
const DEFAULT_PROBE_TIMEOUT_MS = 30_000;
|
|
18
|
+
const LOCAL_TEST_REQUEST_TIMEOUT_MS = 5_000;
|
|
19
|
+
const LOCAL_TEST_IMAGE_PREFIX = "mintmcp-local-test";
|
|
20
|
+
const LOCAL_TEST_PROBE_ID = "mintmcp-local-test";
|
|
21
|
+
const LOCAL_TEST_PROTOCOL_VERSION = "2025-06-18";
|
|
22
|
+
const LOCAL_TEST_POLL_INTERVAL_MS = 500;
|
|
23
|
+
export function defaultBuildPlatform() {
|
|
24
|
+
return DEFAULT_BUILD_PLATFORM;
|
|
25
|
+
}
|
|
26
|
+
export function defaultLocalTestImageRef(now = defaultDeps.now()) {
|
|
27
|
+
return `${LOCAL_TEST_IMAGE_PREFIX}:${now}`;
|
|
28
|
+
}
|
|
29
|
+
export function ensureDockerAvailable(deps = defaultDeps) {
|
|
30
|
+
try {
|
|
31
|
+
deps.execFileSync("docker", ["info"], { stdio: "ignore" });
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new Error("Docker is not running or not installed. Install Docker Desktop or start the Docker daemon.");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function ensureDockerBuildxAvailable(deps = defaultDeps) {
|
|
38
|
+
try {
|
|
39
|
+
deps.execFileSync("docker", ["buildx", "version"], { stdio: "ignore" });
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
throw new Error("Docker Buildx is required. Install a Docker version with buildx support and try again.");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function buildImage(options, deps = defaultDeps) {
|
|
46
|
+
const { dockerfile = "Dockerfile", context = ".", buildArgs = [], target, platform, imageRef, } = options;
|
|
47
|
+
if (platform != undefined) {
|
|
48
|
+
assertSinglePlatform(platform);
|
|
49
|
+
}
|
|
50
|
+
const args = [
|
|
51
|
+
"buildx",
|
|
52
|
+
"build",
|
|
53
|
+
"--load",
|
|
54
|
+
...(platform != undefined ? ["--platform", platform] : []),
|
|
55
|
+
"-f",
|
|
56
|
+
dockerfile,
|
|
57
|
+
"-t",
|
|
58
|
+
imageRef,
|
|
59
|
+
...(target ? ["--target", target] : []),
|
|
60
|
+
...buildArgs.flatMap((arg) => ["--build-arg", arg]),
|
|
61
|
+
context,
|
|
62
|
+
];
|
|
63
|
+
console.log(`Building image: docker ${args.join(" ")}`);
|
|
64
|
+
deps.execFileSync("docker", args, { stdio: "inherit" });
|
|
65
|
+
const inspectOutput = deps
|
|
66
|
+
.execFileSync("docker", ["image", "inspect", imageRef, "--format", "{{.Size}}"], { encoding: "utf8" })
|
|
67
|
+
.trim();
|
|
68
|
+
const sizeBytes = Number.parseInt(inspectOutput, 10);
|
|
69
|
+
const sizeHuman = formatBytes(sizeBytes);
|
|
70
|
+
if (!Number.isFinite(sizeBytes)) {
|
|
71
|
+
throw new Error(`Could not determine built image size for ${imageRef}.`);
|
|
72
|
+
}
|
|
73
|
+
if (sizeBytes > SIZE_REJECT_BYTES) {
|
|
74
|
+
throw new Error(`Image size ${sizeHuman} exceeds maximum of 1 GB. Reduce layers or use a smaller base image.`);
|
|
75
|
+
}
|
|
76
|
+
if (sizeBytes > SIZE_WARN_BYTES) {
|
|
77
|
+
console.warn(`Image size ${sizeHuman} exceeds 250 MB. Consider optimizing.`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log(`Image size: ${sizeHuman}`);
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
imageRef,
|
|
84
|
+
...(platform != undefined ? { platform } : {}),
|
|
85
|
+
sizeBytes,
|
|
86
|
+
sizeHuman,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export function pushImage(imageRef, deps = defaultDeps) {
|
|
90
|
+
console.log(`Pushing image: ${imageRef}`);
|
|
91
|
+
deps.execFileSync("docker", ["push", imageRef], { stdio: "inherit" });
|
|
92
|
+
console.log("Image pushed.");
|
|
93
|
+
}
|
|
94
|
+
export function loginToRegistry(registryHost, username, password, deps = defaultDeps) {
|
|
95
|
+
console.log(`Logging in to registry: ${registryHost}`);
|
|
96
|
+
deps.execFileSync("docker", ["login", registryHost, "-u", username, "--password-stdin"], {
|
|
97
|
+
input: password,
|
|
98
|
+
stdio: "pipe",
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export function tagImage(sourceImageRef, targetImageRef, deps = defaultDeps) {
|
|
102
|
+
deps.execFileSync("docker", ["tag", sourceImageRef, targetImageRef], {
|
|
103
|
+
stdio: "inherit",
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
export function ensureImageAvailableLocally(imageRef, deps = defaultDeps) {
|
|
107
|
+
try {
|
|
108
|
+
deps.execFileSync("docker", ["image", "inspect", imageRef], {
|
|
109
|
+
stdio: "ignore",
|
|
110
|
+
});
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
console.log(`Pulling image: ${imageRef}`);
|
|
115
|
+
deps.execFileSync("docker", ["pull", imageRef], { stdio: "inherit" });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
export function assertImageSupportsPlatform(imageRef, platform, deps = defaultDeps) {
|
|
119
|
+
assertSinglePlatform(platform);
|
|
120
|
+
const manifestOutput = deps.execFileSync("docker", ["manifest", "inspect", imageRef, "-v"], { encoding: "utf8" });
|
|
121
|
+
if (!manifestSupportsPlatform(manifestOutput, platform)) {
|
|
122
|
+
throw new Error(`Pushed image ${imageRef} does not advertise support for ${platform}. Build and push a compatible image before deploying to the hosted runtime.`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export async function smokeTestImage(options, deps = defaultDeps) {
|
|
126
|
+
const probePath = options.probePath ?? DEFAULT_PROBE_PATH;
|
|
127
|
+
const probeTimeoutMs = options.probeTimeoutMs ?? DEFAULT_PROBE_TIMEOUT_MS;
|
|
128
|
+
const hostPort = await deps.getAvailablePort();
|
|
129
|
+
const containerName = `${LOCAL_TEST_IMAGE_PREFIX}-${randomUUID().slice(0, 12)}`;
|
|
130
|
+
const url = `http://127.0.0.1:${hostPort}${probePath}`;
|
|
131
|
+
console.log(`Running image locally: ${options.imageRef}`);
|
|
132
|
+
const container = deps.spawn("docker", [
|
|
133
|
+
"run",
|
|
134
|
+
"--rm",
|
|
135
|
+
"--name",
|
|
136
|
+
containerName,
|
|
137
|
+
"-p",
|
|
138
|
+
`${hostPort}:${hostPort}`,
|
|
139
|
+
"-e",
|
|
140
|
+
`PORT=${hostPort}`,
|
|
141
|
+
...(options.envFile ? ["--env-file", options.envFile] : []),
|
|
142
|
+
...(options.env ?? []).flatMap((entry) => ["-e", entry]),
|
|
143
|
+
options.imageRef,
|
|
144
|
+
], { stdio: ["ignore", "pipe", "pipe"] });
|
|
145
|
+
const { logs, exitInfo } = captureContainerLogs(container);
|
|
146
|
+
try {
|
|
147
|
+
await waitForMcpReady({
|
|
148
|
+
url,
|
|
149
|
+
probeTimeoutMs,
|
|
150
|
+
}, {
|
|
151
|
+
fetch: deps.fetch,
|
|
152
|
+
sleep: deps.sleep,
|
|
153
|
+
getExitInfo: () => exitInfo.value,
|
|
154
|
+
});
|
|
155
|
+
console.log(`Local MCP probe succeeded: ${url}`);
|
|
156
|
+
return { containerName, imageRef: options.imageRef, url };
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
const message = formatSmokeTestFailureMessage(error, logs.join(""));
|
|
160
|
+
throw new Error(message);
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
await stopContainer(containerName, deps);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function assertSinglePlatform(platform) {
|
|
167
|
+
if (platform.includes(",")) {
|
|
168
|
+
throw new Error("Multiple platforms are not supported yet. Pass a single platform such as linux/amd64.");
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function formatBytes(bytes) {
|
|
172
|
+
if (bytes < 1024) {
|
|
173
|
+
return `${bytes} B`;
|
|
174
|
+
}
|
|
175
|
+
if (bytes < 1024 * 1024) {
|
|
176
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
177
|
+
}
|
|
178
|
+
if (bytes < 1024 * 1024 * 1024) {
|
|
179
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
180
|
+
}
|
|
181
|
+
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
|
|
182
|
+
}
|
|
183
|
+
function manifestSupportsPlatform(rawManifest, platform) {
|
|
184
|
+
const parsed = parsePlatform(platform);
|
|
185
|
+
const manifest = JSON.parse(rawManifest);
|
|
186
|
+
if (!manifest) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
if (platformMatches(manifest.Descriptor?.platform, parsed)) {
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
if (manifest.os != undefined &&
|
|
193
|
+
manifest.architecture != undefined &&
|
|
194
|
+
platformMatches({
|
|
195
|
+
os: manifest.os,
|
|
196
|
+
architecture: manifest.architecture,
|
|
197
|
+
...(manifest.variant != undefined ? { variant: manifest.variant } : {}),
|
|
198
|
+
}, parsed)) {
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
return (manifest.manifests?.some((entry) => platformMatches(entry.platform, parsed)) ?? false);
|
|
202
|
+
}
|
|
203
|
+
function parsePlatform(platform) {
|
|
204
|
+
const [os, architecture, variant, ...rest] = platform.split("/");
|
|
205
|
+
if (!os || !architecture || rest.length > 0) {
|
|
206
|
+
throw new Error(`Unsupported platform "${platform}". Use a single platform like linux/amd64.`);
|
|
207
|
+
}
|
|
208
|
+
return { os, architecture, ...(variant ? { variant } : {}) };
|
|
209
|
+
}
|
|
210
|
+
function platformMatches(actual, expected) {
|
|
211
|
+
return (actual?.os === expected.os &&
|
|
212
|
+
actual?.architecture === expected.architecture &&
|
|
213
|
+
(expected.variant == undefined || actual?.variant === expected.variant));
|
|
214
|
+
}
|
|
215
|
+
function captureContainerLogs(container) {
|
|
216
|
+
const logs = [];
|
|
217
|
+
const exitInfo = {};
|
|
218
|
+
for (const stream of [container.stdout, container.stderr]) {
|
|
219
|
+
stream?.on("data", (chunk) => {
|
|
220
|
+
logs.push(typeof chunk === "string" ? chunk : chunk.toString("utf8"));
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
container.on("exit", (code, signal) => {
|
|
224
|
+
exitInfo.value = { code, signal };
|
|
225
|
+
});
|
|
226
|
+
return { logs, exitInfo };
|
|
227
|
+
}
|
|
228
|
+
async function waitForMcpReady(params, deps) {
|
|
229
|
+
const deadline = Date.now() + params.probeTimeoutMs;
|
|
230
|
+
while (Date.now() < deadline) {
|
|
231
|
+
const exitInfo = deps.getExitInfo();
|
|
232
|
+
if (exitInfo) {
|
|
233
|
+
throw new Error(`Container exited before responding to the MCP probe (code=${String(exitInfo.code)}, signal=${String(exitInfo.signal)}).`);
|
|
234
|
+
}
|
|
235
|
+
try {
|
|
236
|
+
const response = await deps.fetch(params.url, {
|
|
237
|
+
method: "POST",
|
|
238
|
+
headers: {
|
|
239
|
+
"content-type": "application/json",
|
|
240
|
+
accept: "application/json, text/event-stream",
|
|
241
|
+
connection: "close",
|
|
242
|
+
},
|
|
243
|
+
signal: AbortSignal.timeout(Math.min(LOCAL_TEST_REQUEST_TIMEOUT_MS, Math.max(1, deadline - Date.now()))),
|
|
244
|
+
body: JSON.stringify({
|
|
245
|
+
jsonrpc: "2.0",
|
|
246
|
+
id: LOCAL_TEST_PROBE_ID,
|
|
247
|
+
method: "initialize",
|
|
248
|
+
params: {
|
|
249
|
+
protocolVersion: LOCAL_TEST_PROTOCOL_VERSION,
|
|
250
|
+
capabilities: {},
|
|
251
|
+
clientInfo: {
|
|
252
|
+
name: "MintMCP Local Probe",
|
|
253
|
+
version: "1.0.0",
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
}),
|
|
257
|
+
});
|
|
258
|
+
if (response.status !== 200 && response.status !== 202) {
|
|
259
|
+
throw new Error(`Probe returned HTTP ${response.status}`);
|
|
260
|
+
}
|
|
261
|
+
let responseBody = "";
|
|
262
|
+
if (response.body != undefined) {
|
|
263
|
+
const reader = response.body.getReader();
|
|
264
|
+
try {
|
|
265
|
+
while (true) {
|
|
266
|
+
const { done, value } = await reader.read();
|
|
267
|
+
if (done) {
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
responseBody += Buffer.from(value).toString("utf8");
|
|
271
|
+
if (isInitializeSuccessResponse(responseBody)) {
|
|
272
|
+
await reader.cancel().catch(() => undefined);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
finally {
|
|
278
|
+
reader.releaseLock();
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (isInitializeSuccessResponse(responseBody)) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
throw new Error("Probe returned an unexpected JSON-RPC payload");
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
const exitInfo = deps.getExitInfo();
|
|
288
|
+
if (exitInfo) {
|
|
289
|
+
throw new Error(`Container exited before responding to the MCP probe (code=${String(exitInfo.code)}, signal=${String(exitInfo.signal)}).`);
|
|
290
|
+
}
|
|
291
|
+
await deps.sleep(LOCAL_TEST_POLL_INTERVAL_MS);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
throw new Error(`Timed out waiting ${params.probeTimeoutMs}ms for the local MCP probe to succeed.`);
|
|
295
|
+
}
|
|
296
|
+
function isInitializeSuccessResponse(bodyText) {
|
|
297
|
+
const parseCandidate = (candidate) => {
|
|
298
|
+
try {
|
|
299
|
+
const parsed = JSON.parse(candidate);
|
|
300
|
+
return (parsed.jsonrpc === "2.0" &&
|
|
301
|
+
parsed.id === LOCAL_TEST_PROBE_ID &&
|
|
302
|
+
parsed.error == undefined &&
|
|
303
|
+
typeof parsed.result === "object" &&
|
|
304
|
+
parsed.result != undefined);
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
return false;
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
const trimmed = bodyText.trim();
|
|
311
|
+
if (trimmed.length === 0) {
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
if (parseCandidate(trimmed)) {
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
const lines = trimmed
|
|
318
|
+
.split(/\r?\n/)
|
|
319
|
+
.map((line) => line.trim())
|
|
320
|
+
.filter((line) => line.length > 0)
|
|
321
|
+
.map((line) => (line.startsWith("data:") ? line.slice(5).trim() : line));
|
|
322
|
+
return lines.some((line) => parseCandidate(line));
|
|
323
|
+
}
|
|
324
|
+
async function stopContainer(containerName, deps) {
|
|
325
|
+
try {
|
|
326
|
+
deps.execFileSync("docker", ["rm", "-f", containerName], {
|
|
327
|
+
stdio: "ignore",
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
// Ignore cleanup failures: the container may have already exited.
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
async function getAvailablePort() {
|
|
335
|
+
return await new Promise((resolve, reject) => {
|
|
336
|
+
const server = net.createServer();
|
|
337
|
+
server.unref();
|
|
338
|
+
server.on("error", reject);
|
|
339
|
+
server.listen(0, "127.0.0.1", () => {
|
|
340
|
+
const address = server.address();
|
|
341
|
+
if (address == null || typeof address === "string") {
|
|
342
|
+
server.close(() => reject(new Error("Could not determine a free port")));
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
const { port } = address;
|
|
346
|
+
server.close((error) => {
|
|
347
|
+
if (error) {
|
|
348
|
+
reject(error);
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
resolve(port);
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
function formatSmokeTestFailureMessage(error, logs) {
|
|
357
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
358
|
+
const trimmedLogs = logs.trim();
|
|
359
|
+
if (trimmedLogs.length === 0) {
|
|
360
|
+
return `Local image smoke test failed: ${message}`;
|
|
361
|
+
}
|
|
362
|
+
return `Local image smoke test failed: ${message}\n\nContainer logs:\n${trimmedLogs}`;
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=containerBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containerBuilder.js","sourceRoot":"","sources":["../src/containerBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAS1E,OAAO,EACL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAS1E,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,UAAU,CAAC;AA4ClB,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACpE,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC"}
|