@harusame64/desktop-touch-mcp 0.11.12 → 0.12.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.
Files changed (2) hide show
  1. package/README.md +47 -0
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -497,6 +497,53 @@ Setting `DESKTOP_TOUCH_FORCE_FOCUS=1` makes `forceFocus: true` the default for a
497
497
 
498
498
  ---
499
499
 
500
+ ## Auto Guard (v0.12+)
501
+
502
+ Action tools (`mouse_click`, `mouse_drag`, `keyboard_type`, `keyboard_press`, `click_element`, `set_element_value`, `browser_click_element`, `browser_navigate`) automatically guard each action when you pass `windowTitle` / `tabId`:
503
+
504
+ - Verifies target window identity (process restart / HWND replacement detected)
505
+ - Confirms click coordinates are inside the target window rect
506
+ - Returns `post.perception.status` on every response — including failures — so the LLM can recover without a screenshot
507
+
508
+ **Disabling auto guard** — set `DESKTOP_TOUCH_AUTO_GUARD=0` to restore v0.11.12 behavior (no auto guard):
509
+
510
+ ```json
511
+ {
512
+ "mcpServers": {
513
+ "desktop-touch": {
514
+ "type": "stdio",
515
+ "command": "npx",
516
+ "args": ["-y", "@harusame64/desktop-touch-mcp"],
517
+ "env": {
518
+ "DESKTOP_TOUCH_AUTO_GUARD": "0"
519
+ }
520
+ }
521
+ }
522
+ }
523
+ ```
524
+
525
+ When auto guard is enabled (default), `post.perception.status` will be one of:
526
+
527
+ | Status | Meaning |
528
+ |---|---|
529
+ | `ok` | Guard passed — target verified |
530
+ | `unguarded` | `windowTitle` not provided; action ran without guard |
531
+ | `target_not_found` | No window matched the given title |
532
+ | `ambiguous_target` | Multiple windows matched; use a more specific title |
533
+ | `identity_changed` | Window was replaced (process restart / HWND change) |
534
+ | `unsafe_coordinates` | Click coordinates are outside the target window rect |
535
+ | `needs_escalation` | Use `browser_click_element` or specify `windowTitle` |
536
+
537
+ When `unsafe_coordinates` or `identity_changed` is returned, the response may include a `suggestedFix.fixId`. Pass that `fixId` to the next `mouse_click` call to approve the recovery:
538
+
539
+ ```json
540
+ { "name": "mouse_click", "arguments": { "fixId": "fix-..." } }
541
+ ```
542
+
543
+ The fix is one-shot and expires in 15 seconds.
544
+
545
+ ---
546
+
500
547
  ## Known limitations
501
548
 
502
549
  | Limitation | Detail | Workaround |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harusame64/desktop-touch-mcp",
3
- "version": "0.11.12",
3
+ "version": "0.12.0",
4
4
  "description": "LLM-native Windows computer-use MCP server with 56 tools for screenshots, UIA, mouse/keyboard, Chrome CDP, terminal, SmartScroll, and perception guards",
5
5
  "engines": {
6
6
  "node": ">=20.0.0"