feat: 完成大部分操作

This commit is contained in:
claude-code-best
2026-03-31 21:40:37 +08:00
parent 3d4cb096d1
commit c4d92178b7
22 changed files with 561 additions and 98 deletions

View File

@@ -1,2 +1,44 @@
export class ComputerUseInput {}
export class ComputerUseInputAPI {}
interface FrontmostAppInfo {
bundleId: string
appName: string
}
export class ComputerUseInputAPI {
declare moveMouse: (
x: number,
y: number,
animated: boolean,
) => Promise<void>
declare key: (
key: string,
action: 'press' | 'release',
) => Promise<void>
declare keys: (parts: string[]) => Promise<void>
declare mouseLocation: () => Promise<{ x: number; y: number }>
declare mouseButton: (
button: 'left' | 'right' | 'middle',
action: 'click' | 'press' | 'release',
count?: number,
) => Promise<void>
declare mouseScroll: (
amount: number,
direction: 'vertical' | 'horizontal',
) => Promise<void>
declare typeText: (text: string) => Promise<void>
declare getFrontmostAppInfo: () => FrontmostAppInfo | null
declare isSupported: true
}
interface ComputerUseInputUnsupported {
isSupported: false
}
export type ComputerUseInput = ComputerUseInputAPI | ComputerUseInputUnsupported

View File

@@ -1 +1,112 @@
export class ComputerUseAPI {}
interface DisplayGeometry {
width: number
height: number
scaleFactor: number
displayId: number
}
interface PrepareDisplayResult {
activated: string
hidden: string[]
}
interface AppInfo {
bundleId: string
displayName: string
}
interface InstalledApp {
bundleId: string
displayName: string
path: string
iconDataUrl?: string
}
interface RunningApp {
bundleId: string
displayName: string
}
interface ScreenshotResult {
base64: string
width: number
height: number
}
interface ResolvePrepareCaptureResult {
base64: string
width: number
height: number
}
interface WindowDisplayInfo {
bundleId: string
displayIds: number[]
}
interface AppsAPI {
prepareDisplay(
allowlistBundleIds: string[],
surrogateHost: string,
displayId?: number,
): Promise<PrepareDisplayResult>
previewHideSet(
bundleIds: string[],
displayId?: number,
): Promise<Array<AppInfo>>
findWindowDisplays(
bundleIds: string[],
): Promise<Array<WindowDisplayInfo>>
appUnderPoint(
x: number,
y: number,
): Promise<AppInfo | null>
listInstalled(): Promise<InstalledApp[]>
iconDataUrl(path: string): string | null
listRunning(): RunningApp[]
open(bundleId: string): Promise<void>
unhide(bundleIds: string[]): Promise<void>
}
interface DisplayAPI {
getSize(displayId?: number): DisplayGeometry
listAll(): DisplayGeometry[]
}
interface ScreenshotAPI {
captureExcluding(
allowedBundleIds: string[],
quality: number,
targetW: number,
targetH: number,
displayId?: number,
): Promise<ScreenshotResult>
captureRegion(
allowedBundleIds: string[],
x: number,
y: number,
w: number,
h: number,
outW: number,
outH: number,
quality: number,
displayId?: number,
): Promise<ScreenshotResult>
}
export class ComputerUseAPI {
declare apps: AppsAPI
declare display: DisplayAPI
declare screenshot: ScreenshotAPI
declare resolvePrepareCapture: (
allowedBundleIds: string[],
surrogateHost: string,
quality: number,
targetW: number,
targetH: number,
displayId?: number,
autoResolve?: boolean,
doHide?: boolean,
) => Promise<ResolvePrepareCaptureResult>
}