Bun/JSC 全量解析单文件大 JS 的 bytecode 和 JIT,17MB 产物导致 RSS 暴涨至 ~1GB(Node/V8 懒解析仅需 ~220MB)。启用代码分割后 Bun 按需加载 chunk,--version RSS 35MB,完整加载 ~500MB。 改动: - vite.config.ts: 移除 codeSplitting:false,添加 chunkFileNames - post-build.ts: 遍历 dist/ + dist/chunks/ 所有文件做 Bun patch - 新建 distRoot.ts 共享工具函数,统一路径定位逻辑 - ripgrep.ts/computerUse/setup.ts/claudeInChrome/setup.ts/updateCCB.ts: 用 distRoot 替换内联 import.meta.url 路径推算
51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import { buildComputerUseTools } from '@ant/computer-use-mcp'
|
|
import { join } from 'path'
|
|
import { buildMcpToolName } from '../../services/mcp/mcpStringUtils.js'
|
|
import type { ScopedMcpServerConfig } from '../../services/mcp/types.js'
|
|
|
|
import { isInBundledMode } from '../bundledMode.js'
|
|
import { distRoot } from '../distRoot.js'
|
|
import { CLI_CU_CAPABILITIES, COMPUTER_USE_MCP_SERVER_NAME } from './common.js'
|
|
import { getChicagoCoordinateMode } from './gates.js'
|
|
|
|
/**
|
|
* Build the dynamic MCP config + allowed tool names. Mirror of
|
|
* `setupClaudeInChrome`. The `mcp__computer-use__*` tools are added to
|
|
* `allowedTools` so they bypass the normal permission prompt — the package's
|
|
* `request_access` handles approval for the whole session.
|
|
*
|
|
* The MCP layer isn't ceremony: the API backend detects `mcp__computer-use__*`
|
|
* tool names and emits a CU availability hint into the system prompt
|
|
* (COMPUTER_USE_MCP_AVAILABILITY_HINT in the anthropic repo). Built-in tools
|
|
* with different names wouldn't trigger it. Cowork uses the same names for the
|
|
* same reason (apps/desktop/src/main/local-agent-mode/systemPrompt.ts:314).
|
|
*/
|
|
export function setupComputerUseMCP(): {
|
|
mcpConfig: Record<string, ScopedMcpServerConfig>
|
|
allowedTools: string[]
|
|
} {
|
|
const allowedTools = buildComputerUseTools(
|
|
CLI_CU_CAPABILITIES,
|
|
getChicagoCoordinateMode(),
|
|
).map(t => buildMcpToolName(COMPUTER_USE_MCP_SERVER_NAME, t.name))
|
|
|
|
// command/args are never spawned — client.ts intercepts by name and
|
|
// uses the in-process server. The config just needs to exist with
|
|
// type 'stdio' to hit the right branch. Mirrors Chrome's setup.
|
|
const args = isInBundledMode()
|
|
? ['--computer-use-mcp']
|
|
: [join(distRoot, 'cli.js'), '--computer-use-mcp']
|
|
|
|
return {
|
|
mcpConfig: {
|
|
[COMPUTER_USE_MCP_SERVER_NAME]: {
|
|
type: 'stdio',
|
|
command: process.execPath,
|
|
args,
|
|
scope: 'dynamic',
|
|
} as const,
|
|
},
|
|
allowedTools,
|
|
}
|
|
}
|