Files
CxIDE/docs/BUILD.md
T
cx-git-agent c118996746 feat: CxIDE v1 — native macOS SwiftUI IDE with agentic AI assistant
- SwiftUI macOS app with C++17 code analysis engine (ObjC++ bridge)
- Agentic AI loop: LLM plans → tool calls → execution → feedback loop
- 15 agent tools: file ops, terminal, git, xcode build, code intel
- 7 persistent terminal tools with background session management
- Chat sidebar with agent step rendering and auto-apply
- NVIDIA NIM API integration (Llama 3.3 70B default)
- OpenAI tool_calls format with prompt-based fallback
- Code editor with syntax highlighting and multi-tab support
- File tree, console view, terminal view
- Git integration and workspace management
2026-04-21 16:05:52 -05:00

140 lines
3.7 KiB
Markdown

# CxIDE — Build Guide
## Prerequisites
| Tool | Minimum | Check |
|------|---------|-------|
| macOS | 14.0+ (Sonoma) | `sw_vers -productVersion` |
| Swift | 5.9+ | `swift --version` |
| Xcode | 15.0+ | `xcodebuild -version` |
| Clang++ | Apple clang 15+ | `clang++ --version` |
| Git | 2.x | `git --version` |
## Quick Start
```bash
# First-time setup (validates toolchain, installs hooks)
./scripts/setup.sh
# Build (debug)
./scripts/build.sh
# Build (release)
./scripts/build.sh release
# Run tests
./scripts/test.sh
# Lint
./scripts/lint.sh
# Clean
./scripts/clean.sh
```
## Build Targets
### 1. C++ CodeEngine (static library)
The C++ analysis engine compiles into `libCxEngine.a`:
```bash
# Manual compilation
clang++ -std=c++17 -O2 -c Core/CodeEngine.cpp -o .build/CodeEngine.o
clang++ -std=c++17 -O2 -fobjc-arc -c Core/SwiftEngineWrapper.mm \
-I Core -o .build/SwiftEngineWrapper.o
ar rcs .build/libCxEngine.a .build/CodeEngine.o .build/SwiftEngineWrapper.o
```
**Source files:**
- `Core/CodeEngine.hpp` — C++ header (EngineConfig, Token, SymbolInfo, AnalysisReport)
- `Core/CodeEngine.cpp` — Full Swift tokenizer, symbol extraction, complexity metrics
- `Core/SwiftEngineWrapper.h` — Objective-C interface (40+ methods)
- `Core/SwiftEngineWrapper.mm` — ObjC++ bridge implementation
### 2. CxIDE App (Xcode / SwiftUI)
Open the project in Xcode and build normally, or use `xcodebuild`:
```bash
# If using an .xcodeproj
xcodebuild -scheme CxIDE -configuration Debug build
# SwiftUI previews
# Open any View file in Xcode and use the Canvas (⌥⌘P)
```
**Key dependencies within the project:**
- SwiftUI + AppKit (macOS window management)
- Foundation (file I/O, Process for code execution)
- The C++ engine is linked via the ObjC++ bridging header
### 3. CxSwiftAgent (SPM executable)
```bash
cd CxSwiftAgent
# Debug build
swift build
# Release build
swift build -c release
# Run tests
swift test
# Run the agent (HTTP mode)
.build/release/cx-swift-agent --port 3001 --workspace /path/to/project
# Run the agent (stdio mode — for MCP clients)
.build/release/cx-swift-agent --stdio
```
**Docker build:**
```bash
cd CxSwiftAgent
docker build -t cx-swift-agent .
docker run -p 3001:3001 -v /path/to/project:/workspace cx-swift-agent
```
## Build Configurations
### Debug (default)
- `-g -O0 -DDEBUG` for C++
- Assertions enabled
- Full debug symbols
### Release
- `-O2 -DNDEBUG` for C++
- Optimizations enabled
- Static linking for agent binary
## C++ Engine Configuration
The engine is configurable at runtime via `EngineConfig` / `CppAnalysisConfig`:
| Parameter | Default | Description |
|-----------|---------|-------------|
| `maxLineLength` | 120 | Warn on lines exceeding this |
| `maxNestingDepth` | 5 | Maximum brace nesting depth |
| `maxFunctionLength` | 50 | Lines before a function is "too long" |
| `minCommentRatio` | 0.05 | Minimum comment-to-code ratio |
| `maxPrintStatements` | 5 | Warn on excessive prints |
| `detectForceUnwraps` | true | Flag `!` unwraps |
| `detectForceTry` | true | Flag `try!` |
| `detectForceCast` | true | Flag `as!` |
| `detectDuplicateLines` | true | Find repeated code |
| `detectTodoFixme` | true | Extract TODO/FIXME markers |
| `detectRetainCycles` | true | Warn on missing `[weak self]` |
## Troubleshooting
| Problem | Solution |
|---------|----------|
| `swift not found` | Install Xcode or download Swift from swift.org |
| `clang++ not found` | Run `xcode-select --install` |
| C++ compilation errors | Ensure C++17 support: `clang++ -std=c++17` |
| ObjC++ bridge errors | Check `-fobjc-arc` flag and bridging header path |
| Agent build fails | Verify `Package.swift` targets macOS 14+ |
| Tests timeout | CxSwiftAgent tests need write access to `/tmp` |