{"_id":"@dsh-earhartzhao/dsh-mobile-plugin","_rev":"39-f913cd9c0d2eb3aa97099b61554026fd","name":"@dsh-earhartzhao/dsh-mobile-plugin","dist-tags":{"latest":"0.2.46"},"versions":{"0.2.27":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.27","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.27","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"b64322f7916aa57a4d2a4c0bb771ff22cae6c33b","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.27.tgz","fileCount":29,"integrity":"sha512-Xz/SKgca+jjlPsqVUBAnbrWg7A7383ub6MvqElhSw1jf7MJ0H9DgK8GKnx9BMqSD1eYocXVLXj+6jGWpz5RdzQ==","signatures":[{"sig":"MEYCIQCqoRZlO8YkUISfy6a+ZQsBiQIo2jdDGwAZUCEy3lf8hwIhAKAHmIkmVcav+D5bUONnF20y/A9UFGT6ydR73RGZoKgc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372301},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"b10642b3512668903583fde32520731f28bde812","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"11.11.0","description":"dsh-mobile bridge: NATS outbound bridge plugin for deepseek-harness (mobile client transport, pairing, device tokens)","directories":{},"_nodeVersion":"24.14.1","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.27_1791191974120_0.8561663650253251","host":"s3://npm-registry-packages-npm-production"}},"0.2.28":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.28","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.28","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"9620f4d4070d03f96904bbe066b4123ebe7a2087","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.28.tgz","fileCount":29,"integrity":"sha512-5rdNCxY3HujQHGhUsW54PYYlGJFOvESolghvhPgdpPpGdUvi5tPc2akMkbpK/kDIu0yjj5TtYBxxgcMHM/4R6g==","signatures":[{"sig":"MEQCICDfVmFtEPdQ5z7b7mRaz6xq+qH3kzN7tTF7wgTc2duKAiB6HA0qmgXdUrdKJJQ4aYWrNtXk8J9KRNX4z0VdNoknpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHcKZJkbe7Q0G9F53zSezcwuhoYDC4qdzkai2Qdo8tntAiEA/EysJcvbq7IVy6Y7fo1XCpctqwNyQaFejTH30ja4k6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375818},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"0439bc757efbda29aa89ee35b500099d258a9281","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"dsh-mobile bridge: NATS outbound bridge plugin for deepseek-harness (mobile client transport, pairing, device tokens)","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.28_1791194017268_0.9742473313553832","host":"s3://npm-registry-packages-npm-production"}},"0.2.29":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.29","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.29","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"7bc34067cd559d5a78e4f4b1c89b7ad389325d64","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.29.tgz","fileCount":29,"integrity":"sha512-SEUY5god9UJ8Td/Jo0PEi0RcI7MyXEW5tBFpDDALkLvBhnRaEptv6SI/rEa7t6R6TkSzygg3fKPHXKWPq2wKCw==","signatures":[{"sig":"MEUCIDYs7WsENmg1rQKtMNfUNzDdVb3f+2z9KXniooUtmZe0AiEA0+kwXA5ppG5EewVnLGKAg5gYiJ+J5Oy165uP5ADc5VA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD6EzjFsPlk3Djt5LnRlfWnY3u1WO24fCmH50h1XE2YxQIgWtXEyQwlEHnrYvjAQaDDRqHO4wXySeINfdYX0ZH8xUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":390151},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"5208a0765a7021a07af13ae0932d65933e6b017a","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"dsh-mobile bridge: NATS outbound bridge plugin for deepseek-harness (mobile client transport, pairing, device tokens)","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.29_1791195123613_0.48804232130297787","host":"s3://npm-registry-packages-npm-production"}},"0.2.30":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.30","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.30","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"64b6ddfc1822e8350ac571eb7f943d8261892dcb","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.30.tgz","fileCount":29,"integrity":"sha512-8DAg5H6ZBRFcMhk46iL2YiHbapzOPk/Lg6jYZxv81TXPxsRgvZlWL6UKn/59wtT8RyAG14nqmyY6s062bLrhmA==","signatures":[{"sig":"MEUCIQD1O2RiC+udHs5v8SezuhmwLSxALoGg6AECN7/GOcLtBwIgD3+S6Gxlp332Yi9i3hYcQmJlaYVs4vDKBGuTTa0E+9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFJa5t/9ACxmio1+uINO8bm9CKKitZOe2GiZKwak6cNsAiAswx7bQb8QIrEuM7eyItthM7B0fZiSmHGUXZqN8JYYpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":391261},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"b675d5ca663120cd4896fde4bf9c11443915023c","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"dsh-mobile bridge: NATS outbound bridge plugin for deepseek-harness (mobile client transport, pairing, device tokens)","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.30_1791195590092_0.9953519198208054","host":"s3://npm-registry-packages-npm-production"}},"0.2.31":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.31","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.31","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"72882e2e2cbb5160fa95458bbda5ca00ac3ac589","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.31.tgz","fileCount":31,"integrity":"sha512-66mK7FvepPYy/5bQz+a0HqDESFPXBAIOgmj9bX+QO1sli1K1AjQlhOtqMhG6XoBQBCtFQDlPZTMwnroWv2uErg==","signatures":[{"sig":"MEYCIQCWvKPJIKza4CZnepyVRSIQ2wz7XlqNeug+0NglHbIaYAIhANVp6nAPKge5WfKoamaiwVq7fRbaND1WrujLun3eNPqb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCfizMpuQzbtkxkNGCrnYq7fxpfpVhofaj1tV5t10zODAIgEMPYa3/9ONd/8zdTrs8KuHo6yYRDCdx12idtwG74Dns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":399126},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"dad6e2a90256621be01a4dd140d592d8a4e9a85b","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"dsh-mobile bridge: NATS outbound bridge plugin for deepseek-harness (mobile client transport, pairing, device tokens)","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.31_1791247410393_0.3488243845447143","host":"s3://npm-registry-packages-npm-production"}},"0.2.32":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.32","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.32","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"f3dbd26e8917e43a742549c658016b150d7dca2b","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.32.tgz","fileCount":31,"integrity":"sha512-gWL2p7ipQ5+bWxXlev9KEQ0MmrS0DiwuWApHtVeYMme5aQ5iqGC+u2DdTDC6wuzha85Bahs5Z+Zxx8tKBOtHNA==","signatures":[{"sig":"MEUCIQDsyr3OETKwJE5H5cpWeNQ3lYJmIuz5nNhGFTnd9lwIWwIgIsSNu9a8yDgMEhoxDd/W9DMNNP+s8xTkTnTkX0S/q24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDYlpJRSLXGa7t1c1fXXV+bFCKapw9CxqOKM3MxIKfAjwIhAMW3MJrTVqQdEWNowHOMclmmcvKuAQeG2OdHXdc7xoht","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400293},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"ac0318571d6df6b3abab2e9a778431792f70f117","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"dsh-mobile bridge: NATS outbound bridge plugin for deepseek-harness (mobile client transport, pairing, device tokens)","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.32_1791247681557_0.20591983835066463","host":"s3://npm-registry-packages-npm-production"}},"0.2.33":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.33","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.33","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"74613fb27d035f2402f9bf09b5264e7a3b0dcc5f","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.33.tgz","fileCount":31,"integrity":"sha512-nm0wjsD73NYRNkFdHAyxUaieTAjxgULrOmURa99wzcqz+QLQFWQSlu29LPtXMD9Ym1+XsQQqAANq/cGShySHaQ==","signatures":[{"sig":"MEQCID7uRScZ4DmV/THbg8QSRh8l5tyFcA5ANWKr4mf4rKoJAiAm1AjrAdGx/ZmbyBzVUh11+DoUfN6iAk5F1mBIkNSIVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBieCN3y1KcQw7nuSlF0iDU9f76DEfz5Ol1N60SLVm12AiAL0QNnXW+uPeDnMbanbCPfqVaTbgT8/Y3JSGqzDb2trQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402255},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"20cd1620bf569fccecd6f0ad95184d98ef5f6007","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"dsh-mobile bridge: NATS outbound bridge plugin for deepseek-harness (mobile client transport, pairing, device tokens)","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.33_1791248848597_0.08007741036587812","host":"s3://npm-registry-packages-npm-production"}},"0.2.34":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.34","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.34","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"d2c2c697376c33c4ff7ea912e40d5204277f59ea","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.34.tgz","fileCount":31,"integrity":"sha512-iUO7Ti8QZAjp8AQ9kJq8Fy5vcjSXvfzGXdrs+YPaua+J3bpnaqzQBbzL2ybdlPmeo4ZhHCC5hwyOlfkG+BMo5Q==","signatures":[{"sig":"MEQCIFtth1Q62q9gbHL/DJQfV8ZBpT8JRwOJlp8cAtamgTHnAiAYjjLP/wQ+zy9nM2a474KaJiQzYqQdJC6opMWtwtzVKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA3TG4z5ehA95SSXFHvMGookkEhdXwxNiEC80zKCTDKrAiEAzvwra8f9ay+pM5vBbDEXAefGqfsazNmSGpfxoAJNFRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407304},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"77321dc04d7ee52145eb9f11c38af628bd0d79a2","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"dsh-mobile bridge: NATS outbound bridge plugin for deepseek-harness (mobile client transport, pairing, device tokens)","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.34_1791249290124_0.661619592480573","host":"s3://npm-registry-packages-npm-production"}},"0.2.35":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.35","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.35","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"810b364b3229c89cc24864b2fb2518c00db47f95","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.35.tgz","fileCount":33,"integrity":"sha512-qUGlgTWV0p9NgRjHkvfLN6Tl6Ql99AdiUifguSskPHGW5bbmfmmoB/AQedn7ghl2w9Opw1HGNJxcZmuZXwQeYQ==","signatures":[{"sig":"MEYCIQDTkrosXGHi2NtMchK1v3OCyuxm+vt4S0wKYonN9N7f7QIhAKpKNLj6kBRoHXg2hlDWdzHd4TyMcl2Uh2lJvorhU9iL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+TRL2Fj9/PG7TiTWfD+ZKh5ELKAIfAMNCgUn651Dl3AIhAIHjwAUc3fNR8EFCO52ClIOk/j9B/P7ggB36i0iR37yY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":587473},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"120e5abcac85cba4b1560195d0df960ac999213b","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.35_1791264740207_0.6297347554066015","host":"s3://npm-registry-packages-npm-production"}},"0.2.36":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.36","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.36","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"9cf651841e1e885ae81526ef33e52c137d210883","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.36.tgz","fileCount":35,"integrity":"sha512-4+ILqR8coGDuEJr7TVm+yuuLK7/EFYqhd6sLye2v5cje+bpIAxR9BwiVwpvI6JiPb+EnJT5nuv5wTEr47z2Rlw==","signatures":[{"sig":"MEUCIQDWvS6LAmtesDA7owXJhJG/+dcPZ8AxL5936uB+IewaWAIgQ7xSZueNMfjhDx/w2qA1v+2fK3rQH7PNpmFWGW5gzgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBmfcqj4xoraUnaPa5bVe3i8pEhIZjeV2co/Puxh9+6DAiEAulxRsD0s5KIXfyTERXQ3pYwIe3UJQEbu6Zzc9FignZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":633286},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"f9faec379c884d964fed2d7b236c525efb923240","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.36_1791275914441_0.38574919060698565","host":"s3://npm-registry-packages-npm-production"}},"0.2.39":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.39","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.39","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"e69707f80091e57790cabbc3af6493d39e1f3148","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.39.tgz","fileCount":35,"integrity":"sha512-9iJiUlxHfgKYJKb/PZNaxmDuUQioCENmbeDtB9f2HPnlo8Rgn9SkOBR+/rFzXstffVgfGU++6mx/zf2bGJomAw==","signatures":[{"sig":"MEQCIF181yzcQGxDqFv5E+9pjhXBXsN5QAMOdP3v+qpcNDJpAiBWBVa5QjyC5zkkDZsMGKMyM/Dc1XTPpMiohim3u2U1Kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDgI7AUTGC8LPinXY4AgSi6Eh0d4SLfEy33GnEpP06sdQIhAOqkzPZCMlFLAMWEDi/Uz8HfArWxNFsfIQO16yHDwe4E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":657158},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"20a3618b0ae12addd12f549bd052459ac3311b61","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.39_1791513460316_0.10843610179996199","host":"s3://npm-registry-packages-npm-production"}},"0.2.40":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.40","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.40","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"80d96032b058b43105c9bb3280a39cc5a200a3f0","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.40.tgz","fileCount":37,"integrity":"sha512-MU9VnQV/Xcy4V3D6kLeuFJdZDOPyNGW/uBhK8dMrfMXTJGHGC6p8u8DGcpQBJdWOYOyzZFcL8EG0hHEC577vuQ==","signatures":[{"sig":"MEUCIB9mea4pkveORUqHomA9Rzp+7gHDAMRX3WDXZ+GqI3FyAiEA8Z+ZWb7ZBHT10jrrHe6mj8RXr7SoDizZYDdwx+T6ygc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFPxaH4UU8G5haDIw1t1B21vBfTegKPOGjnhLmdMIDAcAiEAj/NeqfInjnB3Be0/TCadgKGoSAUHb6jOubN5zb0XNV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":682008},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"78e35513f4a7bd37378759d634fbfec2033b8284","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.40_1791531717925_0.48027545522052906","host":"s3://npm-registry-packages-npm-production"}},"0.2.41":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.41","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.41","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"8f2900af9b4ad67489c4fc5f087faa369849640a","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.41.tgz","fileCount":35,"integrity":"sha512-esVTFn7zBRqvhuQFA7i0OBss1untZhYW24ItbTxu9D5EjQ8afASHSyYhMtzf89XYk9ZwCFIfQSt0gugFhjS/YA==","signatures":[{"sig":"MEUCIQCuul+6ucE26K3EGTNzR1iNn9ZdpEw2TzRqcJRYF01zbgIgFg7LJQn3Dk3XZe4StXLhmbAgCvLP31k7fcri9Ld6rJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDH7o5raKagacsFKoYjqTwsnBN5KzQRUzezwVyWw8c5JgIgb5JCEa6l2giJeMtfAQGRO2BLl4MbfBybQbY0ypMScSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":661036},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"9dee9cc4cdfa6a51247b6a5f3996327265962c09","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"deprecated":"线上只保留 0.2.42：这个版本已停止维护，请装 @dsh-earhartzhao/dsh-mobile-plugin@latest","_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.41_1791535272151_0.33037575423879195","host":"s3://npm-registry-packages-npm-production"}},"0.2.42":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.42","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.42","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"54cf7955953f19c3a551f42df9e576be961ce6bf","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.42.tgz","fileCount":35,"integrity":"sha512-pZBTS9uM/hsvXI9rX2w7nQ4Vu1N8RcjeU/wMin16HISdSozCAqm4uaUT6erolBFvpM1BlPaW/kNGnD7kxio91Q==","signatures":[{"sig":"MEQCIBpPG9tIKleKVhGo+TsnzhjGW4wIh5jXOcySrJyZyhnkAiAYeQZdukWBAUuw2Z0p3zICvP4K82o+WER/we8s0KNf/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCJI6FcwUlS4/0EmQH+TrZpXkm70HdgYZL1ubv+w+tVSQIhAIkIgj5t7zBChAy0el/jMHBEBpCfPb9bLwQb8IT/tny1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":664056},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"4d468aae2d77759a32c2b5743cfb4cf0047e5fc9","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.42_1791536978499_0.7432098477128237","host":"s3://npm-registry-packages-npm-production"}},"0.2.43":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.43","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.43","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"60b1dd9990bc85d9b572995bee48349680900535","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.43.tgz","fileCount":37,"integrity":"sha512-UFnRqPvmqry0ODIDiDZq7NleqUadMBY5OeEK8Tgro3u2VLX7Kt55RATg46RnPEl2e/gud9KwFe5pys0uIudHew==","signatures":[{"sig":"MEQCIGrRBmQsvR7sbiIxqbSifccr1ukqcY7aUQr/TOUghaDhAiACfTkewHYqFk4q6lmDa0QtZkxMI4kScrkjAeABt8tjsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCuHZ+8bzIO36unqVsk0GzH0Y7OP6pcMNtdhqU50taZEQIhAN4c98r39AENgeupwrUiwWGfPd356wAiJbKEmWhD9uGd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":669609},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"fee82ef1531970a650c08f0dbca40c4e567bd6ff","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.43_1792394229367_0.4382882960160157","host":"s3://npm-registry-packages-npm-production"}},"0.2.44":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.44","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.44","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"f27dea867ffaadcca9e8f3a7f496c7217b6850c8","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.44.tgz","fileCount":37,"integrity":"sha512-K5X6RC/tSdaqsC9f7suF716GdbPzdPZTHSVRU2HnuLQfqbVVh2Mvr1Bj44LJWJrhJVsSt9106NutF6q17ab1Hg==","signatures":[{"sig":"MEQCIAJddZd6R9SDDMfg3G07XJ1pADGflhe77cJPDktVsfM0AiBxuDLVLw67/JPtT2aP5foDkAYhlvAvy+IeO23ccGZcdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD7cURaSbC/FpplI45gx6p1g/qLLavGxUOEZt+sN2tR3AIgMLr9/DczvWGrfz6ol/12YuWXdv8MUcPDsd5VqbFD/Ug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":671316},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"68c48322f6d089e34fd94d668c89215bc9d887e5","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.44_1792477153796_0.19143780165381208","host":"s3://npm-registry-packages-npm-production"}},"0.2.45":{"name":"@dsh-earhartzhao/dsh-mobile-plugin","version":"0.2.45","license":"MIT","_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.45","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"c75447e9a753189292985b582f86371f8d95da2a","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.45.tgz","fileCount":37,"integrity":"sha512-ndUTVy8cQrNPJWchPpZTrQHG4CuREzatqr3Dp/9Scr6GDJINBb+qRTaVmQhyznU8zDU7xEQzvNFp5AnGAIa2wQ==","signatures":[{"sig":"MEYCIQDphyQteKfr+8Y0Z9uE6aMaAmxCiQ802CGsWcQqbS3KagIhALAJV+/aPGK7MytZKA+NvPUijnkrHhsa16weIdvXUE4r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICzyZC2Phcbn7zL6vkw+bUeWSnODNLW6p3ZgWkxEo27DAiEArEjVLigmvmJuSs1cxbRw6VvvOHMsb9g64A0qrmE+mi8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676497},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"d0e8808f51c39b02d91fb7d1f9fc4cf48c5e0bca","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mobile-plugin_0.2.45_1792481979171_0.3861936998653339","host":"s3://npm-registry-packages-npm-production"}},"0.2.46":{"_id":"@dsh-earhartzhao/dsh-mobile-plugin@0.2.46","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-plugin-manager"],"platform":"web"}},"dist":{"shasum":"479993d95bde5b15f5616a670f7c313c9a8df1fa","tarball":"https://registry.npmjs.org/@dsh-earhartzhao/dsh-mobile-plugin/-/dsh-mobile-plugin-0.2.46.tgz","fileCount":38,"integrity":"sha512-VOL12uOxvTt/v2K4yBrpYFdM7CbMRIj/NTGCVOsJ0+zMc4xScv4jKKxFD/FiYvoRn97QyrL6L8OGEnctZMr4Ag==","signatures":[{"sig":"MEYCIQDUrF9TY6L4TxvAegGYU6vqxDwyTSkyy6pkxOSB4UylUQIhAOoy8rogWxuvYZyoJfLp+rw33U7EvnqTyuSsfdc1G88d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDhR1oxNdR0vLqs+Kvw1mWLFGan2niza9cLYp238GO3BAIhAJrZMCJEosNUBFxVmijn/4VE0yH6P9KxMGcdo+EwRe18"}],"unpackedSize":645683},"main":"lib/index.js","name":"@dsh-earhartzhao/dsh-mobile-plugin","type":"module","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"56ffd026a5262aaf8cee4d530c7aa6e2bd628340","license":"MIT","scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","prepare":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","build:client":"node scripts/build-client.mjs","typecheck:client":"tsc -p tsconfig.client.json --noEmit"},"version":"0.2.46","_npmUser":{"name":"earhart_zhao","email":"earhart@vip.qq.com"},"_npmVersion":"10.9.9","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","directories":{},"maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"_nodeVersion":"22.23.3","dependencies":{"nats":"^2.29.3","yaml":"^2.9.1","qrcode":"^1.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","esbuild":"^0.25.0","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.1.0","@types/qrcode":"^1.5.5","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/cosmokit":"^1.8.5","@deepseek-ai/schemastery":"^3.18.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-mobile-plugin_0.2.46_1792995178663_0.7390030716048692"}}},"time":{"created":"2026-10-05T09:19:33.984Z","modified":"2026-10-26T06:12:59.090Z","0.2.27":"2026-10-05T09:19:34.274Z","0.2.28":"2026-10-05T09:53:37.348Z","0.2.29":"2026-10-05T10:12:03.753Z","0.2.30":"2026-10-05T10:19:50.194Z","0.2.31":"2026-10-06T00:43:30.507Z","0.2.32":"2026-10-06T00:48:01.650Z","0.2.33":"2026-10-06T01:07:28.709Z","0.2.34":"2026-10-06T01:14:50.225Z","0.2.35":"2026-10-06T05:32:20.340Z","0.2.36":"2026-10-06T08:38:34.545Z","0.2.39":"2026-10-09T02:37:40.419Z","0.2.40":"2026-10-09T07:41:58.011Z","0.2.41":"2026-10-09T08:41:12.304Z","0.2.42":"2026-10-09T09:09:38.646Z","0.2.43":"2026-10-19T07:17:09.506Z","0.2.44":"2026-10-20T06:19:13.908Z","0.2.45":"2026-10-20T07:39:39.283Z","0.2.46":"2026-10-26T06:12:58.800Z"},"license":"MIT","description":"手机连接：配对设备、管理访问权限并诊断 NATS 桥接。","maintainers":[{"name":"earhart_zhao","email":"earhart@vip.qq.com"}],"readme":"<div align=\"center\">\n\n**简体中文** · [English](README.en.md)\n\n<img src=\"docs/assets/dsh-mobile-plugin-banner.svg\" alt=\"dsh-mobile-plugin：安全连接手机与本地 dsh\" width=\"100%\">\n\n# dsh-mobile-plugin\n\n**把本地 DeepSeek Harness 安全地带到手机上的 Cordis 插件。**\n\n插件主动连接 NATS Hub，把 dsh 的 RPC 与实时事件桥接给 [dsh-mobile](https://github.com/EarhartZhao/dsh-mobile)。电脑不需要公网 IP，也不需要开放任何入站端口。\n\n<p>\n  <a href=\"https://registry.npmjs.org/%40dsh-earhartzhao%2Fdsh-mobile-plugin\"><img src=\"https://img.shields.io/npm/v/@dsh-earhartzhao/dsh-mobile-plugin?label=npm\" alt=\"npm 最新版本\"></a>\n  <a href=\"https://github.com/EarhartZhao/dsh-mobile-plugin/releases/latest\"><img src=\"https://img.shields.io/github/v/release/EarhartZhao/dsh-mobile-plugin?display_name=tag&sort=semver\" alt=\"GitHub Release\"></a>\n  <a href=\"https://github.com/EarhartZhao/dsh-mobile-plugin/actions/workflows/ci.yml\"><img src=\"https://github.com/EarhartZhao/dsh-mobile-plugin/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"></a>\n  <img src=\"https://img.shields.io/badge/dsh-web%20profile-0b7285\" alt=\"dsh web profile\">\n  <img src=\"https://img.shields.io/badge/mobileApi-2-2563eb\" alt=\"mobileApi 2\">\n</p>\n\n[快速开始](#快速开始) · [安装](#安装) · [首次配置](#首次配置) · [连接 App](https://github.com/EarhartZhao/dsh-mobile) · [自建 Hub](docs/03-nats-self-host.md)\n\n</div>\n\n## 为什么需要它\n\ndsh 通常跑在家用电脑或办公电脑上，没有公网 IP。手机直接访问不到它，而把 dsh 暴露到公网又会扩大攻击面。\n\n本插件把连接方向反过来：电脑和手机都主动连接同一个 NATS Hub。Hub 只负责转发，插件仍运行在 dsh 进程内，因此会话、审批、提问、文件与工具事件都来自同一个宿主。\n\n```mermaid\nflowchart LR\n  Phone[\"dsh-mobile<br/>Android / iOS\"] -->|\"WSS 8443<br/>C 端账号 + 设备令牌\"| Hub[\"NATS Hub\"]\n  Hub -->|\"Leaf 7422\"| Local[\"本机 NATS Leaf\"]\n  Local -->|\"localhost:4222\"| Plugin[\"dsh-mobile-plugin\"]\n  Plugin --> DSH[\"deepseek-harness<br/>Web / Desktop\"]\n```\n\n## 核心能力\n\n| 连接 | 安全 | 移动体验 |\n| --- | --- | --- |\n| 宿主主动出站连接，不开放入站端口 | 扫码配对，设备令牌可单独吊销 | 完整 RPC、实时事件流与历史分页 |\n| 复用 dsh Typert Remote 与事件词汇 | Hub CA 随二维码下发，不内置账号 | 子智能体、审批、提问、队列与文件 |\n| 本机 NATS 探测、启动与链路诊断 | 每台安装自动生成独立 `instanceId` | 插件页与回环控制台使用同一套配置 |\n| 支持 npm、Release tarball、Git 与本地 link | 密钥不进入移动端 wire 或诊断结果 | 控制台内检查更新，升级后提示重启 |\n\n## 快速开始\n\n开始前准备三样东西：\n\n1. 能运行 `dsh web` 的电脑。\n2. NATS Hub 地址、C 端账号密码，以及 Hub 的 `ca.crt`。\n3. 本机 `nats-server` 与 `leaf.conf`；没有时按 [AI 接入清单](docs/04-ai-onboarding.md)准备。\n\n在 dsh 的「插件」页安装并启用：\n\n```text\n@dsh-earhartzhao/dsh-mobile-plugin\n```\n\n然后打开插件配置区，按页面顺序完成：\n\n1. **连接 Hub**：填写 Hub 地址、账号和密码。\n2. **获取 CA**：粘贴 `ca.crt`，或点击「从 Hub 获取 CA」。\n3. **启动本机 NATS**：状态显示已连接后继续。\n4. **配对手机**：生成二维码，用 dsh-mobile 扫码。\n\n> App `0.1.7` 支持插件 `>=0.2.2 <0.3.0`，当前 `mobileApi` 为 `2`。版本或能力不匹配时，App 会在连接阶段明确报错。\n\n## 安装\n\n### npm（推荐）\n\n```bash\npnpm add @dsh-earhartzhao/dsh-mobile-plugin@latest\n```\n\n发布的 npm 包已经包含 `lib/`，安装时不会运行构建脚本，不需要配置 `allowBuilds`。也可以直接在 dsh 插件页按包名安装。npm 网页可能对部分网络环境返回 403，这不影响 registry 安装；包元数据可以直接从 [npm registry](https://registry.npmjs.org/%40dsh-earhartzhao%2Fdsh-mobile-plugin) 查看。\n\npnpm 11 默认有 24 小时的新版本发布年龄门禁。当天刚发布的版本可能暂时解析不到；需要立即安装时请显式指定版本。长期使用时可以把整包名加入 profile 的 `pnpm-workspace.yaml`：\n\n```yaml\nminimumReleaseAgeExclude:\n  - '@dsh-earhartzhao/dsh-mobile-plugin'\n```\n\n### Release 预构建包\n\n每次发布都会在 [GitHub Releases](https://github.com/EarhartZhao/dsh-mobile-plugin/releases/latest) 提供预构建 tarball：\n\n```text\nhttps://github.com/EarhartZhao/dsh-mobile-plugin/releases/latest/download/dsh-mobile-plugin.tgz\n```\n\n这种方式同样不运行构建脚本，适合无法访问 npm registry 的机器。\n\n### Git 源码\n\n```bash\npnpm add github:EarhartZhao/dsh-mobile-plugin\n```\n\nGit 安装会执行 `prepare` 构建。pnpm 10+ 首次会以 `ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED` 拒绝，并按 commit 给出精确的 `allowBuilds` 键。新机器优先使用 npm 或 Release 包，避免每个 commit 都重新批准构建。\n\n<details>\n<summary>开发机使用 link: 引用本仓库</summary>\n\n在 profile 的 `package.json` 中使用：\n\n```jsonc\n{\n  \"dependencies\": {\n    \"@dsh-earhartzhao/dsh-mobile-plugin\": \"link:<本仓库路径>\"\n  }\n}\n```\n\n使用 `link:`，不要使用 `file:`。`file:` 会复制当前内容，源码变化后 pnpm 不会自动重打包。Windows 上还要保持本仓库的 `node_modules` 没有符号链接；本仓库因此固定 `nodeLinker: hoisted`。\n\n</details>\n\n### 安装后必须启用\n\n包被加入 profile 依赖还不够。插件页里的「启用」会把包名写进 `dsh.profile.bundles`，包内 `cordis.patch.yml` 提供的 `mobile-bridge` 行才会生效。\n\n没启用时 `/mobile-bridge` 会直接返回 404。装好后如果仍显示「declares no dsh.bundle」，通常是 profile 里物化了旧副本；在 profile 目录重新执行 `pnpm install`。\n\n<details>\n<summary>从旧裸包名 dsh-mobile-plugin 迁移</summary>\n\n`0.2.27` 起包名改为 `@dsh-earhartzhao/dsh-mobile-plugin`。旧 profile 里按包名断言的覆盖行不会自动匹配新包，Hub 配置会静默失效。\n\n先停止 dsh，再运行：\n\n```bash\nnode scripts/migrate-to-scoped.mjs ~/.dsh/profiles/web\n```\n\n脚本会安装新包、原地替换 `dsh.profile.bundles` 中的旧包名、修正 `id: mobile-bridge` 行的 `name`，并移除旧依赖。修改前会备份 `cordis.patch.yml`；备份中含有明文密码，不要提交。\n\n</details>\n\n### 升级后重启 dsh\n\n宿主始终使用启动时加载的 JavaScript。升级插件后，磁盘上的版本可能已经是新版本，但运行中的仍是旧代码。\n\n从 `0.2.45` 起，控制台更新按钮可以直接完成升级；如果宿主返回 `already-installed`，插件会自动执行一次替换，**不需要用户先卸载再安装**。升级完成后仍需重启 dsh：\n\n- 终端启动：按 `Ctrl+C`，重新运行 `dsh web`。\n- 桌面版：使用菜单「重启应用与 Host」。\n\n控制台会在「插件版本」旁提示磁盘版本与运行版本不一致。\n\n## 首次配置\n\n手机使用插件里配置的 Hub 凭证，App 不内置任何账号。因此必须先配置插件，再生成二维码。\n\n### 1. Hub 地址与账号\n\n打开「侧边栏 → 插件 → `@dsh-earhartzhao/dsh-mobile-plugin`」，或访问：\n\n```text\nhttp://127.0.0.1:3080/mobile-bridge\n```\n\nHub 地址可以填写完整的 `wss://<host>:8443`，也可以只填主机或 IP。缺 scheme 时自动补 `wss://`，缺端口时自动补 `8443`。\n\n### 2. Hub CA\n\n手机不内置任何 CA，信任锚来自二维码。自签 Hub 必须配置 `ca.crt`。\n\n- 已经有 `ca.crt`：直接粘贴并保存。\n- 不知道 CA 在哪：点击「从 Hub 获取 CA」。\n- Hub 只发送叶子证书：按钮会给出在 Hub 上拼 fullchain 的命令。\n\nCA 是公开材料，不包含私钥；`ca.key` 应留在管理机，不能上传到 Hub。\n\n### 3. 本机 NATS Leaf\n\n点击「启动本地 NATS」。插件会先探测 `natsUrl`，端口已监听时直接复用；否则启动已经安装好的 `nats-server`。\n\n查找顺序：\n\n1. `NATS_SERVER_PATH` / `NATS_CONFIG_PATH` 环境变量。\n2. 控制台「手动指定路径」。\n3. `$DSH_HOME/mobile-bridge/`、`~/.nats-leaf/`、`~/.config/nats/`。\n4. 平台常见目录与 `PATH`。\n\n新电脑还没有 `nats-server` 和 `leaf.conf` 时，把 [docs/04-ai-onboarding.md](docs/04-ai-onboarding.md) 整页交给这台电脑上的 AI，按清单安装并完成自检。\n\n### 4. 测试与配对\n\n「测试 Hub 账号」会逐段检查：\n\n| 检查项 | 失败时通常意味着 |\n| --- | --- |\n| `local` | 插件没有连上本机 NATS |\n| `credentials` | Hub 账号或密码错误 |\n| `hub-path` | 本机 Leaf 没有桥接到 Hub |\n| `certificate` | 二维码 CA 与 Hub 实际证书不匹配 |\n\n全部通过后点击「生成配对二维码」，用 App 扫码。凭证或 CA 未配置时不会发码，避免手机拿到一个必然失败的二维码。\n\n## 实例 ID\n\n`instanceId` 是这台安装在 Hub 上的命名空间：\n\n```text\nsvc.dsh.<instanceId>.<method>\nevt.dsh.<instanceId>.<eventKey>.mux\n```\n\n字段留空表示自动生成。第一次启动时会生成 8 位 ID（4 位毫秒时间戳 + 4 位随机），写入 `$DSH_HOME/mobile-bridge/instances.json`。\n\n- 同一台电脑上的不同 dsh profile 各自拥有独立 ID。\n- 升级、重装、重启不会改变 ID。\n- 修改 ID 或更换安装路径后，已配对手机需要重新扫码。\n- 多个实例共用同一个 ID 会互相抢答，事件也会串流。\n\n## 凭证与配置分层\n\n| 层 | 位置 | 用途 |\n| --- | --- | --- |\n| 组合层 | 包内 `cordis.patch.yml` | 非密默认值与 `mobile-bridge` 行 |\n| 用户层 | profile 的 `cordis.patch.yml` | 本机 Hub 地址、账号、CA 与实例名 |\n| 凭据层 | 环境变量或 `dsh-credentials-local` | 推荐的正式密码托管方式 |\n\n控制台「保存」写的是 profile 覆盖行。`hubPass` 标记为 `secret`，非本机请求只能得知是否已配置；但当前值仍会以明文保存在 profile 文件中，因此不要提交或公开分享该文件。\n\n## 已知边界\n\n- **大文件不走 NATS。** Hub 单条消息约 1 MiB，插件只传有界文件窗口；更大的文件需要独立下载端点。\n- **目录列表没有游标。** 宿主默认最多返回 2000 项，超出时只标记 `truncated`。\n- **CA 指纹尚未强制校验。** App 会保存并展示指纹，但 RN WebSocket 暂时拿不到对端证书。\n- **没有系统级后台推送。** 审批与提问提醒目前只在 App 前台有效。\n- **文件变更流不是操作系统监视器。** 只覆盖 dsh 自己记录的读写事件。\n\n## 开发与验证\n\n需要 Node.js 22+ 与 pnpm 11。本地集成测试还需要 `nats-server`。\n\n```bash\npnpm install\npnpm run typecheck\npnpm run typecheck:client\npnpm test\npnpm run build\n```\n\n对运行中的宿主做端到端验收：\n\n```bash\nnode scripts/fake-app.mjs nats://127.0.0.1:4222 <pairCode> home\nnode scripts/watch-probe.mjs nats://127.0.0.1:4222 home <scratchPath>\n```\n\n发布由 `v*` tag 触发。CI 会校验 tag、`package.json`、`src/bridge.ts` 的 `PLUGIN_VERSION` 与测试断言一致，然后构建并发布 tarball。发布流程见 [AGENTS.md](AGENTS.md)。\n\n## 文档\n\n| 文档 | 内容 |\n| --- | --- |\n| [00-plugin-plan.md](docs/00-plugin-plan.md) | 定位、架构、安装方式与决策记录 |\n| [01-auth-pairing.md](docs/01-auth-pairing.md) | 双层凭证、配对流程与 token 存储 |\n| [02-nats-server.md](docs/02-nats-server.md) | 复用现有 NATS Hub 的改动清单 |\n| [03-nats-self-host.md](docs/03-nats-self-host.md) | 从零搭建 Hub、TLS、Leaf 与验收 |\n| [04-ai-onboarding.md](docs/04-ai-onboarding.md) | 新电脑接入清单，可直接交给 AI 执行 |\n\n历史版本说明见 [GitHub Releases](https://github.com/EarhartZhao/dsh-mobile-plugin/releases)。\n","readmeFilename":"README.md"}