{ "name": "qmai", "private": true, "version": "3.2.7", "license": "GPL-3.0-or-later", "type": "module", "scripts": { "dev": "vite", "typecheck": "tsc --build --pretty", "build": "npm run typecheck && vite build", "preview": "vite preview", "test": "npm run test:mocks && npm run test:llm", "test:mocks": "node scripts/lint-character-aura.mjs && vitest run --exclude='**/*.real-llm.test.ts' --exclude='**/.worktrees/**' --exclude='**/.codex-temp/**' --exclude='**/superpowers-main/**' --exclude='**/SKILL/**' --exclude='**/superpowers/**' --exclude='**/nul'", "lint:character-aura": "node scripts/lint-character-aura.mjs", "test:llm": "vitest run real-llm --no-file-parallelism --reporter=verbose", "tauri": "tauri", "build:portable": "powershell -NoProfile -ExecutionPolicy Bypass -Command \"$env:CARGO_PROFILE_RELEASE_LTO='false'; $env:CARGO_PROFILE_RELEASE_CODEGEN_UNITS='16'; $env:CARGO_PROFILE_RELEASE_OPT_LEVEL='1'; npx.cmd tauri build --no-bundle; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; node scripts/build-portable.mjs\"", "build:github-release": "powershell -NoProfile -ExecutionPolicy Bypass -Command \"if (-not $env:TAURI_SIGNING_PRIVATE_KEY_PATH) { $env:TAURI_SIGNING_PRIVATE_KEY_PATH = Join-Path $env:USERPROFILE '.tauri\\qmai-updater.key' }; if (-not (Test-Path $env:TAURI_SIGNING_PRIVATE_KEY_PATH)) { throw '缺少 TAURI_SIGNING_PRIVATE_KEY_PATH 对应的签名私钥文件' }; if ($null -eq $env:TAURI_SIGNING_PRIVATE_KEY_PASSWORD) { $env:TAURI_SIGNING_PRIVATE_KEY_PASSWORD = '' }; $env:CARGO_PROFILE_RELEASE_LTO='false'; $env:CARGO_PROFILE_RELEASE_CODEGEN_UNITS='16'; $env:CARGO_PROFILE_RELEASE_OPT_LEVEL='1'; npx tauri build; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; node scripts/build-portable.mjs; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; node scripts/prepare-github-release.mjs\"" }, "dependencies": { "@base-ui/react": "^1.7.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@milkdown/kit": "^7.22.0", "@milkdown/react": "^7.22.1", "@milkdown/theme-nord": "^7.22.1", "@react-sigma/core": "^5.0.6", "@sigma/edge-curve": "^3.1.0", "@tailwindcss/vite": "^4.3.3", "@tauri-apps/api": "^2.11.1", "@tauri-apps/plugin-dialog": "^2.7.2", "@tauri-apps/plugin-http": "^2.5.9", "@tauri-apps/plugin-opener": "^2.5.4", "@tauri-apps/plugin-store": "^2.4.4", "@tauri-apps/plugin-updater": "^2.10.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "diff": "^9.0.0", "graphology": "^0.26.0", "graphology-communities-louvain": "^2.0.2", "graphology-layout-forceatlas2": "^0.10.1", "i18next": "^26.3.6", "js-yaml": "^4.3.1", "jsonrepair": "^3.15.0", "katex": "^0.16.47", "lucide-react": "^1.31.0", "mermaid": "^11.16.1", "opencc-js": "^1.4.1", "pangu": "^9.1.0", "pinyin-pro": "^3.29.1", "react": "^19.2.8", "react-diff-viewer-continued": "^4.4.0", "react-dom": "^19.2.8", "react-i18next": "^17.0.11", "react-markdown": "^10.1.0", "react-resizable-panels": "^4.12.2", "rehype-katex": "^7.0.1", "remark-gfm": "^4.0.1", "remark-math": "^6.0.0", "shadcn": "^4.18.0", "sigma": "^3.0.3", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.3", "tw-animate-css": "^1.4.0", "zustand": "^5.0.15" }, "devDependencies": { "@tauri-apps/cli": "^2.11.4", "@types/js-yaml": "^4.0.9", "@types/node": "^24.13.3", "@types/react": "^19.2.18", "@types/react-dom": "^19.2.4", "@vitejs/plugin-react": "^6.0.5", "iconv-lite": "^0.7.3", "jsdom": "^29.1.1", "typescript": "^5.9.3", "vite": "^8.2.1", "vitest": "^4.1.10" } }