{"_id":"@anionex/dsh-computer-use","_rev":"7-33659999569b548d431d4aa708fa9742","name":"@anionex/dsh-computer-use","dist-tags":{"latest":"0.3.3"},"versions":{"0.1.0":{"name":"@anionex/dsh-computer-use","version":"0.1.0","keywords":["deepseek","deepseek-harness","computer-use","macos","accessibility","desktop-automation"],"license":"MIT","_id":"@anionex/dsh-computer-use@0.1.0","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-computer-use#readme","bugs":{"url":"https://github.com/Anionex/dsh-computer-use/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"],"platform":"web"}},"dist":{"shasum":"177eb937665decc946f682d624dd3b4152f2ea7d","tarball":"https://registry.npmjs.org/@anionex/dsh-computer-use/-/dsh-computer-use-0.1.0.tgz","fileCount":120,"integrity":"sha512-3Fm5ZKGbPD3HoWS145IsSWzuLl8CqbPwHOHTRgzbVPnJHb7TZIx1wAezU8J5TdciZFas6nwEVAx3L5Q59dt21Q==","signatures":[{"sig":"MEUCIQCv2vGDdlnm+u6EVt/uxSuGxvmD1nBhI7lt9qQQMt0bRgIgVSBirSATsQk6lP7MkL6a/PGSRp1T/MV0YgFTs0oZSTg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1646407},"main":"lib/index.js","type":"module","_from":"file:/tmp/dsh-anionex-release.oFTNLY/packs/computer-use/anionex-dsh-computer-use-0.1.0.tgz","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./service":{"types":"./lib/types/service.d.ts","default":"./lib/service.js"},"./package.json":"./package.json","./provider-macos":{"types":"./lib/types/providers/macos.d.ts","default":"./lib/providers/macos.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"pnpm run build && vitest run tests","build":"pnpm run native:build && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","prepack":"pnpm run build","validate":"node scripts/validate.mjs --lane all","test:model":"node scripts/model-e2e.mjs","test:watch":"vitest tests","check:native":"node scripts/check-native.mjs","native:build":"node scripts/build-native.mjs","validate:local":"node scripts/validate.mjs --lane local","validate:model":"node scripts/model-e2e.mjs","validate:profile":"node scripts/validate.mjs --lane profile","validate:release":"pnpm run validate && pnpm run validate:model"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"_resolved":"/tmp/dsh-anionex-release.oFTNLY/packs/computer-use/anionex-dsh-computer-use-0.1.0.tgz","_integrity":"sha512-3Fm5ZKGbPD3HoWS145IsSWzuLl8CqbPwHOHTRgzbVPnJHb7TZIx1wAezU8J5TdciZFas6nwEVAx3L5Q59dt21Q==","repository":{"url":"git+https://github.com/Anionex/dsh-computer-use.git","type":"git"},"_npmVersion":"11.12.1","description":"Accessibility-first macOS Computer Use capability for DeepSeek Harness with stale-observation protection, app leases, confirmations, screenshots, and Web diagnostics","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.20.0","@types/react":"~18.3.1","@types/react-dom":"~18.3.0"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-brand":"^0.1.0-rc.6","@deepseek-ai/dsh-skill":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-subprocess":"^0.1.0-rc.6","@deepseek-ai/dsh-api-remotes":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/dsh-host-webserver":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-computer-use_0.1.0_1786711959254_0.6130347364788951","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@anionex/dsh-computer-use","version":"0.2.0","keywords":["deepseek","deepseek-harness","computer-use","macos","accessibility","desktop-automation"],"license":"MIT","_id":"@anionex/dsh-computer-use@0.2.0","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-computer-use#readme","bugs":{"url":"https://github.com/Anionex/dsh-computer-use/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"],"platform":"web"}},"dist":{"shasum":"f656e53a223393bf479f54d90ecaa2b721757884","tarball":"https://registry.npmjs.org/@anionex/dsh-computer-use/-/dsh-computer-use-0.2.0.tgz","fileCount":126,"integrity":"sha512-oWrlS/GkBduWeq2hJ/NATIsR8vDeqjj2Qyz/NXnisnmqcMCMTRhsidumJHWqhS2bgJ52sRdFCLGeR03op2oO3Q==","signatures":[{"sig":"MEUCICKtMJpDfkiYwG13drDiD35gwxNQbvZ9Z+Ole9Kqh2LMAiEAqzvHkv2vZtXyKHP6mjcTuC1YH7ADq1T1DJ9ocZUfXqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1724324},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./service":{"types":"./lib/types/service.d.ts","default":"./lib/service.js"},"./package.json":"./package.json","./provider-macos":{"types":"./lib/types/providers/macos.d.ts","default":"./lib/providers/macos.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"6380ea32c0731ef8da9e3f67b1bf5c8b561e2d6c","scripts":{"test":"pnpm run build && vitest run tests","build":"pnpm run native:build && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","prepack":"pnpm run build","validate":"node scripts/validate.mjs --lane all","test:model":"node scripts/model-e2e.mjs","test:watch":"vitest tests","check:native":"node scripts/check-native.mjs","native:build":"node scripts/build-native.mjs","validate:local":"node scripts/validate.mjs --lane local","validate:model":"node scripts/model-e2e.mjs","validate:profile":"node scripts/validate.mjs --lane profile","validate:release":"pnpm run validate && pnpm run validate:model"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-computer-use.git","type":"git"},"_npmVersion":"11.19.0","description":"Accessibility-first macOS Computer Use capability for DeepSeek Harness with stale-observation protection, app leases, confirmations, screenshots, and Web diagnostics","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.20.0","@types/react":"~18.3.1","@types/react-dom":"~18.3.0"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-brand":"^0.1.0-rc.6","@deepseek-ai/dsh-skill":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-subprocess":"^0.1.0-rc.6","@deepseek-ai/dsh-api-remotes":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/dsh-host-webserver":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-computer-use_0.2.0_1788264702889_0.7496214693849255","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@anionex/dsh-computer-use","version":"0.2.1","keywords":["deepseek","deepseek-harness","computer-use","macos","accessibility","desktop-automation"],"license":"MIT","_id":"@anionex/dsh-computer-use@0.2.1","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-computer-use#readme","bugs":{"url":"https://github.com/Anionex/dsh-computer-use/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"],"platform":"web"}},"dist":{"shasum":"08e0d019987eab3a1f3bbb18c1b17a7b5b0e17b8","tarball":"https://registry.npmjs.org/@anionex/dsh-computer-use/-/dsh-computer-use-0.2.1.tgz","fileCount":126,"integrity":"sha512-H6x6/XIpf10PNyKslSxT1HOQ352Zk5Eyxr7kha9eZ+TRvTJiTgYRJFR070J6m7sOM/mgV0mq4cPFxb7gF/IdtA==","signatures":[{"sig":"MEUCIQCcdNJEY6LJGhPcWAfTdmUAEpEDp8SDS8R1BuCwBFKHrQIgcJayKGRxbi7em15DUjGmHp+JUEDEUUM0cu2EjaGUeH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1724350},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./service":{"types":"./lib/types/service.d.ts","default":"./lib/service.js"},"./package.json":"./package.json","./provider-macos":{"types":"./lib/types/providers/macos.d.ts","default":"./lib/providers/macos.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3d930e6509b3a01f1dbb63723e585e48e27933c1","scripts":{"test":"pnpm run build && vitest run tests","build":"pnpm run native:build && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","prepack":"pnpm run build","validate":"node scripts/validate.mjs --lane all","test:model":"node scripts/model-e2e.mjs","test:watch":"vitest tests","check:native":"node scripts/check-native.mjs","native:build":"node scripts/build-native.mjs","validate:local":"node scripts/validate.mjs --lane local","validate:model":"node scripts/model-e2e.mjs","validate:profile":"node scripts/validate.mjs --lane profile","validate:release":"pnpm run validate && pnpm run validate:model"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-computer-use.git","type":"git"},"_npmVersion":"11.19.0","description":"Accessibility-first macOS Computer Use capability for DeepSeek Harness with stale-observation protection, app leases, confirmations, screenshots, and Web diagnostics","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.20.0","@types/react":"~18.3.1","@types/react-dom":"~18.3.0"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-brand":"^0.1.0-rc.6","@deepseek-ai/dsh-skill":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-subprocess":"^0.1.0-rc.6","@deepseek-ai/dsh-api-remotes":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/dsh-host-webserver":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-computer-use_0.2.1_1788271273274_0.9571624967478547","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anionex/dsh-computer-use","version":"0.3.0","keywords":["deepseek","deepseek-harness","computer-use","macos","accessibility","desktop-automation"],"license":"MIT","_id":"@anionex/dsh-computer-use@0.3.0","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-computer-use#readme","bugs":{"url":"https://github.com/Anionex/dsh-computer-use/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"],"platform":"web"}},"dist":{"shasum":"08ad5816371c0bcc1cc7693cb6a6aefe0e5f9af3","tarball":"https://registry.npmjs.org/@anionex/dsh-computer-use/-/dsh-computer-use-0.3.0.tgz","fileCount":130,"integrity":"sha512-IIOtMUpXBsdkZxMS+YABYkOqIVglyymRIDBocAclDOGZHPoxBkDpSweSN/YyDGPfd1RX8g0ibennH1sGJ6kymg==","signatures":[{"sig":"MEUCIQCEPzN4MsQl6UdlE03FHtkO7BvRD6Fp34UHU237fJJoUgIgPt6lai2LC3Z7FxorQ2X67YmEK2XNUr9cF36Jfw2XxJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1881158},"main":"lib/index.js","type":"module","_from":"file:anionex-dsh-computer-use-0.3.0.tgz","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./service":{"types":"./lib/types/service.d.ts","default":"./lib/service.js"},"./package.json":"./package.json","./provider-macos":{"types":"./lib/types/providers/macos.d.ts","default":"./lib/providers/macos.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"pnpm run build && vitest run tests","build":"pnpm run native:build && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","validate":"node scripts/validate.mjs --lane all","test:model":"node scripts/model-e2e.mjs","test:watch":"vitest tests","check:native":"node scripts/check-native.mjs","native:build":"node scripts/build-native.mjs","validate:local":"node scripts/validate.mjs --lane local","validate:model":"node scripts/model-e2e.mjs","validate:profile":"node scripts/validate.mjs --lane profile","validate:release":"pnpm run validate && pnpm run validate:model"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"_resolved":"/Users/davidyang/dsh-plugins/dsh-computer-use/anionex-dsh-computer-use-0.3.0.tgz","_integrity":"sha512-IIOtMUpXBsdkZxMS+YABYkOqIVglyymRIDBocAclDOGZHPoxBkDpSweSN/YyDGPfd1RX8g0ibennH1sGJ6kymg==","repository":{"url":"git+https://github.com/Anionex/dsh-computer-use.git","type":"git"},"_npmVersion":"11.19.0","description":"Accessibility-first macOS Computer Use capability for DeepSeek Harness with stale-observation protection, app leases, confirmations, screenshots, and Web diagnostics","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.20.0","@types/react":"~18.3.1","@types/react-dom":"~18.3.0"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-brand":"^0.1.0-rc.6","@deepseek-ai/dsh-skill":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-subprocess":"^0.1.0-rc.6","@deepseek-ai/dsh-api-remotes":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/dsh-host-webserver":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-computer-use_0.3.0_1788352863710_0.9546816045692625","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@anionex/dsh-computer-use","version":"0.3.1","keywords":["deepseek","deepseek-harness","computer-use","macos","accessibility","desktop-automation"],"license":"MIT","_id":"@anionex/dsh-computer-use@0.3.1","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-computer-use#readme","bugs":{"url":"https://github.com/Anionex/dsh-computer-use/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"],"platform":"web"}},"dist":{"shasum":"02d1d6ed42fb09af1aed0f1ba54b28d55444d17e","tarball":"https://registry.npmjs.org/@anionex/dsh-computer-use/-/dsh-computer-use-0.3.1.tgz","fileCount":127,"integrity":"sha512-l1C1fwYsgIPAkzvkq90HemEXNYo02kXRcYHCvf0aO1uezf3dvREU31OBVz4bKCL56VBDvpyN0ZjW9Vv8c5h9ww==","signatures":[{"sig":"MEUCIQCchhirf+LdV4kgLIs6POhwcxTwylQHcKdguA+S7E6wKQIgfTvt2ubQ954WGimgqGwXk5g7BrNq6ukOjdmDT2RMoOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1881399},"main":"lib/index.js","type":"module","_from":"file:anionex-dsh-computer-use-0.3.1.tgz","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./service":{"types":"./lib/types/service.d.ts","default":"./lib/service.js"},"./package.json":"./package.json","./provider-macos":{"types":"./lib/types/providers/macos.d.ts","default":"./lib/providers/macos.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"pnpm run build && vitest run tests","build":"pnpm run native:build && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","validate":"node scripts/validate.mjs --lane all","test:model":"node scripts/model-e2e.mjs","test:watch":"vitest tests","check:native":"node scripts/check-native.mjs","native:build":"node scripts/build-native.mjs","validate:local":"node scripts/validate.mjs --lane local","validate:model":"node scripts/model-e2e.mjs","validate:profile":"node scripts/validate.mjs --lane profile","validate:release":"pnpm run validate && pnpm run validate:model"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"_resolved":"/Users/davidyang/dsh-plugins/dsh-computer-use/anionex-dsh-computer-use-0.3.1.tgz","_integrity":"sha512-l1C1fwYsgIPAkzvkq90HemEXNYo02kXRcYHCvf0aO1uezf3dvREU31OBVz4bKCL56VBDvpyN0ZjW9Vv8c5h9ww==","repository":{"url":"git+https://github.com/Anionex/dsh-computer-use.git","type":"git"},"_npmVersion":"11.19.0","description":"Accessibility-first macOS Computer Use capability for DeepSeek Harness with stale-observation protection, app leases, confirmations, screenshots, and Web diagnostics","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.20.0","@types/react":"~18.3.1","@types/react-dom":"~18.3.0"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-brand":"^0.1.0-rc.6","@deepseek-ai/dsh-skill":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-subprocess":"^0.1.0-rc.6","@deepseek-ai/dsh-api-remotes":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/dsh-host-webserver":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-computer-use_0.3.1_1788354252489_0.12629172521679166","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@anionex/dsh-computer-use","version":"0.3.2","keywords":["deepseek","deepseek-harness","computer-use","macos","accessibility","desktop-automation"],"license":"MIT","_id":"@anionex/dsh-computer-use@0.3.2","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"homepage":"https://github.com/Anionex/dsh-computer-use#readme","bugs":{"url":"https://github.com/Anionex/dsh-computer-use/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-connection"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-alpha.3 <0.2.0 || >=0.1.5-rc.1 <0.2.0","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"dist":{"shasum":"bfddbbf14b36a97f09bdd44470599037b09fe175","tarball":"https://registry.npmjs.org/@anionex/dsh-computer-use/-/dsh-computer-use-0.3.2.tgz","fileCount":127,"integrity":"sha512-oXpzgl9TdYWRMYib3j+vbUU3lTM6jjApFJEkHexJGXIZx5YJ32sKoHI/kxoK8Xp+/llJGYlVCxkheU7qMQJZOA==","signatures":[{"sig":"MEUCIQCGa1I8y0hzWR5onJqHuatsf5fleArbfuDAEQ6J8HkO7AIgPuH0I3qLAna5LLf9bF3TSDABUT3dGSJ8Rkrj8AKGFD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1887121},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./service":{"types":"./lib/types/service.d.ts","default":"./lib/service.js"},"./package.json":"./package.json","./provider-macos":{"types":"./lib/types/providers/macos.d.ts","default":"./lib/providers/macos.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"ba0d29308005744de969803453ce87d02a02cf51","scripts":{"test":"pnpm run build && vitest run tests","build":"pnpm run native:build && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","prepack":"pnpm run build","validate":"node scripts/validate.mjs --lane all","test:model":"node scripts/model-e2e.mjs","test:watch":"vitest tests","check:native":"node scripts/check-native.mjs","native:build":"node scripts/build-native.mjs","validate:local":"node scripts/validate.mjs --lane local","validate:model":"node scripts/model-e2e.mjs","validate:profile":"node scripts/validate.mjs --lane profile","validate:release":"pnpm run validate && pnpm run validate:model"},"_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"repository":{"url":"git+https://github.com/Anionex/dsh-computer-use.git","type":"git"},"_npmVersion":"11.19.0","description":"Accessibility-first macOS Computer Use capability for DeepSeek Harness with stale-observation protection, app leases, confirmations, screenshots, and Web diagnostics","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.20.0","@types/react":"~18.3.1","@types/react-dom":"~18.3.0"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-brand":"^0.1.0-rc.6","@deepseek-ai/dsh-skill":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-subprocess":"^0.1.0-rc.6","@deepseek-ai/dsh-api-remotes":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/dsh-host-webserver":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-computer-use_0.3.2_1789027437389_0.11854100983462756","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"_id":"@anionex/dsh-computer-use@0.3.3","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-connection"],"platform":"web"},"compatibility":{"dsh":">=0.1.0-rc.8 <0.2.0 || >=0.1.1-rc.1 <0.2.0 || >=0.1.2-alpha.3 <0.2.0 || >=0.1.5-rc.1 <0.2.0 || 0.1.7-rc.2 || 0.2.0-rc.2","profiles":["web"],"dshReleases":{"0.1.0-rc.8":"compatible","0.1.1-rc.1":"compatible","0.1.1-rc.2":"compatible","0.1.5-rc.1":"compatible","0.1.7-rc.2":"compatible","0.2.0-rc.2":"compatible","0.1.2-alpha.3":"compatible","0.1.2-alpha.4":"compatible","0.1.2-alpha.5":"compatible","0.1.5-alpha.1":"compatible","0.1.5-alpha.2":"compatible"}}},"bugs":{"url":"https://github.com/Anionex/dsh-computer-use/issues"},"dist":{"shasum":"f1d63445febc029e2b7b699f6472eb98fa93d950","tarball":"https://registry.npmjs.org/@anionex/dsh-computer-use/-/dsh-computer-use-0.3.3.tgz","fileCount":128,"integrity":"sha512-TneubCLMpPpMtTq7CJ0FrIMMrxRDJy6VpNgcr6w+/fxmZksnT3B7eGT2GjwLIOQTjOtuSuqG5Tw/3hjz64aBkQ==","signatures":[{"sig":"MEQCIGksTRk60p88tXqkbmi9DL7C+3zMIdftxoJg+Lku+1llAiAawER9j5DSaut5YBpTeOTgnORA4CgHgnOe2FEdP58S7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEmh+RjLr3gvizucLSarRfa2FRxOidXf/dmrhncAeRyPAiEAh21v/Y70NZbQ5w1TQ2Vdsi+XjBs4JGbMZfu9NiGkZU8="}],"unpackedSize":1915280},"main":"lib/index.js","name":"@anionex/dsh-computer-use","type":"module","_from":"file:/Users/davidyang/dsh-worktrees/compat-20261001/releases/dsh-computer-use/0.3.3/anionex-dsh-computer-use-0.3.3.tgz","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./service":{"types":"./lib/types/service.d.ts","default":"./lib/service.js"},"./package.json":"./package.json","./provider-macos":{"types":"./lib/types/providers/macos.d.ts","default":"./lib/providers/macos.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"license":"MIT","scripts":{"test":"pnpm run build && vitest run tests","build":"pnpm run native:build && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","prepack":"pnpm run build","validate":"node scripts/validate.mjs --lane all","test:model":"node scripts/model-e2e.mjs","test:watch":"vitest tests","check:native":"node scripts/check-native.mjs","native:build":"node scripts/build-native.mjs","validate:local":"node scripts/validate.mjs --lane local","validate:model":"node scripts/model-e2e.mjs","validate:profile":"node scripts/validate.mjs --lane profile","validate:release":"pnpm run validate && pnpm run validate:model"},"version":"0.3.3","_npmUser":{"name":"anionex","email":"davidyang042@gmail.com"},"homepage":"https://github.com/Anionex/dsh-computer-use#readme","keywords":["deepseek","deepseek-harness","computer-use","macos","accessibility","desktop-automation"],"_resolved":"/Users/davidyang/dsh-worktrees/compat-20261001/releases/dsh-computer-use/0.3.3/anionex-dsh-computer-use-0.3.3.tgz","_integrity":"sha512-TneubCLMpPpMtTq7CJ0FrIMMrxRDJy6VpNgcr6w+/fxmZksnT3B7eGT2GjwLIOQTjOtuSuqG5Tw/3hjz64aBkQ==","repository":{"url":"git+https://github.com/Anionex/dsh-computer-use.git","type":"git"},"_npmVersion":"11.19.0","description":"Accessibility-first macOS Computer Use capability for DeepSeek Harness with stale-observation protection, app leases, confirmations, screenshots, and Web diagnostics","directories":{},"maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"_nodeVersion":"26.8.1","dependencies":{"zod":"4.4.3"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.20.0","@types/react":"~18.3.1","@types/react-dom":"~18.3.0","@deepseek-ai/cordis":"4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.2","@deepseek-ai/cosmokit":"1.8.5","@deepseek-ai/dsh-agent":"0.2.0-rc.2","@deepseek-ai/dsh-brand":"0.2.0-rc.2","@deepseek-ai/dsh-deque":"0.2.0-rc.2","@deepseek-ai/dsh-scope":"0.2.0-rc.2","@deepseek-ai/dsh-skill":"0.2.0-rc.2","@deepseek-ai/dsh-tools":"0.2.0-rc.2","@deepseek-ai/dsh-sandbox":"0.2.0-rc.2","@deepseek-ai/dsh-session":"0.2.0-rc.2","@deepseek-ai/dsh-storage":"0.2.0-rc.2","@deepseek-ai/dsh-timeout":"0.2.0-rc.2","@deepseek-ai/schemastery":"3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.2","@deepseek-ai/dsh-http-proxy":"0.2.0-rc.2","@deepseek-ai/dsh-subprocess":"0.2.0-rc.2","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.2","@deepseek-ai/dsh-credentials":"0.2.0-rc.2","@deepseek-ai/dsh-util-crypto":"0.2.0-rc.2","@deepseek-ai/dsh-util-values":"0.2.0-rc.2","@deepseek-ai/dsh-client-store":"0.2.0-rc.2","@deepseek-ai/dsh-client-locale":"0.2.0-rc.2","@deepseek-ai/dsh-system-prompt":"0.2.0-rc.2","@deepseek-ai/dsh-user-approval":"0.2.0-rc.2","@deepseek-ai/dsh-host-webserver":"0.2.0-rc.2","@deepseek-ai/dsh-storage-domain":"0.2.0-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.2.0-rc.2","@deepseek-ai/dsh-typert-protocol":"0.2.0-rc.2","@deepseek-ai/cordis-plugin-loader":"1.0.5","@deepseek-ai/dsh-client-connection":"0.2.0-rc.2","@deepseek-ai/dsh-client-ui-renderer":"0.2.0-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.2.0-rc.2","@deepseek-ai/dsh-util-code-language":"0.2.0-rc.2","@deepseek-ai/dsh-util-workspace-path":"0.2.0-rc.2","@deepseek-ai/dsh-client-ui-primitives":"0.2.0-rc.2"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-agent":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-brand":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-skill":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-tools":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-session":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-subprocess":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-api-remotes":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-util-values":"^0.1.0-rc.6 || 0.2.0-rc.2","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6 || 0.1.7-rc.2 || 0.2.0-rc.2"},"peerDependenciesMeta":{"@deepseek-ai/dsh-host-webserver":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-computer-use_0.3.3_1790830232293_0.34868972012664057"}}},"time":{"created":"2026-08-14T12:52:39.072Z","modified":"2026-10-01T04:50:32.510Z","0.1.0":"2026-08-14T12:52:39.421Z","0.2.0":"2026-09-01T12:11:43.177Z","0.2.1":"2026-09-01T14:01:13.489Z","0.3.0":"2026-09-02T12:41:03.902Z","0.3.1":"2026-09-02T13:04:12.645Z","0.3.2":"2026-09-10T08:03:57.668Z","0.3.3":"2026-10-01T04:50:32.382Z"},"bugs":{"url":"https://github.com/Anionex/dsh-computer-use/issues"},"license":"MIT","homepage":"https://github.com/Anionex/dsh-computer-use#readme","keywords":["deepseek","deepseek-harness","computer-use","macos","accessibility","desktop-automation"],"repository":{"url":"git+https://github.com/Anionex/dsh-computer-use.git","type":"git"},"description":"Accessibility-first macOS Computer Use capability for DeepSeek Harness with stale-observation protection, app leases, confirmations, screenshots, and Web diagnostics","maintainers":[{"name":"anionex","email":"davidyang042@gmail.com"}],"readme":"# DSH Computer Use\n\n[![X (Twitter)](https://img.shields.io/badge/-@anion__ex-000000?style=flat-square&logo=x&logoColor=white)](https://x.com/anion_ex)\n[![MIT License](https://img.shields.io/badge/license-MIT-2f855a.svg)](LICENSE)\n![macOS](https://img.shields.io/badge/macOS-14%2B-111827.svg)\n![Universal binary](https://img.shields.io/badge/native-arm64%20%2B%20x86__64-2563eb.svg)\n![DeepSeek Harness](https://img.shields.io/badge/DeepSeek%20Harness-Bundle-5b50ed.svg)\n\n**为 DeepSeek Harness 提供原生 macOS 控制能力，默认不碰你的真实光标，也不因指针动作抢占前台；Bundle 可以在键盘输入前把目标应用带到前台，保证输入可靠。**\n\nDSH Computer Use 为 Agent 提供新鲜的 Accessibility observation、准确进程/窗口定向、stale state 拒绝、按应用限制的访问，以及动作后的可验证状态。语义化 Accessibility 始终优先；鼠标、拖拽、滚轮与键盘 fallback 会投递给选定进程，而不是全局桌面。\n\n[English](README.md) | 中文\n\n## 为什么它不同\n\nAccessibility 权限允许进程读取和操作 macOS UI 元素，但这个权限本身并不会自动防止抢焦点或移动光标。是否干扰用户，取决于输入事件走哪条路由。\n\nDSH Computer Use 的默认路由有意避免干扰：\n\n- **不移动系统光标：** helper 中没有 cursor warp 路径。\n- **不做全局指针注入：** click、scroll 与 drag fallback 使用 pid/window 定向的 SkyLight 路由，不进入全局 HID 事件流。\n- **指针动作不激活应用：** 语义化 Accessibility、目标进程指针输入与 `keyboardPolicy: preserve` 都不激活；`keyboardPolicy: activate`（Bundle 默认）在键盘 fallback 前把目标应用带到前台，与 Codex Computer Use 对齐。\n- **独立 Agent 光标：** click、scroll 与 drag 动作会移动一个点击穿透、不会激活应用的软件光标，同时保持系统真实光标不变。它只在准确目标应用位于前台时显示，并沿速度/加速度塑造的轻微弧线移动。点击与滚动会等待到达后再输入；拖拽会先到达起点并显示按下，再让目标进程拖拽与光标向终点移动同步开始。\n- **不盲目重放：** 每个动作都绑定准确、未过期的 observation，并返回新鲜状态。\n\n因此，这个原生动作层可以在用户继续使用当前前台应用时，操作许多后台应用。\n\n## 它补充了什么\n\n- **先观察再动作。** 返回有界 Accessibility tree、带 index 的元素、准确 app/process/window metadata、权限状态和可选截图 Artifact。\n- **把动作绑定到状态。** 每个元素都带有 observation-local index 与 opaque `targetHandle`；准确 locator 继续兼容，而显式允许的重绑定只接受同一进程和窗口内唯一的 native 或 semantic 身份。\n- **优先语义输入。** 先使用 `AXPress`、可编辑 value、selected-text 赋值和元素声明的 Accessibility action，再考虑指针 fallback。\n- **把 fallback 投递给目标。** 键盘输入发给选定 pid；指针输入携带窗口本地坐标，发给选定 pid 和 `CGWindowID`，并通过点解析应用窗口，任意屏幕坐标都可以点击。\n- **返回新鲜证据。** 每个成功动作都会经过有界 settle，并返回新的完整或差分 observation。\n- **按应用限制访问。** read/control lease 按 Agent、Session、turn 与准确 bundle id 分离；高影响动作另需一次性确认。\n- **保持模型表面聚焦。** 只有当前 Agent 加载 Computer Use Skill 后才暴露执行 Tool。\n\n## 证据：从未激活的后台 fixture\n\n仓库包含确定性 AppKit fixture 和 universal native helper。发布测试会通过 `open -g` 以后台模式启动 fixture，再通过 Agent 使用的同一协议完成操作。\n\n```text\nobserve exact bundle id + pid\n-> element: \"Targeted pointer probe\", no AXPress action\n-> computer_click with observationId + element index + allowCoordinateFallback\n-> fresh observation\n-> activation \"not-requested\"; pointerRouting \"target-process\"\n-> status \"Status: pointer click\"\n```\n\n<p align=\"center\">\n  <img src=\"assets/computer-use-fixture.png\" width=\"760\" alt=\"目标进程指针输入前、从未激活的确定性原生 fixture，显示专用 pointer probe 与 ready 状态。\" />\n</p>\n\nFixture 会记录每次 `applicationDidBecomeActive` 回调。独立 native monitor 还会在 click、scroll 与 drag 整个动作期间每毫秒采样系统光标和前台 pid。默认发布路径不得增加 `activationCount`，并要求光标坐标不变、前台 pid 不变、click/scroll 精确计数，并且 drag 只有一组完整 down/up gesture。\n\n需求、架构、关键决策、验证证据和兼容性边界见[前台安全输入策略](docs/interaction-policy.md)。\n\n## 范围\n\n`dsh-computer-use` 是原生**动作层**，不会取代更窄的接口：\n\n- 浏览器任务应继续使用 browser automation 和 DOM/CDP 状态；\n- 有 API、CLI 或专用应用插件时仍应优先使用；\n- OCR、视觉 grounding 与像素理解应交给独立安装的 `dsh-vision-toolkit`：加载 `vision-tools` Skill，把准确的截图 Artifact 路径传给 `vision_glance`、`vision_ground`、`vision_detect`、`vision_crop` 或 `vision_long_screenshot_ocr`；不要用 shell 驱动的 `tesseract`、`screencapture` 或临时 Swift/Python OCR 取代这些工具；\n- `dsh-design` 等领域 Bundle 可以在工作流跨入原生应用时组合 Computer Use。\n\n## 快速开始\n\n### 前置条件\n\n- macOS 14 或更新版本。\n- 已安装 Web 或 Headless Profile、并挂载 Skill Tool 的 DeepSeek Harness。\n- 用于观察和原生动作的 macOS Accessibility 权限。\n- 只有请求截图时才需要 macOS Screen Recording 权限。\n- 构建本仓库时需要 Node.js `^22.19.0` 或 `>=24.0.0`。\n\n直接从 npm 一键安装 Web 与 Headless Bundle：\n\n> [!IMPORTANT]\n> 已发布的包名为 `@anionex/dsh-computer-use`。旧名\n> `@dsh-external/dsh-computer-use` 从未发布到 npm，不可安装；\n> 安装前请先更新旧的 profile 或 manifest 引用。\n\n```sh\ndsh plugin --profile web add @anionex/dsh-computer-use\ndsh plugin --profile headless add @anionex/dsh-computer-use\n\ndsh --profile web --dump-config | grep computer-use\ndsh --profile headless --dump-config | grep computer-use\n```\n\n本地开发时，把包名替换为 checkout 的绝对路径即可。\n\n修改已安装插件后，需要重启正在运行的 `dsh web` host，再创建一个新 Session，让 host 重新载入 Bundle 与 Skill catalog。\n\n在新 Session 中加载 Skill：\n\n```text\n/dsh-computer-use\n```\n\n旧的 `/computer-use` Skill 仍供现有会话使用。如果已安装其他同名 Skill，\n请加载 `/dsh-computer-use` 来激活本插件。\n\n然后可以尝试：\n\n> 使用 Computer Use 检查正在运行的 DSH Computer Use Fixture，启用 deterministic option，并根据动作后返回的新状态报告结果。优先使用 Accessibility 元素，不要复用旧 observation。\n\n## 工作原理\n\n```mermaid\nflowchart LR\n    A[\"Select exact bundle id and pid\"] --> B[\"Acquire scoped read access\"]\n    B --> C[\"Observe AX tree and optional screenshot\"]\n    C --> D[\"Choose target handle, index, or window-relative point\"]\n    D --> E[\"Acquire control and optional one-use confirmation\"]\n    E --> F[\"Re-observe and validate exact target\"]\n    F --> G{\"Input route\"}\n    G -->|\"Semantic\"| H[\"Accessibility action or value\"]\n    G -->|\"Keyboard\"| I[\"Post to target pid\"]\n    G -->|\"Pointer\"| J[\"Post to target pid + window\"]\n    H --> K[\"Wait for settlement\"]\n    I --> K\n    J --> K\n    K --> L[\"Return fresh full or diff observation\"]\n```\n\n每个已观察元素都有 observation-local 兼容 index 和 opaque `targetHandle`。仅传 index 的动作保留准确 locator 行为。低风险元素动作可以传入 `targetHandle` 与 `allowRebind: true`；输入前，provider-independent resolver 会获取新鲜 Accessibility 状态，并依次检查原 locator、唯一 provider-native identifier（例如 macOS `AXIdentifier`），以及基于 role、accessible name、已声明 action 和稳定 ancestor fingerprint 的唯一 semantic match。Resolver 始终保留准确 bundle id、pid 与选定窗口身份；遇到歧义或低置信度时返回 `COMPUTER_TARGET_AMBIGUOUS` 或 `COMPUTER_TARGET_LOW_CONFIDENCE`，不会猜测。坐标动作仍要求引用窗口的完整状态保持当前。\n\n成功的元素动作会报告 `resolution.mode`、`confidence`、`candidateCount` 与 `targetChanged`。敏感目标一旦需要 rebind，旧的一次性 confirmation 会失效，并返回 `COMPUTER_TARGET_REBIND_REQUIRES_CONFIRMATION`；调用方必须观察当前 UI，并对新选择的 handle 再次确认。视觉坐标不是 target handle，不能授权敏感 rebind。本基础版本不包含 provider-native visual hit-test，该能力留待后续实现。\n\n默认 interaction policy 为：\n\n```yaml\ninteraction:\n  focusPolicy: preserve\n  keyboardPolicy: activate\n  pointerInputPolicy: targeted\n  cursorVisualization: visible\n  cursorSpeedPxPerSecond: 1600\n  cursorAccelerationPxPerSecondSquared: 6000\n  cursorClickDelayMs: 90\n  cursorAutoHideMs: 0\n```\n\n`cursorVisualization: visible` 会在选定应用位于前台时，为 click、scroll 与 drag 显示 Agent 自己的非交互光标；它不会替代或移动 macOS 系统光标。不需要视觉反馈时可设为 `hidden`。`pointerInputPolicy: deny` 会禁用坐标点击/fallback、滚动与拖拽。`keyboardPolicy: activate`（Bundle 默认）会先激活目标应用，让 `type-text` 键盘 fallback 与 `press-key` 可靠工作；`focusPolicy: activate` 是更宽的兼容模式，还会在指针光标移动和输入前激活目标应用，并重新观察、校验准确目标。\n\nAgent 光标是 28x28 的透明整图光标（Cursor 箭头加 DeepSeek 鲸鱼，`assets/cursor.png`），热点位于图片左上角。它由独立进程运行，点击穿透、不激活应用，并绑定准确已观察的 pid、窗口、frame 与当前前台应用；任一条件不再匹配时就会隐藏。移动时间由距离、最大速度与加速度计算，默认采用带对称加减速的轻微弧线；把速度和加速度调高后仍保留少量可见动画帧。Native 到达目标并经过配置的停顿后，才会发出点击输入。拖拽则先按同一顺序到达起点，再让目标进程拖拽与 Agent 光标向终点移动同时开始。\n\nHelper executable 是 DSH 内部传输实现，不是公共授权 API。它要求独立进程组和父进程持有的标准传输，因此普通 shell 重定向会在解析命令前 fail closed。这个检查只属于纵深防御，不会认证同一 macOS 用户下运行的任意代码：专门构造的 detached 父进程仍能复现这类传输拓扑。应通过已注册 Tool 使用该能力，以保留应用 lease、敏感动作 confirmation 与宿主策略检查；不能把 `danger-full-access` 当作阻止直接 native 调用的保护。\n\n成功动作结果包括：\n\n```ts\nactivation: 'not-requested' | 'already-frontmost' | 'activated'\npointerInput: boolean\npointerRouting: 'none' | 'target-process'\nresolution?: {\n  mode: 'exact-locator' | 'native-identifier' | 'semantic-rebind'\n  confidence: number\n  candidateCount: number\n  targetChanged: boolean\n}\nagentCursor?: { visible: false; reason?: string }\neffect: {\n  observedStateChanged: boolean\n  observedForMs: number\n  note?: string\n}\n```\n\n`effect.observedStateChanged` 比较窗口 title、id、frame 与 Accessibility 元素树；它不证明变化由本次动作造成，也无法观察纯像素、瞬时、远端或其他外部效果。只有独立 Agent 光标本应显示却无法显示或验证时，结果才会出现 `agentCursor`。\n\n模型不能通过 Tool 参数覆盖这些宿主策略。\n\n## 模型 Tool\n\nBundle 初始只贡献 `computer_use_activate`。加载 Skill 后，才为当前 Agent 暴露聚焦的执行 vocabulary。\n\n<details>\n<summary>查看完整 Tool 列表</summary>\n\n| Tool | 用途 |\n|---|---|\n| `computer_list_apps` | 列出有界用户应用及 bundle id、pid、前台状态和权限诊断 |\n| `computer_observe` | 返回新鲜的 full/diff Accessibility observation 与可选截图 Artifact |\n| `computer_click` | 优先使用 `AXPress`；接受准确 index 或 opaque target handle，并可在目标进程坐标 fallback 前执行安全 rebind |\n| `computer_set_value` | 通过准确 index 或 opaque target handle 设置或清空可编辑 Accessibility value，不使用剪贴板 |\n| `computer_type_text` | 支持时通过 Accessibility 插入 Unicode，否则使用进程定向键盘 fallback |\n| `computer_press_key` | 向选定进程发送有限词表中的按键，并支持可选 modifier |\n| `computer_scroll` | 在已解析元素或窗口/屏幕坐标处向选定进程与窗口发送有界方向滚动 |\n| `computer_drag` | 在引用 observation 的窗口/屏幕两点之间拖拽 |\n| `computer_perform_action` | 执行准确或安全 rebind 后的选定元素所声明的 Accessibility action |\n| `computer_wait` | 轮询一个有界 text/role/title 条件，不修改应用并返回新鲜状态 |\n| `computer_confirm` | 获取绑定准确敏感动作的一次性 token |\n\n任何 Tool 都不接受 AppleScript、JXA、shell、Swift、Objective-C、native selector、任意 Accessibility constant 或源码。\n\n</details>\n\n## Observation、权限与敏感动作\n\nObservation 包含 opaque id 与过期时间、准确 app 身份、frontmost/window metadata、有界 tree text、带 opaque target handle 的当前元素、可选截图 metadata 和权限状态。Target handle 不暴露 provider object reference 或 native identifier。Secure text value 以 `[secure]` 输出，不会进入 target descriptor、tree text、Tool result、截图 metadata 或 native error。截图仍可能包含应用中其他可见数据，应按敏感数据处理。\n\n技术访问模型包含两类准确 bundle-id lease：\n\n- `read`：读取 Accessibility 状态和请求的截图；\n- `control`：向选定应用发送 UI 输入。\n\n没有配置 grant 时，DSH 会请求 approval。Read approval 在 Session 内有效，control approval 只在当前 turn 有效。用户拒绝后，该 app/scope 在当前 Session 内保持最终结果。\n\nBundle 把 Session 级 read grant 和被拒绝的 app/scope 决定保存在自己拥有的 `computer_use_state` storage-domain sidecar 中，并用 Session header 的 `createdAt` 与 `cwd` 绑定准确生命周期；它不会向官方 Session 日志新增 Computer Use event，也不会修改 DSH Core。Web Profile 已经组合 `@deepseek-ai/dsh-storage-domain`；自定义 Profile 如果需要交互式 read grant 或持久拒绝状态，必须在本 Bundle 之前组合它。Settings 中配置的准确 grant 在没有 storage-domain 时仍可使用；获准的 control 决定只保存在当前进程的当前 turn。需要持久化的交互决定如果无法保存，操作会明确失败，不会静默缩短或削弱授权生命周期。\n\nDSH `danger-full-access` preset 使用 `approval/policy: never`，因此未授权应用会在弹窗前被策略阻断。插件返回可操作的 `COMPUTER_PERMISSION_REQUIRED` 错误，并且不会把它记录成用户拒绝。请在 Computer Use Settings 中添加准确 bundle id，或改用 approval policy 为 `ask` 的 preset。\n\n高影响外部通信、敏感数据传输、不可逆删除、账户/安全/隐私变更、未经请求的安装、法律条款接受，以及超出明确授权的财务完成动作，都需要在执行前立即调用 `computer_confirm`。Token 有短 TTL、只能使用一次，并绑定准确 app、process、observation、target handle 与 action；grant 不能绕过它。只要 resolution 不再使用原 locator，该 token 就会失效，必须重新观察并再次确认。\n\n## macOS 权限与 native 完整性\n\nWeb Settings 分区展示 helper 完整性、Accessibility 与 Screen Recording 状态、当前 generation、interaction policy、限制和准确应用 grant。只有用户点击后，按钮才会打开相关 macOS 隐私页面；插件不能自行授予 TCC 权限。\n\nAccessibility 与 Screen Recording 是 UI 权限，不是文件系统权限。正常使用保持在 DSH `workspace-write` 下：截图留在 Session workspace，临时文件使用 Session 私有临时目录，Bundle 不要求 `danger-full-access`。\n\n仓库提交的 helper 是最低支持 macOS 14、ad-hoc 签名的 `arm64` + `x86_64` universal binary。[`native/macos/manifest.json`](native/macos/manifest.json) 固定其 SHA-256、源码 digest、架构与 deployment target。`pnpm run check:native` 还会检查只有目标进程指针路由，并拒绝系统光标 warp 或全局指针 post symbol。\n\n## 配置\n\n<details>\n<summary>查看 Bundle 配置字段</summary>\n\n| 字段 | 用途 |\n|---|---|\n| `observationTtlMs` | observation 允许复用的生命周期；默认 `0` 关闭过期，也可设为最大 `86400000` ms（24 小时）内的任意值 |\n| `confirmationTtlMs` | 一次性敏感动作 confirmation 的生命周期 |\n| `actionTimeoutMs` | `1000` 到 `120000` ms 的 native action 硬超时 |\n| `settleMs` | `0` 到 `10000` ms 的动作后状态检查间隔 |\n| `maxSettleMs` | `100` 到 `60000` ms 的动作后 settle 最大预算 |\n| `maxNodes` / `maxDepth` / `maxTextBytes` | Accessibility 遍历与模型可见文本上限 |\n| `maxScreenshotBytes` | PNG Artifact 最大字节数 |\n| `artifactRoot` | workspace 内的相对截图目录 |\n| `helper.path` | 可选的显式外部 helper executable |\n| `helper.allowSourceBuild` | 提交 helper 缺失时允许显式托管源码重建；默认 `false` |\n| `interaction.focusPolicy` | `preserve`（默认）避免激活目标应用；`activate` 显式允许激活，并要求重新观察/校验 |\n| `interaction.keyboardPolicy` | `preserve` 不激活地把键盘事件定向投递；`activate`（Bundle 默认）在键盘 fallback 前激活目标应用 |\n| `interaction.pointerInputPolicy` | `targeted`（默认）允许 pid/window 定向指针输入；`deny` 禁用 click fallback、scroll 和 drag |\n| `interaction.cursorVisualization` | `visible`（默认）显示独立 Agent 光标；`hidden` 只关闭 overlay，不影响输入 |\n| `interaction.cursorSpeedPxPerSecond` | Agent 光标期望最大速度；默认 `1600`，范围为每秒 `100` 至 `50000` 像素；极端距离/参数组合下优先遵守 48 至 2000 毫秒的移动安全边界 |\n| `interaction.cursorAccelerationPxPerSecondSquared` | Agent 光标加速度与减速度；默认 `6000`，范围为每秒平方 `100` 至 `500000` 像素 |\n| `interaction.cursorClickDelayMs` | 到达后、点击/拖拽按下反馈与原生输入前的停顿；默认 `90`，范围 `0` 至 `1000` 毫秒 |\n| `interaction.cursorAutoHideMs` | Agent 光标空闲后隐藏时间；默认 `0` 表示在目标保持前台且绑定有效时持续显示，也可设为最大 `30000` ms 内的有限值 |\n| `allowAllApps` | 向所有运行中的应用授予 `read` 与 `control`；默认 `false`。开启后忽略精确 `grants` |\n| `grants` | 准确、无通配符的 bundle-id read/control policy；`control: true` 隐含 read |\n\n</details>\n\n已弃用的 0.2.x `interaction.cursorMotionMs` 仍会被接受，确保旧 Settings 文档能够加载，但运行时会忽略它；下次通过 Web Settings 保存时会移除该字段。\n\nSettings 更新只有在校验与健康检查通过后才替换当前 provider generation；替换会使已有 observation 与待用 confirmation 失效。\n\n## 状态与限制\n\n- 状态：早期 `0.3.0`；稳定版本发布前，模型可见和 provider 行为仍可能变化。\n- 当前 provider 只支持 macOS；Windows UI Automation 和 Linux provider 尚未实现。\n- 在非 macOS 主机上插件会优雅降级：DSH profile 正常启动，不会注册 Computer Use 工具与 Skill，Web Settings 会显示 `COMPUTER_UNSUPPORTED_PLATFORM`，而不是让启动失败。\n- 目标进程指针投递使用动态解析的 SkyLight SPI。该路由不可用时，pointer fallback 会 fail closed，不会切换到全局输入。\n- 点击点必须落在选定应用的某个屏幕内窗口中；helper 会解析该点下最上层的匹配窗口，frame/title 匹配有歧义不再阻塞坐标动作。最小化、隐藏或无窗口目标会 fail closed。\n- 自定义 canvas、游戏、强化输入 surface 与未来 macOS 版本可能拒绝目标进程指针或键盘事件。应尽量优先使用语义化 Accessibility。\n- `focusPolicy: activate` 与 `keyboardPolicy: activate` 会有意打断前台工作，只作为操作方显式选择的兼容模式。\n- 目标应用可能因接受动作而自行改变 activation 或 focus。\n- 软件包按请求捕获离散 observation，不提供实时桌面流。\n- 浏览器工作应继续使用 browser automation，因为 DOM/CDP 状态更窄、更精确。\n- 公共 npm 包以 `@anionex/dsh-computer-use` 安装，可同时挂载到 Web 与 Headless Profile。\n\n## 开发与发布验收\n\n请把仓库放在 DeepSeek Harness checkout 旁边，让 TypeScript 与 Vitest 解析准确的 DSH peer declaration 和 runtime module：\n\n```text\nworkspace/\n├── packages/\n├── vendor/\n└── dsh-computer-use/\n```\n\n随后运行：\n\n```sh\npnpm install --frozen-lockfile\npnpm run build\nDSH_COMPUTER_USE_REQUIRE_TCC=1 pnpm test\npnpm run check:native\npnpm pack --dry-run\npnpm run validate\n```\n\n`pnpm run validate` 会运行 keyless local lane 和干净 Web/Headless Profile lane。真实模型发布 lane 需要 `DEEPSEEK_API_KEY`，并支持可选的 `DEEPSEEK_BASE_URL`：\n\n```sh\npnpm run validate:model\n# or keyless validation followed by the real-model lane\npnpm run validate:release\n```\n\n## 移除\n\n```sh\ndsh plugin --profile web remove @anionex/dsh-computer-use\ndsh plugin --profile headless remove @anionex/dsh-computer-use\n```\n\n移除或禁用 Bundle 会注销 Skill 与 Tool、取消 helper 工作、释放进程内 Agent observation、turn control grant 与 confirmation、关闭 storage-domain handle，并移除 Web contribution。已经生成的截图文件和插件自有的 `computer_use_state` sidecar 会保留，供用户显式清理。\n\n## 安全、社区与支持\n\n- 潜在漏洞按 [SECURITY.md](SECURITY.md) 私下报告。\n- 修改代码或文档前请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。\n- 安装、权限、配置和工作流问题见 [SUPPORT.md](SUPPORT.md)。\n- 在项目空间中遵守 [Code of Conduct](CODE_OF_CONDUCT.md)。\n- 版本记录见 [CHANGELOG.md](CHANGELOG.md)。\n- 维护支持方式见 [FUNDING.md](FUNDING.md)，赞助不购买 roadmap 控制权或私有支持。\n\n## 关于\n\nDSH Computer Use 由 [anionex](https://anionex.me/) 维护。如果你想了解我后续的更多工作，欢迎在 [X](https://x.com/anion_ex) 或 [GitHub](https://github.com/Anionex) 关注我。\n\n## 许可证\n\n[MIT](LICENSE) © 2026 anionex。\n","readmeFilename":"README.zh.md"}