@procedures/docker 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +752 -2
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/index.d.ts +35 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +35 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/module.d.ts +16 -0
  10. package/dist/module.d.ts.map +1 -0
  11. package/dist/module.js +183 -0
  12. package/dist/module.js.map +1 -0
  13. package/dist/procedures/docker/build.d.ts +12 -0
  14. package/dist/procedures/docker/build.d.ts.map +1 -0
  15. package/dist/procedures/docker/build.js +34 -0
  16. package/dist/procedures/docker/build.js.map +1 -0
  17. package/dist/procedures/docker/down.d.ts +12 -0
  18. package/dist/procedures/docker/down.d.ts.map +1 -0
  19. package/dist/procedures/docker/down.js +25 -0
  20. package/dist/procedures/docker/down.js.map +1 -0
  21. package/dist/procedures/docker/exec.d.ts +12 -0
  22. package/dist/procedures/docker/exec.d.ts.map +1 -0
  23. package/dist/procedures/docker/exec.js +30 -0
  24. package/dist/procedures/docker/exec.js.map +1 -0
  25. package/dist/procedures/docker/index.d.ts +11 -0
  26. package/dist/procedures/docker/index.d.ts.map +1 -0
  27. package/dist/procedures/docker/index.js +11 -0
  28. package/dist/procedures/docker/index.js.map +1 -0
  29. package/dist/procedures/docker/logs.d.ts +16 -0
  30. package/dist/procedures/docker/logs.d.ts.map +1 -0
  31. package/dist/procedures/docker/logs.js +40 -0
  32. package/dist/procedures/docker/logs.js.map +1 -0
  33. package/dist/procedures/docker/ps.d.ts +12 -0
  34. package/dist/procedures/docker/ps.d.ts.map +1 -0
  35. package/dist/procedures/docker/ps.js +22 -0
  36. package/dist/procedures/docker/ps.js.map +1 -0
  37. package/dist/procedures/docker/pull.d.ts +12 -0
  38. package/dist/procedures/docker/pull.d.ts.map +1 -0
  39. package/dist/procedures/docker/pull.js +17 -0
  40. package/dist/procedures/docker/pull.js.map +1 -0
  41. package/dist/procedures/docker/rm.d.ts +12 -0
  42. package/dist/procedures/docker/rm.d.ts.map +1 -0
  43. package/dist/procedures/docker/rm.js +21 -0
  44. package/dist/procedures/docker/rm.js.map +1 -0
  45. package/dist/procedures/docker/run.d.ts +21 -0
  46. package/dist/procedures/docker/run.d.ts.map +1 -0
  47. package/dist/procedures/docker/run.js +56 -0
  48. package/dist/procedures/docker/run.js.map +1 -0
  49. package/dist/procedures/docker/shared.d.ts +23 -0
  50. package/dist/procedures/docker/shared.d.ts.map +1 -0
  51. package/dist/procedures/docker/shared.js +51 -0
  52. package/dist/procedures/docker/shared.js.map +1 -0
  53. package/dist/procedures/docker/stop.d.ts +12 -0
  54. package/dist/procedures/docker/stop.d.ts.map +1 -0
  55. package/dist/procedures/docker/stop.js +20 -0
  56. package/dist/procedures/docker/stop.js.map +1 -0
  57. package/dist/procedures/docker/up.d.ts +12 -0
  58. package/dist/procedures/docker/up.d.ts.map +1 -0
  59. package/dist/procedures/docker/up.js +28 -0
  60. package/dist/procedures/docker/up.js.map +1 -0
  61. package/dist/register.d.ts +9 -0
  62. package/dist/register.d.ts.map +1 -0
  63. package/dist/register.js +16 -0
  64. package/dist/register.js.map +1 -0
  65. package/dist/types.d.ts +130 -0
  66. package/dist/types.d.ts.map +1 -0
  67. package/dist/types.js +207 -0
  68. package/dist/types.js.map +1 -0
  69. package/package.json +81 -3
  70. package/src/index.ts +75 -0
  71. package/src/module.ts +237 -0
  72. package/src/procedures/docker/build.ts +46 -0
  73. package/src/procedures/docker/down.ts +31 -0
  74. package/src/procedures/docker/exec.ts +37 -0
  75. package/src/procedures/docker/index.ts +10 -0
  76. package/src/procedures/docker/logs.ts +52 -0
  77. package/src/procedures/docker/ps.ts +27 -0
  78. package/src/procedures/docker/pull.ts +23 -0
  79. package/src/procedures/docker/rm.ts +28 -0
  80. package/src/procedures/docker/run.ts +65 -0
  81. package/src/procedures/docker/shared.ts +62 -0
  82. package/src/procedures/docker/stop.ts +29 -0
  83. package/src/procedures/docker/up.ts +35 -0
  84. package/src/register.ts +20 -0
  85. package/src/types.ts +351 -0
@@ -0,0 +1,56 @@
1
+ /**
2
+ * docker.run procedure
3
+ *
4
+ * Run a Docker container.
5
+ */
6
+ import { dockerArg, runDocker, words } from "./shared.js";
7
+ /**
8
+ * Run a Docker container
9
+ *
10
+ * @example
11
+ * // Run nginx in detached mode
12
+ * await client.call(["docker", "run"], {
13
+ * image: "nginx:latest",
14
+ * name: "my-nginx",
15
+ * ports: ["8080:80"],
16
+ * detach: true,
17
+ * });
18
+ */
19
+ export async function dockerRun(input, ctx) {
20
+ {
21
+ const args = ["run"];
22
+ // Add flags
23
+ if (input.detach)
24
+ args.push("-d");
25
+ if (input.rm)
26
+ args.push("--rm");
27
+ if (input.name)
28
+ args.push("--name", input.name);
29
+ // Add port mappings
30
+ if (input.ports) {
31
+ for (const port of input.ports) {
32
+ args.push("-p", port);
33
+ }
34
+ }
35
+ // Add volume mappings
36
+ if (input.volumes) {
37
+ for (const volume of input.volumes) {
38
+ args.push("-v", volume);
39
+ }
40
+ }
41
+ // Add environment variables
42
+ if (input.env) {
43
+ for (const [key, value] of Object.entries(input.env)) {
44
+ args.push("-e", `${key}=${value}`);
45
+ }
46
+ }
47
+ // Add image
48
+ args.push(dockerArg("image", input.image));
49
+ // Add command if specified
50
+ if (input.command) {
51
+ args.push(...words(input.command));
52
+ }
53
+ return runDocker(args, input, ctx);
54
+ }
55
+ }
56
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/procedures/docker/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAG1D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAqB,EACrB,GAAqB;IAErB,CAAC;QACC,MAAM,IAAI,GAAa,CAAC,KAAK,CAAC,CAAC;QAE/B,YAAY;QACZ,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhD,oBAAoB;QACpB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,YAAY;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3C,2BAA2B;QAC3B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The way every docker procedure runs docker: an argument list through `shell.run`, no shell.
3
+ *
4
+ * Before, each procedure joined its arguments into one string for `shell.exec`, which runs a
5
+ * shell, so a value such as `x & calc` ran a second command. `docker.*` is an MCP tool, and
6
+ * the deep dive ran an injected command through `docker.ps` and through `client.chain`
7
+ * (documentation/deep-dive-2026-10/wrappers.md, WRP-1).
8
+ */
9
+ import type { ProcedureContext } from "@procedures/client";
10
+ import type { DockerCommandOutput } from "../../types.js";
11
+ /**
12
+ * A value that docker reads as an argument (an image, a container, a path, a service). It must
13
+ * not start with "-", or docker reads it as an option (for example `--privileged`).
14
+ */
15
+ export declare function dockerArg(name: string, value: string): string;
16
+ /** The words of a command string, split at whitespace. No shell runs it, so there is no quoting. */
17
+ export declare function words(command: string): string[];
18
+ /** This function runs `docker <args>` and gives its result. It does not throw. */
19
+ export declare function runDocker(args: string[], input: {
20
+ cwd?: string | undefined;
21
+ timeout?: number | undefined;
22
+ }, ctx: ProcedureContext): Promise<DockerCommandOutput>;
23
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/procedures/docker/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,oGAAoG;AACpG,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAE/C;AAED,kFAAkF;AAClF,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACjE,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,mBAAmB,CAAC,CA4B9B"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The way every docker procedure runs docker: an argument list through `shell.run`, no shell.
3
+ *
4
+ * Before, each procedure joined its arguments into one string for `shell.exec`, which runs a
5
+ * shell, so a value such as `x & calc` ran a second command. `docker.*` is an MCP tool, and
6
+ * the deep dive ran an injected command through `docker.ps` and through `client.chain`
7
+ * (documentation/deep-dive-2026-10/wrappers.md, WRP-1).
8
+ */
9
+ /**
10
+ * A value that docker reads as an argument (an image, a container, a path, a service). It must
11
+ * not start with "-", or docker reads it as an option (for example `--privileged`).
12
+ */
13
+ export function dockerArg(name, value) {
14
+ if (value.startsWith("-")) {
15
+ throw new Error(`Invalid ${name} (starts with "-"): ${value}`);
16
+ }
17
+ return value;
18
+ }
19
+ /** The words of a command string, split at whitespace. No shell runs it, so there is no quoting. */
20
+ export function words(command) {
21
+ return command.trim().split(/\s+/).filter((word) => word.length > 0);
22
+ }
23
+ /** This function runs `docker <args>` and gives its result. It does not throw. */
24
+ export async function runDocker(args, input, ctx) {
25
+ const startTime = Date.now();
26
+ try {
27
+ const shellInput = { command: "docker", args };
28
+ if (input.cwd !== undefined)
29
+ shellInput.cwd = input.cwd;
30
+ if (input.timeout !== undefined)
31
+ shellInput.timeout = input.timeout;
32
+ const result = await ctx.client.call(["shell", "run"], shellInput);
33
+ return {
34
+ exitCode: result.exitCode,
35
+ stdout: result.stdout,
36
+ stderr: result.stderr,
37
+ success: result.exitCode === 0,
38
+ duration: Date.now() - startTime,
39
+ };
40
+ }
41
+ catch (error) {
42
+ return {
43
+ exitCode: 1,
44
+ stdout: "",
45
+ stderr: error instanceof Error ? error.message : String(error),
46
+ success: false,
47
+ duration: Date.now() - startTime,
48
+ };
49
+ }
50
+ }
51
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/procedures/docker/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,uBAAuB,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAc,EACd,KAAiE,EACjE,GAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,UAAU,GAAwE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACpH,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;YAAE,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACxD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAGlC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;QAEhC,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACjC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC9D,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACjC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * docker.stop procedure
3
+ *
4
+ * Stop running container(s).
5
+ */
6
+ import type { ProcedureContext } from "@procedures/client";
7
+ import type { DockerStopInput, DockerCommandOutput } from "../../types.js";
8
+ /**
9
+ * Stop container(s)
10
+ */
11
+ export declare function dockerStop(input: DockerStopInput, ctx: ProcedureContext): Promise<DockerCommandOutput>;
12
+ //# sourceMappingURL=stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/procedures/docker/stop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE3E;;GAEG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAY9B"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * docker.stop procedure
3
+ *
4
+ * Stop running container(s).
5
+ */
6
+ import { dockerArg, runDocker } from "./shared.js";
7
+ /**
8
+ * Stop container(s)
9
+ */
10
+ export async function dockerStop(input, ctx) {
11
+ {
12
+ const args = ["stop"];
13
+ if (input.time !== undefined) {
14
+ args.push("-t", String(input.time));
15
+ }
16
+ args.push(...input.containers.map((c) => dockerArg("container", c)));
17
+ return runDocker(args, input, ctx);
18
+ }
19
+ }
20
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/procedures/docker/stop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAsB,EACtB,GAAqB;IAErB,CAAC;QACC,MAAM,IAAI,GAAa,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAErE,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * docker.compose.up procedure
3
+ *
4
+ * Start services with docker compose.
5
+ */
6
+ import type { ProcedureContext } from "@procedures/client";
7
+ import type { DockerComposeUpInput, DockerCommandOutput } from "../../types.js";
8
+ /**
9
+ * Start services with docker compose
10
+ */
11
+ export declare function dockerComposeUp(input: DockerComposeUpInput, ctx: ProcedureContext): Promise<DockerCommandOutput>;
12
+ //# sourceMappingURL=up.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../../src/procedures/docker/up.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEhF;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,EAC3B,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAkB9B"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * docker.compose.up procedure
3
+ *
4
+ * Start services with docker compose.
5
+ */
6
+ import { dockerArg, runDocker } from "./shared.js";
7
+ /**
8
+ * Start services with docker compose
9
+ */
10
+ export async function dockerComposeUp(input, ctx) {
11
+ {
12
+ const args = ["compose"];
13
+ if (input.file)
14
+ args.push("-f", input.file);
15
+ args.push("up");
16
+ if (input.detach)
17
+ args.push("-d");
18
+ if (input.build)
19
+ args.push("--build");
20
+ if (input.forceRecreate)
21
+ args.push("--force-recreate");
22
+ if (input.services && input.services.length > 0) {
23
+ args.push(...input.services.map((s) => dockerArg("service", s)));
24
+ }
25
+ return runDocker(args, input, ctx);
26
+ }
27
+ }
28
+ //# sourceMappingURL=up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up.js","sourceRoot":"","sources":["../../../src/procedures/docker/up.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAA2B,EAC3B,GAAqB;IAErB,CAAC;QACC,MAAM,IAAI,GAAa,CAAC,SAAS,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEvD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Importing this file registers the procedures of @procedures/docker in the global registry
3
+ * (DECISIONS-2026-10, "Every package root registers its procedures"). The procedures as data
4
+ * are in `module.ts`, which registers nothing: a host with its own registry uses that one.
5
+ */
6
+ import "@procedures/shell";
7
+ export * from "./module.js";
8
+ export declare function registerDockerProcedures(): void;
9
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,mBAAmB,CAAC;AAK3B,cAAc,aAAa,CAAC;AAE5B,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Importing this file registers the procedures of @procedures/docker in the global registry
3
+ * (DECISIONS-2026-10, "Every package root registers its procedures"). The procedures as data
4
+ * are in `module.ts`, which registers nothing: a host with its own registry uses that one.
5
+ */
6
+ // Import shell dependency to ensure shell.exec is registered
7
+ import "@procedures/shell";
8
+ import { registerProcedures } from "@procedures/client";
9
+ import { dockerModule } from "./module.js";
10
+ export * from "./module.js";
11
+ export function registerDockerProcedures() {
12
+ registerProcedures(dockerModule.procedures);
13
+ }
14
+ // Auto-register when this module is loaded
15
+ registerDockerProcedures();
16
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6DAA6D;AAC7D,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,cAAc,aAAa,CAAC;AAE5B,MAAM,UAAU,wBAAwB;IACtC,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED,2CAA2C;AAC3C,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Type definitions for client-docker procedures
3
+ *
4
+ * client-docker wraps Docker CLI commands as procedures using client-shell.
5
+ */
6
+ import { z } from "zod";
7
+ export interface DockerCommandOutput {
8
+ /** Exit code of the command */
9
+ exitCode: number;
10
+ /** Standard output */
11
+ stdout: string;
12
+ /** Standard error */
13
+ stderr: string;
14
+ /** Whether command succeeded (exit code 0) */
15
+ success: boolean;
16
+ /** Duration in milliseconds */
17
+ duration: number;
18
+ }
19
+ /** One item of a followed log: a line of the container, or the end of `docker logs` (the last item). */
20
+ export type DockerLogItem = {
21
+ type: "stdout" | "stderr";
22
+ line: string;
23
+ } | {
24
+ type: "exit";
25
+ exitCode: number;
26
+ duration: number;
27
+ signal?: string | undefined;
28
+ timedOut?: boolean | undefined;
29
+ aborted?: boolean | undefined;
30
+ };
31
+ /** The result of a docker command: every docker.* procedure gives it. */
32
+ export declare const DockerCommandOutputSchema: z.ZodType<DockerCommandOutput>;
33
+ /** docker.logs: one result, or with follow a stream of lines and one last exit item. */
34
+ export declare const DockerLogsOutputSchema: z.ZodType<DockerCommandOutput | DockerLogItem>;
35
+ export declare const DockerRunInputSchema: z.ZodObject<{
36
+ image: z.ZodString;
37
+ name: z.ZodOptional<z.ZodString>;
38
+ ports: z.ZodOptional<z.ZodArray<z.ZodString>>;
39
+ volumes: z.ZodOptional<z.ZodArray<z.ZodString>>;
40
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
41
+ detach: z.ZodOptional<z.ZodBoolean>;
42
+ rm: z.ZodOptional<z.ZodBoolean>;
43
+ command: z.ZodOptional<z.ZodString>;
44
+ cwd: z.ZodOptional<z.ZodString>;
45
+ timeout: z.ZodOptional<z.ZodNumber>;
46
+ }>;
47
+ export type DockerRunInput = z.infer<typeof DockerRunInputSchema>;
48
+ export declare const DockerBuildInputSchema: z.ZodObject<{
49
+ context: z.ZodString;
50
+ tag: z.ZodString;
51
+ dockerfile: z.ZodOptional<z.ZodString>;
52
+ buildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
53
+ noCache: z.ZodOptional<z.ZodBoolean>;
54
+ cwd: z.ZodOptional<z.ZodString>;
55
+ timeout: z.ZodOptional<z.ZodNumber>;
56
+ }>;
57
+ export type DockerBuildInput = z.infer<typeof DockerBuildInputSchema>;
58
+ export declare const DockerPullInputSchema: z.ZodObject<{
59
+ image: z.ZodString;
60
+ tag: z.ZodOptional<z.ZodString>;
61
+ cwd: z.ZodOptional<z.ZodString>;
62
+ timeout: z.ZodOptional<z.ZodNumber>;
63
+ }>;
64
+ export type DockerPullInput = z.infer<typeof DockerPullInputSchema>;
65
+ export declare const DockerExecInputSchema: z.ZodObject<{
66
+ container: z.ZodString;
67
+ command: z.ZodString;
68
+ interactive: z.ZodOptional<z.ZodBoolean>;
69
+ tty: z.ZodOptional<z.ZodBoolean>;
70
+ workdir: z.ZodOptional<z.ZodString>;
71
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
72
+ cwd: z.ZodOptional<z.ZodString>;
73
+ timeout: z.ZodOptional<z.ZodNumber>;
74
+ }>;
75
+ export type DockerExecInput = z.infer<typeof DockerExecInputSchema>;
76
+ export declare const DockerStopInputSchema: z.ZodObject<{
77
+ containers: z.ZodArray<z.ZodString>;
78
+ time: z.ZodOptional<z.ZodNumber>;
79
+ cwd: z.ZodOptional<z.ZodString>;
80
+ timeout: z.ZodOptional<z.ZodNumber>;
81
+ }>;
82
+ export type DockerStopInput = z.infer<typeof DockerStopInputSchema>;
83
+ export declare const DockerRmInputSchema: z.ZodObject<{
84
+ containers: z.ZodArray<z.ZodString>;
85
+ force: z.ZodOptional<z.ZodBoolean>;
86
+ volumes: z.ZodOptional<z.ZodBoolean>;
87
+ cwd: z.ZodOptional<z.ZodString>;
88
+ timeout: z.ZodOptional<z.ZodNumber>;
89
+ }>;
90
+ export type DockerRmInput = z.infer<typeof DockerRmInputSchema>;
91
+ export declare const DockerPsInputSchema: z.ZodObject<{
92
+ all: z.ZodOptional<z.ZodBoolean>;
93
+ filter: z.ZodOptional<z.ZodString>;
94
+ format: z.ZodOptional<z.ZodString>;
95
+ cwd: z.ZodOptional<z.ZodString>;
96
+ timeout: z.ZodOptional<z.ZodNumber>;
97
+ }>;
98
+ export type DockerPsInput = z.infer<typeof DockerPsInputSchema>;
99
+ export declare const DockerLogsInputSchema: z.ZodObject<{
100
+ container: z.ZodString;
101
+ follow: z.ZodOptional<z.ZodBoolean>;
102
+ tail: z.ZodOptional<z.ZodNumber>;
103
+ timestamps: z.ZodOptional<z.ZodBoolean>;
104
+ cwd: z.ZodOptional<z.ZodString>;
105
+ timeout: z.ZodOptional<z.ZodNumber>;
106
+ }>;
107
+ export type DockerLogsInput = z.infer<typeof DockerLogsInputSchema>;
108
+ export declare const DockerComposeUpInputSchema: z.ZodObject<{
109
+ file: z.ZodOptional<z.ZodString>;
110
+ services: z.ZodOptional<z.ZodArray<z.ZodString>>;
111
+ detach: z.ZodOptional<z.ZodBoolean>;
112
+ build: z.ZodOptional<z.ZodBoolean>;
113
+ forceRecreate: z.ZodOptional<z.ZodBoolean>;
114
+ cwd: z.ZodOptional<z.ZodString>;
115
+ timeout: z.ZodOptional<z.ZodNumber>;
116
+ }>;
117
+ export type DockerComposeUpInput = z.infer<typeof DockerComposeUpInputSchema>;
118
+ export declare const DockerComposeDownInputSchema: z.ZodObject<{
119
+ file: z.ZodOptional<z.ZodString>;
120
+ volumes: z.ZodOptional<z.ZodBoolean>;
121
+ removeOrphans: z.ZodOptional<z.ZodBoolean>;
122
+ rmi: z.ZodOptional<z.ZodEnum<{
123
+ all: "all";
124
+ local: "local";
125
+ }>>;
126
+ cwd: z.ZodOptional<z.ZodString>;
127
+ timeout: z.ZodOptional<z.ZodNumber>;
128
+ }>;
129
+ export type DockerComposeDownInput = z.infer<typeof DockerComposeDownInputSchema>;
130
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wGAAwG;AACxG,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3C;IACE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC;AAKN,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAMnE,CAAC;AAEH,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,GAAG,aAAa,CAchF,CAAC;AAMH,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAqBC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,eAAO,MAAM,sBAAsB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC;IACjB,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACrC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAeC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC;IACnB,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CASC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACzC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAiBC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC9C,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CASC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACrC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAWC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC5C,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAWC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjC,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACxC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAaC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,SAAS,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAeC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E,eAAO,MAAM,4BAA4B,EAAE,CAAC,CAAC,SAAS,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACrC,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,GAAG,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IAC9D,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAaC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Type definitions for client-docker procedures
3
+ *
4
+ * client-docker wraps Docker CLI commands as procedures using client-shell.
5
+ */
6
+ import { z } from "zod";
7
+ // Output schemas (roadmap 2.1). Loose objects: a field that a schema does not name stays in the
8
+ // result (a strict schema would remove it when the output is validated).
9
+ /** The result of a docker command: every docker.* procedure gives it. */
10
+ export const DockerCommandOutputSchema = z.looseObject({
11
+ exitCode: z.number().describe("The exit code of docker (0 is success)"),
12
+ stdout: z.string().describe("The standard output of docker"),
13
+ stderr: z.string().describe("The standard error of docker, or the error message when docker did not start"),
14
+ success: z.boolean().describe("True when the exit code is 0"),
15
+ duration: z.number().describe("The time of the command, in milliseconds"),
16
+ });
17
+ /** docker.logs: one result, or with follow a stream of lines and one last exit item. */
18
+ export const DockerLogsOutputSchema = z.union([
19
+ DockerCommandOutputSchema,
20
+ z.looseObject({
21
+ type: z.enum(["stdout", "stderr"]).describe("The stream of the line"),
22
+ line: z.string().describe("One line of the log, without its line end"),
23
+ }),
24
+ z.looseObject({
25
+ type: z.literal("exit").describe("The end of the stream"),
26
+ exitCode: z.number().describe("The exit code of docker logs"),
27
+ duration: z.number().describe("The time of the stream, in milliseconds"),
28
+ signal: z.string().optional().describe("The signal that ended docker logs"),
29
+ timedOut: z.boolean().optional().describe("True when the timeout ended the stream"),
30
+ aborted: z.boolean().optional().describe("True when the reader or the signal ended the stream"),
31
+ }),
32
+ ]);
33
+ // =============================================================================
34
+ // docker.run Types
35
+ // =============================================================================
36
+ export const DockerRunInputSchema = z.object({
37
+ /** Docker image to run */
38
+ image: z.string().describe("Docker image to run"),
39
+ /** Container name */
40
+ name: z.string().optional().describe("Container name"),
41
+ /** Port mappings (e.g., ["8080:80", "3000:3000"]) */
42
+ ports: z.array(z.string()).optional().describe("Port mappings (e.g., [\"8080:80\", \"3000:3000\"])"),
43
+ /** Volume mappings (e.g., ["/host:/container"]) */
44
+ volumes: z.array(z.string()).optional().describe("Volume mappings (e.g., [\"/host:/container\"])"),
45
+ /** Environment variables */
46
+ env: z.record(z.string(), z.string()).optional().describe("Environment variables"),
47
+ /** Run in detached mode */
48
+ detach: z.boolean().optional().describe("Run in detached mode"),
49
+ /** Automatically remove container when it exits */
50
+ rm: z.boolean().optional().describe("Automatically remove container when it exits"),
51
+ /** Command to run in container */
52
+ command: z.string().optional().describe("Command to run in container"),
53
+ /** Working directory */
54
+ cwd: z.string().optional().describe("Working directory"),
55
+ /** Timeout in milliseconds */
56
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
57
+ });
58
+ // =============================================================================
59
+ // docker.build Types
60
+ // =============================================================================
61
+ export const DockerBuildInputSchema = z.object({
62
+ /** Build context path */
63
+ context: z.string().describe("Build context path"),
64
+ /** Image tag */
65
+ tag: z.string().describe("Image tag"),
66
+ /** Dockerfile path (relative to context) */
67
+ dockerfile: z.string().optional().describe("Dockerfile path (relative to context)"),
68
+ /** Build arguments */
69
+ buildArgs: z.record(z.string(), z.string()).optional().describe("Build arguments"),
70
+ /** Do not use cache when building */
71
+ noCache: z.boolean().optional().describe("Do not use cache when building"),
72
+ /** Working directory */
73
+ cwd: z.string().optional().describe("Working directory"),
74
+ /** Timeout in milliseconds */
75
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
76
+ });
77
+ // =============================================================================
78
+ // docker.pull Types
79
+ // =============================================================================
80
+ export const DockerPullInputSchema = z.object({
81
+ /** Image to pull */
82
+ image: z.string().describe("Image to pull"),
83
+ /** Image tag (default: latest) */
84
+ tag: z.string().optional().describe("Image tag (default: latest)"),
85
+ /** Working directory */
86
+ cwd: z.string().optional().describe("Working directory"),
87
+ /** Timeout in milliseconds */
88
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
89
+ });
90
+ // =============================================================================
91
+ // docker.exec Types
92
+ // =============================================================================
93
+ export const DockerExecInputSchema = z.object({
94
+ /** Container name or ID */
95
+ container: z.string().describe("Container name or ID"),
96
+ /** Command to execute */
97
+ command: z.string().describe("Command to execute"),
98
+ /** Run interactively */
99
+ interactive: z.boolean().optional().describe("Run interactively"),
100
+ /** Allocate a TTY */
101
+ tty: z.boolean().optional().describe("Allocate a TTY"),
102
+ /** Working directory inside container */
103
+ workdir: z.string().optional().describe("Working directory inside container"),
104
+ /** Environment variables */
105
+ env: z.record(z.string(), z.string()).optional().describe("Environment variables"),
106
+ /** Working directory (host) */
107
+ cwd: z.string().optional().describe("Working directory (host)"),
108
+ /** Timeout in milliseconds */
109
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
110
+ });
111
+ // =============================================================================
112
+ // docker.stop Types
113
+ // =============================================================================
114
+ export const DockerStopInputSchema = z.object({
115
+ /** Container name(s) or ID(s) */
116
+ containers: z.array(z.string()).describe("Container name(s) or ID(s)"),
117
+ /** Seconds to wait before killing */
118
+ time: z.number().optional().describe("Seconds to wait before killing"),
119
+ /** Working directory */
120
+ cwd: z.string().optional().describe("Working directory"),
121
+ /** Timeout in milliseconds */
122
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
123
+ });
124
+ // =============================================================================
125
+ // docker.rm Types
126
+ // =============================================================================
127
+ export const DockerRmInputSchema = z.object({
128
+ /** Container name(s) or ID(s) */
129
+ containers: z.array(z.string()).describe("Container name(s) or ID(s)"),
130
+ /** Force removal */
131
+ force: z.boolean().optional().describe("Force removal"),
132
+ /** Remove volumes */
133
+ volumes: z.boolean().optional().describe("Remove volumes"),
134
+ /** Working directory */
135
+ cwd: z.string().optional().describe("Working directory"),
136
+ /** Timeout in milliseconds */
137
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
138
+ });
139
+ // =============================================================================
140
+ // docker.ps Types
141
+ // =============================================================================
142
+ export const DockerPsInputSchema = z.object({
143
+ /** Show all containers (default shows just running) */
144
+ all: z.boolean().optional().describe("Show all containers (default shows just running)"),
145
+ /** Filter containers */
146
+ filter: z.string().optional().describe("Filter containers"),
147
+ /** Format output */
148
+ format: z.string().optional().describe("Format output"),
149
+ /** Working directory */
150
+ cwd: z.string().optional().describe("Working directory"),
151
+ /** Timeout in milliseconds */
152
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
153
+ });
154
+ // =============================================================================
155
+ // docker.logs Types
156
+ // =============================================================================
157
+ export const DockerLogsInputSchema = z.object({
158
+ /** Container name or ID */
159
+ container: z.string().describe("Container name or ID"),
160
+ /** Follow log output */
161
+ follow: z.boolean().optional().describe("Follow log output"),
162
+ /** Number of lines from end */
163
+ tail: z.number().optional().describe("Number of lines from end"),
164
+ /** Show timestamps */
165
+ timestamps: z.boolean().optional().describe("Show timestamps"),
166
+ /** Working directory */
167
+ cwd: z.string().optional().describe("Working directory"),
168
+ /** Timeout in milliseconds */
169
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
170
+ });
171
+ // =============================================================================
172
+ // docker.compose.up Types
173
+ // =============================================================================
174
+ export const DockerComposeUpInputSchema = z.object({
175
+ /** Compose file path */
176
+ file: z.string().optional().describe("Compose file path"),
177
+ /** Services to start (default: all) */
178
+ services: z.array(z.string()).optional().describe("Services to start (default: all)"),
179
+ /** Detached mode */
180
+ detach: z.boolean().optional().describe("Detached mode"),
181
+ /** Build images before starting */
182
+ build: z.boolean().optional().describe("Build images before starting"),
183
+ /** Force recreate containers */
184
+ forceRecreate: z.boolean().optional().describe("Force recreate containers"),
185
+ /** Working directory */
186
+ cwd: z.string().optional().describe("Working directory"),
187
+ /** Timeout in milliseconds */
188
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
189
+ });
190
+ // =============================================================================
191
+ // docker.compose.down Types
192
+ // =============================================================================
193
+ export const DockerComposeDownInputSchema = z.object({
194
+ /** Compose file path */
195
+ file: z.string().optional().describe("Compose file path"),
196
+ /** Remove volumes */
197
+ volumes: z.boolean().optional().describe("Remove volumes"),
198
+ /** Remove orphan containers */
199
+ removeOrphans: z.boolean().optional().describe("Remove orphan containers"),
200
+ /** Remove images (all, local) */
201
+ rmi: z.enum(["all", "local"]).optional().describe("Remove images (all, local)"),
202
+ /** Working directory */
203
+ cwd: z.string().optional().describe("Working directory"),
204
+ /** Timeout in milliseconds */
205
+ timeout: z.number().optional().describe("Timeout in milliseconds"),
206
+ });
207
+ //# sourceMappingURL=types.js.map