{ "name": "genshin-artifact-assistant", "version": "0.1.0", "author": "Bao", "private": true, "description": "Local Windows assistant for scanning Genshin artifacts and suggesting no-brainer builds.", "main": "dist-electron/electron/main.js", "type": "module", "scripts": { "predev": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\kill-stale-instances.ps1 && tsc -p tsconfig.electron.json && copy electron\\preload.cjs dist-electron\\electron\\preload.cjs", "dev": "concurrently -k \"vite --host 127.0.0.1\" \"wait-on tcp:5173 && cross-env VITE_DEV_SERVER_URL=http://127.0.0.1:5173 electron .\"", "dev:web": "vite --host 127.0.0.1", "dev:admin": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\dev-admin.ps1 -ProjectRoot .", "build": "tsc && vite build && tsc -p tsconfig.electron.json && copy electron\\\\preload.cjs dist-electron\\\\electron\\\\preload.cjs", "icon:build": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\generate-app-icon.ps1", "package:dir": "npm run icon:build && npm run build && npm run helper:build && cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --dir --win", "package:verify:static": "node scripts/verify-packaged-app.mjs --static", "package:verify": "node scripts/verify-packaged-app.mjs --input=outputs/dist/win-unpacked", "package:offline-check": "npm run package:dir && npm run package:verify", "package:live:inspect": "node scripts/run-packaged-live-acceptance.mjs --mode=inspect --view=inventory", "package:live:scan5": "node scripts/run-packaged-live-acceptance.mjs --mode=scan5 --view=inventory", "package:live:ui-scan5": "node scripts/run-packaged-live-acceptance.mjs --mode=ui-scan5 --view=scan", "package:live:ui-row1": "node scripts/run-packaged-live-acceptance.mjs --mode=ui-scan-row1 --view=scan", "package:live:ui-stream20": "node scripts/run-packaged-live-acceptance.mjs --mode=ui-stream20 --view=scan", "package:live:ui-full-inventory": "node scripts/run-packaged-live-acceptance.mjs --mode=ui-full-inventory --view=scan", "package:live:builds": "node scripts/run-packaged-builds-acceptance.mjs", "acceptance:offline": "node scripts/run-offline-acceptance.mjs", "dev-cleanup:test": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\kill-stale-instances.ps1 -SelfTest", "preview": "vite preview --host 127.0.0.1", "start": "electron .", "lint": "tsc --noEmit", "test": "vitest run", "eval": "vitest run src/eval/ocrEval.test.ts", "eval:review-candidates": "node scripts/export-review-eval-candidates.cjs", "eval:prepare-confirmed": "node scripts/prepare-confirmed-review-case.cjs", "scan:soak": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\live-soak.ps1", "scan:goal": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\live-soak.ps1 -GoalRun", "scan:goal:validated": "npm run scan:live:preflight && npm run scan:goal && npm run scan:assessment:validate -- --latest --summary", "scan:goal:validated:wait": "npm run scan:live:preflight:wait && npm run scan:goal && npm run scan:assessment:validate -- --latest --summary", "scan:iterate": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\live-soak.ps1 -Limits 20 -BenchmarkOcr", "scan:iterate:validated": "npm run scan:live:preflight && npm run scan:iterate && npm run scan:assessment:validate -- --latest --summary --limit=20", "scan:iterate:validated:wait": "npm run scan:live:preflight:wait && npm run scan:iterate && npm run scan:assessment:validate -- --latest --summary --limit=20", "scan:repeatability": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\live-soak.ps1 -RepeatabilityRun -ScanEngine current", "scan:repeatability:wait": "npm run scan:live:preflight:wait && npm run scan:repeatability && npm run scan:assessment:validate -- --latest --summary --limit=100 --expect-winner=current", "scan:live:preflight": "node scripts/live-preflight.cjs", "scan:live:preflight:wait": "node scripts/live-preflight.cjs --wait=120", "scan:assessment:test": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\live-soak.ps1 -SelfTestAssessment", "scan:assessment:validate": "node scripts/validate-scan-assessment.cjs", "scan:native:smoke": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\native-live-smoke.ps1", "scan:native:smoke:5": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\native-live-smoke.ps1 -Limit 5", "scan:native:replay": "vite-node scripts/replay-native-results.ts", "scan:native:analyze-review": "vite-node scripts/analyze-native-review.ts", "scan:native:validate:saved": "vite-node scripts/validate-saved-native-runs.ts", "helper:test": "dotnet run --project native/input-helper-tests/InputHelper.Tests.csproj -c Release", "helper:build": "dotnet publish native/input-helper/InputHelper.csproj -c Release -o native/input-helper/bin/publish", "data:genshin": "node scripts/generate-genshin-data.cjs" }, "dependencies": { "@vitejs/plugin-react": "^4.3.4", "genshin-db": "^5.2.12", "lucide-react": "^0.468.0", "react": "^18.3.1", "react-dom": "^18.3.1", "tesseract.js": "^7.0.0", "vite": "^6.0.3" }, "devDependencies": { "@electron/asar": "^4.2.0", "@types/node": "^22.10.2", "@types/react": "^18.3.17", "@types/react-dom": "^18.3.5", "concurrently": "^9.1.0", "cross-env": "^7.0.3", "electron": "^43.1.0", "electron-builder": "^26.15.3", "typescript": "^5.7.2", "vite-node": "^3.2.4", "vitest": "^4.1.10", "wait-on": "^8.0.1" }, "build": { "appId": "local.genshin.artifact-assistant", "productName": "Genshin Artifact Assistant", "directories": { "output": "outputs/dist" }, "files": [ "dist/**/*", "dist-electron/**/*", "package.json" ], "extraResources": [ { "from": "native/input-helper/bin/publish", "to": "input-helper", "filter": [ "**/*" ] }, { "from": "data/ik-inventorylists", "to": "ik-inventorylists", "filter": [ "**/*" ] } ], "win": { "icon": "build/icon.png", "target": "nsis", "requestedExecutionLevel": "requireAdministrator" } } }