{"_id":"junis","_rev":"41-0e450a926a78d1d8f89abfa8c3db4eb8","name":"junis","dist-tags":{"latest":"0.4.8"},"versions":{"0.1.0":{"name":"junis","version":"0.1.0","_id":"junis@0.1.0","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"091749a4db150043c7715f95e50f98a82c89c487","tarball":"https://registry.npmjs.org/junis/-/junis-0.1.0.tgz","fileCount":6,"integrity":"sha512-EsiGe/ckjir3MaKE1haTsv/sIg7HJnyCyAxQOYs5nTfN8pqLTm6YnowaddNFHc22cpyUADOvzDHCtMJfANIKmQ==","signatures":[{"sig":"MEUCIBjSwkXmzQetLaBXTS2QBcqGihllRVb8kbqdC3NUbjBWAiEAnY3Hr2MxYHZOJ5tmyb9SQzEndmKjZwCvgrdVv9VlG5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92342},"engines":{"node":">=18.0.0"},"gitHead":"3a0382db4fc83345b58943f0fc797ebd65c73acc","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.1.0_1771488723616_0.9043464583253817","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"junis","version":"0.1.1","_id":"junis@0.1.1","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"3e454a9d166816f47b615384574fa8a69efc8920","tarball":"https://registry.npmjs.org/junis/-/junis-0.1.1.tgz","fileCount":6,"integrity":"sha512-MSZQgcNlGUiIhvSb58MuOSCmWsvlXPq2abGCHTBOPpcQXMWBlRH/9LUiHckblLuTxx+EWOUbf/3Ya/hTZkXohw==","signatures":[{"sig":"MEYCIQDgr5gD86w8LBVIYln/liPS7gF+CjRchNSkDC/nrI0MegIhAOd0Z5/P6YRn3iA+6mLXth7c3jWMHYzxeA0SlpD5H0DI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92336},"engines":{"node":">=18.0.0"},"gitHead":"3a0382db4fc83345b58943f0fc797ebd65c73acc","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.1.1_1771491469939_0.6597870685942391","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"junis","version":"0.1.2","_id":"junis@0.1.2","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"8ae3765a17c0c94a30446a3abba800847ef65335","tarball":"https://registry.npmjs.org/junis/-/junis-0.1.2.tgz","fileCount":6,"integrity":"sha512-r6bAvn8xInss6BNYjSELQhMVNyWpMcoVRu2MGs61bsqpXQ2p6u15UHa9RGqRICe5iboMdr0huRiD23/P58x2XA==","signatures":[{"sig":"MEYCIQDHXeGI/qohEVxCRLZd517fnv/tG34ecg7B6AnnvRGCqAIhALspnoJSR5O8jWFMjWQJh73YtALnerX6+dXWUIObXZ4A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101128},"engines":{"node":">=18.0.0"},"gitHead":"480de197e8f4cc9fea43ace8209b61ddd378eae5","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.1.2_1771505387536_0.8311283687804276","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"junis","version":"0.1.3","_id":"junis@0.1.3","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"ca8e2e1fdfbfdfca2a527e96e41a544244888ab3","tarball":"https://registry.npmjs.org/junis/-/junis-0.1.3.tgz","fileCount":6,"integrity":"sha512-qCGqy0df1WV9vGfEU3OOOLacVgbZw7xWMvAbJRT78WpgJw61apxEY3SaX8t/wJVaydHEmQKiql9RodlW03i33Q==","signatures":[{"sig":"MEYCIQCI7URiIkRsZs3tcejONpKuTOB06wHmXPHT93yW9e6vrAIhAJFSDY0HMc2jwgy3oZ2CsGcpb//u3BkdDBK8Um14WSC+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101132},"engines":{"node":">=18.0.0"},"gitHead":"480de197e8f4cc9fea43ace8209b61ddd378eae5","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.1.3_1771505581065_0.9270691529973427","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"junis","version":"0.1.4","_id":"junis@0.1.4","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"0d1f0f2711f6d9a51450c4ffc1b6017c25446368","tarball":"https://registry.npmjs.org/junis/-/junis-0.1.4.tgz","fileCount":6,"integrity":"sha512-GHokS1oCxm121NNAMgI1lQUKDfBWVHPKOLzhEMXYJJ5pPLIfU5aszENgFZFl6UWpe2v5itMWqXKOIBgVzrDoGg==","signatures":[{"sig":"MEQCIAF1XrWfEIFguDCo5pRhMItjxPnLg1FY6XhWu9X5qCcvAiB+dRxhVtsfNknEgJA4Jfrp/vi2XaBz18yiDWtGB4dLlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104301},"engines":{"node":">=18.0.0"},"gitHead":"480de197e8f4cc9fea43ace8209b61ddd378eae5","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.1.4_1771506908842_0.25011575892808735","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"junis","version":"0.1.5","_id":"junis@0.1.5","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"03e8a92dd60ef66919a595810192020c3108f902","tarball":"https://registry.npmjs.org/junis/-/junis-0.1.5.tgz","fileCount":6,"integrity":"sha512-kjOoTlkFUDbT860F4Abv/LHWIGy2H5e9J4aMbtjlKksHjkcqtRWODlIlc8EIcaB0EMDCZL0uqvCWAVdUU8vYnw==","signatures":[{"sig":"MEUCIAQKKIDBAF3q/9zhtugCAomCIOGbtGtsyLyfMnXaY/GRAiEA5v9PoDh3oiy76hR21ZGnoC7moy/irXC0EPN9pxuHrUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105989},"engines":{"node":">=18.0.0"},"gitHead":"480de197e8f4cc9fea43ace8209b61ddd378eae5","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.1.5_1771507417829_0.3962418960808223","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"junis","version":"0.1.7","_id":"junis@0.1.7","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"e0b3fda49572829ae3adeddd7f203986bbfdea5e","tarball":"https://registry.npmjs.org/junis/-/junis-0.1.7.tgz","fileCount":6,"integrity":"sha512-dbN5BhN3iydVLN5Mrtv5l3UTltLeJklde+/bIcuM8q71F+pcIeT7OOD5eNWBpsXBrwMpYplH8i/KXvM+8dxvlw==","signatures":[{"sig":"MEUCIQDYKueCTFrHSzNtO6ByOl/DdXayf4IMHDL43/0n2idvtQIgLFrO7nn4Y/RRinrnAzmipNn3v+B/8SyNr97qBUVRM8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116498},"engines":{"node":">=18.0.0"},"gitHead":"480de197e8f4cc9fea43ace8209b61ddd378eae5","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.1.7_1771512824001_0.5820070166720848","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"junis","version":"0.1.8","_id":"junis@0.1.8","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"cf014a2882ff2be55fdfc81f9fbc2a5f33068a0d","tarball":"https://registry.npmjs.org/junis/-/junis-0.1.8.tgz","fileCount":6,"integrity":"sha512-X6rFnxtcgnu08KsJtuSZ7FjYb+ArWgsdZ3n91ikAjDDXKAIeOxfBiotSlpI19c7swcJgc0l7OAC6k0v5CIjCHg==","signatures":[{"sig":"MEYCIQDceJZUoGFsQYEVQ3pgSiC4zro4bENXIGofchXxvUgQfAIhAMoNb58rif9VmOc6nFhLZ+9vxebcIDr7K4QCkcLmLApz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116655},"engines":{"node":">=18.0.0"},"gitHead":"480de197e8f4cc9fea43ace8209b61ddd378eae5","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.1.8_1771514121587_0.41211509016711045","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"junis","version":"0.2.0","_id":"junis@0.2.0","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"970556fda4a77026a9804a772b27f32e1dcf0739","tarball":"https://registry.npmjs.org/junis/-/junis-0.2.0.tgz","fileCount":6,"integrity":"sha512-4bvt3SC0jK18YwZbVbryAoF3zlbZ2GZNhRUA6QZi3PSlIvqkqRK/oSfNnUJHPTFcACV+o9rvssjM0m4EuTcYcA==","signatures":[{"sig":"MEQCIHBGYvzheNe9BEEzN2Ir3JCuNOnF7PkoI4DTkfTxLGraAiACXTv6v/WLNZ1y5XQtf5yfgQGdKJOpyWPHPd/90OVL7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129400},"engines":{"node":">=18.0.0"},"gitHead":"259e86ffc5c04eef02baba80759a8dbeaa418eaa","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.2.0_1771518170132_0.875287395555264","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"junis","version":"0.2.2","_id":"junis@0.2.2","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"7b7d780f0ab7eda32db99511d095203821a7165e","tarball":"https://registry.npmjs.org/junis/-/junis-0.2.2.tgz","fileCount":6,"integrity":"sha512-UZYIL9rLYAV6HybnN8DUplD//YNBuvn0dVODCwY2qRCezd0125z/ZPo6RCbuX4M6X73rOFQToeiULCcuEMm03A==","signatures":[{"sig":"MEUCIQDXobWgzzdD7TCumFGCigpTg5Vg8eY2jsIya+pWlFm3iAIgd7njmPR+5bAJj4USMLSkIk0HAaZjFOgAdyp4fbtB28E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133789},"engines":{"node":">=18.0.0"},"gitHead":"3b6459758e0da9cdb680bfb8fb5b5aebd5d3597f","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.2.2_1771522131813_0.33553754123225166","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"junis","version":"0.2.3","_id":"junis@0.2.3","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"f0b5fe98ff6c2649c8f0cb0594d0d4510988ad0f","tarball":"https://registry.npmjs.org/junis/-/junis-0.2.3.tgz","fileCount":6,"integrity":"sha512-GW1uzoQ85mkViUoZEw79zSAIVheZzk3j07GRLQv8wmRw+V3INCgqpJVOrmovi4d/BxYnPUJ7K7kvUhmCq62WZQ==","signatures":[{"sig":"MEQCIH6VwpEDwru5A29GNokU3t31ujkbxAgPMiY7f7iK32EmAiBGAxrkJdJEBb1WxSFO8+m8DmmiFwI3v7k5OBPcDt2yeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148775},"engines":{"node":">=18.0.0"},"gitHead":"41f5afdfba83e90fa09488623e42d2899a4a2c7a","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.2.3_1771535317419_0.7827001062635603","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"junis","version":"0.2.4","_id":"junis@0.2.4","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"4d480a23d9f3aa3bf75053854d74957e5e226350","tarball":"https://registry.npmjs.org/junis/-/junis-0.2.4.tgz","fileCount":6,"integrity":"sha512-EhQ6NE2BX9B4oL3htFOohY7F/lLitgk7oiBBBfrfZztN6NPBASbkpSiewsiyzXPPOC3rbFng65Er5wvMnRrotQ==","signatures":[{"sig":"MEYCIQCwTkJWTx/w1GIk/+xC2dVWpbamuov8d7VJp4+8NqadeAIhAJeDA22cEIQCwAJ0/XX4xiTXqPb4aK1afcdmG9Dw7P0M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149627},"engines":{"node":">=18.0.0"},"gitHead":"ed33e70827881f40a6fc2ea900f66d5e62d685f0","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.2.4_1771536104574_0.8162830779532408","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"junis","version":"0.2.5","_id":"junis@0.2.5","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"6c27b01be6ef3a87b00169bd2893e8bc25cc122a","tarball":"https://registry.npmjs.org/junis/-/junis-0.2.5.tgz","fileCount":6,"integrity":"sha512-S/+9WCtAQaUXDXhniCZmh5NzvxnTJ+7iBcmujCok2BnY80tLQ0H6R3oZOILyMxdXaHIqEFqxPVbaBV3/8WZ84A==","signatures":[{"sig":"MEQCIG068M0uNYaRF0GFL8Fl6R8Ac0O9iS5HofCcmieF5CMLAiAecMVkIAhV+v79Vs1tS3EPRvlk/g8lWEPQcb7MDpXVWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151935},"engines":{"node":">=18.0.0"},"gitHead":"ed33e70827881f40a6fc2ea900f66d5e62d685f0","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","node-notifier":"^10.0.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.2.5_1771563481118_0.16754961133983515","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"junis","version":"0.2.6","_id":"junis@0.2.6","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"c46781b6d88602369d526627b947c852162fbbba","tarball":"https://registry.npmjs.org/junis/-/junis-0.2.6.tgz","fileCount":6,"integrity":"sha512-iTLAnwNijMLURZoaSfa6TMlVnU4+i4Cr+nwsbZPtrJJFYh6BAEMk7oGdQRF3cEVKG3o9/dxdAyJoXT3kaNRFmw==","signatures":[{"sig":"MEYCIQCk2CyEnu+Vcff7litewPrgN63TFEDIZcDQNUo50teP6wIhAKFSL2PrjA1IvrIiXeMQBjgykNZcI78QBUaM32n43hv6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161483},"engines":{"node":">=18.0.0"},"gitHead":"ed33e70827881f40a6fc2ea900f66d5e62d685f0","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","commander":"^12.0.0","playwright":"^1.49.0","node-notifier":"^10.0.1","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.2.6_1771564882506_0.8283737533409379","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"junis","version":"0.3.1","_id":"junis@0.3.1","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"7fcfbc921cd89c416345b32b7e8bd2faf6b7fa5a","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.1.tgz","fileCount":6,"integrity":"sha512-PgC9jSY5Y9o3ungl5N69Nqr1a9xtk3zwrEsdarQOfIAMwr6irOXojljSVD3hL0k7F2AUf5hqM1xessSTUv/J5w==","signatures":[{"sig":"MEUCIHWQHzCYwzUdkgk5lZ28mkHh0Z0vZFy6qziDrXDhfmRDAiEAoaYGquESDK8xlqtmVMmrFcbN1mnHm/itQH0A/4kUdKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230394},"engines":{"node":">=18.0.0"},"gitHead":"e4cf3b0f6921f093c5faae2ef6615181d74863f0","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.1_1771599228062_0.21278264471831965","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"junis","version":"0.3.2","_id":"junis@0.3.2","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"532cab38414f92f8ef3d46f15e3ace2f6994ed74","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.2.tgz","fileCount":6,"integrity":"sha512-kzTYsGtzPRjdsmptpSFXYQKXTrmJ+EIik7fWxsOwiLa/t7PqGlr19VuqE6uQ3u3KIMHSGpY2P7Uh2yJQT5eJNA==","signatures":[{"sig":"MEQCIARcvvLgMMthD7ZPhBn3Pu3KyVncAjz75AU1eznJ5LUkAiBgOrIJbJsvl+mBVvTjh9xIJWcHpaxvG1ZIUHsmkDAwjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277252},"engines":{"node":">=18.0.0"},"gitHead":"dc6aa32a2bd18830dc5a4394ef42c9affa3e8c96","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.2_1772610716165_0.3791466135246506","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"junis","version":"0.3.3","_id":"junis@0.3.3","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"55e7d8c3ad792eafa32e227fb2780c303e9cee64","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.3.tgz","fileCount":6,"integrity":"sha512-96r74wMQbZYKWJlhNUxbFeuAvXAN/mbvsmePX/dPwi+JxlL09hMM+i6BukcpOcv9vTmdpTInh06zn74Huz34MQ==","signatures":[{"sig":"MEQCIE4BnOyqTWlWimhprYAXTvPT/GwyzxGjeBqcTlFdJ/WAAiBDhh/r4dshxDySVHA7jjMprRpuQ6ZO8gKqDgQKPBtaxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277252},"engines":{"node":">=18.0.0"},"gitHead":"5dca36f57ca0202778fa75c605f4abafee8da6aa","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.1.0","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"20.9.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.3_1772614232401_0.7531910003648805","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"junis","version":"0.3.4","_id":"junis@0.3.4","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"2d6a84aab636b0f5f68ed4495a8aa667a44dbdd3","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.4.tgz","fileCount":6,"integrity":"sha512-eDGj+7YGYty/T4wFTfPUYGmIiQQ0yShRpnWL5SjSYu0rQQdmHNiYlvV5j+fx3MPuK8GG0xWkRMgqysVF+3me6A==","signatures":[{"sig":"MEQCIFB3yN8dViJvEpHxWG+GBLWbRlNJCdK52gZ9hbsyttOxAiAR/ZwiK/0Y1gjSpPCfK9KkQ8O2pg71jiQrkH8S3Vu49w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277210},"engines":{"node":">=18.0.0"},"gitHead":"92597865df5187424f229eb25259ddbfee54791c","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format cjs --dts --out-dir dist/cli && tsup src/server/mcp.ts --format cjs --out-dir dist/server && tsup src/server/stdio.ts --format cjs --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.4_1772621361636_0.025650377171060557","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"junis","version":"0.3.5","_id":"junis@0.3.5","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"4076def9702cf9bdfce6cab9a5addddbf133e0c1","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.5.tgz","fileCount":6,"integrity":"sha512-k4LGGqwMhciSOEhxOv5bFq9dkYDT8lOdV5WnZ+bnt800YX/D4yWJPb3I/BBTlZMsYELzdvcN5146r/cuokjxgg==","signatures":[{"sig":"MEUCIDxHxHIdm1liD0JdktH9+trUlKxicBLdqWOqKhMqX9jNAiEAi9M0Zg1WnlRyeTVxPZXq5oaFL2qsgm6nwb2CS3O+xP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263737},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"efaf2a0969a37d687f72df84f5fdb3712ead75f8","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.8.2","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.5_1772642004069_0.17398901086041763","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"junis","version":"0.3.6","_id":"junis@0.3.6","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"6fd6ffdc0369cb76616b802a0f0d36629cc64b49","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.6.tgz","fileCount":6,"integrity":"sha512-78McaH4cC4QCGjKEXvdomXH33XhZgdKSu2mjJjwd0ttGbjFICT0+u02hdoTSZC2rB1nQeBHymDcbJxIWV9+46Q==","signatures":[{"sig":"MEUCIQCowQ1cDNDHeZ+1OrNuHRxHaad+u+dj6DHfJDU9y9nenwIgBmRGhyqwZV9B49NZd4G6l1YlYfSpt8RVGazMkRJWbps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269056},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"66ea17f69394cba0b4a50f8d45fddc36e17e7fa1","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.6_1772643826726_0.9144442540714235","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"junis","version":"0.3.7","_id":"junis@0.3.7","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"3b095b1297de138bda4cb61e57b52a4d468d6bcc","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.7.tgz","fileCount":6,"integrity":"sha512-p8KaJoo8lI1FzeIyXpDgFexw4HTWR3lbQP30umG8hyAfAPMabhvaGXUIBTLerE/wUELoCBlCSsJiLeZ1awyLow==","signatures":[{"sig":"MEUCIA/4cd0b3jCMTqh+D5L0S/XexOdNCEQv/JbdoMeId4DcAiEAhsLfbdgHu/CKVypTZIrPtJNqSZyGxUv0Ka/Qrmp5ZrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269078},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f896a9bb27a0579183d6ec633bd8833654b9f857","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.7_1772644988460_0.5530521798762655","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"junis","version":"0.3.8","_id":"junis@0.3.8","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"c3bf9508d6a9ec0c728c683570430acfa2a34b95","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.8.tgz","fileCount":6,"integrity":"sha512-Q6OPF473wXsPA7g8ntaJjkrNrtJOUNHK0aoHHSZc25dgqtIlFgqmQIsHJDV2yE79Sv25z7ZqnspTUWwzG8FZVA==","signatures":[{"sig":"MEYCIQDl8zIvbeahANA+hMIyAzUscM+oeb6ShZZsJRgphOWWoAIhAMtMF5wVAPkTeOR7l+G70HW965KoDhsx8GA5gejYwjlp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272978},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"5679a6501a4551fc53b8d7d22bc86f8677227aa7","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.8_1772650841829_0.11324622996210754","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"junis","version":"0.3.9","_id":"junis@0.3.9","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"39dcc5a0c440c8432c341274ae9efa257bb8fe4c","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.9.tgz","fileCount":6,"integrity":"sha512-an+iiS/EcKdi/YcuYwd/wjwfcVF4mGCfAWbvATPwjSIMOM0jwyJNJv+FzcKY8JRHb6JaDsK5RkF5mccjY0Y1vQ==","signatures":[{"sig":"MEQCICbnmOimtCTUhNBO2DnkMUJ8f/miDGgljZUZwQjRf0T+AiAsdvjuSf2QQcXjL5axipyXNKTouzpzyLG7ShQXZWEOLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272978},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9e7e75cdb08a4a413c62981755c9d29a298bce66","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.9_1772652574181_0.15667479719861466","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"junis","version":"0.3.10","_id":"junis@0.3.10","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"7a4431a40c5573332ce70ae14dcedca138ba89c0","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.10.tgz","fileCount":6,"integrity":"sha512-9wVNppGizsvmzMaCdO5ssI+wiXs/cpff+M/3VibeGyyx3iF8kG2uG8ZIMvOzx4PXadiRYc0O6QmfV8/5bYDJ4Q==","signatures":[{"sig":"MEUCIBcadUeCrso5QX55p2U7zLPeA1C3CcaVTmjoxqvhdmKgAiEA2j4tZtNRvs18OxTb64yzIv/YhQCa4r7FrKPhZLt2wvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280929},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"d597c5358e226c8ddba4cf29fc5695a625be790d","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.10_1772703468563_0.8970184796026652","host":"s3://npm-registry-packages-npm-production"}},"0.3.11":{"name":"junis","version":"0.3.11","_id":"junis@0.3.11","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"2acdb7b90134dc5a1a60af6ec21c50f853e63360","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.11.tgz","fileCount":6,"integrity":"sha512-/+7Hsm8IBNtWC0vpcVBZjmX/O07bweExLNupeNSi4Yh1qi+bp1nyozL1iGcGYqoLpZWDPGgAZi34KFB5gyxmLQ==","signatures":[{"sig":"MEUCIQDgNCJ3xgxBA892J0aAkHmCk+y6G+o4WSfGdVRhzDJKwQIgExzf+FGoPo0AnDtcvTh0sLkOxScgiLYjQ3froeJtYJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293224},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"6003c897fabff71374b18c8001de36fd7f54933c","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.11_1772709482330_0.12578621336532692","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"junis","version":"0.3.12","_id":"junis@0.3.12","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"975b934c15a27bf447b9df531c7a6d71bee9c8b6","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.12.tgz","fileCount":6,"integrity":"sha512-aP8IiyYBbtsVPsbfTmPclbnPgGpfVvfPxw42BXaJGJe66GxXZnBzm3hpHgaPnn6yd5ItSXfzDcqK9I3V2q15qA==","signatures":[{"sig":"MEYCIQC1FYPDiHnAE4vIQyoIW21FXhHvTeJZ1rg1tg3VmWuxEwIhAKP1dsfstt9Uh4lZ8i/I577gdqvcDNq90i4rV7PR1Hh/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":304873},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"27fc68957c281aa69b8c565b5da2471839f9bb9b","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.12_1772714483599_0.13155341582962854","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"junis","version":"0.3.13","_id":"junis@0.3.13","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"6844523216425f56bc36bf15acab74e0ad68ff0b","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.13.tgz","fileCount":6,"integrity":"sha512-ZrM2KR2YXOB7cGuZdjoxkufij+tP9T16EHCPUyvwnDjLkbwWvh8mEw38skgfUhtimqMNkPoZVPoYrUFabAuo6w==","signatures":[{"sig":"MEUCIETDIgnWIM/IyaNRYp7bF+J46x0sjpSxKNb5UBLQWbk8AiEAkfvx4eJ04Ip9xLfaDcf8WiA0+Zg8j2XJXZFXialIFUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":304873},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"a9c6303a202dc5af591bb98e0846a2d290823730","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.13_1772714583172_0.6400996007419095","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"junis","version":"0.3.14","_id":"junis@0.3.14","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"deea70bc0b31fb7e51e1d442054b869233f743f4","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.14.tgz","fileCount":6,"integrity":"sha512-OjXp5glKzDeG6CZvv2hUjOuxm+png8M0kq6ZpItP4kiYbJ3YXl7UmzKqZZUL35f+q51EQ81ROXEv7Low1QX7xg==","signatures":[{"sig":"MEUCIQDcadig8draNaKQLsrlXlhIkKT/nKFFqJVsPo3A6usF+wIgS16QV0cjnqqTxzZlJs4dzxsulZewnOe4rGTtIGJ1VHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316327},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"ad7f59aa527638158f4edf97eb434ce28b41c093","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.14_1772731538297_0.7568690610612867","host":"s3://npm-registry-packages-npm-production"}},"0.3.15":{"name":"junis","version":"0.3.15","_id":"junis@0.3.15","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"cb5df39846d098196bf83a89d4bc56132734ac43","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.15.tgz","fileCount":6,"integrity":"sha512-AnlglyJebkDVhv1fVNuSGVd2e260hzGbYv4dxM3RguyKfRevJFhMKQQ39KamMgVlPXNO9SBeE726Ov5T+NPORg==","signatures":[{"sig":"MEQCIC+8RI7mWlnZPOGHe3QlZKXEz5WcHSUdngYDoQO9q/JiAiBbvkqzYefTcCKX5eqvis2ICZND2MIOJ6g4yzDnRoP3+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":328803},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"723d6f241979a4a99155ff36a0fd0a49d7977091","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.15_1772736731163_0.03345817252536576","host":"s3://npm-registry-packages-npm-production"}},"0.3.16":{"name":"junis","version":"0.3.16","_id":"junis@0.3.16","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"a3cf02af1650f50c22b8cac443c3b0c2519cc6b8","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.16.tgz","fileCount":6,"integrity":"sha512-h77pGZ6yx9zXRdcJKZuWn3pfro2Q54O76f6EbTL7WfbIU4+9SdVqHCM6xhAn09Ezi4n4FG2CMPh1s7OxmJjEGw==","signatures":[{"sig":"MEQCIFuga+TZRlFLv+Qu913llYLXebuQbRQBoHa+S8LazYLBAiBiYTJUnFALnXpMw3oNtD42Hk9lLKMQ/ZSG21jEo4Spig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":328803},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"6fb80da3b86673e0b0c17ce9bf6daec4efc34acb","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.16_1772736872606_0.7837134657706015","host":"s3://npm-registry-packages-npm-production"}},"0.3.17":{"name":"junis","version":"0.3.17","_id":"junis@0.3.17","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"acb8a8c396dbc937536e33d9cd6d2db3ce542013","tarball":"https://registry.npmjs.org/junis/-/junis-0.3.17.tgz","fileCount":6,"integrity":"sha512-Uu1gGTRw3fKxTqb+YUbSek/8xMUdp440WarU+pLOj0q5QoWpknlq42lM3f0E5y4c5qf4VCGgVliM5ItI/LOgtw==","signatures":[{"sig":"MEUCIQCw0omU5kuSxLUSzstNJSOYsZla8z36AB1pzZYUQfzvrQIgJBd89mCN4O16qVrX/SwD7Xe9JPiPI5LGEYuxrXEfzu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335253},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"c2a7f3ab9d71290beaa3b571df71ebb2436cc136","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.3.17_1772743124589_0.5642322913384057","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"junis","version":"0.4.0","_id":"junis@0.4.0","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"c00644abb8ab5e298edcbee57f63dd73bd5e603f","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.0.tgz","fileCount":6,"integrity":"sha512-gUeDgxaiIzapniSeZXNHvlyD1QW9wRLvVuRPDrJTrVF4KYxKI4efhsrlZ6LUb33AepG69VniAf8MShVhDJ1XZQ==","signatures":[{"sig":"MEUCIQDIS8ixO05MfZ76qpNV7WmfJ2ogULX/OXuyjiq3q2V6CgIgZ73zhEH/88Qr83fDneB2QBkVnYKpuLcJGl9p3wybXBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339067},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"bb7efc543e2be8b19f052d5ca1c8be13cf81a903","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.4.0_1772745070039_0.6215772843264309","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"junis","version":"0.4.1","_id":"junis@0.4.1","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"3020680141b855ae5eecdf4b10a703f23309df75","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.1.tgz","fileCount":6,"integrity":"sha512-3BGphcmq4cI5PlmZEVuu/hYxd6Zly9aMJhCsLWWPl6vz1rvSIeW8Euc/5BClPXfWLdDWwCwVJaak+KwBZAJxQA==","signatures":[{"sig":"MEYCIQD6Avp2/AHFqlRjkX2DJv6U1wwqEcNim+gK1Asvdr3WKwIhAKrCpqPJ32i4PyrRMwtj89EIXNZu9YUfUpvprml6Ktw9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347361},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"bb7efc543e2be8b19f052d5ca1c8be13cf81a903","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.4.1_1772746691978_0.32533949366542503","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"junis","version":"0.4.2","_id":"junis@0.4.2","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"c9825348ad9f3917f0e05bcb24bb318ffac9b219","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.2.tgz","fileCount":6,"integrity":"sha512-B8EqKLXH0DCDsyo1nZX+LAS7n/sSO9Cv297hk1+1mlCRLki70EPzgYSwktXQjRQCJeLFO2wcu/IgL8sIYcPoxQ==","signatures":[{"sig":"MEUCIQCLE7eP8dHBX50D7sm2z7XdLONHTyCVTWFSIjChYpoHfgIgHcV9gv9MrfvOoAhU9oMyadqhqUwcq1rl3cPGZRk7Zws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":346746},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"11bfebcd057e123fa74a9983cc12ea2883bb0dc4","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.4.2_1772779544098_0.5396972489831271","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"junis","version":"0.4.3","_id":"junis@0.4.3","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"6955831759480ef51a3d6cf6a6f4faa57764b812","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.3.tgz","fileCount":6,"integrity":"sha512-oudskdmFz4/DH/8iUxxYtjShW+qLcghF+5YOQjDhmuU45L0EjP442UXi7gQdjPpSMS1WawZ6FWREtK90CanQ3Q==","signatures":[{"sig":"MEUCIHmGB/PGoTVJs8ChHxv1+wA3nYLRfDdN50BRAZgbYNSuAiEAhkRvcsyV3G6Zu0FjCgNbOrgxvHcebkZcDebFi/1MA9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":355005},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"4292b7f4c218a008d98821f1b89f92910d0d08d6","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.4.3_1772781420622_0.5202248557218629","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"junis","version":"0.4.4","_id":"junis@0.4.4","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"1c3f8890c4169f7c111cc25ea448b286a50d128b","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.4.tgz","fileCount":6,"integrity":"sha512-gW1ZjmaGqQZUMTge7gvpC3Imr7OkdeUCD792Iie8sI6tqX5FswHqP9Qlf/aXyA+hodIjLEvufRNsKAGbaN62tg==","signatures":[{"sig":"MEYCIQDR/KGBeMehBXStOMQ0GzaNTuwsVR4sU7YK25j8+VHXKAIhAI76Ikqa7Ytc2fhzqs8h7dggmabqGpcLnQc2TkMnd7ZG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":355886},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"35db94de782d81dbe13609683619b543d3e6992e","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.4.4_1774000564774_0.18605730314720792","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"junis","version":"0.4.5","_id":"junis@0.4.5","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"2c8a15ae8ef5f8ab729ca883aa2bf28218c64d85","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.5.tgz","fileCount":6,"integrity":"sha512-w+C8v4MOpt048bkfqG42F6ZgIN2v1OdKb6eDiQlBk4N/l9Huq41/Q01d1ylGOk7TMCKY+2FB1gOpA3aAqzKTPg==","signatures":[{"sig":"MEYCIQCvf39oHeOFO90NxHF3CIz6bVpY6JVbfxvlET3vOt3XZQIhAK/AZ2dD0N6JS1dwcdfKGospjJMTJOmnpp3zodTIZ459","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":356109},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"94d64f1fdf8825e38b95a7996b82a77df2049ac2","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.7","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.4.5_1778054705518_0.33374548894099876","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"junis","version":"0.4.6","_id":"junis@0.4.6","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"7e017a72fad689b579383043ac0c70bb111abdc4","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.6.tgz","fileCount":6,"integrity":"sha512-E4IekvYJ17PvcjsNtIgxisj+kPBubShl9aVhfAvn2ExQVD72Fl2cfeBe7Se/fQQmO2IkifExTeR4Prov2UVK3Q==","signatures":[{"sig":"MEUCID76jIs1DHdyZpzEt5ZRNhDUj7MXJTMKZhvwxbPQD1PlAiEAyDEbCZi6MsycvLLdGO8PP2Fb8ya07/Yc0WNOsC7iGyI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360158},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"29fbe5b66d69070c0fde133e84d2e4feb450ba67","scripts":{"dev":"tsx src/cli/index.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"raytona","email":"hyeonjin@tooeasy.life"},"_npmVersion":"10.9.7","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.4.6_1784777382361_0.7416346107821492","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"junis","version":"0.4.7","_id":"junis@0.4.7","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"586caf47dd569c3b98343bbdb6f26a1b051ecc5c","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.7.tgz","fileCount":6,"integrity":"sha512-AebrOVunQ9W14s4i6ChMALNlnzP+QO/Qc+ifkrGzCOLSrZZZMTlvF2p2UgWb6NR/2HM9n08qDYcacD7nuEFTFg==","signatures":[{"sig":"MEQCIDdnqnRbEJJwPQLFZIGh3rGMVvaVUuQfGtQ0/6NIvJewAiA5szvtKXUPBflQXIpMph+f1qS8wVevg/S4zoyPLp9aHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIE7594hcI9uwdRXYMhjMfn7OMdH0iRYaHM+f+7jiAoElAiEAhGMulfP804b7e1aqz3GBjHRxn9Rsr94Op1KJeYfAHX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":386067},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"166832b6520eda6e6938a8e7b04eb39630322057","scripts":{"dev":"tsx src/cli/index.ts","test":"node --import tsx --test tests/*.test.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/junis_0.4.7_1790734133293_0.03147479432588152","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"_id":"junis@0.4.8","bin":{"junis":"dist/cli/index.js"},"dist":{"shasum":"2231596d9c880af4f26308aff48a05220217653d","tarball":"https://registry.npmjs.org/junis/-/junis-0.4.8.tgz","fileCount":6,"integrity":"sha512-aK7S8PsyTtUSF+7VW63RDj2+cvJyP//zW4UX5X1jloL/WUP/A3QLcDWwvaGCPNEWlehh94GfbEUJkcyiWTunTg==","signatures":[{"sig":"MEUCIAr1vUTME7VUK1ZdiICK85LZr59lAmPEyXEix/okp5ETAiEAsB9ObfqA3TcqXyd8D32C+7MqywcA5jGf8Hh9RKDKY10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDkkAZaDEzjmcMIfqPX/DsLIZFa88Tt/Yqf7VycmCr8agIhANh8vocXvXRWWpcPGpDzqi2HmXriqezOPYttq6DBiYYS"}],"unpackedSize":387146},"name":"junis","type":"module","engines":{"node":">=18.0.0"},"gitHead":"32100f1fb1d0ccf2da1d8b0b898db8f6ed33e405","scripts":{"dev":"tsx src/cli/index.ts","test":"node --import tsx --test tests/*.test.ts","build":"tsup src/cli/index.ts --format esm --dts --out-dir dist/cli && tsup src/server/mcp.ts --format esm --out-dir dist/server && tsup src/server/stdio.ts --format esm --out-dir dist/server","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"version":"0.4.8","_npmUser":{"name":"tooeasyjun","email":"junmin@tooeasy.life"},"_npmVersion":"10.9.4","description":"One-line device control for AI agents","directories":{},"maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.0","zod":"^4.3.6","glob":"^11.0.0","open":"^10.1.0","execa":"^8.0.0","commander":"^12.0.0","browserclaw":"^0.2.7","node-notifier":"^10.0.1","playwright-core":">=1.50.0","@inquirer/prompts":"^8.2.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/ws":"^8.5.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/node-notifier":"^8.0.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/junis_0.4.8_1790756640778_0.7840935157079103"}}},"time":{"created":"2026-02-19T08:12:03.615Z","modified":"2026-09-30T08:24:01.357Z","0.1.0":"2026-02-19T08:12:03.797Z","0.1.1":"2026-02-19T08:57:50.097Z","0.1.2":"2026-02-19T12:49:47.666Z","0.1.3":"2026-02-19T12:53:01.215Z","0.1.4":"2026-02-19T13:15:08.990Z","0.1.5":"2026-02-19T13:23:37.966Z","0.1.7":"2026-02-19T14:53:44.181Z","0.1.8":"2026-02-19T15:15:21.742Z","0.2.0":"2026-02-19T16:22:50.280Z","0.2.2":"2026-02-19T17:28:51.953Z","0.2.3":"2026-02-19T21:08:37.556Z","0.2.4":"2026-02-19T21:21:44.710Z","0.2.5":"2026-02-20T04:58:01.254Z","0.2.6":"2026-02-20T05:21:22.680Z","0.3.1":"2026-02-20T14:53:48.218Z","0.3.2":"2026-03-04T07:51:56.326Z","0.3.3":"2026-03-04T08:50:32.534Z","0.3.4":"2026-03-04T10:49:21.793Z","0.3.5":"2026-03-04T16:33:24.239Z","0.3.6":"2026-03-04T17:03:46.868Z","0.3.7":"2026-03-04T17:23:08.594Z","0.3.8":"2026-03-04T19:00:42.229Z","0.3.9":"2026-03-04T19:29:34.403Z","0.3.10":"2026-03-05T09:37:48.706Z","0.3.11":"2026-03-05T11:18:02.520Z","0.3.12":"2026-03-05T12:41:23.798Z","0.3.13":"2026-03-05T12:43:03.328Z","0.3.14":"2026-03-05T17:25:38.479Z","0.3.15":"2026-03-05T18:52:11.372Z","0.3.16":"2026-03-05T18:54:32.757Z","0.3.17":"2026-03-05T20:38:44.736Z","0.4.0":"2026-03-05T21:11:10.192Z","0.4.1":"2026-03-05T21:38:12.161Z","0.4.2":"2026-03-06T06:45:44.277Z","0.4.3":"2026-03-06T07:17:00.840Z","0.4.4":"2026-03-20T09:56:04.921Z","0.4.5":"2026-05-06T08:05:05.676Z","0.4.6":"2026-07-23T03:29:42.502Z","0.4.7":"2026-09-30T02:08:53.389Z","0.4.8":"2026-09-30T08:24:00.867Z"},"description":"One-line device control for AI agents","maintainers":[{"name":"raytona","email":"hyeonjin@tooeasy.life"},{"name":"tooeasyjun","email":"junmin@tooeasy.life"}],"readme":"# junis\n\n[![npm version](https://img.shields.io/npm/v/junis)](https://www.npmjs.com/package/junis)\n[![license](https://img.shields.io/npm/l/junis)](./LICENSE)\n\nAI 에이전트가 내 컴퓨터를 완전 제어할 수 있게 해주는 로컬 MCP 도구 서버입니다.\n셸 명령 실행, 파일 관리, 브라우저 자동화, 노트북 편집, 화면/카메라 캡처 등 28개 도구를 제공합니다.\n\n---\n\n## 특징\n\n- **제로 설정 로컬 모드** — `npx junis --local` 한 줄이면 바로 사용 가능\n- **클라우드 릴레이 모드** — `wss://api.junis.ai`를 통해 원격 디바이스 제어\n- **파일 & 셸 도구** — 읽기, 쓰기, 검색, 명령 실행, 프로세스 관리\n- **브라우저 자동화** — Playwright 기반 웹 탐색, 클릭, 입력, 스크린샷, PDF 저장\n- **노트북 도구** — Jupyter 노트북 셀 읽기, 수정, 추가, 삭제, 실행\n- **디바이스 도구** — 화면 캡처, 카메라, 알림, 클립보드, 녹화, 위치, 오디오\n- **MCP 호환** — Claude Code, Claude Desktop 등 모든 MCP 클라이언트와 연동\n- **TypeScript** — `@modelcontextprotocol/sdk` 기반\n\n---\n\n## 설치 및 실행\n\n### 로컬 모드 (계정 불필요)\n\n```bash\nnpx junis --local\n```\n\n`http://localhost:3000/mcp`에 MCP 서버가 시작됩니다. MCP 클라이언트에서 이 주소를 지정하면 바로 사용할 수 있습니다.\n\n기본적으로 **이 컴퓨터(루프백, 127.0.0.1·::1)에서만** 접속됩니다. 다른 기기에서 접속해야 하면 `--host` 로 주소를 열고, 이때는 베어러 토큰이 반드시 필요합니다(지정하지 않으면 한 번 생성해 보여 주고 `~/.junis/config.json` 에 저장).\n\n```bash\nnpx junis --local --host 0.0.0.0              # 토큰 자동 생성·1회 출력\nnpx junis --local --host 0.0.0.0 --token <값>  # 토큰 직접 지정\nclaude mcp add --transport http junis http://<주소>:3000/mcp --header \"Authorization: Bearer <토큰>\"\n```\n\n### 클라우드 모드\n\n```bash\nnpx junis\n```\n\n최초 실행 시 브라우저가 열려 OAuth 로그인을 진행합니다. 인증 후 디바이스가 `wss://api.junis.ai`에 연결되어 원격 AI 에이전트 세션을 받을 수 있습니다. 백그라운드 데몬으로 실행되며 부팅 시 자동 시작됩니다.\n\n### 포트 변경\n\n```bash\nnpx junis --local --port 8080\n```\n\n---\n\n## 제공 도구 목록\n\n### FilesystemTools (8개)\n\n| 도구 | 설명 |\n|------|------|\n| `execute_command` | 터미널 명령 실행 (타임아웃, 백그라운드 실행 지원) |\n| `read_file` | 파일 읽기 (utf-8, base64 인코딩 지원) |\n| `write_file` | 파일 쓰기/생성 (상위 디렉토리 자동 생성) |\n| `edit_block` | 파일의 특정 텍스트 블록을 교체 (diff 기반 부분 수정) |\n| `list_directory` | 디렉토리 내 파일/폴더 목록 조회 |\n| `search_code` | 코드/텍스트 패턴 검색 (ripgrep 우선, fallback으로 glob 검색) |\n| `list_processes` | 실행 중인 프로세스 목록 (CPU 사용률 순) |\n| `kill_process` | 프로세스 종료 (SIGTERM 후 3초 대기, 미종료 시 SIGKILL 자동 적용) |\n\n### BrowserTools (7개)\n\n> Playwright 설치 필요: `npx playwright install chromium`\n> 미설치 시 브라우저 도구 호출 시 경고 메시지만 출력되며 서버가 중단되지 않습니다.\n\n| 도구 | 설명 |\n|------|------|\n| `browser_navigate` | URL로 이동 |\n| `browser_click` | CSS 선택자로 요소 클릭 |\n| `browser_type` | 텍스트 입력 (기존 내용 삭제 후 입력 옵션) |\n| `browser_screenshot` | 현재 페이지 스크린샷 (파일 저장 또는 base64 반환) |\n| `browser_snapshot` | 페이지 접근성 트리(aria snapshot) 조회 |\n| `browser_evaluate` | 페이지 내 JavaScript 실행 |\n| `browser_pdf` | 현재 페이지를 PDF로 저장 |\n\n### NotebookTools (5개)\n\n> Jupyter 설치 필요: `pip install jupyter`\n\n| 도구 | 설명 |\n|------|------|\n| `notebook_read` | .ipynb 노트북 셀 목록 및 내용 조회 |\n| `notebook_edit_cell` | 특정 셀 소스 코드 수정 |\n| `notebook_add_cell` | 새 셀 추가 (code/markdown, 위치 지정 가능) |\n| `notebook_delete_cell` | 특정 셀 삭제 |\n| `notebook_execute` | 노트북 전체 실행 (nbconvert --execute) |\n\n### DeviceTools (8개)\n\n| 도구 | 설명 |\n|------|------|\n| `screen_capture` | 화면 스크린샷 (macOS: screencapture, Linux: scrot) |\n| `camera_capture` | 카메라 사진 촬영 (macOS: imagesnap, Linux: fswebcam) |\n| `notification_send` | OS 알림 전송 |\n| `clipboard_read` | 클립보드 내용 읽기 |\n| `clipboard_write` | 클립보드에 텍스트 쓰기 |\n| `screen_record` | 화면 녹화 시작/중지 (macOS: screencapture -v, 기타: ffmpeg) |\n| `location_get` | 현재 위치 조회 (macOS: CoreLocation, fallback: IP 기반) |\n| `audio_play` | 오디오 파일 재생 (macOS: afplay, 기타: ffplay) |\n\n---\n\n## CLI 명령어\n\n```\nUsage: npx junis [options] [command]\n```\n\n| 명령어 | 설명 |\n|--------|------|\n| `start` (기본) | Junis 에이전트 시작. 인증 후 백그라운드 데몬으로 실행 |\n| `stop` | 백그라운드 서비스 중지 및 자동시작 해제 |\n| `logout` | 서버에서 디바이스 토큰 회수 → 백그라운드 서비스 중지·자동시작 해제 → 저장된 인증 정보 삭제 |\n| `status` | 현재 연결 및 디바이스 상태 확인 |\n\n### 옵션\n\n| 옵션 | 설명 |\n|------|------|\n| `--local` | 클라우드 연결 없이 로컬 MCP 서버만 실행 |\n| `--port <number>` | 로컬 MCP 서버 포트 (기본: 3000, `~/.junis/config.json` 에 기억) |\n| `--host <addr>` | 바인딩 주소 (기본: 127.0.0.1, 이 컴퓨터만). 그 외 주소는 베어러 토큰 필수 |\n| `--token <value>` | `POST /mcp` 마다 요구할 베어러 토큰 (`Authorization: Bearer <value>`). 기억됨 |\n| `--no-token` | 기억된 토큰 해제 (루프백 바인딩에서만) |\n| `--reset` | 기존 인증 초기화 후 재로그인 |\n\n### 사용 예시\n\n```bash\n# 로컬 MCP 서버 실행 (기본 포트)\nnpx junis --local\n\n# 로컬 MCP 서버 실행 (포트 지정)\nnpx junis --local --port 8080\n\n# 클라우드 모드로 시작 (최초 실행 시 인증)\nnpx junis\n\n# 인증 초기화 후 재로그인\nnpx junis --reset\n\n# 백그라운드 서비스 중지\nnpx junis stop\n\n# 연결 상태 확인\nnpx junis status\n\n# 로그아웃\nnpx junis logout\n```\n\n---\n\n## MCP Client Integration\n\nTo use junis with Claude Code, Claude Desktop, Codex, or any other MCP client, add the following to your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"junis\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"junis\", \"--stdio\"]\n    }\n  }\n}\n```\n\nFor Claude Code, you can also register via CLI:\n\n```bash\nclaude mcp add junis -- npx -y junis --stdio\n```\n\nNo separate server process is needed — the MCP client will launch junis automatically.\n\n---\n\n## 알려진 제한사항\n\n- **camera_capture (macOS 데몬 모드)**: macOS에서 데몬(백그라운드) 모드로 실행 시 카메라에 접근하려면 **시스템 설정 > 개인정보 보호 및 보안 > 카메라**에서 `node`에 권한을 직접 부여해야 합니다.\n- **screen_capture (macOS)**: 화면 녹화 권한이 필요합니다. **시스템 설정 > 개인정보 보호 및 보안 > 화면 및 시스템 오디오 녹음**에서 터미널 앱에 권한을 부여하세요.\n- **browser 도구**: Playwright가 설치되어 있지 않으면 브라우저 도구 호출 시 경고만 출력됩니다. `npx playwright install chromium`으로 설치하세요.\n- **notebook 도구**: Jupyter가 설치되어 있지 않으면 노트북 실행(`notebook_execute`)이 실패합니다. `pip install jupyter`로 설치하세요.\n- **location_get**: macOS에서 CoreLocationCLI가 없으면 IP 기반 위치 추정으로 자동 전환됩니다 (정확도 낮음).\n\n---\n\n## 환경 변수\n\n| 변수 | 기본값 | 설명 |\n|------|--------|------|\n| `JUNIS_API_URL` | `https://api.junis.ai` | REST API 기본 URL |\n| `JUNIS_WS_URL` | `wss://api.junis.ai` | WebSocket 릴레이 URL |\n| `JUNIS_WEB_URL` | `https://junis.ai` | 웹 UI URL (OAuth 시 사용) |\n\n---\n\n## 요구 사항\n\n- Node.js >= 18\n- (선택) Playwright — 브라우저 도구: `npx playwright install chromium`\n- (선택) Jupyter — 노트북 도구: `pip install jupyter`\n- (선택) imagesnap — macOS 카메라 캡처: `brew install imagesnap`\n\n---\n\n## 라이선스\n\nMIT\n","readmeFilename":"README.md"}