{
  "name": "CherryStudio",
  "version": "1.5.1",
  "private": true,
  "description": "A powerful AI assistant for producer.",
  "main": "./out/main/index.js",
  "author": "support@cherry-ai.com",
  "homepage": "https://github.com/CherryHQ/cherry-studio",
  "engines": {
    "node": ">=22.0.0"
  },
  "workspaces": {
    "packages": [
      "local",
      "packages/*"
    ],
    "installConfig": {
      "hoistingLimits": [
        "packages/database",
        "packages/mcp-trace/trace-core",
        "packages/mcp-trace/trace-node",
        "packages/mcp-trace/trace-web"
      ]
    }
  },
  "scripts": {
    "start": "electron-vite preview",
    "dev": "dotenv electron-vite dev",
    "debug": "electron-vite -- --inspect --sourcemap --remote-debugging-port=9222",
    "build": "npm run typecheck && electron-vite build",
    "build:check": "yarn typecheck && yarn check:i18n && yarn test",
    "build:unpack": "dotenv npm run build && electron-builder --dir",
    "build:win": "dotenv npm run build && electron-builder --win --x64 --arm64",
    "build:win:x64": "dotenv npm run build && electron-builder --win --x64",
    "build:win:arm64": "dotenv npm run build && electron-builder --win --arm64",
    "build:mac": "dotenv npm run build && electron-builder --mac --arm64 --x64",
    "build:mac:arm64": "dotenv npm run build && electron-builder --mac --arm64",
    "build:mac:x64": "dotenv npm run build && electron-builder --mac --x64",
    "build:linux": "dotenv npm run build && electron-builder --linux --x64 --arm64",
    "build:linux:arm64": "dotenv npm run build && electron-builder --linux --arm64",
    "build:linux:x64": "dotenv npm run build && electron-builder --linux --x64",
    "build:npm": "node scripts/build-npm.js",
    "release": "node scripts/version.js",
    "publish": "yarn build:check && yarn release patch push",
    "pulish:artifacts": "cd packages/artifacts && npm publish && cd -",
    "generate:agents": "yarn workspace @cherry-studio/database agents",
    "generate:icons": "electron-icon-builder --input=./build/logo.png --output=build",
    "analyze:renderer": "VISUALIZER_RENDERER=true yarn build",
    "analyze:main": "VISUALIZER_MAIN=true yarn build",
    "typecheck": "npm run typecheck:node && npm run typecheck:web",
    "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false",
    "typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false",
    "check:i18n": "node scripts/check-i18n.js",
    "sync:i18n": "node scripts/sync-i18n.js",
    "test": "vitest run --silent",
    "test:main": "vitest run --project main",
    "test:renderer": "vitest run --project renderer",
    "test:update": "yarn test:renderer --update",
    "test:coverage": "vitest run --coverage --silent",
    "test:ui": "vitest --ui",
    "test:watch": "vitest",
    "test:e2e": "yarn playwright test",
    "test:lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts",
    "test:scripts": "vitest scripts",
    "format": "prettier --write .",
    "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
    "prepare": "git config blame.ignoreRevsFile .git-blame-ignore-revs && husky"
  },
  "dependencies": {
    "@cherrystudio/pdf-to-img-napi": "^0.0.1",
    "@libsql/client": "0.14.0",
    "@libsql/win32-x64-msvc": "^0.4.7",
    "@strongtz/win32-arm64-msvc": "^0.4.7",
    "jsdom": "26.1.0",
    "node-stream-zip": "^1.15.0",
    "os-proxy-config": "^1.1.2",
    "pdfjs-dist": "4.10.38",
    "react-json-view": "^1.21.3",
    "selection-hook": "^1.0.7",
    "turndown": "7.2.0"
  },
  "devDependencies": {
    "@agentic/exa": "^7.3.3",
    "@agentic/searxng": "^7.3.3",
    "@agentic/tavily": "^7.3.3",
    "@ant-design/v5-patch-for-react-19": "^1.0.3",
    "@anthropic-ai/sdk": "^0.41.0",
    "@aws-sdk/client-s3": "^3.840.0",
    "@cherrystudio/embedjs": "^0.1.31",
    "@cherrystudio/embedjs-libsql": "^0.1.31",
    "@cherrystudio/embedjs-loader-csv": "^0.1.31",
    "@cherrystudio/embedjs-loader-image": "^0.1.31",
    "@cherrystudio/embedjs-loader-markdown": "^0.1.31",
    "@cherrystudio/embedjs-loader-msoffice": "^0.1.31",
    "@cherrystudio/embedjs-loader-pdf": "^0.1.31",
    "@cherrystudio/embedjs-loader-sitemap": "^0.1.31",
    "@cherrystudio/embedjs-loader-web": "^0.1.31",
    "@cherrystudio/embedjs-loader-xml": "^0.1.31",
    "@cherrystudio/embedjs-ollama": "^0.1.31",
    "@cherrystudio/embedjs-openai": "^0.1.31",
    "@codemirror/view": "^6.0.0",
    "@electron-toolkit/eslint-config-prettier": "^3.0.0",
    "@electron-toolkit/eslint-config-ts": "^3.0.0",
    "@electron-toolkit/preload": "^3.0.0",
    "@electron-toolkit/tsconfig": "^1.0.1",
    "@electron-toolkit/utils": "^3.0.0",
    "@electron/notarize": "^2.5.0",
    "@emotion/is-prop-valid": "^1.3.1",
    "@eslint-react/eslint-plugin": "^1.36.1",
    "@eslint/js": "^9.22.0",
    "@google/genai": "patch:@google/genai@npm%3A1.0.1#~/.yarn/patches/@google-genai-npm-1.0.1-e26f0f9af7.patch",
    "@hello-pangea/dnd": "^16.6.0",
    "@kangfenmao/keyv-storage": "^0.1.0",
    "@langchain/community": "^0.3.36",
    "@langchain/ollama": "^0.2.1",
    "@mistralai/mistralai": "^1.6.0",
    "@modelcontextprotocol/sdk": "^1.12.3",
    "@mozilla/readability": "^0.6.0",
    "@notionhq/client": "^2.2.15",
    "@opentelemetry/api": "^1.9.0",
    "@opentelemetry/core": "2.0.0",
    "@opentelemetry/exporter-trace-otlp-http": "^0.200.0",
    "@opentelemetry/sdk-trace-base": "^2.0.0",
    "@opentelemetry/sdk-trace-node": "^2.0.0",
    "@opentelemetry/sdk-trace-web": "^2.0.0",
    "@playwright/test": "^1.52.0",
    "@reduxjs/toolkit": "^2.2.5",
    "@shikijs/markdown-it": "^3.7.0",
    "@swc/plugin-styled-components": "^7.1.5",
    "@tanstack/react-query": "^5.27.0",
    "@tanstack/react-virtual": "^3.13.12",
    "@testing-library/dom": "^10.4.0",
    "@testing-library/jest-dom": "^6.6.3",
    "@testing-library/react": "^16.3.0",
    "@tryfabric/martian": "^1.2.4",
    "@types/diff": "^7",
    "@types/fs-extra": "^11",
    "@types/lodash": "^4.17.5",
    "@types/markdown-it": "^14",
    "@types/md5": "^2.3.5",
    "@types/node": "^18.19.9",
    "@types/pako": "^1.0.2",
    "@types/react": "^19.0.12",
    "@types/react-dom": "^19.0.4",
    "@types/react-infinite-scroll-component": "^5.0.0",
    "@types/react-window": "^1",
    "@types/tinycolor2": "^1",
    "@types/word-extractor": "^1",
    "@uiw/codemirror-extensions-langs": "^4.23.14",
    "@uiw/codemirror-themes-all": "^4.23.14",
    "@uiw/react-codemirror": "^4.23.14",
    "@vitejs/plugin-react-swc": "^3.9.0",
    "@vitest/browser": "^3.1.4",
    "@vitest/coverage-v8": "^3.1.4",
    "@vitest/ui": "^3.1.4",
    "@vitest/web-worker": "^3.1.4",
    "@viz-js/lang-dot": "^1.0.5",
    "@viz-js/viz": "^3.14.0",
    "@xyflow/react": "^12.4.4",
    "antd": "patch:antd@npm%3A5.24.7#~/.yarn/patches/antd-npm-5.24.7-356a553ae5.patch",
    "archiver": "^7.0.1",
    "async-mutex": "^0.5.0",
    "axios": "^1.7.3",
    "browser-image-compression": "^2.0.2",
    "code-inspector-plugin": "^0.20.14",
    "color": "^5.0.0",
    "country-flag-emoji-polyfill": "0.1.8",
    "dayjs": "^1.11.11",
    "dexie": "^4.0.8",
    "dexie-react-hooks": "^1.1.7",
    "diff": "^7.0.0",
    "docx": "^9.0.2",
    "dotenv-cli": "^7.4.2",
    "electron": "37.2.3",
    "electron-builder": "26.0.15",
    "electron-devtools-installer": "^3.2.0",
    "electron-store": "^8.2.0",
    "electron-updater": "6.6.4",
    "electron-vite": "4.0.0",
    "electron-window-state": "^5.0.3",
    "emittery": "^1.0.3",
    "emoji-picker-element": "^1.22.1",
    "epub": "patch:epub@npm%3A1.3.0#~/.yarn/patches/epub-npm-1.3.0-8325494ffe.patch",
    "eslint": "^9.22.0",
    "eslint-plugin-react-hooks": "^5.2.0",
    "eslint-plugin-simple-import-sort": "^12.1.1",
    "eslint-plugin-unused-imports": "^4.1.4",
    "fast-diff": "^1.3.0",
    "fast-xml-parser": "^5.2.0",
    "fetch-socks": "1.3.2",
    "franc-min": "^6.2.0",
    "fs-extra": "^11.2.0",
    "google-auth-library": "^9.15.1",
    "html-to-image": "^1.11.13",
    "husky": "^9.1.7",
    "i18next": "^23.11.5",
    "iconv-lite": "^0.6.3",
    "jaison": "^2.0.2",
    "jest-styled-components": "^7.2.0",
    "jschardet": "^3.1.4",
    "lint-staged": "^15.5.0",
    "lodash": "^4.17.21",
    "lru-cache": "^11.1.0",
    "lucide-react": "^0.487.0",
    "macos-release": "^3.4.0",
    "markdown-it": "^14.1.0",
    "mermaid": "^11.7.0",
    "mime": "^4.0.4",
    "motion": "^12.10.5",
    "notion-helper": "^1.3.22",
    "npx-scope-finder": "^1.2.0",
    "officeparser": "^4.2.0",
    "openai": "patch:openai@npm%3A5.1.0#~/.yarn/patches/openai-npm-5.1.0-0e7b3ccb07.patch",
    "p-queue": "^8.1.0",
    "playwright": "^1.52.0",
    "prettier": "^3.5.3",
    "prettier-plugin-sort-json": "^4.1.1",
    "proxy-agent": "^6.5.0",
    "rc-virtual-list": "^3.18.6",
    "react": "^19.0.0",
    "react-dom": "^19.0.0",
    "react-hotkeys-hook": "^4.6.1",
    "react-i18next": "^14.1.2",
    "react-infinite-scroll-component": "^6.1.0",
    "react-markdown": "^10.1.0",
    "react-redux": "^9.1.2",
    "react-router": "6",
    "react-router-dom": "6",
    "react-spinners": "^0.14.1",
    "react-window": "^1.8.11",
    "redux": "^5.0.1",
    "redux-persist": "^6.0.0",
    "reflect-metadata": "0.2.2",
    "rehype-katex": "^7.0.1",
    "rehype-mathjax": "^7.1.0",
    "rehype-raw": "^7.0.0",
    "remark-cjk-friendly": "^1.2.0",
    "remark-gfm": "^4.0.1",
    "remark-math": "^6.0.0",
    "remove-markdown": "^0.6.2",
    "rollup-plugin-visualizer": "^5.12.0",
    "sass": "^1.88.0",
    "shiki": "^3.7.0",
    "strict-url-sanitise": "^0.0.1",
    "string-width": "^7.2.0",
    "styled-components": "^6.1.11",
    "tar": "^7.4.3",
    "tiny-pinyin": "^1.3.2",
    "tokenx": "^1.1.0",
    "typescript": "^5.6.2",
    "undici": "6.21.2",
    "unified": "^11.0.5",
    "uuid": "^10.0.0",
    "vite": "6.2.6",
    "vitest": "^3.1.4",
    "webdav": "^5.8.0",
    "winston": "^3.17.0",
    "winston-daily-rotate-file": "^5.0.0",
    "word-extractor": "^1.0.4",
    "zipread": "^1.3.3"
  },
  "optionalDependencies": {
    "@cherrystudio/mac-system-ocr": "^0.2.2"
  },
  "resolutions": {
    "pdf-parse@npm:1.1.1": "patch:pdf-parse@npm%3A1.1.1#~/.yarn/patches/pdf-parse-npm-1.1.1-04a6109b2a.patch",
    "@langchain/openai@npm:^0.3.16": "patch:@langchain/openai@npm%3A0.3.16#~/.yarn/patches/@langchain-openai-npm-0.3.16-e525b59526.patch",
    "@langchain/openai@npm:>=0.1.0 <0.4.0": "patch:@langchain/openai@npm%3A0.3.16#~/.yarn/patches/@langchain-openai-npm-0.3.16-e525b59526.patch",
    "libsql@npm:^0.4.4": "patch:libsql@npm%3A0.4.7#~/.yarn/patches/libsql-npm-0.4.7-444e260fb1.patch",
    "openai@npm:^4.77.0": "patch:openai@npm%3A5.1.0#~/.yarn/patches/openai-npm-5.1.0-0e7b3ccb07.patch",
    "pkce-challenge@npm:^4.1.0": "patch:pkce-challenge@npm%3A4.1.0#~/.yarn/patches/pkce-challenge-npm-4.1.0-fbc51695a3.patch",
    "app-builder-lib@npm:26.0.13": "patch:app-builder-lib@npm%3A26.0.13#~/.yarn/patches/app-builder-lib-npm-26.0.13-a064c9e1d0.patch",
    "openai@npm:^4.87.3": "patch:openai@npm%3A5.1.0#~/.yarn/patches/openai-npm-5.1.0-0e7b3ccb07.patch",
    "app-builder-lib@npm:26.0.15": "patch:app-builder-lib@npm%3A26.0.15#~/.yarn/patches/app-builder-lib-npm-26.0.15-360e5b0476.patch",
    "@langchain/core@npm:^0.3.26": "patch:@langchain/core@npm%3A0.3.44#~/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch",
    "node-abi": "4.12.0",
    "undici": "6.21.2"
  },
  "packageManager": "yarn@4.9.1",
  "lint-staged": {
    "*.{js,jsx,ts,tsx,cjs,mjs,cts,mts}": [
      "prettier --write",
      "eslint --fix"
    ],
    "*.{json,md,yml,yaml,css,scss,html}": [
      "prettier --write"
    ]
  }
}
