@denisixnpm/agent-rdp 0.7.5 → 0.7.7

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +130 -1
  3. package/dist/automation.d.ts +21 -1
  4. package/dist/automation.d.ts.map +1 -1
  5. package/dist/automation.js +27 -1
  6. package/dist/automation.js.map +1 -1
  7. package/dist/generated/ClickAtRequest.d.ts +32 -0
  8. package/dist/generated/ClickAtRequest.d.ts.map +1 -0
  9. package/dist/generated/ClickAtRequest.js +3 -0
  10. package/dist/generated/ClickAtRequest.js.map +1 -0
  11. package/dist/generated/ClickAtResult.d.ts +26 -0
  12. package/dist/generated/ClickAtResult.d.ts.map +1 -0
  13. package/dist/generated/ClickAtResult.js +2 -0
  14. package/dist/generated/ClickAtResult.js.map +1 -0
  15. package/dist/generated/KeyboardRequest.d.ts +3 -0
  16. package/dist/generated/KeyboardRequest.d.ts.map +1 -1
  17. package/dist/generated/LocateRequest.d.ts +30 -0
  18. package/dist/generated/LocateRequest.d.ts.map +1 -1
  19. package/dist/generated/LocateRequest.js +0 -1
  20. package/dist/generated/LocateRequest.js.map +1 -1
  21. package/dist/generated/Region.d.ts +15 -0
  22. package/dist/generated/Region.d.ts.map +1 -0
  23. package/dist/generated/Region.js +3 -0
  24. package/dist/generated/Region.js.map +1 -0
  25. package/dist/generated/Request.d.ts +3 -0
  26. package/dist/generated/Request.d.ts.map +1 -1
  27. package/dist/generated/ResponseData.d.ts +23 -1
  28. package/dist/generated/ResponseData.d.ts.map +1 -1
  29. package/dist/generated/ScreenshotRequest.d.ts +5 -0
  30. package/dist/generated/ScreenshotRequest.d.ts.map +1 -1
  31. package/dist/generated/index.d.ts +3 -0
  32. package/dist/generated/index.d.ts.map +1 -1
  33. package/dist/index.d.ts +61 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +106 -24
  36. package/dist/index.js.map +1 -1
  37. package/dist/types.d.ts +79 -1
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js.map +1 -1
  40. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.7.7](https://github.com/denisix/agent-rdp/compare/agent-rdp-v0.7.6...agent-rdp-v0.7.7) (2026-08-31)
4
+
5
+
6
+ ### Features
7
+
8
+ * add locate --exact and a click-at safety-net command ([f8962a0](https://github.com/denisix/agent-rdp/commit/f8962a04624cf7edbb4754584ded4e4174ab9d28))
9
+
10
+ ## [0.7.6](https://github.com/denisix/agent-rdp/compare/agent-rdp-v0.7.5...agent-rdp-v0.7.6) (2026-08-31)
11
+
12
+
13
+ ### Features
14
+
15
+ * add SDK parity for locate click/wait, automation.focused, and keyboard paste/down/up ([369ac2a](https://github.com/denisix/agent-rdp/commit/369ac2a83ef184335b459a35a33da69a56175a9c))
16
+
3
17
  ## [0.7.5](https://github.com/denisix/agent-rdp/compare/agent-rdp-v0.7.4...agent-rdp-v0.7.5) (2026-08-15)
4
18
 
5
19
 
package/README.md CHANGED
@@ -170,10 +170,51 @@ agent-rdp screenshot --output desktop.png
170
170
 
171
171
  # JSON metadata (path/width/height — image is always written to disk)
172
172
  agent-rdp --json screenshot --output desktop.png
173
+
174
+ # Capture just part of the screen (X,Y,WIDTH,HEIGHT in screen pixels).
175
+ # The result reports the offset, so a coordinate read off the crop can be
176
+ # turned back into a clickable one.
177
+ agent-rdp screenshot --region 100,380,600,30 --output row.png
173
178
  ```
174
179
 
175
180
  > Note: the CLI no longer has `screenshot --base64`. For agent pipelines, write a file and encode it yourself, or use the Node.js API's `rdp.screenshot({ path })`, which writes to disk and returns `{ path, width, height }` without materializing base64 — prefer this over the default `rdp.screenshot()` (which returns `{ base64, width, height }`) when the caller doesn't need the raw bytes, since echoing a base64 image into an LLM context is expensive.
176
181
 
182
+ ### Getting Coordinates Right
183
+
184
+ **Never estimate a coordinate by looking at a screenshot.** Screenshot pixels,
185
+ OCR boxes and click coordinates are all the same space, so a coordinate that
186
+ comes out of the tool is exact — but one guessed from an image is not. Images
187
+ get downscaled on their way into a vision model, and a click that is 30px off
188
+ lands on the wrong row, the wrong cell, or a search box.
189
+
190
+ Ask for the target by name and let the tool find it:
191
+
192
+ ```bash
193
+ # Click text, without a coordinate ever passing through your hands
194
+ agent-rdp locate "Добавить" --click
195
+
196
+ # Several matches? Choosing is explicit - it will not guess for you
197
+ agent-rdp locate "Добавить" --click --index 1
198
+
199
+ # Click a button by accessibility selector (preferred when UIA can see it)
200
+ agent-rdp automate click "#SaveButton"
201
+ ```
202
+
203
+ To verify a value in place, read the region rather than cropping an image
204
+ yourself — coordinates still come back in full-screen space:
205
+
206
+ ```bash
207
+ # Check one table row
208
+ agent-rdp locate --all --region 100,380,600,30
209
+ agent-rdp screenshot --region 100,380,600,30 -o row.png
210
+
211
+ # Confirm which field the keyboard is actually in before typing
212
+ agent-rdp automate focused
213
+ ```
214
+
215
+ `agent-rdp mouse click X Y` remains available for coordinates you got from
216
+ `locate`, `automate get`, or a deliberate calculation.
217
+
177
218
  ### Mouse Operations
178
219
 
179
220
  ```bash
@@ -199,6 +240,12 @@ agent-rdp mouse drag 100 100 500 500
199
240
  # Type text (supports Unicode)
200
241
  agent-rdp keyboard type "Hello, World!"
201
242
 
243
+ # Paste instead of type for long or non-Latin text: clipboard + Ctrl+V as one
244
+ # command. More reliable than `type` - it cannot lose individual keystrokes,
245
+ # and there's no gap between setting the clipboard and pasting for focus to
246
+ # move in.
247
+ agent-rdp keyboard paste "Привет, мир! A very long string types can drop pieces of."
248
+
202
249
  # Press key combinations
203
250
  agent-rdp keyboard press "ctrl+c"
204
251
  agent-rdp keyboard press "alt+tab"
@@ -208,15 +255,24 @@ agent-rdp keyboard press "ctrl+shift+esc"
208
255
  agent-rdp keyboard press enter
209
256
  agent-rdp keyboard press escape
210
257
  agent-rdp keyboard press f5
258
+
259
+ # Hold a key across other commands (shift-click, hold-and-drag, ...)
260
+ agent-rdp keyboard down shift
261
+ agent-rdp mouse click 200 300
262
+ agent-rdp keyboard up shift
211
263
  ```
212
264
 
213
265
  ### Scroll
214
266
 
267
+ Position defaults to the **screen center**, not whatever pane you're working
268
+ in — pass `--at` to target a specific window or control.
269
+
215
270
  ```bash
216
271
  agent-rdp scroll up --amount 3
217
272
  agent-rdp scroll down --amount 5
218
273
  agent-rdp scroll left
219
274
  agent-rdp scroll right
275
+ agent-rdp scroll down --amount 5 --at 600 400
220
276
  ```
221
277
 
222
278
  ### Locate (OCR)
@@ -230,11 +286,31 @@ agent-rdp locate "Cancel"
230
286
  # Pattern matching (glob-style)
231
287
  agent-rdp locate "Save*" --pattern
232
288
 
289
+ # Exact whole-line matching. Default mode is substring containment, so
290
+ # "Провести" also matches a button reading "Провести и закрыть" - two matches,
291
+ # and --click refuses to guess between them. --exact matches only the line
292
+ # that reads exactly "Провести".
293
+ agent-rdp locate "Провести" --exact --click
294
+
233
295
  # Get all text on screen
234
296
  agent-rdp locate --all
235
297
 
236
298
  # JSON output
237
299
  agent-rdp locate "OK" --json
300
+
301
+ # Click the match directly (see "Getting Coordinates Right" above)
302
+ agent-rdp locate "Cancel" --click
303
+ agent-rdp locate "Cancel" --double-click
304
+ agent-rdp locate "Cancel" --right-click
305
+
306
+ # Search only part of the screen. Results stay in full-screen coordinates,
307
+ # so --region composes with --click. A tight region also reads small text
308
+ # more reliably than a full-screen pass.
309
+ agent-rdp locate --all --region 100,380,600,30
310
+
311
+ # Block until text appears (e.g. a dialog finishing its animation), instead
312
+ # of polling `locate` in a loop from the outside. Composes with --click.
313
+ agent-rdp locate "OK" --wait 10000 --click
238
314
  ```
239
315
 
240
316
  Returns text lines with coordinates for clicking:
@@ -242,9 +318,38 @@ Returns text lines with coordinates for clicking:
242
318
  Found 1 line(s) containing 'Cancel':
243
319
  'Cancel Button' at (650, 420) size 80x14 - center: (690, 427)
244
320
 
245
- To click the first match: agent-rdp mouse click 690 427
321
+ To click it: agent-rdp locate 'Cancel' --click
322
+ ```
323
+
324
+ Clicking is deliberately strict: no match, or several matches without
325
+ `--index`, is an error rather than a guess. Prefer narrowing with `--region`
326
+ over picking an index. When two buttons share a prefix ("Провести" /
327
+ "Провести и закрыть"), use `--exact` so the ambiguity never arises.
328
+
329
+ ### Click-at (safe clicking of externally-computed coordinates)
330
+
331
+ When the click point comes from outside agent-rdp — a vision model reading a
332
+ screenshot, a manual crop — `locate --click` can't help, and a raw
333
+ `mouse click X Y` has no safety net. `click-at` clicks the point only if it
334
+ isn't ambiguously close to more than one detected text region:
335
+
336
+ ```bash
337
+ # Click, refusing if another label is within 10px of the target
338
+ agent-rdp click-at 665 209
339
+
340
+ # Tune the detection window and gap
341
+ agent-rdp click-at 665 209 --window 400x160 --min-gap 20
342
+
343
+ # Variants
344
+ agent-rdp click-at 665 209 --double-click
345
+ agent-rdp click-at 665 209 --right-click
246
346
  ```
247
347
 
348
+ The check uses OCR *detection* only (bounding boxes, script-agnostic), not
349
+ recognition — so it works even for text OCR can't read, e.g. custom-rendered
350
+ Cyrillic UIs where both UI Automation and `locate` text search fail. On
351
+ refusal it lists the nearby regions and exits non-zero; nothing is clicked.
352
+
248
353
  ### Clipboard
249
354
 
250
355
  ```bash
@@ -294,6 +399,12 @@ agent-rdp automate snapshot -d 3 # Limit depth to 3 levels
294
399
  agent-rdp automate snapshot -s "~*Notepad*" # Scope to a window/element
295
400
  agent-rdp automate snapshot -i -c -d 5 # Combine options
296
401
 
402
+ # Which control has keyboard focus right now?
403
+ # Use this after Tab/Enter to confirm where your keystrokes will go, instead
404
+ # of typing into a cell you assume is focused.
405
+ agent-rdp automate focused
406
+ # edit 'Количество' = "5,000" at (110, 391) 80x18 [focusable]
407
+
297
408
  # Pattern-based element operations (refs use @eN format)
298
409
  agent-rdp automate click "#SaveButton" # Click button
299
410
  agent-rdp automate click "@e5" # Click by ref number from snapshot
@@ -456,8 +567,11 @@ await rdp.mouse.drag({ from: { x: 100, y: 100 }, to: { x: 500, y: 500 } });
456
567
 
457
568
  // Keyboard
458
569
  await rdp.keyboard.type({ text: 'Hello World' });
570
+ await rdp.keyboard.paste('Привет, мир!'); // Reliable for long/non-Latin text
459
571
  await rdp.keyboard.press({ keys: 'ctrl+c' });
460
572
  await rdp.keyboard.press({ keys: 'enter' }); // Single keys use press()
573
+ await rdp.keyboard.down('shift'); // Hold across other commands
574
+ await rdp.keyboard.up('shift');
461
575
 
462
576
  // Scroll
463
577
  await rdp.scroll.up(); // Default amount: 3
@@ -477,8 +591,23 @@ if (matches.length > 0) {
477
591
  // Get all text on screen
478
592
  const allText = await rdp.locate({ all: true });
479
593
 
594
+ // Click a match directly - the coordinate never leaves the process
595
+ await rdp.locate({ text: 'Cancel', click: 'left' });
596
+
597
+ // Exact whole-line match - won't also hit "Провести и закрыть"
598
+ await rdp.locate({ text: 'Провести', exact: true, click: 'left' });
599
+
600
+ // Block until text appears, instead of polling in a loop
601
+ await rdp.locate({ text: 'OK', waitMs: 10000, click: 'left' });
602
+
603
+ // Safe click of an externally-computed point (e.g. a vision-model bbox):
604
+ // refuses if it's ambiguously close to more than one detected label
605
+ const result = await rdp.clickAt(665, 209);
606
+ if (!result.clicked) console.log('Ambiguous:', result.nearby);
607
+
480
608
  // Automation (requires --enable-win-automation at connect)
481
609
  const snapshot = await rdp.automation.snapshot({ interactive: true });
610
+ const focused = await rdp.automation.focused(); // What has keyboard focus right now
482
611
  await rdp.automation.click('@e5'); // Click button by ref
483
612
  await rdp.automation.click('@e5', { doubleClick: true }); // Double-click
484
613
  await rdp.automation.select('@e10'); // Select item
@@ -2,7 +2,7 @@
2
2
  * Automation controller for Windows UI Automation.
3
3
  */
4
4
  import type { RdpSession } from './index.js';
5
- import type { AutomationSnapshot, AutomationElementValue, AutomationWindowInfo, AutomationStatus, AutomationRunResult, AutomationRunPollResult, AutomationClickResult } from './types.js';
5
+ import type { AutomationSnapshot, AutomationElement, AutomationElementValue, AutomationWindowInfo, AutomationStatus, AutomationRunResult, AutomationRunPollResult, AutomationClickResult } from './types.js';
6
6
  export interface SnapshotOptions {
7
7
  /** Filter to interactive elements only (buttons, inputs, focusable). */
8
8
  interactive?: boolean;
@@ -12,6 +12,13 @@ export interface SnapshotOptions {
12
12
  depth?: number;
13
13
  /** Scope to a specific element (window, panel, etc.) via selector. */
14
14
  selector?: string;
15
+ /**
16
+ * Start from the currently focused element instead of the desktop root.
17
+ * Prefer `automation.focused()` for "what has focus right now" - it also
18
+ * picks safe defaults for `interactive`/`compact`, which can otherwise
19
+ * prune the focused element itself away.
20
+ */
21
+ focused?: boolean;
15
22
  }
16
23
  export interface GetOptions {
17
24
  /** Property to retrieve: 'name', 'value', 'states', 'bounds', or 'all'. */
@@ -103,6 +110,19 @@ export declare class AutomationController {
103
110
  * Refs are always included (use @eN format to reference elements).
104
111
  */
105
112
  snapshot(options?: SnapshotOptions): Promise<AutomationSnapshot>;
113
+ /**
114
+ * Get the element that currently has keyboard focus.
115
+ *
116
+ * Use this after `keyboard.press('tab')` or similar to confirm which field
117
+ * the keystrokes will actually land in before typing into it - an app's Tab
118
+ * order is its own business and cannot be predicted from the outside.
119
+ *
120
+ * Deliberately not compact and not interactive-only: both filters can prune
121
+ * the focused element itself, and the element most likely to be pruned - an
122
+ * unnamed container with no value - is exactly the half-edited form field
123
+ * this method exists to identify.
124
+ */
125
+ focused(): Promise<AutomationElement>;
106
126
  /**
107
127
  * Get element properties.
108
128
  */
@@ -1 +1 @@
1
- {"version":3,"file":"automation.d.ts","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automation.d.ts","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"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"}
@@ -56,11 +56,37 @@ export class AutomationController {
56
56
  compact: options.compact ?? false,
57
57
  max_depth: options.depth ?? 10,
58
58
  selector: options.selector,
59
- focused: false,
59
+ focused: options.focused ?? false,
60
60
  };
61
61
  const response = await this.rdp._send(request);
62
62
  return response.data;
63
63
  }
64
+ /**
65
+ * Get the element that currently has keyboard focus.
66
+ *
67
+ * Use this after `keyboard.press('tab')` or similar to confirm which field
68
+ * the keystrokes will actually land in before typing into it - an app's Tab
69
+ * order is its own business and cannot be predicted from the outside.
70
+ *
71
+ * Deliberately not compact and not interactive-only: both filters can prune
72
+ * the focused element itself, and the element most likely to be pruned - an
73
+ * unnamed container with no value - is exactly the half-edited form field
74
+ * this method exists to identify.
75
+ */
76
+ async focused() {
77
+ const request = {
78
+ type: 'automate',
79
+ op: 'snapshot',
80
+ interactive_only: false,
81
+ compact: false,
82
+ max_depth: 1,
83
+ selector: undefined,
84
+ focused: true,
85
+ };
86
+ const response = await this.rdp._send(request);
87
+ const snapshot = response.data;
88
+ return snapshot.root;
89
+ }
64
90
  /**
65
91
  * Get element properties.
66
92
  */
@@ -1 +1 @@
1
- {"version":3,"file":"automation.js","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automation.js","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Click a caller-supplied point, refusing if it's ambiguously close to more
3
+ * than one OCR-detected text region.
4
+ *
5
+ * For callers that already know where to click (e.g. a screenshot read by a
6
+ * vision model) and want the same "don't guess when it's ambiguous" safety
7
+ * `locate --click` gives text search - without needing OCR to correctly
8
+ * *read* the label, only to detect that one exists nearby. Detection and
9
+ * recognition are separate OCR stages, so this works even for text OCR
10
+ * recognition can't read (e.g. some Cyrillic renderers).
11
+ */
12
+ export type ClickAtRequest = {
13
+ x: number;
14
+ y: number;
15
+ /**
16
+ * Width of the OCR detection window centered on the point (default: 400).
17
+ */
18
+ window_width: number;
19
+ /**
20
+ * Height of the OCR detection window centered on the point (default: 160).
21
+ */
22
+ window_height: number;
23
+ /**
24
+ * Minimum pixel gap between the point's containing region and any other
25
+ * detected region's boundary, below which the click is refused as
26
+ * ambiguous (default: 10).
27
+ */
28
+ min_gap: number;
29
+ double_click: boolean;
30
+ right_click: boolean;
31
+ };
32
+ //# sourceMappingURL=ClickAtRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClickAtRequest.d.ts","sourceRoot":"","sources":["../../src/generated/ClickAtRequest.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IACpD;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;CAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
+ export {};
3
+ //# sourceMappingURL=ClickAtRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClickAtRequest.js","sourceRoot":"","sources":["../../src/generated/ClickAtRequest.ts"],"names":[],"mappings":"AAAA,4GAA4G"}
@@ -0,0 +1,26 @@
1
+ import type { OcrMatch } from "./OcrMatch.js";
2
+ /**
3
+ * Result of a `ClickAt` request.
4
+ */
5
+ export type ClickAtResult = {
6
+ /**
7
+ * Whether the click was actually sent.
8
+ */
9
+ clicked: boolean;
10
+ x: number;
11
+ y: number;
12
+ /**
13
+ * Text OCR recognized in the region containing the point, if any.
14
+ * Best-effort - may be inaccurate or absent for scripts OCR recognition
15
+ * struggles with; the safety check itself only relies on detection
16
+ * (bounding boxes), not on this being correct.
17
+ */
18
+ matched_text?: string;
19
+ /**
20
+ * Other detected regions within the configured gap of the point.
21
+ * Populated (with `clicked: false`) when the click was refused as
22
+ * ambiguous.
23
+ */
24
+ nearby: Array<OcrMatch>;
25
+ };
26
+ //# sourceMappingURL=ClickAtResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClickAtResult.d.ts","sourceRoot":"","sources":["../../src/generated/ClickAtResult.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC5B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IACvC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ClickAtResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClickAtResult.js","sourceRoot":"","sources":["../../src/generated/ClickAtResult.ts"],"names":[],"mappings":""}
@@ -19,5 +19,8 @@ export type KeyboardRequest = {
19
19
  } | {
20
20
  "action": "key_up";
21
21
  key: string;
22
+ } | {
23
+ "action": "paste";
24
+ text: string;
22
25
  };
23
26
  //# sourceMappingURL=KeyboardRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardRequest.d.ts","sourceRoot":"","sources":["../../src/generated/KeyboardRequest.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAC/D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE,CAAC"}
1
+ {"version":3,"file":"KeyboardRequest.d.ts","sourceRoot":"","sources":["../../src/generated/KeyboardRequest.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAC/D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { Region } from "./Region.js";
1
2
  /**
2
3
  * OCR-based text location request.
3
4
  * Uses screenshot + OCR to find text on screen and return coordinates.
@@ -11,6 +12,19 @@ export type LocateRequest = {
11
12
  * Use pattern matching (glob-style: * and ?).
12
13
  */
13
14
  pattern: boolean;
15
+ /**
16
+ * Require the whole OCR line to equal `text` (respecting
17
+ * `ignore_case`), instead of substring containment. Takes precedence
18
+ * over `pattern` when both are set.
19
+ *
20
+ * Default substring mode matches "Провести" against a line reading
21
+ * "Провести и закрыть" - usually harmless (`--click` already refuses to
22
+ * guess when a query is ambiguous), but `exact` gives a named way to
23
+ * avoid the ambiguity in the first place rather than relying on
24
+ * `--pattern` with no wildcards, which happens to require a full match
25
+ * as an undocumented side effect of glob anchoring.
26
+ */
27
+ exact: boolean;
14
28
  /**
15
29
  * Case-insensitive matching (default: true).
16
30
  */
@@ -19,5 +33,21 @@ export type LocateRequest = {
19
33
  * Return all text on screen (ignores text/pattern/ignore_case).
20
34
  */
21
35
  all: boolean;
36
+ /**
37
+ * Restrict OCR to this part of the desktop (default: the whole desktop).
38
+ *
39
+ * Match coordinates are still reported in full-desktop space.
40
+ */
41
+ region?: Region;
42
+ /**
43
+ * Keep re-running OCR until the text appears or this many milliseconds
44
+ * pass (default: single pass).
45
+ *
46
+ * Lets a caller block server-side on "the dialog is now visible" instead
47
+ * of polling screenshot/locate in a loop from the outside. On timeout the
48
+ * response is a `timeout` error rather than an empty success, so a
49
+ * wait-then-click sequence cannot fall through to clicking nothing.
50
+ */
51
+ wait_ms?: number;
22
52
  };
23
53
  //# sourceMappingURL=LocateRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocateRequest.d.ts","sourceRoot":"","sources":["../../src/generated/LocateRequest.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,GAAG,EAAE,OAAO,CAAC;CAAE,CAAC"}
1
+ {"version":3,"file":"LocateRequest.d.ts","sourceRoot":"","sources":["../../src/generated/LocateRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;OAWG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,GAAG,EAAE,OAAO,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAAE,CAAC"}
@@ -1,3 +1,2 @@
1
- // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
1
  export {};
3
2
  //# sourceMappingURL=LocateRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocateRequest.js","sourceRoot":"","sources":["../../src/generated/LocateRequest.ts"],"names":[],"mappings":"AAAA,4GAA4G"}
1
+ {"version":3,"file":"LocateRequest.js","sourceRoot":"","sources":["../../src/generated/LocateRequest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A rectangular sub-area of the desktop, in framebuffer pixels.
3
+ *
4
+ * Used to restrict a screenshot or an OCR pass to part of the screen. The
5
+ * origin is always the top-left of the full desktop, and any coordinate the
6
+ * daemon reports back for a region request is translated back into that same
7
+ * full-desktop space - callers never have to add the offset themselves.
8
+ */
9
+ export type Region = {
10
+ x: number;
11
+ y: number;
12
+ width: number;
13
+ height: number;
14
+ };
15
+ //# sourceMappingURL=Region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Region.d.ts","sourceRoot":"","sources":["../../src/generated/Region.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,MAAM,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
+ export {};
3
+ //# sourceMappingURL=Region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Region.js","sourceRoot":"","sources":["../../src/generated/Region.ts"],"names":[],"mappings":"AAAA,4GAA4G"}
@@ -1,4 +1,5 @@
1
1
  import type { AutomateRequest } from "./AutomateRequest.js";
2
+ import type { ClickAtRequest } from "./ClickAtRequest.js";
2
3
  import type { ClipboardRequest } from "./ClipboardRequest.js";
3
4
  import type { ConnectRequest } from "./ConnectRequest.js";
4
5
  import type { DriveRequest } from "./DriveRequest.js";
@@ -31,6 +32,8 @@ export type Request = {
31
32
  } & AutomateRequest | {
32
33
  "type": "locate";
33
34
  } & LocateRequest | {
35
+ "type": "click_at";
36
+ } & ClickAtRequest | {
34
37
  "type": "session_info";
35
38
  } | {
36
39
  "type": "ping";
@@ -1 +1 @@
1
- {"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../src/generated/Request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG,cAAc,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,iBAAiB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,eAAe,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG,gBAAgB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,eAAe,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../src/generated/Request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG,cAAc,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,iBAAiB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,eAAe,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG,gBAAgB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,eAAe,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,cAAc,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { AccessibilitySnapshot } from "./AccessibilitySnapshot.js";
2
2
  import type { AutomationStatus } from "./AutomationStatus.js";
3
+ import type { ClickAtResult } from "./ClickAtResult.js";
3
4
  import type { ClickResult } from "./ClickResult.js";
4
5
  import type { ElementValue } from "./ElementValue.js";
5
6
  import type { LocateResult } from "./LocateResult.js";
@@ -37,6 +38,14 @@ export type ResponseData = {
37
38
  * successful connect and then an unexplained "agent not ready".
38
39
  */
39
40
  automation_ready?: boolean;
41
+ /**
42
+ * Why the automation agent failed to come up, when `automation_ready`
43
+ * is `Some(false)`. Distinguishes "the automation directory
44
+ * couldn't be created" from "the agent launched but the handshake
45
+ * timed out" - both used to collapse into the same generic
46
+ * "automation not enabled" message on the next `automate` call.
47
+ */
48
+ automation_error?: string;
40
49
  } | {
41
50
  "type": "screenshot";
42
51
  /**
@@ -55,6 +64,17 @@ export type ResponseData = {
55
64
  * Base64-encoded image data.
56
65
  */
57
66
  base64: string;
67
+ /**
68
+ * X offset of the image within the full desktop (region captures only).
69
+ *
70
+ * Add this to an x coordinate read off the image to get a coordinate
71
+ * that can be clicked.
72
+ */
73
+ offset_x?: number;
74
+ /**
75
+ * Y offset of the image within the full desktop (region captures only).
76
+ */
77
+ offset_y?: number;
58
78
  } | {
59
79
  "type": "clipboard";
60
80
  /**
@@ -97,5 +117,7 @@ export type ResponseData = {
97
117
  "type": "click_result";
98
118
  } & ClickResult | {
99
119
  "type": "locate_result";
100
- } & LocateResult;
120
+ } & LocateResult | {
121
+ "type": "click_at_result";
122
+ } & ClickAtResult;
101
123
  //# sourceMappingURL=ResponseData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseData.d.ts","sourceRoot":"","sources":["../../src/generated/ResponseData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IACpE;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IACvD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAC1C;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG,WAAW,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IACpF;;OAEG;IACH,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC;IACzD;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,qBAAqB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG,YAAY,GAAG;IAAE,MAAM,EAAE,aAAa,CAAC;IAC1K;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG,gBAAgB,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG,WAAW,GAAG;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"ResponseData.d.ts","sourceRoot":"","sources":["../../src/generated/ResponseData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IACpE;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IACtD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAC7C;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG,WAAW,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IACpF;;OAEG;IACH,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC;IACzD;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,qBAAqB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG,YAAY,GAAG;IAAE,MAAM,EAAE,aAAa,CAAC;IAC1K;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;CAAE,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG,gBAAgB,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG,WAAW,GAAG;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,YAAY,GAAG;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAAG,aAAa,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ImageFormat } from "./ImageFormat.js";
2
+ import type { Region } from "./Region.js";
2
3
  /**
3
4
  * Screenshot request parameters.
4
5
  */
@@ -7,5 +8,9 @@ export type ScreenshotRequest = {
7
8
  * Image format.
8
9
  */
9
10
  format: ImageFormat;
11
+ /**
12
+ * Capture only this part of the desktop (default: the whole desktop).
13
+ */
14
+ region?: Region;
10
15
  };
11
16
  //# sourceMappingURL=ScreenshotRequest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenshotRequest.d.ts","sourceRoot":"","sources":["../../src/generated/ScreenshotRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAChC;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC;CAAE,CAAC"}
1
+ {"version":3,"file":"ScreenshotRequest.d.ts","sourceRoot":"","sources":["../../src/generated/ScreenshotRequest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAChC;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAAE,CAAC"}
@@ -4,6 +4,8 @@ export type { AutomateRequest } from './AutomateRequest.js';
4
4
  export type { AutomationHandshake } from './AutomationHandshake.js';
5
5
  export type { AutomationScrollDirection } from './AutomationScrollDirection.js';
6
6
  export type { AutomationStatus } from './AutomationStatus.js';
7
+ export type { ClickAtRequest } from './ClickAtRequest.js';
8
+ export type { ClickAtResult } from './ClickAtResult.js';
7
9
  export type { ClickResult } from './ClickResult.js';
8
10
  export type { ClipboardRequest } from './ClipboardRequest.js';
9
11
  export type { ConnectRequest } from './ConnectRequest.js';
@@ -25,6 +27,7 @@ export type { MappedDrive } from './MappedDrive.js';
25
27
  export type { MouseButton } from './MouseButton.js';
26
28
  export type { MouseRequest } from './MouseRequest.js';
27
29
  export type { OcrMatch } from './OcrMatch.js';
30
+ export type { Region } from './Region.js';
28
31
  export type { Request } from './Request.js';
29
32
  export type { Response } from './Response.js';
30
33
  export type { ResponseData } from './ResponseData.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -22,7 +22,7 @@
22
22
  * ```
23
23
  */
24
24
  import { AutomationController } from './automation.js';
25
- import { ConnectOptions, ConnectResult, ScreenshotOptions, ScreenshotResult, ScreenshotFileResult, SessionInfo, MappedDrive, MouseClickOptions, MouseDragOptions, ScrollOptions, KeyboardTypeOptions, KeyboardPressOptions, ClipboardSetOptions, LocateOptions, OcrMatch, Request, Response } from './types.js';
25
+ import { ConnectOptions, ConnectResult, ScreenshotOptions, ScreenshotResult, ScreenshotFileResult, SessionInfo, MappedDrive, MouseClickOptions, MouseDragOptions, ScrollOptions, KeyboardTypeOptions, KeyboardPressOptions, ClipboardSetOptions, LocateOptions, LocateClickResult, ClickAtOptions, ClickAtResult, OcrMatch, Request, Response } from './types.js';
26
26
  export * from './types.js';
27
27
  export { AutomationController } from './automation.js';
28
28
  export interface RdpSessionOptions {
@@ -70,6 +70,18 @@ export declare class KeyboardController {
70
70
  type(options: KeyboardTypeOptions): Promise<void>;
71
71
  /** Press a key combination (e.g., 'ctrl+c', 'alt+tab') or single key (e.g., 'enter'). */
72
72
  press(options: KeyboardPressOptions): Promise<void>;
73
+ /** Press and hold a key without releasing it (for shift-click, hold-and-drag, ...). */
74
+ down(key: string): Promise<void>;
75
+ /** Release a key previously held with `down`. */
76
+ up(key: string): Promise<void>;
77
+ /**
78
+ * Set the clipboard to `text` and paste it with Ctrl+V, as one command.
79
+ *
80
+ * More reliable than `type` for long or non-Latin text: it cannot lose
81
+ * individual keystrokes, and setting the clipboard then pasting in one
82
+ * daemon-side command means focus cannot move in between.
83
+ */
84
+ paste(text: string): Promise<void>;
73
85
  }
74
86
  /**
75
87
  * Scroll controller for RDP sessions.
@@ -159,6 +171,15 @@ export declare class RdpSession {
159
171
  path: string;
160
172
  }): Promise<ScreenshotFileResult>;
161
173
  screenshot(options?: ScreenshotOptions): Promise<ScreenshotResult>;
174
+ /**
175
+ * Wait for the given number of milliseconds.
176
+ *
177
+ * A plain client-side sleep - no daemon round-trip. Prefer
178
+ * `locate({ text, waitMs, ... })` when you are actually waiting on
179
+ * something appearing on screen: it blocks server-side and returns as soon
180
+ * as the text shows up, instead of guessing a fixed delay.
181
+ */
182
+ wait(ms: number): Promise<void>;
162
183
  /**
163
184
  * Get session information.
164
185
  */
@@ -171,8 +192,13 @@ export declare class RdpSession {
171
192
  * @param options.all If true, returns all text on screen
172
193
  * @param options.pattern Use glob-style pattern matching (* and ?)
173
194
  * @param options.caseSensitive Case-sensitive matching (default: false)
195
+ * @param options.region Search only part of the screen (results stay in
196
+ * full-screen coordinates)
174
197
  * @returns Array of matching text lines with coordinates
175
198
  *
199
+ * Coordinates come back in screen pixels, ready to click. Never estimate a
200
+ * coordinate by looking at a screenshot — use these, or `automation.click()`.
201
+ *
176
202
  * @example
177
203
  * ```typescript
178
204
  * // Find lines containing text
@@ -184,11 +210,45 @@ export declare class RdpSession {
184
210
  * // Pattern matching
185
211
  * const saveButtons = await rdp.locate({ text: 'Save*', pattern: true });
186
212
  *
213
+ * // Read one table row - a tight region reads more reliably, and the
214
+ * // coordinates are still full-screen ones
215
+ * const row = await rdp.locate({ all: true, region: { x: 100, y: 380, width: 600, height: 30 } });
216
+ *
187
217
  * // Get all text on screen
188
218
  * const allLines = await rdp.locate({ all: true });
219
+ *
220
+ * // Click a match without the coordinate passing through your code
221
+ * await rdp.locate({ text: 'Добавить', click: 'left' });
222
+ *
223
+ * // Block until a dialog's text appears, instead of polling in a loop
224
+ * const ok = await rdp.locate({ text: 'OK', waitMs: 10000, click: 'left' });
189
225
  * ```
190
226
  */
227
+ locate(options: LocateOptions & {
228
+ click: 'left' | 'double' | 'right';
229
+ }): Promise<LocateClickResult>;
191
230
  locate(options: LocateOptions): Promise<OcrMatch[]>;
231
+ /**
232
+ * Click a known point, refusing if it's ambiguously close to more than one
233
+ * detected text region.
234
+ *
235
+ * The safety net for coordinates computed outside agent-rdp - a vision
236
+ * model reading a screenshot, a manual crop - where `locate({ click })`
237
+ * can't be used. Uses OCR *detection* (bounding boxes) only, so it works
238
+ * even for text OCR recognition can't read.
239
+ *
240
+ * Returns the result including any nearby regions; `clicked: false` with a
241
+ * populated `nearby` array means the click was refused as ambiguous.
242
+ *
243
+ * @example
244
+ * ```typescript
245
+ * const result = await rdp.clickAt(665, 209);
246
+ * if (!result.clicked) {
247
+ * console.log('Ambiguous:', result.nearby);
248
+ * }
249
+ * ```
250
+ */
251
+ clickAt(x: number, y: number, options?: ClickAtOptions): Promise<ClickAtResult>;
192
252
  /**
193
253
  * Disconnect from the RDP server.
194
254
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -85,6 +85,24 @@ export class KeyboardController {
85
85
  async press(options) {
86
86
  await this.rdp._send({ type: 'keyboard', action: 'press', keys: options.keys });
87
87
  }
88
+ /** Press and hold a key without releasing it (for shift-click, hold-and-drag, ...). */
89
+ async down(key) {
90
+ await this.rdp._send({ type: 'keyboard', action: 'key_down', key });
91
+ }
92
+ /** Release a key previously held with `down`. */
93
+ async up(key) {
94
+ await this.rdp._send({ type: 'keyboard', action: 'key_up', key });
95
+ }
96
+ /**
97
+ * Set the clipboard to `text` and paste it with Ctrl+V, as one command.
98
+ *
99
+ * More reliable than `type` for long or non-Latin text: it cannot lose
100
+ * individual keystrokes, and setting the clipboard then pasting in one
101
+ * daemon-side command means focus cannot move in between.
102
+ */
103
+ async paste(text) {
104
+ await this.rdp._send({ type: 'keyboard', action: 'paste', text });
105
+ }
88
106
  }
89
107
  /**
90
108
  * Scroll controller for RDP sessions.
@@ -231,8 +249,13 @@ export class RdpSession {
231
249
  const response = await this._send({
232
250
  type: 'screenshot',
233
251
  format: options.format ?? 'png',
252
+ ...(options.region ? { region: options.region } : {}),
234
253
  });
235
254
  const data = response.data;
255
+ // A full-desktop capture has no offset; report 0 rather than undefined so
256
+ // callers can add it unconditionally.
257
+ const offsetX = data.offset_x ?? 0;
258
+ const offsetY = data.offset_y ?? 0;
236
259
  if (options.path) {
237
260
  fs.writeFileSync(options.path, Buffer.from(data.base64, 'base64'));
238
261
  return {
@@ -240,6 +263,8 @@ export class RdpSession {
240
263
  width: data.width,
241
264
  height: data.height,
242
265
  format: data.format,
266
+ offsetX,
267
+ offsetY,
243
268
  };
244
269
  }
245
270
  return {
@@ -247,8 +272,21 @@ export class RdpSession {
247
272
  width: data.width,
248
273
  height: data.height,
249
274
  format: data.format,
275
+ offsetX,
276
+ offsetY,
250
277
  };
251
278
  }
279
+ /**
280
+ * Wait for the given number of milliseconds.
281
+ *
282
+ * A plain client-side sleep - no daemon round-trip. Prefer
283
+ * `locate({ text, waitMs, ... })` when you are actually waiting on
284
+ * something appearing on screen: it blocks server-side and returns as soon
285
+ * as the text shows up, instead of guessing a fixed delay.
286
+ */
287
+ async wait(ms) {
288
+ await new Promise((resolve) => setTimeout(resolve, ms));
289
+ }
252
290
  /**
253
291
  * Get session information.
254
292
  */
@@ -265,41 +303,85 @@ export class RdpSession {
265
303
  uptime_secs: data.uptime_secs,
266
304
  };
267
305
  }
306
+ async locate(options) {
307
+ const response = await this._send({
308
+ type: 'locate',
309
+ text: options.text ?? '',
310
+ pattern: options.pattern ?? false,
311
+ exact: options.exact ?? false,
312
+ ignore_case: !(options.caseSensitive ?? false),
313
+ all: options.all ?? false,
314
+ ...(options.region ? { region: options.region } : {}),
315
+ ...(options.waitMs !== undefined ? { wait_ms: options.waitMs } : {}),
316
+ });
317
+ const data = response.data;
318
+ const matches = data.matches ?? [];
319
+ if (!options.click) {
320
+ return matches;
321
+ }
322
+ // Clicking is deliberately strict: no match, or several matches without
323
+ // `index`, is an error rather than a guess - the wrong one of several
324
+ // identically-named controls is worse than not clicking at all.
325
+ if (matches.length === 0) {
326
+ throw new RdpError('invalid_request', `No text matching '${options.text ?? ''}' found`);
327
+ }
328
+ let target;
329
+ if (options.index !== undefined) {
330
+ const m = matches[options.index];
331
+ if (!m) {
332
+ throw new RdpError('invalid_request', `index ${options.index} is out of range: only ${matches.length} match(es) found`);
333
+ }
334
+ target = m;
335
+ }
336
+ else if (matches.length === 1) {
337
+ target = matches[0];
338
+ }
339
+ else {
340
+ throw new RdpError('invalid_request', `${matches.length} matches found - pass index to choose one, or narrow the search with region`);
341
+ }
342
+ const action = options.click === 'double' ? 'double_click' : options.click === 'right' ? 'right_click' : 'click';
343
+ await this._send({ type: 'mouse', action, x: target.center_x, y: target.center_y });
344
+ return { clicked: true, text: target.text, x: target.center_x, y: target.center_y };
345
+ }
268
346
  /**
269
- * Locate text on screen using OCR.
347
+ * Click a known point, refusing if it's ambiguously close to more than one
348
+ * detected text region.
270
349
  *
271
- * @param options Locate options
272
- * @param options.text Text to search for (required unless all is true)
273
- * @param options.all If true, returns all text on screen
274
- * @param options.pattern Use glob-style pattern matching (* and ?)
275
- * @param options.caseSensitive Case-sensitive matching (default: false)
276
- * @returns Array of matching text lines with coordinates
350
+ * The safety net for coordinates computed outside agent-rdp - a vision
351
+ * model reading a screenshot, a manual crop - where `locate({ click })`
352
+ * can't be used. Uses OCR *detection* (bounding boxes) only, so it works
353
+ * even for text OCR recognition can't read.
354
+ *
355
+ * Returns the result including any nearby regions; `clicked: false` with a
356
+ * populated `nearby` array means the click was refused as ambiguous.
277
357
  *
278
358
  * @example
279
359
  * ```typescript
280
- * // Find lines containing text
281
- * const matches = await rdp.locate({ text: 'Non HDR' });
282
- * if (matches.length > 0) {
283
- * await rdp.mouse.click({ x: matches[0].center_x, y: matches[0].center_y });
360
+ * const result = await rdp.clickAt(665, 209);
361
+ * if (!result.clicked) {
362
+ * console.log('Ambiguous:', result.nearby);
284
363
  * }
285
- *
286
- * // Pattern matching
287
- * const saveButtons = await rdp.locate({ text: 'Save*', pattern: true });
288
- *
289
- * // Get all text on screen
290
- * const allLines = await rdp.locate({ all: true });
291
364
  * ```
292
365
  */
293
- async locate(options) {
366
+ async clickAt(x, y, options = {}) {
294
367
  const response = await this._send({
295
- type: 'locate',
296
- text: options.text ?? '',
297
- pattern: options.pattern ?? false,
298
- ignore_case: !(options.caseSensitive ?? false),
299
- all: options.all ?? false,
368
+ type: 'click_at',
369
+ x,
370
+ y,
371
+ window_width: options.windowWidth ?? 400,
372
+ window_height: options.windowHeight ?? 160,
373
+ min_gap: options.minGap ?? 10,
374
+ double_click: options.doubleClick ?? false,
375
+ right_click: options.rightClick ?? false,
300
376
  });
301
377
  const data = response.data;
302
- return data.matches ?? [];
378
+ return {
379
+ clicked: data.clicked,
380
+ x: data.x,
381
+ y: data.y,
382
+ matched_text: data.matched_text,
383
+ nearby: data.nearby ?? [],
384
+ };
303
385
  }
304
386
  /**
305
387
  * Disconnect from the RDP server.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * IPC types are auto-generated from Rust (see generated/).
5
5
  * SDK convenience types are defined here.
6
6
  */
7
- export type { Request, ConnectRequest, ScreenshotRequest, MouseRequest, KeyboardRequest, ScrollRequest, ClipboardRequest, DriveRequest, LocateRequest, AutomateRequest, Response, ResponseData, ErrorCode, ErrorInfo, SessionInfo, SessionSummary, MappedDrive, LocateResult, OcrMatch, DriveMapping, ImageFormat, MouseButton, ScrollDirection, ConnectionState, AccessibilityElement, AccessibilitySnapshot, AutomationStatus, AutomationScrollDirection, AutomationHandshake, ClickResult, RunResult, ElementBounds, ElementValue, WindowInfo, WindowAction, WaitState, FileIpcRequest, FileIpcResponse, FileIpcError, } from './generated/index.js';
7
+ export type { Request, ConnectRequest, ScreenshotRequest, MouseRequest, KeyboardRequest, ScrollRequest, ClipboardRequest, DriveRequest, LocateRequest, ClickAtRequest, AutomateRequest, Response, ResponseData, ErrorCode, ErrorInfo, SessionInfo, SessionSummary, MappedDrive, LocateResult, ClickAtResult, OcrMatch, DriveMapping, ImageFormat, MouseButton, ScrollDirection, ConnectionState, AccessibilityElement, AccessibilitySnapshot, AutomationStatus, AutomationScrollDirection, AutomationHandshake, ClickResult, RunResult, ElementBounds, ElementValue, WindowInfo, WindowAction, WaitState, FileIpcRequest, FileIpcResponse, FileIpcError, } from './generated/index.js';
8
8
  import type { DriveMapping, ErrorCode } from './generated/index.js';
9
9
  /** Options for connecting to an RDP session. */
10
10
  export interface ConnectOptions {
@@ -25,9 +25,23 @@ export interface ConnectResult {
25
25
  width: number;
26
26
  height: number;
27
27
  }
28
+ /**
29
+ * A rectangular part of the screen, in screen pixels.
30
+ *
31
+ * Coordinates a region request reports back are always translated into
32
+ * full-screen space, so they can be passed straight to `mouse.click()`.
33
+ */
34
+ export interface ScreenRegion {
35
+ x: number;
36
+ y: number;
37
+ width: number;
38
+ height: number;
39
+ }
28
40
  /** Options for taking a screenshot. */
29
41
  export interface ScreenshotOptions {
30
42
  format?: 'png' | 'jpeg';
43
+ /** Capture only this part of the screen instead of the whole desktop. */
44
+ region?: ScreenRegion;
31
45
  /**
32
46
  * Write the image to this file path instead of returning it as base64.
33
47
  * Use this when the caller doesn't need the raw image bytes in memory
@@ -43,6 +57,10 @@ export interface ScreenshotFileResult {
43
57
  width: number;
44
58
  height: number;
45
59
  format: string;
60
+ /** X offset of the image within the full desktop (0 unless `region` was used). */
61
+ offsetX: number;
62
+ /** Y offset of the image within the full desktop (0 unless `region` was used). */
63
+ offsetY: number;
46
64
  }
47
65
  /** Result of a screenshot operation returned as base64. */
48
66
  export interface ScreenshotResult {
@@ -50,6 +68,10 @@ export interface ScreenshotResult {
50
68
  width: number;
51
69
  height: number;
52
70
  format: string;
71
+ /** X offset of the image within the full desktop (0 unless `region` was used). */
72
+ offsetX: number;
73
+ /** Y offset of the image within the full desktop (0 unless `region` was used). */
74
+ offsetY: number;
53
75
  }
54
76
  /** A point representing x,y coordinates. */
55
77
  export interface Point {
@@ -104,8 +126,64 @@ export interface LocateOptions {
104
126
  all?: boolean;
105
127
  /** Use glob-style pattern matching (* and ?). */
106
128
  pattern?: boolean;
129
+ /**
130
+ * Require the whole OCR line to equal the search text, not just contain
131
+ * it. Default substring mode matches "Провести" against a line reading
132
+ * "Провести и закрыть"; `exact` avoids that ambiguity. Takes precedence
133
+ * over `pattern`.
134
+ */
135
+ exact?: boolean;
107
136
  /** Case-sensitive matching (default: false). */
108
137
  caseSensitive?: boolean;
138
+ /**
139
+ * Search only this part of the screen. A tight region also reads more
140
+ * reliably than a full-screen pass. Match coordinates stay in full-screen
141
+ * space.
142
+ */
143
+ region?: ScreenRegion;
144
+ /**
145
+ * Keep retrying until the text appears, up to this many milliseconds.
146
+ * Blocks server-side instead of polling `locate` in a loop from the
147
+ * outside. Ignored when `all` is true - there is no target text to wait
148
+ * for.
149
+ */
150
+ waitMs?: number;
151
+ /**
152
+ * Click the match instead of just returning its position. Never estimate
153
+ * a coordinate by reading a screenshot - use this, or `automation.click()`.
154
+ */
155
+ click?: 'left' | 'double' | 'right';
156
+ /**
157
+ * Which match to click when several are found (0-based). Required
158
+ * whenever `click` is set and more than one match comes back - clicking
159
+ * the wrong one of several identically-named controls is worse than not
160
+ * clicking at all, so an ambiguous match throws rather than guessing.
161
+ */
162
+ index?: number;
163
+ }
164
+ /** Result of `locate()` when `click` is set. */
165
+ export interface LocateClickResult {
166
+ clicked: true;
167
+ /** Text of the match that was clicked. */
168
+ text: string;
169
+ x: number;
170
+ y: number;
171
+ }
172
+ /** Options for `clickAt()`. */
173
+ export interface ClickAtOptions {
174
+ /** OCR detection window width around the point (default: 400). */
175
+ windowWidth?: number;
176
+ /** OCR detection window height around the point (default: 160). */
177
+ windowHeight?: number;
178
+ /**
179
+ * Refuse the click if another detected text region is within this many
180
+ * pixels of the target (default: 10).
181
+ */
182
+ minGap?: number;
183
+ /** Double-click instead of single click. */
184
+ doubleClick?: boolean;
185
+ /** Right-click instead of left click. */
186
+ rightClick?: boolean;
109
187
  }
110
188
  /** Bounds for automation elements (alias for ElementBounds). */
111
189
  export type { ElementBounds as AutomationElementBounds } from './generated/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0MH,sBAAsB;AAEtB,sCAAsC;AACtC,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IADT,YACS,IAAe,EACtB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAW;QAItB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6RH,sBAAsB;AAEtB,sCAAsC;AACtC,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IADT,YACS,IAAe,EACtB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAW;QAItB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@denisixnpm/agent-rdp",
3
- "version": "0.7.5",
3
+ "version": "0.7.7",
4
4
  "description": "CLI tool for AI agents to control Windows Remote Desktop sessions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,11 +48,11 @@
48
48
  },
49
49
  "homepage": "https://github.com/denisix/agent-rdp#readme",
50
50
  "optionalDependencies": {
51
- "@denisixnpm/agent-rdp-darwin-arm64": "^0.7.5",
52
- "@denisixnpm/agent-rdp-darwin-x64": "^0.7.5",
53
- "@denisixnpm/agent-rdp-linux-x64": "^0.7.5",
54
- "@denisixnpm/agent-rdp-linux-arm64": "^0.7.5",
55
- "@denisixnpm/agent-rdp-win32-x64": "^0.7.5",
56
- "@denisixnpm/agent-rdp-win32-arm64": "^0.7.5"
51
+ "@denisixnpm/agent-rdp-darwin-arm64": "^0.7.7",
52
+ "@denisixnpm/agent-rdp-darwin-x64": "^0.7.7",
53
+ "@denisixnpm/agent-rdp-linux-x64": "^0.7.7",
54
+ "@denisixnpm/agent-rdp-linux-arm64": "^0.7.7",
55
+ "@denisixnpm/agent-rdp-win32-x64": "^0.7.7",
56
+ "@denisixnpm/agent-rdp-win32-arm64": "^0.7.7"
57
57
  }
58
58
  }