{ "name": "d3ro-voice-monorepo", "version": "1.3.5", "private": true, "description": "D3RO Voice — 멀티플랫폼 AI 음성 어시스턴트 (Monorepo)", "author": "D3RO", "license": "MIT", "workspaces": [ "apps/desktop", "apps/web", "apps/admin", "packages/*" ], "scripts": { "dev": "npm run dev --workspace=@d3ro/desktop", "build": "npm run build --workspace=@d3ro/desktop", "build:admin": "npm run build --workspace=@d3ro/admin", "build:all": "node scripts/ci/build-all.mjs", "ci": "node scripts/ci/build-all.mjs", "checksum": "node scripts/ci/generate-checksums.mjs", "version:check": "node scripts/ci/sync-version.mjs --check", "version:sync": "node scripts/ci/sync-version.mjs --write", "release:metadata": "node scripts/ci/verify-release-metadata.mjs", "release:metadata:test": "node scripts/ci/verify-release-metadata.mjs --self-test", "release:forgejo": "node scripts/ci/publish-forgejo-release.mjs", "release:forgejo:local": "node --env-file-if-exists=.env scripts/ci/publish-forgejo-release.mjs", "release:forgejo:check": "node scripts/ci/publish-forgejo-release.mjs --check", "release:tag": "node scripts/ci/create-release-tag.mjs", "release:portable:build": "node scripts/ci/build-portable.mjs", "release:portable:check": "node scripts/ci/publish-portable-release.mjs --check", "release:portable": "node --env-file-if-exists=.env scripts/ci/publish-portable-release.mjs", "release:secrets": "node --env-file-if-exists=.env scripts/ci/set-forgejo-secrets.mjs --write", "release:secrets:check": "node scripts/ci/set-forgejo-secrets.mjs --check", "security:secrets": "node scripts/ci/check-no-hardcoded-secrets.mjs", "security:secrets:test": "node scripts/ci/check-no-hardcoded-secrets.mjs --self-test", "check:design": "node scripts/ci/check-design-tokens.mjs", "check:design:test": "node scripts/ci/check-design-tokens.mjs --self-test", "test:e2e:red": "node server/supabase/tests/content-report-red.e2e.mjs", "release:mobile:boundary": "node scripts/ci/verify-mobile-release-boundary.mjs", "release:mobile:boundary:test": "node scripts/ci/verify-mobile-release-boundary.mjs --self-test", "release:mobile:config": "node scripts/ci/verify-mobile-release-config.mjs", "release:mobile:config:test": "node scripts/ci/verify-mobile-release-config.mjs --self-test", "release:mobile:build-config:test": "node scripts/ci/verify-mobile-build-config.mjs --self-test", "release:play:assets": "node scripts/ci/verify-play-store-assets.mjs", "release:play:assets:test": "node scripts/ci/verify-play-store-assets.mjs --self-test", "typecheck": "npm run typecheck --workspaces --if-present", "test": "npm run test --workspaces --if-present", "lint": "eslint apps/desktop apps/web apps/admin packages --ext .ts,.tsx --max-warnings=0", "format": "prettier --write \"**/*.{ts,tsx,css}\"", "typecheck:mobile": "npm --prefix apps/mobile-rn run typecheck", "lint:mobile": "npm --prefix apps/mobile-rn run lint", "test:mobile": "npm --prefix apps/mobile-rn test", "verify:all": "npm run typecheck && npm run typecheck:mobile && npm run lint && npm run lint:mobile && npm run test && npm run test:mobile && npm run check:design", "release:updater": "node --env-file-if-exists=.env scripts/ci/publish-updater-release.mjs", "release:updater:check": "node scripts/ci/publish-updater-release.mjs --check" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "prettier": "^3.3.0", "typescript": "^5.7.0" } }