@denisixnpm/agent-rdp 0.0.1 → 0.7.0
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/CHANGELOG.md +263 -0
- package/README.md +525 -0
- package/bin/cli.js +61 -0
- package/dist/automation.d.ts +199 -0
- package/dist/automation.d.ts.map +1 -0
- package/dist/automation.js +309 -0
- package/dist/automation.js.map +1 -0
- package/dist/client.d.ts +45 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +146 -0
- package/dist/client.js.map +1 -0
- package/dist/daemon.d.ts +32 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +175 -0
- package/dist/daemon.js.map +1 -0
- package/dist/generated/AccessibilityElement.d.ts +47 -0
- package/dist/generated/AccessibilityElement.d.ts.map +1 -0
- package/dist/generated/AccessibilityElement.js +2 -0
- package/dist/generated/AccessibilityElement.js.map +1 -0
- package/dist/generated/AccessibilitySnapshot.d.ts +27 -0
- package/dist/generated/AccessibilitySnapshot.d.ts.map +1 -0
- package/dist/generated/AccessibilitySnapshot.js +2 -0
- package/dist/generated/AccessibilitySnapshot.js.map +1 -0
- package/dist/generated/AutomateRequest.d.ts +192 -0
- package/dist/generated/AutomateRequest.d.ts.map +1 -0
- package/dist/generated/AutomateRequest.js +2 -0
- package/dist/generated/AutomateRequest.js.map +1 -0
- package/dist/generated/AutomationHandshake.d.ts +26 -0
- package/dist/generated/AutomationHandshake.d.ts.map +1 -0
- package/dist/generated/AutomationHandshake.js +3 -0
- package/dist/generated/AutomationHandshake.js.map +1 -0
- package/dist/generated/AutomationScrollDirection.d.ts +5 -0
- package/dist/generated/AutomationScrollDirection.d.ts.map +1 -0
- package/dist/generated/AutomationScrollDirection.js +3 -0
- package/dist/generated/AutomationScrollDirection.js.map +1 -0
- package/dist/generated/AutomationStatus.d.ts +22 -0
- package/dist/generated/AutomationStatus.d.ts.map +1 -0
- package/dist/generated/AutomationStatus.js +3 -0
- package/dist/generated/AutomationStatus.js.map +1 -0
- package/dist/generated/ClickResult.d.ts +22 -0
- package/dist/generated/ClickResult.d.ts.map +1 -0
- package/dist/generated/ClickResult.js +3 -0
- package/dist/generated/ClickResult.js.map +1 -0
- package/dist/generated/ClipboardRequest.d.ts +10 -0
- package/dist/generated/ClipboardRequest.d.ts.map +1 -0
- package/dist/generated/ClipboardRequest.js +3 -0
- package/dist/generated/ClipboardRequest.js.map +1 -0
- package/dist/generated/ConnectRequest.d.ts +68 -0
- package/dist/generated/ConnectRequest.d.ts.map +1 -0
- package/dist/generated/ConnectRequest.js +2 -0
- package/dist/generated/ConnectRequest.js.map +1 -0
- package/dist/generated/ConnectionState.d.ts +5 -0
- package/dist/generated/ConnectionState.d.ts.map +1 -0
- package/dist/generated/ConnectionState.js +3 -0
- package/dist/generated/ConnectionState.js.map +1 -0
- package/dist/generated/DriveMapping.d.ts +14 -0
- package/dist/generated/DriveMapping.d.ts.map +1 -0
- package/dist/generated/DriveMapping.js +3 -0
- package/dist/generated/DriveMapping.js.map +1 -0
- package/dist/generated/DriveRequest.d.ts +9 -0
- package/dist/generated/DriveRequest.d.ts.map +1 -0
- package/dist/generated/DriveRequest.js +3 -0
- package/dist/generated/DriveRequest.js.map +1 -0
- package/dist/generated/ElementBounds.d.ts +10 -0
- package/dist/generated/ElementBounds.d.ts.map +1 -0
- package/dist/generated/ElementBounds.js +3 -0
- package/dist/generated/ElementBounds.js.map +1 -0
- package/dist/generated/ElementValue.d.ts +23 -0
- package/dist/generated/ElementValue.d.ts.map +1 -0
- package/dist/generated/ElementValue.js +2 -0
- package/dist/generated/ElementValue.js.map +1 -0
- package/dist/generated/ErrorCode.d.ts +5 -0
- package/dist/generated/ErrorCode.d.ts.map +1 -0
- package/dist/generated/ErrorCode.js +3 -0
- package/dist/generated/ErrorCode.js.map +1 -0
- package/dist/generated/ErrorInfo.d.ts +15 -0
- package/dist/generated/ErrorInfo.d.ts.map +1 -0
- package/dist/generated/ErrorInfo.js +2 -0
- package/dist/generated/ErrorInfo.js.map +1 -0
- package/dist/generated/FileIpcError.d.ts +14 -0
- package/dist/generated/FileIpcError.d.ts.map +1 -0
- package/dist/generated/FileIpcError.js +3 -0
- package/dist/generated/FileIpcError.js.map +1 -0
- package/dist/generated/FileIpcRequest.d.ts +18 -0
- package/dist/generated/FileIpcRequest.d.ts.map +1 -0
- package/dist/generated/FileIpcRequest.js +3 -0
- package/dist/generated/FileIpcRequest.js.map +1 -0
- package/dist/generated/FileIpcResponse.d.ts +27 -0
- package/dist/generated/FileIpcResponse.d.ts.map +1 -0
- package/dist/generated/FileIpcResponse.js +2 -0
- package/dist/generated/FileIpcResponse.js.map +1 -0
- package/dist/generated/ImageFormat.d.ts +5 -0
- package/dist/generated/ImageFormat.d.ts.map +1 -0
- package/dist/generated/ImageFormat.js +3 -0
- package/dist/generated/ImageFormat.js.map +1 -0
- package/dist/generated/KeyboardRequest.d.ts +17 -0
- package/dist/generated/KeyboardRequest.d.ts.map +1 -0
- package/dist/generated/KeyboardRequest.js +3 -0
- package/dist/generated/KeyboardRequest.js.map +1 -0
- package/dist/generated/LocateRequest.d.ts +23 -0
- package/dist/generated/LocateRequest.d.ts.map +1 -0
- package/dist/generated/LocateRequest.js +3 -0
- package/dist/generated/LocateRequest.js.map +1 -0
- package/dist/generated/LocateResult.d.ts +15 -0
- package/dist/generated/LocateResult.d.ts.map +1 -0
- package/dist/generated/LocateResult.js +2 -0
- package/dist/generated/LocateResult.js.map +1 -0
- package/dist/generated/MappedDrive.d.ts +14 -0
- package/dist/generated/MappedDrive.d.ts.map +1 -0
- package/dist/generated/MappedDrive.js +3 -0
- package/dist/generated/MappedDrive.js.map +1 -0
- package/dist/generated/MouseButton.d.ts +5 -0
- package/dist/generated/MouseButton.d.ts.map +1 -0
- package/dist/generated/MouseButton.js +3 -0
- package/dist/generated/MouseButton.js.map +1 -0
- package/dist/generated/MouseRequest.d.ts +38 -0
- package/dist/generated/MouseRequest.d.ts.map +1 -0
- package/dist/generated/MouseRequest.js +2 -0
- package/dist/generated/MouseRequest.js.map +1 -0
- package/dist/generated/OcrMatch.d.ts +34 -0
- package/dist/generated/OcrMatch.d.ts.map +1 -0
- package/dist/generated/OcrMatch.js +3 -0
- package/dist/generated/OcrMatch.js.map +1 -0
- package/dist/generated/Request.d.ts +40 -0
- package/dist/generated/Request.d.ts.map +1 -0
- package/dist/generated/Request.js +2 -0
- package/dist/generated/Request.js.map +1 -0
- package/dist/generated/Response.d.ts +20 -0
- package/dist/generated/Response.d.ts.map +1 -0
- package/dist/generated/Response.js +2 -0
- package/dist/generated/Response.js.map +1 -0
- package/dist/generated/ResponseData.d.ts +92 -0
- package/dist/generated/ResponseData.d.ts.map +1 -0
- package/dist/generated/ResponseData.js +2 -0
- package/dist/generated/ResponseData.js.map +1 -0
- package/dist/generated/RunPollResult.d.ts +26 -0
- package/dist/generated/RunPollResult.d.ts.map +1 -0
- package/dist/generated/RunPollResult.js +3 -0
- package/dist/generated/RunPollResult.js.map +1 -0
- package/dist/generated/RunResult.d.ts +22 -0
- package/dist/generated/RunResult.d.ts.map +1 -0
- package/dist/generated/RunResult.js +3 -0
- package/dist/generated/RunResult.js.map +1 -0
- package/dist/generated/ScreenshotRequest.d.ts +11 -0
- package/dist/generated/ScreenshotRequest.d.ts.map +1 -0
- package/dist/generated/ScreenshotRequest.js +2 -0
- package/dist/generated/ScreenshotRequest.js.map +1 -0
- package/dist/generated/ScrollDirection.d.ts +5 -0
- package/dist/generated/ScrollDirection.d.ts.map +1 -0
- package/dist/generated/ScrollDirection.js +3 -0
- package/dist/generated/ScrollDirection.js.map +1 -0
- package/dist/generated/ScrollRequest.d.ts +20 -0
- package/dist/generated/ScrollRequest.d.ts.map +1 -0
- package/dist/generated/ScrollRequest.js +2 -0
- package/dist/generated/ScrollRequest.js.map +1 -0
- package/dist/generated/SessionInfo.d.ts +35 -0
- package/dist/generated/SessionInfo.d.ts.map +1 -0
- package/dist/generated/SessionInfo.js +2 -0
- package/dist/generated/SessionInfo.js.map +1 -0
- package/dist/generated/SessionSummary.d.ts +19 -0
- package/dist/generated/SessionSummary.d.ts.map +1 -0
- package/dist/generated/SessionSummary.js +2 -0
- package/dist/generated/SessionSummary.js.map +1 -0
- package/dist/generated/WaitState.d.ts +5 -0
- package/dist/generated/WaitState.d.ts.map +1 -0
- package/dist/generated/WaitState.js +3 -0
- package/dist/generated/WaitState.js.map +1 -0
- package/dist/generated/WindowAction.d.ts +5 -0
- package/dist/generated/WindowAction.d.ts.map +1 -0
- package/dist/generated/WindowAction.js +3 -0
- package/dist/generated/WindowAction.js.map +1 -0
- package/dist/generated/WindowInfo.d.ts +31 -0
- package/dist/generated/WindowInfo.d.ts.map +1 -0
- package/dist/generated/WindowInfo.js +2 -0
- package/dist/generated/WindowInfo.js.map +1 -0
- package/dist/generated/index.d.ts +41 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +3 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/index.d.ts +211 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +341 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +125 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/models/text-detection.rten +0 -0
- package/models/text-recognition.rten +0 -0
- package/package.json +52 -5
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automation controller for Windows UI Automation.
|
|
3
|
+
*/
|
|
4
|
+
import type { RdpSession } from './index.js';
|
|
5
|
+
import type { AutomationSnapshot, AutomationElementValue, AutomationWindowInfo, AutomationStatus, AutomationRunResult, AutomationRunPollResult, AutomationClickResult } from './types.js';
|
|
6
|
+
export interface SnapshotOptions {
|
|
7
|
+
/** Filter to interactive elements only (buttons, inputs, focusable). */
|
|
8
|
+
interactive?: boolean;
|
|
9
|
+
/** Compact mode - remove empty structural elements. */
|
|
10
|
+
compact?: boolean;
|
|
11
|
+
/** Maximum tree depth (default: 5). */
|
|
12
|
+
depth?: number;
|
|
13
|
+
/** Scope to a specific element (window, panel, etc.) via selector. */
|
|
14
|
+
selector?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface GetOptions {
|
|
17
|
+
/** Property to retrieve: 'name', 'value', 'states', 'bounds', or 'all'. */
|
|
18
|
+
property?: 'name' | 'value' | 'states' | 'bounds' | 'all';
|
|
19
|
+
}
|
|
20
|
+
export interface SelectOptions {
|
|
21
|
+
/** Item name to select within container (optional). */
|
|
22
|
+
item?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ToggleOptions {
|
|
25
|
+
/** Target state: true=on, false=off. Omit to just toggle. */
|
|
26
|
+
state?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface ScrollOptions {
|
|
29
|
+
/** Scroll direction. */
|
|
30
|
+
direction?: 'up' | 'down' | 'left' | 'right';
|
|
31
|
+
/** Scroll amount. */
|
|
32
|
+
amount?: number;
|
|
33
|
+
/** Child selector to scroll into view. */
|
|
34
|
+
toChild?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface RunOptions {
|
|
37
|
+
/** Command arguments. */
|
|
38
|
+
args?: string[];
|
|
39
|
+
/** Wait for command to complete. */
|
|
40
|
+
wait?: boolean;
|
|
41
|
+
/** Run with hidden window. */
|
|
42
|
+
hidden?: boolean;
|
|
43
|
+
/** Process timeout in milliseconds when waiting (default: 10000). */
|
|
44
|
+
processTimeout?: number;
|
|
45
|
+
/** Shell executable to run the command through (default: powershell.exe). */
|
|
46
|
+
shell?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Redirect output and keep the process alive for incremental retrieval via
|
|
49
|
+
* `automation.runPoll(pid)`, instead of waiting for exit or discarding
|
|
50
|
+
* output. Ignored if `wait` is also true.
|
|
51
|
+
*/
|
|
52
|
+
stream?: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface WaitForOptions {
|
|
55
|
+
/** Timeout in milliseconds. */
|
|
56
|
+
timeout?: number;
|
|
57
|
+
/** State to wait for: 'visible', 'enabled', or 'gone'. */
|
|
58
|
+
state?: 'visible' | 'enabled' | 'gone';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Automation controller for Windows UI Automation.
|
|
62
|
+
*
|
|
63
|
+
* Provides methods for interacting with Windows applications via the
|
|
64
|
+
* Windows UI Automation API through a PowerShell agent.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* // Take a snapshot of the accessibility tree
|
|
69
|
+
* const snapshot = await rdp.automation.snapshot();
|
|
70
|
+
* console.log(`Found ${snapshot.ref_count} elements`);
|
|
71
|
+
*
|
|
72
|
+
* // Interactive elements only
|
|
73
|
+
* const interactive = await rdp.automation.snapshot({ interactive: true });
|
|
74
|
+
*
|
|
75
|
+
* // Compact output with depth limit
|
|
76
|
+
* const compact = await rdp.automation.snapshot({ interactive: true, compact: true, depth: 5 });
|
|
77
|
+
*
|
|
78
|
+
* // Invoke a button (use @eN format from snapshot)
|
|
79
|
+
* await rdp.automation.invoke('@e5');
|
|
80
|
+
*
|
|
81
|
+
* // Select a list item
|
|
82
|
+
* await rdp.automation.select('@e10');
|
|
83
|
+
*
|
|
84
|
+
* // Toggle a checkbox
|
|
85
|
+
* await rdp.automation.toggle('@e7', { state: true });
|
|
86
|
+
*
|
|
87
|
+
* // Fill text in an element
|
|
88
|
+
* await rdp.automation.fill('#SearchBox', 'Hello World');
|
|
89
|
+
*
|
|
90
|
+
* // Open context menu
|
|
91
|
+
* await rdp.automation.contextMenu('@e5');
|
|
92
|
+
*
|
|
93
|
+
* // Wait for an element to appear
|
|
94
|
+
* await rdp.automation.waitFor('#SaveDialog', { state: 'visible' });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare class AutomationController {
|
|
98
|
+
private rdp;
|
|
99
|
+
constructor(rdp: RdpSession);
|
|
100
|
+
/**
|
|
101
|
+
* Take a snapshot of the accessibility tree.
|
|
102
|
+
*
|
|
103
|
+
* Refs are always included (use @eN format to reference elements).
|
|
104
|
+
*/
|
|
105
|
+
snapshot(options?: SnapshotOptions): Promise<AutomationSnapshot>;
|
|
106
|
+
/**
|
|
107
|
+
* Get element properties.
|
|
108
|
+
*/
|
|
109
|
+
get(selector: string, options?: GetOptions): Promise<AutomationElementValue>;
|
|
110
|
+
/**
|
|
111
|
+
* Set focus to an element.
|
|
112
|
+
*/
|
|
113
|
+
focus(selector: string): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Click an element - for buttons, links, menu items.
|
|
116
|
+
*
|
|
117
|
+
* @param selector - Element selector
|
|
118
|
+
* @param options - Optional settings (e.g., doubleClick for file list items)
|
|
119
|
+
* @returns Result with click coordinates and method used
|
|
120
|
+
*/
|
|
121
|
+
click(selector: string, options?: {
|
|
122
|
+
doubleClick?: boolean;
|
|
123
|
+
}): Promise<AutomationClickResult>;
|
|
124
|
+
/**
|
|
125
|
+
* Select an element or item within container (SelectionItemPattern).
|
|
126
|
+
* For list items, radio buttons, etc.
|
|
127
|
+
*/
|
|
128
|
+
select(selector: string, options?: SelectOptions): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Toggle an element (TogglePattern) - for checkboxes.
|
|
131
|
+
*/
|
|
132
|
+
toggle(selector: string, options?: ToggleOptions): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Expand an element (ExpandCollapsePattern) - for menus, tree items, combo boxes.
|
|
135
|
+
*/
|
|
136
|
+
expand(selector: string): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Collapse an element (ExpandCollapsePattern).
|
|
139
|
+
*/
|
|
140
|
+
collapse(selector: string): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Open context menu for an element (Focus + Shift+F10).
|
|
143
|
+
*/
|
|
144
|
+
contextMenu(selector: string): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Clear and fill text in an element.
|
|
147
|
+
*/
|
|
148
|
+
fill(selector: string, text: string): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* Clear text from an element.
|
|
151
|
+
*/
|
|
152
|
+
clear(selector: string): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Scroll an element.
|
|
155
|
+
*/
|
|
156
|
+
scroll(selector: string, options?: ScrollOptions): Promise<void>;
|
|
157
|
+
/**
|
|
158
|
+
* List all windows.
|
|
159
|
+
*/
|
|
160
|
+
listWindows(): Promise<AutomationWindowInfo[]>;
|
|
161
|
+
/**
|
|
162
|
+
* Focus a window.
|
|
163
|
+
*/
|
|
164
|
+
focusWindow(selector?: string): Promise<void>;
|
|
165
|
+
/**
|
|
166
|
+
* Maximize a window.
|
|
167
|
+
*/
|
|
168
|
+
maximizeWindow(selector?: string): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Minimize a window.
|
|
171
|
+
*/
|
|
172
|
+
minimizeWindow(selector?: string): Promise<void>;
|
|
173
|
+
/**
|
|
174
|
+
* Restore a window.
|
|
175
|
+
*/
|
|
176
|
+
restoreWindow(selector?: string): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Close a window.
|
|
179
|
+
*/
|
|
180
|
+
closeWindow(selector?: string): Promise<void>;
|
|
181
|
+
/**
|
|
182
|
+
* Run a PowerShell command.
|
|
183
|
+
*/
|
|
184
|
+
run(command: string, options?: RunOptions): Promise<AutomationRunResult>;
|
|
185
|
+
/**
|
|
186
|
+
* Poll a process previously started with `run(cmd, { stream: true })` for
|
|
187
|
+
* output produced since the last poll.
|
|
188
|
+
*/
|
|
189
|
+
runPoll(pid: number): Promise<AutomationRunPollResult>;
|
|
190
|
+
/**
|
|
191
|
+
* Wait for an element to reach a state.
|
|
192
|
+
*/
|
|
193
|
+
waitFor(selector: string, options?: WaitForOptions): Promise<void>;
|
|
194
|
+
/**
|
|
195
|
+
* Get automation agent status.
|
|
196
|
+
*/
|
|
197
|
+
status(): Promise<AutomationStatus>;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=automation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation.d.ts","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automation controller for Windows UI Automation.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Automation controller for Windows UI Automation.
|
|
6
|
+
*
|
|
7
|
+
* Provides methods for interacting with Windows applications via the
|
|
8
|
+
* Windows UI Automation API through a PowerShell agent.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // Take a snapshot of the accessibility tree
|
|
13
|
+
* const snapshot = await rdp.automation.snapshot();
|
|
14
|
+
* console.log(`Found ${snapshot.ref_count} elements`);
|
|
15
|
+
*
|
|
16
|
+
* // Interactive elements only
|
|
17
|
+
* const interactive = await rdp.automation.snapshot({ interactive: true });
|
|
18
|
+
*
|
|
19
|
+
* // Compact output with depth limit
|
|
20
|
+
* const compact = await rdp.automation.snapshot({ interactive: true, compact: true, depth: 5 });
|
|
21
|
+
*
|
|
22
|
+
* // Invoke a button (use @eN format from snapshot)
|
|
23
|
+
* await rdp.automation.invoke('@e5');
|
|
24
|
+
*
|
|
25
|
+
* // Select a list item
|
|
26
|
+
* await rdp.automation.select('@e10');
|
|
27
|
+
*
|
|
28
|
+
* // Toggle a checkbox
|
|
29
|
+
* await rdp.automation.toggle('@e7', { state: true });
|
|
30
|
+
*
|
|
31
|
+
* // Fill text in an element
|
|
32
|
+
* await rdp.automation.fill('#SearchBox', 'Hello World');
|
|
33
|
+
*
|
|
34
|
+
* // Open context menu
|
|
35
|
+
* await rdp.automation.contextMenu('@e5');
|
|
36
|
+
*
|
|
37
|
+
* // Wait for an element to appear
|
|
38
|
+
* await rdp.automation.waitFor('#SaveDialog', { state: 'visible' });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export class AutomationController {
|
|
42
|
+
rdp;
|
|
43
|
+
constructor(rdp) {
|
|
44
|
+
this.rdp = rdp;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Take a snapshot of the accessibility tree.
|
|
48
|
+
*
|
|
49
|
+
* Refs are always included (use @eN format to reference elements).
|
|
50
|
+
*/
|
|
51
|
+
async snapshot(options = {}) {
|
|
52
|
+
const request = {
|
|
53
|
+
type: 'automate',
|
|
54
|
+
op: 'snapshot',
|
|
55
|
+
interactive_only: options.interactive ?? false,
|
|
56
|
+
compact: options.compact ?? false,
|
|
57
|
+
max_depth: options.depth ?? 10,
|
|
58
|
+
selector: options.selector,
|
|
59
|
+
focused: false,
|
|
60
|
+
};
|
|
61
|
+
const response = await this.rdp._send(request);
|
|
62
|
+
return response.data;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get element properties.
|
|
66
|
+
*/
|
|
67
|
+
async get(selector, options = {}) {
|
|
68
|
+
const request = {
|
|
69
|
+
type: 'automate',
|
|
70
|
+
op: 'get',
|
|
71
|
+
selector,
|
|
72
|
+
property: options.property,
|
|
73
|
+
};
|
|
74
|
+
const response = await this.rdp._send(request);
|
|
75
|
+
return response.data;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Set focus to an element.
|
|
79
|
+
*/
|
|
80
|
+
async focus(selector) {
|
|
81
|
+
await this.rdp._send({
|
|
82
|
+
type: 'automate',
|
|
83
|
+
op: 'focus',
|
|
84
|
+
selector,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Click an element - for buttons, links, menu items.
|
|
89
|
+
*
|
|
90
|
+
* @param selector - Element selector
|
|
91
|
+
* @param options - Optional settings (e.g., doubleClick for file list items)
|
|
92
|
+
* @returns Result with click coordinates and method used
|
|
93
|
+
*/
|
|
94
|
+
async click(selector, options = {}) {
|
|
95
|
+
const response = await this.rdp._send({
|
|
96
|
+
type: 'automate',
|
|
97
|
+
op: 'click',
|
|
98
|
+
selector,
|
|
99
|
+
double_click: options.doubleClick ?? false,
|
|
100
|
+
});
|
|
101
|
+
return response.data;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Select an element or item within container (SelectionItemPattern).
|
|
105
|
+
* For list items, radio buttons, etc.
|
|
106
|
+
*/
|
|
107
|
+
async select(selector, options = {}) {
|
|
108
|
+
await this.rdp._send({
|
|
109
|
+
type: 'automate',
|
|
110
|
+
op: 'select',
|
|
111
|
+
selector,
|
|
112
|
+
item: options.item,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Toggle an element (TogglePattern) - for checkboxes.
|
|
117
|
+
*/
|
|
118
|
+
async toggle(selector, options = {}) {
|
|
119
|
+
await this.rdp._send({
|
|
120
|
+
type: 'automate',
|
|
121
|
+
op: 'toggle',
|
|
122
|
+
selector,
|
|
123
|
+
state: options.state,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Expand an element (ExpandCollapsePattern) - for menus, tree items, combo boxes.
|
|
128
|
+
*/
|
|
129
|
+
async expand(selector) {
|
|
130
|
+
await this.rdp._send({
|
|
131
|
+
type: 'automate',
|
|
132
|
+
op: 'expand',
|
|
133
|
+
selector,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Collapse an element (ExpandCollapsePattern).
|
|
138
|
+
*/
|
|
139
|
+
async collapse(selector) {
|
|
140
|
+
await this.rdp._send({
|
|
141
|
+
type: 'automate',
|
|
142
|
+
op: 'collapse',
|
|
143
|
+
selector,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Open context menu for an element (Focus + Shift+F10).
|
|
148
|
+
*/
|
|
149
|
+
async contextMenu(selector) {
|
|
150
|
+
await this.rdp._send({
|
|
151
|
+
type: 'automate',
|
|
152
|
+
op: 'context_menu',
|
|
153
|
+
selector,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Clear and fill text in an element.
|
|
158
|
+
*/
|
|
159
|
+
async fill(selector, text) {
|
|
160
|
+
await this.rdp._send({
|
|
161
|
+
type: 'automate',
|
|
162
|
+
op: 'fill',
|
|
163
|
+
selector,
|
|
164
|
+
text,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Clear text from an element.
|
|
169
|
+
*/
|
|
170
|
+
async clear(selector) {
|
|
171
|
+
await this.rdp._send({
|
|
172
|
+
type: 'automate',
|
|
173
|
+
op: 'clear',
|
|
174
|
+
selector,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Scroll an element.
|
|
179
|
+
*/
|
|
180
|
+
async scroll(selector, options = {}) {
|
|
181
|
+
await this.rdp._send({
|
|
182
|
+
type: 'automate',
|
|
183
|
+
op: 'scroll',
|
|
184
|
+
selector,
|
|
185
|
+
direction: options.direction,
|
|
186
|
+
amount: options.amount,
|
|
187
|
+
to_child: options.toChild,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* List all windows.
|
|
192
|
+
*/
|
|
193
|
+
async listWindows() {
|
|
194
|
+
const response = await this.rdp._send({
|
|
195
|
+
type: 'automate',
|
|
196
|
+
op: 'window',
|
|
197
|
+
action: 'list',
|
|
198
|
+
});
|
|
199
|
+
const data = response.data;
|
|
200
|
+
return data.windows;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Focus a window.
|
|
204
|
+
*/
|
|
205
|
+
async focusWindow(selector) {
|
|
206
|
+
await this.rdp._send({
|
|
207
|
+
type: 'automate',
|
|
208
|
+
op: 'window',
|
|
209
|
+
action: 'focus',
|
|
210
|
+
selector,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Maximize a window.
|
|
215
|
+
*/
|
|
216
|
+
async maximizeWindow(selector) {
|
|
217
|
+
await this.rdp._send({
|
|
218
|
+
type: 'automate',
|
|
219
|
+
op: 'window',
|
|
220
|
+
action: 'maximize',
|
|
221
|
+
selector,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Minimize a window.
|
|
226
|
+
*/
|
|
227
|
+
async minimizeWindow(selector) {
|
|
228
|
+
await this.rdp._send({
|
|
229
|
+
type: 'automate',
|
|
230
|
+
op: 'window',
|
|
231
|
+
action: 'minimize',
|
|
232
|
+
selector,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Restore a window.
|
|
237
|
+
*/
|
|
238
|
+
async restoreWindow(selector) {
|
|
239
|
+
await this.rdp._send({
|
|
240
|
+
type: 'automate',
|
|
241
|
+
op: 'window',
|
|
242
|
+
action: 'restore',
|
|
243
|
+
selector,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Close a window.
|
|
248
|
+
*/
|
|
249
|
+
async closeWindow(selector) {
|
|
250
|
+
await this.rdp._send({
|
|
251
|
+
type: 'automate',
|
|
252
|
+
op: 'window',
|
|
253
|
+
action: 'close',
|
|
254
|
+
selector,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Run a PowerShell command.
|
|
259
|
+
*/
|
|
260
|
+
async run(command, options = {}) {
|
|
261
|
+
const response = await this.rdp._send({
|
|
262
|
+
type: 'automate',
|
|
263
|
+
op: 'run',
|
|
264
|
+
command,
|
|
265
|
+
args: options.args ?? [],
|
|
266
|
+
wait: options.wait ?? false,
|
|
267
|
+
hidden: options.hidden ?? true,
|
|
268
|
+
timeout_ms: options.processTimeout ?? 10000,
|
|
269
|
+
shell: options.shell,
|
|
270
|
+
stream: options.stream ?? false,
|
|
271
|
+
});
|
|
272
|
+
return response.data;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Poll a process previously started with `run(cmd, { stream: true })` for
|
|
276
|
+
* output produced since the last poll.
|
|
277
|
+
*/
|
|
278
|
+
async runPoll(pid) {
|
|
279
|
+
const response = await this.rdp._send({
|
|
280
|
+
type: 'automate',
|
|
281
|
+
op: 'run_poll',
|
|
282
|
+
pid,
|
|
283
|
+
});
|
|
284
|
+
return response.data;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Wait for an element to reach a state.
|
|
288
|
+
*/
|
|
289
|
+
async waitFor(selector, options = {}) {
|
|
290
|
+
await this.rdp._send({
|
|
291
|
+
type: 'automate',
|
|
292
|
+
op: 'wait_for',
|
|
293
|
+
selector,
|
|
294
|
+
timeout_ms: options.timeout ?? 30000,
|
|
295
|
+
state: options.state ?? 'visible',
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Get automation agent status.
|
|
300
|
+
*/
|
|
301
|
+
async status() {
|
|
302
|
+
const response = await this.rdp._send({
|
|
303
|
+
type: 'automate',
|
|
304
|
+
op: 'status',
|
|
305
|
+
});
|
|
306
|
+
return response.data;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=automation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation.js","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPC client for communicating with the agent-rdp daemon.
|
|
3
|
+
*/
|
|
4
|
+
import { Request, Response } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Get the socket path for a session.
|
|
7
|
+
* On Windows, returns a TCP port number instead.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getSocketPath(session: string): string | number;
|
|
10
|
+
/**
|
|
11
|
+
* Get the temp directory for a session.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getSessionDir(session: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* IPC client for communicating with the daemon.
|
|
16
|
+
*/
|
|
17
|
+
export declare class IpcClient {
|
|
18
|
+
private session;
|
|
19
|
+
private socket;
|
|
20
|
+
private buffer;
|
|
21
|
+
private pendingResolve;
|
|
22
|
+
private pendingReject;
|
|
23
|
+
constructor(session: string);
|
|
24
|
+
/**
|
|
25
|
+
* Connect to the daemon socket.
|
|
26
|
+
*/
|
|
27
|
+
connect(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Process buffered data looking for newline-delimited JSON.
|
|
30
|
+
*/
|
|
31
|
+
private processBuffer;
|
|
32
|
+
/**
|
|
33
|
+
* Send a request and wait for the response.
|
|
34
|
+
*/
|
|
35
|
+
send(request: Request, timeout?: number): Promise<Response>;
|
|
36
|
+
/**
|
|
37
|
+
* Close the connection.
|
|
38
|
+
*/
|
|
39
|
+
close(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Check if connected.
|
|
42
|
+
*/
|
|
43
|
+
isConnected(): boolean;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAIzD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAU9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED;;GAEG;AACH,qBAAa,SAAS;IAMR,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,aAAa,CAAyC;gBAE1C,OAAO,EAAE,MAAM;IAEnC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,SAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgC1E;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB"}
|