Files
nvi/docs/graphs/architecture.dot

66 lines
1.8 KiB
Plaintext

digraph nvi {
rankdir=TB;
bgcolor="#161b22";
fontname="JetBrains Mono";
fontcolor="#c9d1d9";
node [
shape=box,
style="rounded,filled",
fillcolor="#21262d",
color="#30363d",
fontname="JetBrains Mono",
fontcolor="#c9d1d9",
fontsize=11,
];
edge [color="#8b949e", fontname="JetBrains Mono", fontcolor="#8b949e", fontsize=10];
user [label="user question", fillcolor="#1f6feb", fontcolor="#ffffff"];
subgraph cluster_l3 {
label="L3 — Plan";
color="#30363d";
fontcolor="#58a6ff";
fontsize=11;
plan [label="planner\n(1 LLM call)"];
}
subgraph cluster_l2 {
label="L2 — Analyses (mini-agents)";
color="#30363d";
fontcolor="#58a6ff";
fontsize=11;
compare [label="compare_periods\n(CoT)"];
drill [label="drill_down\n(ReAct)"];
outl [label="find_outliers\n(CoT)"];
corr [label="correlate\n(plan-and-execute)"];
}
subgraph cluster_l1 {
label="L1 — Tools (deterministic)";
color="#30363d";
fontcolor="#58a6ff";
fontsize=11;
t2s [label="text_to_sql"];
exec [label="execute_sql"];
schema [label="retrieve_schema"];
py [label="python_sandbox"];
}
warehouse [label="Postgres\nBIRD financial", fillcolor="#388bfd33"];
langfuse [label="Langfuse (lng, WG)", fillcolor="#bf4b8a33", fontcolor="#ffffff"];
synth [label="synthesize\nfindings → answer"];
user -> plan;
plan -> compare; plan -> drill; plan -> outl; plan -> corr;
compare -> t2s; drill -> t2s; outl -> t2s; corr -> t2s;
drill -> schema [style=dashed];
corr -> py [style=dashed];
t2s -> exec;
exec -> warehouse;
compare -> synth; drill -> synth; outl -> synth; corr -> synth;
plan -> langfuse [style=dotted, label="spans"];
compare -> langfuse [style=dotted];
exec -> langfuse [style=dotted];
}