import { renderSessionLine } from './session-line.js';
import { renderToolsLine } from './tools-line.js';
import { renderAgentsLine } from './agents-line.js';
import { renderTodosLine } from './todos-line.js';
import { renderIdentityLine, renderProjectLine, renderEnvironmentLine, renderUsageLine, } from './lines/index.js';
import { dim, RESET } from './colors.js';
function visualLength(str) {
    // eslint-disable-next-line no-control-regex
    return str.replace(/\x1b\[[0-9;]*m/g, '').length;
}
function makeSeparator(length) {
    return dim('─'.repeat(Math.max(length, 20)));
}
function collectActivityLines(ctx) {
    const activityLines = [];
    const display = ctx.config?.display;
    if (display?.showTools !== false) {
        const toolsLine = renderToolsLine(ctx);
        if (toolsLine) {
            activityLines.push(toolsLine);
        }
    }
    if (display?.showAgents !== false) {
        const agentsLine = renderAgentsLine(ctx);
        if (agentsLine) {
            activityLines.push(agentsLine);
        }
    }
    if (display?.showTodos !== false) {
        const todosLine = renderTodosLine(ctx);
        if (todosLine) {
            activityLines.push(todosLine);
        }
    }
    return activityLines;
}
function renderCompact(ctx) {
    const lines = [];
    const sessionLine = renderSessionLine(ctx);
    if (sessionLine) {
        lines.push(sessionLine);
    }
    return lines;
}
function renderExpanded(ctx) {
    const lines = [];
    const identityLine = renderIdentityLine(ctx);
    if (identityLine) {
        lines.push(identityLine);
    }
    const projectLine = renderProjectLine(ctx);
    if (projectLine) {
        lines.push(projectLine);
    }
    const environmentLine = renderEnvironmentLine(ctx);
    if (environmentLine) {
        lines.push(environmentLine);
    }
    const usageLine = renderUsageLine(ctx);
    if (usageLine) {
        lines.push(usageLine);
    }
    return lines;
}
export function render(ctx) {
    const lineLayout = ctx.config?.lineLayout ?? 'expanded';
    const showSeparators = ctx.config?.showSeparators ?? false;
    const headerLines = lineLayout === 'expanded'
        ? renderExpanded(ctx)
        : renderCompact(ctx);
    const activityLines = collectActivityLines(ctx);
    const lines = [...headerLines];
    if (showSeparators && activityLines.length > 0) {
        const maxWidth = Math.max(...headerLines.map(visualLength), 20);
        lines.push(makeSeparator(maxWidth));
    }
    lines.push(...activityLines);
    for (const line of lines) {
        const outputLine = `${RESET}${line.replace(/ /g, '\u00A0')}`;
        console.log(outputLine);
    }
}
//# sourceMappingURL=index.js.map