{"_id":"@wxg-prc-cpg/browser-skill-dsh-plugin","_rev":"5-5a6e5632939a7d97709b776166a6fbf1","name":"@wxg-prc-cpg/browser-skill-dsh-plugin","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@wxg-prc-cpg/browser-skill-dsh-plugin","version":"0.1.0","keywords":["dsh-plugin","deepseek-harness","browserskill","browser-automation"],"license":"MIT","_id":"@wxg-prc-cpg/browser-skill-dsh-plugin@0.1.0","maintainers":[{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"}],"homepage":"https://github.com/Tencent/BrowserSkill/tree/main/packages/dsh-plugin-browserskill#readme","bugs":{"url":"https://github.com/Tencent/BrowserSkill/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-tool","@deepseek-ai/dsh-client-ui-layout"],"platform":"web"}},"dist":{"shasum":"2305d1fe078d8dc480ece85ce7c5142ab61a4362","tarball":"https://registry.npmjs.org/@wxg-prc-cpg/browser-skill-dsh-plugin/-/browser-skill-dsh-plugin-0.1.0.tgz","fileCount":7,"integrity":"sha512-o0VTR6e0M7dul2CPCuGQQK3KdUaMG1n7bfZlqnvDDwsJjS6ECbjdCsLO1KHoi1zwOeOaIVb2zs+Os7Bdo6rRBw==","signatures":[{"sig":"MEYCIQDlPoXfZnOnvZg9rpxb6uTLQE5s/iw3dBy0vweHDDg6AgIhAJBHO983pWocyn3/3NWTiJGUTO/M4vo4ttvE/7WCA3B8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277438},"main":"lib/index.mjs","type":"module","_from":"file:wxg-prc-cpg-browser-skill-dsh-plugin-0.1.0.tgz","types":"lib/index.d.mts","exports":{".":{"types":"./lib/index.d.mts","default":"./lib/index.mjs"},"./client":{"default":"./lib/client.cjs"},"./package.json":"./package.json"},"scripts":{"test":"pnpm run build:css && pnpm run build:skill && vitest run","build":"node scripts/build-client-css.mjs && node scripts/build-skill-content.mjs && tsdown","build:css":"node scripts/build-client-css.mjs","typecheck":"pnpm run build:skill && tsc --noEmit","build:skill":"node scripts/build-skill-content.mjs","lint:publint":"publint"},"_npmUser":{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"},"_resolved":"/tmp/fe873072017db62e44aa37239d903b18/wxg-prc-cpg-browser-skill-dsh-plugin-0.1.0.tgz","_integrity":"sha512-o0VTR6e0M7dul2CPCuGQQK3KdUaMG1n7bfZlqnvDDwsJjS6ECbjdCsLO1KHoi1zwOeOaIVb2zs+Os7Bdo6rRBw==","deprecated":"Broken plugin id in cordis.patch.yml prevents dsh from starting; upgrade to 0.1.1","repository":{"url":"git+https://github.com/Tencent/BrowserSkill.git","type":"git","directory":"packages/dsh-plugin-browserskill"},"_npmVersion":"10.9.8","description":"DeepSeek Harness tool plugin that exposes BrowserSkill (bsk) browser automation to the model","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tsdown":"^0.22.14","vitest":"^4.1.6","postcss":"^8.5.0","happy-dom":"^15.11.7","react-dom":"^18.2.0","typescript":"^5.8.0","@types/node":"^22.10.0","tailwindcss":"^4.3.3","@types/react":"~18.3.1","lightningcss":"^1.30.0","@remixicon/react":"^4.9.0","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^18.3.0","@browser-skill/ui":"0.1.0-dev.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-tools":"^0.1.0-rc.6","@testing-library/react":"^16.1.0","postcss-prefix-selector":"^2.1.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-tool":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-layout":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-tool":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"react":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-attachment":{"optional":true},"@deepseek-ai/dsh-client-runtime":{"optional":true},"@deepseek-ai/dsh-client-ui-tool":{"optional":true},"@deepseek-ai/dsh-client-ui-attachment":{"optional":true},"@deepseek-ai/dsh-client-ui-primitives":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-skill-dsh-plugin_0.1.0_1786967020465_0.4348620196611124","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@wxg-prc-cpg/browser-skill-dsh-plugin","version":"0.1.1","keywords":["dsh-plugin","deepseek-harness","browserskill","browser-automation"],"license":"MIT","_id":"@wxg-prc-cpg/browser-skill-dsh-plugin@0.1.1","maintainers":[{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"}],"homepage":"https://github.com/Tencent/BrowserSkill/tree/main/packages/dsh-plugin-browserskill#readme","bugs":{"url":"https://github.com/Tencent/BrowserSkill/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-tool","@deepseek-ai/dsh-client-ui-layout"],"platform":"web"}},"dist":{"shasum":"951bf65352c7f6a26f2d80b777e4e818386ae412","tarball":"https://registry.npmjs.org/@wxg-prc-cpg/browser-skill-dsh-plugin/-/browser-skill-dsh-plugin-0.1.1.tgz","fileCount":7,"integrity":"sha512-aUgC542hDJMBEVjqc/Bp7lVhUyLXHn5jDcWFw1+Zjxv7CzRYij6B0/DtoN/WRIvxUpdK1supNGbzxyLPcF1cpQ==","signatures":[{"sig":"MEUCIQC4NAZMSvPmGdGTwn/I2vaMMp2Edb8AJZsCUg+ouPvh8QIgfSteHWnCSD4IH720d9/ZaiT0K9GeBK0uZOiL695M3+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279368},"main":"lib/index.mjs","type":"module","_from":"file:wxg-prc-cpg-browser-skill-dsh-plugin-0.1.1.tgz","types":"lib/index.d.mts","exports":{".":{"types":"./lib/index.d.mts","default":"./lib/index.mjs"},"./client":{"default":"./lib/client.cjs"},"./package.json":"./package.json"},"scripts":{"test":"pnpm run build:css && pnpm run build:skill && vitest run","build":"node scripts/build-client-css.mjs && node scripts/build-skill-content.mjs && tsdown","build:css":"node scripts/build-client-css.mjs","typecheck":"pnpm run build:skill && tsc --noEmit","build:skill":"node scripts/build-skill-content.mjs","lint:publint":"publint"},"_npmUser":{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"},"_resolved":"/tmp/2d28db614a526803c5735658cdc2cb23/wxg-prc-cpg-browser-skill-dsh-plugin-0.1.1.tgz","_integrity":"sha512-aUgC542hDJMBEVjqc/Bp7lVhUyLXHn5jDcWFw1+Zjxv7CzRYij6B0/DtoN/WRIvxUpdK1supNGbzxyLPcF1cpQ==","repository":{"url":"git+https://github.com/Tencent/BrowserSkill.git","type":"git","directory":"packages/dsh-plugin-browserskill"},"_npmVersion":"10.9.8","description":"DeepSeek Harness tool plugin that exposes BrowserSkill (bsk) browser automation to the model","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tsdown":"^0.22.14","vitest":"^4.1.6","postcss":"^8.5.0","happy-dom":"^15.11.7","react-dom":"^18.2.0","typescript":"^5.8.0","@types/node":"^22.10.0","tailwindcss":"^4.3.3","@types/react":"~18.3.1","lightningcss":"^1.30.0","@remixicon/react":"^4.9.0","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^18.3.0","@browser-skill/ui":"0.1.0-dev.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-tools":"^0.1.0-rc.6","@testing-library/react":"^16.1.0","postcss-prefix-selector":"^2.1.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-tool":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-layout":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-tool":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"react":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-attachment":{"optional":true},"@deepseek-ai/dsh-client-runtime":{"optional":true},"@deepseek-ai/dsh-client-ui-tool":{"optional":true},"@deepseek-ai/dsh-client-ui-attachment":{"optional":true},"@deepseek-ai/dsh-client-ui-primitives":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-skill-dsh-plugin_0.1.1_1787113663083_0.7181102177572316","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@wxg-prc-cpg/browser-skill-dsh-plugin","version":"0.1.2","keywords":["dsh-plugin","deepseek-harness","browserskill","browser-automation"],"license":"MIT","_id":"@wxg-prc-cpg/browser-skill-dsh-plugin@0.1.2","maintainers":[{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"}],"homepage":"https://github.com/Tencent/BrowserSkill/tree/main/packages/dsh-plugin-browserskill#readme","bugs":{"url":"https://github.com/Tencent/BrowserSkill/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-tool","@deepseek-ai/dsh-client-ui-layout"],"external":["@deepseek-ai/dsh-client-ui-attachment","@deepseek-ai/dsh-client-ui-primitives"],"platform":"web"}},"dist":{"shasum":"4e13b7edc3a725d46aecb3a8e4d281f95eff0bcb","tarball":"https://registry.npmjs.org/@wxg-prc-cpg/browser-skill-dsh-plugin/-/browser-skill-dsh-plugin-0.1.2.tgz","fileCount":7,"integrity":"sha512-k6BeAN0SpuaBj0M62wQhcKjCN7Fk6K6NTzGc/5c6LnOW2EvfQxdBssdnKhn7lLyTN3qHktCTpTeJsHdQUcnnTg==","signatures":[{"sig":"MEQCIEFmUQoY+EjX6+wbsO6spgCw5yhBoD+VVuFSxjUWu2/nAiBMJ7EO+XgwR1ZwoxK1YnEep6dUISKOP9MnYQKql5g74w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":354227},"main":"lib/index.mjs","type":"module","_from":"file:wxg-prc-cpg-browser-skill-dsh-plugin-0.1.2.tgz","types":"lib/index.d.mts","exports":{".":{"types":"./lib/index.d.mts","default":"./lib/index.mjs"},"./client":{"default":"./lib/client.cjs"},"./package.json":"./package.json"},"scripts":{"test":"pnpm run build:css && pnpm run build:skill && vitest run","build":"node scripts/build-client-css.mjs && node scripts/build-skill-content.mjs && tsdown","build:css":"node scripts/build-client-css.mjs","typecheck":"pnpm run build:skill && tsc --noEmit","build:skill":"node scripts/build-skill-content.mjs","lint:publint":"publint"},"_npmUser":{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"},"_resolved":"/tmp/6d1f846e99d56ff310c52e80cb2beb4c/wxg-prc-cpg-browser-skill-dsh-plugin-0.1.2.tgz","_integrity":"sha512-k6BeAN0SpuaBj0M62wQhcKjCN7Fk6K6NTzGc/5c6LnOW2EvfQxdBssdnKhn7lLyTN3qHktCTpTeJsHdQUcnnTg==","repository":{"url":"git+https://github.com/Tencent/BrowserSkill.git","type":"git","directory":"packages/dsh-plugin-browserskill"},"_npmVersion":"10.9.8","description":"DeepSeek Harness tool plugin that exposes BrowserSkill browser automation (browser_* tools) to the model","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","tsdown":"^0.22.14","vitest":"^4.1.6","postcss":"^8.5.0","happy-dom":"^15.11.7","react-dom":"^18.2.0","typescript":"^5.8.0","@types/node":"^22.10.0","tailwindcss":"^4.3.3","@types/react":"~18.3.1","lightningcss":"^1.30.0","@remixicon/react":"^4.9.0","@tailwindcss/cli":"^4.3.3","@types/react-dom":"^18.3.0","@browser-skill/ui":"0.1.0-dev.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-scope":"^0.1.0-rc.6","@deepseek-ai/dsh-skill":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@testing-library/react":"^16.1.0","postcss-prefix-selector":"^2.1.1","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-tool":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-layout":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-tool":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6"},"peerDependenciesMeta":{"react":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"@deepseek-ai/dsh-attachment":{"optional":true},"@deepseek-ai/dsh-client-runtime":{"optional":true},"@deepseek-ai/dsh-client-ui-tool":{"optional":true},"@deepseek-ai/dsh-client-ui-attachment":{"optional":true},"@deepseek-ai/dsh-client-ui-primitives":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/browser-skill-dsh-plugin_0.1.2_1787991456919_0.8295626382175265","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@wxg-prc-cpg/browser-skill-dsh-plugin","description":"DeepSeek Harness tool plugin that exposes BrowserSkill browser automation (browser_* tools) to the model","version":"0.2.0","license":"MIT","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/Tencent/BrowserSkill.git","directory":"packages/dsh-plugin-browserskill"},"homepage":"https://github.com/Tencent/BrowserSkill/tree/main/packages/dsh-plugin-browserskill#readme","bugs":{"url":"https://github.com/Tencent/BrowserSkill/issues"},"keywords":["dsh-plugin","deepseek-harness","browserskill","browser-automation"],"type":"module","main":"lib/index.mjs","types":"lib/index.d.mts","exports":{".":{"types":"./lib/index.d.mts","default":"./lib/index.mjs"},"./client":{"default":"./lib/client.cjs"},"./package.json":"./package.json"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-tool","@deepseek-ai/dsh-client-ui-layout"],"external":["@deepseek-ai/dsh-client-ui-attachment","@deepseek-ai/dsh-client-ui-primitives"]}},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-tool":"^0.1.0-rc.6","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","react":"^18.2.0"},"peerDependenciesMeta":{"@deepseek-ai/dsh-attachment":{"optional":true},"@deepseek-ai/dsh-client-runtime":{"optional":true},"@deepseek-ai/dsh-client-ui-attachment":{"optional":true},"@deepseek-ai/dsh-client-ui-primitives":{"optional":true},"@deepseek-ai/dsh-client-ui-tool":{"optional":true},"@deepseek-ai/dsh-llm":{"optional":true},"react":{"optional":true}},"devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-attachment":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-layout":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-primitives":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-tool":"^0.1.0-rc.6","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-scope":"^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/schemastery":"^3.18.1","@tailwindcss/cli":"^4.3.3","@testing-library/react":"^16.1.0","@types/node":"^22.10.0","@types/react":"~18.3.1","@types/react-dom":"^18.3.0","happy-dom":"^15.11.7","lightningcss":"^1.30.0","postcss":"^8.5.0","postcss-prefix-selector":"^2.1.1","react":"^18.2.0","react-dom":"^18.2.0","tailwindcss":"^4.3.3","tsdown":"^0.22.14","typescript":"^5.8.0","vitest":"^4.1.6","@remixicon/react":"^4.9.0","@browser-skill/ui":"0.1.0-dev.0"},"scripts":{"build":"node scripts/build-client-css.mjs && node scripts/build-skill-content.mjs && tsdown","typecheck":"pnpm run build:skill && tsc --noEmit","test":"pnpm run build:css && pnpm run build:skill && vitest run","build:css":"node scripts/build-client-css.mjs","build:skill":"node scripts/build-skill-content.mjs","lint:publint":"publint"},"_id":"@wxg-prc-cpg/browser-skill-dsh-plugin@0.2.0","_integrity":"sha512-CwzoviH02P0mwKM7/7NDyurO0r243m4AuM2smgk8nIT6LEBXvt52pbU0RLM71jjHjldFwsJZQoQvJibiVVK51w==","_resolved":"/tmp/1efc6f5ae29267776faa702106b54f59/wxg-prc-cpg-browser-skill-dsh-plugin-0.2.0.tgz","_from":"file:wxg-prc-cpg-browser-skill-dsh-plugin-0.2.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-CwzoviH02P0mwKM7/7NDyurO0r243m4AuM2smgk8nIT6LEBXvt52pbU0RLM71jjHjldFwsJZQoQvJibiVVK51w==","shasum":"2c3eb95b8aa94b0458d6da84500b831a48ee6e8a","tarball":"https://registry.npmjs.org/@wxg-prc-cpg/browser-skill-dsh-plugin/-/browser-skill-dsh-plugin-0.2.0.tgz","fileCount":7,"unpackedSize":353089,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDEryo33x3x1gN7K6xeXeexT1a0mVr08qUiayRG3+QeswIgZ74UpMUpeRNsdL1m+Q4RQReOgHaWXLUQ4owJs2A5gGg="}]},"_npmUser":{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"},"directories":{},"maintainers":[{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/browser-skill-dsh-plugin_0.2.0_1788406670930_0.08808998129389778"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-17T11:43:40.257Z","modified":"2026-09-03T03:37:51.197Z","0.1.0":"2026-08-17T11:43:40.597Z","0.1.1":"2026-08-19T04:27:43.237Z","0.1.2":"2026-08-29T08:17:37.049Z","0.2.0":"2026-09-03T03:37:51.053Z"},"bugs":{"url":"https://github.com/Tencent/BrowserSkill/issues"},"license":"MIT","homepage":"https://github.com/Tencent/BrowserSkill/tree/main/packages/dsh-plugin-browserskill#readme","keywords":["dsh-plugin","deepseek-harness","browserskill","browser-automation"],"repository":{"type":"git","url":"git+https://github.com/Tencent/BrowserSkill.git","directory":"packages/dsh-plugin-browserskill"},"description":"DeepSeek Harness tool plugin that exposes BrowserSkill browser automation (browser_* tools) to the model","maintainers":[{"name":"wxg-prc-cpg","email":"wxg_prc_cpg@tencent.com"}],"readme":"# dsh-plugin-browserskill\n\nnpm: [`@wxg-prc-cpg/browser-skill-dsh-plugin`](https://www.npmjs.com/package/@wxg-prc-cpg/browser-skill-dsh-plugin)\n\nA [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh) tool plugin that exposes\n[BrowserSkill](https://github.com/Tencent/BrowserSkill) (`bsk`) browser automation to the model.\n\nEach action maps to one `bsk <cmd> --json` invocation: the plugin spawns the bsk CLI, parses its\nstructured JSON output, and returns a canonical typed value. The bsk daemon, browser, and browser\nextension keep owning the actual browser control — this package is a thin, well-typed bridge.\n\n## Tools\n\n| Tool | Actions | Purpose |\n| --- | --- | --- |\n| `browser_session` | `start`, `stop`, `list` | Manage plugin-owned Agent Window sessions. |\n| `browser_page` | `navigate`, `back`, `forward`, `reload`, `wait` | Navigate the active tab and wait for page lifecycle events. |\n| `browser_inspect` | `observe`, `snapshot`, `html`, `screenshot`, `console`, `network` | Read semantic or diagnostic page state and capture screenshots. |\n| `browser_interact` | `click`, `hover`, `fill`, `select`, `press` | Interact with controls using fresh refs or selectors. |\n| `browser_tabs` | `list`, `create`, `select`, `close`, `borrow`, `return` | Manage Agent Window tabs and temporarily borrow user tabs. |\n| `browser_assist` | `resize`, `emulate`, `request-help` | Resize or emulate the browser and pause for human-only steps. |\n\n`bsk evaluate` and `bsk record` are intentionally not exposed by this plugin: arbitrary page\nevaluation is a higher-risk capability, while recording is long-running and needs a dedicated\nDeepSeek Harness lifecycle before it can be added safely.\n\n## Agent skill (progressive disclosure)\n\nBeyond the tools, the plugin publishes the **`browser-skill` agent skill** through the harness's\nofficial skill seam (`ctx.skills.register`): the catalog entry (name + routing description) is\nresident in `<available_skills>`, and the body is loaded only when the model invokes the `skill`\ntool. Its single source is the DSH-specific `skill/SKILL.md`, which documents only structured\n`browser_*` calls and their plugin semantics. The repository-root CLI skill is intentionally not\nconcatenated: its command examples belong to a different execution interface and would bypass\nthe plugin's ownership, live observation UI, cancellation, and cleanup path if followed directly.\nThe build rejects internal CLI-name leakage, command-line code blocks, unknown browser tools, and\nmissing supported browser tools before embedding the Markdown. Registration and every pre-step\ncatalog snapshot are pure in-memory reads (no disk/process/daemon); compositions without the skill\nseam degrade silently.\n\n## Multi-session model\n\nOne agent conversation can drive several browser sessions at once:\n\n- `browser_session` with `action: start` returns the session id and makes it the **current session**.\n- Every operation tool accepts an optional `session` argument. When omitted, the call acts on the\n  current session (the one most recently started or used); when given, that session becomes current.\n- Every tool result echoes the session it actually acted on, so the model never has to guess.\n- The number of concurrent sessions started through the plugin is capped (`maxSessions`, default 5).\n- Unloading the plugin stops every session it started and kills in-flight bsk processes.\n\n**Ownership boundary**: the bsk daemon may be shared with other agents, terminals, or dsh\ninstances. The plugin therefore only ever sees and operates on sessions it created itself —\nan explicit `session` argument naming a foreign or unknown id is rejected, the `list` action on\n`browser_session` shows plugin-created sessions only (no daemon-wide view), and stop/unload cleanup\ncan never touch a session owned by another program.\n\n## Installation\n\nThe plugin follows the standard dsh bundle layout (`dsh.bundle` manifest + `cordis.patch.yml`):\n\n```sh\ndsh plugin --profile <name> add @wxg-prc-cpg/browser-skill-dsh-plugin\ndsh --profile <name>\n```\n\nPrerequisite: the `bsk` CLI must be installed and on `PATH`, and the BrowserSkill browser extension\n(Chrome or Edge) must be connected — see the\n[BrowserSkill README](https://github.com/Tencent/BrowserSkill). When bsk is missing, tool calls fail\nwith install guidance instead of a bare spawn error.\n\n## Configuration\n\nAll fields are optional and validated through the plugin's Schemastery `Config`:\n\n```yaml\n# cordis.patch.yml override example\n- insert:\n    - id: browserskill\n      name: \"@wxg-prc-cpg/browser-skill-dsh-plugin\"\n      config:\n        bskPath: bsk          # path to the bsk binary (default: resolve from PATH)\n        defaultTimeoutMs: 120000\n        maxSessions: 5\n        # observationEnabled: true     # live PiP/overlay observation (below)\n        # thumbnailIntervalMs: 1500    # frame cadence while a session is active\n        # idleIntervalMs: 8000         # idle cadence / recent-activity window\n        # lazyTools: true              # reveal browser_* tools only after the skill is invoked\n```\n\n- **`lazyTools` (default `true`)** — the final progressive-disclosure stage: the six\n  `browser_*` tool schemas stay OUT of the system prompt (zero schema tokens) until the\n  `browser-skill` skill is actually invoked — the skill catalog entry is the only\n  advertisement. One successful invocation (model tool call, or a `/browser-skill` user\n  gesture) registers the whole suite for the rest of the process; repeated invocations are\n  no-ops, and sessions resumed with a past invocation in their durable log reveal the suite\n  on entry. Set `false` for the legacy always-on registration.\n\n## Observation overlay (PiP mini-window)\n\nWhen the plugin runs inside the dsh Web UI, an **observation overlay** floats over the app\n(registered into the `shell.overlay` seat): a breathing thumbnail per owned session plus its\ncurrent action and elapsed time. The card docks at the top-right of the content area (clear of\nthe composer and the shell's header controls) and wears the **BrowserSkill product family's own\nlook**: the overlay reuses `@browser-skill/ui` components (`Button`, `cn`) and its oklch design\ntokens (`--card`, `--primary`, `--destructive`, `--ring`, …), status dots spec'd after the\nextension popup's connection indicator, and Remix icons. The BSK utility sheet is compiled\nscoped under the `.bsk-obs` root class (`scripts/build-client-css.mjs`), so the overlay looks\nlike the BrowserSkill extension without leaking a single selector into the host shell — and the\nshell's theme cannot bleed back in.\n\n- **Lifecycle**: hidden while the plugin owns no sessions; appears on the first\n  `browser_session` start action; disappears when all sessions stop (or the plugin unloads).\n- **Focus view**: status row (green/idle/red dot + session + action + mm:ss), the latest page\n  frame (refreshes every ~1.5s while active, ~8s when idle; the last good frame stays on\n  stage while the next one loads, and is kept on errors so the card does not flash),\n  and a compact icon toolbar (Interrupt + Pop out, hover for the label).\n- **Interrupt**: one click kills the in-flight bsk command of the focus session (same semantics\n  as the chat Stop button — the current action fails, the agent run may continue). Strip items\n  carry their own hover interrupt button.\n- **Multi-session strip**: every session gets a tile (mini frame + id + status dot); focus\n  auto-follows the most recently active session; clicking a tile pins focus (pin badge, click\n  again to release); errored sessions get a red edge without stealing focus; sessions the daemon\n  lost are greyed out; prolonged daemon/browser outage shows \"browser unavailable\" and greys\n  the interrupt button until captures recover.\n- **Drag & resize**: drag the header to move the card; drag any of the four\n  corners to resize (min 240×180, max 80% of the viewport; no visible grip).\n  Both are remembered for the page lifetime.\n- **Pop out (PiP)**: upgrades the card into a native Document PiP window (requires a user\n  gesture, per browser rules), sized from the current card; closing the PiP falls back to the\n  in-page card with state intact. Browsers without Document PiP simply hide the button.\n- **Wire**: the host serves `GET /bsk-observation/state`, `GET /bsk-observation/events` (SSE),\n  `POST /bsk-observation/interrupt`, and `GET /bsk-observation/thumbnail/<attachmentId>` over\n  the dsh `webServer` route seam (dsh 0.1's Typert Remote pipeline is closed to out-of-tree\n  packages). All commands for one session — tool calls and frame captures alike — run through a\n  per-session FIFO, because the daemon accepts only one unfinished command per session.\n- **Trust model**: these routes expose live screenshots (and an interrupt write), so they\n  replicate the browser-trust fence dsh applies to its own `/api` routes: the request Host\n  must be a loopback authority (`localhost`, `127.0.0.0/8`, `[::1]`), a present Origin must\n  match the Host, `sec-fetch-site: cross-site` is refused, and POST requires an\n  `application/json` body (cross-site simple requests can never satisfy that). The channel is\n  therefore built for **loopback-only serving** — binding the dsh web server to `0.0.0.0` and\n  reaching it through a LAN address will (deliberately) fail the fence; do not put these\n  routes behind a non-loopback reverse proxy without adding your own authentication.\n- Configure with `observationEnabled` / `thumbnailIntervalMs` / `idleIntervalMs`.\n\n## Behavior notes\n\n- **Cancellation**: aborting a tool call (`exec.signal`) kills the underlying bsk child process,\n  matching BrowserSkill's cooperative tool-cancellation model.\n- **UI cards**: calls render as terminal cards (command line as title, output as the completed\n  card). Screenshots additionally attach the image itself when the host mounts an attachment store\n  and the active model route declares image input; otherwise the PNG path is returned.\n- **Web UI toolview (browser half)**: the package is dual-face. `dsh.client` (platform `web`) ships\n  `lib/client.cjs`, which registers a keyed `tool.call.toolview` view for `browser_inspect`. The\n  custom view keeps a terminal block for every inspect action and, when a screenshot result carries\n  an image block, resolves the durable attachment through the client session's authorized\n  `readAttachment` RPC and renders it with the shared `MessageImage` thumbnail/lightbox atoms.\n  The other five tools keep the stock terminal card. The bundle follows the dsh client\n  contract: a CJS closure factory handed to `window.__ModuleLoader__.load`, platform modules\n  (`react`, `dsh-client-ui-*`) external, everything else inlined, CSS Modules compiled by\n  lightningcss.\n- **Errors**: non-zero bsk exits surface the CLI's JSON error envelope (`code`, `message`, `hint`)\n  so the model gets the daemon's actionable guidance.\n- **Long-running work** (e.g. `bsk record`) is not backgrounded via `ctx.jobs` yet — tracked as a\n  follow-up.\n\n## Development\n\n```sh\npnpm install\npnpm --filter @wxg-prc-cpg/browser-skill-dsh-plugin typecheck\npnpm --filter @wxg-prc-cpg/browser-skill-dsh-plugin test     # unit tests mock bsk; no browser needed\npnpm --filter @wxg-prc-cpg/browser-skill-dsh-plugin build    # tsdown -> lib/\n```\n\n## Publishing\n\nThe GitHub Actions workflow **Release dsh plugin** publishes this package to npm\nas `@wxg-prc-cpg/browser-skill-dsh-plugin`. The Cordis plugin id, client\nbundle registration, and `cordis.patch.yml` name are the same specifier so\ndsh can import and materialize the plugin without a ModuleLoader id mismatch.\n\nTrigger it by pushing a tag that matches `package.json`'s `version`:\n\n```sh\ngit tag dsh-plugin-v0.1.2\ngit push origin dsh-plugin-v0.1.2\n```\n\nOr run the workflow from the Actions tab (`workflow_dispatch`). The job reads the\n`NPM_TOKEN` secret from the `npm-publish` GitHub Environment.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}