mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-17 13:55:50 +00:00
Remove macOS-only guards so Computer Use works cross-platform: - main.tsx: allow CHICAGO_MCP on any known platform (not just macos) - swiftLoader.ts: remove darwin-only throw, let the backend handle it - computer-use-input: dispatch to darwin/win32/linux backends - computer-use-swift: rename loadDarwin→loadBackend, dispatch all platforms Co-authored-by: yi7503 <yi7503@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
/**
|
|
* @ant/computer-use-swift — macOS display, apps, and screenshot (Swift native)
|
|
*
|
|
* This package wraps the macOS-only Swift .node native module.
|
|
* For Windows/Linux, use src/utils/computerUse/platforms/ instead.
|
|
*/
|
|
|
|
export type {
|
|
DisplayGeometry,
|
|
PrepareDisplayResult,
|
|
AppInfo,
|
|
InstalledApp,
|
|
RunningApp,
|
|
ScreenshotResult,
|
|
ResolvePrepareCaptureResult,
|
|
WindowDisplayInfo,
|
|
} from './backends/darwin.js'
|
|
|
|
import type { ResolvePrepareCaptureResult } from './backends/darwin.js'
|
|
|
|
function loadBackend() {
|
|
try {
|
|
if (process.platform === 'darwin') {
|
|
return require('./backends/darwin.js')
|
|
} else if (process.platform === 'win32') {
|
|
return require('./backends/win32.js')
|
|
} else if (process.platform === 'linux') {
|
|
return require('./backends/linux.js')
|
|
}
|
|
} catch {
|
|
return null
|
|
}
|
|
return null
|
|
}
|
|
|
|
const backend = loadBackend()
|
|
|
|
export class ComputerUseAPI {
|
|
apps = backend?.apps ?? {
|
|
async prepareDisplay() { return { activated: '', hidden: [] } },
|
|
async previewHideSet() { return [] },
|
|
async findWindowDisplays(ids: string[]) { return ids.map((b: string) => ({ bundleId: b, displayIds: [] as number[] })) },
|
|
async appUnderPoint() { return null },
|
|
async listInstalled() { return [] },
|
|
iconDataUrl() { return null },
|
|
listRunning() { return [] },
|
|
async open() { throw new Error('@ant/computer-use-swift: macOS only') },
|
|
async unhide() {},
|
|
}
|
|
|
|
display = backend?.display ?? {
|
|
getSize() { throw new Error('@ant/computer-use-swift: macOS only') },
|
|
listAll() { throw new Error('@ant/computer-use-swift: macOS only') },
|
|
}
|
|
|
|
screenshot = backend?.screenshot ?? {
|
|
async captureExcluding() { throw new Error('@ant/computer-use-swift: macOS only') },
|
|
async captureRegion() { throw new Error('@ant/computer-use-swift: macOS only') },
|
|
}
|
|
|
|
async resolvePrepareCapture(
|
|
allowedBundleIds: string[],
|
|
_surrogateHost: string,
|
|
quality: number,
|
|
targetW: number,
|
|
targetH: number,
|
|
displayId?: number,
|
|
): Promise<ResolvePrepareCaptureResult> {
|
|
return this.screenshot.captureExcluding(allowedBundleIds, quality, targetW, targetH, displayId)
|
|
}
|
|
}
|