{ "name": "d3ro-voice", "version": "1.0.0", "description": "로컬 AI 음성 어시스턴트", "main": "./out/main/index.js", "scripts": { "dev": "electron-vite dev", "build": "electron-vite build", "preview": "electron-vite preview", "typecheck": "tsc --noEmit", "lint": "eslint . --ext .ts,.tsx", "format": "prettier --write \"src/**/*.{ts,tsx,css}\"", "test": "vitest run --config vitest.config.ts", "test:unit": "vitest run --config vitest.config.ts", "test:watch": "vitest --config vitest.config.ts", "pack": "electron-vite build && electron-builder --dir", "dist": "electron-vite build && electron-builder", "build:sidecar": "python scripts/build-sidecar.py", "setup:sox": "powershell -ExecutionPolicy Bypass -File scripts/download-sox.ps1" }, "author": "D3RO", "license": "MIT", "build": { "extends": null, "configFile": "electron-builder.yml" }, "devDependencies": { "@electron-toolkit/tsconfig": "^1.0.1", "@types/better-sqlite3": "^7.6.13", "@types/node": "^22.13.0", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", "@vitejs/plugin-react": "^4.3.0", "electron": "^33.3.0", "electron-builder": "^26.8.1", "electron-vite": "^2.3.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "prettier": "^3.3.0", "typescript": "^5.7.0", "vite": "^5.4.0", "vitest": "^2.1.0" }, "dependencies": { "@electron-toolkit/preload": "^3.0.2", "@electron-toolkit/utils": "^4.0.0", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@mui/icons-material": "^7.0.0", "@mui/material": "^7.0.0", "@nut-tree-fork/nut-js": "^4.2.6", "@rollup/rollup-win32-x64-msvc": "^4.60.1", "better-sqlite3": "^12.8.0", "drizzle-orm": "^0.45.2", "electron-audio-loopback": "^1.0.6", "electron-log": "^5.2.0", "electron-store": "^10.0.0", "nanoid": "^5.1.7", "node-record-lpcm16": "^1.0.1", "react": "^19.0.0", "react-dom": "^19.0.0", "uiohook-napi": "^1.5.5" } }