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
orxcodebuild 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