{"_id":"@arcaneorion/dsh-model-channel-manager","_rev":"10-507f2ae44c0a38811fc4d3f798c1f760","name":"@arcaneorion/dsh-model-channel-manager","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.1.0","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.1.0","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/arcanexis/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/arcanexis/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots","connection"],"platform":"web"}},"dist":{"shasum":"fe8c09d8ca40dd65d1639c8d7fcabc132e6c56d1","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.1.0.tgz","fileCount":5,"integrity":"sha512-iQD6Guwm7krBjzwfjnp0ewxfj8bW8SLTsqwSdNwYr8o5PoOA+abUZ1UirjkFlweLFHVOLCMLQSVyStoaud634g==","signatures":[{"sig":"MEYCIQDI9mUdRLc5AkvxQep8uptP1dfBgjlJcKaMIATEtrbQhwIhAOw/2HY5JCdWdDvgbB3MnV4DPOh1ljjYSKCoxmA7bowY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161636},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"ce755cb514632f380b1ac7553a990412aeb275eb","_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/arcanexis/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/schemastery":">=3.18.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.1.0_1788620687382_0.25731519125959457","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.2.0","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.2.0","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots","connection"],"platform":"web"}},"dist":{"shasum":"378fbf6f3845d1ad09855e403efbb33dc3713d0c","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.2.0.tgz","fileCount":5,"integrity":"sha512-GyLotgEonFfx8cFVv0dr21QxzCrPbPHW+KsLz52sHYC7mtiGe8QuZxShYOyJvY2EY8MacjhqMmKzQ0mlmGVCGg==","signatures":[{"sig":"MEUCIC9fsiMg7mPHUboTM95LYKKnBcsi2dhPDccK8gQn9fA4AiEAqdG2N8EqOVdStKLR6OpQ/wxcAhE7gn91KhAfj+pGlOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCAXFSa+g0lXLTZHNhMMWWlCxeg9m4QdNQwLO10rBkvPAIgfKhoH4aIAXFTTBp9bARupL0tAkowaS4uiR/eewABiVE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173600},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"4b95b4d67a25e0630b0eb775f83732f49d7ce417","_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.1","@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-llm":"0.1.1-rc.2","@deepseek-ai/schemastery":">=3.18.2","@deepseek-ai/dsh-settings":"0.1.1-rc.2","@deepseek-ai/dsh-client-connection":"0.1.1-rc.2","@deepseek-ai/dsh-client-ui-conversation":"0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.2.0_1789439798854_0.7530269273339387","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.3.0","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.3.0","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots"],"platform":"web"}},"dist":{"shasum":"e054453e50be8bad2b7a96b2513ec96d7580aa4d","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.3.0.tgz","fileCount":5,"integrity":"sha512-zN/vLApzmGAr+tMiFGc7e3ZXcRo+jhyFPDvvEW0Nn3zXTzl6TBS2RscelKrRyL6nv9jgmityCCOxCOO55qXwAA==","signatures":[{"sig":"MEUCIGMYX37jym1vYB4tKkVDqlsqAb4gyfoQNJpU++iFDvhHAiEAy/Lk9KqYpLWIOxXfn0eCZT05Hfoaow3rEBQWAUatGtI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCbdvBW0KeOw0/JXVInkdgge0BZpbsM6BqWaypnRRLL4QIgN+Tz5/AXgLEwy/uWYn5hN/hcyOsTRnalR7pUmFHWcwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188337},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"49632b37677c9c5760b571392ff1427761b020f5","_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.17.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.1","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.1","@deepseek-ai/schemastery":">=3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.1","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.1","@deepseek-ai/dsh-client-connection":"0.2.0-rc.1","@deepseek-ai/dsh-client-ui-conversation":"0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.3.0_1790682802259_0.8238262094125166","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.3.1","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.3.1","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots"],"platform":"web"}},"dist":{"shasum":"1ba979687fd31657611da9268afb02b4a83a147b","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.3.1.tgz","fileCount":6,"integrity":"sha512-5J9iN3e+ABOlU5I9mWJE5LXfHl9VeqaBsW/eO7eKTtMLdaS4AK5RdFwhLouETNnFnHo33h8uAOfUjh+/w7rTrg==","signatures":[{"sig":"MEYCIQDLHh+BOSA9bqcqxW9jDvB/xYbCI5eABH+xJZxBFECz3AIhAPryiorKpXXWQoPloS2FI6Or/hMSwJ5dKKzU8hM7KzYX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIG2VOkcusWl07o8xiJtzx3mxb6tqa7/3LLbmWxjcsye3AiEAhJd3SZw2s7k5lrZmuQFfbDqYjcLKEY8Tu//mlRNYaxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207964},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"6bc1f5bb64551d59293d58bfd5fbb67e9dcc3932","_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"zod":"^4.4.3","react":"^18.3.1","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.1","@deepseek-ai/schemastery":">=3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.1","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.1","@deepseek-ai/dsh-storage-domain":"0.2.0-rc.1","@deepseek-ai/dsh-client-connection":"0.2.0-rc.1","@deepseek-ai/dsh-client-ui-conversation":"0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.3.1_1790775706104_0.5929410088432707","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.3.8","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.3.8","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots"],"platform":"web"}},"dist":{"shasum":"91cb5638c9210a70c38050a93996955e49a26cfd","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.3.8.tgz","fileCount":6,"integrity":"sha512-lG0wbE4GpmESfJEQVm/ujfJrKm53DkiKnTNQFpSq+ZUVIxry1o3qZWisles2wti8RzlI31V//uDtaGBDKg1GZA==","signatures":[{"sig":"MEUCIQDslPa4upmyoSgomNirkzarYttb4Vc5GGuaG+8UHHhGoQIgPD9PGC338ZKthb99+jHRLbvKyiX6a0xgM3jcfKq78Ps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDTvipfPI4vUuxYd/9xYdW18UI9lJKjOHEyeIiYyuvoEQIhAKjG3JJWuqQeVgNa0Z6rOb8gOS0ona/3Cg17T9OnIERL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234616},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"9376d75aba4788e04d08c63ed2228e6a80443798","scripts":{"test":"node --test \"tests/*.test.cjs\""},"_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0"},"peerDependencies":{"zod":"^4.4.3","react":"^18.3.1","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.1","@deepseek-ai/schemastery":">=3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.1","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.1","@deepseek-ai/dsh-storage-domain":"0.2.0-rc.1","@deepseek-ai/dsh-client-connection":"0.2.0-rc.1","@deepseek-ai/dsh-client-ui-conversation":"0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.3.8_1790783551822_0.02004591262017419","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.3.12","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.3.12","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots"],"platform":"web"}},"dist":{"shasum":"f607cd97661e98260f729f566a2be37b2a38a410","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.3.12.tgz","fileCount":6,"integrity":"sha512-dFZb010TwcdNGP1Ss5iG0iDrYlyVbOPZWgozfAX+IPiSDnjJWpRsIdAXJFP148CiIkgiooxjz+no7s3JNnUNjg==","signatures":[{"sig":"MEUCIHRzPadi7wTQGlaDampfmyZIhvoCJHI47V1lPZD2czeaAiEA0nnZPlIRUfhErGiXx25RKWCFbKJs3I7+vYYnyrC9xWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCVnbe9a1QMWX/E/zZ8+iIryZOXFCpoaWPaokm8Kdph/QIgJLBKaJwom0WyTtQHkGNRc+RgulC5EmMc/ZMj53pD99A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254233},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"da866295d8742a5906c87042930bd09b0d9061fe","scripts":{"test":"node --test \"tests/*.test.cjs\""},"_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0"},"peerDependencies":{"zod":"^4.4.3","react":"^18.3.1","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.1","@deepseek-ai/schemastery":">=3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.1","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.1","@deepseek-ai/dsh-storage-domain":"0.2.0-rc.1","@deepseek-ai/dsh-client-connection":"0.2.0-rc.1","@deepseek-ai/dsh-client-ui-conversation":"0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.3.12_1790827098881_0.6040499519884743","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.3.13","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.3.13","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots"],"platform":"web"}},"dist":{"shasum":"c5fbeb8635bf05953afe1511f46d8f6fcd99a194","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.3.13.tgz","fileCount":6,"integrity":"sha512-suIBFhIdNv9ZHgivx+5KfLCk3LavmNisUdW/pBEjsKcyz8vls/5VTR3RBVLRSMHloiBcVGbb+l9RtpVGGRRD2w==","signatures":[{"sig":"MEUCIAukOutFNhXqhWRbYL88Ocq+xmFIaN4uRPjcOTrZW03RAiEAglMz9XRq294IHu255lH6JZWfLKHaPjoXTH4XW7FJ9MU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDVHPqIvl/WHMa2KaYwcOHMuwBZ/4RxHG38VTcmFQFHSgIhAMD9yKQWrjqlwTR2dvW/XTnERqr7AHYQc90iGqQC6LkK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268506},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"75db46938329fb35c25b89083c64a4ea2c0b9b1f","scripts":{"test":"node --test \"tests/*.test.cjs\""},"_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0"},"peerDependencies":{"zod":"^4.4.3","react":"^18.3.1","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.1","@deepseek-ai/schemastery":">=3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.1","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.1","@deepseek-ai/dsh-storage-domain":"0.2.0-rc.1","@deepseek-ai/dsh-client-connection":"0.2.0-rc.1","@deepseek-ai/dsh-client-ui-conversation":"0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.3.13_1790828507663_0.4867808570547185","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.3.14","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.3.14","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots"],"platform":"web"}},"dist":{"shasum":"28b4533a692abd0f09de776e55b0e1f383c501d1","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.3.14.tgz","fileCount":6,"integrity":"sha512-sv2uu6pADnwkLzmw7ljhtgCEClBgGq4znuO2Hck01c2BgjIR5YdWB7SuABa4xHY0IiKyd4qX/9ohJ05agfWSaQ==","signatures":[{"sig":"MEQCIHKXDKWDaSNa5Ueu9xBEqubgTyiBRTJ7DzXOJbedx3cCAiAcORDKQ3BniMGVTZSN1w+myk320WXzJvpNXJtvoWx8BA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDy7iPPgPwWdTJfnytuvoUp9z018gpTeN9XYrAhRj2u2QIhALOd4qXd71jWwmQC20dwDaHu+rkYvV4u216US4QcyoeP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275845},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"a2d2a625e33272c420fa683ec2bed03e5608932f","scripts":{"test":"node --test \"tests/*.test.cjs\""},"_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0"},"peerDependencies":{"zod":"^4.4.3","react":"^18.3.1","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.1","@deepseek-ai/schemastery":">=3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.1","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.1","@deepseek-ai/dsh-storage-domain":"0.2.0-rc.1","@deepseek-ai/dsh-client-connection":"0.2.0-rc.1","@deepseek-ai/dsh-client-ui-conversation":"0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.3.14_1790836341194_0.5650514727449223","host":"s3://npm-registry-packages-npm-production"}},"0.3.15":{"name":"@arcaneorion/dsh-model-channel-manager","version":"0.3.15","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"author":{"name":"arcanexis"},"license":"MIT","_id":"@arcaneorion/dsh-model-channel-manager@0.3.15","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots"],"platform":"web"}},"dist":{"shasum":"ce366feeedf64f94f8f269a792b82f7895e08904","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.3.15.tgz","fileCount":6,"integrity":"sha512-3mbdMgAFsyDwRbdV9Z6GNQl6PDnOYRzx3BwrvTHlACkWUGrioJeAjGzCYcQ/kZINHvldpthfArETcgmD9QHy6g==","signatures":[{"sig":"MEQCIBEk++OEddn/nJwobZ51S6+iAxfScoXj0kWPPqjQb3tEAiBFdHFQUI3GS1LXWmwGqRpJVvxa6XXjK7YhuVuCV5uqeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFh/oQTBLcbBd46EldrZjrHyZ/GHMMoMFKsn8U/auzwwAiEA12aDKpS0zwu67C9wMOnezhLZ5///gTQEMvzG4c6mgx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278984},"main":"src/index.js","type":"module","exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"336c8679fe31a9b529157bc7054562c4fa1d3b36","scripts":{"test":"node --test \"tests/*.test.cjs\""},"_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","acorn":"^8.18.0"},"peerDependencies":{"zod":"^4.4.3","react":"^18.3.1","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.1","@deepseek-ai/schemastery":">=3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.1","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.1","@deepseek-ai/dsh-storage-domain":"0.2.0-rc.1","@deepseek-ai/dsh-client-connection":"0.2.0-rc.1","@deepseek-ai/dsh-client-ui-conversation":"0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-channel-manager_0.3.15_1790849901126_0.7082724344616973","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@arcaneorion/dsh-model-channel-manager@0.4.0","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["slots"],"platform":"web"}},"bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"dist":{"shasum":"0192a4dd9ff68ace15f69aa3ad0ea65a105ecdc6","tarball":"https://registry.npmjs.org/@arcaneorion/dsh-model-channel-manager/-/dsh-model-channel-manager-0.4.0.tgz","fileCount":7,"integrity":"sha512-97xqwuQaP4Zr2ANimCVaeSuP29aNkqM6ZqEjdJe2UfxBicyRlly61Z5KGWoa4GCS1s/mt4hccPqp68A73IiWHQ==","signatures":[{"sig":"MEUCIQCtDq0t47toWzH6RNRuVIODFpvlsywjthUkpNDLRtX3KAIgWC9NoREaFNSk7uJOCpR2c5tYmEY0Hj8/1DF0DVO1Pxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBGWLAdfGMFEfFbsanisMT9zwwa0IWdjTyVKlBrcn5bVAiBhXyMDHvZrHfIIL9WUUqTq8OChmWbSLwxiWreHUhRLLg=="}],"unpackedSize":207629},"main":"src/index.js","name":"@arcaneorion/dsh-model-channel-manager","type":"module","author":{"name":"arcanexis"},"exports":{".":"./src/index.js","./client":"./src/client.js","./package.json":"./package.json"},"gitHead":"bcb5c5a634552e357aa0ae992f3396d19048f2a3","license":"MIT","scripts":{"test":"node --expose-internals --test \"tests/*.test.cjs\"","test:browser":"node scripts/test-browser.cjs","test:framework":"node --test tests/framework/volatile-rollback.cjs"},"version":"0.4.0","_npmUser":{"name":"arcaneorion","email":"3526162625@qq.com"},"homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"_npmVersion":"11.9.0","description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","directories":{},"maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","acorn":"^8.18.0","esbuild":"^0.28.1","react-dom":"^18.3.1","@deepseek-ai/dsh-hmr":"0.2.0-rc.1","@deepseek-ai/dsh-storage":"0.2.0-rc.1","@deepseek-ai/dsh-app-boot":"0.2.0-rc.1","@deepseek-ai/dsh-storage-json":"0.2.0-rc.1","@deepseek-ai/dsh-config-editor":"0.2.0-rc.1","@deepseek-ai/cordis-plugin-timer":"^1.1.2","@deepseek-ai/dsh-typert-registry":"0.2.0-rc.1"},"peerDependencies":{"zod":"^4.4.3","react":"^18.3.1","@deepseek-ai/cordis":"^4.0.4","@deepseek-ai/dsh-llm":"0.2.0-rc.1","@deepseek-ai/schemastery":">=3.18.4","@deepseek-ai/dsh-settings":"0.2.0-rc.1","@deepseek-ai/dsh-api-gateway":"0.2.0-rc.1","@deepseek-ai/dsh-api-remotes":"0.2.0-rc.1","@deepseek-ai/dsh-storage-domain":"0.2.0-rc.1","@deepseek-ai/dsh-typert-protocol":"0.2.0-rc.1","@deepseek-ai/dsh-client-connection":"0.2.0-rc.1","@deepseek-ai/dsh-client-ui-conversation":"0.2.0-rc.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-model-channel-manager_0.4.0_1790859099442_0.08882230732056517"}}},"time":{"created":"2026-09-05T15:04:47.225Z","modified":"2026-10-01T12:51:39.670Z","0.1.0":"2026-09-05T15:04:47.514Z","0.2.0":"2026-09-15T02:36:40.257Z","0.3.0":"2026-09-29T11:53:22.344Z","0.3.1":"2026-09-30T13:41:46.184Z","0.3.8":"2026-09-30T15:52:31.924Z","0.3.12":"2026-10-01T03:58:19.019Z","0.3.13":"2026-10-01T04:21:47.764Z","0.3.14":"2026-10-01T06:32:21.336Z","0.3.15":"2026-10-01T10:18:21.213Z","0.4.0":"2026-10-01T12:51:39.527Z"},"bugs":{"url":"https://github.com/ArcaneOrion/dsh-model-channel-manager/issues"},"author":{"name":"arcanexis"},"license":"MIT","homepage":"https://github.com/ArcaneOrion/dsh-model-channel-manager#readme","keywords":["deepseek","harness","dsh","dsh-plugin","llm","roundrobin","failover","model"],"repository":{"url":"git+https://github.com/ArcaneOrion/dsh-model-channel-manager.git","type":"git"},"description":"DSH model channel manager: roundrobin failover engine (host) + model config view tab (client).","maintainers":[{"name":"arcaneorion","email":"3526162625@qq.com"}],"readme":"# @arcaneorion/dsh-model-channel-manager\n\nDSH 的模型渠道管理插件：提供商与模型编辑、轮询故障转移、真实模型测试和健康统计。当前版本 **0.4.0**，针对 DSH **0.2.0-rc.1**。\n\n模型选择器是独立插件 `@arcaneorion/dsh-model-selector-search`；本包占用 `conversation.view` 的「模型配置」页签。\n\n## 0.4.0 的变化\n\n健康统计、运行态、模型测试和测速任务全部迁出 settings。常规请求、健康刷新和测试不会再重写 `cordis.patch.yml`，也不会推动配置 revision。健康页保留原有四张指标卡、供应商分组、模型状态卡和可用率条，30 分钟 / 24 小时 / 7 天改为按事件时间精确筛选。\n\n测试和测速现在有独立任务编号、完成状态和取消按钮。重复提交同一编号只执行一次；宿主重启不会重放未完成任务。保存前核对编辑基线，拒绝覆盖另一页面已经修改的字段。\n\n## 安装与加载\n\n```sh\nnpm install\nnpm test\n```\n\n宿主以本地 `link:` 安装时，Node 从插件真实路径解析依赖，因此此目录必须能解析 package.json 中列出的 peer dependencies。不要只依赖 profile 目录的符号链接。宿主提供 React、Settings、Gateway、Connection 和模型运行时，不启动额外 HTTP 端口。\n\nDSH profile 挂载本包的 `cordis.patch.yml`。默认实例 id 为 `model-channel-manager`，每个 profile 使用一个实例。升级 host 后刷新浏览器，避免旧页面继续使用已经移除的任务通道。\n\n## 配置与数据归属\n\n| 数据 | 所属位置 | 写入时机 |\n|---|---|---|\n| groups、providerOrder、effortMemory | 本插件的 Config / profile patch | 用户保存配置 |\n| 提供商及模型配置 | `llm-pi-ai` 的 Settings | 用户保存配置 |\n| API Key | DSH credentials | 用户输入并写入凭据 |\n| 健康事件与测速结果 | `model_channel_health` storageDomain | 请求完成 / 测速完成 |\n| 路由运行态与任务结果 | `model_channel_state` storageDomain | 运行态合并写、任务开始和结束 |\n| 历史 health 原文 | `model_channel_state.legacy` | 首次成功迁移时归档 |\n| UI 健康摘要 | 内存派生，通过 Gateway 读取 | 健康页在前台时每 5 秒读取 |\n\n原始健康记录沿用既有 domain 和版本：每桶最多保留 300 条，最多 7 天。时间窗口统计精确作用于**保留的记录**，不代表无限历史全量统计。延迟均值只统计有有效延迟的成功记录。没有调用时成功率显示「—」，不推断模型在线。\n\n模型测试计入健康统计；测速不计入正常请求统计。输入、输出和缓存 token 按上游 usage 分别累加，不重复计算 reasoning token。\n\n任务数据按 profile 路径和实例 id 隔离。完成任务最多保留 100 条，进行中的任务不被裁剪；幂等保证适用于仍被保留的任务编号。不同参数复用同一编号会返回 `TASK_CONFLICT`。单个实例同时最多执行 4 项任务，同一个组最多一项显式测速。\n\n没有 storageDomain 时仍能使用路由、测试和面板，页面会显示内存模式；新增数据不能跨重启保留。存储出错会显示错误，不会删除尚未成功迁移的旧配置。任务预留写入失败时不会调用模型；终态写入失败时保留当前进程内的实际结果并返回 `persistenceError`。\n\n## 升级迁移\n\n0.3.x 的 `config.health` 仅作为迁移输入，已从可编辑 Settings 表单隐藏：\n\n1. 打开原健康存储和新的状态存储。\n2. 归档旧 health 原文，合并历史事件和测速结果，保存运行态与测试结果。\n3. 已完成结果保持终态；历史未完成任务标记 `ABORTED`，不重新调用上游。\n4. 全部成功后，使用 ConfigEditor 一次性删除旧 health。若迁移期间有人改动旧 health，保留配置并显示提示。\n\n这次删除可能触发一次插件重载；之后不再有健康数据的配置写入。迁移幂等，不因旧 `healthMigrated` 标记存在而跳过尚未导入的数据。旧原型 `.channel-manager/config.json` 不再被自动导入，避免用户清空组后旧配置复活。\n\n## 运行时接口\n\n宿主提供 `modelChannels` Source Remote，客户端通过现有 Connection / Gateway 调用：\n\n```js\nconst result = await ctx.connection.rpc.call(\n  '/api', 'modelChannels/invoke',\n  { args: { method: 'snapshot', payload: {} } }, signal,\n)\n```\n\n所有请求经过 DSH 的认证与响应信封。返回 `{ ok: true, value }` 或 `{ ok: false, error }`；客户端必须检查 `ok`。\n\n| method | payload | value |\n|---|---|---|\n| snapshot | `{}` | 三个时间窗口的摘要、测速结果、路由运行态、存储状态 |\n| test | `{ nonce, provider, model, prompt?, maxTokens? }` | 已预留的任务 |\n| speed | `{ nonce, group }` | 已预留的测速任务 |\n| task | `{ id }` | 当前任务状态和结果 |\n| cancel | `{ id }` | 当前任务，取消状态随后通过 task 确认 |\n\nnonce 接受安全正整数或最多 128 字符的字母数字、下划线、点、连字符字符串。prompt 最多 16000 字符，maxTokens 为 1–8192。模型测试总时限 45 秒；单候选测速使用组里的 timeoutMs。用户取消会中止上游并结束任务，页面卸载会停止该页面的轮询。\n\n## 轮询路由\n\n每个组注册 `roundrobin/<组id>`，支持 sticky、round-robin 和 primary 策略。组 id 同时是虚拟模型的显示名；组内候选只能引用真实渠道。\n\n轮询选择时原子推进指针；单候选重试耗尽后切换候选。首响应和流中空闲均有超时，组级 `totalBudgetMs` 默认 10 分钟。测速支持 ttft、latency、hybrid 和 smart 排序；启用自动测速且无历史结果时，首次真实使用触发一次后台测速。\n\n提供商重命名同步轮询组及其 presets 中的引用，保留凭据引用名。历史健康数据继续归属原供应商 id。\n\n## 配置保存\n\n读取与写入使用实际实例 id；提供商写入直接发送给 `llm-pi-ai`。保存前比较远端值与当前编辑基线，只有未被别人改过才使用最新 revision 提交；并发发生在提交窗口时由 Settings 冲突检查兜底。\n\n两个配置实例没有跨实例事务。部分保存会明确显示哪部分成功，哪部分失败。点击「重新加载配置」会用宿主当前值重新建立草稿，请先确认不再需要未保存的编辑。\n\n## 验证与框架修复\n\n```sh\nnpm test\nnode scripts/verify-framework.cjs /path/to/deepseek-harness/vendor/loader/src/index.ts\nnode scripts/apply-framework-fix.cjs          # 仅检查适用性\nnode scripts/apply-framework-fix.cjs --apply  # 显式本地修复并执行回归，失败自动还原\n```\n\n框架修复针对已审计版本：Loader 拒绝非法 volatile 候选并恢复旧 raw/options；ConfigEditor 验证目标行确实接受了配置，避免 Group 吞掉错误后仍报告成功。备份在 `backups/framework-*/`，源码补丁在 `patches/`。重装宿主依赖可能覆盖这项本地修复，需重新检查；插件的新状态通道本身不依赖此补丁。\n\n`tests/runtime-api.test.cjs` 经临时 profile 启动真实 Loader、Settings、ConfigEditor、Gateway、Connection、LLM 和 JSON storage，只替换外部模型适配器。覆盖认证、迁移、重启恢复、重复任务、取消、输入边界以及配置不变性。\n\n浏览器验证使用 `tests/browser/preview.cjs` 与 `tests/browser/e2e.py`；图片与结果记录在 `docs/screenshots/`。纠正后的审计见 [docs/AUDIT-cordis-config-state-pollution.md](docs/AUDIT-cordis-config-state-pollution.md)。\n","readmeFilename":"README.md"}