{"_id":"@addozhang/dsh-discord","_rev":"15-f3060fed02a5a28aba71b37caf78967a","name":"@addozhang/dsh-discord","dist-tags":{"latest":"0.5.0","alpha":"0.5.0-alpha.2","next":"0.5.0-rc.4"},"versions":{"0.1.0":{"name":"@addozhang/dsh-discord","version":"0.1.0","license":"MIT","_id":"@addozhang/dsh-discord@0.1.0","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"cc2143f60b1fc8b898742368242735d82452a919","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.1.0.tgz","fileCount":183,"integrity":"sha512-JLvOoslbKq0+iNy4B6MdwvpI1dpxDwtP/lQipUIwyrcSUWppPPh1bAdpoQOaa/3Q04md211soPHy9ESd5/da1g==","signatures":[{"sig":"MEYCIQCpGfz9zAPtAoo2DZE7qzVK8eTS6o5keRP4jh/CZvRW7gIhAIzsYyc99mbK+ztBIBuOYNJBBYUMl3evsX2ffAKffIqH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":631466},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"4eb9b59ee97b759709516de466cf708b2aec34d5","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"addozhang","email":"duwasai@gmail.com"},"_npmVersion":"11.12.1","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-storage-domain":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.1","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.1.0_1788084765634_0.43305418456635203","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@addozhang/dsh-discord","version":"0.1.1","license":"MIT","_id":"@addozhang/dsh-discord@0.1.1","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"5a93ef6733417e132e98508fa0ebb8bd03fa6b72","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.1.1.tgz","fileCount":181,"integrity":"sha512-EmPUBJ7JZyLqJSY1R49opy1CMyV0n2xsq+ijv1AFr5zaeXujs3bmUpwZtTdL5WgR21Z9H53/0NsWykHra10J7w==","signatures":[{"sig":"MEQCIBxn2d0kQIVXe0JJ2qGtAWZyr5M0qBs/d74Fjy23+cm0AiAglbZlxoOjpDgdMyMFVIivVFsrQUEkiqtRlDdiVNiDDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":629288},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"eee47258d0d65802a8f486f7fdb4b4f05bb4c8f6","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-storage-domain":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.1","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.1.1_1788091288249_0.35784171949511134","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@addozhang/dsh-discord","version":"0.2.0","license":"MIT","_id":"@addozhang/dsh-discord@0.2.0","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"5ba493ad7b754658d4049bd4c10ec58a77870b32","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.2.0.tgz","fileCount":182,"integrity":"sha512-VWA1LsqlVipZfFgbP84x8s/J0fS/KwUSS8Lnj/pj+TVcR6f16qtgPW8Ei2+d+EwdOJwlCViHuUvdQwi0HI29NQ==","signatures":[{"sig":"MEUCIQChxoHz/19tPniaV61La0eYZm4/7Q6DtG8D9E6zWeIfCAIgKJ0YmTSdk9jJQOX6/WTv/3zU8TLKDTWD++OwOgENloM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":654101},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"9f4fb0470aacc9e13d545886d7655531d320993d","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-storage-domain":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.1","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.2.0_1788103369895_0.06652871421282724","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@addozhang/dsh-discord","version":"0.2.1","license":"MIT","_id":"@addozhang/dsh-discord@0.2.1","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"ea057f65bed72ecac95f7a4c68633d5c8d795c7b","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.2.1.tgz","fileCount":182,"integrity":"sha512-o6zF3aO23blXWwv6xgOBvIk0w2ScRZgu2k4ZU3TmK1SwyG3oVrXJFH0ijvBJH2fOjbopi77FW16va87WGRYVAg==","signatures":[{"sig":"MEUCIQDj+k1yVgeG1la/VTuobTHFuZf8uW1K9G/VDBHSd+ZvvgIgSbq62elpX4lKMv04lFjkAJQle7FQWrn1OJaSoFTlkr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":655268},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"33aa794fec3601dd26fa60b65cc518bdf3411473","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-storage-domain":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.1","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.2.1_1788104609464_0.4332747226423319","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@addozhang/dsh-discord","version":"0.2.2","license":"MIT","_id":"@addozhang/dsh-discord@0.2.2","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"46c800705235b276168809c34fe2f34ea138cbe9","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.2.2.tgz","fileCount":182,"integrity":"sha512-C+6wnu3R2f1nKVCXZ/A8ubxlCWDH8J/0M3UlgCxUoFuMD56K4XYZ0CY8KXZZWZJ+D4h+Co/L5SAkBhButfz6AA==","signatures":[{"sig":"MEUCIQCjTOukGPbB6voqZPbafLX80W5DPvpGeKb8tOGfp9K+bgIgJN7LNzv91wlsGNtbpsFNgHXKDbMtBfDjGK3ZvJFK5pc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":685744},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3d6a8d8aa592eb11af673a6acdceaebc213e73ad","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-storage-domain":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.1","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.2.2_1788138667353_0.6533083865626794","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@addozhang/dsh-discord","version":"0.2.3","license":"MIT","_id":"@addozhang/dsh-discord@0.2.3","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"6e282761a988142029a1b0cd29c8e4750df21469","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.2.3.tgz","fileCount":182,"integrity":"sha512-jzHhBayWbC18fgGQXH9UDaRdl5cZs1uBJg2L477GfIOpwKlUKo2AiNGO3hh8geHsN5+M8PrP06GYKBg+XNsa4w==","signatures":[{"sig":"MEQCIBh6TuzQmiRFnQCwu3YHCzbzv2guYw6kPrGIMxBydTFqAiBHW4gNE8aRwqrFVqcquc36rPj0Xy8buMvihAMANxYihw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":686551},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"69de0634120cae30da51cdd97859aca8557056fd","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-storage-domain":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.1","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.2.3_1788142733965_0.47180756725709627","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@addozhang/dsh-discord","version":"0.3.0","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"license":"MIT","_id":"@addozhang/dsh-discord@0.3.0","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"1d791dc35959710dd12974750963ae003ee397f5","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.3.0.tgz","fileCount":182,"integrity":"sha512-BtibjVHSnp6S9CtMjlKI13zB5IaigIWN4rikhxkIgW+CDzp8Rea0m1c8fCFgCSkEeoyOYoRFm/cywZdYPVzBNg==","signatures":[{"sig":"MEYCIQDGg5YYZAb6ps/d1ZM2ZMKafzXtIF00OM3ciUA9dbO7JAIhAMCEo5xrjT37PYHETBVHCwdBERo7YWAotvuKZCJWUme/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":712025},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"03cb6aa72ea3738076d2d31ad964d9064b48354d","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-storage-domain":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.1","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.3.0_1788177839493_0.17032761716480915","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@addozhang/dsh-discord","version":"0.4.0","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"license":"MIT","_id":"@addozhang/dsh-discord@0.4.0","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"6e4281b30957b1257a4af5aec34845d2354bf09c","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.4.0.tgz","fileCount":180,"integrity":"sha512-YtqlQLucj+7yrdwNyVhCWM8DG0Pvr4vvyTsWAqAKY0DLYrzEBmHPg8bglt3Y7jH61LgYNSskKQpLH9YpRN7+Ww==","signatures":[{"sig":"MEUCIATM7II08hzHFElw/72iSVQi+bv4f0duF1XMFNHe4ehlAiEAwvd583tFogB/OHv9jAQP85WMNg/IhKQXRK2+nM+VQ2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":719221},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"f038038d856db4a12749e32d785f1cc9dd15c04a","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-credentials":"0.1.1-rc.2","@deepseek-ai/dsh-storage-domain":"0.1.1-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.1","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"0.1.1-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-host-apiproxy":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.4.0_1788267143514_0.26944160525321004","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-alpha.1":{"name":"@addozhang/dsh-discord","version":"0.5.0-alpha.1","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"license":"MIT","_id":"@addozhang/dsh-discord@0.5.0-alpha.1","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"f5b807306d0e0ea7ff1876b14edf306d19f20637","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.5.0-alpha.1.tgz","fileCount":184,"integrity":"sha512-NDjIWwuoycCM3ULdpQdAqPBhl0MC7NuEcVT4+5iNTaOmSvfkyhYYQzMpZsymqwkXJXGJmuvcMx5Ai2izC0/B0Q==","signatures":[{"sig":"MEQCIDJIxrRTGyLDzAPbBQEKVFNfi9NyulrAZpaXt3MKJXYxAiAunzLr/JyvdFNE/uoVfU4n/yCTrKGTe0UuNXu8mQ9ulw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICNw9L6Itz7dVjKwy7ijD5sFg52H2U3qOcMZcxCvSkDMAiBt5NWan47c8dXiEogMSNyGMSsdw/GmCmPxJK2n0eqlkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.5.0-alpha.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":752208},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"50f80e8a9cd3718de8741146f636ed65a6072baa","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.6-alpha.2","@deepseek-ai/dsh-credentials":"0.1.6-alpha.2","@deepseek-ai/dsh-storage-domain":"0.1.6-alpha.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","readmeFilename":"README.zh.md","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.2","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-client-store":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-slots":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-renderer":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-settings":"0.1.6-alpha.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.5.0-alpha.1_1789712062995_0.2988801468417659","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-alpha.2":{"name":"@addozhang/dsh-discord","version":"0.5.0-alpha.2","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"license":"MIT","_id":"@addozhang/dsh-discord@0.5.0-alpha.2","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"14e8986b10280253f3cfe35d845461706afb35b9","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.5.0-alpha.2.tgz","fileCount":184,"integrity":"sha512-hoqxAfotEPJxFxtCfjgtMAEw7IsPxRFU+V7VFeYfxmREOIpekjnnr8fZ6ouavDdC7Q9/GgiYfcnNdaaszOV++Q==","signatures":[{"sig":"MEYCIQDcbQhriQOSmyO4MFyRD59ue1trYGtzIcC++UyfeEIxKgIhANfl9MzRMzOwY/MhtBz+rqQcjt2CbKyq7R525ASjgJVG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCs/4NHS0VvTtQD+KAA+hjl2PHis6R1LflPFXZM5/afGQIgJoeWGgqlcFFh/iApIWbBAbh4tpJiDNkz0E/OLMopAac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.5.0-alpha.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":766082},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"048eab6c0fc82146e561c07a47d0202a8724985f","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.6-alpha.2","@deepseek-ai/dsh-credentials":"0.1.6-alpha.2","@deepseek-ai/dsh-storage-domain":"0.1.6-alpha.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","readmeFilename":"README.zh.md","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.2","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-client-store":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-slots":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-renderer":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-settings":"0.1.6-alpha.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.5.0-alpha.2_1789745320490_0.1711811829906602","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-rc.1":{"name":"@addozhang/dsh-discord","version":"0.5.0-rc.1","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"license":"MIT","_id":"@addozhang/dsh-discord@0.5.0-rc.1","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"c1e62865f6af7a16612b40c8ecc882de3d44b772","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.5.0-rc.1.tgz","fileCount":184,"integrity":"sha512-wtA5jw+ATzbKDc6AtvbOJx4I2kAlssawNMLPRaWyXH9YcQNpqsxoA4HN+gDKCH0UV9l7t/ubkajM+mHkTUZu5w==","signatures":[{"sig":"MEQCIEuPyxkAnU8LkHABNs48ECarDABmI014UHuso3oPtl+FAiB6l5TtZ1hPqmjrWhmBD3vAies4witKdTktpPVehvIekw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD9z3EkREMONx/55nz8CLqSBldjYwMVuaWYJmRCBTDoBgIgT5rSZY26QnEc6aFuEVwXnIzGRZixEIFjuGwOKpNwAsA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.5.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":766079},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"e84fc1403464fd09f609ad344d69de4455c4cc14","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord-first adapter for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.6-alpha.2","@deepseek-ai/dsh-credentials":"0.1.6-alpha.2","@deepseek-ai/dsh-storage-domain":"0.1.6-alpha.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","readmeFilename":"README.zh.md","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.2","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-client-store":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-slots":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-renderer":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-settings":"0.1.6-alpha.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.5.0-rc.1_1789745439134_0.6771789055846307","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-rc.2":{"name":"@addozhang/dsh-discord","version":"0.5.0-rc.2","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"license":"MIT","_id":"@addozhang/dsh-discord@0.5.0-rc.2","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"b348e23f9663c1d6d5ee310967e6979922dccff5","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.5.0-rc.2.tgz","fileCount":184,"integrity":"sha512-a2JKKmy/QT2+3HLZ2rHrSspZH/jpSW5/MbMprLRtdjeD2F3ylLhFDkGtDcH96xBk59rs/caII72TBfHd3QHLLw==","signatures":[{"sig":"MEQCICQXQv5YqDSvbepanOS6s3T7Q9QRi4anjBWz6HnG8FDtAiAvGS0uwLx/6rxm7ZHLfPt59lxKiPpqf7QNH9IcEz5eNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCeG8d/7zPvfEgHS+o/4veSdbWfe88gLjW/b5tg8bwgYwIgeOWz9IBmavFRYxNCWZmYEqyKNrB06csjxPM8SeFMCIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.5.0-rc.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":780334},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3def7d14e56c9247e1a780b87c4c77eefbf58363","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord adapter for DeepSeek Harness · DeepSeek Harness 的 Discord 适配器","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.6-alpha.2","@deepseek-ai/dsh-credentials":"0.1.6-alpha.2","@deepseek-ai/dsh-storage-domain":"0.1.6-alpha.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","readmeFilename":"README.zh.md","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.2","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-client-store":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-slots":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-renderer":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-settings":"0.1.6-alpha.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.5.0-rc.2_1789787702729_0.3607048054584925","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-rc.3":{"name":"@addozhang/dsh-discord","version":"0.5.0-rc.3","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"license":"MIT","_id":"@addozhang/dsh-discord@0.5.0-rc.3","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"083610ce3a5f48ec0731d60e2040c94b7499bdbd","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.5.0-rc.3.tgz","fileCount":186,"integrity":"sha512-+otbXYrXda6rKSBSMZyoXmDSMgeJWXGZkAIh//vi/gtALaWr5J9vbslvoJDphI0ecEpzTdN1JOTth0F0dX3mPA==","signatures":[{"sig":"MEUCIBGt7mC07IKMiGSU2J/6W9ZnmLHE46QaS8i1YyO5u7HGAiEAwt1pkNrK1sUaR1zGPSzEj7FQu7ltgiir3RApSA7kzb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDtkEH5dBP/rDTiPM380ckuEA3euZoBkBMAzz5+esr2NAiEA1epMYI0My42H+x0hqIyPpO9vFz8HDHiVNGXzKBj7tI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.5.0-rc.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":819266},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3a158eb0ea9cf0edcd3574bd1628ecab47d4e5d2","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.0.2","description":"Discord adapter for DeepSeek Harness · DeepSeek Harness 的 Discord 适配器","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.6-alpha.2","@deepseek-ai/dsh-credentials":"0.1.6-alpha.2","@deepseek-ai/dsh-storage-domain":"0.1.6-alpha.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","readmeFilename":"README.zh.md","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.2","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-client-store":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-slots":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-renderer":"0.1.6-alpha.2","@deepseek-ai/dsh-client-ui-settings":"0.1.6-alpha.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.5.0-rc.3_1789822687135_0.15912058639506022","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-rc.4":{"name":"@addozhang/dsh-discord","version":"0.5.0-rc.4","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"license":"MIT","_id":"@addozhang/dsh-discord@0.5.0-rc.4","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"homepage":"https://github.com/addozhang/dsh-discord#readme","bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"dist":{"shasum":"b425048f470363b14144d5f4d0b0671acca1d0b3","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.5.0-rc.4.tgz","fileCount":186,"integrity":"sha512-NPhK9xF47BDdm9TZmamFa/Do57mIjvxkAz4t7Ey830gyqy78OHY5gHBYfwhUkTFN+8sv2QyfivbKOKen0LEKsA==","signatures":[{"sig":"MEUCIQCv0E0yAanBQP3JKsYht3eGFfTi0Y2njPL18JH0ejKX3wIgajigN/UMiTxXmX+Dm/ZUyvdzu6z5u7qQ1TLaHCvc7X0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIE0Pv8rKD6TbAdU0HxD+KcbLP5vIz5blaDNNizkVsEyhAiEAzu2CIv6qm4X0QiGAcNt9eTI1DJbT1cn2INPCGf903do=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.5.0-rc.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":831110},"main":"./lib/index.js","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"831d4d0001f674f2b882af3faac7220042fd8d3d","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.1.0","description":"Discord adapter for DeepSeek Harness · DeepSeek Harness 的 Discord 适配器","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.3","@deepseek-ai/dsh-credentials":"0.1.7-alpha.1","@deepseek-ai/dsh-storage-domain":"0.1.7-alpha.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","readmeFilename":"README.zh.md","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.3","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-settings":"0.1.7-alpha.1","@deepseek-ai/dsh-client-store":"0.1.7-alpha.1","@deepseek-ai/dsh-client-ui-slots":"0.1.7-alpha.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.7-alpha.1","@deepseek-ai/dsh-client-ui-settings":"0.1.7-alpha.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/dsh-discord_0.5.0-rc.4_1790152353467_0.625516301154263","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@addozhang/dsh-discord@0.5.0","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-settings"],"platform":"web","immediately":true}},"bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"dist":{"shasum":"76c23783a916c7af55e0b7e5392fe368590f8057","tarball":"https://registry.npmjs.org/@addozhang/dsh-discord/-/dsh-discord-0.5.0.tgz","fileCount":186,"integrity":"sha512-Z09rmPt/vkwfHEoN4OwHJSNQcIlEKwGVXFZjfcy3ycelAJiRUtp8PisTmv+F4vIuyp5Ncd4iFcCFyQ2jGCFDyg==","signatures":[{"sig":"MEYCIQDUP0yCRn3lsLhzaKrYIuWuTqfDWHtHICqkM0o0oSUopQIhAOkRLqvVCPA8J35g8zKszxIWadl35cdiSRqc300FDZKz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCFxIpZOjljqKTeeprAEAFzoUvgfS6RapvmmYJEsHrajgIgLKdJCSUc4aXJVzikAKR74V1zL1WzYM84QbeukyHJfII="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@addozhang%2fdsh-discord@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":831452},"main":"./lib/index.js","name":"@addozhang/dsh-discord","pnpm":{},"type":"module","types":"./lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3ceeda9b08daceb9f9095db3ff385bf9753d46e0","license":"MIT","scripts":{"lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsc -p tsconfig.build.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","clean":"rm -rf lib coverage","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"version":"0.5.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:45aa2c77-f149-4763-96b4-a73370288d56"}},"homepage":"https://github.com/addozhang/dsh-discord#readme","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"_npmVersion":"12.1.0","description":"Discord adapter for DeepSeek Harness · DeepSeek Harness 的 Discord 适配器","directories":{},"maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"3.18.4","@deepseek-ai/dsh-credentials":"0.1.7-rc.1","@deepseek-ai/dsh-storage-domain":"0.1.7-rc.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.0.8","devDependencies":{"immer":"^10.2.0","react":"^19.0.0","eslint":"9.39.1","vitest":"4.1.11","esbuild":"0.25.9","@eslint/js":"9.39.1","typescript":"5.9.3","@types/node":"24.10.1","@types/react":"18.3.1","typescript-eslint":"8.48.1","@deepseek-ai/cordis":"4.0.3","@vitest/coverage-v8":"^4.1.11","discord-digital-twin":"^0.1.1","@deepseek-ai/dsh-settings":"0.1.7-rc.1","@deepseek-ai/dsh-client-store":"0.1.7-rc.1","@deepseek-ai/dsh-client-ui-slots":"0.1.7-rc.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.7-rc.1","@deepseek-ai/dsh-client-ui-settings":"0.1.7-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-discord_0.5.0_1790217005850_0.31147291840488034"}}},"time":{"created":"2026-08-30T10:12:45.453Z","modified":"2026-09-24T02:30:06.242Z","0.1.0":"2026-08-30T10:12:45.794Z","0.1.1":"2026-08-30T12:01:28.404Z","0.2.0":"2026-08-30T15:22:50.056Z","0.2.1":"2026-08-30T15:43:29.609Z","0.2.2":"2026-08-31T01:11:07.490Z","0.2.3":"2026-08-31T02:18:54.124Z","0.3.0":"2026-08-31T12:03:59.641Z","0.4.0":"2026-09-01T12:52:23.650Z","0.5.0-alpha.1":"2026-09-18T06:14:23.098Z","0.5.0-alpha.2":"2026-09-18T15:28:40.606Z","0.5.0-rc.1":"2026-09-18T15:30:39.225Z","0.5.0-rc.2":"2026-09-19T03:15:02.863Z","0.5.0-rc.3":"2026-09-19T12:58:07.235Z","0.5.0-rc.4":"2026-09-23T08:32:33.636Z","0.5.0":"2026-09-24T02:30:05.939Z"},"bugs":{"url":"https://github.com/addozhang/dsh-discord/issues"},"license":"MIT","homepage":"https://github.com/addozhang/dsh-discord#readme","keywords":["discord","deepseek","deepseek-harness","dsh","dsh-plugin","bot","ai-agent","claude-code","coding-agent"],"repository":{"url":"git+https://github.com/addozhang/dsh-discord.git","type":"git"},"description":"Discord adapter for DeepSeek Harness · DeepSeek Harness 的 Discord 适配器","maintainers":[{"name":"addozhang","email":"duwasai@gmail.com"}],"readme":"# @addozhang/dsh-discord\n\n[English](README.md) | 中文\n\n[![npm](https://img.shields.io/npm/v/@addozhang/dsh-discord)](https://www.npmjs.com/package/@addozhang/dsh-discord)\n[![CI](https://img.shields.io/github/actions/workflow/status/addozhang/dsh-discord/ci.yml?branch=main&label=CI)](https://github.com/addozhang/dsh-discord/actions/workflows/ci.yml)\n[![license](https://img.shields.io/npm/l/@addozhang/dsh-discord)](./LICENSE)\n[![node](https://img.shields.io/node/v/@addozhang/dsh-discord)](./package.json)\n[![dshfind](https://dshfind.com/api/badge/addozhang/dsh-discord)](https://dshfind.com/en/plugins/addozhang/dsh-discord?ref=badge)\n\n[DeepSeek Harness](https://github.com/deepseek-ai) 的 Discord 优先适配器：在 Discord 服务器中运行 DSH 会话——@机器人下一个任务，线程即开，回答流式输出，审批与提问以按钮形式送到手机上，随手即可回应。\n\n零额外进程：适配器是 DSH 插件，直接挂载到你的 `dsh web` profile。会话状态保存在 DSH，持久绑定保存在 profile 的存储域中。\n\n<p align=\"center\">\n  <img src=\"docs/images/discord-task-lifecycle.jpg\" alt=\"一次任务的完整生命周期：@提及锚定线程、工具活动行随回答流式编辑、最终以 Markdown 表格落地\" width=\"720\">\n</p>\n\n## 功能\n\n- **@提及驱动会话** — 在已绑定的频道中，被授权的 `@机器人 <任务>` 会锚定一个线程（你的消息成为首帖）、创建 DSH 会话，并且至多提交一次。线程内的后续消息无需 @ 即可排队。消息附带的图片会一并送达：在严格的大小与主机白名单约束下从 Discord CDN 下载，并作为 image parts 提交给多模态模型。\n- **流式渲染** — typing 指示、单条头消息原地编辑、逐工具活动行、代码围栏感知的长文分段、一次性收尾；Turn 结束时活动消息会被删除。\n- **审批与提问** — DSH 的 ask 渲染为按钮、下拉菜单与自由文本弹窗。所有权强制校验（提问者——或后续 Turn 的线程属主——才能点击），超时清扫 fail-closed，结算后的控件原地置灰。\n- **会话控制** — `/steer`、`/stop`、`/queue list|remove` 带运行所有权校验；`/project bind|list|info` 与 `/session resume` 管理 Guild↔工作区绑定与历史会话；`/guild forget` 供操作员清理。\n- **模型切换** — `/model show` 读取会话的实时模型目录；`/model select` 走交互式 provider → 模型 → 推理强度级联，也可直接填写 `provider/model` 应用。默认对所有授权成员开放，可收紧为仅 Host 操作员。\n- **权限切换** — `/permission show` / `set` 读写会话权限预设（沙箱 + 审批捆绑档位），走宿主自己的 `/permission` 命令路径，journal 自动记审计；`danger-full-access` 需按钮二次确认。\n- **设置卡片，开箱双语** — Token 引导与连接/断开（存入 Host 凭据服务，绝不写入设置或日志）、服务器白名单、自动归档与语言。所有 Discord 可见文案提供中英双语；Bot 默认跟随 DSH 语言偏好，也可从卡片固定。\n- **安全设计** — 显式服务器白名单内的 deny-first 授权。提及抑制双保险：每条请求携带 `allowed_mentions`，外加 wire body 的字节级提及中和。DSH 提交至多一次，并做保留 unknown 的对账——结果不明的投递绝不盲目重发。绑定重启后持久；READY 扫描会重建被删除的 category/控制频道，而把被删除的工作区频道视为用户意图（解除映射，workspace 保持可重新绑定）。\n\n## 环境要求\n\n- [dsh CLI](https://www.npmjs.com/package/@deepseek-ai/dsh)（web profile）。dsh 与适配器的通道需匹配——见[版本支持](#版本支持)。\n- Node.js `^22.19.0 || >=24`\n- 一个 Discord 应用（含 Bot 用户），并在开发者门户启用 **MESSAGE CONTENT** 特权 intent（Developer Portal → 你的应用 → Bot → Privileged Gateway Intents）\n\n## 版本支持\n\n两条通道并行发布，各自钉在经过真机验证的 dsh 宿主面上。适配器与 dsh CLI 请取同一行：\n\n| 通道 | 适配器 | dsh CLI | 安装命令 |\n|---|---|---|---|\n| **stable** | `0.5.0` — npm `latest` | `0.1.7-rc.1` — npm `next` | `dsh plugin --profile web add @addozhang/dsh-discord` |\n| **next** | `>=0.5.0-rc.4` — npm `next` | `0.1.7-alpha` — npm `alpha` | `dsh plugin --profile web add @addozhang/dsh-discord@next` |\n\n- **两行不可混搭。** 适配器 `>=0.5.0-rc.4`（含 `0.5.0`）使用 0.1.7 的 profile-backed settings forms 与控制器服务，在更旧的宿主上无法加载（startup 探针会给出一条可操作的诊断后拒绝激活）；`0.5.0-rc.1`–`rc.3` 对应 dsh `0.1.6-alpha`；适配器 `0.4.x` 使用旧版 `apiProxy` 宿主面（该面已在 `0.1.6-alpha` 中移除）——它仍是 dsh `0.1.5` stable 线的配对，可用精确版本号安装（如 `@addozhang/dsh-discord@0.4.0`）。错配会在启动时失败。\n- 切换 dsh CLI 通道：`npm install -g @deepseek-ai/dsh@next`（0.1.7-rc.1，配适配器 0.5.0）或 `npm install -g @deepseek-ai/dsh@alpha`（0.1.7-alpha 线）。\n- `next` 刚发版后，`@next` 规格可能解析到过期的缓存版本。若装到的版本偏旧，请改用精确版本号安装（如 `@addozhang/dsh-discord@0.5.0-rc.4`），并核对 profile `node_modules` 中的 `version` 字段。\n\n## 安装\n\n使用 dsh CLI 安装——它会自动把包装进 profile 并注册 bundle。下面是 stable 通道；next 通道使用[版本支持](#版本支持)表中的 `@next` 命令（`up` / `rm` 同规格）：\n\n```sh\ndsh plugin --profile web add @addozhang/dsh-discord\n```\n\n然后重启 `dsh web` 并刷新浏览器。`dsh plugin` 会自动对账 profile 的 bundle 列表——无需手动编辑。\n\n升级与卸载使用同一条命令：\n\n```sh\ndsh plugin --profile web up @addozhang/dsh-discord   # 升级；bundle 列表会重新对账\ndsh plugin --profile web rm @addozhang/dsh-discord   # 卸载；先执行 /guild forget 清理适配器记录\n```\n\n如果不用 CLI、手工管理 profile，等价做法是在 profile 目录里用 pnpm 安装本包，并在 `dsh.profile.bundles` 中自行登记：\n\n```json\n{\n  \"dsh\": { \"profile\": { \"bundles\": [\"@deepseek-ai/dsh-base\", \"@deepseek-ai/dsh-web-app\", \"@addozhang/dsh-discord\"] } }\n}\n```\n\n## 配置\n\n全部配置项位于 `dsh-discord` 设置命名空间，既可以在设置卡片中修改，也可以直接编辑 profile 的用户设置（`settings.yaml`）：\n\n| 配置项 | 默认值 | 说明 |\n|---|---|---|\n| `enabled` | `false` | 适配器总开关；卡片 Connect 在 Token 存入后启动。 |\n| `allowedGuildIds` | `[]` | 服务器白名单。白名单之外零响应、零 DSH 调用。 |\n| `memberUserIds` / `memberRoleIds` | `[]` | 白名单 Guild 内的成员级授权。 |\n| `administratorUserIds` / `administratorRoleIds` | `[]` | 工作区管理员级（`/project bind`）。 |\n| `deniedUserIds` / `deniedRoleIds` | `[]` | 拒绝名单；优先级高于上述一切授权。 |\n| `hostOperatorUserIds` | `[]` | Host 操作员（`/guild forget`；启用 `modelSelectOperatorOnly` 后也包括 `/model select`）。 |\n| `modelSelectOperatorOnly` | `false` | 将 `/model select` 限制为 Host 操作员（仅 `settings.yaml`，卡片不展示）。默认 `false`：任何授权成员均可切换，且切换仍会更新 Host 默认。 |\n| `permissionSelectOperatorOnly` | `true` | 将 `/permission set` 限制为 Host 操作员（仅 `settings.yaml`）。默认 `true`——比 `/model` 更严，因为「完全权限」会同时解除沙箱与审批；可放开为任何授权成员可切换。 |\n| `defaultVerbosity` | `essential-tools` | 工具活动行粒度：`text-only`、`essential-tools`、`full-tools`。 |\n| `language` | `auto` | Bot 可见文案语言：`auto` 跟随 DSH 语言偏好（非中文渲染英文），或固定 `zh`/`en`。 |\n| `streamUpdateIntervalMs` | `800` | 流式编辑合并间隔（250–10000）。 |\n| `typingIntervalMs` | `7000` | typing 心跳（1000–30000）。 |\n| `approvalTimeoutMs` | `600000` | 审批超时（30000–86400000）；超时自动拒绝。 |\n| `questionTimeoutMs` | `1800000` | 问题超时（30000–86400000）；超时取消所属 Turn。 |\n| `threadAutoArchiveMinutes` | `1440` | 任务线程自动归档：60、1440、4320 或 10080。 |\n\n```yaml\ndsh-discord:\n  allowedGuildIds: [\"1517134847850709032\"]\n  language: auto\n```\n\n设置卡片暴露三个高频项（服务器白名单、自动归档、语言）以及连接与 Token 面；其余键完全支持通过 `settings.yaml` 配置。非法的已存配置会保留最近一次有效配置。\n\n<p align=\"center\">\n  <img src=\"docs/images/settings-card.png\" alt=\"Discord 设置卡片：连接状态、服务器白名单、归档、语言\" width=\"560\">\n</p>\n\n## 初始设置\n\n1. 以至少以下权限把 Bot 邀请到你的服务器：查看频道、**管理频道**（适配器要创建自己的分类和工作区频道）、发送消息、创建公共线程、在线程中发送消息、上传文件、读取消息历史。\n2. 启动 profile 并打开 Web 界面。\n3. 在 **Settings → Discord** 中粘贴 Bot Token（开发者门户 → 你的应用 → Bot → Reset Token）并点击 **Connect**。Token 由 Host 凭据服务保存——绝不写入设置、日志或客户端。\n4. 填写 **允许的服务器**（服务器 ID 获取方式：Discord 开发者模式 → 右键服务器 → 复制服务器 ID）。白名单之外的一切都会被忽略。\n5. `/model select` 默认对任何授权成员开放（单人自用部署）。如需限制为 Host 操作员：在 `hostOperatorUserIds` 中加入其用户 ID，并把 `modelSelectOperatorOnly` 设为 `true`（`settings.yaml`）。`/guild forget` 始终需要 Host 操作员。\n6. 选择 Bot 语言，然后在已绑定的频道 @机器人 开始会话。\n\n## 命令\n\n| 命令 | 位置 | 说明 |\n|---|---|---|\n| `/project bind` | 任意频道 | 将 Guild 绑定到工作区（管理员；会创建主频道） |\n| `/project list` / `info` | 任意频道 | 列出工作区 / 查看当前频道绑定 |\n| `/queue list`, `/queue remove` | 会话线程 | 查看与移除待处理队列 |\n| `/steer`, `/stop` | 会话线程 | 插话或取消运行中的 Turn（仅属主） |\n| `/model show` / `select` | 会话线程 | 查看实时模型目录；`select` 不带参数时走交互式 provider → 模型 → 推理强度级联（默认对所有授权成员开放） |\n| `/session resume` | 项目频道 | 自动补全选择本工作区的历史会话（显示标题与时间，最新优先），恢复为当前频道的新线程；空白、已挂线程、subagent、已归档的会话不会出现。线程会渲染会话历史——回答与工具摘要之外，用户输入以引用行回显（插件/系统注入永不回显）。适配器重启后线程只补齐错过部分：持久化的渲染水位抑制已投递过的历史，已绑定会话在重连时自动重订阅，因此从 web UI 发起的回合也会落进对应线程 |\n| `/guild forget` | 任意频道 | 仅操作员：移除适配器记录 |\n| `/permission show` / `set` | 会话线程 | 查看或切换会话权限预设（仅可查看 / 工作区内修改 / 完全权限——沙箱与审批的捆绑档位，目录取自宿主实时配置）。`set danger-full-access` 先要求按钮确认；预设自动补全；默认仅 Host 操作员可切换（`permissionSelectOperatorOnly` 可放开）。任何入口（含 web UI）的切换都会在线程渲染一行系统消息 |\n\n\n## 设计说明\n\n- 适配器为 function/namespace 插件（`inject: ['sessionController', 'workspaceController', 'sessionQuery', 'webServer', 'credentials', 'settings', 'storageDomain', 'connection', 'commands', 'permissionPresets']`），将 Discord Gateway、命令面、流式渲染器与设置卡片挂载到 DSH web profile。\n- 设置卡片是首次使用的引导面：Token 输入通过插件管理通道写入凭据服务的 `DSH_DISCORD_BOT_TOKEN` 引用，然后触发启动链。断开连接保留凭据；留空重连直接使用已存 Token。\n- 发布工作流通过 npm trusted publishing (OIDC) 认证——任何地方都不保存发布凭证。\n- 适配器启动链带代际计数，Connect/Disconnect 与初始启动竞争时只会产生一个 Gateway。\n- 凭据探测会回退到 `resolve()`：Host 的 `describe()` 不识别环境变量来源的值——已连接的适配器不会被误报为未配置。\n- 适配器日志默认静默：流程记录走 Host 的 debug 级别，失败形态的事件升到 warn——默认级别下不会向 DSH 进程打印任何内容。\n- 链路级 trace：启动前设置 `DSH_DISCORD_TRACE=1` 可将 mux 帧、丢弃点与投递结果输出到 stderr（默认静默）。存在原因：Host 在该面上未为插件日志接线任何 exporter，也没有日志级别开关——`logger.debug` 输出不可见；Host 提供等价机制后应移除。\n\n## 已知限制与推迟项\n\n- **`/preset`、`/skill`、`/host` 保持注销状态** — 控制模块已实现并通过单元测试，待路由接线时回归（`/preset` 的会话线程守卫一并处理）。\n- **verbosity 为全局设置**（DSH 生态有按频道设置的先例）。\n- **经 Kimaki 对齐后有意推迟**：reconcile-interactions 接线、ask 等待期暂停 typing、fail-closed 绑定/会话属主 store 接线、凭据轮换监听。\n- **已知张力**：流式编辑 250ms 下限与高负载下 Discord 编辑预算的冲突（429 自愈），以及 typing 缺少时长上限看门狗。\n\n## 开发\n\n```sh\npnpm install --ignore-scripts\npnpm test          # 729 tests incl. gateway/REST twin E2E\npnpm typecheck\npnpm lint\npnpm build         # lib + client bundle\n```\n\n在 profile 中试用本地构建：\n\n```sh\npnpm pack --pack-destination /tmp\ndsh plugin --profile <your-profile> add file:/tmp/addozhang-dsh-discord-<version>.tgz\n```\n\n`dsh plugin` 会把相对路径锚定到调用目录，因此在已执行 `pnpm build` 的仓库里也可以直接 `dsh plugin --profile <your-profile> add ../fiber`。重复 pack + add 即可刷新已安装副本，然后重启 `dsh web`。\n\n发布由 [GitHub Actions](./.github/workflows/publish.yml) 经 npm trusted publishing (OIDC) 完成（`npm version <level> && git push --follow-tags`）——任何地方都不保存发布凭证。实现遵循 `openspec/changes/build-discord-native-adapter/` 中的 OpenSpec 变更（设计、能力 spec、验证清单、评审报告）。\n\n## 许可证\n\nMIT\n","readmeFilename":"README.zh.md"}