@paretools/docker 0.8.5 → 0.10.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.
- package/README.md +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/docker-runner.d.ts +1 -1
- package/dist/lib/docker-runner.d.ts.map +1 -1
- package/dist/lib/docker-runner.js +2 -2
- package/dist/lib/docker-runner.js.map +1 -1
- package/dist/lib/formatters.d.ts +62 -21
- package/dist/lib/formatters.d.ts.map +1 -1
- package/dist/lib/formatters.js +369 -52
- package/dist/lib/formatters.js.map +1 -1
- package/dist/lib/parsers.d.ts +50 -23
- package/dist/lib/parsers.d.ts.map +1 -1
- package/dist/lib/parsers.js +852 -129
- package/dist/lib/parsers.js.map +1 -1
- package/dist/schemas/index.d.ts +267 -9
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +186 -7
- package/dist/schemas/index.js.map +1 -1
- package/dist/tools/build.d.ts.map +1 -1
- package/dist/tools/build.js +122 -21
- package/dist/tools/build.js.map +1 -1
- package/dist/tools/compose-build.d.ts.map +1 -1
- package/dist/tools/compose-build.js +67 -8
- package/dist/tools/compose-build.js.map +1 -1
- package/dist/tools/compose-down.d.ts.map +1 -1
- package/dist/tools/compose-down.js +39 -7
- package/dist/tools/compose-down.js.map +1 -1
- package/dist/tools/compose-logs.d.ts.map +1 -1
- package/dist/tools/compose-logs.js +52 -7
- package/dist/tools/compose-logs.js.map +1 -1
- package/dist/tools/compose-ps.d.ts.map +1 -1
- package/dist/tools/compose-ps.js +65 -8
- package/dist/tools/compose-ps.js.map +1 -1
- package/dist/tools/compose-up.d.ts.map +1 -1
- package/dist/tools/compose-up.js +83 -6
- package/dist/tools/compose-up.js.map +1 -1
- package/dist/tools/exec.d.ts.map +1 -1
- package/dist/tools/exec.js +66 -17
- package/dist/tools/exec.js.map +1 -1
- package/dist/tools/images.d.ts.map +1 -1
- package/dist/tools/images.js +33 -11
- package/dist/tools/images.js.map +1 -1
- package/dist/tools/inspect.d.ts.map +1 -1
- package/dist/tools/inspect.js +43 -16
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/logs.d.ts.map +1 -1
- package/dist/tools/logs.js +34 -11
- package/dist/tools/logs.js.map +1 -1
- package/dist/tools/network-ls.d.ts.map +1 -1
- package/dist/tools/network-ls.js +23 -10
- package/dist/tools/network-ls.js.map +1 -1
- package/dist/tools/ps.d.ts.map +1 -1
- package/dist/tools/ps.js +21 -6
- package/dist/tools/ps.js.map +1 -1
- package/dist/tools/pull.d.ts.map +1 -1
- package/dist/tools/pull.js +16 -14
- package/dist/tools/pull.js.map +1 -1
- package/dist/tools/run.d.ts.map +1 -1
- package/dist/tools/run.js +107 -10
- package/dist/tools/run.js.map +1 -1
- package/dist/tools/stats.d.ts.map +1 -1
- package/dist/tools/stats.js +21 -6
- package/dist/tools/stats.js.map +1 -1
- package/dist/tools/volume-ls.d.ts.map +1 -1
- package/dist/tools/volume-ls.js +23 -10
- package/dist/tools/volume-ls.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-up.js","sourceRoot":"","sources":["../../src/tools/compose-up.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,+DAA+D;AAC/D,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,
|
|
1
|
+
{"version":3,"file":"compose-up.js","sourceRoot":"","sources":["../../src/tools/compose-up.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/tools/exec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/tools/exec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAmIjD"}
|
package/dist/tools/exec.js
CHANGED
|
@@ -8,9 +8,7 @@ import { DockerExecSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerExecTool(server) {
|
|
9
9
|
server.registerTool("exec", {
|
|
10
10
|
title: "Docker Exec",
|
|
11
|
-
description: "Executes arbitrary commands inside a running Docker container and returns structured output. "
|
|
12
|
-
"Use instead of running `docker exec` in the terminal. " +
|
|
13
|
-
"WARNING: This runs arbitrary commands inside the container. Only use on trusted containers.",
|
|
11
|
+
description: "Executes arbitrary commands inside a running Docker container and returns structured output. WARNING: may execute untrusted code.",
|
|
14
12
|
inputSchema: {
|
|
15
13
|
container: z.string().max(INPUT_LIMITS.SHORT_STRING_MAX).describe("Container name or ID"),
|
|
16
14
|
command: z
|
|
@@ -22,48 +20,99 @@ export function registerExecTool(server) {
|
|
|
22
20
|
.max(INPUT_LIMITS.PATH_MAX)
|
|
23
21
|
.optional()
|
|
24
22
|
.describe("Working directory inside the container"),
|
|
23
|
+
user: z
|
|
24
|
+
.string()
|
|
25
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Run command as a specific user (e.g., "root", "1000:1000")'),
|
|
25
28
|
env: z
|
|
26
29
|
.array(z.string().max(INPUT_LIMITS.STRING_MAX))
|
|
27
30
|
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
28
31
|
.optional()
|
|
29
32
|
.default([])
|
|
30
33
|
.describe('Environment variables (e.g., ["KEY=VALUE"])'),
|
|
31
|
-
|
|
34
|
+
envFile: z
|
|
32
35
|
.string()
|
|
33
36
|
.max(INPUT_LIMITS.PATH_MAX)
|
|
34
37
|
.optional()
|
|
35
|
-
.describe("
|
|
36
|
-
|
|
38
|
+
.describe("Read environment variables from a file (--env-file)"),
|
|
39
|
+
detach: z
|
|
37
40
|
.boolean()
|
|
38
41
|
.optional()
|
|
39
|
-
.default(
|
|
40
|
-
.describe("
|
|
42
|
+
.default(false)
|
|
43
|
+
.describe("Run command in the background (default: false)"),
|
|
44
|
+
timeout: z
|
|
45
|
+
.number()
|
|
46
|
+
.int()
|
|
47
|
+
.min(1000)
|
|
48
|
+
.max(600000)
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Command timeout in milliseconds (min 1000, max 600000)"),
|
|
51
|
+
parseJson: z
|
|
52
|
+
.boolean()
|
|
53
|
+
.optional()
|
|
54
|
+
.default(false)
|
|
55
|
+
.describe("Parse stdout as JSON and return it in `json` when valid"),
|
|
56
|
+
/** #108: Add output truncation with limit param. */
|
|
57
|
+
limit: z
|
|
58
|
+
.number()
|
|
59
|
+
.optional()
|
|
60
|
+
.describe("Maximum number of characters to return in stdout. " +
|
|
61
|
+
"Output exceeding this limit will be truncated and isTruncated set to true."),
|
|
62
|
+
path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Host working directory"),
|
|
63
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
41
64
|
},
|
|
42
65
|
outputSchema: DockerExecSchema,
|
|
43
|
-
}, async ({ container, command, workdir, env, path, compact }) => {
|
|
66
|
+
}, async ({ container, command, workdir, user, env, envFile, detach, timeout, parseJson, limit, path, compact, }) => {
|
|
44
67
|
if (!command || command.length === 0) {
|
|
45
68
|
throw new Error("command array must not be empty");
|
|
46
69
|
}
|
|
47
70
|
assertNoFlagInjection(container, "container");
|
|
71
|
+
// Validate first element of command array (the binary name) to prevent flag injection.
|
|
72
|
+
// Subsequent elements are intentionally unchecked as they are arguments to the command itself.
|
|
48
73
|
assertNoFlagInjection(command[0], "command");
|
|
49
74
|
if (workdir)
|
|
50
75
|
assertNoFlagInjection(workdir, "workdir");
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
assertNoFlagInjection(
|
|
55
|
-
}
|
|
76
|
+
if (user)
|
|
77
|
+
assertNoFlagInjection(user, "user");
|
|
78
|
+
if (envFile)
|
|
79
|
+
assertNoFlagInjection(envFile, "envFile");
|
|
56
80
|
const args = ["exec"];
|
|
81
|
+
if (detach)
|
|
82
|
+
args.push("-d");
|
|
57
83
|
if (workdir)
|
|
58
84
|
args.push("-w", workdir);
|
|
85
|
+
if (user)
|
|
86
|
+
args.push("-u", user);
|
|
87
|
+
if (envFile)
|
|
88
|
+
args.push("--env-file", envFile);
|
|
59
89
|
for (const e of env ?? []) {
|
|
60
90
|
assertNoFlagInjection(e, "env");
|
|
61
91
|
args.push("-e", e);
|
|
62
92
|
}
|
|
63
93
|
args.push(container, ...command);
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
94
|
+
const start = Date.now();
|
|
95
|
+
let data;
|
|
96
|
+
let rawOutput = "";
|
|
97
|
+
try {
|
|
98
|
+
const result = await docker(args, path, timeout);
|
|
99
|
+
const duration = Math.round((Date.now() - start) / 100) / 10;
|
|
100
|
+
// #108: Pass limit to parseExecOutput for output truncation
|
|
101
|
+
data = parseExecOutput(result.stdout, result.stderr, result.exitCode, duration, limit, {
|
|
102
|
+
parseJson,
|
|
103
|
+
});
|
|
104
|
+
rawOutput = `${result.stdout}\n${result.stderr}`;
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
const duration = Math.round((Date.now() - start) / 100) / 10;
|
|
108
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
109
|
+
if (!/timed out/i.test(message)) {
|
|
110
|
+
throw err;
|
|
111
|
+
}
|
|
112
|
+
data = parseExecOutput("", message, 124, duration, limit, { timedOut: true, parseJson });
|
|
113
|
+
rawOutput = message;
|
|
114
|
+
}
|
|
115
|
+
return compactDualOutput(data, rawOutput, formatExec, compactExecMap, formatExecCompact, compact === false);
|
|
67
116
|
});
|
|
68
117
|
}
|
|
69
118
|
//# sourceMappingURL=exec.js.map
|
package/dist/tools/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/tools/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/tools/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/tools/images.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/tools/images.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,QAkEnD"}
|
package/dist/tools/images.js
CHANGED
|
@@ -8,33 +8,55 @@ import { DockerImagesSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerImagesTool(server) {
|
|
9
9
|
server.registerTool("images", {
|
|
10
10
|
title: "Docker Images",
|
|
11
|
-
description: "Lists Docker images with structured repository, tag, size, and creation info.
|
|
11
|
+
description: "Lists Docker images with structured repository, tag, size, and creation info.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
all: z
|
|
14
14
|
.boolean()
|
|
15
15
|
.optional()
|
|
16
16
|
.default(false)
|
|
17
17
|
.describe("Show all images including intermediates"),
|
|
18
|
-
|
|
18
|
+
/** #109: Renamed from 'filter' to 'reference' to avoid confusion with Docker's --filter flag. */
|
|
19
|
+
reference: z
|
|
19
20
|
.string()
|
|
20
21
|
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
21
22
|
.optional()
|
|
22
|
-
.describe("Filter by reference (e.g., 'myapp', 'nginx:*')"
|
|
23
|
-
|
|
23
|
+
.describe("Filter by image reference (positional arg, e.g., 'myapp', 'nginx:*'). " +
|
|
24
|
+
"This is a positional reference filter, not Docker's --filter flag."),
|
|
25
|
+
filterExpr: z
|
|
26
|
+
.string()
|
|
27
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Key-value filter expression (--filter). Examples: 'dangling=true', 'reference=myimage:*', 'before=image:tag', 'since=image:tag', 'label=com.example.version'"),
|
|
30
|
+
digests: z
|
|
24
31
|
.boolean()
|
|
25
32
|
.optional()
|
|
26
|
-
.default(
|
|
27
|
-
.describe("
|
|
33
|
+
.default(false)
|
|
34
|
+
.describe("Show image digests (default: false)"),
|
|
35
|
+
noTrunc: z
|
|
36
|
+
.boolean()
|
|
37
|
+
.optional()
|
|
38
|
+
.default(false)
|
|
39
|
+
.describe("Do not truncate image IDs (default: false)"),
|
|
40
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
28
41
|
},
|
|
29
42
|
outputSchema: DockerImagesSchema,
|
|
30
|
-
}, async ({ all,
|
|
31
|
-
if (
|
|
32
|
-
assertNoFlagInjection(
|
|
43
|
+
}, async ({ all, reference, filterExpr, digests, noTrunc, compact }) => {
|
|
44
|
+
if (reference)
|
|
45
|
+
assertNoFlagInjection(reference, "reference");
|
|
46
|
+
if (filterExpr)
|
|
47
|
+
assertNoFlagInjection(filterExpr, "filterExpr");
|
|
33
48
|
const args = ["images", "--format", "json"];
|
|
34
49
|
if (all)
|
|
35
50
|
args.push("-a");
|
|
36
|
-
if (
|
|
37
|
-
args.push(filter);
|
|
51
|
+
if (filterExpr)
|
|
52
|
+
args.push("--filter", filterExpr);
|
|
53
|
+
if (digests)
|
|
54
|
+
args.push("--digests");
|
|
55
|
+
if (noTrunc)
|
|
56
|
+
args.push("--no-trunc");
|
|
57
|
+
// #109: 'reference' is the positional argument (was 'filter')
|
|
58
|
+
if (reference)
|
|
59
|
+
args.push(reference);
|
|
38
60
|
const result = await docker(args);
|
|
39
61
|
const data = parseImagesJson(result.stdout);
|
|
40
62
|
return compactDualOutput(data, result.stdout, formatImages, compactImagesMap, formatImagesCompact, compact === false);
|
package/dist/tools/images.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/tools/images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,2DAA2D;AAC3D,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,
|
|
1
|
+
{"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/tools/images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,2DAA2D;AAC3D,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,yCAAyC,CAAC;YACtD,iGAAiG;YACjG,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,EAAE;iBACV,QAAQ,CACP,wEAAwE;gBACtE,oEAAoE,CACvE;YACH,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,EAAE;iBACV,QAAQ,CACP,8JAA8J,CAC/J;YACH,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,qCAAqC,CAAC;YAClD,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,4CAA4C,CAAC;YACzD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SAChF;QACD,YAAY,EAAE,kBAAkB;KACjC,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QAClE,IAAI,SAAS;YAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,UAAU;YAAE,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAEhE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,8DAA8D;QAC9D,IAAI,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QA0EpD"}
|
package/dist/tools/inspect.js
CHANGED
|
@@ -1,40 +1,67 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { docker } from "../lib/docker-runner.js";
|
|
4
|
-
import {
|
|
4
|
+
import { parseInspectJsonAll } from "../lib/parsers.js";
|
|
5
5
|
import { formatInspect, compactInspectMap, formatInspectCompact } from "../lib/formatters.js";
|
|
6
6
|
import { DockerInspectSchema } from "../schemas/index.js";
|
|
7
7
|
/** Registers the `inspect` tool on the given MCP server. */
|
|
8
8
|
export function registerInspectTool(server) {
|
|
9
9
|
server.registerTool("inspect", {
|
|
10
10
|
title: "Docker Inspect",
|
|
11
|
-
description: "Shows detailed container or image information with structured state, image, and platform data.
|
|
11
|
+
description: "Shows detailed container or image information with structured state, image, and platform data.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
target: z
|
|
14
|
-
.
|
|
15
|
-
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
.
|
|
19
|
-
|
|
14
|
+
.union([
|
|
15
|
+
z.string().max(INPUT_LIMITS.SHORT_STRING_MAX),
|
|
16
|
+
z.array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX)).max(INPUT_LIMITS.ARRAY_MAX),
|
|
17
|
+
])
|
|
18
|
+
.describe("Container/image/network/volume target(s) to inspect"),
|
|
19
|
+
type: z
|
|
20
|
+
.enum(["container", "image", "volume", "network"])
|
|
20
21
|
.optional()
|
|
21
|
-
.describe(
|
|
22
|
-
|
|
22
|
+
.describe('Object type to inspect: "container", "image", "volume", or "network" (--type)'),
|
|
23
|
+
size: z
|
|
23
24
|
.boolean()
|
|
24
25
|
.optional()
|
|
25
|
-
.default(
|
|
26
|
-
.describe("
|
|
26
|
+
.default(false)
|
|
27
|
+
.describe("Display total file sizes (-s, --size)"),
|
|
28
|
+
path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Working directory"),
|
|
29
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
27
30
|
},
|
|
28
31
|
outputSchema: DockerInspectSchema,
|
|
29
|
-
}, async ({ target, path, compact }) => {
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
+
}, async ({ target, type, size, path, compact }) => {
|
|
33
|
+
const targets = Array.isArray(target) ? target : [target];
|
|
34
|
+
for (const t of targets) {
|
|
35
|
+
assertNoFlagInjection(t, "target");
|
|
36
|
+
}
|
|
37
|
+
const args = ["inspect", "--format", "json"];
|
|
38
|
+
if (type)
|
|
39
|
+
args.push("--type", type);
|
|
40
|
+
if (size)
|
|
41
|
+
args.push("-s");
|
|
42
|
+
args.push(...targets);
|
|
32
43
|
const result = await docker(args, path);
|
|
33
44
|
if (result.exitCode !== 0) {
|
|
34
45
|
const errorMsg = result.stderr || result.stdout || "Unknown error";
|
|
35
46
|
throw new Error(`docker inspect failed: ${errorMsg.trim()}`);
|
|
36
47
|
}
|
|
37
|
-
const
|
|
48
|
+
const items = parseInspectJsonAll(result.stdout);
|
|
49
|
+
if (items.length === 0) {
|
|
50
|
+
throw new Error("docker inspect returned no objects");
|
|
51
|
+
}
|
|
52
|
+
const data = {
|
|
53
|
+
...items[0],
|
|
54
|
+
...(items.length > 1
|
|
55
|
+
? {
|
|
56
|
+
relatedTargets: items.map((item, idx) => ({
|
|
57
|
+
target: targets[idx] ?? item.name,
|
|
58
|
+
id: item.id,
|
|
59
|
+
name: item.name,
|
|
60
|
+
inspectType: item.inspectType,
|
|
61
|
+
})),
|
|
62
|
+
}
|
|
63
|
+
: {}),
|
|
64
|
+
};
|
|
38
65
|
return compactDualOutput(data, result.stdout, formatInspect, compactInspectMap, formatInspectCompact, compact === false);
|
|
39
66
|
});
|
|
40
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/logs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QA4EjD"}
|
package/dist/tools/logs.js
CHANGED
|
@@ -8,42 +8,65 @@ import { DockerLogsSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerLogsTool(server) {
|
|
9
9
|
server.registerTool("logs", {
|
|
10
10
|
title: "Docker Logs",
|
|
11
|
-
description: "Retrieves container logs as structured line arrays.
|
|
11
|
+
description: "Retrieves container logs as structured line arrays.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
container: z.string().max(INPUT_LIMITS.SHORT_STRING_MAX).describe("Container name or ID"),
|
|
14
14
|
tail: z
|
|
15
15
|
.number()
|
|
16
16
|
.optional()
|
|
17
17
|
.default(100)
|
|
18
|
-
.describe("Number of lines to
|
|
18
|
+
.describe("Number of lines to fetch from Docker (passed to --tail). " +
|
|
19
|
+
"This controls how many lines Docker returns from the end of the log. Default: 100."),
|
|
19
20
|
since: z
|
|
20
21
|
.string()
|
|
21
22
|
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
22
23
|
.optional()
|
|
23
24
|
.describe("Show logs since timestamp (e.g., '10m', '2024-01-01')"),
|
|
25
|
+
until: z
|
|
26
|
+
.string()
|
|
27
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Show logs until timestamp (e.g., '5m', '2024-01-02') for time-bounded queries"),
|
|
30
|
+
/** #114: Clarified - 'limit' truncates the structured output AFTER Docker returns lines.
|
|
31
|
+
* Use 'tail' to control how many lines Docker returns, and 'limit' to cap the structured response. */
|
|
24
32
|
limit: z
|
|
25
33
|
.number()
|
|
26
34
|
.optional()
|
|
27
|
-
.
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
.describe("Max lines in structured output. Truncates AFTER Docker returns lines (sets isTruncated=true). " +
|
|
36
|
+
"Use 'tail' to limit what Docker returns; use 'limit' to cap the structured response size."),
|
|
37
|
+
timestamps: z
|
|
38
|
+
.boolean()
|
|
39
|
+
.optional()
|
|
40
|
+
.default(false)
|
|
41
|
+
.describe("Show timestamps for each log line (default: false)"),
|
|
42
|
+
details: z
|
|
30
43
|
.boolean()
|
|
31
44
|
.optional()
|
|
32
|
-
.default(
|
|
33
|
-
.describe("
|
|
45
|
+
.default(false)
|
|
46
|
+
.describe("Show extra details provided to logs (default: false)"),
|
|
47
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
34
48
|
},
|
|
35
49
|
outputSchema: DockerLogsSchema,
|
|
36
|
-
}, async ({ container, tail, since, limit, compact }) => {
|
|
50
|
+
}, async ({ container, tail, since, until, limit, timestamps, details, compact }) => {
|
|
37
51
|
assertNoFlagInjection(container, "container");
|
|
38
52
|
if (since)
|
|
39
53
|
assertNoFlagInjection(since, "since");
|
|
54
|
+
if (until)
|
|
55
|
+
assertNoFlagInjection(until, "until");
|
|
40
56
|
const args = ["logs", container, "--tail", String(tail ?? 100)];
|
|
41
57
|
if (since)
|
|
42
58
|
args.push("--since", since);
|
|
59
|
+
if (until)
|
|
60
|
+
args.push("--until", until);
|
|
61
|
+
if (timestamps)
|
|
62
|
+
args.push("--timestamps");
|
|
63
|
+
if (details)
|
|
64
|
+
args.push("--details");
|
|
43
65
|
const result = await docker(args);
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
66
|
+
// #113: Capture stdout and stderr separately
|
|
67
|
+
const combinedOutput = result.stdout || result.stderr;
|
|
68
|
+
const data = parseLogsOutput(combinedOutput, container, limit, result.stderr);
|
|
69
|
+
return compactDualOutput(data, combinedOutput, formatLogs, compactLogsMap, formatLogsCompact, compact === false);
|
|
47
70
|
});
|
|
48
71
|
}
|
|
49
72
|
//# sourceMappingURL=logs.js.map
|
package/dist/tools/logs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-ls.d.ts","sourceRoot":"","sources":["../../src/tools/network-ls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"network-ls.d.ts","sourceRoot":"","sources":["../../src/tools/network-ls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QAiDtD"}
|
package/dist/tools/network-ls.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { compactDualOutput, INPUT_LIMITS } from "@paretools/shared";
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { docker } from "../lib/docker-runner.js";
|
|
4
4
|
import { parseNetworkLsJson } from "../lib/parsers.js";
|
|
5
5
|
import { formatNetworkLs, compactNetworkLsMap, formatNetworkLsCompact } from "../lib/formatters.js";
|
|
@@ -8,22 +8,35 @@ import { DockerNetworkLsSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerNetworkLsTool(server) {
|
|
9
9
|
server.registerTool("network-ls", {
|
|
10
10
|
title: "Docker Network LS",
|
|
11
|
-
description: "Lists Docker networks with structured driver and scope information.
|
|
11
|
+
description: "Lists Docker networks with structured driver and scope information.",
|
|
12
12
|
inputSchema: {
|
|
13
|
-
path: z
|
|
14
|
-
|
|
15
|
-
.
|
|
13
|
+
path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Working directory"),
|
|
14
|
+
filter: z
|
|
15
|
+
.union([
|
|
16
|
+
z.string().max(INPUT_LIMITS.SHORT_STRING_MAX),
|
|
17
|
+
z.array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX)).max(INPUT_LIMITS.ARRAY_MAX),
|
|
18
|
+
])
|
|
16
19
|
.optional()
|
|
17
|
-
.describe("
|
|
18
|
-
|
|
20
|
+
.describe("Filter by driver, name, scope, label, type. String or string[] for multiple filters."),
|
|
21
|
+
noTrunc: z
|
|
19
22
|
.boolean()
|
|
20
23
|
.optional()
|
|
21
|
-
.default(
|
|
22
|
-
.describe("
|
|
24
|
+
.default(false)
|
|
25
|
+
.describe("Do not truncate network IDs (default: false)"),
|
|
26
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
23
27
|
},
|
|
24
28
|
outputSchema: DockerNetworkLsSchema,
|
|
25
|
-
}, async ({ path, compact }) => {
|
|
29
|
+
}, async ({ path, filter, noTrunc, compact }) => {
|
|
30
|
+
const filters = filter ? (Array.isArray(filter) ? filter : [filter]) : [];
|
|
31
|
+
for (const f of filters) {
|
|
32
|
+
assertNoFlagInjection(f, "filter");
|
|
33
|
+
}
|
|
26
34
|
const args = ["network", "ls", "--format", "json"];
|
|
35
|
+
if (noTrunc)
|
|
36
|
+
args.push("--no-trunc");
|
|
37
|
+
for (const f of filters) {
|
|
38
|
+
args.push("--filter", f);
|
|
39
|
+
}
|
|
27
40
|
const result = await docker(args, path);
|
|
28
41
|
const data = parseNetworkLsJson(result.stdout);
|
|
29
42
|
return compactDualOutput(data, result.stdout, formatNetworkLs, compactNetworkLsMap, formatNetworkLsCompact, compact === false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-ls.js","sourceRoot":"","sources":["../../src/tools/network-ls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"network-ls.js","sourceRoot":"","sources":["../../src/tools/network-ls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,+DAA+D;AAC/D,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACpF,MAAM,EAAE,CAAC;iBACN,KAAK,CAAC;gBACL,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;gBAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;aACnF,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CACP,sFAAsF,CACvF;YACH,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SAChF;QACD,YAAY,EAAE,qBAAqB;KACpC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,qBAAqB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/ps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/tools/ps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/tools/ps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,QA+C/C"}
|
package/dist/tools/ps.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { compactDualOutput } from "@paretools/shared";
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { docker } from "../lib/docker-runner.js";
|
|
4
4
|
import { parsePsJson } from "../lib/parsers.js";
|
|
5
5
|
import { formatPs, compactPsMap, formatPsCompact } from "../lib/formatters.js";
|
|
@@ -8,24 +8,39 @@ import { DockerPsSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerPsTool(server) {
|
|
9
9
|
server.registerTool("ps", {
|
|
10
10
|
title: "Docker PS",
|
|
11
|
-
description: "Lists Docker containers with structured status, ports, and state information.
|
|
11
|
+
description: "Lists Docker containers with structured status, ports, and state information.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
all: z
|
|
14
14
|
.boolean()
|
|
15
15
|
.optional()
|
|
16
16
|
.default(true)
|
|
17
17
|
.describe("Show all containers (default: true, includes stopped)"),
|
|
18
|
-
|
|
18
|
+
last: z.number().optional().describe("Show only the N most recently created containers"),
|
|
19
|
+
size: z
|
|
19
20
|
.boolean()
|
|
20
21
|
.optional()
|
|
21
|
-
.default(
|
|
22
|
-
.describe("
|
|
22
|
+
.default(false)
|
|
23
|
+
.describe("Display total file sizes per container (default: false)"),
|
|
24
|
+
filter: z
|
|
25
|
+
.string()
|
|
26
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
27
|
+
.optional()
|
|
28
|
+
.describe("Filter by status, name, label, network (--filter)"),
|
|
29
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
23
30
|
},
|
|
24
31
|
outputSchema: DockerPsSchema,
|
|
25
|
-
}, async ({ all, compact }) => {
|
|
32
|
+
}, async ({ all, last, size, filter, compact }) => {
|
|
33
|
+
if (filter)
|
|
34
|
+
assertNoFlagInjection(filter, "filter");
|
|
26
35
|
const args = ["ps", "--format", "json", "--no-trunc"];
|
|
27
36
|
if (all)
|
|
28
37
|
args.push("-a");
|
|
38
|
+
if (last != null)
|
|
39
|
+
args.push("--last", String(last));
|
|
40
|
+
if (size)
|
|
41
|
+
args.push("-s");
|
|
42
|
+
if (filter)
|
|
43
|
+
args.push("--filter", filter);
|
|
29
44
|
const result = await docker(args);
|
|
30
45
|
const data = parsePsJson(result.stdout);
|
|
31
46
|
return compactDualOutput(data, result.stdout, formatPs, compactPsMap, formatPsCompact, compact === false);
|
package/dist/tools/ps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps.js","sourceRoot":"","sources":["../../src/tools/ps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ps.js","sourceRoot":"","sources":["../../src/tools/ps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,uDAAuD;AACvD,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,MAAM,CAAC,YAAY,CACjB,IAAI,EACJ;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,uDAAuD,CAAC;YACpE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YACxF,IAAI,EAAE,CAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,yDAAyD,CAAC;YACtE,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;YAChE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SAChF;QACD,YAAY,EAAE,cAAc;KAC7B,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7C,IAAI,MAAM;YAAE,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/pull.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/tools/pull.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/tools/pull.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAsDjD"}
|