|
| 1 | +# Development Overview |
| 2 | + |
| 3 | +## Component Relationships |
| 4 | + |
| 5 | +The repository is split into a few cooperating parts: the ImGui desktop client (`pipetap-gui`), the injected hook + proxy DLL (`pipetap-dll`), shared contracts and logging (`pipetap-shared`), a Python SDK for the TCP-to-named-pipe proxy (`pipetap-python`), and two small fixtures to exercise the flow (`pipe-test-client`/`pipe-test-server`). The diagram shows how they depend on each other and where the DLL sits when injected into a target named-pipe server. |
| 6 | + |
| 7 | +```mermaid |
| 8 | +graph TD |
| 9 | + shared["pipetap-shared\n(IPC contracts, logging)"] |
| 10 | + gui["pipetap-gui\n(ImGui desktop client)"] |
| 11 | + dll["pipetap-dll\n(Injected hook + TCP proxy)"] |
| 12 | + py["pipetap-python\n(TCP SDK, PyPI)"] |
| 13 | + client["pipe-test-client\n(Named pipe fixture)"] |
| 14 | + server["pipe-test-server\n(Target fixture)"] |
| 15 | +
|
| 16 | + shared --> gui |
| 17 | + shared --> dll |
| 18 | + gui -- inject/control --> dll |
| 19 | + gui -- control/events named pipes --> dll |
| 20 | + py -- TCP port 61337 --> dll |
| 21 | + client -- named pipe I/O --> server |
| 22 | + dll -- injected hooks --> server |
| 23 | +``` |
| 24 | + |
| 25 | +## Protocol Flow |
| 26 | + |
| 27 | +Once injected, the DLL stands between the real client/server named-pipe traffic and the GUI (and optionally the Python SDK). It establishes PID-scoped control/event pipes for coordination with the GUI, continues to forward intercepted I/O to the real APIs, and exposes a TCP listener for remote pipe access. The sequence below outlines the major message paths. |
| 28 | + |
| 29 | +```mermaid |
| 30 | +sequenceDiagram |
| 31 | + participant GUI as pipetap-gui |
| 32 | + participant DLL as pipetap-dll in target |
| 33 | + participant Server as Named Pipe Server (target) |
| 34 | + participant Client as Named Pipe Client |
| 35 | + participant Python as pipetap-python (optional) |
| 36 | +
|
| 37 | + GUI->>DLL: Inject support DLL into target process |
| 38 | + DLL-->>GUI: Expose PID-scoped control/events pipes |
| 39 | + GUI-->>DLL: Connect and send control commands |
| 40 | + Client->>Server: Named pipe read/write calls |
| 41 | + DLL-->>GUI: Stream intercepted I/O events |
| 42 | + GUI-->>DLL: Optional edits/blocks then send replacements |
| 43 | + Python->>DLL: TCP connect (default 61337) |
| 44 | + Python->>DLL: Request remote pipe open/send/recv |
| 45 | + DLL->>Server: Relay proxied I/O to the pipe server |
| 46 | + DLL->>Client: Return pass-through or edited responses |
| 47 | +``` |
0 commit comments