This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
AINative Studio IDE is a rebranded fork of Void Editor (which itself is forked from VS Code), focused on AI-powered development.
- Root Directory:
/AINativeStudio-IDE/- Contains documentation and CI configuration - Main Codebase:
/AINativeStudio-IDE/ainative-studio/- The actual IDE source code (was previously called "void") - Working Directory: All development commands should be run from
ainative-studio/directory - Package Location:
ainative-studio/package.jsonandainative-studio/package-lock.json
IMPORTANT: The codebase uses Electron + TypeScript with React components for AI features.
cd ainative-studio
npm install
npm run watch # Start development build (watch mode)
./scripts/code.sh # Run the application (Linux/macOS)
./scripts/code.bat # Run the application (Windows)npm run compile # One-time compilation
npm run buildreact # Build React AI components
npm run watchreact # Watch React components
npm run test-node # Run Node.js tests
npm run test-browser # Run browser tests
npm run smoketest # End-to-end smoke testsnpm run gulp vscode-darwin-arm64 # macOS Apple Silicon
npm run gulp vscode-win32-x64 # Windows x64
npm run gulp vscode-linux-x64 # Linux x64- Main Process (
ainative-studio/src/vs/main/): Electron main process with Node.js access - Renderer Process (
ainative-studio/src/vs/workbench/): UI process, sandboxed from Node.js - AI Features (
ainative-studio/src/vs/workbench/contrib/void/): All Void/AINative-specific functionality - React Components (
ainative-studio/src/vs/workbench/contrib/void/browser/react/): AI UI components - CLI (
ainative-studio/cli/): Rust-based command-line interface
common/ # Shared between main and renderer processes
browser/ # Renderer process only (can use DOM APIs)
electron-main/ # Main process only (can use Node.js APIs)
node/ # Node.js specific implementations
Key services in ainative-studio/src/vs/workbench/contrib/void/browser/:
sendLLMMessageService: Core LLM communicationchatThreadService: Chat thread managementautocompleteService: AI code completioneditCodeService: Apply/edit code functionalitycontextGatheringService: Context collection for AIvoidSettingsService: Provider/model configuration
React components require separate building:
cd ainative-studio/src/vs/workbench/contrib/void/browser/react/
node build.js --watch # Watch mode for React development- Chat Interface: Interactive AI conversation in sidebar
- Tab Autocomplete: AI-powered code completion
- Quick Edit (Cmd+K): Inline code editing
- Apply System: Apply AI changes with diff preview (fast/slow modes)
- Agent Mode: AI can create, edit, search, delete files
- Gather Mode: Context-aware AI with file/folder understanding
- Checkpoints: Save and restore code states
Anthropic (Claude), OpenAI (GPT), Google (Gemini), Mistral AI, Groq, Ollama (local)
// Services use dependency injection
@registerSingleton(IVoidSettingsService, VoidSettingsService)
// Access via constructor injection
constructor(@IVoidSettingsService private voidSettingsService: IVoidSettingsService)Per .cursor/rules/ainative-branding.mdc:
- Replace all "Void" references with "AINative Studio"
- Update visual assets and branding
- Maintain 100% functional parity
- No breaking changes to core functionality
- Create services in
ainative-studio/src/vs/workbench/contrib/void/browser/ - Add React components in the dedicated React folder
- Register services with dependency injection
- Use IPC channels for main/renderer communication
- Follow existing TypeScript and React patterns
ainative-studio/test/automation/ # Automated UI tests
ainative-studio/test/integration/ # Integration tests
ainative-studio/test/smoke/ # Critical workflow tests
ainative-studio/test/unit/ # Unit tests
npm run test-node # Fast unit tests
npm run test-browser # Browser-based tests
npm run smoketest # Full end-to-end tests
npx playwright install # Install test browsers (if needed)ainative-studio/product.json: Product metadata and brandingainative-studio/package.json: Dependencies and build scriptsainative-studio/src/vs/workbench/contrib/void/browser/react/package.json: React dependencies
- Electron 43.7.7, TypeScript, React 19.1.0
- AI SDKs: @anthropic-ai/sdk, openai, @google/genai, @mistralai/mistralai, groq-sdk, ollama
- Build: Gulp, Webpack, ESLint, Playwright
npm run watchcompiles TypeScript and starts file watching- React components need separate building with
npm run buildreact - Use
./scripts/code.shto launch the application - Changes trigger automatic recompilation in watch mode
- TypeScript compilation (
gulp compile) - React component building
- Extension bundling
- Asset processing (icons, themes)
- Platform-specific packaging (creates output in
../VSCode-{platform}-{arch}/)
- Large codebase (~40k+ files) requires efficient build processes
- AI features use streaming for better UX
- Memory optimization important due to LLM integration
- Extensions are lazy-loaded for startup performance
- Main process handles all LLM API calls and file system access
- Renderer process is sandboxed and communicates via secure IPC channels
- AI provider keys stored securely in main process only
- No direct API calls from renderer for security isolation
Located in .github/workflows/:
build-linux.yml: Ubuntu builds for Linux x64build-macos.yml: macOS builds for both Intel and Apple Siliconbuild-windows.yml: Windows builds for x64release.yml: Multi-platform release workflow
CRITICAL: All GitHub Actions workflows must use ainative-studio/ as the working directory:
working-directory: ainative-studio
cache-dependency-path: 'ainative-studio/package-lock.json'- Push to
mainbranch: Builds all platforms but no release - Tags starting with
v*: Builds all platforms AND creates GitHub release - Pull requests: Builds for testing
- Manual dispatch: Can be triggered via GitHub Actions UI
- Create version tag:
git tag v1.0.0 && git push origin v1.0.0 - GitHub Actions automatically builds all platforms
- Creates GitHub release with downloadable artifacts
- Supports prerelease detection (alpha/beta/rc in tag name)
- TypeScript compilation requires Node.js heap limit of 8192MB
- All build scripts include
--max-old-space-size=8192for large codebase compilation