package.json 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. {
  2. "name": "qmai",
  3. "private": true,
  4. "version": "3.2.1",
  5. "license": "GPL-3.0-or-later",
  6. "type": "module",
  7. "scripts": {
  8. "dev": "vite",
  9. "typecheck": "tsc --build --pretty",
  10. "build": "npm run typecheck && vite build",
  11. "preview": "vite preview",
  12. "test": "npm run test:mocks && npm run test:llm",
  13. "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'",
  14. "lint:character-aura": "node scripts/lint-character-aura.mjs",
  15. "test:llm": "vitest run real-llm --no-file-parallelism --reporter=verbose",
  16. "tauri": "tauri",
  17. "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\"",
  18. "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\""
  19. },
  20. "dependencies": {
  21. "@base-ui/react": "^1.7.0",
  22. "@dnd-kit/core": "^6.3.1",
  23. "@dnd-kit/sortable": "^8.0.0",
  24. "@dnd-kit/utilities": "^3.2.2",
  25. "@fontsource-variable/geist": "^5.3.0",
  26. "@milkdown/kit": "^7.22.0",
  27. "@milkdown/react": "^7.22.1",
  28. "@milkdown/theme-nord": "^7.22.1",
  29. "@react-sigma/core": "^5.0.6",
  30. "@sigma/edge-curve": "^3.1.0",
  31. "@tailwindcss/vite": "^4.3.3",
  32. "@tauri-apps/api": "^2.11.1",
  33. "@tauri-apps/plugin-dialog": "^2.7.2",
  34. "@tauri-apps/plugin-http": "^2.5.9",
  35. "@tauri-apps/plugin-opener": "^2.5.4",
  36. "@tauri-apps/plugin-store": "^2.4.4",
  37. "@tauri-apps/plugin-updater": "^2.10.1",
  38. "class-variance-authority": "^0.7.1",
  39. "clsx": "^2.1.1",
  40. "graphology": "^0.26.0",
  41. "graphology-communities-louvain": "^2.0.2",
  42. "graphology-layout-forceatlas2": "^0.10.1",
  43. "i18next": "^26.3.6",
  44. "js-yaml": "^4.3.1",
  45. "jsonrepair": "^3.15.0",
  46. "katex": "^0.16.47",
  47. "lucide-react": "^1.31.0",
  48. "mermaid": "^11.16.1",
  49. "opencc-js": "^1.4.1",
  50. "pangu": "^9.1.0",
  51. "pinyin-pro": "^3.29.1",
  52. "react": "^19.2.8",
  53. "react-dom": "^19.2.8",
  54. "react-i18next": "^17.0.11",
  55. "react-markdown": "^10.1.0",
  56. "react-resizable-panels": "^4.12.2",
  57. "rehype-katex": "^7.0.1",
  58. "remark-gfm": "^4.0.1",
  59. "remark-math": "^6.0.0",
  60. "shadcn": "^4.18.0",
  61. "sigma": "^3.0.3",
  62. "tailwind-merge": "^3.6.0",
  63. "tailwindcss": "^4.3.3",
  64. "tw-animate-css": "^1.4.0",
  65. "zustand": "^5.0.15"
  66. },
  67. "devDependencies": {
  68. "@tauri-apps/cli": "^2.11.4",
  69. "@types/js-yaml": "^4.0.9",
  70. "@types/node": "^24.13.3",
  71. "@types/react": "^19.2.18",
  72. "@types/react-dom": "^19.2.4",
  73. "@vitejs/plugin-react": "^6.0.5",
  74. "fast-check": "^4.9.0",
  75. "jsdom": "^29.1.1",
  76. "typescript": "^5.9.3",
  77. "vite": "^8.2.1",
  78. "vitest": "^4.1.10"
  79. }
  80. }