24 lines
925 B
TypeScript
24 lines
925 B
TypeScript
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 }
|