{% macro render_node(node) %}
{{ NODE_ICONS.get(node.node_type, '') }} {{ node.name }} {{ node.node_type }} {{ node.line_count }} lines {% if node.node_type in ('function', 'method') and node.start_line and node.end_line %} L{{ node.start_line }}–{{ node.end_line }} {% endif %} {% if node.quality == 'warning' %} 🔴 {% elif node.quality == 'complex' %} 🟡 {% else %} 🟢 {% endif %} {% if node.warnings %} {{ node.warnings | join('; ') }} {% endif %}
{% if node.imports %}
IMPORTS ({{ node.imports | length }}) {% for imp in node.imports %}
→ {{ imp }}
{% endfor %}
{% endif %} {% if node.summary %}
{{ node.summary }}
{% elif node.node_type != 'directory' %}
AI summary pending...
{% endif %} {% if node.pseudocode and node.node_type in ('function', 'method') %}
PSEUDOCODE
{{ node.pseudocode }}
{% endif %} {% if node.warnings %}
{% for w in node.warnings %}
⚠️ {{ w }}
{% endfor %}
{% endif %} {% if node.node_type != 'directory' and node.source %}
{{ node.source }}
{% endif %} {% if node.children %}
{% for child in node.children %} {{ render_node(child) }} {% endfor %}
{% endif %}
{% endmacro %}

codedocent

{{ root.filepath or root.name }}

{{ render_node(root) }}