@denisixnpm/agent-rdp 0.7.4 → 0.7.5

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 CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.7.5](https://github.com/denisix/agent-rdp/compare/agent-rdp-v0.7.4...agent-rdp-v0.7.5) (2026-08-15)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * stop deleting the daemon log, and unbreak automate run quoting ([010ede0](https://github.com/denisix/agent-rdp/commit/010ede0a79ab080582b1cc07bd790e42048265d4))
9
+
3
10
  ## [0.7.4](https://github.com/denisix/agent-rdp/compare/agent-rdp-v0.7.3...agent-rdp-v0.7.4) (2026-08-14)
4
11
 
5
12
 
package/README.md CHANGED
@@ -561,22 +561,46 @@ If you need vision-based coordinate detection with Claude, implement your own ha
561
561
  ## Requirements
562
562
 
563
563
  - Rust 1.75 or later
564
- - Target RDP server with Network Level Authentication (NLA) enabled
565
- - Target RDP server must support TLS 1.2 or later. agent-rdp uses `rustls`, which does not implement TLS 1.0/1.1, so legacy targets (e.g. Windows Server 2008 R2) are not currently supported and will fail with a TLS handshake error.
564
+ - Target RDP server must offer **TLS** for RDP. agent-rdp uses `rustls`, which does not implement TLS 1.0/1.1, so the server must support TLS 1.2 or later — legacy targets (e.g. Windows Server 2008 R2) are not supported and fail with a TLS handshake error.
565
+ - NLA (`UserAuthentication=1`) is **recommended but not required** TLS is what matters. The stock Windows defaults work as shipped.
566
566
 
567
- If the server has NLA **and** TLS disabled it offers only Standard RDP Security,
568
- which IronRDP refuses outright, and `connect` fails with *"server only supports
569
- Standard RDP Security"*. Enable NLA on the host to fix it:
567
+ ### RDP security layer settings
568
+
569
+ All six combinations measured against Windows Server 2022, varying only these two
570
+ values under `HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp`:
571
+
572
+ | `SecurityLayer` | `UserAuthentication` | Meaning | Result |
573
+ |---|---|---|---|
574
+ | `1` (Negotiate) | `1` | **Windows default** | **works** |
575
+ | `2` (TLS) | `1` | TLS + NLA (most explicit) | **works** |
576
+ | `2` (TLS) | `0` | TLS, no NLA | **works** |
577
+ | `0` (RDP) | `1` | NLA forces CredSSP/TLS | **works** |
578
+ | `1` (Negotiate) | `0` | server picks, and declines TLS | fails |
579
+ | `0` (RDP) | `0` | legacy RC4 only | fails |
580
+
581
+ The rule: **agent-rdp works wherever the host offers TLS.** With NLA on that is
582
+ always the case, because NLA forces CredSSP/TLS regardless of `SecurityLayer`.
583
+ Both failing rows are NLA-off hosts that refuse TLS outright.
584
+
585
+ If `connect` reports *"server only supports Standard RDP Security"*, the host is
586
+ in one of those two rows. Either enable NLA (preferred — it also gives you
587
+ pre-authentication) or force TLS:
570
588
 
571
589
  ```powershell
572
- Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1
573
- Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name SecurityLayer -Value 2
574
- Restart-Service TermService -Force
590
+ $k = 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp'
591
+ Set-ItemProperty -Path $k -Name UserAuthentication -Value 1 # enable NLA, or:
592
+ Set-ItemProperty -Path $k -Name SecurityLayer -Value 2 # force TLS
575
593
  ```
576
594
 
577
- Standard RDP Security uses RC4 with a well-known key derivation, so credentials
578
- sent over it are trivially recoverable — this is worth fixing on the host rather
579
- than working around.
595
+ New connections normally pick this up immediately; restart `TermService` only if
596
+ they don't (a restart drops existing sessions).
597
+
598
+ Neither failing case is fixable client-side. With `SecurityLayer=1` and NLA off
599
+ the server returns `SSL_NOT_ALLOWED_BY_SERVER` even though the client advertises
600
+ `PROTOCOL_SSL` — verified by testing a build that requested SSL *only*, which was
601
+ rejected identically. And Standard RDP Security (`SecurityLayer=0`, NLA off) is
602
+ refused by IronRDP itself, which implements no RC4 transport layer; it uses a
603
+ well-known key derivation, so credentials sent over it are recoverable in transit.
580
604
 
581
605
  ## Credits
582
606
 
@@ -28,6 +28,15 @@ export type ResponseData = {
28
28
  * Desktop height.
29
29
  */
30
30
  height: number;
31
+ /**
32
+ * Whether the UI Automation agent came up, when it was requested.
33
+ *
34
+ * `None` if automation wasn't requested. `Some(false)` means RDP is
35
+ * connected but `automate` commands will not work - previously this
36
+ * failure was only warned about in the daemon log, so callers saw a
37
+ * successful connect and then an unexplained "agent not ready".
38
+ */
39
+ automation_ready?: boolean;
31
40
  } | {
32
41
  "type": "screenshot";
33
42
  /**
@@ -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;CAAE,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IAC3C;;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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@denisixnpm/agent-rdp",
3
- "version": "0.7.4",
3
+ "version": "0.7.5",
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.4",
52
- "@denisixnpm/agent-rdp-darwin-x64": "^0.7.4",
53
- "@denisixnpm/agent-rdp-linux-x64": "^0.7.4",
54
- "@denisixnpm/agent-rdp-linux-arm64": "^0.7.4",
55
- "@denisixnpm/agent-rdp-win32-x64": "^0.7.4",
56
- "@denisixnpm/agent-rdp-win32-arm64": "^0.7.4"
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"
57
57
  }
58
58
  }