@startuml Architecture Component Diagram !theme plain skinparam componentStyle uml2 skinparam linetype ortho title Orchestrated Discussions - Component Architecture package "User Layer" { component [CLI] as CLI component [GUI\n(Dear PyGui)] as GUI component [TUI\n(urwid)] as TUI } package "Orchestrated Discussions" { component [Discussion\nModel] as Model component [Runner\n(Pipeline)] as Runner component [Participant\nRegistry] as Registry package "Local Helpers" { component [Markers\nParser] as Markers component [Voting\nCalculator] as Voting } } package "SmartTools" { package "Utility Tools" { component [discussion-parser] as Parser component [discussion-validator] as Validator component [discussion-summarizer] as Summarizer } package "Orchestration Tools" { component [discussion-vote-counter] as VoteCounter component [discussion-mention-router] as Router component [discussion-status-promoter] as Promoter component [discussion-turn-appender] as Appender component [discussion-config] as Config } package "Participant Tools" { component [discussion-architect] as Architect component [discussion-security] as Security component [discussion-pragmatist] as Pragmatist component [discussion-moderator] as Moderator component [discussion-diagram-editor] as DiagramEditor } } package "External" { component [AI Providers\n(Claude, etc.)] as AI database [Discussion\nFiles (.md)] as Files database [Templates\n(.yaml)] as Templates } ' User Layer connections CLI --> Runner : invokes GUI --> Runner : invokes TUI --> Runner : invokes CLI --> Model : load/save GUI --> Model : load/save TUI --> Model : load/save ' Runner connections Runner --> Parser : subprocess Runner --> Router : subprocess Runner --> Appender : subprocess Runner --> VoteCounter : subprocess Runner --> Promoter : subprocess ' Participant calls Runner --> Architect : subprocess Runner --> Security : subprocess Runner --> Pragmatist : subprocess Runner --> Moderator : subprocess Runner --> DiagramEditor : subprocess ' Model connections Model --> Files : read/write Model --> Markers : parse markers Model --> Voting : check consensus ' Registry Registry ..> "Participant Tools" : discovers ' SmartTools to AI Architect --> AI : inference Security --> AI : inference Pragmatist --> AI : inference Moderator --> AI : inference DiagramEditor --> AI : inference Summarizer --> AI : inference ' Template usage Runner --> Templates : load pipeline note right of Runner **Thin Orchestration** - Pipes data between tools - No business logic - Parallel execution end note note bottom of "SmartTools" **Unix Philosophy** - Each tool does one thing - stdin/stdout communication - Independently testable end note @enduml