AGENT.md

Build/Test Commands

  • Web: cd web && pnpm run check (format, lint, typecheck), pnpm run dev (port 4020), pnpm run test (Vitest)
  • Mac: cd mac && ./scripts/build.sh (Release), ./scripts/build.sh --configuration Debug, ./scripts/lint.sh (SwiftFormat + SwiftLint)
  • Single test: cd web && pnpm run test path/to/test.spec.ts or xcodebuild test -project VibeTunnel-Mac.xcodeproj -scheme VibeTunnel-Mac

Architecture

  • Native macOS (Swift/SwiftUI) in mac/ - main app + terminal session management
  • iOS companion in ios/ - mobile interface
  • Web stack in web/ - TypeScript/LitElement frontend + Node.js/Bun server for terminal sessions
  • Key APIs: /api/sessions (create), /api/sessions/:id/input (send), /api/sessions/:id/stream (SSE output), /buffers (WebSocket binary)
  • Entry points: mac/VibeTunnel/VibeTunnelApp.swift, web/src/client/app.ts, web/src/server/server.ts

Code Style

  • TypeScript: camelCase vars/functions, PascalCase classes/interfaces, UPPER_SNAKE_CASE constants, .js imports, JSDoc, singleton exports
  • Swift: PascalCase types, camelCase properties/methods, // MARK: - sections, @Observable models, @MainActor UI, protocol-oriented design
  • Imports: System frameworks first (Swift), external libs first (TS), relative paths with ../, specific imports preferred
  • Error handling: Try-catch with logging (TS), custom error enums with LocalizedError (Swift)
  • No backwards compatibility - Mac app and web server ship together, change both sides simultaneously