@robinpath/docker
Advanced tools
| /** | ||
| * 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"} |
+1585
| /** | ||
| * 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" | ||
| ] | ||
| } | ||
| } |
+1
-1
@@ -22,3 +22,3 @@ # @robinpath/docker | ||
| ```bash | ||
| npm install @robinpath/docker | ||
| robinpath add @robinpath/docker | ||
| ``` | ||
@@ -25,0 +25,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
112499
2857.39%10
400%1637
Infinity%2
100%4
100%