{"_id":"clawdcursor","_rev":"37-a818f114ff04c599bdc247270951daf9","name":"clawdcursor","dist-tags":{"latest":"2.0.0"},"versions":{"0.9.6":{"name":"clawdcursor","version":"0.9.6","keywords":["agent","ai-agent","mcp","model-context-protocol","desktop-automation","computer-use","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@0.9.6","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"80097676c397b9fddf21fa7eb3a01387e4db5caa","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-0.9.6.tgz","fileCount":312,"integrity":"sha512-LmCxS86+geSnjbsKR5GezlKsmt40HcK4Zgr9JLRJ/SdhI64UgUzuHDnEqVb8NWHojNpndV/z+nnoIZvqV31S8g==","signatures":[{"sig":"MEUCIEIXFoLc9gtPyMsXwBSuVbMaL/rOCST8Ttr5vC7agPAjAiEAqzJtEx1bRfqzUZV9r+9UuJUfU+klTTepZv0oC1BMAKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3078214},"engines":{"node":">=20.0.0"},"scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","typecheck":"tsc --noEmit","postinstall":"node scripts/verify-install.js || true","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"The skill that gives any AI agent a cursor and a keyboard on a real desktop. Open source (MIT). Model-agnostic — works with Claude, GPT, Gemini, Llama, or any tool-calling model — on Windows, macOS, and Linux.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.1","zod":"^3.25.76","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^14.0.3","picocolors":"^1.1.1","playwright":"^1.59.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","eslint":"^10.4.0","vitest":"^4.1.6","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.0","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_0.9.6_1779580246459_0.06891483062948223","host":"s3://npm-registry-packages-npm-production"}},"0.9.7":{"name":"clawdcursor","version":"0.9.7","keywords":["agent","ai-agent","mcp","model-context-protocol","desktop-automation","computer-use","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@0.9.7","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"66291f6322933f736d03a1598895a19b3760c7d6","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-0.9.7.tgz","fileCount":312,"integrity":"sha512-5FfFfQ2TKnqhgg4rGq5EGmcxbzRXi+aQMAdmNrCIhbA7QjOoD26lqVQseFi2LCqR/KMI6HS8J2xaK7t2VIgTTw==","signatures":[{"sig":"MEQCICXSfoYA6wxJyXUuNYf+5ILnms1UftG4c1cB59FR9XuoAiBfV8tqXZ1uprRb8WX5MjdQzco6OqB6EfG5Oeuq2gJzEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3090473},"engines":{"node":">=20.0.0"},"scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","typecheck":"tsc --noEmit","postinstall":"node scripts/verify-install.js || true","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"The skill that gives any AI agent a cursor and a keyboard on a real desktop. Open source (MIT). Model-agnostic — works with Claude, GPT, Gemini, Llama, or any tool-calling model — on Windows, macOS, and Linux.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.1","zod":"^3.25.76","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^14.0.3","picocolors":"^1.1.1","playwright":"^1.59.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","eslint":"^10.4.0","vitest":"^4.1.6","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.0","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_0.9.7_1779580743705_0.6657461983323381","host":"s3://npm-registry-packages-npm-production"}},"0.9.8":{"name":"clawdcursor","version":"0.9.8","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@0.9.8","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"cbbe0fe1e810776f1154c0266c4fcf78ea3b61e7","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-0.9.8.tgz","fileCount":312,"integrity":"sha512-QFqbJXx1ewlbz1LlsU2QmkkgqZlwnGG9HbYwuT13+7MafxvgwCVok7/5rMZvYECTdd7Ci0HzCQmKKMkt13GBnw==","signatures":[{"sig":"MEUCIQC3TUPWxaaywdFZ/rTwh2WodRWg8bA2LCBJP5hRVmfZzAIgVoEGfnV5K+2irTO2rMe4W2BVW8cBtdH2uKzH1amKJbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3076064},"engines":{"node":">=20.0.0"},"mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","typecheck":"tsc --noEmit","postinstall":"node scripts/verify-install.js || true","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.1","zod":"^3.25.76","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^14.0.3","picocolors":"^1.1.1","playwright":"^1.59.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","eslint":"^10.4.0","vitest":"^4.1.6","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.0","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_0.9.8_1779669255501_0.9351110531753202","host":"s3://npm-registry-packages-npm-production"}},"0.9.9":{"name":"clawdcursor","version":"0.9.9","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@0.9.9","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"d405c5a7850ab381b2d9d089d2e5598de567a77e","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-0.9.9.tgz","fileCount":312,"integrity":"sha512-7orakR0tRt2urVfHgZP7FAmg416od25dSrJwztJC5PGVqc70Z3i9b1votY3lw41t+xMBnKP6EgjFrt1RgVEPpw==","signatures":[{"sig":"MEYCIQDcrLY4U2mQ3xu3VX5ZAW0kKlMoewFZLEvBLxNZLR9j8QIhAOmpAweX/+mKqVWkQgEkYkIctty4T5cPskn5E/EIA4NG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3078647},"engines":{"node":">=20.0.0"},"mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","typecheck":"tsc --noEmit","postinstall":"node scripts/verify-install.js || true","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.20.1","zod":"^3.25.76","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^14.0.3","picocolors":"^1.1.1","playwright":"^1.59.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","eslint":"^10.4.0","vitest":"^4.1.6","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.0","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.59.4"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_0.9.9_1779688807725_0.2830300511272732","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"clawdcursor","version":"1.0.1","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.0.1","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"0819045e030d0db0cac61b0a33cb4c6f97ea634a","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.0.1.tgz","fileCount":301,"integrity":"sha512-pJZCJPqa9GlSkFvp8W/55WbsCqLZ2rSB6jOqJRgAUODXkTWRcG3y4lK5lpl0e58rj7uXt2vhFjU48OOtIJm34Q==","signatures":[{"sig":"MEUCIQDBr4COa4pelEeX9eB3IomJNKsxDoy9x157xYh9YtzVyQIgUWt+//x3O6Jw8pH+scirFzG+zMjqbgbw39RyALinb4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3044589},"_from":"file:clawdcursor-1.0.1.tgz","engines":{"node":">=20.0.0"},"mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"_resolved":"C:\\Users\\Dabbas\\clawdcursor\\clawdcursor-1.0.1.tgz","overrides":{"ip-address":"10.1.1"},"_integrity":"sha512-pJZCJPqa9GlSkFvp8W/55WbsCqLZ2rSB6jOqJRgAUODXkTWRcG3y4lK5lpl0e58rj7uXt2vhFjU48OOtIJm34Q==","repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^3.25.76","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^14.0.3","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.0.1_1780789874276_0.16540935683183822","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"clawdcursor","version":"1.0.2","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.0.2","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"76ba56bed2a8c467f4d7347288380a87739707ef","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.0.2.tgz","fileCount":301,"integrity":"sha512-9jNMjGm5FsvE3eIw+oEKJDdOu9ZIZ534zWOeyUW02IsKLALsiOVw735aiEDxkyH9KVGsrj9MfnrF4oTlaZvW1g==","signatures":[{"sig":"MEYCIQC0qKRd1RNvwWTf8UQUPZiczD2ZaL85mp8n7GGRukEY+QIhANSAr4RiMC9J56oNUl6O3PTtZgDzcY7DZHkDpARd0dxr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3045328},"engines":{"node":">=20.0.0"},"gitHead":"bcf0de24edd8befa88b216e64287e816ec19edaf","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^3.25.76","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^14.0.3","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.0.2_1780803246412_0.30424741224475893","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"clawdcursor","version":"1.0.3","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.0.3","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"4bcd1b367546cc00909365d8545e9ff9bd83c122","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.0.3.tgz","fileCount":301,"integrity":"sha512-/H2ii9kM0BibumMCsmVWB7aGHMiER0jV7o1avyY7PqyDETBspjxbcvJ1a+XpaMhlH7uMMJ+g0MmnZJ/PTrynwg==","signatures":[{"sig":"MEQCICNJiPitDvlA/svaTsjL5RDxSgmGKSJZxddISmX1/zsyAiAGcwMgGQyOtJ9lgpxVGkDnUeCQz0JqjCE8hGyf+a8bPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3046473},"engines":{"node":">=20.0.0"},"gitHead":"5fe11f2fed3a196dd3f9e909d985a1c9e756d0b3","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^3.25.76","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^14.0.3","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.0.3_1780804111913_0.6600694443672173","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"clawdcursor","version":"1.0.4","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.0.4","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"dabe3a71f08895626afe860ece03a28e25405bf1","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.0.4.tgz","fileCount":301,"integrity":"sha512-41fUH+9thCG8N0q4caRtWwfJFzFpU0NmN0zi2DBp45Ol2j2nLpo3AdPORRoBavNOYmqsq2i2Mi1q9Mod6mg9VA==","signatures":[{"sig":"MEQCIFAbeSgqwvgFG0A7aWzx/rhO1NNnduhJRt5y94OU5x1cAiBKJphXm2EJMVJUKklaVgXpj9vlcvSSPdfxJUT8JfBZRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3053051},"engines":{"node":">=20.0.0"},"gitHead":"14278f27f4052875cd7b56cf68ed1394a4cf3c0f","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^3.25.76","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^14.0.3","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.0.4_1780808160913_0.24577141987888873","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"clawdcursor","version":"1.5.0","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.0","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"a69985f927f77b4888f7920f1a9b315379521215","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.0.tgz","fileCount":340,"integrity":"sha512-8UUHqhZl7WXoixxb1qFn+BX+tAZZ9buPk+lb4WuBi0xh5bMtXNqhQpV95IJ9npEMK+R/04EGh9y4XgzHWFtxCQ==","signatures":[{"sig":"MEYCIQCWFwC6r7ScTWZ8MZRQxfC0qS46OBY38DIcmcDrU7/MZQIhANz2CtuS/eUqYxcK37t15/norKfvVhnzkP1yl2j3Py6Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3301594},"engines":{"node":">=20.0.0"},"gitHead":"8ef9c87b1ec453ba5b0d74f5a85981858e7b7192","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1","brace-expansion":"5.0.6"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.8","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.0_1781179196062_0.046820962842584635","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"clawdcursor","version":"1.5.1","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.1","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"b5e43dc7c67faa70717b0bc40fe4d20ce4465935","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.1.tgz","fileCount":343,"integrity":"sha512-b851JF+pmflaWOX5luQHVW6If6syqewH7u8SrnrlMmrQ2PFkXCSmOOIUsDWl/VfgHMETPGlwmXQWUgIICGWTRw==","signatures":[{"sig":"MEUCIQDYGncZJag6e9uk/QBPtLqGrpbwXWDyCneUmYCnJ0sHowIgO+RjEANydAIOcaMqNg2ylQ+H1QgnkeATn9AhPslTV9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3329472},"engines":{"node":">=20.0.0"},"gitHead":"2a7d1ac766603606355756a3534a118e2105d118","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1","brace-expansion":"5.0.6"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.8","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.1_1781258299370_0.11685468931153009","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"clawdcursor","version":"1.5.2","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.2","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"31178228c233a345fa98e5051cc6e072effc340d","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.2.tgz","fileCount":347,"integrity":"sha512-9Os+dNiXJlrCf9kQb/AZRxKmZhjHAuUp55OHPo9HqXAV/k4ONazGkqGEtUmXGRDsDgPemHJOF4xxhkLB7x3UmQ==","signatures":[{"sig":"MEQCIAVLxnmFd90h8x8DkmVexPyK1ZJBpDZMPjNPgYJV3gC5AiBRL8Z6ExH8K6/tN1pRhAU2TtTHuHWjNC7FT+W+Ml+r1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3391668},"engines":{"node":">=20.0.0"},"gitHead":"25bfa0e01f11ad9f5169843f3f60cc1883e7d3b8","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1","brace-expansion":"5.0.6"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.8","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.2_1781356290391_0.08229023050481765","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"clawdcursor","version":"1.5.3","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.3","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"b1cdae57115fd3fdb8102bb817066e6da551666f","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.3.tgz","fileCount":348,"integrity":"sha512-gN4psbXfImkDd4Ogg1zCLerg4LL0b7xrWCUIJb8hVEBDwEtv3joiD4gKRg029bUuOoL3Il9xKgE8+EkXm7lMUg==","signatures":[{"sig":"MEUCIQDRXb+laC2ep9a/QW5W8D7a+Z3DERpq/LFDQEq3OA0W2wIgKUZTMLGKLcYj+rKoIM+PaVYgzabEFYTEWpmFqHlix7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3398540},"engines":{"node":">=20.0.0"},"gitHead":"72eac5763344b6691ffa685691ce7e912c7b4e37","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1","brace-expansion":"5.0.6"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.8","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.3_1781517585487_0.7845591270474899","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"clawdcursor","version":"1.5.4","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.4","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"0a09bca9233cc5f704a063d1490c19e6a8ce0e31","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.4.tgz","fileCount":351,"integrity":"sha512-RMMxzzaRtPZTFrhZSioVH24FBugHgH43yCPKwECWlPuAIDn4JgV1tfoyQ2AaYed+zpuT2qPlGFLLfkVMTcDT/w==","signatures":[{"sig":"MEUCIQCxHXqJKkmnscG6jzjpt5YI6/MCaswhn+6nB21gjpUALAIgfZu+VT2IW5xe0msrW3fL2e6BznTr98UQ376gLTFucKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3405924},"engines":{"node":">=20.0.0"},"gitHead":"5c7611026aa3026ef936944f146c9cea17b740e6","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1","brace-expansion":"5.0.6"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.8","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.4_1781529445756_0.16170820623568383","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"clawdcursor","version":"1.5.5","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.5","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"460f3e5aed589a15466661de4584e6504b45c709","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.5.tgz","fileCount":354,"integrity":"sha512-oHsyfIN8I45ptEzc83my+DyJHl5cIgQ/Mx8imP9jkmzrc9CMs0cW9KJUmvMt7qt0fHP8ewXZfJuyyPwR4EKpQw==","signatures":[{"sig":"MEUCIQCwL0jeLnXl2T/Ap57LlrTzeQ0lYHFd6fYgVoThJShl/gIgXQ1GTOS+sPgpAH13N5rQN07gKEEbfwv4rZPEntzZIP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3415065},"engines":{"node":">=20.0.0"},"gitHead":"012a47fcfeb2642818da0c8a34cd9197e8c6e9af","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1","brace-expansion":"5.0.6"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.34.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.60.0","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.4.1","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^25.9.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.8","@typescript-eslint/parser":"^8.60.1","@typescript-eslint/eslint-plugin":"^8.60.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.5_1781610090841_0.42082295311069684","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"clawdcursor","version":"1.5.6","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.6","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"460a155b58331e769deeac98e7dd53aab4594272","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.6.tgz","fileCount":354,"integrity":"sha512-TgcCiof/gpik/WEO4KtT62H7v7glgFFhJmEiAh6jQU+dI05/F2vHTSbPcSTuSpDuJPnlfl1kt++3l/iglEwgrg==","signatures":[{"sig":"MEUCIQDpEOTZRR2/IEBTdlIWVVtgzrqrImja9Qdc+1Rnp2UuywIgE3xnBXkhK/4LMliWFlrpf9ph9/N0QlPaTvI3VjDEIo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3423121},"engines":{"node":">=20.0.0"},"gitHead":"63ac8981f67ff550fe712d046ac9208d177203e7","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md skills/clawdcursor/SKILL.md .claude-plugin/marketplace.json docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","postbuild:msg":"handled by postbuild.js","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1","brace-expansion":"5.0.6"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.2","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.5.0","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.0.1","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.6_1782393141194_0.8179862494182024","host":"s3://npm-registry-packages-npm-production"}},"1.5.7":{"name":"clawdcursor","version":"1.5.7","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.7","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"2501e8073e63cf269d52463cdaacc3ded96ea6d1","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.7.tgz","fileCount":354,"integrity":"sha512-gef6V3By7GVRiqdv0AUzxQR65Zfjoox/KGpoFf0HaTGBsLZcRzI+SEjJs8lOEA8kJBvYYAFKleNJt4Hsbis5gA==","signatures":[{"sig":"MEUCIQCmcN/T0NTbIygjIbjKDWfVi8BDKZJ3t7Y9izs133RVKgIgW3IjyCGKKNUjYYLod+sOqyOWTCyjFe0UPXN9XdOFPaI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3422264},"engines":{"node":">=20.0.0"},"gitHead":"f685fda0984107f5477f169ae8d373e46f753d80","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts && git add SKILL.md skills/clawdcursor/SKILL.md .claude-plugin/marketplace.json docs/index.html docs/install.sh docs/install.ps1","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"overrides":{"ip-address":"10.1.1","brace-expansion":"5.0.6"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.9.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.2","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.5.0","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.0.1","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.7_1782485560168_0.9937628573954624","host":"s3://npm-registry-packages-npm-production"}},"1.5.10":{"name":"clawdcursor","version":"1.5.10","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.10","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"9de715b28fe2c94e54edfbfdccf8a1c35cc1758c","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.10.tgz","fileCount":354,"integrity":"sha512-StA2RZhWz2S+gRXIYvspyKZ9TOrbFVZDHFdVf5i2b2dsey9uRgX9xptoSINBUYI4etWmeSPAfWl98CU5lSSSyw==","signatures":[{"sig":"MEQCIA65SqCKER8P9J5+Qxu2JSMUDj8/RY5ErwaIwiE2zFvfAiBUWDv9LA2tPSo+ZRkPvYc0HXMrqotwgIusCQpstfeIBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCauR8zbsxqMvrcoZAouk1PRWeWM+6CO3TRXwNOAqzpmAIgaVuHxIDH3XB65/vM2Sy6vKdld/KUU7n/S73YkY3YsbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3462269},"engines":{"node":">=20.0.0"},"gitHead":"1e6b27d41267c742f85fb5583391071007dc54ca","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"amrdab","email":"amraldabbas19@gmail.com"},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.8.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.2","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.6.0","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.0.1","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.10_1790563347560_0.3682315978506856","host":"s3://npm-registry-packages-npm-production"}},"1.5.11":{"name":"clawdcursor","version":"1.5.11","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.11","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"954331287ccf53663198923193ccb5dfb03584e8","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.11.tgz","fileCount":354,"integrity":"sha512-rNq+OVOe5vKj7UD+29NM8qtYwyXFChKWy0C6zmXpQ4ryGrlu0YEFESiKz78K7iJFWAvCD4Y0YKNlvrwItPT6aQ==","signatures":[{"sig":"MEYCIQCs7BBdsQOW5XyY/VodRof8UlEg1RBoZkRfZiOys4XxRAIhAISZCFHUeMA1DMdlTV2VPiCXvLpekwp7uiwlDsWsJs8y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCxk/Iu9tG3qA9lJe6IQernj7GsaJa2cjQuroW/KKYW5gIhANg+bRAiBirNI7wyaRHQ2Z8bgJwBzgi8FuZhRoFh4TUA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3493832},"engines":{"node":">=20.0.0"},"gitHead":"916ec8427fe6e65b80d30b71561449d36bdc8e8d","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.2","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.6.0","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.11_1791080845090_0.46215731723157316","host":"s3://npm-registry-packages-npm-production"}},"1.5.12":{"name":"clawdcursor","version":"1.5.12","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.12","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"9f7e1aa73e9b2be2e6eca11ad7e0209e789e2d63","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.12.tgz","fileCount":152,"integrity":"sha512-GXSMqjm9RAMJJyvukpvcqwJhcz7ypGozMFZeI2+kowAY3qmw5kX2VIG3z5wSKNN4tQpTYgrcYCcM0dtorpUb8g==","signatures":[{"sig":"MEUCIEuY6AgkqXdhmE0pAnWNkDakJXYOspaRprErruzAqFB1AiEAy+yos9Anv2EebjY7FMlJvjqzmfNXWaGUD/gBn5bZVwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDMznqF2ckatwfB9t366lORaly84OSpoowdC3zCEcGpBgIgMVU3Hd/BquKMXUSAnkWgoeqJ8jy8cQlG4vDqqf2851g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2293226},"engines":{"node":">=20.0.0"},"gitHead":"836de872810abf9a79e176bd506af2c298891a3e","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.6.0","vitest":"^4.1.8","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.12_1791335737405_0.0796376200014215","host":"s3://npm-registry-packages-npm-production"}},"1.5.13":{"name":"clawdcursor","version":"1.5.13","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.13","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"967ca0d70e4403f1678a40d70a23afb1b32b4947","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.13.tgz","fileCount":153,"integrity":"sha512-RMwU5szmQ2tzAW0u9Y6wzSHXnrn6z4Ri04LvC20abiLwPPSiEvnrgCfFH/M+V4DQNO8iFOFFdDtpPc0hA46L/Q==","signatures":[{"sig":"MEQCICzEtegkxgRG6MAHc+6gbnwcfILaPrJQo8Ey1p/OX/jCAiBtegcn+Z6yD0SoO5pxNUtPFPZfZH3nCGEeVwW9Fa37tg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDi4y3EYYBFTjunPYMHKJ/Z3V0nvcC7yqqQjA38DxDO8wIhAOPjuO3Xxruv9hMVKWktVJiICblWJKFQ/PiGYKdekF4o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6712371},"engines":{"node":">=20.0.0"},"gitHead":"5bae142c5ca30a1044e71b6ebdab9d4520f536f8","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.6.0","vitest":"^4.1.8","esbuild":"0.28.1","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.13_1791364400753_0.8015892440842505","host":"s3://npm-registry-packages-npm-production"}},"1.5.14":{"name":"clawdcursor","version":"1.5.14","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.14","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"21496594490cc36cee1f03d7fd7a48eef228d350","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.14.tgz","fileCount":155,"integrity":"sha512-yYsLPCCraqcBDaP3EdAhZBdY7QhQLdqKYQdfD4jTPrfjq9vJkHQX2Kes0lDiksSQV7GSyVIx3FE9uvOCMROTwA==","signatures":[{"sig":"MEUCIQDTQnkZY34RrtNoFPTZ2GKul/57keDrVrP+aQXtns3u/AIgZHXKhgfTAohrIiwZhZtkMWvTQz6mURDVoaWtl8ATbOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAXfjTc0gLpgwiJP83n31sgzDP3df5sutzTphmyuBOuAAiEAoUUIBXypApdWq4JACdA9QFGHNh97AYXZlR8FLGxW0qA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6727753},"engines":{"node":">=20.0.0"},"gitHead":"c39a2b6a249b8a58656508688cd9695ddc210840","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^10.6.0","vitest":"^4.1.8","esbuild":"0.28.1","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.9","@typescript-eslint/parser":"^8.62.0","@typescript-eslint/eslint-plugin":"^8.62.0"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.14_1791371821054_0.10976501201443156","host":"s3://npm-registry-packages-npm-production"}},"1.5.15":{"name":"clawdcursor","version":"1.5.15","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.15","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"f9dcc88307b3e42cb8079cbac8c950eb4e7360ca","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.15.tgz","fileCount":158,"integrity":"sha512-RIqM9o4dVd1As+0aqRluyoa+oTrEDFo2MpsYmDmKN9QAO7mdnN0qYpK4yS9klFTt7OiTR8ma201wvLHkTXFS4Q==","signatures":[{"sig":"MEYCIQDwFhwxQIn6LD4j0DQRiweyYfhc9Md0WFu5aUgIYjMWIAIhAK6CNi1zvl/lkP5QWrtLxVQ8BlqnPEIIhkQlP3SFTyzD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF1TRY0ItWRAHgI6pZGO3CaxXoCe5qe779fw+48lTn4MAiEArxABOD5hg4ZlGfmKnJkG7kPZK/B3J2kWpi569gaXgrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6818549},"engines":{"node":">=20.0.0"},"gitHead":"21947bbdba370899ee49e69f802cb2f52a33124a","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^4.1.11","esbuild":"0.28.1","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.15_1791461526873_0.9911417599377039","host":"s3://npm-registry-packages-npm-production"}},"1.5.16":{"name":"clawdcursor","version":"1.5.16","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.16","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"86dd857d5b0701cf1320b3b7b615496db4d4b552","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.16.tgz","fileCount":172,"integrity":"sha512-8ZI8wqmPDx/Plp5GvtOiIPcTek9gkOcrerkH3IPwiHUMqon4Cd4nKIECMarlQdIionJcBsDigN+U7m/dD3HTWA==","signatures":[{"sig":"MEQCIFUPv5qXjtnvovVoTEkagA9qcz9ZVybkVdZJCVh8aDDKAiBcqOEZ+KbPtC9oFa7JpAGf0cu/SId4ZM+V2tETRAjRsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCs+maHGhzXGZqI6XwM6SegXQeVRcg/vOCVEO98sZTw1gIgYNgn2B6KfX+LZH6rOEe5CU2w5laYN7apNRLeVKbck5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7293942},"engines":{"node":">=20.0.0"},"gitHead":"d1f34c3e328e240924378430f498cb79cedfa1f9","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^4.1.11","esbuild":"0.28.1","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.16_1792148964891_0.32979635762998405","host":"s3://npm-registry-packages-npm-production"}},"1.5.17":{"name":"clawdcursor","version":"1.5.17","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.17","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"c12567e094d99ff999d23008da5f4c0844af524f","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.17.tgz","fileCount":172,"integrity":"sha512-O5B0Ye0/6bihzpGF1psG/tDlATed1+hdoVdBtSI3R31aDPB6ItTTfjliGcP6LwjHY6nztaqmLe2Aq3Q/74Yo6g==","signatures":[{"sig":"MEQCIAgFQ/UqQvuWn5nd4akkMrvxC5VNTaYVhysZTyaOGmN3AiAhGwzcNe3sjJfAe/OSqqJVOe57XNYDVfPb78rV4fEk5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFxECAggRnFzFWjjPeq7rUKSoTuGNL7OprqcNQZqWsdpAiAt2kRhIhnSW7MS1reJArBJ+wSI0d3vQwLBdmvslG7osg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7314417},"engines":{"node":">=20.0.0"},"gitHead":"7352e88ac5423a41de449241809de6a600945f32","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^4.1.11","esbuild":"0.28.1","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.17_1792329658915_0.8659495352720634","host":"s3://npm-registry-packages-npm-production"}},"1.5.18":{"name":"clawdcursor","version":"1.5.18","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.18","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"db9aeaafb22facfb49f13242c246a0fe31a5565b","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.18.tgz","fileCount":172,"integrity":"sha512-MROeuuMtZn+MJ8LDGRsp8Ll9HoJzmza4g5UEGd0W/LvO8lux0xhtbsZ1iipNBXrqJ1KzTleWjWCt+MzhVLe5jQ==","signatures":[{"sig":"MEUCIG/dyQOqWqUmtwcMDBicWHrwmqfAg/pIFJoaLVtoWO4EAiEA2CT+aWkbnaxiwgsQGhRRG9b9hL7L2hZ8XHYDdSftl8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEXgf124VeryVLvBhCsS7RYxHr1MnAWOWtO7adW3+eD6AiEA9aNZcA+jfYZWKBsrny5UySEVBnDENin9XHPOLDClBGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7347205},"engines":{"node":">=20.0.0"},"gitHead":"688335c3d042d8f124edc25b36fa53c5c1341aa5","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^4.1.11","esbuild":"0.28.1","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.18_1792396381283_0.215177055471933","host":"s3://npm-registry-packages-npm-production"}},"1.5.19":{"name":"clawdcursor","version":"1.5.19","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.19","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"bd111888374264f2e75a1ad2b6c678ffaea548e7","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.19.tgz","fileCount":173,"integrity":"sha512-yDXC99GDYnPdIDKcKtTfGeIJCSsd5yZ3cCDpNnHBdweiMXOQTq9J777TqRwgHrMIcB2jk1wlKVaxOPIJDACGug==","signatures":[{"sig":"MEQCICfu3lucQWSoiF2q93UNBS+bEtEjQICSP96e6elX4Qx2AiBm0pMnIW1YkYtKab2s6vNZWMVSJtzwr8s9as8MZTZU5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIG8VUg5WZjzBeAPlyDrEOuzOeqRFYzzanU1rD09eQGgjAiEA7iDneXxv57nlgg6aDGdMgT1iU8vIRcmOXTOU98zxj8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7352080},"engines":{"node":">=20.0.0"},"gitHead":"a5661865912884eb5c176df62ed69ea7476e703c","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^4.1.11","esbuild":"0.28.1","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.19_1792400644069_0.752285440726405","host":"s3://npm-registry-packages-npm-production"}},"1.5.20":{"name":"clawdcursor","version":"1.5.20","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.20","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"7ab6e47f717d44c1df3678166243d81f4dac748d","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.20.tgz","fileCount":174,"integrity":"sha512-+Uhg69TnN6Z/SofkMRftb88eweckEpLHoo5cnAzG0LkiCXuTJryQ0giuHNCycQzUOPsXDkqRLkrfMDuJLeIWUg==","signatures":[{"sig":"MEQCIGt1A1ZFaKrxHjQe/e3eHDdpa4GW4et9+fHQ3Xp/wo09AiBUooiKYUjDtflPl5twR/ggi3xQYQoB5Kxc6Fd9x45fBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDuCRomcP/RJBKlkhjOocqGIAl4SiJy/GBVil0Thipu4AiB2o2Lct7sdUjgjPZw6LAsNp7tKVV7Im+VbUyngtp6hhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7414180},"engines":{"node":">=20.0.0"},"gitHead":"dae7c356fa31d61a0a383a00c3f148f24018c964","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.61.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^4.1.11","esbuild":"0.28.1","@types/ws":"^8.5.0","supertest":"^7.2.2","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@vitest/coverage-v8":"^4.1.11","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.20_1792496479985_0.5985549419023855","host":"s3://npm-registry-packages-npm-production"}},"1.5.21":{"name":"clawdcursor","version":"1.5.21","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.21","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"f461592b405819711f03fe40e22ea6538d17b8d9","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.21.tgz","fileCount":174,"integrity":"sha512-o9LiKxgE5+SmZFApH6KWcw3lL9aUn/8r2dslUEgVk5PnZYXMd+DWSyQKAvoObmF/hmQPdf8yD32n1gnB9KXhGA==","signatures":[{"sig":"MEYCIQDMNvJTob3A7y09R8MfGgJwCMlbUoSB4Yoj8Wtl8uwpzQIhANjC89IroDOREKJdQPm5hGTjJE0jgjQ1TqBf1TYXxXhp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAlNtQGzzQFVrrj0kCoaKNVPObK+lh8PxnAnkEzfYwHeAiEA0erjo0vx39Z/QxB4vMrL7iMLvT+f7HB0WuBUES5Y/cg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7418020},"engines":{"node":">=20.0.0"},"gitHead":"d7fac98a6382ce8191c7ad314a6bafea029be5ee","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.22.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.1","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.5","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.21_1792536276010_0.45961294921274076","host":"s3://npm-registry-packages-npm-production"}},"1.5.22":{"name":"clawdcursor","version":"1.5.22","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.22","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"253ab3a006500bce51a4605c887b9203d4b01c38","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.22.tgz","fileCount":175,"integrity":"sha512-6tD4wt+P9nmc8Fo8n/k0Zt1R4gpqITZKcK3DT7dzVk7gaJoZDxYx+iQYRK6wYHSwWU+UePdJy8O0HKLd0gQU3g==","signatures":[{"sig":"MEQCIBg0iEm1OFsK9zJp4u2KU8D8fbEMIyZWExZ9a3H7f4e1AiAQbKDadjHdsJ4EM1LeKx7bKko/Tut/AzyR9Sf/7lXeSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICVGUobnYoWt0Nh0eaWzlBPd2QZubsVqG0/wvbschiK/AiEA29HeqqEiM18kdQxPNQuZ1OyHEhEvcmQaXtpBGm3uEgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7438939},"engines":{"node":">=20.0.0"},"gitHead":"f64846bb442b9bfa7ae2497a6694aa3427b47b1e","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.1","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.22.0","dependencies":{"ws":"^8.22.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.1","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.5","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.22_1792541804564_0.17384250829112413","host":"s3://npm-registry-packages-npm-production"}},"1.5.23":{"name":"clawdcursor","version":"1.5.23","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.23","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"949196cbace3f39d7b1e1075e59a6259b18b9f8c","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.23.tgz","fileCount":175,"integrity":"sha512-PKwFxnbF60/VdGnjpo1Lf69gFAYuUnCS2LY4qy9eE/yAkgMQNV//enWaMWYRElgpLrQkxDzuR0dsb0qPYU+E5g==","signatures":[{"sig":"MEQCIBue02WOQcBCjmNeuXxf8zhBP4D4JUPo/s0bqrepMuRLAiARcxVN7SBa+OMSmlKOQHWLUPuJrK+ZUK58LZzZ/qEk9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCTLWf/5WM6Sq90CBU/ZHfT/4hMhVM+MUmf4Vo1qEKz9gIhAMAYR3cU1U5ZDSsVVtk9ZU+mAXD7Dw9iAGM5VriYxlFn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7440159},"engines":{"node":">=20.0.0"},"gitHead":"ee2dddbdee171d9bef1d11394b7ac544f7c14682","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.22.0","zod":"^4.4.3","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.1","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.5","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.23_1792570686873_0.9447912209322256","host":"s3://npm-registry-packages-npm-production"}},"1.5.24":{"name":"clawdcursor","version":"1.5.24","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.24","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"dc201be9ec24462dd6c07146d98bdd63bf0a821d","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.24.tgz","fileCount":181,"integrity":"sha512-Rj6LGbTs31eZWKzF8HUkcJI4uh+TH86mcVoPvx7qN0ke9y5iS7P1WDDzAWVbQvXeyLXSi7MLyH9QcXvgSqSrpg==","signatures":[{"sig":"MEUCIQDuaToMXrBoyKfXfz2PZJK19Tv9AAQ/qIMcua1aK/AbNAIge7f55oZoMThekFHPiddIFHz3QSx7U2RwIlOng/V7Y4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCwX/2ou8XpGb/Wyj3/KNADW5XibFkS+4+I67AlmI4oCwIgcwHyI+r+LQ6AVVrkAQLWTWYhduA2dsX38G7euUwY+H4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7807093},"engines":{"node":">=20.0.0"},"gitHead":"764ac703d9027d4cfa4550a4095a5e6d0628dd37","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.0","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.22.0","zod":"^4.6.7","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.1","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.5","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.24_1793070655394_0.6046920806013492","host":"s3://npm-registry-packages-npm-production"}},"1.5.25":{"name":"clawdcursor","version":"1.5.25","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.25","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"cc2b44ad0c77104b2423bd3c47c3a9bdcfaa70e5","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.25.tgz","fileCount":182,"integrity":"sha512-4K6Y4MJcJl+EWpEVMohcNqKTnaQtz4QoRsuViwNGCmvCacMbeApW689JxcTAguP+v7nmZdXTeriFcW2nfI83cA==","signatures":[{"sig":"MEUCIAfi/MNH+XeoL2se9QcAfwdDGSa6K/FTu1VCW6tAAoMkAiEA+ilANfIhHcjpMWxqII84TUDXiwQpr+4C7pMfk0Bn/QU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQChFI/0cZXru5zoDbR33xDZgoFjyPuh3cYOqt1TIQbCLgIgC1avULTlPTrAC3U2+upES/D+NDn02UmO5Y9txTUjvS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7915979},"engines":{"node":">=20.0.0"},"gitHead":"5583115dcbf60b01cc5aa217e250be2df1246adb","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.1","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.22.1","dependencies":{"ws":"^8.22.0","zod":"^4.6.7","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.1","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.5","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.25_1793676104435_0.293599942112312","host":"s3://npm-registry-packages-npm-production"}},"1.5.26":{"name":"clawdcursor","version":"1.5.26","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.26","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"0ca5a3abf6fb6b7ad1e665e34ae1f16eea39062a","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.26.tgz","fileCount":186,"integrity":"sha512-x/+QIXQ+3LHfr2dqRof/UrFziNkI81u1LW8DyNThCjbFZO2k/BdeCXV6IiNmA98WWjzg7lOu2sMtEqQo9Segqw==","signatures":[{"sig":"MEUCIQCa3AWh1bBTDxxuknq4yyQB7NIh1el+0ThFe68PlS9aIgIgGKhQwFchrIqS1gpSr3sH0XXPIPHFnz7ugZKKfT13ghY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICxxLoEMlEq5J53evCDE8B9eK5/gwU5wHGt8bklRuY2HAiBG33aw93zcONm+Sjr9VeNI0f/1XK08Mj1++/msbUKcBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8050149},"engines":{"node":">=20.0.0"},"gitHead":"edd0752b4b81fd8453265a5987cdd103d48a74b6","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.1","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.22.2","dependencies":{"ws":"^8.22.0","zod":"^4.6.7","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.1","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.5","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.26_1793878017294_0.03189765916388776","host":"s3://npm-registry-packages-npm-production"}},"1.5.27":{"name":"clawdcursor","version":"1.5.27","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.5.27","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"e87bade65e631a53bb2227f1bbc628b2e6f229d5","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.5.27.tgz","fileCount":188,"integrity":"sha512-WdI7Y0jcT09PbNSGqcgjXH5a6nuaTzLBu8ehMBKcXzGCMHmPbcU3PJ2Qv3ZbAG68B+TIp1YI7ysFLVBzrsVAKA==","signatures":[{"sig":"MEUCIQDiOFowwlQGhdgp7VslGYtATIxZMZAJ21BO3nmHVbCOnAIgenCP4Js1T20pOZoaoIDTs0ZWRsSVB57XXbFtNPlrdbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDucq5qcVYrV2zp7CuPSa24Z4QhBubHXOQeEzqqBm6a9gIhAMxPCGJL6w1IFQYZCyuAjnVLKPlf1/1V1sHE4DWHVF5C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.5.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8131467},"engines":{"node":">=20.0.0"},"gitHead":"03ab1effb582ecca07f2b860b3e8ebb8e9fd4c35","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.1","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.22.2","dependencies":{"ws":"^8.22.0","zod":"^4.6.7","sharp":"^0.35.5","croner":"^10.0.1","dotenv":"^17.4.2","express":"^5.2.1","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.1","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.5","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.5.27_1794287198783_0.9764743732418739","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"clawdcursor","version":"1.6.0","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@1.6.0","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"d9588e41fb336ddf55d05ce057b2ee414d2e7cd6","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-1.6.0.tgz","fileCount":182,"integrity":"sha512-3pe83bTxBiRpPq1Us85g2+l4KzWUtLd2JdMz7TZg97T07/cqgekDbXI7EW4PEpyICwtVupoqs87bwRJKIi/1zQ==","signatures":[{"sig":"MEQCIAPxcAeW4IF96zN5ifgK7I6oRyyHGwtgxmS1FAUOEoIoAiBTFVfLe2jMAz3AMUwK65o/mlyFSv8BPGj4B4x7HUEtlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC2pesenj5vYFI2kT30PZPGU4dP6mLft5ZRe+Z3P2OLpgIhAM+49rK2gWWAsp3Hla9V1C1YgzCmUMQTR48VeWBTaL45","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7655176},"engines":{"node":">=20.0.0"},"gitHead":"f99e93f13d910ca580c91444bc5bbc3a4336cd21","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.1","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.22.2","dependencies":{"zod":"^4.6.7","sharp":"^0.35.5","dotenv":"^18.0.9","express":"^5.3.0","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.2","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.6","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_1.6.0_1794382135391_0.7165851019371765","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Breaking release published as a minor by mistake. Use clawdcursor@2.0.0 (same code), or stay on 1.5.27 for 1.x."},"2.0.0":{"name":"clawdcursor","version":"2.0.0","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"author":{"name":"Amr Dabbas"},"license":"MIT","_id":"clawdcursor@2.0.0","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"homepage":"https://clawdcursor.com","bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"bin":{"clawdcursor":"dist/surface/cli.js"},"dist":{"shasum":"e59cac3641ae2fd4bcb56cace623227c5b42eb0a","tarball":"https://registry.npmjs.org/clawdcursor/-/clawdcursor-2.0.0.tgz","fileCount":182,"integrity":"sha512-oYftpAowyyr2wfSkNe0Q0mquz7relndhtxdyDivVmDqjuKfhWl7V+apERNSl3r48J0X4neRomezkf274rlKgjg==","signatures":[{"sig":"MEQCIC9FtQjre5vHC2pFGepAsBxo70VNCVbHLEAmRXjuGxehAiBjFqJm2eWDDZJzIaqpFal42mtCvZJpQzKV5gPi0HKVQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDJR5kt7hJfwAqv9mcuj1Hgvxai9lFuepHr+sD+9M4mmQIgaVM+0uUQSYxiNxO3q/b9GN0RFd8hDM9S8JB/kSXlVzY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/clawdcursor@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7656190},"engines":{"node":">=20.0.0"},"gitHead":"5c61ef2d0916a347c87f03bba50995929c1b4ce7","mcpName":"io.github.AmrDab/clawdcursor","scripts":{"dev":"tsx watch src/surface/cli.ts","lint":"eslint src/","stop":"node dist/surface/cli.js stop","test":"vitest","build":"tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","setup":"node scripts/verify-install.js && npm run build && node -e \"if(process.platform==='darwin'){const{execSync}=require('child_process');try{execSync('chmod +x native/build.sh && native/build.sh',{stdio:'inherit'})}catch(e){console.error('\\n❌ Native build failed. Run manually: cd native && ./build.sh');process.exit(1)}}\" && npm link --force","start":"node dist/surface/cli.js agent","doctor":"node dist/surface/cli.js doctor","prepare":"npm run clean && tsc && node dist/postbuild.js && node scripts/bundle-cli.mjs","test:ci":"vitest run","version":"tsx scripts/sync-version.ts","prebuild":"npm run clean","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","perf:smoke":"tsx scripts/perf-smoke.ts","postinstall":"node scripts/verify-install.js || node -e \"process.exit(0)\" && node scripts/postinstall-native.js || node -e \"process.exit(0)\"","sync-version":"tsx scripts/sync-version.ts","test:coverage":"vitest run --coverage","typecheck:tests":"tsc --noEmit -p tsconfig.tests.json","test:mcp-schema-snapshot":"tsx scripts/build-mcp-schema.ts","test:mcp-schema-snapshot:update":"tsx scripts/build-mcp-schema.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"f7af03b8-8d58-41ce-b052-97f0e485a673"}},"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"_npmVersion":"11.19.1","description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","directories":{},"_nodeVersion":"24.22.2","dependencies":{"zod":"^4.6.7","sharp":"^0.35.5","dotenv":"^18.0.9","express":"^5.3.0","commander":"^15.0.0","picocolors":"^1.1.1","playwright":"^1.64.1","@nut-tree-fork/nut-js":"^4.2.0","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^10.12.0","vitest":"^5.0.5","esbuild":"0.28.2","@types/ws":"^8.18.2","supertest":"^7.3.1","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.6","@types/express":"^5.0.6","@types/supertest":"^7.2.1","@vitest/coverage-v8":"^5.0.5","@typescript-eslint/parser":"^8.71.1","@typescript-eslint/eslint-plugin":"^8.71.1"},"_npmOperationalInternal":{"tmp":"tmp/clawdcursor_2.0.0_1794385789803_0.7920673601928895","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-05-23T23:50:46.169Z","modified":"2026-11-11T10:51:24.455Z","0.9.6":"2026-05-23T23:50:46.636Z","0.9.7":"2026-05-23T23:59:03.961Z","0.9.8":"2026-05-25T00:34:15.734Z","0.9.9":"2026-05-25T06:00:07.993Z","1.0.1":"2026-06-06T23:51:14.503Z","1.0.2":"2026-06-07T03:34:06.583Z","1.0.3":"2026-06-07T03:48:32.082Z","1.0.4":"2026-06-07T04:56:01.134Z","1.5.0":"2026-06-11T11:59:56.243Z","1.5.1":"2026-06-12T09:58:19.617Z","1.5.2":"2026-06-13T13:11:30.625Z","1.5.3":"2026-06-15T09:59:45.662Z","1.5.4":"2026-06-15T13:17:25.961Z","1.5.5":"2026-06-16T11:41:31.036Z","1.5.6":"2026-06-25T13:12:21.340Z","1.5.7":"2026-06-26T14:52:40.339Z","1.5.10":"2026-09-28T02:42:27.665Z","1.5.11":"2026-10-04T02:27:25.231Z","1.5.12":"2026-10-07T01:15:37.528Z","1.5.13":"2026-10-07T09:13:20.927Z","1.5.14":"2026-10-07T11:17:01.177Z","1.5.15":"2026-10-08T12:12:06.994Z","1.5.16":"2026-10-16T11:09:25.078Z","1.5.17":"2026-10-18T13:20:59.045Z","1.5.18":"2026-10-19T07:53:01.442Z","1.5.19":"2026-10-19T09:04:04.211Z","1.5.20":"2026-10-20T11:41:20.110Z","1.5.21":"2026-10-20T22:44:36.148Z","1.5.22":"2026-10-21T00:16:44.713Z","1.5.23":"2026-10-21T08:18:06.975Z","1.5.24":"2026-10-27T03:10:55.511Z","1.5.25":"2026-11-03T03:21:44.615Z","1.5.26":"2026-11-05T11:26:57.409Z","1.5.27":"2026-11-10T05:06:38.902Z","1.6.0":"2026-11-11T07:28:55.528Z","2.0.0":"2026-11-11T08:29:49.913Z"},"bugs":{"url":"https://github.com/AmrDab/clawdcursor/issues"},"author":{"name":"Amr Dabbas"},"license":"MIT","homepage":"https://clawdcursor.com","keywords":["agent","ai-agent","mcp","mcp-server","model-context-protocol","desktop-automation","computer-use","gui-automation","accessibility","claude","gpt","openai","anthropic","skill","cli"],"repository":{"url":"git+https://github.com/AmrDab/clawdcursor.git","type":"git"},"description":"Local MCP server that gives any AI agent safe cross-OS desktop control — the fallback execution layer for when APIs, CLIs, and direct integrations aren't available. Works with any tool-calling model (Claude, GPT, Gemini, Llama) on Windows, macOS, and Linu","maintainers":[{"name":"amrdab","email":"amraldabbas19@gmail.com"}],"readme":"<h1 align=\"center\">Clawd Cursor</h1>\n\n<p align=\"center\">\n  <strong>Desktop control for any AI agent.</strong> Compiles the screen into a UI map and acts on elements by stable id (screenshot/vision only as a last resort),<br>\n  <strong>verifies its own actions</strong>, and stops the moment you say so. Local &middot; cross-OS &middot; any model.\n</p>\n\n<p align=\"center\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/github/license/AmrDab/clawdcursor?color=a855f7\" alt=\"MIT license\"></a>\n  <a href=\"https://github.com/AmrDab/clawdcursor/releases/latest\"><img src=\"https://img.shields.io/github/v/release/AmrDab/clawdcursor?color=22c55e&label=release\" alt=\"Latest release\"></a>\n  <a href=\"https://www.npmjs.com/package/clawdcursor\"><img src=\"https://img.shields.io/npm/v/clawdcursor?color=cb3837&logo=npm\" alt=\"npm\"></a>\n  <img src=\"https://img.shields.io/badge/node-%E2%89%A520-339933?logo=nodedotjs&logoColor=white\" alt=\"Node 20+\">\n  <img src=\"https://img.shields.io/badge/platform-win%20%7C%20mac%20%7C%20linux-0ea5e9\" alt=\"Cross-platform\">\n  <a href=\"https://glama.ai/mcp/servers/AmrDab/clawdcursor\"><img src=\"https://glama.ai/mcp/servers/AmrDab/clawdcursor/badges/score.svg\" alt=\"clawdcursor MCP server on Glama\" height=\"20\"></a>\n  <a href=\"https://github.com/AmrDab/clawdcursor/actions/workflows/cross-platform.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/AmrDab/clawdcursor/cross-platform.yml?branch=main&label=tests\" alt=\"Tests\"></a>\n  <a href=\"https://discord.gg/hW29nrEZ8G\"><img src=\"https://img.shields.io/badge/Discord-join-5865F2?logo=discord&logoColor=white\" alt=\"Discord\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#install\">Quickstart</a> &middot;\n  <a href=\"#whats-new\">What's new</a> &middot;\n  <a href=\"#why-its-different\">Why it's different</a> &middot;\n  <a href=\"#the-engine\">The engine</a> &middot;\n  <a href=\"#how-it-works\">How it works</a> &middot;\n  <a href=\"#the-toolbox\">Tools</a> &middot;\n  <a href=\"#platform-support\">Platforms</a> &middot;\n  <a href=\"CHANGELOG.md\">Changelog</a>\n</p>\n\n<!-- ───────────────────────────────────────────────────────────────────────────\n  DEMO: the single highest-leverage thing on this page for a *visual* tool.\n  Record a 15–25s screen capture of clawdcursor driving a real app end-to-end\n  (open app → find a field by name → type → verify), export to docs/demo.gif,\n  and uncomment the block below (it will sit right under the hero).\n\n  <p align=\"center\">\n    <img src=\"docs/demo.gif\" width=\"760\" alt=\"clawdcursor driving a desktop app\">\n    <br><em>Opening an app, finding a field by name, typing, and verifying the result — accessibility-first, locally.</em>\n  </p>\n─────────────────────────────────────────────────────────────────────────── -->\n\n---\n\n## What's new\n\n**2.0.0** &mdash; **A tool, driven by your agent.** (First published as 1.6.0; renumbered because it is a breaking change.) ([full changelog](CHANGELOG.md))\n- **Breaking:** the built-in agent loop and all model settings are gone. Claude, Codex, Cursor, a local Llama or any MCP client drives the six tools (`accessibility`, `system`, `window`, `browser`, `computer`, `batch`); the `task` tool and the `--provider/--model/--api-key` flags are removed.\n- **Breaking:** the policy gate is gone, so `open_file`, closing a window, clipboard writes and clicking \"Send\" by name work. What still protects you: Stop, the pause card, no stray input into AI assistant windows, a short per-OS list of session-ending keys, and your MCP host's own approval prompts. If your host auto-approves tool calls, nothing asks before an irreversible action: see [SECURITY.md](SECURITY.md) (an opt-in confirm mode is coming in 2.1).\n- A thin outline around the window the agent is working in replaces the full-screen glow; the pill sits on that window's monitor.\n- Results you can trust: a value is \"set\" only when the field shows it; `copy_all_text` never presses keys outside a browser; `open_app` never names another app's window; actions by name never press a hidden element.\n- Keys follow the OS: the agent is told its modifier (`cmd` or `ctrl`) up front, and shortcuts are offered only for this OS.\n- Second monitors above or left of the main one, Retina zoom areas, and slow-starting apps now work as expected.\n\n**1.5.27** &mdash; **Results you can trust, and logs that say what happened.**\n- Ticks, dropdowns and expanders read and change the same way on Windows, macOS and Linux; `toggle` reports the state it actually reached, and actions by name aim at the control, not its label.\n- A stop always answers \"stopped by the user\" first, and also blocks hover, clipboard writes, page script and tab switches.\n- Typing goes only to the window the agent was working in, dialogs like Save As included.\n- Linux reads deep web pages, and a search that runs out of time or elements says so instead of \"not found\".\n- Logs in `~/.clawdcursor/logs/` show every call's timing and outcome, slow internal steps, why the server exited, and who stopped it, with no typed text, error text or window titles.\n\n**1.5.26** &mdash; **The agent asks you on screen, and the pill says what it is doing.**\n- Security (Windows, high): text the agent typed or copied could run as PowerShell code ([GHSA-9ppf-38v8-h97v](https://github.com/AmrDab/clawdcursor/security/advisories/GHSA-9ppf-38v8-h97v)). Fixed; upgrade.\n- The pause prompt is a card: the agent can offer 2-6 choices to click, or a text box, and gets your exact answer back. A choice is never a safety approval.\n- A redesigned pill: what the agent is doing right now (\"Typing in Edge\"), how long it has been running, and a Stop button.\n- A field below the fold is scrolled into view instead of refused (verified on Windows; the macOS and Linux calls are in but not yet run on a real desktop).\n- macOS: when a password field holds secure input, `window focus` names the app holding it instead of failing vaguely.\n\n**1.5.25** &mdash; **A stop really stops, and keys only go to the window the agent was working in.**\n- Double-click the pill and every clawdcursor process stops: a running wait ends at once, the rest of a batch never runs, and it stays stopped (even across restarts) until you click Resume.\n- Every key, paste and click first checks that the agent's window is still in front. If you switched apps, nothing is sent and the agent is told so.\n- Safety gate: key combos are blocked however their modifiers are spelled, `shortcuts_execute` and compound actions are gated like the tools they run, and every element an invoke may act on is checked.\n- `--no-vision` now really keeps screenshots from every model; the daemon is loopback-only (use an SSH tunnel for remote), and `server.port` in config works.\n- macOS: the Screen Recording check works without the helper built, and `doctor` asks the same question screenshots do.\n\n**1.5.24** &mdash; **The AI never touches your pill, and failures stop looking like results.**\n- While a pause waits for you, nothing reads, clicks or types. The pill and pause prompt are never a target, even from another clawdcursor process.\n- On macOS, a screenshot without Screen Recording permission is an error, not a wallpaper image, and open popovers are readable.\n- The browser clawdcursor drives comes to the front when it navigates.\n- A failed OCR read reports its error instead of \"No text detected\", and OCR `confidence` is only shown when the engine really has one.\n\n**1.5.23** &mdash; **Windows: finding an element by name no longer matches stray letters.** A lone \"C\" on another page could match \"User code 0\", and \"Don't Save\" could match **Save**. A partial match now has to be a real part of the name you asked for.\n\n**1.5.22** &mdash; **Your turn is as short as possible.** When an agent needs you (a sign-in, a 2FA code), it asks for that one step and does the rest itself. With `done_when` (what shows on screen once you're done), the prompt turns from blue back to amber the moment you finish, with no Resume click.\n\n**1.5.21**\n- **`set_value` never guesses a field.** With no field name or role it used to type into the window's largest text box; it now asks you to name the field.\n- **macOS: no screen-recording permission no longer breaks everything.** Only screenshots and OCR fail, and they say how to fix it; windows, keys and accessibility keep working.\n- **Cleaner page text on Windows** (no placeholder characters), and a security update to a dependency.\n\n**1.5.20**\n- **The on-screen pill no longer blocks the agent's own clicks.** It sits where browsers keep their tabs and address bar; it now steps aside for a moment before every click, drag or scroll, then comes back. Windows, macOS and Linux.\n- **Reading a page no longer highlights it on Linux and macOS either.** `copy_all_text` reads the document through accessibility, as on Windows: exact text, nothing selected, your clipboard untouched.\n- **Your clipboard is put back after typing** (`smart_type` too), and only once the paste has landed, so a slow app can't paste what you had copied.\n- **macOS:** `window focus` focuses the process you asked for, a locked screen says so, sidebar clicks are verified, and a bare modifier key (`shift`) works.\n\n**1.5.19** &mdash; **Typing never pastes your own clipboard.** clawdcursor types by pasting; on Windows a clipboard write could fail silently and the paste then sent whatever *you* had copied. Every paste now checks the clipboard first and types key by key when it doesn't hold the text.\n\n**1.5.18**\n- **\"Something else\" on the pause prompt.** When the agent pauses for you, the prompt has a third button between Resume and End task: type an answer instead of doing the step &mdash; \"use the test account instead\", a code, a change of plan &mdash; and press Enter. The agent continues from what you wrote. Windows, macOS and Linux; over MCP `pause_for_user` returns `{status:\"replied\", reply}`.\n- **Reading a page no longer highlights it (Windows).** `copy_all_text` reads the document the way a screen reader does: exact text, no Ctrl+A, nothing selected, your clipboard untouched.\n- **MCP tool annotations** on every tool, and `window` / `system` now describe every action, its side effects and what it returns.\n\n**1.5.17**\n- **macOS: text outside ASCII is typed and pasted as itself** &mdash; \"café 日本語\" no longer comes out as \"cafa aaa\" or \"caf√©\".\n- **`copy_all_text` never selects an editor or a list** (Ctrl+A there selected a whole document or every email).\n\n**1.5.16**\n- **It pauses for you at a roadblock, then carries on.** A sign-in, a 2FA code, a CAPTCHA, an upgrade page: instead of giving up, the agent pauses. The glow around the screen turns **blue** and an on-screen prompt says what it needs (\"Sign in to Outlook, then click Resume\"). Click **Resume** and it continues where it left off, or **End task** to stop. Your own agent can do the same over MCP with `system({ action: \"pause_for_user\", message })`; from a terminal, `clawdcursor resume` (or `--end`).\n- **The glow and banner on every OS.** macOS and Linux now get the same screen-edge glow and banner as Windows: amber while the agent works, blue while it waits for you. Double-click the banner to stop everything.\n- **Blind mode on macOS caught up with Windows.** A native accessibility helper lists windows in 0.3 s (was 11 s) and reads a window's tree in 0.06&ndash;0.2 s. Typing is refused while a system dialog owns the keyboard, and the agent is told when another app's dialog took its keys.\n- **Sharper blind mode on Windows and Linux.** Classic controls no longer read as blank panes, the open dialog is what gets read, no 10 s stall on buttons that open a modal, the right field is found by name, and focusing a window no longer un-maximizes it.\n- **Upgrade walls are a roadblock.** The agent is told to stop at `Upgrade`, `Subscribe` or `Start trial` and ask you on the pause prompt.\n- **Know what you're running.** `clawdcursor versions` lists every installed copy (global npm, Claude Desktop extension, Claude Code plugin), and the installers say what they updated.\n\nEverything else is in the [changelog](CHANGELOG.md).\n\n---\n\n## What it is\n\nClawd Cursor is a **local MCP server** that gives any tool-calling agent &mdash; Claude Code, Cursor, Windsurf, OpenClaw, the Claude Agent SDK, or your own loop &mdash; safe control of the **real desktop**. It clicks, types, reads the screen, opens apps, and drives any GUI the way a human would: native apps, the browser, even a canvas.\n\nMost \"let an agent use the computer\" tools take a screenshot and feed it to a vision model &mdash; slow, expensive, and brittle. Clawd Cursor **compiles the screen into one UI map**: it fuses the accessibility tree and OCR into a confidence-scored set of elements, each tagged with a stable `el_NN` id, and acts on elements by id &mdash; not pixel coordinates. Coordinates appear only in the last-resort screenshot/vision tier (live pixels off the current frame), for canvas-only apps or tasks that genuinely need spatial reasoning. The result is cheaper, faster, private, and &mdash; uniquely &mdash; it **checks that each action actually did what it claimed**.\n\n> **If a human can do it on a screen, your agent can too.** No API, no integration, no problem &mdash; only the right sequence of reads, clicks, keys, and waits. Use it as the **last-mile fallback**: native API exists? Use it. CLI? Use it. Clawd Cursor is for the click, the legacy app, the GUI with no public surface.\n\n---\n\n## Why it's different\n\nThe desktop-agent space is crowded. The closest **install-and-go** peers are [Windows-MCP](https://github.com/CursorTouch/Windows-MCP) and [Terminator](https://t8r.tech/) (desktop MCP servers); browser-only tools (browser-use, Playwright MCP) are adjacent; and [OmniParser](https://github.com/microsoft/OmniParser) / [UI-TARS](https://github.com/bytedance/UI-TARS-desktop) are vision-centric *parsing approaches* you'd build an agent around, not products you install. Here's the honest comparison across those approaches &mdash; what Clawd Cursor does that the popular options don't:\n\n|                                          | **Clawd Cursor**        | browser-use | Playwright MCP | OmniParser / UI-TARS | computer-use |\n|------------------------------------------|:-----------------------:|:-----------:|:--------------:|:--------------------:|:------------:|\n| Any desktop app, not just the web        | ✅                      | web only    | web only       | ✅                    | ✅           |\n| Cross-OS (Windows + macOS + Linux)       | ✅                      | &mdash;     | &mdash;        | varies               | sandbox      |\n| Perception **without a vision model**    | ✅ compiled a11y + OCR map | DOM      | a11y tree      | ❌ vision-centric     | ❌ vision    |\n| **Verifies its own actions** (deviation) | ✅                      | &mdash;     | &mdash;        | &mdash;              | &mdash;      |\n| A Stop that holds (every process, across restarts) | ✅            | &mdash;     | &mdash;        | &mdash;              | &mdash;      |\n| Any model / vendor                       | ✅                      | ✅          | not an agent   | model-specific       | Claude only  |\n| MCP-native (one config, any host)        | ✅                      | library     | test framework | &mdash;              | tool-use API |\n| Local-only, no cloud required            | ✅                      | ✅          | ✅             | needs a model        | screens → cloud |\n\nThree things here are genuinely rare:\n\n1. **Cheapest-tier-first perception, fully local.** Accessibility tree (free) → OCR (cheap) → screenshot (expensive — the *only* tier that puts pixels in the model's context; \"screenshot\" and \"vision\" are the same step). The agent climbs only when it must, so token cost tracks task difficulty &mdash; and with a local model, nothing leaves the machine. Vision-centric agents (OmniParser, UI-TARS) need a screenshot in the model for *every* observation.\n2. **It verifies.** Pass `expect` on a consequential action and Clawd Cursor re-checks the live screen (with a short settle window for async UIs) and reports a **DEVIATION** instead of a hollow \"success.\" A completed task can't be marked done on evidence that was already true before it acted.\n3. **You stay in control, and the roles are clear.** clawdcursor is a tool layer that runs with your own permissions: what to do is decided by your agent and by your MCP host's permission prompts, which clawdcursor feeds with accurate read-only / destructive tool annotations. What clawdcursor guarantees itself is small and holds for every call: a Stop that every process honours, a pause only you can answer, no stray input into the AI assistant's own window, and a short list of key combos (lock, log out) it never sends. See [SECURITY.md](SECURITY.md).\n\nPlus: whenever an agent is driving, an on-screen **banner that says what it is doing** (\"Typing in Edge\") and a thin amber **outline around the window it is working in** (nothing over the window, nothing on the rest of the screen), on Windows, macOS and Linux &mdash; **press Stop on the banner to stop.** A stop holds until you give control back: the agent's next request comes up as a prompt, and only your **Resume** lets it act again (or run `clawdcursor resume`). Keys and clicks also go only to the window the agent was working in: if you switch apps while it waits, its next input is refused instead of landing in your window. When the agent needs you (a sign-in, a 2FA code), the outline turns blue and the banner says what to do, with **Resume** and **End task**. A human at the machine always knows, and always has a kill switch.\n\n---\n\n## Install\n\nclawdcursor is an MCP server published to npm — install it into **any** MCP-capable\nagent (Claude Code, Claude Desktop, Cursor, Windsurf, Zed, OpenAI Codex, or your own\nloop) the same way you install any other MCP server.\n\n### Claude Desktop — one-click extension (no terminal)\n\nDownload the extension for your OS and open it — Claude Desktop installs it:\n\n| Windows | macOS | Linux |\n|---|---|---|\n| [clawdcursor-win32.mcpb](https://github.com/AmrDab/clawdcursor/releases/latest/download/clawdcursor-win32.mcpb) | [clawdcursor-darwin.mcpb](https://github.com/AmrDab/clawdcursor/releases/latest/download/clawdcursor-darwin.mcpb) | [clawdcursor-linux.mcpb](https://github.com/AmrDab/clawdcursor/releases/latest/download/clawdcursor-linux.mcpb) |\n\n1. Double-click the file (or **Settings → Extensions → Advanced settings → Install\n   Extension…** and pick it).\n2. Turn on **Allow clawdcursor to control this computer** — that is the one-time\n   desktop-control consent; until it is on, every tool returns a consent prompt.\n3. **macOS:** the first time macOS asks, allow Claude under **Privacy & Security →\n   Accessibility** and **Screen Recording**.\n\nNo Node.js, npm or JSON editing needed — Claude Desktop runs the bundled server\nitself. Everything below is for other agents, or for Claude Desktop without the\nextension.\n\n### 1 — Install the engine + grant consent (once)\n\n```bash\nnpm i -g clawdcursor\nclawdcursor consent --accept    # one-time desktop-control consent (required)\nclawdcursor grant               # macOS only — approve Accessibility + Screen Recording\n```\n\n> Hosts that support MCP elicitation (e.g. Claude Code, VS Code) also let you skip\n> `consent --accept`: the first tool call asks **\"Allow clawdcursor to control this\n> computer\"** right in the app.\n\n> **Zero-install** also works — swap `clawdcursor` for `npx -y clawdcursor` in any\n> snippet below and npx fetches it on demand. A **global install is recommended**\n> anyway: it's pinnable and inspectable on disk (safer for a tool with full desktop\n> control than auto-fetching `latest` every run), and it's the path on which the macOS\n> native helper builds at install time. Requires **Node.js 20+**.\n\n> **Per-OS prerequisites.** **Windows** installs clean — `sharp` and `@nut-tree-fork/nut-js`\n> ship prebuilt binaries, so no C++/Python build tools are needed. **macOS** needs Xcode\n> Command Line Tools (`xcode-select --install`) for screenshots / vision; core\n> accessibility-driven control still works without them. **Linux** needs a few system\n> packages npm can't install: `tesseract-ocr` (OCR), `python3-gi` + `gir1.2-atspi-2.0`\n> (accessibility tree), and — on Wayland — `ydotool` (synthetic input).\n\n### 2 — Add it to your agent (pick your host)\n\n**One click** (Cursor, VS Code):\n\n[![Add to Cursor](https://img.shields.io/badge/Add%20to-Cursor-0ea5e9?logo=cursor&logoColor=white)](https://cursor.com/install-mcp?name=clawdcursor&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNsYXdkY3Vyc29yIiwibWNwIiwiLS1jb21wYWN0Il19)\n[![Add to VS Code](https://img.shields.io/badge/Add%20to-VS%20Code-007ACC?logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect/mcp/install?name=clawdcursor&config=%7B%22name%22%3A%22clawdcursor%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22clawdcursor%22%2C%22mcp%22%2C%22--compact%22%5D%7D)\n\nEvery host runs the same command — `clawdcursor mcp --compact`, or\n`npx -y clawdcursor mcp --compact` with no global install. Only the config shape\ndiffers between hosts:\n\n**Claude Code**\n```bash\nclaude mcp add clawdcursor -s user -- clawdcursor mcp --compact\n```\n\n**Cursor · Windsurf · Claude Desktop · Cline · Gemini CLI** — the common `mcpServers` shape:\n```json\n{\n  \"mcpServers\": {\n    \"clawdcursor\": { \"command\": \"clawdcursor\", \"args\": [\"mcp\", \"--compact\"] }\n  }\n}\n```\nClaude Desktop reads `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows) or\n`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS).\nGemini CLI reads `~/.gemini/settings.json`.\n\n**VS Code (Copilot)** — `.vscode/mcp.json` uses `servers`, **not** `mcpServers`:\n```json\n{\n  \"servers\": {\n    \"clawdcursor\": { \"command\": \"clawdcursor\", \"args\": [\"mcp\", \"--compact\"] }\n  }\n}\n```\n\n**Zed** — `context_servers` in `settings.json`:\n```json\n{\n  \"context_servers\": {\n    \"clawdcursor\": { \"command\": \"clawdcursor\", \"args\": [\"mcp\", \"--compact\"] }\n  }\n}\n```\n\n**OpenAI Codex** — `~/.codex/config.toml`. The first launch can take a few seconds,\nso raise the 10 s default startup timeout:\n```toml\n[mcp_servers.clawdcursor]\ncommand = \"clawdcursor\"\nargs = [\"mcp\", \"--compact\"]\nstartup_timeout_sec = 30\n```\n\n**opencode** — `opencode.json` uses `mcp`, and `command` is an array:\n```json\n{\n  \"mcp\": {\n    \"clawdcursor\": { \"type\": \"local\", \"command\": [\"clawdcursor\", \"mcp\", \"--compact\"] }\n  }\n}\n```\n\n**Any other MCP host** (Goose, Continue, …) — register a **stdio** server with command\n`clawdcursor` and args `mcp --compact`.\n\n> **Windows:** some hosts start the server without a shell, and then can't find\n> `clawdcursor` or `npx` (both are `.cmd` shims). If the server won't start, wrap it in\n> `cmd /c` — e.g. `\"command\": \"cmd\", \"args\": [\"/c\", \"clawdcursor\", \"mcp\", \"--compact\"]`,\n> or `claude mcp add clawdcursor -s user -- cmd /c clawdcursor mcp --compact`.\n\nThat's the whole setup. Ask your agent: *\"open Outlook and reply to the latest email\nfrom Sarah.\"*\n\n### Or: one-command plugin (Claude Code)\n\nSkip the manual config — this repo ships a plugin that registers the tools **and**\nbundles the usage skill in one step. It resolves the package's `bin` (never a\nhard-coded `dist/` path), so an upgrade can't break it:\n\n```bash\nclaude plugin marketplace add AmrDab/clawdcursor\nclaude plugin install clawdcursor@clawdcursor\n```\n\n<details>\n<summary>One-line installers (npm i -g, plus Node-version, PATH, and consent checks)</summary>\n\n```powershell\n# Windows (PowerShell)\npowershell -c \"irm https://clawdcursor.com/install.ps1 | iex\"\n```\n```bash\n# macOS / Linux\ncurl -fsSL https://clawdcursor.com/install.sh | bash\n```\n</details>\n\n> **Notes.** You never run `clawdcursor mcp` yourself — the host spawns it over stdio\n> on demand. `clawdcursor doctor` is **not** part of MCP setup; it is a diagnostic. On macOS, **Accessibility is\n> required** (primary control path); **Screen Recording is optional** (vision fallback\n> only). For editor permission allowlists, use the server-level wildcard\n> `mcp__clawdcursor` rather than per-tool entries — it survives tool renames.\n\n---\n\n## The engine\n\nThe perception + verification core (the **UI State Compiler**, since v1.5.0):\n\n- **`compile_ui`** fuses the accessibility tree and OCR into one confidence-scored map of the screen, every element tagged with a stable `el_NN` id. Act on an element by `{element_id, snapshot_id}` instead of pixels &mdash; near-free in tokens, and it survives DPI, resize, and layout shifts. `find_button` / `find_field` locate a target by meaning and hand you the id.\n- **Reactive verification.** `expect` on an action → Clawd Cursor confirms the outcome on the live screen and returns a **DEVIATION** when the UI didn't obey.\n- **Cross-platform parity.** The compiler, secure-field redaction, and coordinate handling run on Windows, macOS, and Linux; the external-agent (MCP) surface resolves `el_NN` refs and discloses when it attached to your existing browser.\n\n> Set-of-Mark-style element IDs and a11y/OCR fusion aren't new ideas on their own &mdash; what's rare is doing them **locally, a11y-first (no vision model required), with a built-in verification gate and a Stop that holds**, across three operating systems, behind a single MCP config.\n\nSee the [changelog](CHANGELOG.md) for the full release history, or the [latest release](https://github.com/AmrDab/clawdcursor/releases/latest).\n\n---\n\n## How it works\n\n**Clawd Cursor never runs a model.** Your agent (Claude Code, Codex, Cursor, OpenClaw, the Agent SDK, your own loop) is the brain; Clawd Cursor is the tool layer it drives. Both ways of connecting can run side-by-side.\n\n| Your agent runs… | Command | What you call |\n|---|---|---|\n| In your editor (Claude Code, Cursor, Windsurf, Zed) | `clawdcursor mcp` | Each tool, via stdio MCP |\n| Headless or remote (OpenClaw, Agent SDK, your loop) | `clawdcursor agent` | Same tools, over HTTP MCP on `127.0.0.1:3847/mcp` |\n\n### The loop\n\nRead the a11y tree (cheap) → act on named targets → verify from fresh observations → escalate perception only when needed (OCR → screenshot, the one tier that sends pixels to the model). Sparse a11y tree? `system.detect_webview` switches Electron/WebView2 apps to `browser.*` over CDP. Canvas-only (Paint, Figma, games)? Screenshot + coordinate click.\n\n```mermaid\nflowchart TB\n    task[\"User task\"] --> loop[\"Your agent<br/>plans · chooses tools · verifies\"]\n    loop --> observe{\"Cheapest observation<br/>that answers the question\"}\n\n    observe -- \"obs·a11y — free\" --> a11y[\"A11y tree<br/>(structured text + el_NN handles)\"]\n    observe -- \"obs·ocr — cheap\" --> ocr[\"OCR (OS-level, no vision LLM)\"]\n    observe -- \"obs·dom — medium\" --> dom[\"Browser DOM (CDP)\"]\n    observe -- \"obs·vision — expensive\" --> vision[\"Screenshot (image into context)\"]\n\n    a11y --> act\n    ocr --> act\n    dom --> act\n    vision --> act\n\n    act[\"Act<br/>click/type/key/drag · invoke/set_value · open_app · batch\"] --> guards\n    guards[\"Guards<br/>Stop · pause · AI-host window · hard key list\"] -- ok --> tools[\"Tool registry<br/>100+ granular + 6 compound\"]\n    guards -- refused --> blocked[\"refused\"]\n\n    tools --> desktop[\"Real desktop\"]\n    desktop --> verify{\"expect → does state match?\"}\n    verify -- pass --> done[\"done\"]\n    verify -- \"DEVIATION\" --> loop\n\n    classDef agentNode fill:#dbeafe,stroke:#2563eb,color:#0f172a;\n    classDef gate fill:#ede9fe,stroke:#7c3aed,color:#0f172a;\n    classDef obsNode fill:#fef9c3,stroke:#ca8a04,color:#0f172a;\n    classDef actNode fill:#ffedd5,stroke:#ea580c,color:#0f172a;\n    classDef stop fill:#fee2e2,stroke:#dc2626,color:#0f172a;\n    class loop,verify agentNode;\n    class guards,tools gate;\n    class observe,a11y,ocr,dom,vision obsNode;\n    class act actNode;\n    class blocked stop;\n```\n\n**`batch` for deterministic stretches.** When the next N steps are known, collapse them into one call &mdash; each step is refused exactly as a direct call would be (Stop, the pause, a locking key combo); on any guard miss or error the batch halts with a per-step trace.\n\n---\n\n## The toolbox\n\nTwo catalogs ship side-by-side. The **toolbox** is 6 compound tools, each with an `action` enum covering ~10–20 verbs (about 7,000 tokens for the whole catalog, schemas included &mdash; about a third of the granular surface's ~20,000; the `computer_20250124` shape editor hosts already know). The **granular** surface is the 100+ underlying primitives, one schema per verb (for runtimes that need top-level tools, or for debugging). Both run through the same `safety.evaluate()` chokepoint; the full catalog is always visible via MCP `tools/list`.\n\n| Toolbox | Actions |\n|---|---|\n| `computer` | `screenshot`, `click`, `double_click`, `right_click`, `triple_click`, `hover`, `move`, `scroll`, `scroll_horizontal`, `drag`, `drag_path`, `type`, `key`, `wait` |\n| `accessibility` | `read_tree`, `find`, `get_element`, `focused`, `invoke`, `focus`, `set_value`, `get_value`, `expand`, `collapse`, `toggle`, `select`, `state`, `list_children`, `wait_for`, `compile_ui`, `find_button`, `find_field`, `smart_click`, `smart_type`, `smart_read` |\n| `window` | `list`, `active`, `focus`, `maximize`, `minimize`, `restore`, `close`, `resize`, `list_displays`, `screen_size`, `open_app`, `open_file`, `open_url`, `switch_tab`, `navigate` |\n| `system` | `copy_all_text`, `ocr`, `clipboard_read`, `clipboard_write`, `shortcuts_list`, `shortcuts_run`, `undo`, `pause_for_user`, `report`, `build_uri`, `open_uri`, `open_app`, `open_file`, `open_url`, `detect_webview`, `relaunch_with_cdp`, `system_time` |\n| `browser` | `connect`, `page_context`, `read_text`, `click`, `type`, `select_option`, `evaluate`, `wait_for`, `list_tabs`, `switch_tab`, `scroll` |\n| `batch` | `{steps:[…]}` &mdash; collapse N calls into one round-trip; each step `{name, arguments, expect?}`, re-perceived and guarded like a direct call, halts with a trace on any miss. |\n\n```js\ncomputer({ action: \"key\", combo: \"mod+s\" })          // Cmd+S / Ctrl+S, resolved per-OS\naccessibility({ action: \"invoke\", name: \"Send\" })    // click by name, not pixels\nwindow({ action: \"open_app\", name: \"Outlook\" })\n```\n\n---\n\n## Cheapest-tier-first perception\n\nEvery observation has a cost. Start at the cheapest rung that works; climb only when it fails. The live log (`CLAWD_LOG=pretty`, default on a TTY) shows the ladder in real time via per-call badges.\n\n| Tier | Badge | Cost | Source | When |\n|---|---|---|---|---|\n| **T1** structured | `obs·a11y` | ~free | `accessibility.*`, `window.*`, `browser.read_text`, clipboard | Default. Text + bounds, no image, no vision LLM. |\n| **T2** OCR | `obs·ocr` | cheap | `system.ocr`, `smart_read` / `smart_click` / `smart_type` | A11y tree empty/sparse. OS-level text out, no image bytes. |\n| **T3** DOM | `obs·dom` | medium | `browser.read_text` / `page_context` (CDP) | WebView / Electron / Chrome content. |\n| **T4** screenshot (vision) | `obs·vision` | expensive | `computer.screenshot` | The only tier that puts pixels in the model's context. Canvas-only apps or spatial reasoning. Last resort. |\n\nActing tools log `act`. Watching `obs·a11y → act → obs·a11y` on a normal turn &mdash; and the rare climb to `obs·vision` &mdash; is the whole efficiency model, visible.\n\n---\n\n## Transports\n\nOne protocol &mdash; **MCP** &mdash; two transports, same catalog and JSON-RPC envelope. Both stateless; no session handshake.\n\n| Transport | When | Client config |\n|---|---|---|\n| **stdio MCP** | Editor hosts. Tools appear on demand &mdash; no daemon. | `{\"command\":\"clawdcursor\",\"args\":[\"mcp\",\"--compact\"]}` |\n| **HTTP MCP** | Headless agents, daemons, orchestration, Agent SDK. POST JSON-RPC to `http://127.0.0.1:3847/mcp`. | Run `clawdcursor agent`. Bearer token at `~/.clawdcursor/token`. |\n\n```bash\n# HTTP MCP — list tools\n# (the Accept header is required — the MCP spec's Streamable HTTP transport\n#  rejects requests that don't accept both JSON and SSE with a 406)\ncurl -s -X POST http://127.0.0.1:3847/mcp \\\n  -H \"Authorization: Bearer $(cat ~/.clawdcursor/token)\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}'\n```\n\n---\n\n## Platform support\n\nPlatform code lives behind a single `PlatformAdapter` interface (`src/platform/{windows,macos,linux}.ts` + `wayland-backend.ts`). Business logic never reads `process.platform`.\n\n| Platform | UI Automation | OCR | Browser (CDP) | Input |\n|---|---|---|---|---|\n| **Windows** 10/11 (x64 / ARM64) | UIA via PowerShell bridge | `Windows.Media.Ocr` | Chrome / Edge | nut-js |\n| **macOS** 12+ (Intel / Apple Silicon) | Native AX helper (Swift), JXA fallback | Apple Vision | Chrome / Edge | nut-js + System Events |\n| **Linux** X11 | AT-SPI via `python3-gi` | Tesseract | Chrome / Edge | nut-js |\n| **Linux** Wayland | AT-SPI via `python3-gi` | Tesseract | Chrome / Edge | `ydotool` / `wtype` |\n\n- **Windows** &mdash; no setup; the PowerShell bridge spawns on demand.\n- **macOS** &mdash; first run needs Accessibility (required) + Screen Recording (optional); `clawdcursor grant` walks the dialogs. Retina/HiDPI handled in-adapter &mdash; **don't pre-scale coordinates.**\n- **Linux X11** &mdash; `apt install tesseract-ocr python3-gi gir1.2-atspi-2.0`.\n- **Linux Wayland** &mdash; same, plus `ydotool` + `ydotoold` (preferred) or `wtype` (keyboard only).\n\n---\n\n## Safety & privacy\n\nclawdcursor runs with **your own permissions** and has no policy of its own about what the agent may do: since 2.0 there is no allow / confirm / block gate. That decision belongs to your agent and to your MCP host's permission prompts, which read clawdcursor's tool annotations (`readOnlyHint` on reads, `destructiveHint` on tools that close a window, open a file or URI, overwrite the clipboard or run page script). Agents are told to ask you with `pause_for_user` before an irreversible action you did not ask for. What clawdcursor always enforces itself:\n\n- **Stop.** Double-click the pill, or `clawdcursor stop`: every process stops, a running batch included, and stays stopped across restarts until you resume.\n- **The hard key list.** The few combos that lock the machine or end the session are never sent (Windows `Win+L`, `Ctrl+Alt+Del`; macOS `Ctrl+Cmd+Q`, `Cmd+Shift+Q`, Power; Linux `Super+L`, `Ctrl+Alt+Del`, `Ctrl+Alt+Backspace`, `Ctrl+Alt+F1`&ndash;`F12`), however they are spelled. Every other shortcut is allowed.\n- **No stray input into the AI assistant's window**, or into a window you switched to.\n- **Pauses instead of pushing through.** At a sign-in, 2FA, CAPTCHA or plan-limit page the agent hands the desktop to you (blue prompt, Resume / End task) instead of guessing. A pause times out after 15 minutes (`CLAWD_PAUSE_TIMEOUT_MIN`); `CLAWD_NO_PAUSE=1` turns pausing off.\n- **Network isolation.** Binds to `127.0.0.1` only; there is no setting that opens it to the network. Verify: `netstat -an | findstr 3847` (Windows) / `| grep 3847` (Unix). To drive it from another machine, tunnel the port over SSH: `ssh -L 3847:127.0.0.1:3847 user@host`, then use `http://127.0.0.1:3847/mcp` on your side.\n- **Bearer-token auth** on every HTTP request (`~/.clawdcursor/token`).\n- **No telemetry by default.** Nothing phones home. Screenshots stay in RAM and go only to the MCP client that asked for them; clawdcursor calls no model itself. `clawdcursor report` is opt-in and previews exactly what it sends.\n- **No screenshots to any model, if you want.** `clawdcursor agent --no-vision` (or `CLAWD_DISABLE_VISION=1`, which also covers stdio `clawdcursor mcp`) keeps every image from MCP clients; they work from the accessibility tree and OCR text.\n- **Prompt-injection defense.** Screen text is returned inside `<untrusted-screen-content>` tags &mdash; data, never instructions.\n- **Log privacy.** Logs redact password-field values (`AXSecureTextField`, UIA `IsPassword=true`).\n\nSee [SECURITY.md](SECURITY.md) for the full threat model and private vulnerability reporting.\n\n---\n\n## Architecture\n\n| Directory | What lives here |\n|---|---|\n| `src/core/` | Sense layer (a11y / snapshot / fingerprint / UI compiler), reactive verification, the Stop / pause / AI-host guards. |\n| `src/tools/` | 100+ granular tools + 5 compound aggregators + `batch`, playbooks, registry, dispatch. |\n| `src/platform/` | `PlatformAdapter` + Windows / macOS / Linux / Wayland, OCR engine, CDP driver, URI handler. |\n| `src/surface/` | CLI, MCP server (stdio + HTTP), dashboard, doctor, onboarding, control banner. |\n\nThe `PlatformAdapter` is the only thing platform code talks to; `guardInputMethods` is the one place every synthetic key and click passes (Stop, the window check, the hard key list). Those two seams are the whole point.\n\n---\n\n## CLI\n\nFor humans diagnosing an install. Agents connect via MCP.\n\n```\nclawdcursor consent         Manage desktop-control consent (--accept / --revoke / --status)\nclawdcursor grant           Grant macOS permissions (interactive, macOS only)\nclawdcursor doctor          Setup diagnostics\nclawdcursor status          Readiness check (consent, permissions, AI config)\nclawdcursor versions        Every installed copy and its version (global, Claude Desktop extension, Claude Code plugin)\nclawdcursor resume          Continue a task paused for you (same as the on-screen Resume); --end to stop it\nclawdcursor mcp             stdio MCP server — editor hosts spawn this; you don't\nclawdcursor agent           Daemon: HTTP MCP on :3847 (your agent drives the tools)\nclawdcursor stop            Stop every running mode\nclawdcursor uninstall       Remove all config and data\n\nOptions:  --port <n> (default 3847) · --compact · --no-banner · --accept\n```\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/AmrDab/clawdcursor.git && cd clawdcursor\nnpm install\nnpm run build       # tsc + postbuild  →  dist/surface/cli.js\nnpm test            # vitest (1,000+ tests)\nnpm run lint        # eslint\nnpm link            # global `clawdcursor` shim (Admin shell on Windows)\n```\n\nTests run on Node 20 & 22 against Ubuntu, macOS, and Windows in CI, plus a coverage ratchet, a perf tripwire, and an `npm audit` gate.\n\n**Tech:** TypeScript · Node 20+ · nut-js · Playwright · sharp · Express · Model Context Protocol SDK · Zod · commander.\n\n---\n\n## Contributing\n\nPRs welcome &mdash; see [CONTRIBUTING.md](CONTRIBUTING.md) for the dev loop, branch conventions, and the test matrix every change clears. Bugs and features in [issues](https://github.com/AmrDab/clawdcursor/issues); private security reports via [SECURITY.md](SECURITY.md).\n\n## License\n\nMIT &mdash; see [LICENSE](LICENSE).\n\n## Acknowledgments\n\nBuilt on the Model Context Protocol SDK, nut-js, Playwright, the Anthropic `computer_20250124` tool shape, and the AT-SPI / UIA / AX trees that make app-agnostic GUI automation possible at all.\n\n---\n\n<p align=\"center\">\n  <a href=\"https://clawdcursor.com\">clawdcursor.com</a> &middot;\n  <a href=\"https://discord.gg/hW29nrEZ8G\">Discord</a> &middot;\n  <a href=\"CHANGELOG.md\">Changelog</a> &middot;\n  <a href=\"https://www.npmjs.com/package/clawdcursor\">npm</a>\n</p>\n","readmeFilename":"README.md"}