mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-18 13:56:25 +08:00
* ✨ feat: add CDP browser MCP server * ♻️ refactor: add navigation timeout for browser cdp * 🐛 fix: reuse window for execute and add debugger logging * ✨ feat: add show option and multiline execute for browser cdp * ✨ feat: support multiple sessions for browser cdp * ♻️ refactor: add LRU and idle cleanup for browser cdp sessions * Refactor browser-cdp for readability and set Firefox UA * 🐛 fix: type electron mock for cdp tests * ♻️ refactor: rename browser_cdp MCP server to browser Simplify the MCP server name from @cherry/browser-cdp to just browser for cleaner tool naming in the MCP protocol. * ✨ feat: add fetch tool to browser MCP server Add a new `fetch` tool that uses the CDP-controlled browser to fetch URLs and return content in various formats (html, txt, markdown, json). Also ignore .conductor folder in biome and eslint configs. * ♻️ refactor: split browser MCP server into modular folder structure Reorganize browser.ts (525 lines) into browser/ folder with separate files for better maintainability. Each tool now has its own file with schema, definition, and handler. * ♻️ refactor: use switch statement in browser server request handler * ♻️ refactor: extract helpers and use handler registry pattern - Add successResponse/errorResponse helpers in tools/utils.ts - Add closeWindow helper to consolidate window cleanup logic - Add ensureDebuggerAttached helper to consolidate debugger setup - Add toolHandlers map for registry-based handler lookup - Simplify server.ts to use dynamic handler dispatch * 🐛 fix: improve browser MCP server robustness - Add try-catch for JSON.parse in fetch() to handle invalid JSON gracefully - Add Zod schema validation to reset tool for consistency with other tools - Fix memory leak in open() by ensuring event listeners cleanup on timeout - Add JSDoc comments for key methods and classes * ♻️ refactor: rename browser MCP to @cherry/browser Follow naming convention of other builtin MCP servers. * 🌐 i18n: translate pending strings across 8 locales Translate all "[to be translated]" markers including: - CDP browser MCP server description (all 8 locales) - "Extra High" reasoning chain length option (6 locales) - Git Bash configuration strings (el-gr, ja-jp)
102 lines
2.5 KiB
Plaintext
102 lines
2.5 KiB
Plaintext
{
|
|
"$schema": "https://biomejs.dev/schemas/2.2.4/schema.json",
|
|
"assist": {
|
|
// to sort json
|
|
"actions": {
|
|
"source": {
|
|
"organizeImports": "on",
|
|
"useSortedKeys": {
|
|
"level": "on",
|
|
"options": {
|
|
"sortOrder": "lexicographic"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"enabled": true,
|
|
"includes": ["**/*.json", "!*.json", "!**/package.json", "!coverage/**"]
|
|
},
|
|
"css": {
|
|
"formatter": {
|
|
"quoteStyle": "single"
|
|
}
|
|
},
|
|
"files": {
|
|
"ignoreUnknown": false,
|
|
"includes": ["**", "!**/.claude/**", "!**/.vscode/**", "!**/.conductor/**"],
|
|
"maxSize": 2097152
|
|
},
|
|
"formatter": {
|
|
"attributePosition": "auto",
|
|
"bracketSameLine": false,
|
|
"bracketSpacing": true,
|
|
"enabled": true,
|
|
"expand": "auto",
|
|
"formatWithErrors": true,
|
|
"includes": [
|
|
"**",
|
|
"!out/**",
|
|
"!**/dist/**",
|
|
"!build/**",
|
|
"!.yarn/**",
|
|
"!.github/**",
|
|
"!.husky/**",
|
|
"!.vscode/**",
|
|
"!*.yaml",
|
|
"!*.yml",
|
|
"!*.mjs",
|
|
"!*.cjs",
|
|
"!*.md",
|
|
"!*.json",
|
|
"!src/main/integration/**",
|
|
"!**/tailwind.css",
|
|
"!**/package.json"
|
|
],
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineEnding": "lf",
|
|
"lineWidth": 120,
|
|
"useEditorconfig": true
|
|
},
|
|
"html": { "formatter": { "selfCloseVoidElements": "always" } },
|
|
"javascript": {
|
|
"formatter": {
|
|
"arrowParentheses": "always",
|
|
"attributePosition": "auto",
|
|
// To minimize changes in this PR as much as possible, it's set to true. However, setting it to false would make it more convenient to add attributes at the end.
|
|
"bracketSameLine": true,
|
|
"bracketSpacing": true,
|
|
"jsxQuoteStyle": "double",
|
|
"quoteProperties": "asNeeded",
|
|
"quoteStyle": "single",
|
|
"semicolons": "asNeeded",
|
|
"trailingCommas": "none"
|
|
}
|
|
},
|
|
"json": {
|
|
"parser": {
|
|
"allowComments": true
|
|
}
|
|
},
|
|
"linter": {
|
|
"enabled": true,
|
|
"includes": ["!**/tailwind.css", "src/renderer/**/*.{tsx,ts}"],
|
|
// only enable sorted tailwind css rule. used as formatter instead of linter
|
|
"rules": {
|
|
"nursery": {
|
|
// to sort tailwind css classes
|
|
"useSortedClasses": {
|
|
"fix": "safe",
|
|
"level": "warn",
|
|
"options": {
|
|
"functions": ["cn"]
|
|
}
|
|
}
|
|
},
|
|
"recommended": false,
|
|
"suspicious": "off"
|
|
}
|
|
},
|
|
"vcs": { "clientKind": "git", "enabled": false, "useIgnoreFile": false }
|
|
}
|