import { z } from 'zod';
import { errorResult, jsonResult, toErrorMessage } from '../shared.js';
import { dockerManager } from './dockerManager.js';
export function registerDockerListContainersTool(server) {
    server.registerTool('docker_list_containers', {
        title: 'Docker List Containers',
        description: 'List Docker containers started by this server with their current status and port mappings.',
        inputSchema: {
            includeDockerStatus: z
                .boolean()
                .optional()
                .default(false)
                .describe('Also query the Docker daemon for live status of each tracked container.'),
        },
    }, async ({ includeDockerStatus }) => {
        try {
            await dockerManager.ensureReachable();
            const tracked = dockerManager.listTracked();
            if (!includeDockerStatus) {
                return jsonResult({ containers: tracked });
            }
            const docker = dockerManager.getDocker();
            const enriched = await Promise.all(tracked.map(async (c) => {
                try {
                    const info = await docker.getContainer(c.id).inspect();
                    return {
                        ...c,
                        state: info.State?.Status ?? 'unknown',
                        running: info.State?.Running ?? false,
                        exitCode: info.State?.ExitCode ?? null,
                    };
                }
                catch {
                    return { ...c, state: 'unknown', running: false, exitCode: null };
                }
            }));
            return jsonResult({ containers: enriched });
        }
        catch (error) {
            return errorResult(toErrorMessage(error));
        }
    });
}
//# sourceMappingURL=listContainers.js.map