diff --git a/README.md b/README.md index 0e846dc..9909d26 100644 --- a/README.md +++ b/README.md @@ -21,15 +21,13 @@ programmatic/LLM consumption. ## Architecture -``` -tokenize(text) generic S-expression tokenizer -parse_sexp(text) builds { tag, items[] } tree - │ - ▼ -run_query(ext, query, root, args) file-type + query dispatch → plain data object - │ - ├── render_human(ext, query, data) formatted tables for terminal - └── render_json(data) JSON.stringify for LLM / scripts +```mermaid +flowchart TD + A["tokenize(text)"] --> B["parse_sexp(text)\n{ tag, items[] } tree"] + B --> C["run_query(ext, query, root, args)\nfile-type + query dispatch"] + C --> D["plain data object"] + D --> E["render_human(ext, query, data)\nformatted tables for terminal"] + D --> F["render_json(data)\nJSON.stringify for LLM / scripts"] ``` Query functions are pure data transformers — no I/O, no format awareness.