{"_id":"@denisixnpm/agent-rdp","_rev":"25-3209c5247985b473f46f3014a142175a","name":"@denisixnpm/agent-rdp","dist-tags":{"latest":"0.7.22"},"versions":{"0.0.1":{"name":"@denisixnpm/agent-rdp","version":"0.0.1","license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.0.1","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"dist":{"shasum":"44c7831393da9d59561b4d1cbc4e1b437374a4ec","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.0.1.tgz","fileCount":1,"integrity":"sha512-gw9T0hlD7SPj+FuU0EKZH7J4mVJ6EO2tb/3OrIFP52EGP3ISqrv4qUK11m8JoxMnx6dJkb7JKxIvY3JcVH53Ww==","signatures":[{"sig":"MEUCIENGZdmbKrYSZbrYtksTiVn+wxoCPXOKYz9PqaMPxRezAiEAwfL1hk0iUFFQGww6HseK+qmTOMz3cqJ2cipCGOS9fSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321},"_npmUser":{"name":"denisixnpm","email":"denisix@gmail.com"},"deprecated":"placeholder - use 0.7.0+","repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git"},"_npmVersion":"12.0.2","description":"Placeholder - real release publishing shortly","directories":{},"_nodeVersion":"26.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.0.1_1786719473819_0.09409912556301325","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@denisixnpm/agent-rdp","version":"0.7.0","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.0","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"be38b317ff666b106db27a89cd678f26ab983667","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.0.tgz","fileCount":190,"integrity":"sha512-27pFagg29jqignwYcTyvyBDVTb+aZCoVWDYuWRtXxXWe+DyZA9dtyf/n8ikbx5ULIQwv5Ab4DSE4q6lweAd3zQ==","signatures":[{"sig":"MEUCIDPuKJnDe24AZuE0gt0M55VU/RRa77nkBdgb90p34eqfAiEA1lJdOP3FJjbZVm/aPyKyT+B/GyPk4uSuT56rJDbu86Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12400404},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"79243e1df4286087dd7014efb179b929d6e79dce","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.0","@denisixnpm/agent-rdp-win32-x64":"^0.7.0","@denisixnpm/agent-rdp-darwin-x64":"^0.7.0","@denisixnpm/agent-rdp-linux-arm64":"^0.7.0","@denisixnpm/agent-rdp-win32-arm64":"^0.7.0","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.0_1786721866813_0.8530970756504646","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@denisixnpm/agent-rdp","version":"0.7.1","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.1","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"98af3d8e11dcdcafc4c265aa63c36acccda2aeec","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.1.tgz","fileCount":190,"integrity":"sha512-5SXzawDqvYzK88tMAWopyY6SGdSGZ4GYMFhUg2GtMDq6CAaEz7CYdYBed8fN8crjoqrEI3+Dj5IoGn1lPG5Kcw==","signatures":[{"sig":"MEYCIQC/PMKTuB9j0LBAOL9RmsZQrV/KfK5tkDDcxLNwNdHelAIhALkYNkV6EHuRpzPHj8rFFwyE4lsSa2Poj87Z6ObAUex7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12400587},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"df90ecd0c5781dcfec5a54ff112df1eba04ce076","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.1","@denisixnpm/agent-rdp-win32-x64":"^0.7.1","@denisixnpm/agent-rdp-darwin-x64":"^0.7.1","@denisixnpm/agent-rdp-linux-arm64":"^0.7.1","@denisixnpm/agent-rdp-win32-arm64":"^0.7.1","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.1_1786722994464_0.7440110556479713","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@denisixnpm/agent-rdp","version":"0.7.2","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.2","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"ae6349b4d3fe54fc7877572115b3498e4d8e73fc","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.2.tgz","fileCount":190,"integrity":"sha512-W5Yygv/XOy7Fs6+LegpXC1urWTD3tfgNLyZ8B9uMXvLp4913CuCN+gcKl4feH1XVjnt2M+1rYUikyJgMrw5oyA==","signatures":[{"sig":"MEQCICnIjXejiOaJF+KZgkOeRGTrgJMdpD8JXgF7KwMNQWD7AiAWu88nY001XydJHHrn7bQkg6Is2oaCp97PlmU4YF+y9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12403028},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"16a02ad01e42d11758173618eeb3adbd243b0999","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.2","@denisixnpm/agent-rdp-win32-x64":"^0.7.2","@denisixnpm/agent-rdp-darwin-x64":"^0.7.2","@denisixnpm/agent-rdp-linux-arm64":"^0.7.2","@denisixnpm/agent-rdp-win32-arm64":"^0.7.2","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.2_1786724670719_0.8626255135640766","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@denisixnpm/agent-rdp","version":"0.7.3","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.3","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"5f217a6f73b0e7f578e043bff4b9ae8e08fe0a9a","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.3.tgz","fileCount":190,"integrity":"sha512-UngUh+DdzaGhGk/7P/U+p7/AQa/DYLNW6FiBqG/M7S3Rc2T+w4s4sB+VWte4oxfdbO0byKse6E74UdBdc3Aj7w==","signatures":[{"sig":"MEUCIBMEqqsnR84mnfBUOyaEtAnOKGATkGLsdygtakOM5qkEAiEA3QQ2wdldEDo2yj8DWB5x9P9Xl34Ww7aSqlhMpazeQCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12405437},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a0e1f6383327fd30827ff7c0d6295714240748fb","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.3","@denisixnpm/agent-rdp-win32-x64":"^0.7.3","@denisixnpm/agent-rdp-darwin-x64":"^0.7.3","@denisixnpm/agent-rdp-linux-arm64":"^0.7.3","@denisixnpm/agent-rdp-win32-arm64":"^0.7.3","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.3_1786742313541_0.9517533253354333","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@denisixnpm/agent-rdp","version":"0.7.4","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.4","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"d1b550f39743e47fc47141b9bde987a29ed8c4fe","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.4.tgz","fileCount":190,"integrity":"sha512-+WFUarxKxxk0x7TlsGa6yopolp1eeyWbE5f9C2yodSMuDsdA8V+Wc+txtAXAINSGOsQcHwbo1WzBq6cufWIP4Q==","signatures":[{"sig":"MEUCICnINdQrTC6NZ5F3vRqevUo9Q9OeyHAV2iylip1BXPnlAiEAwc7e2W6hF6T/3HqWgGngcQefiIqjp1/c9Yxj3UHEd6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12405620},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"02e120211fc860f5faabb7a7b7293e4dc5a8edb2","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.4","@denisixnpm/agent-rdp-win32-x64":"^0.7.4","@denisixnpm/agent-rdp-darwin-x64":"^0.7.4","@denisixnpm/agent-rdp-linux-arm64":"^0.7.4","@denisixnpm/agent-rdp-win32-arm64":"^0.7.4","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.4"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.4_1786745312547_0.45547479820783066","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@denisixnpm/agent-rdp","version":"0.7.5","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.5","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"6b76eaa02579cf21abe7610c927b74c1d7a23a49","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.5.tgz","fileCount":190,"integrity":"sha512-WQOxi7oJ835EmXwrq3YFbEj72gratsBSOPVhDdnNZTnSIlwYKOv7/XT5UK7IG3Sf7yDdaQomcUPJiC0Qms1j+w==","signatures":[{"sig":"MEUCIA1FzTT2OPTp/ZTANgHMq6Dtc2yLaXYBVAhAjVjisB44AiEAoJNg3YOYbJ7KancOQtcBLJT+o4NjEg71+cAj2zAnzo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12407652},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2b9ceda02549e1ba5b16ff369da2aa61241c7a96","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.5","@denisixnpm/agent-rdp-win32-x64":"^0.7.5","@denisixnpm/agent-rdp-darwin-x64":"^0.7.5","@denisixnpm/agent-rdp-linux-arm64":"^0.7.5","@denisixnpm/agent-rdp-win32-arm64":"^0.7.5","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.5"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.5_1786798028944_0.2126511304676515","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"@denisixnpm/agent-rdp","version":"0.7.6","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.6","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"6fcb7b352e7cc006d1f1e2442af046accdfc00a4","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.6.tgz","fileCount":194,"integrity":"sha512-wEqIaGpPK1ASrSJs8/WPK43oKNMzOfVn0UFu0l0WW3ikJ9Olli3p2/qrYc2KHeNAe9zoxB+cYeVOT7pDHNUreQ==","signatures":[{"sig":"MEUCIDAkFI7IXIxFOcYvtbSm8TKbHTYvX2tsCQDj8Q1aqM8VAiEAktfZWII6SWrj7l9QRwNdpK4jKYEQn9x3nNBMwWGqWWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12426469},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"be9d67e05fc3796ad82d106577f2da3ef0d72268","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.6","@denisixnpm/agent-rdp-win32-x64":"^0.7.6","@denisixnpm/agent-rdp-darwin-x64":"^0.7.6","@denisixnpm/agent-rdp-linux-arm64":"^0.7.6","@denisixnpm/agent-rdp-win32-arm64":"^0.7.6","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.6"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.6_1788176185102_0.6450488948818474","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"@denisixnpm/agent-rdp","version":"0.7.7","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.7","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"b55b12f48a71eefdc13599dd8b9b105c8e5847ad","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.7.tgz","fileCount":202,"integrity":"sha512-iRUI8Volar4NRvJXg2RJWYJC7g9BMMhQ86Wl21TELZiCMj/SZEqimowarvScl5g/uoxQWi5xVW0HXp/1c/Nblg==","signatures":[{"sig":"MEUCIHA/cruaxdOltrKyB1rQwX4SgDa1tZHLhKn2EVdVNg4aAiEA3kDGAPdjfDKC2kUtY9De+6bJDuyd7Y50ocuJHATECQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12438019},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7118e4983a6b5a236edcfc7e1059b8bb9b9a014d","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.7","@denisixnpm/agent-rdp-win32-x64":"^0.7.7","@denisixnpm/agent-rdp-darwin-x64":"^0.7.7","@denisixnpm/agent-rdp-linux-arm64":"^0.7.7","@denisixnpm/agent-rdp-win32-arm64":"^0.7.7","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.7"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.7_1788198004680_0.777708655401731","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"@denisixnpm/agent-rdp","version":"0.7.8","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.8","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"a70a564090185865cc3caecb8bf1eaca02e7d855","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.8.tgz","fileCount":202,"integrity":"sha512-Qc9X8G10yG3En1S/ttuS4NDDvIEbYllQ8trfQRVflwKgKAdgtdgmMtlfHg5kRJqiHlphR1ED8cRptXuJQa/IAw==","signatures":[{"sig":"MEUCIFfYy+Nle1EB3ljc82cOrrv7wq7dHi4KHnGcHFGAc1SFAiEA5jygIVIm3xfvCQXIBs2zUeCUPPxvB70ciRAOL+TB7cE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12446865},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b38cac8c184ae31b0a5ba37f72806b4a34c48e0a","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.8","@denisixnpm/agent-rdp-win32-x64":"^0.7.8","@denisixnpm/agent-rdp-darwin-x64":"^0.7.8","@denisixnpm/agent-rdp-linux-arm64":"^0.7.8","@denisixnpm/agent-rdp-win32-arm64":"^0.7.8","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.8"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.8_1788218027652_0.8233737303913085","host":"s3://npm-registry-packages-npm-production"}},"0.7.9":{"name":"@denisixnpm/agent-rdp","version":"0.7.9","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.9","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"be6a6e584f14e7f17c327dae3f7f93a99e37e789","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.9.tgz","fileCount":202,"integrity":"sha512-e8i/kRlj2+tOWmaolhmHMCx/bQIEMkWEtXzCxAlD4O4bKHtc4fYH+j8+qku6J2SMUWjeku0a5+RsopwRn6EzaQ==","signatures":[{"sig":"MEUCIQDpvgx4f91IIwCqe+zCVOocOxjoL/oq0+QmsAVGkV7GMgIgdlcaAPngJu8Ox0SDeU9OcA4eo/Qu4w51nDP5k2KBmdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12450782},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c3de45850ab5d6d5ebfade9f68032aebdeb249f6","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.9","@denisixnpm/agent-rdp-win32-x64":"^0.7.9","@denisixnpm/agent-rdp-darwin-x64":"^0.7.9","@denisixnpm/agent-rdp-linux-arm64":"^0.7.9","@denisixnpm/agent-rdp-win32-arm64":"^0.7.9","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.9"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.9_1788265148416_0.7553616359820556","host":"s3://npm-registry-packages-npm-production"}},"0.7.10":{"name":"@denisixnpm/agent-rdp","version":"0.7.10","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.10","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"9344340e416773848b5bf468ceae48cd7745ce9f","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.10.tgz","fileCount":214,"integrity":"sha512-8XFcvEs5JFYaBOc/91JIsL/S2GuyJlBUyczz1g/NaMj/FiIPbjCiwr8ogbRLM+R29FDLRnsypliGpJ2uedcGng==","signatures":[{"sig":"MEQCIF4caOvKD2Q0W/PaL+RHh4z+HwA7ClZ80FDdNha2KqMQAiA1kDchp3p7XCzcpmYZ5qlIOBShoFxirPUz3in8O1qbzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12461425},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"388463e86602c61da7769f4ce9f64691efbda96d","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.10","@denisixnpm/agent-rdp-win32-x64":"^0.7.10","@denisixnpm/agent-rdp-darwin-x64":"^0.7.10","@denisixnpm/agent-rdp-linux-arm64":"^0.7.10","@denisixnpm/agent-rdp-win32-arm64":"^0.7.10","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.10"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.10_1788292540531_0.8654151854319283","host":"s3://npm-registry-packages-npm-production"}},"0.7.11":{"name":"@denisixnpm/agent-rdp","version":"0.7.11","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.11","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"910853c4b538b9ee79ae9784cebf2d2785140d05","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.11.tgz","fileCount":214,"integrity":"sha512-vRpAa+iduhdGdNGfr/1ZeHHwx7bD8cUzUUYnnzREBzdFzWK2jvzeRn7iGxRbNOkwmXUDgscs63Qm3GX+lHahrQ==","signatures":[{"sig":"MEQCICTCTNiJtr9CLqppj9ZmXMI88O3XQqYM0Ei9OiV5yq1kAiANU47es22haM4uDmpQTtYlygW/hGEIxEIW+x6hjfFN7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12452627},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1abe6cfa674095d6afe19ccf14a72c2f357ccfc0","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.11","@denisixnpm/agent-rdp-win32-x64":"^0.7.11","@denisixnpm/agent-rdp-darwin-x64":"^0.7.11","@denisixnpm/agent-rdp-linux-arm64":"^0.7.11","@denisixnpm/agent-rdp-win32-arm64":"^0.7.11","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.11"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.11_1788355807967_0.1781448084959656","host":"s3://npm-registry-packages-npm-production"}},"0.7.12":{"name":"@denisixnpm/agent-rdp","version":"0.7.12","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.12","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"8dab1d0d6deb2042cb73b93cfa7f83889d680665","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.12.tgz","fileCount":214,"integrity":"sha512-lxGqyIfZJmtsNplbsemZK9y4bQA90RXKcX2dSM0t48MSesA+4H5DaQUxSm5mnSBQsdM6aCTt3/GBtDT8YVPBOw==","signatures":[{"sig":"MEUCIFAXj/wRGEIEndGzE7HCFeV0hWuKOa60TD0l6CBP/v5lAiEAwYCv30s7EUB8EmJNGrfM/UjC8fynIBCG1rPW0N1VyIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12464439},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d8e530d6531b96a002bb4d230c9e34bdff608796","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.12","@denisixnpm/agent-rdp-win32-x64":"^0.7.12","@denisixnpm/agent-rdp-darwin-x64":"^0.7.12","@denisixnpm/agent-rdp-linux-arm64":"^0.7.12","@denisixnpm/agent-rdp-win32-arm64":"^0.7.12","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.12"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.12_1788363705791_0.12166718745246508","host":"s3://npm-registry-packages-npm-production"}},"0.7.13":{"name":"@denisixnpm/agent-rdp","version":"0.7.13","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.13","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"49e5d2e517f02fc5a36f2914c3cd951f1f05f951","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.13.tgz","fileCount":214,"integrity":"sha512-6Tb79KqCRGW22jY+geaN1H6AjDiHnAMAHrCMc6v7fVCmQ5gJVsqS2YHnC/j5JF6Wht7vTXuEy2Xo6leNBfPNEw==","signatures":[{"sig":"MEYCIQDdRxY1utDZEVp5iB7L1X4aGhVYs36/fp4xNYHNYyDDPgIhAMgXOSn6dBxHcSk4q3Duab3ibE1vP/IZxbKAR0Po2lzH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12468109},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"dad148d1bd03b477e8adbbcdc4b5328e5ee08437","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.13","@denisixnpm/agent-rdp-win32-x64":"^0.7.13","@denisixnpm/agent-rdp-darwin-x64":"^0.7.13","@denisixnpm/agent-rdp-linux-arm64":"^0.7.13","@denisixnpm/agent-rdp-win32-arm64":"^0.7.13","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.13"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.13_1788379505181_0.05063196366375444","host":"s3://npm-registry-packages-npm-production"}},"0.7.14":{"name":"@denisixnpm/agent-rdp","version":"0.7.14","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.14","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"9c11696e3064b935aa5fcc968e81429af4a96699","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.14.tgz","fileCount":226,"integrity":"sha512-Q0OfUY5FMnK7yGziL6VHOK7iH2c9eu/gXkfeHtTRbRRz9FXCb8LhbNSNLddoYFdd9JoI5J/iDxyRIUdi1d5ZBw==","signatures":[{"sig":"MEUCIQD1APse23R58mlhrHEQ+N+3ihZoAAjeCD7YzyJ/NEz1tQIgW+gjvuYf9DagJ/lYg4ekIZJVYw5drKJjXOgKykGp540=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12475156},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d4e494f1ed198f92193d32b450b024eed05d39f6","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.14","@denisixnpm/agent-rdp-win32-x64":"^0.7.14","@denisixnpm/agent-rdp-darwin-x64":"^0.7.14","@denisixnpm/agent-rdp-linux-arm64":"^0.7.14","@denisixnpm/agent-rdp-win32-arm64":"^0.7.14","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.14"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.14_1788474108050_0.6243607146783379","host":"s3://npm-registry-packages-npm-production"}},"0.7.15":{"name":"@denisixnpm/agent-rdp","version":"0.7.15","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.15","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"679e38526edc6df3079d808c72f8e0e76cc1dc8e","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.15.tgz","fileCount":226,"integrity":"sha512-uoa0WLqDNOjrvnHajy368wWOmIKwkxLZrinZ3nk21qjipDwvAfcTnDJDOTscz5PocHpUBNkoqXlYJYtTBGT4aQ==","signatures":[{"sig":"MEYCIQDcomHladm45eEEMnfYDkMQ8mGaMOPa+8La54rY7L9ynQIhAKo73/b8PEAYqHt0kBEU6gm8uUu8mQ5GgEKVkE5G6R7b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12479966},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"26bf80f9560477e8cafab1cb316bd57059682b17","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.15","@denisixnpm/agent-rdp-win32-x64":"^0.7.15","@denisixnpm/agent-rdp-darwin-x64":"^0.7.15","@denisixnpm/agent-rdp-linux-arm64":"^0.7.15","@denisixnpm/agent-rdp-win32-arm64":"^0.7.15","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.15"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.15_1788574360414_0.6933763113505522","host":"s3://npm-registry-packages-npm-production"}},"0.7.16":{"name":"@denisixnpm/agent-rdp","version":"0.7.16","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.16","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"9be6a2768159754f7b59ec3d6d45d1be8fc76eba","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.16.tgz","fileCount":226,"integrity":"sha512-mttrYpENyGnwdbTHzNK17CiX1trQcX9BJp9ee0qFKpgHc3pW99xipI0I9KYUvAaFYa2g/LTc8DtOcbcJJf/0Xg==","signatures":[{"sig":"MEYCIQCNbA4dwt91XMOfZJdovvt0SGjj3TTKkWvM/dN/hqJTUAIhAOdwEl7U+g8DoEnEvuwwY5YGueMC3aSg9jagNaCkfEZy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12484399},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c3411c5f3d2f0383a08c04289c019d22bec776ad","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.16","@denisixnpm/agent-rdp-win32-x64":"^0.7.16","@denisixnpm/agent-rdp-darwin-x64":"^0.7.16","@denisixnpm/agent-rdp-linux-arm64":"^0.7.16","@denisixnpm/agent-rdp-win32-arm64":"^0.7.16","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.16"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.16_1788637369447_0.24761523153128406","host":"s3://npm-registry-packages-npm-production"}},"0.7.17":{"name":"@denisixnpm/agent-rdp","version":"0.7.17","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.17","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"0876de432e3b9cff8d419c5eb43b399bafd5978f","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.17.tgz","fileCount":226,"integrity":"sha512-PnfoKQ9zL/gaJ8O9xbcH5TsX1EwVnG9AZ9Rw3xnvEcCczeUf+g9T8i3iEE25zRm8hLI4Z2VJ9yysQ6cveRJS6w==","signatures":[{"sig":"MEUCIQDyILHkYU37pTYJovvLikhysY6ft3yplKA/nqwjG1OiDAIgWFUb2F8R+Min6tVeQIsXlqnPJAQ/NSJG0EozpZKFmMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12489006},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9cefcdc6ea529a20b29f83be2f02b48b93d9058f","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.17","@denisixnpm/agent-rdp-win32-x64":"^0.7.17","@denisixnpm/agent-rdp-darwin-x64":"^0.7.17","@denisixnpm/agent-rdp-linux-arm64":"^0.7.17","@denisixnpm/agent-rdp-win32-arm64":"^0.7.17","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.17"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.17_1788699457897_0.3211337313397622","host":"s3://npm-registry-packages-npm-production"}},"0.7.18":{"name":"@denisixnpm/agent-rdp","version":"0.7.18","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.18","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"25408abd7dff6369e58ddbfb01e821b8db15d99b","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.18.tgz","fileCount":226,"integrity":"sha512-nCwVGzaT6+1NjXQN0fQAdkMoSNA89PeXz5iXWuFRkSmw7r/rjYrzSKdtF7mux7Z+gbMssY7sdbq6Q4WGRMpiYQ==","signatures":[{"sig":"MEUCIElVhLZ7FlK2JoY0zsJNAmovtYOIstsGU16XH2ZsHZlQAiEAxtUhOzUjfVq3/OfGamL/AaID5pcFAV03/iirKJX+SOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12489934},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b80a31f30301e60c9b8944787e531cf5b43dd649","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.18","@denisixnpm/agent-rdp-win32-x64":"^0.7.18","@denisixnpm/agent-rdp-darwin-x64":"^0.7.18","@denisixnpm/agent-rdp-linux-arm64":"^0.7.18","@denisixnpm/agent-rdp-win32-arm64":"^0.7.18","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.18"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.18_1788738380113_0.604611628016938","host":"s3://npm-registry-packages-npm-production"}},"0.7.19":{"name":"@denisixnpm/agent-rdp","version":"0.7.19","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.19","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"c977d7d2b1e16c6d769bd1d091a06b623247be43","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.19.tgz","fileCount":226,"integrity":"sha512-muTov5YJ4y52MMyqWMrHm5pRCWT90FKQJZZr0c3O5mRn8rV7kb0cROv3K/8UhHtoHZfwVfmp8fyr4xTHsra3Kw==","signatures":[{"sig":"MEQCICIozGMyNefgNTk6QXvVEkTcolKrYcJ36hy849xX8nlwAiAlAC9k4Jt3yqDwfNjCQgfgbEZnBShbLFvYw2vvp27KUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12505917},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1066d8e392640d28bc35c80361994e3439a7b125","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.19","@denisixnpm/agent-rdp-win32-x64":"^0.7.19","@denisixnpm/agent-rdp-darwin-x64":"^0.7.19","@denisixnpm/agent-rdp-linux-arm64":"^0.7.19","@denisixnpm/agent-rdp-win32-arm64":"^0.7.19","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.19"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.19_1788754145378_0.7942645957048906","host":"s3://npm-registry-packages-npm-production"}},"0.7.20":{"name":"@denisixnpm/agent-rdp","version":"0.7.20","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.20","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"fc4881b42611b3dbbb5886744d5e93b07475a8eb","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.20.tgz","fileCount":226,"integrity":"sha512-5dsSsdpezeg1iOsG6CVvpRshAsa/odXpIFpNIr382RM4TnlcCtjeaKli7Sc9wTfwlH7lRhUNsqy71T0eh6GCQw==","signatures":[{"sig":"MEUCIBmK/k4Sjq0sdKGmGuLc9W+TJdTK8jDN8zaJhlnJcOV7AiEAzR9yp3BwBuJnG8Fz1+zzplApA5GIvDzwhqODTPzwvtQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12513899},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4c694d8bd2ea6356f9ca0e5a499b0b2e4a3fb407","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.20","@denisixnpm/agent-rdp-win32-x64":"^0.7.20","@denisixnpm/agent-rdp-darwin-x64":"^0.7.20","@denisixnpm/agent-rdp-linux-arm64":"^0.7.20","@denisixnpm/agent-rdp-win32-arm64":"^0.7.20","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.20"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.20_1788829159966_0.5106987363355207","host":"s3://npm-registry-packages-npm-production"}},"0.7.21":{"name":"@denisixnpm/agent-rdp","version":"0.7.21","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","_id":"@denisixnpm/agent-rdp@0.7.21","maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"contributors":[{"url":"original author","name":"Nick Yu","email":"wiseyu@gmail.com"}],"homepage":"https://github.com/denisix/agent-rdp#readme","bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"bin":{"agent-rdp":"bin/cli.js"},"dist":{"shasum":"1858cace5914d47e7dd5dc6a5d58ea547c5af3cc","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.21.tgz","fileCount":230,"integrity":"sha512-DZsIb0H3OG9Cp/8OxOq85hrR60YKcYXKhjpzAhdpbe9PESSovSZYc6yn4288wYawg50zf52Hc+waxuL/F4olBQ==","signatures":[{"sig":"MEYCIQDYu6pNV9gN1DDXTWB9FNFIVaVHAwH651Q/oXUhl7k78wIhANJ1tQZ9Zl1HsrsAuehl2VDHkNB2G7grlk+8JTQM4I4F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12518354},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"11ad064c8743a4f318c6fd0e9a1a20d136763032","scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"repository":{"url":"git+https://github.com/denisix/agent-rdp.git","type":"git","directory":"packages/agent-rdp"},"_npmVersion":"12.0.2","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"optionalDependencies":{"@denisixnpm/agent-rdp-linux-x64":"^0.7.21","@denisixnpm/agent-rdp-win32-x64":"^0.7.21","@denisixnpm/agent-rdp-darwin-x64":"^0.7.21","@denisixnpm/agent-rdp-linux-arm64":"^0.7.21","@denisixnpm/agent-rdp-win32-arm64":"^0.7.21","@denisixnpm/agent-rdp-darwin-arm64":"^0.7.21"},"_npmOperationalInternal":{"tmp":"tmp/agent-rdp_0.7.21_1789302267951_0.5779639534103322","host":"s3://npm-registry-packages-npm-production"}},"0.7.22":{"name":"@denisixnpm/agent-rdp","version":"0.7.22","description":"CLI tool for AI agents to control Windows Remote Desktop sessions","repository":{"type":"git","url":"git+https://github.com/denisix/agent-rdp.git","directory":"packages/agent-rdp"},"author":{"name":"denisix"},"contributors":[{"name":"Nick Yu","email":"wiseyu@gmail.com","url":"original author"}],"license":"MIT OR Apache-2.0","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"bin":{"agent-rdp":"bin/cli.js"},"scripts":{"build:ts":"tsc","prepublishOnly":"npm run build:ts"},"keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"homepage":"https://github.com/denisix/agent-rdp#readme","optionalDependencies":{"@denisixnpm/agent-rdp-darwin-arm64":"^0.7.22","@denisixnpm/agent-rdp-darwin-x64":"^0.7.22","@denisixnpm/agent-rdp-linux-x64":"^0.7.22","@denisixnpm/agent-rdp-linux-arm64":"^0.7.22","@denisixnpm/agent-rdp-win32-x64":"^0.7.22","@denisixnpm/agent-rdp-win32-arm64":"^0.7.22"},"gitHead":"d228c6a20d45ea26a7a8d70ace541b8b9fb56b8f","_id":"@denisixnpm/agent-rdp@0.7.22","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-T7q4OVj5HtU1G64UlpXIwH3dofJj47OmqXW6gZU9eA0T/le5WBBzBdzNkmB6xT52PLpBMKSRzZjncZnA6xB5gw==","shasum":"a2649cb12c638c0e1a4c7b93a3833f0726d8b9e3","tarball":"https://registry.npmjs.org/@denisixnpm/agent-rdp/-/agent-rdp-0.7.22.tgz","fileCount":234,"unpackedSize":12541087,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@denisixnpm%2fagent-rdp@0.7.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAfJsX45JerHfOtV1yTRHth3Q7mMyoYwe3t+SXJAWofZAiEAgo49fEWNIrV6DM6QCWKYwqf34M4CWWVOZv48DyvVIB0="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d2377070-5e65-451d-8b28-ff89efaf249f"}},"directories":{},"maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-rdp_0.7.22_1789520481639_0.2929258465827902"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-14T14:57:53.642Z","modified":"2026-09-16T01:01:22.307Z","0.0.1":"2026-08-14T14:57:53.962Z","0.7.0":"2026-08-14T15:37:47.135Z","0.7.1":"2026-08-14T15:56:34.817Z","0.7.2":"2026-08-14T16:24:30.996Z","0.7.3":"2026-08-14T21:18:34.045Z","0.7.4":"2026-08-14T22:08:32.878Z","0.7.5":"2026-08-15T12:47:09.248Z","0.7.6":"2026-08-31T11:36:25.375Z","0.7.7":"2026-08-31T17:40:05.019Z","0.7.8":"2026-08-31T23:13:47.988Z","0.7.9":"2026-09-01T12:19:08.711Z","0.7.10":"2026-09-01T19:55:40.903Z","0.7.11":"2026-09-02T13:30:08.300Z","0.7.12":"2026-09-02T15:41:46.061Z","0.7.13":"2026-09-02T20:05:05.515Z","0.7.14":"2026-09-03T22:21:48.352Z","0.7.15":"2026-09-05T02:12:40.729Z","0.7.16":"2026-09-05T19:42:49.845Z","0.7.17":"2026-09-06T12:57:38.196Z","0.7.18":"2026-09-06T23:46:20.423Z","0.7.19":"2026-09-07T04:09:05.719Z","0.7.20":"2026-09-08T00:59:20.278Z","0.7.21":"2026-09-13T12:24:28.274Z","0.7.22":"2026-09-16T01:01:21.957Z"},"bugs":{"url":"https://github.com/denisix/agent-rdp/issues"},"author":{"name":"denisix"},"license":"MIT OR Apache-2.0","homepage":"https://github.com/denisix/agent-rdp#readme","keywords":["rdp","remote-desktop","windows","automation","cli","agent"],"repository":{"type":"git","url":"git+https://github.com/denisix/agent-rdp.git","directory":"packages/agent-rdp"},"description":"CLI tool for AI agents to control Windows Remote Desktop sessions","contributors":[{"name":"Nick Yu","email":"wiseyu@gmail.com","url":"original author"}],"maintainers":[{"name":"denisixnpm","email":"denisix@gmail.com"}],"readme":"# agent-rdp\n\n[![npm](https://img.shields.io/npm/v/@denisixnpm/agent-rdp.svg)](https://www.npmjs.com/package/@denisixnpm/agent-rdp)\n[![CI](https://github.com/denisix/agent-rdp/actions/workflows/ci.yml/badge.svg)](https://github.com/denisix/agent-rdp/actions/workflows/ci.yml)\n[![Release](https://github.com/denisix/agent-rdp/actions/workflows/release-please.yml/badge.svg)](https://github.com/denisix/agent-rdp/actions/workflows/release-please.yml)\n[![license](https://img.shields.io/npm/l/@denisixnpm/agent-rdp.svg)](#license)\n[![platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20Windows-informational)](#installation)\n\nA CLI tool for AI agents to control Windows Remote Desktop sessions, built on [IronRDP](https://github.com/Devolutions/IronRDP).\n\nScreenshots, mouse/keyboard input, clipboard sync, drive mapping, verified file\ntransfer, Windows UI Automation, OCR text location, and JSON output for every\ncommand — across named sessions with automatic daemon lifecycle.\n\n## Demo\n\nClaude Code automating SQLite database and table creation via RDP:\n\nhttps://github.com/user-attachments/assets/91892b39-4edb-412b-b265-55ccd75d7421\n\n## Installation\n\n```bash\nnpm install -g @denisixnpm/agent-rdp        # CLI\nnpx add-skill https://github.com/denisix/agent-rdp   # as a Claude Code skill\n```\n\n<details>\n<summary>From a GitHub release (standalone binary)</summary>\n\nEach release attaches a binary per platform plus the OCR models as\n`agent-rdp-models.tar.gz` / `.zip`. The models are architecture-independent, so\nthey ship once. The binary alone covers everything except `locate`, which needs\nthe models — extract them and point `AGENT_RDP_MODELS_DIR` at them.\n\n```bash\ntar -xzf agent-rdp-linux-x64.tar.gz -C ~/.local/bin      # or agent-rdp-darwin-arm64.tar.gz\nchmod +x ~/.local/bin/agent-rdp\nmkdir -p ~/.local/share/agent-rdp/models\ntar -xzf agent-rdp-models.tar.gz -C ~/.local/share/agent-rdp/models\nexport AGENT_RDP_MODELS_DIR=\"$HOME/.local/share/agent-rdp/models\"   # add to your shell rc\n```\n\n```powershell\nExpand-Archive agent-rdp-win32-x64.zip -DestinationPath \"$env:LOCALAPPDATA\\agent-rdp\"\nExpand-Archive agent-rdp-models.zip -DestinationPath \"$env:LOCALAPPDATA\\agent-rdp\\models\"\nsetx AGENT_RDP_MODELS_DIR \"$env:LOCALAPPDATA\\agent-rdp\\models\"   # restart the terminal after\n```\n\nmacOS release binaries are unsigned. If Gatekeeper blocks it with *\"cannot be\nopened because the developer cannot be verified\"*:\n`xattr -d com.apple.quarantine ~/.local/bin/agent-rdp`\n\nInstalling from npm needs none of this — the models ship in the package.\n</details>\n\n<details>\n<summary>From source</summary>\n\n```bash\ngit clone https://github.com/denisix/agent-rdp && cd agent-rdp\nbun install\nbun run build      # native binary\nbun run build:ts   # TypeScript\n```\n</details>\n\n## Using with AI coding agents\n\n**Claude Code** — `npx add-skill https://github.com/denisix/agent-rdp` installs\nthe [SKILL.md](skills/agent-rdp/SKILL.md) workflow so Claude knows the commands,\nflags and gotchas without you explaining them. It installs the CLI on first use\nif it isn't on PATH. Then ask in plain language:\n\n```\nConnect to 192.168.1.100 as Administrator (password: secret), open Notepad,\ntype \"hello from Claude\", and take a screenshot.\n```\n\n**Codex** reads `AGENTS.md` instead. Add a section pointing at the tool:\n\n```bash\ncat >> AGENTS.md <<'EOF'\n\n## Remote Windows control\n\nUse the `agent-rdp` CLI (npm i -g @denisixnpm/agent-rdp) to control Windows machines via RDP:\nconnect, screenshot, mouse/keyboard input, and UI Automation. See\nhttps://github.com/denisix/agent-rdp for the full command reference.\nEOF\n```\n\n## Usage\n\n### Connect\n\n```bash\nagent-rdp connect --host 192.168.1.100 --username Administrator --password 'secret'\n\n# Environment variables (recommended - keeps the password out of the process list)\nexport AGENT_RDP_USERNAME=Administrator AGENT_RDP_PASSWORD=secret\nagent-rdp connect --host 192.168.1.100\n\n# stdin (most secure)\necho 'secret' | agent-rdp connect --host 192.168.1.100 -u Administrator --password-stdin\n\n# Only when the session's daemon has stayed unresponsive for over a minute:\n# stop it (gracefully, then by force) and start a fresh one. Plain `connect`\n# refuses an unresponsive daemon rather than killing one that is merely busy.\nagent-rdp connect --replace --host 192.168.1.100\n\nagent-rdp disconnect\n```\n\n### Screenshot\n\n```bash\nagent-rdp screenshot --output desktop.png            # default ./screenshot.png\nagent-rdp --json screenshot --output desktop.png     # metadata; image always goes to disk\nagent-rdp screenshot --region 100,380,600,30 -o row.png   # crop; reports the offset back\n```\n\nA screenshot is the last frame the server painted, not a live poll. Each one\nreports `frame_age_ms` (time since the server last sent anything), and `--json`\nadds `frame_seq` and `frame_hash` — two screenshots with the same value are\nguaranteed pixel-identical, which is how you confirm a frame actually changed\nafter an action rather than hashing the saved file yourself. A large\n`frame_age_ms` usually just means an idle desktop, since RDP servers send\nnothing when nothing changes; a genuinely dead connection is detected within a\nfew minutes at most (see \"A dead transport is detected\" below) and reported as\ndisconnected.\n\n> The CLI has no `screenshot --base64`. In Node, `rdp.screenshot({ path })`\n> writes to disk and returns `{ path, width, height }` — prefer it over the\n> base64-returning form when the caller doesn't need the bytes, since echoing a\n> base64 image into an LLM context is expensive.\n\n### Getting coordinates right\n\n**Never estimate a coordinate by looking at a screenshot.** Screenshot pixels,\nOCR boxes and click coordinates share one space, so a coordinate the tool\nreturns is exact — one guessed from an image is not. Images get downscaled on\ntheir way into a vision model, and a click 30px off lands on the wrong row.\n\nAsk for the target by name and let the tool find it:\n\n```bash\nagent-rdp locate \"Добавить\" --click          # coordinate never passes through your hands\nagent-rdp locate \"Добавить\" --click --index 1  # several matches: choosing is explicit\nagent-rdp automate click \"#SaveButton\"       # preferred when UI Automation can see it\nagent-rdp automate focused                   # confirm which field has focus before typing\n```\n\n`agent-rdp mouse click X Y` remains available for coordinates you got from\n`locate`, `automate get`, or a deliberate calculation.\n\n### Mouse and keyboard\n\n```bash\nagent-rdp mouse click 500 300\nagent-rdp mouse right-click 500 300\nagent-rdp mouse double-click 500 300\nagent-rdp mouse move 100 200\nagent-rdp mouse drag 100 100 500 500\n\nagent-rdp keyboard type \"Hello, World!\"        # Unicode, batched into one round-trip\nagent-rdp keyboard type \"text\" --delay 20      # pace it if the remote app drops fast input\nagent-rdp keyboard paste \"Привет, мир!\"        # clipboard + Ctrl+V as one command\nagent-rdp keyboard press \"ctrl+c\"              # also alt+tab, enter, escape, f5, win+r\nagent-rdp keyboard send \"left left right up\" --interval-ms 80\n                                              # one call, one connection, focus held throughout\nagent-rdp keyboard down shift                  # hold across other commands\nagent-rdp keyboard up shift\n```\n\nPrefer `keyboard paste` for long or non-Latin text: it cannot lose individual\nkeystrokes, and leaves no gap for focus to move between setting the clipboard\nand pasting.\n\nInput is acknowledged. A keystroke that could not be encoded or written to the\ntransport returns an error instead of reporting success, and a failed write\nends the session rather than being logged while later commands keep answering\nfrom a dead socket. The same applies to mouse and scroll.\n\n`keyboard send` exists for sequences that have to arrive in order and on time.\nSeparate `press` calls are each a process and a connection, half a second or\nmore apart, and anything else driving the session can interleave between them.\nOne `send` holds the session for the whole sequence. It is bounded: a sequence\nwhose keys and interval would take more than 30 seconds is refused, and so is\na `type --delay-ms` whose pacing would. Both hold the session across their\nsleeps, so an unbounded one blocks screenshots and even `disconnect`. Use\n`keyboard paste` for anything long.\n\n### Scroll\n\nAmount is positional (not `--amount`), and the default point is the **screen\ncenter** rather than whatever pane you're working in — use `--at` to target one.\n\n```bash\nagent-rdp scroll up 3\nagent-rdp scroll down 5 --at 600 400\nagent-rdp scroll left            # also: right\n```\n\n### Clipboard and drive mapping\n\n```bash\nagent-rdp clipboard set \"Hello from CLI\"\nagent-rdp clipboard set --file ./script.ps1   # or `--file -` to read stdin\nagent-rdp clipboard get\n\n# Drives must be mapped at connect time; multiple --drive flags are allowed\nagent-rdp connect --host 192.168.1.100 -u Administrator -p secret \\\n  --drive /home/user/documents:Documents --drive /tmp/shared:Shared\nagent-rdp drive list\n```\n\nMapped drives appear on the remote as network locations. Clipboard text is\nsent with CRLF line endings, so multi-line content survives\n`Get-Clipboard | Set-Content`; `clipboard get` returns Windows text with its\nCRLF intact.\n\n> **Do not access `\\\\TSCLIENT\\...` from `automate run`.** Drive redirection is\n> serviced by the same task that carries the automation channel, so reading the\n> share from inside the agent deadlocks — the command never returns and the\n> session stops responding until you reconnect. Use `file push`/`file pull`.\n\n### File transfer\n\nRequires `--enable-win-automation`. Copies in chunks over the automation\nchannel, with a SHA-256 computed independently on each end, so a truncated or\ncorrupted transfer fails loudly instead of leaving a plausible-looking file.\n\n```bash\nagent-rdp file push ./report.xlsx \"C:\\\\Users\\\\Admin\\\\report.xlsx\"\nagent-rdp file pull \"C:\\\\Users\\\\Admin\\\\export.csv\" ./export.csv\nagent-rdp file pull \"C:\\\\out\\\\result.json\" ./result.json --max-age 120   # stale_file if older\nagent-rdp file stat \"C:\\\\scripts\\\\job.ps1\"    # exists, size, SHA-256, modified/age - no transfer\n```\n\nTransfers are byte-exact, which also makes this the reliable way to place a\nscript with non-ASCII content on the remote — writing one through the clipboard\nor `Add-Content` re-encodes it and mangles anything outside ASCII. Limit: 128MB.\n\n`pull` reports the remote file's last-write time (`Modified: … (Ns ago by the\nremote clock)`; `modified`/`modified_unix`/`age_secs` in JSON), so a result\nfile can be told from yesterday's without reading it; `--max-age <secs>`\nrefuses a stale one outright. The age is computed from the remote machine's\nown clock, so it is right even when the two hosts disagree on the time.\n\nA pull hashes the file and then reads it, so a file being rewritten underneath\nit (a status file its producer replaces every few seconds) can change in\nbetween. A file of 8MB or smaller gets up to 3 attempts (and only while they\nstay quick) before that is reported, as `file_changed_during_transfer` rather\nthan a generic internal error. Note that\nWindows PowerShell writes UTF-8 *with* a BOM and `pull` returns the bytes\nverbatim, so a client-side parser needs to expect it (Python:\n`encoding=\"utf-8-sig\"`).\n\n### Locate (OCR)\n\nFinds text on screen with [ocrs](https://github.com/robertknight/ocrs). Use it\nwhen UI Automation can't reach an element (WebView content, some dialogs).\n\n```bash\nagent-rdp locate \"Cancel\"                    # substring match, returns coordinates\nagent-rdp locate \"Save*\" --pattern           # glob match\nagent-rdp locate \"Провести\" --exact          # whole-line match\nagent-rdp locate --all                       # all text on screen\nagent-rdp locate \"Cancel\" --click            # also --double-click, --right-click\nagent-rdp locate \"OK\" --wait 10000 --click   # block until it appears, then click\nagent-rdp locate --all --region 100,380,600,30   # coords stay full-screen\nagent-rdp locate \"Отменить\" --near \"Заказ №001\" --click   # anchor to a nearby label\n```\n\nOutput carries coordinates ready to click:\n\n```\nFound 1 line(s) containing 'Cancel':\n  'Cancel Button' at (650, 420) size 80x14 - center: (690, 427)\n```\n\nClicking is deliberately strict: no match, or several matches without\n`--index`, is an error rather than a guess. Default matching is substring\ncontainment, so `\"Провести\"` also matches `\"Провести и закрыть\"` — use\n`--exact` to avoid the ambiguity, `--near` when the same text genuinely repeats\nacross rows, or narrow with `--region`.\n\n**Numbers with thousands separators can lose their leading digit group** — OCR\nhas been observed reading `1 250,00` as `2250,00`. For monetary values, crop\ntight with `--region` and verify with `automate get` or a second independent\nread before acting on the amount.\n\n### Click-at (safe clicking of externally-computed coordinates)\n\nWhen the click point comes from outside agent-rdp — a vision model reading a\nscreenshot, a manual crop — `locate --click` can't help and a raw `mouse click`\nhas no safety net. `click-at` clicks only if the point isn't ambiguously close\nto more than one detected text region:\n\n```bash\nagent-rdp click-at 665 209\nagent-rdp click-at 665 209 --window 400x160 --min-gap 20   # tune detection window/gap\nagent-rdp click-at 665 209 --double-click                  # also --right-click\n\n# Cross-check two independent measurements: clicks their midpoint if they agree\n# within --max-divergence (default 40px), refuses if they don't.\nagent-rdp click-at 665 209 --confirm 670,212 --max-divergence 20\n```\n\nThe check uses OCR *detection* only (bounding boxes, script-agnostic), not\nrecognition, so it works even for text OCR can't read — custom-rendered\nCyrillic UIs where both UI Automation and `locate` fail. On refusal it lists\nthe nearby regions and exits non-zero; nothing is clicked.\n\n### UI Automation\n\nDrives Windows applications through the UI Automation API using native patterns\n(Invoke, SelectionItem, Toggle, ExpandCollapse). A PowerShell agent is injected\ninto the remote session and speaks to the daemon over a Dynamic Virtual Channel.\nFull protocol details in [AUTOMATION.md](docs/AUTOMATION.md).\n\n```bash\nagent-rdp connect --host 192.168.1.100 -u Admin -p secret --enable-win-automation\n\nagent-rdp automate snapshot                 # full tree (refs always included)\nagent-rdp automate snapshot -i -c -d 3      # interactive only, compact, depth 3\nagent-rdp automate snapshot -s \"~*Notepad*\" # scope to a window\nagent-rdp automate focused                  # what has keyboard focus right now\n\nagent-rdp automate click \"@e5\"              # also: \"#SaveButton\", \".Edit\", \"~*wild*\"\nagent-rdp automate click \"@e5\" -d           # double-click\nagent-rdp automate select \"@e10\" --item \"Option 1\"\nagent-rdp automate toggle \"@e7\" --state on\nagent-rdp automate expand \"@e3\"             # also: collapse, context-menu, focus, clear\nagent-rdp automate get \"@e2\"                # includes Value: for text/multiline edits\nagent-rdp automate fill \".Edit\" \"Hello World\"\nagent-rdp automate scroll \"@e4\" --direction down --amount 3\nagent-rdp automate wait-for \"#SaveButton\" --timeout 5000 --state visible\n\nagent-rdp automate window list\nagent-rdp automate window focus \"~*Notepad*\"\nagent-rdp automate window maximize|minimize|restore|close\n\nagent-rdp automate run \"Get-Process\" --wait --process-timeout 5000\nagent-rdp automate run \"$PSVersionTable\" --wait --shell pwsh.exe\nagent-rdp automate run \"type C:\\log.txt 2>nul\" --wait --shell cmd.exe\n                                            # the command text is PowerShell unless --shell says so:\n                                            # without --shell cmd.exe this 2>nul would be refused\nagent-rdp automate run \"ping -t 127.0.0.1\" --stream   # returns a pid immediately\nagent-rdp automate run-poll <pid>                     # drain output; repeat until exited\nagent-rdp automate run-poll <pid> --json              # `pending: true` = alive, nothing new yet\nagent-rdp automate run \"Add-Content C:\\log.txt x\" --wait --idempotency-key step-07\n                                            # a retry with the same key replays, never re-runs\n\nagent-rdp status                            # same report, canonical spelling\nagent-rdp automate status                   # health: RTT, failures, relaunches; works while the agent is down\nagent-rdp automate query-result <id>        # what the agent did with a request an error left indeterminate\nagent-rdp automate restart                  # relaunch the agent now, keeping the RDP session\n```\n\n**Selectors:** `@e5` (snapshot ref), `#SaveButton` (automation ID), `.Edit`\n(Win32 class), `~*pattern*` (wildcard name), `File` (exact name).\n\n**Snapshot format**, with `disabled` shown on interactive elements — a free\npre-action state check (a disabled \"Отменить проведение\" tells you the document\nisn't posted before you click anything):\n\n```\n- Window \"Notepad\" [ref=e1, id=Notepad]\n  - MenuBar \"Application\" [ref=e2]\n    - MenuItem \"File\" [ref=e3]\n  - Edit \"Text Editor\" [ref=e5, value=\"Hello\"]\n```\n\n**`automation indeterminate`** means the reply was lost, not that the action\nfailed. The agent journals recent results, so the daemon asks what actually\nhappened and usually returns the real outcome — or reports that the request\nnever ran and is safe to retry. A surviving `indeterminate` means the agent is\nstill busy: check state before retrying, or a click/fill can apply twice.\nRead-only commands (`snapshot`, `get`, `status`, `wait-for`, `window list`) say\nso explicitly, since those are always safe to retry.\n\n**Retrying `run` safely.** Give a mutating `run` an `--idempotency-key`. A\nretry that reuses the key — after `indeterminate`, an IPC timeout or\n`daemon_unresponsive` — gets the recorded result of the first execution back\n(`replayed: true`, with `replayed_at_unix`) instead of running the command\nagain; reusing a key for a *different* command is refused\n(`idempotency_key_reused`). Keyed results are journaled on the remote host\nunder `%LOCALAPPDATA%\\agent-rdp\\journal` (7 days / 256 keys, per Windows\naccount), so a replay survives a reconnect, an agent relaunch and a logoff.\nA different host or profile (an RDS farm, a temporary profile) starts empty —\nverify the side effect there instead of retrying blindly. A retry with a\nlonger `--process-timeout` still replays — including a run that timed out\nafter starting (it may have had effects; verify, then use a new key). A parse\nerror or a launch that never started is not persisted, so a retry executes.\n\n**What did it actually run?** Every `run` reply carries `command_line`: the\nexact text the agent handed to the child shell (the command, then each\nargument as a single-quoted literal). A command that does not parse as\nWindows PowerShell is refused before anything launches (`parse_error`, with\nline and column) and the error ends with that same command line — so a `$_`\nyour local shell expanded away, or a `1,2` argument re-tokenised, is visible\nrather than guessed at. Waited runs also report `started_unix` and\n`finished_unix` on the remote clock, print `(no stdout captured: the command\nprinted nothing)` when that is the case, and `(detached: output is not captured)` for a\nlaunch without `--wait`/`--stream`.\n\n**If the agent fails to start**, `connect` says so and the daemon keeps\nretrying in the background (backoff 60s → 5 min, only once no input has been\nsent for 2 minutes, at most 3 relaunch attempts per 10 minutes — each up to 3\ntyped launches — giving up after 6 consecutive failures). `automate status` answers while the agent is down with\n`last_error` and `next_retry_secs`; `automate restart` retries at once;\n`AGENT_RDP_NO_AUTO_RELAUNCH=1` disables the automatic retries.\n\n**`run` exit codes mean something, and errors arrive as text.** The child\nruns with `$ErrorActionPreference='Stop'` inside a `try/catch` the agent adds:\na cmdlet that fails non-terminatingly — `Add-Content` to a locked file,\n`Set-Content` to a bad path — exits 1, and stderr carries the whole exception\nchain as plain text (`ERROR: <type>: <message>`, then `caused by …` for each\ninner exception, the failing line, and the script stack trace). The inner\nexceptions are where a COM error's real message lives — a 1C failure that\nused to surface as a bare `NullReferenceException` now shows the COM text\nunder it. Native commands keep their own exit code. Scripts that start with\n`param(...)` or `using` get the prelude but no wrapper (those must be a\nscript's first statements). A script that wants continue-on-error sets\n`$ErrorActionPreference='Continue'` on its first line; note that with `Stop`,\na native command's stderr merged via `2>&1` is an error. Do not redirect `*>`\ninto a file the script itself writes: the child holds it open and the script's\nown writes fail with \"being used by another process\" — `run --wait` captures\noutput without a file.\n\n**Detached launches report an immediate death.** `run` without `--wait`\nreturns the pid; if the process has already exited ~250ms later the reply\nalso carries `early_exit: true` and its `exit_code` — the \"it said it started\nbut nothing happened\" case made visible at launch time.\n\n**Do not `Stop-Process -Name powershell` from a script.** The automation agent\nis a `powershell.exe` process, and so are `run --stream` children; that kills\nthem all (`automate restart` brings the agent back, streamed pids are gone).\nChildren see the agent's pid as `$env:AGENT_RDP_AGENT_PID`:\n`Get-Process powershell | Where-Object { $_.Id -notin $PID, [int]$env:AGENT_RDP_AGENT_PID } | Stop-Process`.\n\n**A command that overruns `--process-timeout` is killed along with\neverything it started**, and the kill is verified before it is reported as\none: a job object holds the whole tree, so the caller's real work is not\nleft running behind a \"was killed\" message. If anything does survive, the\nerror is `kill_failed:` and names each survivor by pid — the difference\nbetween \"your test environment is clean\" and \"something is still writing to\nyour database\". The message also carries the host CPU load at the kill.\n\n**Long-running commands** get the time they ask for: the transport deadline,\nthe CLI socket timeout and the watchdog all extend to cover\n`--process-timeout`/`--timeout`. But the agent handles one command at a time,\nso a long `run --wait` blocks every other `automate` call — past about a\nminute, prefer `run --stream` plus `run-poll` — that is the detached mode:\n`run-poll <pid> --follow [--follow-timeout <ms>]` keeps polling until the\nprocess exits, printing output as it arrives and the exit code at the end, so\none command collects everything (a single plain poll before the child has\nflushed prints nothing, which looks like lost output). Streamed output is\ncaptured to files on the remote side, so nothing is lost if the process exits\nbetween polls; a finished process stays pollable for 10 minutes and repeat\npolls return `exited: true` with empty chunks. `--wait --stream` waits (the\nstream flag is ignored, with a note). (If you redirect inside the command\ninstead, note that Windows PowerShell 5.1's `>` writes UTF-16LE.)\n\n**`daemon_not_running` vs `daemon_unresponsive`.** The first means no daemon\nprocess exists — reconnect, and `<session>/daemon.log` says why it exited. The\nsecond means the process is alive but did not answer a health check within\n10s: it is busy (a long `run --wait`, a file transfer). Wait and retry; do not\nreconnect, that discards a working session. The message includes the tail of\ndaemon.log. Plain `connect` also refuses an unresponsive daemon (after\nre-pinging it for ~30s) — it never kills one that may just be busy serving\nanother command; `connect --replace` is the explicit way to stop it and start\nafresh, recorded in the transcript. A `not_connected` after the RDP transport\ndropped says so (\"The RDP transport dropped Ns ago (<reason>); the daemon\nitself is alive\"), and `session info` shows the last drop — that is a\n`connect`, not a daemon restart. Read-only requests that lose their connection\nmid-flight are retried once automatically; mutating ones never are.\n\n**Idle sessions are kept alive.** RDP only ships screen deltas, so a session\nnobody is driving sends nothing in either direction and a NAT or firewall on\nthe path eventually drops it — seen in the field after as little as ~5 minutes\nof idling. The daemon sends a Refresh Rect PDU every 45s to keep the path warm\n(`connect --keep-alive-secs <n>`, `0` disables). It carries no input, focus or\nlock-key semantics, so it cannot disturb the remote desktop.\n\n**A dead transport is detected in a few minutes at most.** Two rules, for two\nways a transport dies. The RDP socket gives up on unacknowledged data after\n30s, so a black-holed path (no RST/FIN, just silence) surfaces within roughly\none keep-alive interval plus that. And each keep-alive is a request the server\nanswers with a repaint, so a server whose TCP stack still ACKs but whose RDP\nservice is gone — the case where nothing at the TCP level ever fails — is\ndeclared dead after three unanswered refreshes in a row (about 2.25 minutes\nat the default interval). Before these, detection fell back to the OS\nretransmission timeout or to nothing at all: four to eighteen minutes during\nwhich `screenshot` kept succeeding against a stale frame. The second rule\narms itself first: it fires only once a refresh has been answered within two\nseconds on an otherwise idle link, so a server that never answers one (the\nprotocol allows it) is never declared dead for it, and an unsolicited repaint\nis not mistaken for an answer. `AGENT_RDP_NO_SILENCE_DROP=1` disables the\nverdict while keeping the traffic; `--keep-alive-secs 0` disables both. Since\nthe interval is also the liveness window, a non-zero value below 10 seconds\nis refused.\n\nOnce the transport is gone, `screenshot` and `locate` refuse rather than\nanswer from the last frame the dead session painted, and `session info`\nreports it as disconnected.\n\nFast detection has a cost worth stating plainly: an `os error 60` is usually\nthis 30-second timer firing, not the network failing. Anything that interrupts\nthe path for longer — a Wi-Fi roam, a VPN rehandshake, a laptop dozing — ends\nthe session, where the operating system on its own would have waited out\nseveral minutes. `session info` reports wall-clock uptime alongside monotonic\nuptime, and the difference between them is how long the client host slept,\nwhich is often the whole explanation.\n\n**An empty password is refused.** It is almost always a secret lookup that\nreturned nothing, and the server cannot tell it from a wrong one, so the\nfailure arrives minutes later looking like an authentication problem.\n`--allow-empty-password` (or `allowEmptyPassword` in the SDK) is the escape\nhatch for an account that genuinely has none. Related: a rejected credential\nnow reports as an authentication failure rather than a generic connection\nfailure, and error messages no longer carry build paths from our own machine.\n\n**A dropped session can put itself back.** `connect --auto-reconnect` retains\nthe request and re-establishes the session after a drop, backing off 5, 10,\n20, 40 then 60 seconds between attempts. `session info` gains an\n`auto_reconnect` block: whether it is armed, how many reconnects have\nsucceeded, how many attempts this outage, when the outage began, when the\nnext attempt is due, the last error, and why it stopped.\n\nIt stops permanently on an authentication failure, rather than retrying a\nstale password until the account locks, and it gives up if the session keeps\ndying within two minutes of coming back. Disconnecting or shutting the daemon\ndown disarms it; a `connect` of your own takes over from it.\n\nIt is opt-in for one reason. An agent that survived the outage is adopted\nsilently and nothing is typed, which covers every brief blip. But if the\nagent did not survive, the self-heal supervisor relaunches it, and that types\nWin+R into whatever has focus on the remote desktop. The supervisor waits\nuntil the session has been quiet for two minutes first, but that measures\n*our* input, not a person's.\n\n**The automation agent survives a reconnect.** When the transport drops, the\nagent keeps re-opening its channel for about 10 minutes rather than exiting, so\na `connect` in that window adopts the running agent instead of launching one —\nno Win+R, no foreground change on a desktop someone else may be using.\n`automate status` reports `adopted` when that happened, `total_launches` (every\nlaunch that did type Win+R, including each `connect`'s bootstrap — counted at\nthe keystrokes, so a launch whose transport dropped before it finished still\ncounts) and `relaunches` (self-heal restarts since the last connect).\n\n**Adopted does not always mean \"the same agent\".** The agent reports an\ninstance id identifying its process, so the daemon can tell the agent it knew\ncoming back from a different process taking the channel. When it is a\ndifferent one, `adopted_replacement` is true and `previous_agent_pid` names\nthe one before it; `agent_changes` counts how often that has happened against\nthis host. Without those, an adoption reads as continuity, and anything the\nold agent was running is quietly gone. `agent_pid_history` keeps the last few,\nsince one previous pid cannot describe three agents over a long run, and\n`survivor_outcome` says why no agent was adopted: none was ever seen, the\nreconnect window had expired, one was evicted for running older scripts, or\nthe session went away.\n\n**The launch counters add up.** `total_launches` splits into three: launches\nthat produced a working agent, `launches_without_handshake` (typed, but the\nagent never came back), and `launches_abandoned` (superseded before they\ntyped anything). A test pins the identity, so a launch can no longer vanish\nbetween the counters the way an abandoned one used to.\n\n**Latency is measured where it happens.** A `run` reports `spawn_ms`, the time\nthe remote host took to start the process, measured by the agent, and\n`duration_ms` for a waited run. `automate status` pairs the last spawn with\nthe round-trip of the same request, which separates a host that is slow to\nstart PowerShell from an agent that is slow to answer. The old\n`finished_unix - started_unix` was one-second remote wall clock and no use for\nbenchmarking. `automate status` itself never spawns anything.\n\n**`desktop_alive` says whether there is a desktop to drive.** `State:\nConnected` does not imply it — the two drift apart, and a session has been\nseen reporting Connected while its interactive desktop was dead for 25\nminutes. `automate status` reports `desktop_alive`, `input_desktop_name`\n(`Default` in ordinary use, `Winlogon` on the lock screen) and the foreground\nwindow title, so GUI automation can check before acting rather than after\nfailing. `run` and file transfers work either way.\n\n**`automate window focus` reports what actually happened.** UI Automation\nrefuses to focus plain WinForms windows, so there is a Win32 fallback that\nattaches to the foreground thread, restores the window if it is minimised and\nraises it. The result is then verified against the real foreground window,\ncomparing root windows rather than exact handles, since focusing a child\nelement is a legitimate success. The reply carries `focused`, `verified` and\n`method` and `already_foreground`. An element with no window handle can only\nbe attempted, and says so. A window that was already in the foreground is\nreported as such rather than counted as a verified success. `connect\n--defer-agent` (which needs `--enable-win-automation`) skips the launch\nentirely and leaves the agent to `automate restart` — including when the\nsurvivor it found was running older scripts and had to be evicted, which\nwould otherwise have woken the self-heal.\n\nAdoption is decided by a hash of the scripts the daemon would deploy, not by\nthe agent's version string, since a library file can change without a version\nbump. An agent whose hash does not match is asked to exit and is never talked\nto, whichever agent opened its channel first.\n\n**The automation agent heals itself.** If its DVC channel closes while the\nRDP session is alive, the daemon relaunches it (see the retry budget above),\nand the agent no longer exits on the transient read errors a CPU-starved host\nproduces. Cold `connect --enable-win-automation` on such a host is given up\nto ~5 minutes: three launch attempts with handshake windows of 25/45/75s,\neach extended when the agent is visibly still starting.\n\n**`daemon_version_mismatch`** means the daemon was started by a different\nagent-rdp version than the CLI — it kept running across an upgrade, and is\nstill serving the old code, including the automation agent it embeds. Run\n`agent-rdp connect ...` again: it replaces the daemon. Every other command\nrefuses instead, in the CLI and in the SDK alike — replacing a daemon ends\nwhatever RDP session it is holding, which is a decision for `connect` to\nmake, not for a screenshot. `session info` shows both versions. This is worth\nknowing about because it is how \"upgraded, but the old bug still reproduces\"\nhappens.\n\n**Arrow-key navigation inside a panel can land on the wrong item.** Observed in\n1C side panels: Up/Down then Enter is not reliably deterministic. Prefer\n`automate` refs; when the panel isn't exposed to UI Automation, use two\nindependent measurements with [`click-at --confirm`](#click-at-safe-clicking-of-externally-computed-coordinates).\n\n### Sessions and the web viewer\n\n```bash\nagent-rdp session list\nagent-rdp session info\nagent-rdp --session work connect --host work-pc.local ...   # named session\nagent-rdp --session work screenshot\n\nagent-rdp wait 3000    # pause; useful right after connect, before the first input\n\n# Web viewer (needs streaming enabled at connect)\nagent-rdp --stream-port 9224 connect --host 192.168.1.100 -u Admin -p secret\nagent-rdp view --port 9224\n```\n\nThere is no `session close` — use `disconnect`.\n\n### Diagnostics and bug reports\n\n```bash\nagent-rdp diagnose                       # -> ./agent-rdp-diagnostics-<session>-<ts>.zip\nagent-rdp diagnose --output report.zip\n```\n\nThe zip holds `daemon.log` (+ `.prev`), `transcript.jsonl` (one redacted line\nper request: what was asked, outcome, duration), `diagnostics/` (failure\ncaptures), a current screenshot, the remote automation agent's own log, and\n`info.json` (versions, OS, daemon state, which `AGENT_RDP_*` variables are\nset). It is built from disk first and the daemon second, so it works when the\ndaemon is dead or unresponsive — those parts are listed as skipped. The RDP\npassword is never logged, and is blanked if it appears anyway.\n\nFailure captures are automatic: when `locate` finds nothing, `click-at` refuses,\nan `automate` command errors, or a waited `run` exits non-zero, the daemon saves\n`diagnostics/<ts>-<kind>-<code>.png` plus a `.json` with the request, the error\nand — for OCR misses — every line OCR *did* read. At most one capture per 5s,\nthe newest 20 kept. Set `AGENT_RDP_DIAGNOSTICS=0` to turn the transcript and\ncaptures off.\n\n## JSON output\n\nAdd `--json` to any command:\n\n```json\n{ \"success\": true,  \"data\": { \"type\": \"screenshot\", \"path\": \"desktop.png\", \"width\": 1920, \"height\": 1080 } }\n{ \"success\": false, \"error\": { \"code\": \"not_connected\", \"message\": \"Not connected to an RDP server\" } }\n```\n\n## Environment variables\n\n| Variable | Description |\n|----------|-------------|\n| `AGENT_RDP_HOST` | RDP server hostname or IP |\n| `AGENT_RDP_PORT` | RDP server port (default: 3389) |\n| `AGENT_RDP_USERNAME` | RDP username |\n| `AGENT_RDP_PASSWORD` | RDP password |\n| `AGENT_RDP_SESSION` | Session name (default: \"default\") |\n| `AGENT_RDP_STREAM_PORT` | WebSocket streaming port (0 = disabled) |\n| `AGENT_RDP_STREAM_BIND` | Address the streaming server binds to (default: `127.0.0.1`) |\n| `AGENT_RDP_STREAM_FPS` | Streaming frame rate (default: 10) |\n| `AGENT_RDP_STREAM_QUALITY` | Streaming JPEG quality, 0-100 (default: 80) |\n| `AGENT_RDP_MODELS_DIR` | OCR models directory (set automatically by the npm wrapper; needed for standalone binary installs) |\n| `AGENT_RDP_DIAGNOSTICS` | Set to `0` to disable the request transcript and failure captures |\n| `AGENT_RDP_NO_AUTO_RELAUNCH` | Set to `1` before `connect` to stop the daemon relaunching the automation agent on its own (`automate restart` still works) |\n| `AGENT_RDP_NO_SILENCE_DROP` | `1` keeps the keep-alive traffic but disables the \"server answered none of the last 3 refreshes\" disconnect verdict |\n| `AGENT_RDP_RAW_STDERR` | `1` returns the remote command's stderr exactly as PowerShell rendered it, without stripping the error decoration |\n\n## Node.js API\n\n```typescript\nimport { RdpSession } from 'agent-rdp';\n\nconst rdp = new RdpSession({ session: 'default' });\nawait rdp.connect({\n  host: '192.168.1.100', username: 'Administrator', password: 'secret',\n  width: 1280, height: 800,\n  drives: [{ path: '/tmp/share', name: 'Share' }],\n  enableWinAutomation: true,\n});\n\n// Screenshot - prefer `path` so a large base64 string is never held in memory\nconst { path, width, height } = await rdp.screenshot({ format: 'png', path: 'shot.png' });\nconst { base64 } = await rdp.screenshot({ format: 'png' });   // or raw, for in-process use\n\nawait rdp.mouse.click({ x: 100, y: 200 });      // also rightClick, doubleClick, move\nawait rdp.mouse.drag({ from: { x: 100, y: 100 }, to: { x: 500, y: 500 } });\n\nawait rdp.keyboard.type({ text: 'Hello World' });\nawait rdp.keyboard.paste('Привет, мир!');       // reliable for long/non-Latin text\nawait rdp.keyboard.press({ keys: 'ctrl+c' });\nawait rdp.keyboard.send({ keys: 'left left right up', intervalMs: 80 });  // one call, one connection\nawait rdp.keyboard.down('shift'); await rdp.keyboard.up('shift');\n\nawait rdp.scroll.down({ amount: 5 });           // default 3; { x, y } to target a point\nawait rdp.clipboard.set({ text: 'text to copy' });\nconst text = await rdp.clipboard.get();\n\n// OCR - click directly so the coordinate never leaves the process\nawait rdp.locate({ text: 'Cancel', click: 'left' });\nawait rdp.locate({ text: 'Провести', exact: true, click: 'left' });\nawait rdp.locate({ text: 'OK', waitMs: 10000, click: 'left' });   // block until it appears\nconst allText = await rdp.locate({ all: true });\n\n// Safe click of an externally-computed point (e.g. a vision-model bbox)\nconst result = await rdp.clickAt(665, 209);\nif (!result.clicked) console.log('Ambiguous:', result.nearby);\n\n// File transfer (needs enableWinAutomation)\nawait rdp.files.push('./report.xlsx', 'C:\\\\Users\\\\Admin\\\\report.xlsx');\nawait rdp.files.pull('C:\\\\Users\\\\Admin\\\\export.csv', './export.csv');\n\n// UI Automation\nconst snapshot = await rdp.automation.snapshot({ interactive: true });\nconst focused = await rdp.automation.focused();\nawait rdp.automation.click('@e5', { doubleClick: true });\nawait rdp.automation.fill('#input', 'text');\nawait rdp.automation.run('notepad.exe');\nawait rdp.automation.waitFor('#SaveButton', { timeout: 5000 });\nawait rdp.automation.focusWindow('~*Notepad*');\n\nconst drives = await rdp.drives.list();\nconst info = await rdp.getInfo();\nawait rdp.disconnect();\n```\n\nThe process can stay alive after `disconnect()` unless the caller cleans up —\ncall `rdp.close()` or exit explicitly.\n\n**WebSocket streaming** for real-time capture: construct with\n`{ streamPort: 9224 }`, then `rdp.getStreamUrl()` returns `ws://localhost:9224`.\nMessage types, clipboard flow and input handling are specified in\n[WEBSOCKET.md](docs/WEBSOCKET.md).\n\n## Architecture\n\nA daemon per session: the **CLI** parses commands and talks to a **daemon** over\nUnix sockets (macOS/Linux) or TCP (Windows); the daemon owns the RDP connection\nand processes commands. It starts on the first command and persists until\nclosed. See [CLAUDE.md](CLAUDE.md) for the internals.\n\n## Limitations\n\n- **WebViews** — UI Automation cannot see WebView content (Start menu search,\n  Edge, Electron apps). Launch programs with `automate run` or Win+R instead of\n  clicking through menus.\n- **UAC dialogs** run on a secure desktop and are invisible to UI Automation.\n  There is no good workaround short of the remote user acting manually.\n- **OCR** can misread characters, miss text, or return imprecise coordinates.\n  Use it only when UI Automation can't reach an element, and verify before\n  clicking anything destructive.\n- **Claude models in non-computer-use mode** (Claude Code included) are poor at\n  estimating pixel coordinates from screenshots — don't ask for a guess from an\n  image. Gemini models are generally good at it; for Claude, use the\n  [Computer Use Tool](https://docs.anthropic.com/en/docs/agents-and-tools/computer-use).\n\n## Requirements\n\nRust 1.75+. The target must offer **TLS** for RDP — agent-rdp uses `rustls`,\nwhich doesn't implement TLS 1.0/1.1, so legacy hosts (e.g. Windows Server\n2008 R2) fail with a handshake error. **Stock Windows defaults work as\nshipped.**\n\n<details>\n<summary>RDP security layer settings</summary>\n\nAll six combinations measured against Windows Server 2022, varying only these\ntwo values under\n`HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp`:\n\n| `SecurityLayer` | `UserAuthentication` | Meaning | Result |\n|---|---|---|---|\n| `1` (Negotiate) | `1` | **Windows default** | **works** |\n| `2` (TLS) | `1` | TLS + NLA (most explicit) | **works** |\n| `2` (TLS) | `0` | TLS, no NLA | **works** |\n| `0` (RDP) | `1` | NLA forces CredSSP/TLS | **works** |\n| `1` (Negotiate) | `0` | server picks, and declines TLS | fails |\n| `0` (RDP) | `0` | legacy RC4 only | fails |\n\nThe rule: **agent-rdp works wherever the host offers TLS.** With NLA on that is\nalways the case, since NLA forces CredSSP/TLS regardless of `SecurityLayer`.\nBoth failing rows are NLA-off hosts that refuse TLS outright.\n\nIf `connect` reports *\"server only supports Standard RDP Security\"*, the host is\nin one of those rows. Enable NLA (preferred — it also gives pre-authentication)\nor force TLS:\n\n```powershell\n$k = 'HKLM:\\System\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp'\nSet-ItemProperty -Path $k -Name UserAuthentication -Value 1   # enable NLA, or:\nSet-ItemProperty -Path $k -Name SecurityLayer      -Value 2   # force TLS\n```\n\nNew connections normally pick this up immediately; restart `TermService` only if\nthey don't (that drops existing sessions).\n\nNeither failing case is fixable client-side. With `SecurityLayer=1` and NLA off\nthe server returns `SSL_NOT_ALLOWED_BY_SERVER` even though the client advertises\n`PROTOCOL_SSL` — verified by testing a build that requested SSL *only*, rejected\nidentically. Standard RDP Security (`SecurityLayer=0`, NLA off) is refused by\nIronRDP itself, which implements no RC4 transport; it uses a well-known key\nderivation, so credentials sent over it are recoverable in transit.\n</details>\n\n## Credits\n\nOriginally created by [Nick Yu](https://github.com/thisnick)\n([thisnick/agent-rdp](https://github.com/thisnick/agent-rdp)). This fork\n([denisix/agent-rdp](https://github.com/denisix/agent-rdp), published as\n[`@denisixnpm/agent-rdp`](https://www.npmjs.com/package/@denisixnpm/agent-rdp))\nis maintained independently; see\n[CHANGELOG.md](packages/agent-rdp/CHANGELOG.md) for what's changed.\n\n## License\n\nMIT OR Apache-2.0 (same as IronRDP)\n","readmeFilename":"README.md"}