mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-26 03:31:24 +08:00
commit 97d251569690462763810270ad850ad6b0057ac9
Author: kangfenmao <kangfenmao@qq.com>
Date: Mon Mar 17 10:24:43 2025 +0800
feat: refactor IPC handlers for binary management and update localization strings
- Simplified IPC handlers for checking binary existence and retrieving binary paths by removing unnecessary await statements.
- Updated localization strings in English, Japanese, Russian, Simplified Chinese, and Traditional Chinese to change "Install Dependencies" to "Install".
- Removed the MCPSettings component, replacing it with a new InstallNpxUv component for better management of binary installations.
commit d0f6039c7659a0f4cc97555434999c731ea07f9f
Author: Vaayne <liu.vaayne@gmail.com>
Date: Sun Mar 16 23:52:18 2025 +0800
feat: enhance showAddModal to pre-fill form with server details
commit dde8253dc8bdffb482b9af19a07bc89886a19d3a
Author: Vaayne <liu.vaayne@gmail.com>
Date: Sun Mar 16 23:27:17 2025 +0800
feat: add binary management APIs and enhance MCP service for dependency installation
commit d8fda4b7b0e238097f1811850517bd56fe0de0df
Author: Vaayne <liu.vaayne@gmail.com>
Date: Sun Mar 16 21:57:34 2025 +0800
fix: improve error logging in MCPService and streamline tool call response handling in OpenAIProvider
commit e7af2085a66989d9be546701e4f5308e1008cb18
Author: Vaayne <liu.vaayne@gmail.com>
Date: Sun Mar 16 15:14:32 2025 +0800
fix: lint
commit 2ef7d16298a1270df26974158140015b8cbd91bc
Author: Vaayne <liu.vaayne@gmail.com>
Date: Sat Mar 15 21:11:26 2025 +0800
feat: implement uv binary installation script and integrate with MCP service
commit d318b4e5fc8b506e6d4b08490a9e7ceffe9add80
Author: Vaayne <liu.vaayne@gmail.com>
Date: Sat Mar 15 20:28:58 2025 +0800
feat: add uv binary installation script and enhance MCP service command handling
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { spawn } from 'child_process'
|
|
import log from 'electron-log'
|
|
import fs from 'fs'
|
|
import os from 'os'
|
|
import path from 'path'
|
|
|
|
import { getResourcePath } from '.'
|
|
|
|
export function runInstallScript(scriptPath: string): Promise<void> {
|
|
return new Promise<void>((resolve, reject) => {
|
|
const installScriptPath = path.join(getResourcePath(), 'scripts', scriptPath)
|
|
log.info(`Running script at: ${installScriptPath}`)
|
|
|
|
const nodeProcess = spawn(process.execPath, [installScriptPath], {
|
|
env: { ...process.env, ELECTRON_RUN_AS_NODE: '1' }
|
|
})
|
|
|
|
nodeProcess.stdout.on('data', (data) => {
|
|
log.info(`Script output: ${data}`)
|
|
})
|
|
|
|
nodeProcess.stderr.on('data', (data) => {
|
|
log.error(`Script error: ${data}`)
|
|
})
|
|
|
|
nodeProcess.on('close', (code) => {
|
|
if (code === 0) {
|
|
log.info('Script completed successfully')
|
|
resolve()
|
|
} else {
|
|
log.error(`Script exited with code ${code}`)
|
|
reject(new Error(`Process exited with code ${code}`))
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
export function getBinaryPath(name: string): string {
|
|
const binariesDir = path.join(os.homedir(), '.cherrystudio', 'bin')
|
|
let cmd = path.join(binariesDir, name)
|
|
cmd = process.platform === 'win32' ? `${cmd}.exe` : cmd
|
|
return cmd
|
|
}
|
|
|
|
export function isBinaryExists(name: string): Promise<boolean> {
|
|
return new Promise((resolve) => {
|
|
const cmd = getBinaryPath(name)
|
|
resolve(fs.existsSync(cmd))
|
|
})
|
|
}
|