@phuetz/code-buddy 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codebuddy/README.md +52 -0
- package/README.md +17 -17
- package/dist/browser-automation/browser-manager.js +0 -2
- package/dist/browser-automation/browser-manager.js.map +1 -1
- package/dist/codebuddy/tool-definitions/computer-control-tools.js +2 -0
- package/dist/codebuddy/tool-definitions/computer-control-tools.js.map +1 -1
- package/dist/commands/cli/daemon-commands.js +25 -0
- package/dist/commands/cli/daemon-commands.js.map +1 -1
- package/dist/daemon/daemon-manager.js +3 -1
- package/dist/daemon/daemon-manager.js.map +1 -1
- package/dist/desktop-automation/automation-manager.d.ts +8 -0
- package/dist/desktop-automation/automation-manager.js +52 -0
- package/dist/desktop-automation/automation-manager.js.map +1 -1
- package/dist/desktop-automation/base-native-provider.d.ts +72 -0
- package/dist/desktop-automation/base-native-provider.js +75 -0
- package/dist/desktop-automation/base-native-provider.js.map +1 -0
- package/dist/desktop-automation/index.d.ts +4 -0
- package/dist/desktop-automation/index.js +5 -0
- package/dist/desktop-automation/index.js.map +1 -1
- package/dist/desktop-automation/linux-native-provider.d.ts +48 -0
- package/dist/desktop-automation/linux-native-provider.js +515 -0
- package/dist/desktop-automation/linux-native-provider.js.map +1 -0
- package/dist/desktop-automation/macos-native-provider.d.ts +61 -0
- package/dist/desktop-automation/macos-native-provider.js +768 -0
- package/dist/desktop-automation/macos-native-provider.js.map +1 -0
- package/dist/desktop-automation/smart-snapshot.d.ts +21 -2
- package/dist/desktop-automation/smart-snapshot.js +237 -12
- package/dist/desktop-automation/smart-snapshot.js.map +1 -1
- package/dist/desktop-automation/types.d.ts +1 -1
- package/dist/desktop-automation/types.js +2 -2
- package/dist/desktop-automation/types.js.map +1 -1
- package/dist/desktop-automation/windows-native-provider.d.ts +71 -0
- package/dist/desktop-automation/windows-native-provider.js +653 -0
- package/dist/desktop-automation/windows-native-provider.js.map +1 -0
- package/dist/index.js +31 -38
- package/dist/index.js.map +1 -1
- package/dist/server/index.js +26 -10
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/chat.js +12 -1
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/websocket/handler.js +10 -1
- package/dist/server/websocket/handler.js.map +1 -1
- package/dist/tools/computer-control-tool.d.ts +6 -1
- package/dist/tools/computer-control-tool.js +97 -1
- package/dist/tools/computer-control-tool.js.map +1 -1
- package/dist/tools/screenshot-tool.d.ts +23 -0
- package/dist/tools/screenshot-tool.js +224 -1
- package/dist/tools/screenshot-tool.js.map +1 -1
- package/package.json +14 -5
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Native Provider
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for platform-native desktop automation providers.
|
|
5
|
+
* Provides shared utilities for executing CLI tools, checking tool availability,
|
|
6
|
+
* and common helper methods.
|
|
7
|
+
*/
|
|
8
|
+
import type { IAutomationProvider } from './automation-manager.js';
|
|
9
|
+
import type { AutomationProvider, ProviderCapabilities, MousePosition, MouseMoveOptions, MouseClickOptions, MouseDragOptions, MouseScrollOptions, MouseButton, KeyCode, KeyPressOptions, TypeOptions, HotkeySequence, WindowInfo, WindowSearchOptions, WindowSetOptions, AppInfo, AppLaunchOptions, ScreenInfo, ColorInfo, ClipboardContent } from './types.js';
|
|
10
|
+
export declare abstract class BaseNativeProvider implements IAutomationProvider {
|
|
11
|
+
readonly name: AutomationProvider;
|
|
12
|
+
abstract readonly capabilities: ProviderCapabilities;
|
|
13
|
+
abstract readonly platformName: string;
|
|
14
|
+
protected initialized: boolean;
|
|
15
|
+
protected availableTools: Map<string, boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Execute a command asynchronously with optional timeout
|
|
18
|
+
*/
|
|
19
|
+
protected exec(cmd: string, timeout?: number): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Execute a command synchronously
|
|
22
|
+
*/
|
|
23
|
+
protected execSync(cmd: string, timeout?: number): string;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a CLI tool is available (cached)
|
|
26
|
+
*/
|
|
27
|
+
protected checkTool(name: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Check if a tool is available (from cache)
|
|
30
|
+
*/
|
|
31
|
+
protected hasTool(name: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Delay helper
|
|
34
|
+
*/
|
|
35
|
+
protected delay(ms: number): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Ensure provider is initialized
|
|
38
|
+
*/
|
|
39
|
+
protected ensureInitialized(): void;
|
|
40
|
+
abstract initialize(): Promise<void>;
|
|
41
|
+
abstract shutdown(): Promise<void>;
|
|
42
|
+
abstract isAvailable(): Promise<boolean>;
|
|
43
|
+
abstract getMousePosition(): Promise<MousePosition>;
|
|
44
|
+
abstract moveMouse(x: number, y: number, options?: MouseMoveOptions): Promise<void>;
|
|
45
|
+
abstract click(options?: MouseClickOptions): Promise<void>;
|
|
46
|
+
abstract doubleClick(button?: MouseButton): Promise<void>;
|
|
47
|
+
abstract rightClick(): Promise<void>;
|
|
48
|
+
abstract drag(fromX: number, fromY: number, toX: number, toY: number, options?: MouseDragOptions): Promise<void>;
|
|
49
|
+
abstract scroll(options: MouseScrollOptions): Promise<void>;
|
|
50
|
+
abstract keyPress(key: KeyCode, options?: KeyPressOptions): Promise<void>;
|
|
51
|
+
abstract keyDown(key: KeyCode): Promise<void>;
|
|
52
|
+
abstract keyUp(key: KeyCode): Promise<void>;
|
|
53
|
+
abstract type(text: string, options?: TypeOptions): Promise<void>;
|
|
54
|
+
abstract hotkey(sequence: HotkeySequence): Promise<void>;
|
|
55
|
+
abstract getActiveWindow(): Promise<WindowInfo | null>;
|
|
56
|
+
abstract getWindows(options?: WindowSearchOptions): Promise<WindowInfo[]>;
|
|
57
|
+
abstract getWindow(handle: string): Promise<WindowInfo | null>;
|
|
58
|
+
abstract focusWindow(handle: string): Promise<void>;
|
|
59
|
+
abstract minimizeWindow(handle: string): Promise<void>;
|
|
60
|
+
abstract maximizeWindow(handle: string): Promise<void>;
|
|
61
|
+
abstract restoreWindow(handle: string): Promise<void>;
|
|
62
|
+
abstract closeWindow(handle: string): Promise<void>;
|
|
63
|
+
abstract setWindow(handle: string, options: WindowSetOptions): Promise<void>;
|
|
64
|
+
abstract getRunningApps(): Promise<AppInfo[]>;
|
|
65
|
+
abstract launchApp(appPath: string, options?: AppLaunchOptions): Promise<AppInfo>;
|
|
66
|
+
abstract closeApp(pid: number): Promise<void>;
|
|
67
|
+
abstract getScreens(): Promise<ScreenInfo[]>;
|
|
68
|
+
abstract getPixelColor(x: number, y: number): Promise<ColorInfo>;
|
|
69
|
+
abstract getClipboard(): Promise<ClipboardContent>;
|
|
70
|
+
abstract setClipboard(content: Partial<ClipboardContent>): Promise<void>;
|
|
71
|
+
abstract clearClipboard(): Promise<void>;
|
|
72
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Native Provider
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for platform-native desktop automation providers.
|
|
5
|
+
* Provides shared utilities for executing CLI tools, checking tool availability,
|
|
6
|
+
* and common helper methods.
|
|
7
|
+
*/
|
|
8
|
+
import { execSync, exec as execCb } from 'child_process';
|
|
9
|
+
import { promisify } from 'util';
|
|
10
|
+
const execAsync = promisify(execCb);
|
|
11
|
+
export class BaseNativeProvider {
|
|
12
|
+
name = 'native';
|
|
13
|
+
initialized = false;
|
|
14
|
+
availableTools = new Map();
|
|
15
|
+
/**
|
|
16
|
+
* Execute a command asynchronously with optional timeout
|
|
17
|
+
*/
|
|
18
|
+
async exec(cmd, timeout = 10000) {
|
|
19
|
+
const { stdout } = await execAsync(cmd, {
|
|
20
|
+
timeout,
|
|
21
|
+
encoding: 'utf-8',
|
|
22
|
+
maxBuffer: 1024 * 1024,
|
|
23
|
+
});
|
|
24
|
+
return stdout.trim();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Execute a command synchronously
|
|
28
|
+
*/
|
|
29
|
+
execSync(cmd, timeout = 5000) {
|
|
30
|
+
return execSync(cmd, {
|
|
31
|
+
encoding: 'utf-8',
|
|
32
|
+
timeout,
|
|
33
|
+
maxBuffer: 1024 * 1024,
|
|
34
|
+
}).trim();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if a CLI tool is available (cached)
|
|
38
|
+
*/
|
|
39
|
+
checkTool(name) {
|
|
40
|
+
if (this.availableTools.has(name)) {
|
|
41
|
+
return this.availableTools.get(name);
|
|
42
|
+
}
|
|
43
|
+
let available = false;
|
|
44
|
+
try {
|
|
45
|
+
execSync(`which ${name}`, { encoding: 'utf-8', timeout: 3000 });
|
|
46
|
+
available = true;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
available = false;
|
|
50
|
+
}
|
|
51
|
+
this.availableTools.set(name, available);
|
|
52
|
+
return available;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check if a tool is available (from cache)
|
|
56
|
+
*/
|
|
57
|
+
hasTool(name) {
|
|
58
|
+
return this.availableTools.get(name) ?? false;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Delay helper
|
|
62
|
+
*/
|
|
63
|
+
delay(ms) {
|
|
64
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Ensure provider is initialized
|
|
68
|
+
*/
|
|
69
|
+
ensureInitialized() {
|
|
70
|
+
if (!this.initialized) {
|
|
71
|
+
throw new Error(`${this.platformName} native provider not initialized. Call initialize() first.`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=base-native-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-native-provider.js","sourceRoot":"","sources":["../../src/desktop-automation/base-native-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAyBjC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAEpC,MAAM,OAAgB,kBAAkB;IAC7B,IAAI,GAAuB,QAAQ,CAAC;IAInC,WAAW,GAAG,KAAK,CAAC;IACpB,cAAc,GAAyB,IAAI,GAAG,EAAE,CAAC;IAE3D;;OAEG;IACO,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,OAAO,GAAG,KAAK;QAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YACtC,OAAO;YACP,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,IAAI,GAAG,IAAI;SACvB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,GAAW,EAAE,OAAO,GAAG,IAAI;QAC5C,OAAO,QAAQ,CAAC,GAAG,EAAE;YACnB,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,SAAS,EAAE,IAAI,GAAG,IAAI;SACvB,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACO,SAAS,CAAC,IAAY;QAC9B,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACxC,CAAC;QACD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAChD,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,EAAU;QACxB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACO,iBAAiB;QACzB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,4DAA4D,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;CAyCF"}
|
|
@@ -15,6 +15,10 @@ export { DEFAULT_AUTOMATION_CONFIG } from './types.js';
|
|
|
15
15
|
export type { IAutomationProvider } from './automation-manager.js';
|
|
16
16
|
export { MockAutomationProvider, DesktopAutomationManager, getDesktopAutomation, resetDesktopAutomation, } from './automation-manager.js';
|
|
17
17
|
export { NutJsProvider } from './nutjs-provider.js';
|
|
18
|
+
export { BaseNativeProvider } from './base-native-provider.js';
|
|
19
|
+
export { LinuxNativeProvider } from './linux-native-provider.js';
|
|
20
|
+
export { WindowsNativeProvider } from './windows-native-provider.js';
|
|
21
|
+
export { MacOSNativeProvider } from './macos-native-provider.js';
|
|
18
22
|
export type { PermissionType, PermissionStatus, PermissionInfo, PermissionCheckResult, PermissionManagerConfig, } from './permission-manager.js';
|
|
19
23
|
export { PermissionManager, PermissionError, getPermissionManager, resetPermissionManager, } from './permission-manager.js';
|
|
20
24
|
export type { VolumeInfo, BrightnessInfo, NotificationOptions, NotificationResult, PowerAction, DisplayInfo, NetworkInfo, BatteryInfo, SystemInfo, } from './system-control.js';
|
|
@@ -14,6 +14,11 @@ export { DEFAULT_AUTOMATION_CONFIG } from './types.js';
|
|
|
14
14
|
export { MockAutomationProvider, DesktopAutomationManager, getDesktopAutomation, resetDesktopAutomation, } from './automation-manager.js';
|
|
15
15
|
// Providers
|
|
16
16
|
export { NutJsProvider } from './nutjs-provider.js';
|
|
17
|
+
// Platform-Native Providers (OpenClaw-inspired)
|
|
18
|
+
export { BaseNativeProvider } from './base-native-provider.js';
|
|
19
|
+
export { LinuxNativeProvider } from './linux-native-provider.js';
|
|
20
|
+
export { WindowsNativeProvider } from './windows-native-provider.js';
|
|
21
|
+
export { MacOSNativeProvider } from './macos-native-provider.js';
|
|
17
22
|
export { PermissionManager, PermissionError, getPermissionManager, resetPermissionManager, } from './permission-manager.js';
|
|
18
23
|
export { SystemControl, getSystemControl, resetSystemControl, } from './system-control.js';
|
|
19
24
|
export { SmartSnapshotManager, getSmartSnapshotManager, resetSmartSnapshotManager, } from './smart-snapshot.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/desktop-automation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiCH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAKvD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/desktop-automation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiCH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAKvD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,gDAAgD;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAWjE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAejC,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAa7B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linux Native Desktop Automation Provider
|
|
3
|
+
*
|
|
4
|
+
* Uses xdotool, xclip, wmctrl, and xrandr for desktop automation on Linux/X11.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseNativeProvider } from './base-native-provider.js';
|
|
7
|
+
import type { ProviderCapabilities, MousePosition, MouseMoveOptions, MouseClickOptions, MouseDragOptions, MouseScrollOptions, MouseButton, KeyCode, KeyPressOptions, TypeOptions, HotkeySequence, WindowInfo, WindowSearchOptions, WindowSetOptions, AppInfo, AppLaunchOptions, ScreenInfo, ColorInfo, ClipboardContent } from './types.js';
|
|
8
|
+
export declare class LinuxNativeProvider extends BaseNativeProvider {
|
|
9
|
+
readonly platformName = "Linux";
|
|
10
|
+
readonly capabilities: ProviderCapabilities;
|
|
11
|
+
private isX11;
|
|
12
|
+
initialize(): Promise<void>;
|
|
13
|
+
isAvailable(): Promise<boolean>;
|
|
14
|
+
shutdown(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Map a key name to the xdotool equivalent
|
|
17
|
+
*/
|
|
18
|
+
private mapKey;
|
|
19
|
+
getMousePosition(): Promise<MousePosition>;
|
|
20
|
+
moveMouse(x: number, y: number, options?: MouseMoveOptions): Promise<void>;
|
|
21
|
+
click(options?: MouseClickOptions): Promise<void>;
|
|
22
|
+
doubleClick(button?: MouseButton): Promise<void>;
|
|
23
|
+
rightClick(): Promise<void>;
|
|
24
|
+
drag(fromX: number, fromY: number, toX: number, toY: number, _options?: MouseDragOptions): Promise<void>;
|
|
25
|
+
scroll(options: MouseScrollOptions): Promise<void>;
|
|
26
|
+
keyPress(key: KeyCode, options?: KeyPressOptions): Promise<void>;
|
|
27
|
+
keyDown(key: KeyCode): Promise<void>;
|
|
28
|
+
keyUp(key: KeyCode): Promise<void>;
|
|
29
|
+
type(text: string, options?: TypeOptions): Promise<void>;
|
|
30
|
+
hotkey(sequence: HotkeySequence): Promise<void>;
|
|
31
|
+
getActiveWindow(): Promise<WindowInfo | null>;
|
|
32
|
+
getWindows(options?: WindowSearchOptions): Promise<WindowInfo[]>;
|
|
33
|
+
getWindow(handle: string): Promise<WindowInfo | null>;
|
|
34
|
+
focusWindow(handle: string): Promise<void>;
|
|
35
|
+
minimizeWindow(handle: string): Promise<void>;
|
|
36
|
+
maximizeWindow(handle: string): Promise<void>;
|
|
37
|
+
restoreWindow(handle: string): Promise<void>;
|
|
38
|
+
closeWindow(handle: string): Promise<void>;
|
|
39
|
+
setWindow(handle: string, options: WindowSetOptions): Promise<void>;
|
|
40
|
+
getRunningApps(): Promise<AppInfo[]>;
|
|
41
|
+
launchApp(appPath: string, options?: AppLaunchOptions): Promise<AppInfo>;
|
|
42
|
+
closeApp(pid: number): Promise<void>;
|
|
43
|
+
getScreens(): Promise<ScreenInfo[]>;
|
|
44
|
+
getPixelColor(_x: number, _y: number): Promise<ColorInfo>;
|
|
45
|
+
getClipboard(): Promise<ClipboardContent>;
|
|
46
|
+
setClipboard(content: Partial<ClipboardContent>): Promise<void>;
|
|
47
|
+
clearClipboard(): Promise<void>;
|
|
48
|
+
}
|