🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@robinpath/docker

Package Overview
Dependencies
Maintainers
4
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@robinpath/docker - npm Package Compare versions

Comparing version
0.1.1
to
0.3.0
+35
dist/docker.d.ts
/**
* RobinPath Docker Module (Node port)
*
* Thin client for the Docker Engine API. Talks to either:
* • a local Unix socket (`unix:///var/run/docker.sock`, the default) via
* Node's `net.Socket` + a tiny HTTP/1.1 request writer, or
* • a TCP endpoint (`http://host:2375`) via `fetch()`.
*
* Mirror of packages/php/docker/src/index.php — shares the same credential
* contract, metadata shape, and error taxonomy so the visual editor can
* render both identically.
*
* Credential type declared by this module:
* - docker : { host } → `unix:///var/run/docker.sock` (default),
* `unix:///path/to/docker.sock`, or
* `http://host:2375` / `https://host:2376`.
*
* If the credential slug is empty, the module falls back to the standard
* Unix socket location — convenient for local CLI and desktop hosts.
*
* Handlers cover containers (ps / run-like create / start / stop / restart /
* kill / rm / logs / inspect / stats), images (list / pull / tag / inspect /
* rmi), exec, networks (list / create / remove / inspect), volumes (list /
* create / remove / inspect), and a `version` / `info` probe.
*
* All handlers return the parsed JSON response. Errors are never thrown —
* they are returned as `{error, code, status?, docker_error?}`.
*/
import type { BuiltinHandler, CredentialTypeSchema, FunctionMetadata, ModuleHost, ModuleMetadata } from "@robinpath/core";
export declare function configureDocker(h: ModuleHost): void;
export declare const DockerFunctions: Record<string, BuiltinHandler>;
export declare const DockerCredentialTypes: CredentialTypeSchema[];
export declare const DockerFunctionMetadata: Record<string, FunctionMetadata>;
export declare const DockerModuleMetadata: ModuleMetadata;
//# sourceMappingURL=docker.d.ts.map
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAiBzB,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAEnD;AA6pBD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA4B1D,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,oBAAoB,EAiBvD,CAAC;AAsDF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAmxBnE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,cAwBlC,CAAC"}
/**
* RobinPath Docker Module (Node port)
*
* Thin client for the Docker Engine API. Talks to either:
* • a local Unix socket (`unix:///var/run/docker.sock`, the default) via
* Node's `net.Socket` + a tiny HTTP/1.1 request writer, or
* • a TCP endpoint (`http://host:2375`) via `fetch()`.
*
* Mirror of packages/php/docker/src/index.php — shares the same credential
* contract, metadata shape, and error taxonomy so the visual editor can
* render both identically.
*
* Credential type declared by this module:
* - docker : { host } → `unix:///var/run/docker.sock` (default),
* `unix:///path/to/docker.sock`, or
* `http://host:2375` / `https://host:2376`.
*
* If the credential slug is empty, the module falls back to the standard
* Unix socket location — convenient for local CLI and desktop hosts.
*
* Handlers cover containers (ps / run-like create / start / stop / restart /
* kill / rm / logs / inspect / stats), images (list / pull / tag / inspect /
* rmi), exec, networks (list / create / remove / inspect), volumes (list /
* create / remove / inspect), and a `version` / `info` probe.
*
* All handlers return the parsed JSON response. Errors are never thrown —
* they are returned as `{error, code, status?, docker_error?}`.
*/
import * as net from "node:net";
import { Buffer } from "node:buffer";
// ── Module-local state ─────────────────────────────────────────────────
const state = {};
function host() {
if (!state.host) {
throw new Error("Docker module not initialized. Pass the adapter to rp.registerModule() via loadModule so its configure() hook runs first.");
}
return state.host;
}
export function configureDocker(h) {
state.host = h;
}
// ── Constants ──────────────────────────────────────────────────────────
const CREDENTIAL_TYPE = "docker";
const DEFAULT_HOST = "unix:///var/run/docker.sock";
const USER_AGENT = "RobinPath-WP/1.0";
function errorReturn(error, code, extra = {}) {
return { error, code, ...extra };
}
function isErr(x) {
return typeof x === "object" && x !== null && "error" in x && "code" in x;
}
async function resolveHost(credentialSlug) {
let raw = DEFAULT_HOST;
if (credentialSlug) {
let fields;
try {
fields = await host().credentials.get(credentialSlug);
}
catch (e) {
return errorReturn(e instanceof Error ? e.message : String(e), "credential_not_found");
}
if (!fields) {
return errorReturn(`Credential '${credentialSlug}' not found.`, "credential_not_found");
}
const h = String(fields.host ?? fields.endpoint ?? "").trim();
if (h !== "")
raw = h;
}
if (raw.startsWith("unix://")) {
return { kind: "unix", socketPath: raw.slice("unix://".length) };
}
if (raw.startsWith("http://") || raw.startsWith("https://")) {
return { kind: "http", baseUrl: raw.replace(/\/+$/, "") };
}
return errorReturn(`Unrecognized docker host '${raw}'. Use unix:///path/to/sock or http(s)://host:port.`, "validation_failed");
}
// ── HTTP over Unix socket ──────────────────────────────────────────────
function httpOverSocket(socketPath, method, path, body) {
return new Promise((resolve) => {
const socket = net.createConnection(socketPath);
let resolved = false;
const chunks = [];
let headerEnd = -1;
let contentLength = null;
let chunkedEncoding = false;
let headerStr = "";
const settle = (value) => {
if (resolved)
return;
resolved = true;
try {
socket.destroy();
}
catch {
// ignore
}
resolve(value);
};
socket.on("error", (err) => {
settle(errorReturn(err.message, "transport"));
});
socket.on("connect", () => {
const hasBody = typeof body === "string";
let req = `${method} ${path} HTTP/1.1\r\n` +
`Host: localhost\r\n` +
`User-Agent: ${USER_AGENT}\r\n` +
`Accept: application/json\r\n` +
`Connection: close\r\n`;
if (hasBody) {
req += `Content-Type: application/json\r\n`;
req += `Content-Length: ${Buffer.byteLength(body, "utf8")}\r\n`;
}
req += `\r\n`;
if (hasBody)
req += body;
socket.write(req);
});
socket.on("data", (data) => {
const buf = typeof data === "string" ? Buffer.from(data, "utf8") : data;
chunks.push(buf);
if (headerEnd === -1) {
const combined = Buffer.concat(chunks);
const idx = combined.indexOf(Buffer.from("\r\n\r\n"));
if (idx !== -1) {
headerEnd = idx;
headerStr = combined.slice(0, idx).toString("utf8");
const cl = /Content-Length:\s*(\d+)/i.exec(headerStr);
if (cl)
contentLength = parseInt(cl[1], 10);
chunkedEncoding = /Transfer-Encoding:\s*chunked/i.test(headerStr);
// Replace chunks with the body portion.
const bodyStart = idx + 4;
const body = combined.slice(bodyStart);
chunks.length = 0;
if (body.length > 0)
chunks.push(body);
if (contentLength !== null && combined.length - bodyStart >= contentLength) {
socket.end();
}
}
}
else {
if (contentLength !== null) {
const total = chunks.reduce((sum, c) => sum + c.length, 0);
if (total >= contentLength)
socket.end();
}
}
});
socket.on("end", () => finish());
socket.on("close", () => finish());
const finish = () => {
if (resolved)
return;
const bodyBuf = Buffer.concat(chunks);
let rawBody = bodyBuf.toString("utf8");
let status = 0;
const headers = {};
if (headerStr) {
const lines = headerStr.split("\r\n");
const statusMatch = /^HTTP\/\d\.\d\s+(\d+)/.exec(lines[0] ?? "");
if (statusMatch)
status = parseInt(statusMatch[1], 10);
for (let i = 1; i < lines.length; i++) {
const colon = lines[i].indexOf(":");
if (colon > 0) {
const k = lines[i].slice(0, colon).trim().toLowerCase();
const v = lines[i].slice(colon + 1).trim();
headers[k] = v;
}
}
}
// Decode chunked transfer encoding.
if (chunkedEncoding) {
rawBody = decodeChunked(rawBody);
}
settle({ status, headers, body: rawBody });
};
});
}
function decodeChunked(raw) {
// Minimal chunked decoder: hex size lines separated by \r\n, 0 terminator.
let i = 0;
let out = "";
while (i < raw.length) {
const crlf = raw.indexOf("\r\n", i);
if (crlf === -1)
break;
const sizeHex = raw.slice(i, crlf).trim();
const size = parseInt(sizeHex, 16);
if (!Number.isFinite(size) || size === 0)
break;
i = crlf + 2;
out += raw.slice(i, i + size);
i += size + 2; // skip trailing \r\n
}
return out;
}
// ── HTTP dispatcher ────────────────────────────────────────────────────
async function http(resolved, method, path, body) {
const hasBody = body !== undefined && body !== null;
const serialized = hasBody ? JSON.stringify(body) : undefined;
let status;
let raw;
if (resolved.kind === "unix") {
const res = await httpOverSocket(resolved.socketPath, method, path, serialized);
if (isErr(res))
return res;
status = res.status;
raw = res.body;
}
else {
const url = `${resolved.baseUrl}${path}`;
let response;
try {
response = await fetch(url, {
method,
headers: {
Accept: "application/json",
"User-Agent": USER_AGENT,
...(hasBody ? { "Content-Type": "application/json" } : {}),
},
body: serialized,
});
}
catch (e) {
return errorReturn(e instanceof Error ? e.message : String(e), "transport");
}
status = response.status;
raw = await response.text();
}
if (status === 204)
return { ok: true, status };
let decoded = null;
if (raw) {
try {
decoded = JSON.parse(raw);
}
catch {
decoded = raw;
}
}
if (status < 200 || status >= 300) {
let message = `Docker Engine returned HTTP ${status}.`;
if (decoded && typeof decoded === "object" && "message" in decoded) {
const m = decoded.message;
if (typeof m === "string")
message = m;
}
else if (typeof decoded === "string" && decoded !== "") {
message = decoded.slice(0, 500);
}
let code = "docker_error";
if (status === 404)
code = "not_found";
else if (status === 409)
code = "conflict";
else if (status === 400)
code = "validation_failed";
return errorReturn(message, code, { status, docker_error: decoded });
}
return decoded ?? { ok: true, status };
}
// ── Query helpers ──────────────────────────────────────────────────────
function asOpts(v) {
return v && typeof v === "object" && !Array.isArray(v) ? v : {};
}
function asString(v) {
if (v === undefined || v === null)
return "";
return String(v);
}
function buildQuery(params) {
const parts = [];
for (const [k, v] of Object.entries(params)) {
if (v === null || v === undefined)
continue;
if (typeof v === "boolean") {
parts.push(`${encodeURIComponent(k)}=${v ? "true" : "false"}`);
}
else if (v === "") {
continue;
}
else if (typeof v === "object") {
parts.push(`${encodeURIComponent(k)}=${encodeURIComponent(JSON.stringify(v))}`);
}
else {
parts.push(`${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`);
}
}
return parts.length === 0 ? "" : `?${parts.join("&")}`;
}
// ── Handlers: misc ─────────────────────────────────────────────────────
const version = async (args) => {
const cred = String(args[0] ?? "");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "GET", "/version"));
};
const info = async (args) => {
const cred = String(args[0] ?? "");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "GET", "/info"));
};
// ── Handlers: containers ───────────────────────────────────────────────
const ps = async (args) => {
const cred = String(args[0] ?? "");
const opts = asOpts(args[1]);
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({
all: opts.all,
limit: opts.limit,
size: opts.size,
filters: opts.filters,
});
return (await http(resolved, "GET", `/containers/json${q}`));
};
const inspect = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
if (!container)
return errorReturn("`container` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "GET", `/containers/${encodeURIComponent(container)}/json`));
};
const create = async (args) => {
const cred = String(args[0] ?? "");
const name = asString(args[1]);
const config = asOpts(args[2]);
if (!config.Image)
return errorReturn("`config.Image` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = name ? `?name=${encodeURIComponent(name)}` : "";
return (await http(resolved, "POST", `/containers/create${q}`, config));
};
const start = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
if (!container)
return errorReturn("`container` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "POST", `/containers/${encodeURIComponent(container)}/start`));
};
const stop = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
const timeout = args[2];
if (!container)
return errorReturn("`container` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = typeof timeout === "number" ? `?t=${timeout | 0}` : "";
return (await http(resolved, "POST", `/containers/${encodeURIComponent(container)}/stop${q}`));
};
const restart = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
const timeout = args[2];
if (!container)
return errorReturn("`container` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = typeof timeout === "number" ? `?t=${timeout | 0}` : "";
return (await http(resolved, "POST", `/containers/${encodeURIComponent(container)}/restart${q}`));
};
const kill = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
const signal = asString(args[2]);
if (!container)
return errorReturn("`container` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = signal ? `?signal=${encodeURIComponent(signal)}` : "";
return (await http(resolved, "POST", `/containers/${encodeURIComponent(container)}/kill${q}`));
};
const rm = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
const opts = asOpts(args[2]);
if (!container)
return errorReturn("`container` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({ v: opts.volumes, force: opts.force, link: opts.link });
return (await http(resolved, "DELETE", `/containers/${encodeURIComponent(container)}${q}`));
};
const logs = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
const opts = asOpts(args[2]);
if (!container)
return errorReturn("`container` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({
stdout: opts.stdout ?? true,
stderr: opts.stderr ?? true,
tail: opts.tail,
since: opts.since,
until: opts.until,
timestamps: opts.timestamps,
});
// /containers/{id}/logs returns a multiplexed raw stream when the container
// has no TTY — we return it as a string either way.
const hasBody = false;
const serialized = undefined;
if (resolved.kind === "unix") {
const res = await httpOverSocket(resolved.socketPath, "GET", `/containers/${encodeURIComponent(container)}/logs${q}`, serialized);
if (isErr(res))
return res;
if (res.status < 200 || res.status >= 300) {
return errorReturn(`Docker Engine returned HTTP ${res.status}.`, "docker_error", {
status: res.status,
});
}
return { logs: stripDockerLogFrames(res.body), status: res.status };
}
else {
const url = `${resolved.baseUrl}/containers/${encodeURIComponent(container)}/logs${q}`;
try {
const response = await fetch(url, {
method: "GET",
headers: {
Accept: "application/json",
"User-Agent": USER_AGENT,
},
});
const raw = await response.text();
if (!response.ok) {
return errorReturn(`Docker Engine returned HTTP ${response.status}.`, "docker_error", {
status: response.status,
});
}
return { logs: stripDockerLogFrames(raw), status: response.status };
}
catch (e) {
return errorReturn(e instanceof Error ? e.message : String(e), "transport");
}
}
void hasBody; // appease linter
};
// Docker multiplexed log frames: 8-byte header per chunk (stream-id, padding*3, be-len 4).
function stripDockerLogFrames(raw) {
if (!raw)
return raw;
const buf = Buffer.from(raw, "binary");
// Detect multiplex: first byte 0/1/2, next 3 bytes zero.
if (buf.length < 8 || ![0, 1, 2].includes(buf[0]) || buf[1] !== 0 || buf[2] !== 0 || buf[3] !== 0) {
return raw;
}
const out = [];
let i = 0;
while (i + 8 <= buf.length) {
const len = buf.readUInt32BE(i + 4);
out.push(buf.slice(i + 8, i + 8 + len).toString("utf8"));
i += 8 + len;
}
return out.join("");
}
const stats = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
if (!container)
return errorReturn("`container` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
// One-shot snapshot; `stream=false` returns a single JSON object.
return (await http(resolved, "GET", `/containers/${encodeURIComponent(container)}/stats?stream=false`));
};
const execCreate = async (args) => {
const cred = String(args[0] ?? "");
const container = asString(args[1]);
const config = asOpts(args[2]);
if (!container)
return errorReturn("`container` is required.", "validation_failed");
if (!config.Cmd)
return errorReturn("`config.Cmd` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "POST", `/containers/${encodeURIComponent(container)}/exec`, config));
};
const execStart = async (args) => {
const cred = String(args[0] ?? "");
const execId = asString(args[1]);
const opts = asOpts(args[2]);
if (!execId)
return errorReturn("`execId` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "POST", `/exec/${encodeURIComponent(execId)}/start`, { Detach: opts.detach ?? false, Tty: opts.tty ?? false }));
};
// ── Handlers: images ───────────────────────────────────────────────────
const images = async (args) => {
const cred = String(args[0] ?? "");
const opts = asOpts(args[1]);
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({ all: opts.all, filters: opts.filters, "shared-size": opts.sharedSize, digests: opts.digests });
return (await http(resolved, "GET", `/images/json${q}`));
};
const inspectImage = async (args) => {
const cred = String(args[0] ?? "");
const image = asString(args[1]);
if (!image)
return errorReturn("`image` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "GET", `/images/${encodeURIComponent(image)}/json`));
};
const pull = async (args) => {
const cred = String(args[0] ?? "");
const image = asString(args[1]);
if (!image)
return errorReturn("`image` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
// `/images/create?fromImage=…` returns a newline-delimited JSON stream. We
// just wait for it to finish and expose the raw status tail.
const q = `?fromImage=${encodeURIComponent(image)}`;
if (resolved.kind === "unix") {
const res = await httpOverSocket(resolved.socketPath, "POST", `/images/create${q}`);
if (isErr(res))
return res;
if (res.status < 200 || res.status >= 300) {
return errorReturn(`Docker Engine returned HTTP ${res.status}.`, "docker_error", {
status: res.status,
});
}
return { status: res.status, stream: res.body };
}
else {
try {
const response = await fetch(`${resolved.baseUrl}/images/create${q}`, {
method: "POST",
headers: { Accept: "application/json", "User-Agent": USER_AGENT },
});
const raw = await response.text();
if (!response.ok) {
return errorReturn(`Docker Engine returned HTTP ${response.status}.`, "docker_error", {
status: response.status,
});
}
return { status: response.status, stream: raw };
}
catch (e) {
return errorReturn(e instanceof Error ? e.message : String(e), "transport");
}
}
};
const tag = async (args) => {
const cred = String(args[0] ?? "");
const image = asString(args[1]);
const repo = asString(args[2]);
const newTag = asString(args[3]);
if (!image)
return errorReturn("`image` is required.", "validation_failed");
if (!repo)
return errorReturn("`repo` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({ repo, tag: newTag || undefined });
return (await http(resolved, "POST", `/images/${encodeURIComponent(image)}/tag${q}`));
};
const rmi = async (args) => {
const cred = String(args[0] ?? "");
const image = asString(args[1]);
const opts = asOpts(args[2]);
if (!image)
return errorReturn("`image` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({ force: opts.force, noprune: opts.noprune });
return (await http(resolved, "DELETE", `/images/${encodeURIComponent(image)}${q}`));
};
// ── Handlers: networks ─────────────────────────────────────────────────
const networks = async (args) => {
const cred = String(args[0] ?? "");
const opts = asOpts(args[1]);
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({ filters: opts.filters });
return (await http(resolved, "GET", `/networks${q}`));
};
const createNetwork = async (args) => {
const cred = String(args[0] ?? "");
const name = asString(args[1]);
const opts = asOpts(args[2]);
if (!name)
return errorReturn("`name` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "POST", `/networks/create`, { Name: name, ...opts }));
};
const removeNetwork = async (args) => {
const cred = String(args[0] ?? "");
const name = asString(args[1]);
if (!name)
return errorReturn("`name` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "DELETE", `/networks/${encodeURIComponent(name)}`));
};
const inspectNetwork = async (args) => {
const cred = String(args[0] ?? "");
const name = asString(args[1]);
if (!name)
return errorReturn("`name` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "GET", `/networks/${encodeURIComponent(name)}`));
};
// ── Handlers: volumes ──────────────────────────────────────────────────
const volumes = async (args) => {
const cred = String(args[0] ?? "");
const opts = asOpts(args[1]);
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({ filters: opts.filters });
return (await http(resolved, "GET", `/volumes${q}`));
};
const createVolume = async (args) => {
const cred = String(args[0] ?? "");
const name = asString(args[1]);
const opts = asOpts(args[2]);
if (!name)
return errorReturn("`name` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "POST", `/volumes/create`, { Name: name, ...opts }));
};
const removeVolume = async (args) => {
const cred = String(args[0] ?? "");
const name = asString(args[1]);
const opts = asOpts(args[2]);
if (!name)
return errorReturn("`name` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
const q = buildQuery({ force: opts.force });
return (await http(resolved, "DELETE", `/volumes/${encodeURIComponent(name)}${q}`));
};
const inspectVolume = async (args) => {
const cred = String(args[0] ?? "");
const name = asString(args[1]);
if (!name)
return errorReturn("`name` is required.", "validation_failed");
const resolved = await resolveHost(cred);
if (isErr(resolved))
return resolved;
return (await http(resolved, "GET", `/volumes/${encodeURIComponent(name)}`));
};
// ── Exports: functions map ─────────────────────────────────────────────
export const DockerFunctions = {
version,
info,
ps,
inspect,
create,
start,
stop,
restart,
kill,
rm,
logs,
stats,
execCreate,
execStart,
images,
inspectImage,
pull,
tag,
rmi,
networks,
createNetwork,
removeNetwork,
inspectNetwork,
volumes,
createVolume,
removeVolume,
inspectVolume,
};
// ── Exports: credential types ──────────────────────────────────────────
export const DockerCredentialTypes = [
{
slug: CREDENTIAL_TYPE,
title: "Docker Engine",
icon: "box",
fields: [
{
name: "host",
title: "Host",
type: "text",
required: false,
placeholder: "unix:///var/run/docker.sock",
description: "Docker Engine endpoint. Use `unix:///path/to/docker.sock` for local sockets (default) or `http://host:2375` / `https://host:2376` for remote TCP.",
},
],
},
];
// ── Exports: metadata ──────────────────────────────────────────────────
const credentialParam = {
name: "credential",
title: "Credential",
description: "Slug of a saved `docker` credential. Pass empty string to use the default Unix socket (`unix:///var/run/docker.sock`).",
dataType: "string",
formInputType: "resource",
required: false,
allowExpression: true,
placeholder: "my_docker",
resource: {
type: "credential",
listFn: "credential.list",
modes: ["list", "expression"],
searchable: true,
filter: { type: CREDENTIAL_TYPE },
},
};
const containerParam = {
name: "container",
title: "Container",
description: "Container ID or name.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "nginx-1",
};
const imageParam = {
name: "image",
title: "Image",
description: "Image ID, name, or `repo:tag`.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "nginx:alpine",
};
const commonErrors = {
credential_not_found: "No credential with that slug exists in the vault.",
validation_failed: "A required argument is missing or invalid.",
transport: "Could not reach the Docker Engine socket or endpoint.",
not_found: "Docker Engine returned 404.",
conflict: "Docker Engine returned 409 (name or state conflict).",
docker_error: "Docker Engine returned an error.",
};
export const DockerFunctionMetadata = {
version: {
title: "Engine version",
summary: "Engine / API version info",
description: "Calls `GET /version`.",
group: "engine",
action: "read",
icon: "info",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "engine"],
parameters: [credentialParam],
returnType: "object",
errors: commonErrors,
example: 'docker.version ""',
},
info: {
title: "Engine info",
summary: "Engine runtime info / counts",
description: "Calls `GET /info`.",
group: "engine",
action: "read",
icon: "info",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "engine"],
parameters: [credentialParam],
returnType: "object",
errors: commonErrors,
example: 'docker.info ""',
},
ps: {
title: "List containers",
summary: "Running (and optionally stopped) containers",
description: "Calls `GET /containers/json`. Pass `{all: true}` to include stopped.",
group: "containers",
action: "query",
icon: "list",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container"],
parameters: [
credentialParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n all : bool — include stopped\n limit : int\n size : bool\n filters : object (see Docker Engine docs)",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 4,
advanced: true,
},
],
returnType: "array",
errors: commonErrors,
example: 'docker.ps "" {all: true}',
},
inspect: {
title: "Inspect container",
summary: "Full container JSON",
description: "Calls `GET /containers/{id}/json`.",
group: "containers",
action: "read",
icon: "info",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container", "inspect"],
parameters: [credentialParam, containerParam],
returnType: "object",
errors: commonErrors,
example: 'docker.inspect "" "nginx-1"',
},
create: {
title: "Create container",
summary: "Create (but don't start) a container",
description: "Calls `POST /containers/create?name={name}`. The config object is the raw Docker Engine create payload (`Image`, `Cmd`, `Env`, `HostConfig`, `ExposedPorts`, …).",
group: "containers",
action: "write",
icon: "plus",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: false,
since: "1.0.0",
tags: ["docker", "container", "create"],
parameters: [
credentialParam,
{
name: "name",
title: "Name",
dataType: "string",
description: "Optional container name.",
formInputType: "text",
required: false,
allowExpression: true,
placeholder: "nginx-1",
},
{
name: "config",
title: "Config",
description: "Docker Engine `CreateContainer` body (must include `Image`).",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 8,
},
],
returnType: "object",
returnDescription: "{Id, Warnings}",
errors: commonErrors,
example: 'docker.create "" "nginx-1" {Image: "nginx:alpine"}',
},
start: {
title: "Start container",
summary: "Start an existing container",
description: "Calls `POST /containers/{id}/start`.",
group: "containers",
action: "write",
icon: "play",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container", "start"],
parameters: [credentialParam, containerParam],
returnType: "object",
errors: commonErrors,
example: 'docker.start "" "nginx-1"',
},
stop: {
title: "Stop container",
summary: "Gracefully stop a container",
description: "Calls `POST /containers/{id}/stop?t={timeout}`.",
group: "containers",
action: "write",
icon: "square",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container", "stop"],
parameters: [
credentialParam,
containerParam,
{
name: "timeout",
title: "Timeout (s)",
dataType: "number",
description: "Seconds to wait before SIGKILL. Defaults to Docker's 10s.",
formInputType: "number",
required: false,
allowExpression: true,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.stop "" "nginx-1" 5',
},
restart: {
title: "Restart container",
summary: "Stop + start in one call",
description: "Calls `POST /containers/{id}/restart?t={timeout}`.",
group: "containers",
action: "write",
icon: "refresh-cw",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container", "restart"],
parameters: [
credentialParam,
containerParam,
{
name: "timeout",
title: "Timeout (s)",
dataType: "number",
description: "Seconds to wait before SIGKILL.",
formInputType: "number",
required: false,
allowExpression: true,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.restart "" "nginx-1"',
},
kill: {
title: "Kill container",
summary: "Send a signal (default SIGKILL)",
description: "Calls `POST /containers/{id}/kill?signal={signal}`.",
group: "containers",
action: "write",
icon: "zap",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container", "kill"],
parameters: [
credentialParam,
containerParam,
{
name: "signal",
title: "Signal",
dataType: "string",
description: "Posix signal (e.g. SIGTERM, SIGKILL). Default: SIGKILL.",
formInputType: "text",
required: false,
allowExpression: true,
placeholder: "SIGKILL",
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.kill "" "nginx-1" "SIGTERM"',
},
rm: {
title: "Remove container",
summary: "Delete a (stopped) container",
description: "Calls `DELETE /containers/{id}`.",
group: "containers",
action: "delete",
icon: "trash-2",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container", "delete"],
parameters: [
credentialParam,
containerParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n volumes : bool — remove associated volumes\n force : bool — force-remove running\n link : bool — remove the specified link only",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 3,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.rm "" "nginx-1" {force: true, volumes: true}',
},
logs: {
title: "Container logs",
summary: "One-shot container logs as a string",
description: "Calls `GET /containers/{id}/logs`. Strips Docker's multiplexed framing so the result is clean UTF-8.",
group: "containers",
action: "read",
icon: "file-text",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container", "logs"],
parameters: [
credentialParam,
containerParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n stdout, stderr : bool (both default true)\n tail : int | 'all'\n since, until : unix timestamp\n timestamps : bool",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 4,
advanced: true,
},
],
returnType: "object",
returnDescription: "{logs: string, status: int}",
errors: commonErrors,
example: 'docker.logs "" "nginx-1" {tail: 200}',
},
stats: {
title: "Container stats",
summary: "Single CPU/mem snapshot",
description: "Calls `GET /containers/{id}/stats?stream=false`.",
group: "containers",
action: "read",
icon: "activity",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "container", "stats"],
parameters: [credentialParam, containerParam],
returnType: "object",
errors: commonErrors,
example: 'docker.stats "" "nginx-1"',
},
execCreate: {
title: "Exec: create",
summary: "Create an exec instance inside a container",
description: "Calls `POST /containers/{id}/exec`. Config must include `Cmd` (array of strings).",
group: "exec",
action: "write",
icon: "terminal",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: false,
since: "1.0.0",
tags: ["docker", "exec"],
parameters: [
credentialParam,
containerParam,
{
name: "config",
title: "Exec config",
description: "e.g. `{Cmd: ['sh','-c','ls /'], AttachStdout: true, AttachStderr: true}`.",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 6,
},
],
returnType: "object",
returnDescription: "{Id: string}",
errors: commonErrors,
example: 'docker.execCreate "" "nginx-1" {Cmd: ["ls","/"], AttachStdout: true}',
},
execStart: {
title: "Exec: start",
summary: "Run a previously created exec instance",
description: "Calls `POST /exec/{id}/start`. Note: output is the raw multiplexed stream.",
group: "exec",
action: "write",
icon: "play",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: false,
since: "1.0.0",
tags: ["docker", "exec"],
parameters: [
credentialParam,
{
name: "execId",
title: "Exec ID",
dataType: "string",
description: "ID returned by `execCreate`.",
formInputType: "text",
required: true,
allowExpression: true,
},
{
name: "options",
title: "Options",
description: "Recognized keys:\n detach : bool (default false)\n tty : bool (default false)",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 3,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.execStart "" "abc123" {detach: false}',
},
images: {
title: "List images",
summary: "Images on the host",
description: "Calls `GET /images/json`.",
group: "images",
action: "query",
icon: "image",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "image"],
parameters: [
credentialParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n all : bool\n filters : object\n sharedSize : bool\n digests : bool",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 4,
advanced: true,
},
],
returnType: "array",
errors: commonErrors,
example: 'docker.images ""',
},
inspectImage: {
title: "Inspect image",
summary: "Full image JSON",
description: "Calls `GET /images/{id}/json`.",
group: "images",
action: "read",
icon: "info",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "image", "inspect"],
parameters: [credentialParam, imageParam],
returnType: "object",
errors: commonErrors,
example: 'docker.inspectImage "" "nginx:alpine"',
},
pull: {
title: "Pull image",
summary: "Pull an image from a registry",
description: "Calls `POST /images/create?fromImage={image}`. Returns the raw newline-delimited status stream once complete.",
group: "images",
action: "write",
icon: "download",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: false,
since: "1.0.0",
tags: ["docker", "image", "pull"],
parameters: [credentialParam, imageParam],
returnType: "object",
returnDescription: "{status: int, stream: string}",
errors: commonErrors,
example: 'docker.pull "" "nginx:alpine"',
},
tag: {
title: "Tag image",
summary: "Give an image a new repo:tag",
description: "Calls `POST /images/{source}/tag?repo={repo}&tag={tag}`.",
group: "images",
action: "write",
icon: "tag",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "image", "tag"],
parameters: [
credentialParam,
imageParam,
{
name: "repo",
title: "Repo",
dataType: "string",
description: "New repo name (e.g. `myregistry/nginx`).",
formInputType: "text",
required: true,
allowExpression: true,
},
{
name: "tag",
title: "Tag",
dataType: "string",
description: "New tag (optional).",
formInputType: "text",
required: false,
allowExpression: true,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.tag "" "nginx:alpine" "myregistry/nginx" "v1"',
},
rmi: {
title: "Remove image",
summary: "Delete an image",
description: "Calls `DELETE /images/{id}`.",
group: "images",
action: "delete",
icon: "trash-2",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "image", "delete"],
parameters: [
credentialParam,
imageParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n force : bool\n noprune : bool",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 3,
},
],
returnType: "array",
errors: commonErrors,
example: 'docker.rmi "" "nginx:alpine" {force: true}',
},
networks: {
title: "List networks",
summary: "All Docker networks",
description: "Calls `GET /networks`.",
group: "networks",
action: "query",
icon: "globe",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "network"],
parameters: [
credentialParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n filters : object",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 3,
advanced: true,
},
],
returnType: "array",
errors: commonErrors,
example: 'docker.networks ""',
},
createNetwork: {
title: "Create network",
summary: "New Docker network",
description: "Calls `POST /networks/create`.",
group: "networks",
action: "write",
icon: "plus",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: false,
since: "1.0.0",
tags: ["docker", "network", "create"],
parameters: [
credentialParam,
{
name: "name",
title: "Name",
dataType: "string",
description: "Network name.",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "my-net",
},
{
name: "options",
title: "Options",
description: "Extra fields merged into the create body (Driver, IPAM, Labels, Internal, …).",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 5,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.createNetwork "" "my-net" {Driver: "bridge"}',
},
removeNetwork: {
title: "Remove network",
summary: "Delete a network",
description: "Calls `DELETE /networks/{id}`.",
group: "networks",
action: "delete",
icon: "trash-2",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "network", "delete"],
parameters: [
credentialParam,
{
name: "name",
title: "Name",
dataType: "string",
description: "Network ID or name.",
formInputType: "text",
required: true,
allowExpression: true,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.removeNetwork "" "my-net"',
},
inspectNetwork: {
title: "Inspect network",
summary: "Full network JSON",
description: "Calls `GET /networks/{id}`.",
group: "networks",
action: "read",
icon: "info",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "network", "inspect"],
parameters: [
credentialParam,
{
name: "name",
title: "Name",
dataType: "string",
description: "Network ID or name.",
formInputType: "text",
required: true,
allowExpression: true,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.inspectNetwork "" "bridge"',
},
volumes: {
title: "List volumes",
summary: "All Docker volumes",
description: "Calls `GET /volumes`.",
group: "volumes",
action: "query",
icon: "database",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "volume"],
parameters: [
credentialParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n filters : object",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 3,
advanced: true,
},
],
returnType: "object",
returnDescription: "{Volumes: [...], Warnings: [...]}",
errors: commonErrors,
example: 'docker.volumes ""',
},
createVolume: {
title: "Create volume",
summary: "New named volume",
description: "Calls `POST /volumes/create`.",
group: "volumes",
action: "write",
icon: "plus",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: false,
since: "1.0.0",
tags: ["docker", "volume", "create"],
parameters: [
credentialParam,
{
name: "name",
title: "Name",
dataType: "string",
description: "Volume name.",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "pgdata",
},
{
name: "options",
title: "Options",
description: "Extra fields merged into the create body (Driver, DriverOpts, Labels).",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 4,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.createVolume "" "pgdata" {Driver: "local"}',
},
removeVolume: {
title: "Remove volume",
summary: "Delete a volume",
description: "Calls `DELETE /volumes/{name}`.",
group: "volumes",
action: "delete",
icon: "trash-2",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "volume", "delete"],
parameters: [
credentialParam,
{
name: "name",
title: "Name",
dataType: "string",
description: "Volume name.",
formInputType: "text",
required: true,
allowExpression: true,
},
{
name: "options",
title: "Options",
description: "Recognized keys:\n force : bool",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 3,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.removeVolume "" "pgdata" {force: true}',
},
inspectVolume: {
title: "Inspect volume",
summary: "Full volume JSON",
description: "Calls `GET /volumes/{name}`.",
group: "volumes",
action: "read",
icon: "info",
capability: "manage_options",
sideEffects: ["makes_http_call"],
idempotent: true,
since: "1.0.0",
tags: ["docker", "volume", "inspect"],
parameters: [
credentialParam,
{
name: "name",
title: "Name",
dataType: "string",
description: "Volume name.",
formInputType: "text",
required: true,
allowExpression: true,
},
],
returnType: "object",
errors: commonErrors,
example: 'docker.inspectVolume "" "pgdata"',
},
};
export const DockerModuleMetadata = {
slug: "docker",
title: "Docker",
summary: "Docker Engine API — containers, images, networks, volumes.",
description: "Talks to the Docker Engine API directly — via the local Unix socket by default, or a TCP endpoint if configured in the credential. Covers the day-to-day surface: containers (ps / create / start / stop / rm / logs / stats), images (pull / tag / rmi), exec, networks, and volumes.\n\nReturns parsed JSON as-is. Errors are structured envelopes — never thrown.",
category: "devops",
icon: "icon.svg",
color: "#2496ED",
version: "0.2.0",
docsUrl: "https://docs.robinpath.com/modules/docker",
status: "stable",
requires: [],
minNodeVersion: "18.0.0",
credentialsType: CREDENTIAL_TYPE,
operationGroups: {
engine: { title: "Engine", description: "Version / info probes.", order: 1 },
containers: { title: "Containers", description: "Container lifecycle.", order: 2 },
exec: { title: "Exec", description: "Run commands inside containers.", order: 3 },
images: { title: "Images", description: "Image registry + local.", order: 4 },
networks: { title: "Networks", description: "Docker networks.", order: 5 },
volumes: { title: "Volumes", description: "Docker volumes.", order: 6 },
},
methods: Object.keys(DockerFunctions),
};
//# sourceMappingURL=docker.js.map
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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"}
import type { ModuleAdapter } from "@robinpath/core";
declare const DockerModule: ModuleAdapter;
export default DockerModule;
export { DockerModule };
export { DockerFunctions, DockerFunctionMetadata, DockerModuleMetadata, DockerCredentialTypes, configureDocker, } from "./docker.js";
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AASrD,QAAA,MAAM,YAAY,EAAE,aAQnB,CAAC;AAEF,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,GAChB,MAAM,aAAa,CAAC"}
import { DockerFunctions, DockerFunctionMetadata, DockerModuleMetadata, DockerCredentialTypes, configureDocker, } from "./docker.js";
const DockerModule = {
name: "docker",
functions: DockerFunctions,
functionMetadata: DockerFunctionMetadata,
moduleMetadata: DockerModuleMetadata,
credentialTypes: DockerCredentialTypes,
configure: configureDocker,
global: false,
};
export default DockerModule;
export { DockerModule };
export { DockerFunctions, DockerFunctionMetadata, DockerModuleMetadata, DockerCredentialTypes, configureDocker, } from "./docker.js";
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,YAAY,GAAkB;IAClC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,eAAe;IAC1B,gBAAgB,EAAE,sBAAsB;IACxC,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,qBAAqB;IACtC,SAAS,EAAE,eAAe;IAC1B,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,GAChB,MAAM,aAAa,CAAC"}
+18
-8
{
"name": "@robinpath/docker",
"version": "0.1.1",
"version": "0.3.0",
"publishConfig": {

@@ -24,13 +24,16 @@ "access": "public"

"peerDependencies": {
"@robinpath/core": ">=0.20.0"
"@robinpath/core": ">=0.40.0"
},
"devDependencies": {
"@robinpath/core": "^0.30.1",
"@robinpath/core": "^0.40.0",
"tsx": "^4.19.0",
"typescript": "^5.6.0"
},
"description": "Docker container and image management using the system docker binary",
"description": "Docker Engine API client — containers, images, networks, volumes, and exec. Talks to a local Unix socket by default (`unix:///var/run/docker.sock`) or a TCP endpoint via the credential vault.",
"keywords": [
"docker",
"devops"
"devops",
"containers",
"engine-api",
"unix-socket"
],

@@ -40,6 +43,13 @@ "license": "MIT",

"category": "devops",
"type": "integration",
"auth": "none",
"functionCount": 16
"type": "module",
"auth": "credential-vault",
"credentialType": "docker",
"functionCount": 27,
"language": "nodejs",
"platforms": [
"cloud",
"cli",
"desktop"
]
}
}

@@ -22,3 +22,3 @@ # @robinpath/docker

```bash
npm install @robinpath/docker
robinpath add @robinpath/docker
```

@@ -25,0 +25,0 @@