| import type { ComputerUseAPI } from '@ant/computer-use-swift' | |
| let cached: ComputerUseAPI | undefined | |
| /** | |
| * Package's js/index.js reads COMPUTER_USE_SWIFT_NODE_PATH (baked by | |
| * build-with-plugins.ts on darwin targets, unset otherwise — falls through to | |
| * the node_modules prebuilds/ path). We cache the loaded native module. | |
| * | |
| * The four @MainActor methods (captureExcluding, captureRegion, | |
| * apps.listInstalled, resolvePrepareCapture) dispatch to DispatchQueue.main | |
| * and will hang under libuv unless CFRunLoop is pumped — call sites wrap | |
| * these in drainRunLoop(). | |
| */ | |
| export function requireComputerUseSwift(): ComputerUseAPI { | |
| if (process.platform !== 'darwin') { | |
| throw new Error('@ant/computer-use-swift is macOS-only') | |
| } | |
| // eslint-disable-next-line @typescript-eslint/no-require-imports | |
| return (cached ??= require('@ant/computer-use-swift') as ComputerUseAPI) | |
| } | |
| export type { ComputerUseAPI } | |