| import type { |
| ComputerUseHostAdapter, |
| Logger, |
| } from '@ant/computer-use-mcp/types' |
| import { format } from 'util' |
| import { logForDebugging } from '../debug.js' |
| import { COMPUTER_USE_MCP_SERVER_NAME } from './common.js' |
| import { createCliExecutor } from './executor.js' |
| import { getChicagoEnabled, getChicagoSubGates } from './gates.js' |
| import { requireComputerUseSwift } from './swiftLoader.js' |
|
|
| class DebugLogger implements Logger { |
| silly(message: string, ...args: unknown[]): void { |
| logForDebugging(format(message, ...args), { level: 'debug' }) |
| } |
| debug(message: string, ...args: unknown[]): void { |
| logForDebugging(format(message, ...args), { level: 'debug' }) |
| } |
| info(message: string, ...args: unknown[]): void { |
| logForDebugging(format(message, ...args), { level: 'info' }) |
| } |
| warn(message: string, ...args: unknown[]): void { |
| logForDebugging(format(message, ...args), { level: 'warn' }) |
| } |
| error(message: string, ...args: unknown[]): void { |
| logForDebugging(format(message, ...args), { level: 'error' }) |
| } |
| } |
|
|
| let cached: ComputerUseHostAdapter | undefined |
|
|
| |
| |
| |
| |
| |
| |
| export function getComputerUseHostAdapter(): ComputerUseHostAdapter { |
| if (cached) return cached |
| cached = { |
| serverName: COMPUTER_USE_MCP_SERVER_NAME, |
| logger: new DebugLogger(), |
| executor: createCliExecutor({ |
| getMouseAnimationEnabled: () => getChicagoSubGates().mouseAnimation, |
| getHideBeforeActionEnabled: () => getChicagoSubGates().hideBeforeAction, |
| }), |
| ensureOsPermissions: async () => { |
| const cu = requireComputerUseSwift() |
| const accessibility = cu.tcc.checkAccessibility() |
| const screenRecording = cu.tcc.checkScreenRecording() |
| return accessibility && screenRecording |
| ? { granted: true } |
| : { granted: false, accessibility, screenRecording } |
| }, |
| isDisabled: () => !getChicagoEnabled(), |
| getSubGates: getChicagoSubGates, |
| |
| getAutoUnhideEnabled: () => true, |
|
|
| |
| |
| |
| |
| |
| |
| cropRawPatch: () => null, |
| } |
| return cached |
| } |
|
|