{"_id":"@duke-dsh-plugins/dsh-token-stats","_rev":"16-f7d9f8b6bfb692c8dba45196f6447531","name":"@duke-dsh-plugins/dsh-token-stats","dist-tags":{"latest":"1.7.2"},"versions":{"1.3.0":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.3.0","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.3.0","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"6444580e13dba4c8503909052226af87137b4af2","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.3.0.tgz","fileCount":7,"integrity":"sha512-d9ZfCpwaZhYkOyRo3nFEVAVMrw2WRL1q/cUCk1UEjzTcmc/y5lILqsl4wMLPNbEBdLdK7YKdT5SOixak3xrRyQ==","signatures":[{"sig":"MEQCIFiTV6KD9WjxtN58JwdQCPgTQblEpZocU6EaCaQ15RWIAiBy+/vbC4Zw7SXjfTUUQJI7H/oL+VfUFTqsW5XoOa8+ig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59470},"main":"index.js","type":"module","exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"76f8df71d2f0deb4143bf79fe318c5fabde12f0a","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs"},"_npmUser":{"name":"dukebywwh","email":"wwhbygx@sina.com"},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.17.0","description":"Token usage statistics for DeepSeek Harness: last-7/30-day per-model daily and total consumption (bar chart + donut), plus a GitHub-style contributions heatmap over the last year.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.3.0_1787440101928_0.6436539864919268","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.3.1","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.3.1","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"47be497a624d1dc77ca8c17a0ff1f4d6873a6557","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.3.1.tgz","fileCount":7,"integrity":"sha512-HeBT3LnZUids8S04+HvcAVygCZrywKL642YPmXUEddRKTjBNmywmg3IblYT5cl5qjVEMs/yN2+X5++z5fgxo1Q==","signatures":[{"sig":"MEQCIHTglagBjAd0wRJp/kEYegxd4jDQKiUkvPSgbt612ixtAiBENPleo8r4p8n9XkwSMSTIqTzFzR448HSAoFRCWf3Xtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59470},"main":"index.js","type":"module","exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"36d47727f8e1f16608e673b0a3c7a50f1eb8dc32","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.17.0","description":"Token usage statistics for DeepSeek Harness: last-7/30-day per-model daily and total consumption (bar chart + donut), plus a GitHub-style contributions heatmap over the last year.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.3.1_1787440797319_0.30102940382563825","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.3.2","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.3.2","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"c42c5d28c86d592e99dc51f0e0964d743d84544e","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.3.2.tgz","fileCount":7,"integrity":"sha512-OekU5jbeCamtn86Y/aOTDwfwZ5BJDCkeZLwNcRnoVh0F8qrIVtTjjIHAZosW+vnkR7Ty7g+pOsW3CWjLQS+klw==","signatures":[{"sig":"MEUCIQDGP2DZC4IRFPo+E+vFxfJUulrSlsZ24MwazBSIwDGyEgIgH1gJrBH5cOnuby6Px6dtbREjcCeSAmL1/NTPa/TLiN8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59488},"main":"index.js","type":"module","exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"1eef9c9e3016f533075799d9696d28611f6e1ed8","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.17.0","description":"Token usage statistics for DeepSeek Harness: last-7/30-day per-model daily and total consumption (bar chart + donut), plus a GitHub-style contributions heatmap over the last year.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.3.2_1787442786893_0.7968101017537272","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.3.3","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.3.3","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"e19a013b2053c3aeba4495eb1374e95ba3f559a7","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.3.3.tgz","fileCount":7,"integrity":"sha512-V/VIlGFq+PZLzcLcw3kaTOwM2cK44M+BFW+cWgzfGhWg9qJZRcKPVHKZCjpGJ5twnHm5xxhkMwKPWKfG1SxbTQ==","signatures":[{"sig":"MEUCICwmU2aodKzOhMWHiq2enka/U/1oiLR3oXdd0DqukXm6AiEAto11qTj4iLA3ENVgAGp+O+Hnl8HsdCeYpszNGVZ++DM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59506},"main":"index.js","type":"module","exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"690a6c6cb5d67b5ed65f55a208e7362646eb6bed","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.17.0","description":"Token usage statistics for DeepSeek Harness: last-7/30-day per-model daily and total consumption (bar chart + donut), plus a GitHub-style contributions heatmap over the last year.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.3.3_1787443970289_0.9219075907294003","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.3.4","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.3.4","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"fe1f59f4b155face7ea13149e127d0657208187f","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.3.4.tgz","fileCount":7,"integrity":"sha512-h8L5n8QLrFnVlkjYKgMBewdwsu2AFCIiUMM5rKPHwJLsdD/bLUEN7etddmh4kSjmtBVM4rCj/rVAZcmgM7UJKg==","signatures":[{"sig":"MEUCID6nDMDeewE5DH/UalZuRSdqcjQXT48hZd+Kex6mdFQpAiEAsqHB6ShtsjRComuLEbwsQnZuf5lvc2C9/DXKtc+SjGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":59524},"main":"index.js","type":"module","exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"194ffa8819e7f91a6eb0e5d861605788c7e1d269","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.17.0","description":"Token usage statistics for DeepSeek Harness: last-7/30-day per-model daily and total consumption (bar chart + donut), plus a GitHub-style contributions heatmap over the last year.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.3.4_1787444284359_0.4592877750866673","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.4.0","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.4.0","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"855d189a10347b60092644a7e62209dd0100d222","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.4.0.tgz","fileCount":7,"integrity":"sha512-uBCQQLYX+I6qjl/U6F0qOFW0OxoU/h2mKBy+yWSNTjTJHbd21zN+9BUzzcTz8Gf7gAvrfZnvrPxn9DPQufnNGQ==","signatures":[{"sig":"MEUCIQCXtm5VH8+NFNGbu8RAoBMUCRoumgCdYal3iPvze8ljzwIgIoi9XZEW2vtOA6Suorf7jgzxTfbG3ZIA4zzMZpe/9wQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCO/RSrR2PthU3XJ/rZlNk954yOYXua1iRXtkDAcdr6SwIgMLxR3l6JlFzAfDv/ZW3V7D38vEMrwlNdexGYwpkJFBY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":110397},"main":"index.js","type":"module","exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"54d8c3f5e55e1a4aeac17b7d0399b6dd7c371a4e","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","smoke:quota":"node scripts/smoke-quota.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu).","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.4.0_1789796996098_0.8936999940191925","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.5.0","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.5.0","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"e368d8d4f0e720add4b5db8b4ac9dbfa77d979fa","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.5.0.tgz","fileCount":7,"integrity":"sha512-qPCcGu+NBrsiUZnLJcEW0krkfapt2kLTLYkOvw5iaV7dvQktvRAvjYw/de2TDTJUeSauAVOrUKbRQZ1hnL182Q==","signatures":[{"sig":"MEUCIQDfEYtqxKoOmExaoMNZVx3gdNYKdGFovg2q3cLB82VH6QIgI2NCRt/TTQfhSjk8/gjof86mT2zyfjt+13EgotGCypk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCyqNwI2SYxjyXBjlKic+/OuR79d9ArDsDKmNwRCv1UoQIhANGlePEWnLx195v1JmlPM0hVf8JbOLYJFazT7jurVKpn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":123397},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"50b910aabcdcfba592bdb4043bfea41a7c1fb28c","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu).","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.5.0_1790268700675_0.16709979733558744","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.5.1","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.5.1","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"52779c6bcc489e112216c3c8d36bde3751f4dbe7","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.5.1.tgz","fileCount":7,"integrity":"sha512-WUkgvEQzyPQ41mEdyF85xrys/PkxVgWUuhoGLmQCxO9wuW+/s2ff5EcZllmuT09yj02Zmm2Mk64cJ/OHHnpvLg==","signatures":[{"sig":"MEUCIQDaQyEEMuSYX4cuP80MhyH1B0YlSmFUrWqFgxMK/+zFLQIgH+annMzghLwpkYXITXBBW3j+kBqpUwPlBeNuyjO0bYY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICNlz8rbM2S+aNxEnoDL2n8OLl/v56a13449EM1p2H4mAiA35j4kQuduYtMiZA1rdGX25Ivd5jBmkn219YzOyUXHaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124315},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"8cd688f00f655bbb07097f7fbdf422b22e6bd527","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu).","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.5.1_1790365535013_0.8759729292458636","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.5.2","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.5.2","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"bfa8848c8d85aff638e8915d18a359b385bd7872","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.5.2.tgz","fileCount":7,"integrity":"sha512-EK6DN1oiH2+Te/eSXT2Gszt2vZmg77t7oeCDMEKgPoVBxZX//GgHU3LZhkjzVObk+tjl6MgUsbj+QRfrW17hgA==","signatures":[{"sig":"MEQCIFOLbXj6XgZ85rjB+AMl5XUw3+yL9da4fPtoklsGeZOvAiA0bC/RHFcq2zJO7Q0e7G3PxCaBHnvRX8AcUHE5NH7Vew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC1uzkqHCXkUc23sIhMJ8uEuY1r+BXjIXc86IVGGCbIyAIgc/+Y6DBhRpNpxrpgkwDaZOb7cpR4XWTI3KH4gB+y6S8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124745},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3b7c76e6a9e86e021eeb89a1e97aba2decc43987","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu).","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.5.2_1790369883010_0.050162184214069816","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.5.3","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.5.3","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"f37d089eed0263b84eeea3f724edfeb295cf6eb8","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.5.3.tgz","fileCount":7,"integrity":"sha512-/AsJaLg0zgT5+Byn2oengmgbBdfl72pUHH8z0aZkKZ5fW2AeS0ZDopj8ytD+abDyGzriWWnL87LzWhiM1wI/XA==","signatures":[{"sig":"MEUCIGD+jjfJH4G6gEU54923sENptrQNseqaPZBmy2EqFRiVAiEAtGNTUnWYnYV6hitOoXOqh9O2hT95EstFZHoWCTTbaAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC2LX3IFGgH9NHFo4rmDnHYWjbaudO8LtjAhbXSiLgA5AIhAPmshbQk2YOggjFpbnt7qljmaMh51X3l7crlK37t0R1p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":125898},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"a1fe88309af196c5949187630fd076792ea46926","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu).","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.5.3_1790375136725_0.8083185830927391","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.5.4","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.5.4","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"b243af610fa4ac39f27eebe70cf2d862089c8365","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.5.4.tgz","fileCount":7,"integrity":"sha512-INfWeqTLgT0ZhmbEveka7C1mwMiEhYuM9vQ915PxfN0zSmhmgzwVfHg2v5MaDipSKbnAQuXqIGVqEqqNwQqsmQ==","signatures":[{"sig":"MEUCIDg4iTBqbL3EIp3Y7Jf+hUn3NP1wtwETqX8nZARbp3K9AiEA7pv2J+8m053QDnkqTZCX8A+h4QxqxAYx9IOrfji7C7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC7Uo1kSXArEuuJ4CD6mOWcEQ/qXLghypWkPCEfa135zwIgD8JmeXKlMBEoRQDqh7wAIKLwXq++DLMrOME2PZ3JBtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":131681},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"6070941327690075f29dddd9aabc9fe776405ca2","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu).","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.5.4_1790392341580_0.4744100610241908","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.5.5","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.5.5","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"4240502ebb56c08bd27fe9e6014d1547933ea5e1","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.5.5.tgz","fileCount":7,"integrity":"sha512-7076CeRgAMlCU9F7vBpyk173g5LGWn3H7GUxse+ImfXl2v6n7XBigBPPWHKZje2SdAC0RXMvws4ptP8sn557bg==","signatures":[{"sig":"MEQCICpIwEFocdayXGp2oVaysoZM2zYOxiFmqIpMTjHegT10AiBY7mnqUibb1rZjbpTlxYl3g+OJuylQMYj0P1zrMhENfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAg8RSYjY7ntAbDAvR+anlQUSUXMQv5iaMTUhZTSRzCgAiEAmBlg5tq1YH1Lj1cWN0feHjLQI5P2MBtWyHYwqgr+57g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":131717},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.2.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"f44aabb9964fb313d3c5a5e310dd487aa4fa5961","scripts":{"check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu).","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.5.5_1790406421536_0.8211931327034367","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.6.0","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.6.0","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"a8102808d9abdb4390a10436486e89f2b33f0f20","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.6.0.tgz","fileCount":7,"integrity":"sha512-YlMhHHafde3r9UfzBAEfClF1wpMyzKcRdVuNZKF2j0BssTE+Jrg04DZyStS8E8AHWnNrIfuemwWme2ICUlgyUQ==","signatures":[{"sig":"MEYCIQDX8y2g5lGDmOmT/e76cX2A08BsLdCD+LXTFdc4Js8jBgIhANbadlCWxSD3pmBP2gGsv+qYg3qFunhKFOQUiTFnvZVj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC8cgANoAq6frFCn7OAX6094FSvfmofKfoT7xt546y+7AIhANEcChdPC6WKohcO5F9/yeMntLq1XLBW/kIKu5e1uohp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141021},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.3.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"27efb6061ec9373eee0478f22dfad34281c04f14","scripts":{"e2e":"npm run check && npm run smoke && npm run smoke:quota && npm run smoke:robust && npm run smoke:typert && npm run smoke:compat && node scripts/repro-client-mount.mjs && node scripts/repro-strict-dispatch.mjs && node scripts/repro-profile-boot.mjs","check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:compat":"node scripts/smoke-compat.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu).","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.3.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7 || ^0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.6.0_1790620580367_0.6571500102699797","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.7.0","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.7.0","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"ed443086f92d67222a3c71cd079492818967fec3","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.7.0.tgz","fileCount":7,"integrity":"sha512-F4FxvfCKDBHHQnBrpBhZBjbZk0uIlBMKhfs1+c+tFpjxs0mMyjXnQqgBFY/dKXtRlI92WFZaDLVp8gn8PunOiA==","signatures":[{"sig":"MEQCIHnZgyW3OssAtigF+nkFGnA2T9eJsBlBnsBS0YMBfBDeAiAgQu8spi1OU2qOO940FeJgGWNW+X1mz+JQfn8Kc29f0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCXs7Uc9X6eO+js/PwYb2xDzlpd4jpewHh2e1CW3qcjwgIhAMuPW75l0I/SYCuPpBDa62iM2zUmnONHIcXimyouXhyg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":150317},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.3.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"9d4e3f33084bab239748f912978d474d874b0929","scripts":{"e2e":"npm run check && npm run smoke && npm run smoke:quota && npm run smoke:robust && npm run smoke:typert && npm run smoke:compat && node scripts/repro-client-mount.mjs && node scripts/repro-strict-dispatch.mjs && node scripts/repro-profile-boot.mjs","check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","probe:mimo":"node scripts/probe-mimo.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:compat":"node scripts/smoke-compat.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs","probe:mimo:session":"node scripts/probe-mimo-session.mjs","probe:mimo:nocookie":"node scripts/probe-mimo-nocookie.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu/mimo; mimo falls back to local usage since MiMo exposes no AP","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.3.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7 || ^0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.7.0_1790688198293_0.6966253399030662","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@duke-dsh-plugins/dsh-token-stats","version":"1.7.1","keywords":["dsh","deepseek-harness","plugin","token","stats"],"license":"MIT","_id":"@duke-dsh-plugins/dsh-token-stats@1.7.1","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"d9f02ef66226e98dc1b3235b270dcda5aa34b23f","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.7.1.tgz","fileCount":7,"integrity":"sha512-zgcGqVl4NkyJ4RRhNGoHpEnNmoCg6vSv0HdCB2glSxBVFE9JAuUbgF18e7D+AvvRFTWUqGuu6Tzs8BIPMYbd0g==","signatures":[{"sig":"MEQCIERRd4HerOnsmjbQfgFHRehIgrCR3RLDQMuY3uqpZmrjAiABtaKu7oKyaHAPQl1Sm0s7J6h0bYTynpVZZ1iEer/avA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC6+xIDeJwcRC/mfxdtmN8z9qviqtggK4ZeqaRxmMDIsAIgbqMLLshRR+1CnasgvTX4OJ076t8D0aceo6sLFh6u12Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153238},"main":"index.js","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.3.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"d7b3fb0d9de8873beb663c1f8420a7331729c9a6","scripts":{"e2e":"npm run check && npm run smoke && npm run smoke:quota && npm run smoke:robust && npm run smoke:typert && npm run smoke:compat && node scripts/repro-client-mount.mjs && node scripts/repro-strict-dispatch.mjs && node scripts/repro-profile-boot.mjs","check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","probe:mimo":"node scripts/probe-mimo.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:compat":"node scripts/smoke-compat.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs","probe:mimo:session":"node scripts/probe-mimo-session.mjs","probe:mimo:nocookie":"node scripts/probe-mimo-nocookie.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu/mimo; mimo falls back to local usage since MiMo exposes no AP","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.3.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7 || ^0.2.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-token-stats_1.7.1_1790704784062_0.9708464235691754","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"_id":"@duke-dsh-plugins/dsh-token-stats@1.7.2","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"dist":{"shasum":"0ae8aef695c4c6c5ee0d8350a360dc850ffd573b","tarball":"https://registry.npmjs.org/@duke-dsh-plugins/dsh-token-stats/-/dsh-token-stats-1.7.2.tgz","fileCount":7,"integrity":"sha512-Sv7xxEorP6FCZxSoacVnSLSTDiZf+lT57S2D+S1sqHgc7iMHQRY1PLxzrL+ZhvtyTmiTnk5aiZD0EyV6sOUadg==","signatures":[{"sig":"MEUCIQCnR5Zq/b0eZXo3uSc1ODcnwBHJFOZpauRPvlPYWucs6wIgUfnlz+RNXIBdvPd9lZQ24H8ZxFAOeXJOWfiIgOxCass=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDFZk24S0B59g0hPBCuJcjz4BMBwkK8I53F8ITn58zXfAiEA4Tbt3BDocw/AioShONC/f7vmCKG1d0T9WZ/HePJaiV8="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@duke-dsh-plugins%2fdsh-token-stats@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151573},"main":"index.js","name":"@duke-dsh-plugins/dsh-token-stats","type":"module","engines":{"dsh":">=0.1.4-rc.2 <0.3.0"},"exports":{".":"./index.js","./client":"./client.js","./typert":"./typert.host.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"d2af3ab9bf9c1ec3219ed991e0358fcb482832b7","license":"MIT","scripts":{"e2e":"npm run check && npm run smoke && npm run smoke:quota && npm run smoke:robust && npm run smoke:typert && npm run smoke:compat && node scripts/repro-client-mount.mjs && node scripts/repro-strict-dispatch.mjs && node scripts/repro-profile-boot.mjs","check":"node --check index.js && node --check client.js && node --check typert.host.js","smoke":"node scripts/smoke-store.mjs","probe:mimo":"node scripts/probe-mimo.mjs","smoke:quota":"node scripts/smoke-quota.mjs","smoke:compat":"node scripts/smoke-compat.mjs","smoke:robust":"node scripts/smoke-robust-host.mjs && node scripts/smoke-robust-client.mjs","smoke:typert":"node scripts/smoke-typert.mjs","probe:mimo:session":"node scripts/probe-mimo-session.mjs","probe:mimo:nocookie":"node scripts/probe-mimo-nocookie.mjs"},"version":"1.7.2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"7e4667b5-228c-43b4-a3e9-c3a2016582b9"}},"homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","keywords":["dsh","deepseek-harness","plugin","token","stats"],"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"_npmVersion":"11.19.0","description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu/mimo; mimo falls back to local usage since MiMo exposes no AP","directories":{},"maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh":">=0.1.4-rc.2 <0.3.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.0-rc.7 || ^0.2.0-rc.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-token-stats_1.7.2_1790790839016_0.8181035629217435"}}},"time":{"created":"2026-08-22T23:08:21.777Z","modified":"2026-09-30T17:53:59.586Z","1.3.0":"2026-08-22T23:08:22.074Z","1.3.1":"2026-08-22T23:19:57.477Z","1.3.2":"2026-08-22T23:53:07.034Z","1.3.3":"2026-08-23T00:12:50.415Z","1.3.4":"2026-08-23T00:18:04.499Z","1.4.0":"2026-09-19T05:49:56.225Z","1.5.0":"2026-09-24T16:51:40.766Z","1.5.1":"2026-09-25T19:45:35.099Z","1.5.2":"2026-09-25T20:58:03.096Z","1.5.3":"2026-09-25T22:25:36.811Z","1.5.4":"2026-09-26T03:12:21.683Z","1.5.5":"2026-09-26T07:07:01.633Z","1.6.0":"2026-09-28T18:36:20.463Z","1.7.0":"2026-09-29T13:23:18.403Z","1.7.1":"2026-09-29T17:59:44.200Z","1.7.2":"2026-09-30T17:53:59.108Z"},"bugs":{"url":"https://github.com/MoonlitDropOfBlood/dsh-token-stats/issues"},"license":"MIT","homepage":"https://github.com/MoonlitDropOfBlood/dsh-token-stats","keywords":["dsh","deepseek-harness","plugin","token","stats"],"repository":{"url":"git+https://github.com/MoonlitDropOfBlood/dsh-token-stats.git","type":"git"},"description":"Token usage statistics for DeepSeek Harness (7/30-day per-model charts + yearly heatmap) plus an inline coding-plan balance/quota readout in the composer (minimax/deepseek/kimi/openrouter/zhipu/mimo; mimo falls back to local usage since MiMo exposes no AP","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"readme":"<p align=\"center\">\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"120\" height=\"120\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" color=\"#4D6BFE\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"M3 10h18\"/><path d=\"M7 14h3\"/><path d=\"M12 14h5\"/></svg>\n</p>\n\n<h3 align=\"center\">DeepSeek Harness Token 用量统计插件</h3>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/DSH-Plugin-4D6BFE?style=flat\" alt=\"DSH plugin\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-2EA44F?style=flat\" alt=\"MIT License\"></a>\n  <img src=\"https://img.shields.io/badge/Web%20UI-Yes-22C55E?style=flat\" alt=\"Web UI\">\n</p>\n\n<p align=\"center\"><sub>中文</sub></p>\n\n---\n\n为 [DeepSeek Harness（DSH）](https://github.com/deepseek-ai/deepseek-harness) Web UI 打造的 **Token 消耗统计**插件：在**设置**面板里一目了然每个模型每天、每个统计区间的 token 用量。\n\n## 功能\n\n| 功能 | 说明 |\n|---|---|\n| 📊 两个 Tab | **近 7 天** / **近 30 天**，两个区间都**包含今天** |\n| 📈 堆叠柱状图 | 统计区间内**每个模型每天**的消耗（悬停查看具体数字） |\n| 🥧 饼图 | 统计区间内**每个模型的总消耗**占比 + 图例（精确值 + 百分比） |\n| 🔥 GitHub 风格热力图 | 「近一年」每日活跃；**天数随容器宽度自适应**，最多显示 365 天（一年） |\n| 🗂 汇总卡片 | 区间总 Tokens / 输入(含缓存) / 输出 |\n| 💾 本地持久化 | 聚合结果落盘 `<DSH_HOME>/data/dsh-token-stats/stats.json`，冷启动只扫描新会话、秒开；删除该文件可强制全量重扫 |\n| ⏱ 自动刷新 | 页面打开期间每 30s 刷新；历史回填期间每 2s 轮询进度 |\n| 💰 套餐余额 | 输入框工具行（model 选择器左侧）内联显示当前 provider 的**余额/套餐用量**，跟随当前模型自动切换；支持 minimax / deepseek / kimi / openrouter / zhipu / mimo（小米）；60s 轮询，点击立即刷新 |\n| 🌗 主题适配 | 全部使用 DSH 设计 token，明暗主题自动跟随 |\n\n> 套餐余额功能参考自 [dsh-musage](https://github.com/Thedeergod666/dsh-musage)（MIT），API Key 直接复用 DSH 模型设置里已配置的凭据（`credentials` 服务），无需重复配置。\n\n## 安装\n\n### 标准安装（推荐）\n\n本插件是**标准 DSH bundle**：`package.json` 声明 `dsh.bundle.patch`，包内自带 `cordis.patch.yml`，用官方 `dsh plugin` 命令安装：\n\n```bash\n# 本地开发：pnpm 软链到本仓库，改代码即生效（无需重新复制）\ndsh plugin --profile web add /path/to/dsh-token-stats\n\n# 正式发布：从 GitHub Release tarball 安装\ndsh plugin --profile web add https://github.com/MoonlitDropOfBlood/dsh-token-stats/releases/download/v1.4.0/duke-dsh-plugins-dsh-token-stats-1.4.0.tgz\n```\n\n重启 DSH 后，打开 DSH Web UI 的设置（侧栏底部），左侧导航会出现 **Token 统计** 页。\n\n> `dsh plugin add` 把插件装成 profile 的 npm 依赖并追加到 `dsh.profile.bundles`，启动时 DSH 自动应用包内的 `cordis.patch.yml` 挂载插件。卸载：`dsh plugin --profile web remove dsh-token-stats`。\n\n## 使用\n\n1. 打开 **设置** → **Token 统计**。\n2. 在 **近 7 天 / 近 30 天** 两个 Tab 间切换：\n   - 柱状图展示区间内每天、每个模型的消耗（堆叠）。\n   - 饼图展示区间内每个模型的总消耗占比。\n   - 顶部卡片给出区间总 Tokens / 输入 / 输出。\n3. 下方 **每日活跃** 热力图展示更长时间范围：格子越多 = 容器越宽，最多覆盖近一年。\n4. **会话输入框工具行**（model 选择器左侧）内联显示当前 provider 的套餐余额：\n   - DeepSeek / OpenRouter 显示余额（如 `¥43.97` / `$12.50`）；\n   - MiniMax / Kimi / 智谱 显示 `5h X% | 7d Y%`（5 小时 / 7 天窗口已用百分比，悬停查看重置时间）；\n   - 小米 MiMo 默认显示 `今日 X · 7d Y`（**本地用量统计，零凭据、永不过期**）；若在「套餐余额」里填了 dashboard 登录 Cookie，则升级为官方 `剩余 X%` + 周重置倒计时（见下）；\n   - 切换模型时自动切换 provider；每 60s 自动刷新，**点击读数立即强制刷新**；\n   - 未配置对应 API Key 或拉取失败时显示 `⚠`（悬停查看原因）；当前 provider 不在支持列表时不占位。\n\n> **MiMo（小米）配置**：**默认零配置**——读数来自本插件自己的会话日志聚合（今日 / 近 7 天消耗 token 数），不发任何 MiMo 请求、不会过期。缺点是拿不到套餐百分比（官方没开放任何 API Key 配额接口：`token-plan-*` 与 `api.` 主机只有 OpenAI 兼容的 `/v1` 推理 API，实测所有 Bearer 配额路径均 404；key 还与区域强绑定，CN key 在 SGP/AMS 主机一律 401）。\n>\n> 想要**官方剩余用量百分比**，唯一路径是 dashboard 账号会话：打开 platform.xiaomimimo.com 登录后，F12 → Network 任一 `/api/v1/*` 请求 → 复制完整 `Cookie` 请求头（含 `api-platform_serviceToken` 与 `userId`）→ 粘到「设置 → Token 统计 → 套餐余额 → **MiMo 官方剩余用量（可选）**」保存（写入 `XIAOMI_MIMO_COOKIE`）。插件内置最小 cookie jar：服务端若在响应里 `Set-Cookie` 续发会话会被自动吸收并写回凭据库（跨轮询、跨重启生效）；**Cookie 彻底失效时自动静默退回本地用量，不会报错**。composer 读数按 route id 匹配（`xiaomi-mimo` / `xiaomimimo` / `xiaomi-token-plan-cn` / 名字含 xiaomi 或 mimo 均可）。\n\n## 工作原理\n\n```\nDSH 会话日志（唯一权威数据源）\n  ├─ LIVE   : session/event  → assistant/message(usage)   [插件启动后实时累计]\n  ├─ HISTORY: sessionQuery.readSession() → 回填历史        [仅扫描从未回填过的会话]\n  ├─ DEDUP  : 按 session+seq 水位线去重，绝不重复计数\n  └─ PERSIST: 聚合 + 水位线落盘 stats.json（防抖写盘 + 停止时 flush）\n        │\n        ▼\nTokenStatsService.getStats()   ← ctx.remote.tokenStats.getStats()（Client 调用）\nTokenStatsService.getQuota()   ← ctx.remote.tokenStats.getQuota(provider, force)\n        │\n        ├─ getStats → 设置面板「Token 统计」页（柱状图 / 饼图 / 热力图）\n        └─ getQuota → composer 工具行内联读数（conversation.input.right，\n                      紧贴 model select 左侧；跟随当前会话模型自动切 provider）\n```\n\n- 数据按**本地日历天** × **模型**（`provider::model`）聚合；`total = input + output + cacheRead + cacheWrite`。\n- 历史回填只统计插件启动前发生的调用，实时监听只统计启动后的，两者通过每个会话的事件序号水位线合并，不会重复。\n- 模型/模型来自 `assistant/message` 的 `message.source`（kind = 'model'），无需自行解析请求头。\n- 套餐余额：Host 半经 `credentials` 服务解析用户在模型设置里已配置的 API Key（引用命名遵循 `<ROUTE>_API_KEY` 约定），GET provider 官方端点（宿主全局 fetch 优先，无 fetch 时回退 `subprocess` curl）；30s 缓存 + 失败指数退避（5s→30min），不落盘。**小米 MiMo 是例外**：它没有 API Key 配额接口，默认用本地会话日志聚合出用量，填了 dashboard Cookie 才升级为官方剩余用量 %。\n\n## 目录结构\n\n```\ndsh-token-stats/\n├── index.js            # Host 半：TokenStatsService（Remote 服务，采集 + 回填）\n├── client.js           # Client 半：设置页「Token 统计」UI bundle\n├── typert.host.js      # Typert Host manifest（tokenStats/getStats 描述）\n├── cordis.patch.yml    # dsh bundle patch（挂载行）\n├── .github/workflows/  # GitHub Actions 发布\n├── AGENTS.md           # 面向 AI agent 的开发指南（含踩坑）\n└── LICENSE             # MIT\n```\n\n## 开发\n\n```bash\nnpm run check           # node --check index.js client.js typert.host.js\ndsh plugin --profile web add /path/to/dsh-token-stats   # 安装/重装到本机 DSH profile\n```\n\n详见 [AGENTS.md](AGENTS.md)——记录了 DSH 正式插件（Host/Client/Typert 三件套）的完整机制和踩坑。\n\n## License\n\n本项目遵循 [MIT License](LICENSE)。\n\n> 本项目是基于 DeepSeek Harness 构建的社区插件，并非 DeepSeek 官方产品。\n","readmeFilename":"README.md"}