{"_id":"@aiwayds/dsh-model-sync","_rev":"22-c1cb8ead9ee0429400e46b3b9ec46899","name":"@aiwayds/dsh-model-sync","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@aiwayds/dsh-model-sync","version":"0.1.0","keywords":["dsh","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.1.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"73f6130b6d4a248788933019260b5fdc0733bb31","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.1.0.tgz","fileCount":26,"integrity":"sha512-OKJeS+mJLITf0upjR8YWJyM3pSHn8pzkrkyhWupMjmlPegnot96KCwVypMDYZ+ZyHjKuAJ1bp7ETp6K33P8u8Q==","signatures":[{"sig":"MEYCIQD47jmv9rIk51jjkhAVfsEUYMJCKD3xRTJLDHKIxA6VvwIhAPeDz3JW5rtDcy/bNHsk3Vr8f2eapKpyvaJHPyXN/N4a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143322},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"11.17.0","description":"dsh plugin: add-only sync of llm-pi-ai provider routes' model lists from the gateway's /models endpoint, written through the settings seam","directories":{},"_nodeVersion":"26.4.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-credentials":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.1.0_1787124084251_0.6440759201518345","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aiwayds/dsh-model-sync","version":"0.1.1","keywords":["dsh","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.1.1","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"97edc60b33fba64bd621a516a40fadec00a7ddfa","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.1.1.tgz","fileCount":26,"integrity":"sha512-mX9ehHDXsq9tR0d2fZousxPIZIS04J7qSHI2SiBZ1ue6dMHKZ4CoxnZFrEr8I1fO1Kyz8jonDT+8NPd5+45ySA==","signatures":[{"sig":"MEYCIQCqbfSc0ToK8C5OSqTupwMPfaoe/ENhxd7MAXXK2FXnWwIhAJmOGth7RHtVsGdd+zC7IUten0PGet3jkyvHwlt2zwdN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153655},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"11.17.0","description":"dsh plugin: add-only sync of llm-pi-ai provider routes' model lists from the gateway's /models endpoint, written through the settings seam","directories":{},"_nodeVersion":"26.4.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-credentials":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.1.1_1787126767430_0.39320982225286927","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aiwayds/dsh-model-sync","version":"0.1.2","keywords":["dsh","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.1.2","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"42c016286ffe1544defdb345b07a2ead1aac0210","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.1.2.tgz","fileCount":27,"integrity":"sha512-t8x6NtoJiJYh0AH6mKwGb547Wm1jSykWTJ3Ck+Y+GO0UfXxajAyA/nrQ91ZWjn0sZtBO/XLcSEdESRWEiDfuEQ==","signatures":[{"sig":"MEUCIQCh4/Re8JALNMi2MIdvlxuQwaOqktYj6m6pKfG0SUbrbAIgQVX0dxbdK96keMsURCJGz0hvZAT1ySRKGLOkmnVhD3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160623},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"f258c4d3090c4965d8ad6e79c09599a55685c0ce","scripts":{"test":"node --test test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"11.12.1","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-credentials":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.1.2_1787929477595_0.2084883751761244","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aiwayds/dsh-model-sync","version":"0.1.3","keywords":["dsh","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.1.3","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"fb751be9b1af8dedb70d14fa693d18cf16fab586","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.1.3.tgz","fileCount":28,"integrity":"sha512-ezOrtCtxfxDrjkhgE3pGcy2yjiW4UNf+xNo7mRdusQQxdffI/YAJ5qu1cqJL4IDHFbPU7Pb+XVvgOMV191wSBw==","signatures":[{"sig":"MEYCIQDZ+LFGxFAm9tNMvXxIo8mykEEF05cVaYn0WsdA8WKe9AIhAKZ1iOC8MFCH6FTtlfNWg3gbZK1kHaUZJSdZJwRX7pGb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175136},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"ddf1bc013fe8e1ca3c305e9be6910d661c6c8449","scripts":{"test":"node --test test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"deprecated":"Superseded: 0.1.3 crashes every dsh boot (cordis inject gate on the /model-sync registration). Use 0.1.4.","repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"11.12.1","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-credentials":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.1.3_1787933964457_0.986017807661139","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aiwayds/dsh-model-sync","version":"0.1.4","keywords":["dsh","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.1.4","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"f21670c6db37c921a1e86958a63892e0be425479","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.1.4.tgz","fileCount":28,"integrity":"sha512-Tjq6pwjQSh1rbaBmetA3z9d2PIBVGObxM1qB95vlMzPiaVgIB98BTb3EjAJhUe1OUbf0Sd5QZk/AmiQDJ/JvOA==","signatures":[{"sig":"MEUCIQCvGRBA64rQ0BcJxhnqubNK0PRBM37N0++iAEkgYdk1IQIgAd0C6FNtH5avOXWeeozKe59Sa0iOavlp4CYassfXpqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175663},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"b54dee34ce14dc4c25d3a2c878b12f14cda271c9","scripts":{"test":"node --test test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"11.12.1","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-credentials":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.1.4_1787967710177_0.5217901239891218","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aiwayds/dsh-model-sync","version":"0.1.5","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.1.5","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"285b0b613605fa4a172aceed261017530fc26be8","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.1.5.tgz","fileCount":28,"integrity":"sha512-aKmtCFyUuu9pT90+xCAtISq7kP63Y17WhJPdEuPaWgJ3XlHACNLz+7ExiK9hXBcPRzVaSG4v2zHSHHM+6YJi2A==","signatures":[{"sig":"MEYCIQD5Do3UGZfKZFQ1aDZLXbUxfbVg50tUwRjS69k7Ms3hVgIhAP/pVVQHD8B/23kKmqGqMXqZL+dEIkMoyurfQqmaa7x5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176331},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"7689067dea6e83095cb213045ce6753261302f5b","scripts":{"test":"node --test test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"11.12.1","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"25.4.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-credentials":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.1.5_1787973191133_0.011490738606502626","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@aiwayds/dsh-model-sync","version":"0.1.6","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.1.6","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"2524bee2fbed1b9eeea8224ec786f99242aade76","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.1.6.tgz","fileCount":28,"integrity":"sha512-+kDSjnTWopQEARGcCiD5a0xuraUFj+Hk54982vgVieXwCBWbAiDD6N6g3R0TFxeQ7wSiFnHEBYppGmK8zuQRhg==","signatures":[{"sig":"MEUCIQDwRnzsvk7mfbWjNCnKNrJYYEbrFOGTtvLHcvp+tM3ziwIgeH9p9DhPH2Hx1mOOXdbadVrSo4OAxmAvqevuM6+2lZ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":184811},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"da88c9bc2eb350d08a68895af6bf017c4af2334e","scripts":{"test":"node --test test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/schemastery":"3.18.1","@deepseek-ai/dsh-commands":"0.1.1-rc.2","@deepseek-ai/dsh-settings":"0.1.0-rc.6","@deepseek-ai/dsh-credentials":"0.1.0-rc.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-credentials":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.1.6_1788142146043_0.5017733327806786","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aiwayds/dsh-model-sync","version":"0.2.0","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.2.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"fb1058479e6338b7c310770535aad1a09c6fd5cc","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.2.0.tgz","fileCount":28,"integrity":"sha512-YAnjapHT/pQyqCMHk8RlZ+9TjnKd2p5oY2i3307aPV2xXdjplWivwZjS5/Unp1YX5VxRv3973jv5/Ie5cnzVOg==","signatures":[{"sig":"MEQCIH+6IGT79/HCGjfIhPZQAkTOY9wv4D9RTxtDQnFp8lzEAiBOserwC3FCknptGww7eQnQAV3eDaTmRvlN5DU7wZ0Ofg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":186218},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"0f6e3a32dafe3540e7a18f1d4dc618d14a090ad9","scripts":{"test":"node --test test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-alpha.3","@deepseek-ai/dsh-settings":"0.1.2-alpha.3"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-alpha.3","@deepseek-ai/dsh-settings":">=0.1.2-alpha.3"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.2.0_1788280838683_0.33928064778256206","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aiwayds/dsh-model-sync","version":"0.2.1","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.2.1","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"8f7ca2d08ec0cd2c75318d4b3cb0440b8c763b36","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.2.1.tgz","fileCount":32,"integrity":"sha512-/r63s7+Liy+h0pqXNsi3TE+9yVHlTR58ntrbT1ng55cjKB9CQSJfA2XwFFN1HGqBlteIj2/+QAFXe847g87k2w==","signatures":[{"sig":"MEUCIFndYV5Lv7Jksl1uqSX41PSS3yuuV5KQ0j9fPMP1MK1tAiEAp0yfMo1jzAiCpurWEVuDGCNG/oFD0302m0Gz22kHlXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204142},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"172a4ec24b0c94ff1ae204f7af47d3b7c0f523a9","scripts":{"test":"node --test test/live-catalog.test.mjs test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-alpha.4","@deepseek-ai/dsh-settings":"0.1.2-alpha.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-alpha.4","@deepseek-ai/dsh-settings":">=0.1.2-alpha.4"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.2.1_1788309690738_0.9179165955593467","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@aiwayds/dsh-model-sync","version":"0.2.2","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.2.2","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"e33db40cae9c188dd2ed9df83cb69c543e243a59","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.2.2.tgz","fileCount":32,"integrity":"sha512-/3yEWLXJf97o32xCxzHptEI2+sSfiU7fBxiydnhbfBTZwW/2f7FY+OzzrBVlmE2/0XNUAeYXjeMZ3CaNik/WmA==","signatures":[{"sig":"MEUCIFVeOQmrCY+pnhowShZruDBHT1Hpiv7tBRlB86KxL3SUAiEAyYoLcNRfokZTb2dFhWYNNJTiOMdbYXEdE2s25FKs6pk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":243145},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"9e1b2c516afe6b89a5a8e4755209504348fae01b","scripts":{"test":"node --test test/live-catalog.test.mjs test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/writer-overrides.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-alpha.4","@deepseek-ai/dsh-settings":"0.1.2-alpha.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-alpha.4","@deepseek-ai/dsh-settings":">=0.1.2-alpha.4"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.2.2_1788433436894_0.21007086006952025","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@aiwayds/dsh-model-sync","version":"0.2.3","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.2.3","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"dd23e40426b313e56ccb4bc7e7ed93109ca38065","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.2.3.tgz","fileCount":32,"integrity":"sha512-Wpc0pdZrT3JuMRM8XMdkPAHgpOsbBTb6p2twRFTy022jQkfACKCpfznjbKdnbV3b+0yEc3XXw4yTHwHFLYuV1A==","signatures":[{"sig":"MEYCIQD1muxkMi78t0HcoBiUuWOWvAvQMIOPvsevuci2vsEvnwIhAPLld08tBQSeByL3wvdob9+0w+pDI6azBviVcWRXXTDb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":264533},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"e972800ba331b37ac1f01c6935935d789f58855e","scripts":{"test":"node --test test/live-catalog.test.mjs test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/writer-overrides.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-alpha.4","@deepseek-ai/dsh-settings":"0.1.2-alpha.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-alpha.4","@deepseek-ai/dsh-settings":">=0.1.2-alpha.4"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.2.3_1788438892930_0.13557349167111044","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aiwayds/dsh-model-sync","version":"0.3.0","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.3.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"959c223bfeb33a7638a1004574fffee58d0a6a13","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.3.0.tgz","fileCount":32,"integrity":"sha512-ANk4sTm8fWNJwDyl5Nxya1fDnhoilhTq5zHJRCjjKRb+NTzEl8xoHI0U44WmGbQ8n7Ay1B37T7z0O6dM2jibNQ==","signatures":[{"sig":"MEYCIQDAI5ChhQfOMYnCwxmAjBdrdioAwaDUGeS7Otp3A/2wZwIhAM9hEIh1R6o+UqQy1IY1e+ufmPc3sulkmg/aWsrRS73Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":265429},"main":"lib/index.js","pnpm":{"overrides":{"@deepseek-ai/dsh-system-prompt":"0.1.2-rc.1","@deepseek-ai/dsh-session-projection":"0.1.2-rc.1"}},"type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"d965f7f1e86298418dfe68ee474f796e1673a750","scripts":{"test":"node --test test/live-catalog.test.mjs test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/writer-overrides.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/dsh-llm":"0.1.2-rc.1","@deepseek-ai/dsh-agent":"0.1.2-rc.1","@deepseek-ai/dsh-brand":"0.1.2-rc.1","@deepseek-ai/dsh-scope":"0.1.2-rc.1","@deepseek-ai/dsh-session":"0.1.2-rc.1","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-rc.1","@deepseek-ai/dsh-settings":"0.1.2-rc.1","@deepseek-ai/dsh-attachment":"0.1.2-rc.1","@deepseek-ai/dsh-invariants":"0.1.2-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-rc.1","@deepseek-ai/dsh-settings":">=0.1.2-rc.1"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.3.0_1788442362165_0.7468836107212331","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aiwayds/dsh-model-sync","version":"0.3.1","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.3.1","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"efd397575b66f3c6b754191de523b62c5ac7ab8c","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.3.1.tgz","fileCount":32,"integrity":"sha512-P9e1p0U3pi0XCt5gRgT7mVo/hdUej7wDWEXIv++Gr6YQ6GepMQ+1785YmcmCwyLeVWfLgvFpcSRNHS08kWR+xg==","signatures":[{"sig":"MEUCIQCIeP+Tqoqc9t16vDDLXb1mgPF43s0sH/DVRj+y2MenTgIgWPytNcOnsoQxO+KcR9bS88vIEu7lHAsfRT1LFZg8z3k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":267849},"main":"lib/index.js","pnpm":{"overrides":{"@deepseek-ai/dsh-system-prompt":"0.1.2-rc.1","@deepseek-ai/dsh-session-projection":"0.1.2-rc.1"}},"type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"253672ce6b872158e932c16b708bb50e433f24e1","scripts":{"test":"node --test test/live-catalog.test.mjs test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/writer-overrides.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/dsh-llm":"0.1.2-rc.1","@deepseek-ai/dsh-agent":"0.1.2-rc.1","@deepseek-ai/dsh-brand":"0.1.2-rc.1","@deepseek-ai/dsh-scope":"0.1.2-rc.1","@deepseek-ai/dsh-session":"0.1.2-rc.1","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.2-rc.1","@deepseek-ai/dsh-settings":"0.1.2-rc.1","@deepseek-ai/dsh-attachment":"0.1.2-rc.1","@deepseek-ai/dsh-invariants":"0.1.2-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.2-rc.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.2-rc.1","@deepseek-ai/dsh-settings":">=0.1.2-rc.1"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.3.1_1788603364027_0.0714458416509336","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aiwayds/dsh-model-sync","version":"0.4.0","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.4.0","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"96ed9ab95022facdc1c50b7faaadd711fc3432e8","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.4.0.tgz","fileCount":32,"integrity":"sha512-b12Yxtj2aXUscOCP8Qcoog5iNVXMRTmFx/fG5wsaps5bOCKaGh8Q4ifx2PlHStPmSwSINI355XraJvKVXdo8bA==","signatures":[{"sig":"MEUCIFBimxjleKJjd9wAHNapkj8WfjsW5gzYt0SM5RLi1cT2AiEA1yQf3zOdqpODwvXiG8qVScX35w8nd0+KyURq7iF+3Ww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGv13Bm7abgDkZXvQDhj6RqNiqPlU3my3TMoCC8riRd8AiEAur2r02i10z7MlvPmW1y1Im7IG2Vtj/EmlhCxLZTF0ZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":268323},"main":"lib/index.js","pnpm":{"overrides":{"@deepseek-ai/dsh-system-prompt":"0.1.5-rc.2","@deepseek-ai/dsh-session-projection":"0.1.5-rc.2"}},"type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"5abfc08557b7c46eebf758966f0f53b9944ba929","scripts":{"test":"node --test test/live-catalog.test.mjs test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/writer-overrides.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/dsh-llm":"0.1.5-rc.2","@deepseek-ai/dsh-agent":"0.1.5-rc.2","@deepseek-ai/dsh-brand":"0.1.5-rc.2","@deepseek-ai/dsh-scope":"0.1.5-rc.2","@deepseek-ai/dsh-session":"0.1.5-rc.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.5-rc.2","@deepseek-ai/dsh-settings":"0.1.5-rc.2","@deepseek-ai/dsh-attachment":"0.1.5-rc.2","@deepseek-ai/dsh-invariants":"0.1.5-rc.2","@deepseek-ai/dsh-typert-protocol":"0.1.5-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.5-rc.2","@deepseek-ai/dsh-settings":">=0.1.5-rc.2"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.4.0_1789098404869_0.9270642828243245","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@aiwayds/dsh-model-sync","version":"0.4.1","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"author":{"name":"fliu56"},"license":"MIT","_id":"@aiwayds/dsh-model-sync@0.4.1","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"homepage":"https://github.com/fan56/dsh-model-sync","bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"58fdbbd86aa79f1e56df062446eeb3bc4365ca74","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.4.1.tgz","fileCount":32,"integrity":"sha512-PJIL/YdTWflZfsW1iC7zKPXl1P/qPvSMiMuSKc35xZOzUjEL35fIquvqoFf4Bw80YNb3ZcsnRKV2SMIHbh4t1g==","signatures":[{"sig":"MEUCIDeBEVjkmegn5UFhN5fDOAsrwyO/djHrz9Zn9JYBqNlNAiEAgTAZKSfk7AWLJU7LT2xr9UVZEYTAc0r+HO1h9PynBBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDriH+pVkpIGd7yBsbWpd2ewR2Xrad1gNLahhs+cG+iKwIhAPNNFo35cn81eFsG5rJGkWGdGN75UnoPjF5C4eT9i6VL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":275019},"main":"lib/index.js","pnpm":{"overrides":{"@deepseek-ai/dsh-system-prompt":"0.1.5-rc.2","@deepseek-ai/dsh-session-projection":"0.1.5-rc.2"}},"type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"gitHead":"2295ccd6059a1d719fb78c64ace7aa2e36122deb","scripts":{"test":"node --test test/live-catalog.test.mjs test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/writer-overrides.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/dsh-llm":"0.1.5-rc.2","@deepseek-ai/dsh-agent":"0.1.5-rc.2","@deepseek-ai/dsh-brand":"0.1.5-rc.2","@deepseek-ai/dsh-scope":"0.1.5-rc.2","@deepseek-ai/dsh-session":"0.1.5-rc.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.5-rc.2","@deepseek-ai/dsh-settings":"0.1.5-rc.2","@deepseek-ai/dsh-attachment":"0.1.5-rc.2","@deepseek-ai/dsh-invariants":"0.1.5-rc.2","@deepseek-ai/dsh-typert-protocol":"0.1.5-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.5-rc.2","@deepseek-ai/dsh-settings":">=0.1.5-rc.2"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-model-sync_0.4.1_1789435923116_0.9377189151440444","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@aiwayds/dsh-model-sync@0.5.0","dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"dist":{"shasum":"f5c4c4610ebef7d2b5689cf794d49b4bdb2a0be1","tarball":"https://registry.npmjs.org/@aiwayds/dsh-model-sync/-/dsh-model-sync-0.5.0.tgz","fileCount":36,"integrity":"sha512-ynFSwRYB8UZePgHqmHKuollhCZHmNevfs0/cvZAxqdiOs7xDKN0P7KKWtJ5GHwr8GkMbUaMLRU4VkaAVxNY1cQ==","signatures":[{"sig":"MEUCIAjAD3OkJw9eArhagi4CzX3X+ZsZFSaU9gcreTnGikVfAiEAgS0WldPyZdW1xMPvjU4p7V/w6WdtPHm5pZ2wkRrco3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDtexiVaJmzCLjcVcp86R9WV50R1kSCNqguimjuTkUs5AIhAMCaqXLa68TNCgGWyt7KC+tGkO0tzZYjV7ALZ8d+OFqB"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aiwayds%2fdsh-model-sync@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":302657},"main":"lib/index.js","name":"@aiwayds/dsh-model-sync","pnpm":{"overrides":{"@deepseek-ai/dsh-system-prompt":"0.1.5-rc.2","@deepseek-ai/dsh-session-projection":"0.1.5-rc.2"}},"type":"module","types":"lib/index.d.ts","author":{"name":"fliu56"},"engines":{"node":">=22.19.0"},"gitHead":"3cb0e06ba7f4bf6893703a9fa5d7681d4c5841a6","license":"MIT","scripts":{"test":"node --test test/live-catalog.test.mjs test/diff.test.mjs test/translate.test.mjs test/writer.test.mjs test/writer-overrides.test.mjs test/remote-catalog.test.mjs test/serviceability.test.mjs test/command.test.mjs test/real-cordis.test.mjs test/route-credential.test.mjs","build":"tsc -p tsconfig.json","check":"tsc --noEmit -p tsconfig.json","smoke":"node scripts/smoke-boot.mjs","pretest":"tsc -p tsconfig.json"},"version":"0.5.0","_npmUser":{"name":"aiwayds","email":"aiway.ds@qq.com"},"homepage":"https://github.com/fan56/dsh-model-sync","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"_npmVersion":"10.9.8","description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","directories":{},"maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"_nodeVersion":"22.23.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^24.0.0","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/dsh-llm":"0.1.5-rc.2","@deepseek-ai/dsh-agent":"0.1.5-rc.2","@deepseek-ai/dsh-brand":"0.1.5-rc.2","@deepseek-ai/dsh-scope":"0.1.5-rc.2","@deepseek-ai/dsh-session":"0.1.5-rc.2","@deepseek-ai/schemastery":"3.18.2","@deepseek-ai/dsh-commands":"0.1.5-rc.2","@deepseek-ai/dsh-settings":"0.1.5-rc.2","@deepseek-ai/dsh-attachment":"0.1.5-rc.2","@deepseek-ai/dsh-invariants":"0.1.5-rc.2","@deepseek-ai/dsh-credentials":"0.1.5-rc.2","@deepseek-ai/dsh-typert-protocol":"0.1.5-rc.2","@deepseek-ai/dsh-launch-environment":"0.1.5-rc.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/schemastery":"^3.18.2","@deepseek-ai/dsh-commands":">=0.1.5-rc.2","@deepseek-ai/dsh-settings":">=0.1.5-rc.2","@deepseek-ai/dsh-credentials":">=0.1.5-rc.2","@deepseek-ai/dsh-launch-environment":">=0.1.5-rc.2"},"peerDependenciesMeta":{"@deepseek-ai/cordis":{"optional":true},"@deepseek-ai/schemastery":{"optional":true},"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-credentials":{"optional":true},"@deepseek-ai/dsh-launch-environment":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-model-sync_0.5.0_1789634324029_0.42093916726675173"}}},"time":{"created":"2026-08-19T07:21:24.125Z","modified":"2026-09-17T08:38:44.517Z","0.1.0":"2026-08-19T07:21:24.401Z","0.1.1":"2026-08-19T08:06:07.585Z","0.1.2":"2026-08-28T15:04:37.806Z","0.1.3":"2026-08-28T16:19:24.615Z","0.1.4":"2026-08-29T01:41:50.327Z","0.1.5":"2026-08-29T03:13:11.271Z","0.1.6":"2026-08-31T02:09:06.175Z","0.2.0":"2026-09-01T16:40:38.821Z","0.2.1":"2026-09-02T00:41:30.894Z","0.2.2":"2026-09-03T11:03:57.029Z","0.2.3":"2026-09-03T12:34:53.071Z","0.3.0":"2026-09-03T13:32:42.289Z","0.3.1":"2026-09-05T10:16:04.179Z","0.4.0":"2026-09-11T03:46:44.950Z","0.4.1":"2026-09-15T01:32:03.229Z","0.5.0":"2026-09-17T08:38:44.113Z"},"bugs":{"url":"https://github.com/fan56/dsh-model-sync/issues"},"author":{"name":"fliu56"},"license":"MIT","homepage":"https://github.com/fan56/dsh-model-sync","keywords":["dsh","dsh-plugin","plugin","model","sync","catalog"],"repository":{"url":"git+https://github.com/fan56/dsh-model-sync.git","type":"git"},"description":"dsh plugin: keep llm-pi-ai provider routes' model lists in step with the pi.dev gateway, written through the official settings seam","maintainers":[{"name":"aiwayds","email":"aiway.ds@qq.com"}],"readme":"[English](./README.md) | 简体中文\n\n# dsh-model-sync\n\n[![npm version](https://img.shields.io/npm/v/@aiwayds/dsh-model-sync)](https://www.npmjs.com/package/@aiwayds/dsh-model-sync) · [GitHub](https://github.com/fan56/dsh-model-sync)\n\n一个 dsh（DeepSeek Harness）Cordis 插件：把 `llm-pi-ai` 各 provider 路由的模型目录与 pi.dev 网关的模型列表保持同步，并通过官方 settings 接缝（`settings.mutate`）写进 dsh 的 `settings.yaml`——对 dsh 内部零补丁。\n\n**要求 dsh >= 0.1.5-rc.2** — 本插件只跟随 dsh RC/stable 线（CI 与发版在运行时解析 latest/next 中更新的 dist-tag）。**不再支持 alpha 线。**\n\nhttps://github.com/user-attachments/assets/c3f9c8b1-ea5e-470c-b8a8-60a81fc5c20a\n\n*一段 dsh 会话里运行 `/model-sync` 的实录（MP4，1.5× 速度）——丢弃原因、各路由同步状态与变更报告一览。更多 demo 见 [Demos issue](https://github.com/fan56/dsh-model-sync/issues/1)。*\n\n## 为什么\n\n模型列表会漂移：provider 不断上架新模型、下线旧模型、调整能力字段（`contextWindow`、`input` 模态、`thinkingFormat`、reasoning efforts）。靠手工跟进既枯燥又容易出错，dsh-model-sync 替你做完这一切：\n\n- **只增只改的写入。** pi.dev 上的新模型被合并进来，已有模型按需更新，没有变化的路由完全不动——writer 会先和 settings 里的原始 user 段做比较，无变化即跳过（`writer.ts`、`profilesEqual`、`reason: 'no-change'`）。\n- **不再手工维护模型表。** 对受管路由而言，pi.dev remote catalog 就是唯一事实来源，你的 `settings.yaml` 只是它的投影。\n- **定时刷新。** 启动后不久自动跑一轮，之后按可配置的周期持续刷新，目录无需任何手动操作即可保持最新。\n\n## 特性\n\n- **pi.dev 网关同步。** 从 `https://pi.dev/api/models/providers/<route>` 拉取每条受管路由的模型列表，带 ETag/304 revalidation，并在 `~/.dsh/models-store.json` 维护按 provider 持久化的缓存（`remote-catalog.ts`）。瞬时故障与中断保留上次成功的缓存（last-good）；404/501 视为该路由本轮不存在。\n- **默认路由。** `managedRoutes` 为空时，同步以下 pi.dev 路由：`opencode-go`、`zai-coding-cn`、`minimax-cn`、`xiaomi-token-plan-cn`（`src/index.ts` 的 `DEFAULT_ROUTES`）。\n- **两种写模式**（`writeMode`）：\n  - `settings`（默认）——零补丁流水线：fetch → translate → `settings.mutate`。自包含，从不直接改写 `settings.yaml`，只经官方 settings API 落盘。\n  - `overlay`（旧方案）——委托打了补丁的 `dsh-llm-pi-ai` 适配器的 `piAiCatalog.refresh()`，把 pi.dev 条目合并进内存（需要可选补丁）。\n- **定时刷新。** `intervalMinutes` 周期轮（默认 240，即 4 小时）加 `startupDelaySeconds` 启动延迟（默认 5 秒）；每轮自动刷新输出的报告与手动刷新完全相同。`0` 表示关闭周期（仅启动时刷一次）。配置变更时周期会实时重新挂载（`src/index.ts`）。\n- **变更报告 / diff。** 每轮报告新增/移除的模型 id（`diffModelIds`）；`settings` 模式下还会对照当前原始 settings 报告新增/移除/变更的条目（`diffEntries`，`diff.ts`）。被丢弃（dropped）与降级（degraded）的条目连同原因一并报告。\n- **`modelSync` 服务。** 对外暴露 `modelSync` 服务（`syncNow()`），UI 调用它即可强制跑一轮刷新并读取报告。\n- **`/model-sync` 命令。** 插件自行通过共享的 dsh 命令注册表（`@deepseek-ai/dsh-commands`）注册 `/model-sync` 斜杠命令，所有交互式 UI 自动发现并列出——UI 侧零配合。执行它当场强制跑一轮刷新，输出的报告与定时轮完全相同；同步范围由 `managedRoutes` 决定（参数会被忽略）。命令注册表是可选 peer：没有命令注册服务的宿主照常降级，定时刷新与 `modelSync` 服务不受影响。\n- **翻译规则。** pi.dev 条目被翻译成 settings 可写的模型 profile（`translate.ts`）：base-matching 与 base-less 分类、`reasoningEfforts` 推导（S2 gate）、`compat` 门控到 `openai-completions`（S5 gate）、`maxTokens` 处理，以及混合协议路由的丢弃逻辑。容量值另有卫生门：非正整数的 `contextWindow`，或不是「严格小于 contextWindow 的正整数」的 `maxTokens`（有的列表会把 context window 回声填进 maxTokens），一律跳过不写，并在报告中以降级警告说明。\n- **你的覆盖不会被吃掉。** `modelOverrides` 是你自己的按模型调整通道（think level、收窄 context window 等）。dsh 拒绝 models 列表与非空 modelOverrides 并存，因此同步会把覆盖字段折叠进写入的 models、在同一次写入中清掉该键，并把原值存进 `~/.dsh/models-store.json` 逐轮回放——只要路由仍被托管，覆盖就持续压过同步值。\n- **默认安全的开关：**\n  - `keepBuiltinOnly: true`——保留内置目录里有、但 pi.dev 上（还）没有的模型，启用同步不会删掉你正在用的模型。\n  - `dropUnserviceable: true`——丢弃不可服务的条目并继续；设为 `false` 则改为中止整条路由，而不是写入残缺列表。\n  - `forceMaxReasoningEffort`——强制所有 `thinkingFormat` 非空的模型使用 max reasoning effort（确保 `reasoningEfforts` 包含 `max`，并在 `openai-completions` 上强制 `compat.supportsReasoningEffort = true`）。\n- **冲突安全写入。** 写入携带 settings revision，遇 `SETTINGS_CONFLICT` 自动重试一次（`writer.ts`）。\n\n## 安装\n\n需要 Node ≥ 22.19 和一个 dsh profile。作为 dsh 插件安装：\n\n```bash\nnpm i @aiwayds/dsh-model-sync\ndsh plugin add @aiwayds/dsh-model-sync\n```\n\n包内附带 `cordis.patch.yml`（经 `dsh.bundle.patch` 接线），它把插件挂载进 profile 的装配树（稳定的插件 id `dsh-model-sync`），并注册 `model-sync` settings 命名空间。\n\n本插件独立分发——需要时用 `dsh plugin add @aiwayds/dsh-model-sync` 显式安装即可。\n\n## 卸载\n\n```bash\ndsh plugin remove @aiwayds/dsh-model-sync\n```\n\n宿主会自动清理：bundles 条目会从 profile 中摘除，插件自带的 patch 层随包一起消失，同步轮次与 `/model-sync` 命令就此停止。有三样东西会刻意留在磁盘上：\n\n1. **`~/.dsh/models-store.json`——清除前请先备份这个文件。** 它保存目录缓存**以及**你的 `modelOverrides`：在 store-first 不变式下，插件把覆盖值折叠进写入的 models 并清掉 settings 里的键，因此对受管路由而言 store 可能是覆盖值的**唯一**副本。删掉文件就等于删掉它们。\n2. **`~/.dsh/settings.yaml` 里已同步的模型列表。** 插件经官方 settings 接缝把它们写进了宿主持有的 `llm-pi-ai` 命名空间（`providers.<route>.models`）。卸载后它们会保留，并且仍是合法的宿主配置——dsh 会照常消费，就像你手写的一样。不想要就手动删除对应条目。\n3. **极少数情况下的残留暂存文件。** store 的写入走临时文件 + rename；若进程在写入中途死掉，可能留下 `~/.dsh/models-store.json.<pid>.tmp`。直接删除是安全的。\n\n## 用法\n\n在 `settings.yaml` 的 `model-sync` 命名空间下配置本插件——每个键都是可选的：\n\n| 键 | 默认值 | 说明 |\n|---|---|---|\n| `writeMode` | `'settings'` | 零补丁流水线；`'overlay'` 走旧的补丁适配器模式 |\n| `intervalMinutes` | `240 (4h)` | 自动刷新间隔（分钟）；`0` = 仅启动时刷新 |\n| `startupDelaySeconds` | `5` | 首次自动刷新前的延迟，等 llm 适配器就绪 |\n| `refreshTimeoutMs` | `120000` | 单轮刷新网络请求的中断预算（最小 `1000`） |\n| `managedRoutes` | `[]` | 要同步的路由；为空 = 默认 pi.dev 路由 |\n| `keepBuiltinOnly` | `true` | 保留 pi.dev 上没有的内置模型（平滑迁移） |\n| `dropUnserviceable` | `true` | 丢弃不可服务的条目；`false` 改为中止整条路由 |\n| `syncNotify` | `false` | 有变更时通知（logger + `/model-sync` 报告） |\n| `forceMaxReasoningEffort` | `false` | 对 `thinkingFormat` 非空的模型强制 max reasoning effort |\n\n示例：\n\n```yaml\nmodel-sync:\n  writeMode: settings\n  intervalMinutes: 30\n  managedRoutes:\n    - opencode-go\n    - zai-coding-cn\n```\n\n插件写入的是 `llm-pi-ai` 命名空间（`providers.<route>.models`）——与适配器消费的是同一份文档——并且只写它管理的路由。迁移期间，`keepBuiltinOnly` 会保留已安装内置目录中存在、但 pi.dev 上还没有的模型。\n\n### 容量值是模型上限，不是你的运行时实配\n\n同步进来的 `contextWindow` / `maxTokens` 描述的是**模型**在网关列表里宣称的上限，不是你的部署实际配置的值。dsh 解析时 settings 写入的值会压过内置目录，且写入的 `maxTokens` 会成为请求级默认值。如果某条路由实际指向一个上下文更小的本地/代理端点（vLLM / Ollama 之类），却带着目录级的容量值，正是 \"Output token limit reached\" 一族故障的常见配方（参见上游 #1166）。\n\n需要某个模型在更小的预算下运行时，把它写进同路由的 `modelOverrides`——同步会把字段折叠进同步列表，并从本地 store 逐轮回放：\n\n```yaml\nproviders:\n  zai-coding-cn:\n    modelOverrides:\n      glm-5.3:\n        contextWindow: 32768\n```\n\n另外列表数据本身可能有噪声：容量值有卫生门（正整数；`maxTokens` 必须严格小于 `contextWindow`），被剥离的值会在同步报告里以 `DEGRADED` 行连同原因出现。\n\n### 手动刷新：`/model-sync` 命令\n\n在任意交互式 UI 里输入 `/model-sync` 即可当场强制跑一轮同步。命令由插件自己注册进共享命令注册表（`@deepseek-ai/dsh-commands`），UI 自动发现。它返回与定时轮相同的报告；同步范围由 `managedRoutes` 决定，命令后面的参数一律忽略。没有命令注册服务的宿主会平滑降级——定时刷新与 `modelSync` 服务照常工作。\n\n## 开发\n\n```bash\nnpm run build   # tsc → lib/\nnpm run check   # tsc --noEmit 类型检查\nnpm test        # node --test（pretest 先构建）：diff / translate / writer / remote-catalog / serviceability / command\n```\n\n测试使用 `test/fixtures/` 下按路由组织的 pi.dev fixtures，并用临时目录充当 models store——绝不触碰真实的 `~/.dsh`。\n\n`scripts/` 下的工具脚本：\n\n- `generate-builtin-snapshot.mjs`——从已安装的 `@deepseek-ai/dsh-llm-pi-ai` catalog 重新生成 `src/builtin-catalog-snapshot.ts`（`--generate` 用于开发，`--check` 用于 CI）。\n- `verify-no-patch.mjs`——若已安装的 `dsh-llm-pi-ai` 仍带有 overlay 补丁签名（`withRemoteCatalog` / `piAiCatalog`）则非零退出。\n- `backup/backup-patched.mjs`——把打过补丁的 `dsh-llm-pi-ai/lib/index.js` 备份到 `backups/`。\n- `backup/restore-official.mjs`——从 npm 恢复官方未打补丁的 `dsh-llm-pi-ai/lib/index.js`，并对照补丁校验（支持 `--dry-run`）。\n\n仓库还保存了记录旧 overlay 行为的参考补丁：`docs-dsh-llm-pi-ai.patch`（`dsh-llm-pi-ai` 的 pi.dev remote-catalog overlay）与 `docs-dsh-llm-pi-ai-compat.patch`（`supportsDeveloperRole` compat 透传）。\n\n## 许可证\n\nMIT。\n","readmeFilename":"README.zh-CN.md"}