in codex-cli/src/utils/singlepass/context_files.ts [266:295]
function recurse(node: DirTree, prefix: string): void {
const entries = Object.keys(node).sort((a, b) => {
// Directories first, then files
const aIsDir = node[a] != null;
const bIsDir = node[b] != null;
if (aIsDir && !bIsDir) {
return -1;
}
if (!aIsDir && bIsDir) {
return 1;
}
return a.localeCompare(b);
});
for (let i = 0; i < entries.length; i++) {
const entry = entries[i];
if (!entry) {
continue;
}
const isLast = i === entries.length - 1;
const connector = isLast ? "└──" : "├──";
const isDir = node[entry] != null;
lines.push(`${prefix}${connector} ${entry}`);
if (isDir) {
const newPrefix = prefix + (isLast ? " " : "│ ");
recurse(node[entry] as DirTree, newPrefix);
}
}
}