{
  "name": "agent-ui",
  "version": "1.0.0",
  "description": "Dynamic canvas for Claude Code interaction",
  "scripts": {
    "kill-ports": "node -e \"const {execSync} = require('child_process'); [4101,4102,4103,4105].forEach(p => { try { const pid = execSync('netstat -ano | findstr :' + p + ' | findstr LISTENING', {encoding:'utf8'}).split(/\\s+/).pop().trim(); if(pid) execSync('taskkill /PID ' + pid + ' /F', {stdio:'ignore'}); } catch(e){} }); console.log('Ports cleared (4104/whisper preserved)');\"",
    "start": "bun run kill-ports && concurrently -n api,terminal,frontend -c blue,yellow,green \"cd server && bun --watch run index.ts\" \"cd server && bun run terminal.ts\" \"cd frontend && bun run dev --host\"",
    "start:api": "cd server && bun --watch run index.ts",
    "start:terminal": "cd server && bun run terminal.ts",
    "start:frontend": "cd frontend && bun run dev --host",
    "tauri": "npx --prefix frontend tauri",
    "tauri:dev": "npx --prefix frontend tauri dev",
    "tauri:build": "npx --prefix frontend tauri build",
    "tauri:android:init": "npx --prefix frontend tauri android init",
    "tauri:android:build": "npx --prefix frontend tauri android build",
    "build:android:tauri": "cd src-tauri/gen/android && ./gradlew assembleRelease -x rustBuildArm64Release -x rustBuildArmRelease -x rustBuildX86Release -x rustBuildX86_64Release",
    "build:tauri:android": "cd src-tauri/gen/android && ./gradlew assembleRelease -x rustBuildArm64Release -x rustBuildArmRelease -x rustBuildX86Release -x rustBuildX86_64Release",
    "start:tauri": "frontend/node_modules/.bin/tauri dev"
  },
  "devDependencies": {
    "concurrently": "^9.2.1"
  }
}
