type MouseButton = 'left' | 'right' | 'middle' type MouseAction = 'press' | 'release' | 'click' type ScrollAxis = 'vertical' | 'horizontal' export type FrontmostAppInfo = { bundleId?: string appName?: string } export type ComputerUseInputAPI = { moveMouse(x: number, y: number, smooth?: boolean): Promise mouseLocation(): Promise<{ x: number; y: number }> key(key: string, action?: 'press' | 'release' | 'click'): Promise keys(keys: string[]): Promise leftClick(): Promise rightClick(): Promise doubleClick(): Promise middleClick(): Promise dragMouse(x: number, y: number): Promise scroll(x: number, y: number): Promise type(text: string): Promise mouseButton( button: MouseButton, action?: MouseAction, count?: number, ): Promise mouseScroll(amount: number, axis?: ScrollAxis): Promise typeText(text: string): Promise getFrontmostAppInfo(): FrontmostAppInfo | null } export type ComputerUseInput = | ({ isSupported: false } & Partial) | ({ isSupported: true } & ComputerUseInputAPI) let cursor = { x: 0, y: 0 } async function noOp(): Promise {} const supported: ComputerUseInput = { isSupported: process.platform === 'darwin', async moveMouse(x: number, y: number): Promise { cursor = { x, y } }, async mouseLocation(): Promise<{ x: number; y: number }> { return cursor }, async key(_key: string, _action: 'press' | 'release' | 'click' = 'click') { await noOp() }, async keys(_keys: string[]) { await noOp() }, async leftClick() { await noOp() }, async rightClick() { await noOp() }, async doubleClick() { await noOp() }, async middleClick() { await noOp() }, async dragMouse(x: number, y: number) { cursor = { x, y } }, async scroll(_x: number, _y: number) { await noOp() }, async type(_text: string) { await noOp() }, async mouseButton( _button: MouseButton, _action: MouseAction = 'click', _count = 1, ) { await noOp() }, async mouseScroll(_amount: number, _axis: ScrollAxis = 'vertical') { await noOp() }, async typeText(_text: string) { await noOp() }, getFrontmostAppInfo(): FrontmostAppInfo | null { return null }, } export default supported