* feat(websearch): implement search window functionality and enhance search service * feat(DefaultProvider): integrate @mozilla/readability for improved content parsing * Add LocalSearchProvider for web page scraping AI: Change `provider` from private to protected in BaseWebSearchProvider and implement LocalSearchProvider for web searching with browser-based content extraction. * Add web search provider management features Implement addWebSearchProvider function to prevent duplicates, automatically load default providers on initialization, fix LocalSearchProvider implementation, and update local provider identification logic. * Improve web search with specialized search engine parsers Add dedicated parsers for Google, Bing, and Baidu search results, replacing the generic URL extraction approach. Enhance page loading with proper wait mechanisms and window cleanup. Remove DuckDuckGo provider as it's no longer supported. * Simplify DefaultProvider to unimplemented placeholder * Remove default search engine from initial state * Improve web search providers config and display Add configuration for local search providers, remove empty apiKey fields, and enhance the UI by sorting providers alphabetically and showing whether they require an API key. * Add stderr logging for MCP servers * Make search window initially hidden
217 lines
8.3 KiB
JSON
217 lines
8.3 KiB
JSON
{
|
|
"name": "CherryStudio",
|
|
"version": "1.2.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",
|
|
"workspaces": {
|
|
"packages": [
|
|
"local",
|
|
"packages/*"
|
|
],
|
|
"installConfig": {
|
|
"hoistingLimits": [
|
|
"packages/database"
|
|
]
|
|
}
|
|
},
|
|
"scripts": {
|
|
"start": "electron-vite preview",
|
|
"dev": "electron-vite dev",
|
|
"build": "npm run typecheck && electron-vite build",
|
|
"build:check": "yarn test && yarn typecheck && yarn check:i18n",
|
|
"build:unpack": "dotenv npm run build && electron-builder --dir",
|
|
"build:win": "dotenv npm run build && electron-builder --win",
|
|
"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 electron-vite build && electron-builder --mac",
|
|
"build:mac:arm64": "dotenv electron-vite build && electron-builder --mac --arm64",
|
|
"build:mac:x64": "dotenv electron-vite build && electron-builder --mac --x64",
|
|
"build:linux": "dotenv electron-vite build && electron-builder --linux",
|
|
"build:linux:arm64": "dotenv electron-vite build && electron-builder --linux --arm64",
|
|
"build:linux:x64": "dotenv electron-vite 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",
|
|
"test": "npx -y tsx --test src/**/*.test.ts",
|
|
"format": "prettier --write .",
|
|
"lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
|
|
"postinstall": "electron-builder install-app-deps",
|
|
"prepare": "husky"
|
|
},
|
|
"dependencies": {
|
|
"@cherrystudio/embedjs": "^0.1.28",
|
|
"@cherrystudio/embedjs-libsql": "^0.1.28",
|
|
"@cherrystudio/embedjs-loader-csv": "^0.1.28",
|
|
"@cherrystudio/embedjs-loader-image": "^0.1.28",
|
|
"@cherrystudio/embedjs-loader-markdown": "^0.1.28",
|
|
"@cherrystudio/embedjs-loader-msoffice": "^0.1.28",
|
|
"@cherrystudio/embedjs-loader-pdf": "^0.1.28",
|
|
"@cherrystudio/embedjs-loader-sitemap": "^0.1.28",
|
|
"@cherrystudio/embedjs-loader-web": "^0.1.28",
|
|
"@cherrystudio/embedjs-loader-xml": "^0.1.28",
|
|
"@cherrystudio/embedjs-openai": "^0.1.28",
|
|
"@electron-toolkit/utils": "^3.0.0",
|
|
"@electron/notarize": "^2.5.0",
|
|
"@google/generative-ai": "^0.24.0",
|
|
"@langchain/community": "^0.3.36",
|
|
"@mozilla/readability": "^0.6.0",
|
|
"@notionhq/client": "^2.2.15",
|
|
"@strongtz/win32-arm64-msvc": "^0.4.7",
|
|
"@tryfabric/martian": "^1.2.4",
|
|
"@types/react-infinite-scroll-component": "^5.0.0",
|
|
"@xyflow/react": "^12.4.4",
|
|
"adm-zip": "^0.5.16",
|
|
"color": "^5.0.0",
|
|
"diff": "^7.0.0",
|
|
"docx": "^9.0.2",
|
|
"electron-log": "^5.1.5",
|
|
"electron-store": "^8.2.0",
|
|
"electron-updater": "^6.3.9",
|
|
"electron-window-state": "^5.0.3",
|
|
"epub": "patch:epub@npm%3A1.3.0#~/.yarn/patches/epub-npm-1.3.0-8325494ffe.patch",
|
|
"fast-xml-parser": "^5.0.9",
|
|
"fetch-socks": "^1.3.2",
|
|
"fs-extra": "^11.2.0",
|
|
"got-scraping": "^4.1.1",
|
|
"jsdom": "^26.0.0",
|
|
"markdown-it": "^14.1.0",
|
|
"officeparser": "^4.1.1",
|
|
"proxy-agent": "^6.5.0",
|
|
"tar": "^7.4.3",
|
|
"tiny-pinyin": "^1.3.2",
|
|
"turndown": "^7.2.0",
|
|
"turndown-plugin-gfm": "^1.0.2",
|
|
"undici": "^7.4.0",
|
|
"webdav": "^5.8.0",
|
|
"zipread": "^1.3.3"
|
|
},
|
|
"devDependencies": {
|
|
"@agentic/exa": "^7.3.3",
|
|
"@agentic/searxng": "^7.3.3",
|
|
"@agentic/tavily": "^7.3.3",
|
|
"@analytics/google-analytics": "^1.1.0",
|
|
"@ant-design/v5-patch-for-react-19": "^1.0.3",
|
|
"@anthropic-ai/sdk": "^0.38.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",
|
|
"@emotion/is-prop-valid": "^1.3.1",
|
|
"@eslint-react/eslint-plugin": "^1.36.1",
|
|
"@eslint/js": "^9.22.0",
|
|
"@google/genai": "^0.4.0",
|
|
"@hello-pangea/dnd": "^16.6.0",
|
|
"@kangfenmao/keyv-storage": "^0.1.0",
|
|
"@modelcontextprotocol/sdk": "^1.9.0",
|
|
"@notionhq/client": "^2.2.15",
|
|
"@reduxjs/toolkit": "^2.2.5",
|
|
"@tavily/core": "patch:@tavily/core@npm%3A0.3.1#~/.yarn/patches/@tavily-core-npm-0.3.1-fe69bf2bea.patch",
|
|
"@tryfabric/martian": "^1.2.4",
|
|
"@types/adm-zip": "^0",
|
|
"@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/tinycolor2": "^1",
|
|
"@vitejs/plugin-react": "^4.2.1",
|
|
"analytics": "^0.8.16",
|
|
"antd": "^5.22.5",
|
|
"applescript": "^1.0.0",
|
|
"axios": "^1.7.3",
|
|
"babel-plugin-styled-components": "^2.1.4",
|
|
"browser-image-compression": "^2.0.2",
|
|
"dayjs": "^1.11.11",
|
|
"dexie": "^4.0.8",
|
|
"dexie-react-hooks": "^1.1.7",
|
|
"dotenv-cli": "^7.4.2",
|
|
"electron": "31.7.6",
|
|
"electron-builder": "^24.13.3",
|
|
"electron-devtools-installer": "^3.2.0",
|
|
"electron-icon-builder": "^2.0.1",
|
|
"electron-vite": "^2.3.0",
|
|
"emittery": "^1.0.3",
|
|
"emoji-picker-element": "^1.22.1",
|
|
"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",
|
|
"html-to-image": "^1.11.13",
|
|
"husky": "^9.1.7",
|
|
"i18next": "^23.11.5",
|
|
"lint-staged": "^15.5.0",
|
|
"lodash": "^4.17.21",
|
|
"lru-cache": "^11.1.0",
|
|
"mime": "^4.0.4",
|
|
"npx-scope-finder": "^1.2.0",
|
|
"openai": "patch:openai@npm%3A4.87.3#~/.yarn/patches/openai-npm-4.87.3-2b30a7685f.patch",
|
|
"p-queue": "^8.1.0",
|
|
"prettier": "^3.5.3",
|
|
"rc-virtual-list": "^3.18.5",
|
|
"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": "^9.0.1",
|
|
"react-redux": "^9.1.2",
|
|
"react-router": "6",
|
|
"react-router-dom": "6",
|
|
"react-spinners": "^0.14.1",
|
|
"redux": "^5.0.1",
|
|
"redux-persist": "^6.0.0",
|
|
"rehype-katex": "^7.0.1",
|
|
"rehype-mathjax": "^7.0.0",
|
|
"rehype-raw": "^7.0.0",
|
|
"remark-cjk-friendly": "^1.1.0",
|
|
"remark-gfm": "^4.0.0",
|
|
"remark-math": "^6.0.0",
|
|
"rollup-plugin-visualizer": "^5.12.0",
|
|
"sass": "^1.77.2",
|
|
"shiki": "^3.2.1",
|
|
"string-width": "^7.2.0",
|
|
"styled-components": "^6.1.11",
|
|
"tinycolor2": "^1.6.0",
|
|
"tokenx": "^0.4.1",
|
|
"typescript": "^5.6.2",
|
|
"uuid": "^10.0.0",
|
|
"vite": "^5.0.12"
|
|
},
|
|
"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",
|
|
"node-gyp": "^9.1.0",
|
|
"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%3A4.87.3#~/.yarn/patches/openai-npm-4.87.3-2b30a7685f.patch",
|
|
"pkce-challenge@npm:^4.1.0": "patch:pkce-challenge@npm%3A4.1.0#~/.yarn/patches/pkce-challenge-npm-4.1.0-fbc51695a3.patch"
|
|
},
|
|
"packageManager": "yarn@4.6.0",
|
|
"lint-staged": {
|
|
"*.{js,jsx,ts,tsx,cjs,mjs,cts,mts}": [
|
|
"prettier --write",
|
|
"eslint --fix"
|
|
],
|
|
"*.{json,md,yml,yaml,css,scss,html}": [
|
|
"prettier --write"
|
|
]
|
|
}
|
|
}
|