This folder contains internal architecture documentation for the RevitDevTool platform.
RevitDevTool is evolving into a reusable .NET host/dev-tool platform. Revit and AutoCAD are current hosts; shared platform behavior lives in source/DevTools.*.
User guides and tutorials: RevitDevTool.Wiki
docs/
├── ai/ # Agent workflow routing and deterministic memory
│ ├── index.md # Task router — start here for agents
│ ├── build-matrix.md # SDK, TFM matrix, build/pack/deploy commands
│ ├── verification.md # Test reality, focused verification commands
│ ├── execution-system.md # Execution engine digest + change checklist
│ ├── mcp-pytest-bridge.md # MCP + pytest bridge digest
│ ├── host-boundaries.md # Shared vs host layer split
│ ├── startup-performance.md # Lazy-init rules, profiling commands
│ ├── known-test-gaps.md # Shallow coverage, stale paths, env deps
│ └── decision-log.md # Durable architecture decisions (ADRs)
├── Execution/
│ └── README.md # Execution engine architecture
├── Logging/
│ └── README.md # Logging system architecture
├── Visualization/
│ └── README.md # DirectContext3D visualization (Revit-only)
├── PythonDemo/
│ └── README.md # Python + WebView2 dashboard samples
├── MCP/
│ └── README.md # MCP parser & server design
├── PyTest/
│ └── README.md # pytest bridge architecture
└── static/icons/ # Inkscape SVG sources for UI/installer icons
├── Commands-*.svg # Commands panel icons
├── DevTools-*.svg # Main DevTools tab icons
├── StubBuilder-*.svg # Stub builder icons
└── installer/ # Installer banner/background
Path: ai/index.md
Operational workflow for coding agents:
- Task routing to module docs and skill checklists
- Build/test/package command selection
- Known harness gaps and host-boundary rules
- Verification loop guidance
This is an agent digest. It does not replace the architecture docs below.
Path: Execution/README.md
Comprehensive architecture documentation covering:
- Host-adapter execution model for Revit, AutoCAD, and future .NET hosts
- Execution modes: .NET assemblies, Python, IronPython, F#, C# scripts
IExecutionProvider/IExecutionStrategyinterfaces- Tree node model (Root → Intermediate → Executable)
ExecutionOrchestratorevent-driven lifecycle- PEP 723 dependency resolution (Pixi + Pip backends)
- F# NuGet and C# Roslyn script compilation
FileWatcherService3-layer debounced watchingTreeStateManagerstate persistence- MCP bridge & Named Pipe server integration
- Package management (
PackageService)
Path: Logging/README.md
Unified logging infrastructure:
- Multi-sink output (monitor, file, HTTP)
- Keyword-based log level detection
- Host-specific context enrichment
- Revit geometry interception → visualization routing
- Console + Python
print()redirection - Revit element linkification
Path: Visualization/README.md
DirectContext3D transient geometry rendering:
- Revit-host feature, not shared platform rendering
- Server-per-geometry-type pattern
- Two-pass rendering (opaque + transparent)
- RenderingBufferStorage caching
- Integration with logging via
GeometryListener
Path: PythonDemo/README.md
Python + WebView2 dashboard application:
- 17 demo scripts (data analysis, visualization, logging, ML, geometry)
- React + TypeScript frontend with Recharts
- Polars analytics engine
- WebView2 embedded browser integration
- MCP toolset examples
Path: MCP/README.md
Model Context Protocol integration:
DevTools.McpParser— message parsing libraryDevTools.McpServer— standalone server binaryToolRegistryStore— in-process tool discovery & caching.NET+ Python toolset providers- Tool/Prompt/Resource dispatch
- Standalone helper tools are multi-host (
launch_hostsupports Revit and AutoCAD,read_file_inforeads RVT/RFA/DWG metadata,open_modeldetects host from extension); in-host MCP runtime is shared
Path: PyTest/README.md
pytest remote execution bridge:
- Named Pipe protocol
- Multi-host
revitdevtool_pytestclient plugin (Revit, AutoCAD-family, extensible) PytestExecutionService+PytestRunner.pyserver- Test progress streaming & result reporting
- Current tests are smoke/contract level, not deep end-to-end assurance
| I want to... | Read |
|---|---|
| Route an agent task | ai/index.md |
| Understand build/deploy | ai/build-matrix.md |
| Understand the execution engine | Execution/README.md |
| Understand logging | Logging/README.md |
| Understand visualization (Revit-only) | Visualization/README.md |
| Understand MCP integration | MCP/README.md |
| Understand pytest bridge | PyTest/README.md |
| Understand host boundaries | ai/host-boundaries.md |
| Understand known test gaps | ai/known-test-gaps.md |
| Use RevitDevTool (end-user) | RevitDevTool.Wiki |
| Module | Architecture Docs | Status |
|---|---|---|
| Execution | ✅ Execution/README.md |
Production |
| Logging | ✅ Logging/README.md |
Production |
| Visualization | ✅ Visualization/README.md |
Production (Revit-only) |
| MCP | ✅ MCP/README.md |
Production |
| PyTest | ✅ PyTest/README.md |
Production |
| PythonDemo | ✅ PythonDemo/README.md |
Samples |
| AI Harness | ✅ ai/index.md + 8 digests |
Agent workflow |
| Library | Covered in | Notes |
|---|---|---|
| DevTools.Presentation | Execution/README.md, Logging/README.md |
MVVM shell, ViewModels, host-neutral UI |
| DevTools.UI | AGENTS.md |
WPF controls, theme, MahApps integration |
| DevTools.Settings | Execution/README.md, MCP/README.md |
Configuration persistence |
| DevTools.Telemetry | AGENTS.md |
Sentry integration, path scrubbing |
| DevTools.Utilities | AGENTS.md |
Win32 helpers, assembly loading |
| DevTools.McpParser | MCP/README.md |
Shared bridge contracts and parsers |
| DevTools.McpServer | MCP/README.md, ai/build-matrix.md |
Standalone MCPServer.exe |
| RevitDevTool.Core | AGENTS.md |
Revit-only: transactions, dockable panes |
| Sample | Type |
|---|---|
Samples/CSharpDemo/ |
Revit C# demo |
Samples/AcadCSharpDemo/ |
AutoCAD C# demo |
Samples/FSharpDemo/ |
Revit F# demo |
Samples/CSharpScriptDemo/ |
C# .csx script demo |
Samples/McpToolsetDemo/ |
MCP [McpTool] attribute demo |
Samples/RevitMcpToolSet/ |
Revit MCP toolset sample |
Samples/PythonDemo/ |
Python + React dashboard (not in .slnx) |
| Project | Path | Layer |
|---|---|---|
| Execution engine | source/DevTools.Execution/ |
Shared |
| Presentation (MVVM) | source/DevTools.Presentation/ |
Shared |
| Logging | source/DevTools.Logging/ |
Shared |
| MCP parser/contracts | source/DevTools.McpParser/ |
Shared |
| MCP standalone server | source/DevTools.McpServer/ |
Standalone |
| Settings | source/DevTools.Settings/ |
Shared |
| Telemetry | source/DevTools.Telemetry/ |
Shared |
| UI (WPF controls) | source/DevTools.UI/ |
Shared |
| Utilities | source/DevTools.Utilities/ |
Shared |
| Revit host | source/RevitDevTool/ |
Host |
| Revit core helpers | source/RevitDevTool.Core/ |
Host (Revit-only) |
| AutoCAD host | source/AcadDevTool/ |
Host |
- Read architecture docs for the module you're modifying
- Follow existing patterns (Provider, Strategy, Composite, Observer)
- Update docs when changing important architecture or feature boundaries
- Add demos in
Samples/ - Update wiki for user-facing changes
- Sharable by Default — Every feature should be host-agnostic unless it inherently requires a specific host API. Only Revit-exclusive features (e.g. DirectContext3D) belong in host projects.
- Separation of Concerns — Each module has clear responsibilities; shared platform vs host adapters.
- Extensibility — Provider/Strategy patterns for pluggable behavior across hosts.
- Performance — Buffering, caching, async throughout.
- Type Safety — Strong typing with nullability annotations.
- Testability — Dependency injection and mockable interfaces.
Last updated: 2026-05-31