You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I want to give you enough detail to reproduce and fix this, so please read the whole report. I generated a diagram with gitdiagram for the public repository Graphene-Lab/AgentBridge at https://github.com/Graphene-Lab/AgentBridge (default branch master, repository name alone is ambiguous because other projects are also called AgentBridge) and then verified the output by reading the actual source files. Several arrows in the generated diagram do not exist in the code and look invented, so the result is misleading for anyone trying to understand the project. The complete original diagram output is reproduced below so you can run the same input and compare.
The clearest example is the arrow labeled installs/updates that goes from the node named WebClientUpdater.cs to the node named OfficeManager/index.html. In the actual repository WebClientUpdater.cs installs and updates a different web client called Giraffe AI, which is not part of the AgentBridge repository at all; the file header says it is downloaded from the releases of another repository, Graphene-Lab/GiraffeAI, into a folder named GiraffeAIWebClient next to the executable. There is no reference from WebClientUpdater to the OfficeManager folder anywhere in the code. OfficeManager is itself part of the AgentBridge repository and is served by the host in Program.cs at the path /OfficeManager, so it can only change together with the whole application and is never touched by WebClientUpdater.
The second problem is that the node named OfficeBridge.cs is labeled as the OpenAI-compatible localhost HTTP API. OfficeBridge.cs is actually a duplex WebSocket hub, exposed at the route /ws/office, plus an agent-lifecycle tracker that serves the browser office visualization; all of the OpenAI-compatible HTTP endpoints such as /v1/chat/completions, /v1/files, /v1/models, /v1/audio/speech, /v1/control, /mcp and /health are registered directly in Program.cs, which is the ASP.NET minimal host of the whole application.
The third problem is the voice chain drawn from the SIP bridge through VoiceBridge.cs to TtsEngine.cs. In the code the SIP bridge in SipBridge.cs runs its calls through a separate pipe class SipVoiceAgent.cs that talks to an external helper process for speech recognition and speech synthesis, and it never uses VoiceBridge or TtsEngine. VoiceBridge.cs is only a one-shot server-microphone speech recognizer used by the endpoint POST /v1/voice/listen, and TtsEngine.cs is the in-process Kokoro synthesizer used only by the endpoint POST /v1/audio/speech. Several smaller labels are also wrong: the terminal UI in Tui.cs does not talk to the agent or the session store directly, it is an HTTP client of the local server and sends its conversations to /v1/chat/completions; ApiModels.cs is not a user interface but the request contracts consumed by the HTTP endpoints; AgentTools.cs is only a preset table of tool names while tool execution happens inside the engine, and the plugin file ToolPlugins.cs is a dynamic loader of plugin assemblies from a Tools folder next to the executable.
It would help a lot if the diagram were produced deterministically from the code, for example by tracing which files actually reference which files and which classes actually call which methods, so that every arrow reflects a real dependency, or if the tool at least validated each arrow against the repository before drawing it. The output currently looks plausible at first sight, but someone who reads the project can disprove most of the meaningful edges, which makes the diagram actively misleading. I have produced a corrected version by hand from the source code and I can share it if that helps your debugging.
I want to give you enough detail to reproduce and fix this, so please read the whole report. I generated a diagram with gitdiagram for the public repository Graphene-Lab/AgentBridge at https://github.com/Graphene-Lab/AgentBridge (default branch master, repository name alone is ambiguous because other projects are also called AgentBridge) and then verified the output by reading the actual source files. Several arrows in the generated diagram do not exist in the code and look invented, so the result is misleading for anyone trying to understand the project. The complete original diagram output is reproduced below so you can run the same input and compare.
flowchart TD subgraph group_host["Host runtime"] node_program["Application host<br/>startup<br/>[Program.cs]"] node_config["Host configuration<br/>settings<br/>[AppConfig.cs]"] node_agent{{"AIOrchestrator runtime<br/>agent runtime<br/>[Program.cs]"}} node_tools["In-process tool plugins<br/>tool boundary<br/>[AgentTools.cs]"] node_toolplugins["Plugin integration<br/>tool plugins<br/>[ToolPlugins.cs]"] node_sessions[("Shared session store<br/>conversation state<br/>[SessionStore.cs]")] node_stateless["Stateless conversations<br/>request conversations"] end subgraph group_interfaces["User interfaces"] node_tui["Terminal GUI<br/>TUI<br/>[Tui.cs]"] node_http["OpenAI-compatible API<br/>localhost HTTP API<br/>[OfficeBridge.cs]"] node_api_models["API contracts<br/>HTTP models<br/>[ApiModels.cs]"] node_office["OfficeManager<br/>browser visualization<br/>[index.html]"] end subgraph group_channels["Channel bridges"] node_telegram["Telegram bridge<br/>MTProto adapter<br/>[TelegramBridge.cs]"] node_sip["SIP voice orchestration<br/>SIP adapter<br/>[SipBridge.cs]"] node_voice["Voice processing<br/>voice adapter<br/>[VoiceBridge.cs]"] node_tts["Speech synthesis<br/>TTS engine<br/>[TtsEngine.cs]"] end subgraph group_delivery["Distribution"] node_updater["Update services<br/>update orchestration<br/>[AutoUpdate.cs]"] node_web_updater["Browser client updater<br/>web client delivery"] node_release["Release automation<br/>CI release pipeline<br/>[release.yml]"] end node_providers{{"LLM providers<br/>external inference"}} node_telegram_net(("Telegram network<br/>external service")) node_sip_net(("SIP/RTP network<br/>external network<br/>[kamailio.cfg]")) node_program -->|"loads"| node_config node_program -->|"configures"| node_agent node_program -->|"owns"| node_sessions node_agent -->|"selects"| node_providers node_agent -->|"invokes"| node_tools node_tools -->|"loads"| node_toolplugins node_tui -->|"conversations"| node_agent node_tui -->|"uses"| node_sessions node_http -->|"uses"| node_api_models node_http -->|"conversations"| node_agent node_http -->|"uses"| node_sessions node_http -->|"request mode"| node_stateless node_telegram -->|"messages"| node_agent node_telegram -->|"MTProto"| node_telegram_net node_sip -->|"calls"| node_agent node_sip -->|"audio flow"| node_voice node_sip -->|"signaling and RTP"| node_sip_net node_voice -->|"speech responses"| node_tts node_office -.->|"activity/status"| node_agent node_updater -->|"consumes releases"| node_release node_web_updater -->|"installs/updates"| node_office click node_program "https://github.com/graphene-lab/agentbridge/blob/master/Program.cs" click node_config "https://github.com/graphene-lab/agentbridge/blob/master/AppConfig.cs" click node_agent "https://github.com/graphene-lab/agentbridge/blob/master/Program.cs" click node_tools "https://github.com/graphene-lab/agentbridge/blob/master/AgentTools.cs" click node_toolplugins "https://github.com/graphene-lab/agentbridge/blob/master/ToolPlugins.cs" click node_sessions "https://github.com/graphene-lab/agentbridge/blob/master/SessionStore.cs" click node_stateless "https://github.com/graphene-lab/agentbridge/blob/master/StatelessConversation.cs" click node_tui "https://github.com/graphene-lab/agentbridge/blob/master/Tui.cs" click node_http "https://github.com/graphene-lab/agentbridge/blob/master/OfficeBridge.cs" click node_api_models "https://github.com/graphene-lab/agentbridge/blob/master/ApiModels.cs" click node_telegram "https://github.com/graphene-lab/agentbridge/blob/master/TelegramBridge.cs" click node_sip "https://github.com/graphene-lab/agentbridge/blob/master/SipBridge.cs" click node_voice "https://github.com/graphene-lab/agentbridge/blob/master/VoiceBridge.cs" click node_tts "https://github.com/graphene-lab/agentbridge/blob/master/TtsEngine.cs" click node_office "https://github.com/graphene-lab/agentbridge/blob/master/OfficeManager/index.html" click node_sip_net "https://github.com/graphene-lab/agentbridge/blob/master/docs/sip-entry/kamailio.cfg" click node_updater "https://github.com/graphene-lab/agentbridge/blob/master/AutoUpdate.cs" click node_web_updater "https://github.com/graphene-lab/agentbridge/blob/master/WebClientUpdater.cs" click node_release "https://github.com/graphene-lab/agentbridge/blob/master/.github/workflows/release.yml" classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554 classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337 classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81 classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a class node_program,node_config,node_agent,node_tools,node_toolplugins,node_sessions,node_stateless toneBlue class node_tui,node_http,node_api_models,node_office toneAmber class node_telegram,node_sip,node_voice,node_tts toneMint class node_updater,node_web_updater,node_release toneRose class node_providers,node_telegram_net,node_sip_net toneNeutralThe clearest example is the arrow labeled installs/updates that goes from the node named WebClientUpdater.cs to the node named OfficeManager/index.html. In the actual repository WebClientUpdater.cs installs and updates a different web client called Giraffe AI, which is not part of the AgentBridge repository at all; the file header says it is downloaded from the releases of another repository, Graphene-Lab/GiraffeAI, into a folder named GiraffeAIWebClient next to the executable. There is no reference from WebClientUpdater to the OfficeManager folder anywhere in the code. OfficeManager is itself part of the AgentBridge repository and is served by the host in Program.cs at the path /OfficeManager, so it can only change together with the whole application and is never touched by WebClientUpdater.
The second problem is that the node named OfficeBridge.cs is labeled as the OpenAI-compatible localhost HTTP API. OfficeBridge.cs is actually a duplex WebSocket hub, exposed at the route /ws/office, plus an agent-lifecycle tracker that serves the browser office visualization; all of the OpenAI-compatible HTTP endpoints such as /v1/chat/completions, /v1/files, /v1/models, /v1/audio/speech, /v1/control, /mcp and /health are registered directly in Program.cs, which is the ASP.NET minimal host of the whole application.
The third problem is the voice chain drawn from the SIP bridge through VoiceBridge.cs to TtsEngine.cs. In the code the SIP bridge in SipBridge.cs runs its calls through a separate pipe class SipVoiceAgent.cs that talks to an external helper process for speech recognition and speech synthesis, and it never uses VoiceBridge or TtsEngine. VoiceBridge.cs is only a one-shot server-microphone speech recognizer used by the endpoint POST /v1/voice/listen, and TtsEngine.cs is the in-process Kokoro synthesizer used only by the endpoint POST /v1/audio/speech. Several smaller labels are also wrong: the terminal UI in Tui.cs does not talk to the agent or the session store directly, it is an HTTP client of the local server and sends its conversations to /v1/chat/completions; ApiModels.cs is not a user interface but the request contracts consumed by the HTTP endpoints; AgentTools.cs is only a preset table of tool names while tool execution happens inside the engine, and the plugin file ToolPlugins.cs is a dynamic loader of plugin assemblies from a Tools folder next to the executable.
It would help a lot if the diagram were produced deterministically from the code, for example by tracing which files actually reference which files and which classes actually call which methods, so that every arrow reflects a real dependency, or if the tool at least validated each arrow against the repository before drawing it. The output currently looks plausible at first sight, but someone who reads the project can disprove most of the meaningful edges, which makes the diagram actively misleading. I have produced a corrected version by hand from the source code and I can share it if that helps your debugging.