{"_id":"@dsh-bio/dsh-bio-gem","_rev":"7-d6d9e88516786bf0f48537c0641ea8be","name":"@dsh-bio/dsh-bio-gem","dist-tags":{"latest":"0.1.15"},"versions":{"0.1.1":{"name":"@dsh-bio/dsh-bio-gem","version":"0.1.1","keywords":["dsh","deepseek-harness","dsh-plugin","metabolic-model","GEM","SBML","carveme","cobra","bioinformatics"],"license":"MIT","_id":"@dsh-bio/dsh-bio-gem@0.1.1","maintainers":[{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"}],"homepage":"https://github.com/moonbowterfly/dsh-bio-gem","bugs":{"url":"https://github.com/moonbowterfly/dsh-bio-gem/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"eacfd5326c21f2c26da1eac994ca0ec47adb2483","tarball":"https://registry.npmjs.org/@dsh-bio/dsh-bio-gem/-/dsh-bio-gem-0.1.1.tgz","fileCount":39,"integrity":"sha512-uzvBgT1573iAVxJEHVKfMbpYzkJ7AhKE5qAs4oeYq9C/KJp1YgqJ0UHoTGEFshdrTJhbaZTqOGKIR74W0eEvaQ==","signatures":[{"sig":"MEQCIG1bFF/YpBCDIA3WEcaMCWU5x/dH1hTFdkXodog7P8yjAiBktXR24zV6nkPtP7MICR1nyKhATN/6379zWZkNvhJZuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436641},"main":"index.js","type":"module","engines":{"node":"^22.19 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"61181599bf1d169b2ae0c32c4d20d78f2bee73ef","scripts":{"smoke":"node test/smoke.js"},"_npmUser":{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"},"repository":{"url":"git+https://github.com/moonbowterfly/dsh-bio-gem.git","type":"git"},"_npmVersion":"12.0.2","description":"基因组尺度代谢模型（GEM）构建插件：输入细菌全基因组（蛋白FASTA，支持多质粒/多染色体），自动构建+验证+补洞+出报告（SBML + 模型卡），供 dsh-bio-genie 消费工具加载使用 | Genome-scale metabolic model builder for dsh","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh-tools":"*"},"peerDependenciesMeta":{"@deepseek-ai/dsh-tools":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-bio-gem_0.1.1_1789052312255_0.5101410956631542","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dsh-bio/dsh-bio-gem","version":"0.1.2","keywords":["dsh","deepseek-harness","dsh-plugin","metabolic-model","GEM","SBML","carveme","cobra","bioinformatics"],"license":"MIT","_id":"@dsh-bio/dsh-bio-gem@0.1.2","maintainers":[{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"}],"homepage":"https://github.com/moonbowterfly/dsh-bio-gem","bugs":{"url":"https://github.com/moonbowterfly/dsh-bio-gem/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"c057403bcebdfa0d520c2a5de77a1cc5d5d9561d","tarball":"https://registry.npmjs.org/@dsh-bio/dsh-bio-gem/-/dsh-bio-gem-0.1.2.tgz","fileCount":39,"integrity":"sha512-lafF/LPTyw1lRJBZoDMYU8onqpC8RRHiDCrzK542R15ypENz8bZb6aCp2DT5NGQsUwWFMJEOiWmWFNdhLQlFtQ==","signatures":[{"sig":"MEYCIQDoutapuDqGu+LEfl4tgP00tNYxeqcj9QxIKR1iNqk/jQIhANtd/H1lru39DXudfopaZRGIaUof5t6U9xz62yQpUqMZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":437214},"main":"index.js","type":"module","engines":{"node":"^22.19 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"61181599bf1d169b2ae0c32c4d20d78f2bee73ef","scripts":{"smoke":"node test/smoke.js"},"_npmUser":{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"},"repository":{"url":"git+https://github.com/moonbowterfly/dsh-bio-gem.git","type":"git"},"_npmVersion":"12.0.2","description":"基因组尺度代谢模型（GEM）构建插件：输入细菌全基因组（蛋白FASTA，支持多质粒/多染色体），自动构建+验证+补洞+出报告（SBML + 模型卡），供 dsh-bio-genie 消费工具加载使用 | Genome-scale metabolic model builder for dsh","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh-tools":"*"},"peerDependenciesMeta":{"@deepseek-ai/dsh-tools":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-bio-gem_0.1.2_1789052668806_0.22289390788545393","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dsh-bio/dsh-bio-gem","version":"0.1.3","keywords":["dsh","deepseek-harness","dsh-plugin","metabolic-model","GEM","SBML","carveme","cobra","bioinformatics"],"license":"MIT","_id":"@dsh-bio/dsh-bio-gem@0.1.3","maintainers":[{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"}],"homepage":"https://github.com/moonbowterfly/dsh-bio-gem","bugs":{"url":"https://github.com/moonbowterfly/dsh-bio-gem/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"b1ec15c5c4865a76ae7e726801a2116005706787","tarball":"https://registry.npmjs.org/@dsh-bio/dsh-bio-gem/-/dsh-bio-gem-0.1.3.tgz","fileCount":39,"integrity":"sha512-Ee415fKsJ0gqPK7Qpj3bFUekH86TF+M9en9CtA5lZ6+vkPVfYWuTomvObcLJLctIfzHgImrCCHnaLQTIhimMdA==","signatures":[{"sig":"MEUCIB2BV86h3SMJwAZcJbnKS6fHOEInneDIcRRJKbPcst/5AiEA157HtJLdN5kiG5ufU+aadzC9gyz3KntmKnKcWEsw4E0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":438432},"main":"index.js","type":"module","engines":{"node":"^22.19 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"f8ed014100e1eb5026d41357ab23215c61edcb6d","scripts":{"smoke":"node test/smoke.js"},"_npmUser":{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"},"repository":{"url":"git+https://github.com/moonbowterfly/dsh-bio-gem.git","type":"git"},"_npmVersion":"12.0.2","description":"基因组尺度代谢模型（GEM）构建插件：输入细菌全基因组（蛋白FASTA，支持多质粒/多染色体），自动构建+验证+补洞+出报告（SBML + 模型卡），供 dsh-bio-genie 消费工具加载使用 | Genome-scale metabolic model builder for dsh","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh-tools":"*"},"peerDependenciesMeta":{"@deepseek-ai/dsh-tools":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-bio-gem_0.1.3_1789057200657_0.5998151563462004","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@dsh-bio/dsh-bio-gem","version":"0.1.12","keywords":["dsh","deepseek-harness","dsh-plugin","metabolic-model","GEM","SBML","carveme","cobra","bioinformatics"],"license":"MIT","_id":"@dsh-bio/dsh-bio-gem@0.1.12","maintainers":[{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"}],"homepage":"https://github.com/moonbowterfly/dsh-bio-gem","bugs":{"url":"https://github.com/moonbowterfly/dsh-bio-gem/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"253bb642efba0829c69de4a2965f53f6da94a0fa","tarball":"https://registry.npmjs.org/@dsh-bio/dsh-bio-gem/-/dsh-bio-gem-0.1.12.tgz","fileCount":43,"integrity":"sha512-0HwWuNu38gn/BBwX2CBl3m7Bjd5lauq0CUMExUH6bu9F0m9X2PSB/W48BLUKNPTEN+xj+vBl7NgQmLdDKIYHJg==","signatures":[{"sig":"MEQCIG+zHChwIK+D5mIxUZQumAU7T9YJGpsWXpqPegnYTCbuAiBOhd/nIeAvXZJIVgM9A+s6lOrhKQngB9isTGiilYd9yA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBv9idGCIVp4sKdwk8ebUbf5zmWKSTQp43Yy02qpURJEAiEA5Uzstm4PY4Z2dAl3BTiMm8fNimHOoj0UN7gOuNnV9XI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":490552},"main":"index.js","type":"module","engines":{"node":"^22.19 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"f7617df89f46418d91bde11b6374d5b1f223d687","scripts":{"test":"node test/smoke.js --skip-build && node test/integration.js && node --import ./test/register-dsh-tools.mjs test/optional-injection.js","smoke":"node test/smoke.js","test:full":"node test/smoke.js && node test/integration.js && node --import ./test/register-dsh-tools.mjs test/optional-injection.js"},"_npmUser":{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"},"repository":{"url":"git+https://github.com/moonbowterfly/dsh-bio-gem.git","type":"git"},"_npmVersion":"12.0.2","description":"基因组尺度代谢模型（GEM）构建插件：输入细菌全基因组（蛋白FASTA，支持多质粒/多染色体），自动构建+验证+补洞+出报告（SBML + 模型卡），供 dsh-bio-genie 消费工具加载使用 | Genome-scale metabolic model builder for dsh","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh-tools":"*"},"peerDependenciesMeta":{"@deepseek-ai/dsh-tools":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-bio-gem_0.1.12_1789834990699_0.31118377567638444","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@dsh-bio/dsh-bio-gem","version":"0.1.13","keywords":["dsh","deepseek-harness","dsh-plugin","metabolic-model","GEM","SBML","carveme","cobra","bioinformatics"],"license":"MIT","_id":"@dsh-bio/dsh-bio-gem@0.1.13","maintainers":[{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"}],"homepage":"https://github.com/moonbowterfly/dsh-bio-gem","bugs":{"url":"https://github.com/moonbowterfly/dsh-bio-gem/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"ab1c6bc2ff81772d0d73f15671c80b7308cf0420","tarball":"https://registry.npmjs.org/@dsh-bio/dsh-bio-gem/-/dsh-bio-gem-0.1.13.tgz","fileCount":48,"integrity":"sha512-GtPaTvredewIbPeoTFVK0s3GIXwIsAYNsbFaJPD/JiJ7tjHqM7nLxBjQH79aA64WNCRsBfeJLCxQw4/IQwWElw==","signatures":[{"sig":"MEUCIQC4hrf2MNaYxt8RUHYP0gSb2m3DZjI5FoYEIpKQx16WwwIgQu4T7ghj/wC0Y2ZlLrUrqV3gDeOpCgyZiNX0mS+eF/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCtSxAXWrEedp8thk4rQ4KxPi1KteTSFm6NQyKoZHuxZwIgCE/cvb2Fr7fXc6c0apmsqItI+h1/nguASI2z7ULI/Lg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":560539},"main":"index.js","type":"module","engines":{"node":"^22.19 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"d2754d9025c034a4bea56944ed414729ed50a665","scripts":{"test":"node test/smoke.js --skip-build && node test/integration.js && node --import ./test/register-dsh-tools.mjs test/optional-injection.js && node --import ./test/register-dsh-tools.mjs test/check-capabilities.mjs && node test/check-counts.mjs","smoke":"node test/smoke.js","test:full":"node test/smoke.js && node test/integration.js && node --import ./test/register-dsh-tools.mjs test/optional-injection.js && node --import ./test/register-dsh-tools.mjs test/check-capabilities.mjs && node test/check-counts.mjs"},"_npmUser":{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"},"repository":{"url":"git+https://github.com/moonbowterfly/dsh-bio-gem.git","type":"git"},"_npmVersion":"11.19.0","description":"基因组尺度代谢模型（GEM）构建插件：输入细菌全基因组（蛋白FASTA，支持多质粒/多染色体），自动构建+验证+补洞+出报告（SBML + 模型卡），供 dsh-bio-genie 消费工具加载使用 | Genome-scale metabolic model builder for dsh","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh-tools":"*"},"peerDependenciesMeta":{"@deepseek-ai/dsh-tools":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-bio-gem_0.1.13_1790843617955_0.7352975021605752","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@dsh-bio/dsh-bio-gem","version":"0.1.14","keywords":["dsh","deepseek-harness","dsh-plugin","metabolic-model","GEM","SBML","carveme","cobra","bioinformatics"],"license":"MIT","_id":"@dsh-bio/dsh-bio-gem@0.1.14","maintainers":[{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"}],"homepage":"https://github.com/moonbowterfly/dsh-bio-gem","bugs":{"url":"https://github.com/moonbowterfly/dsh-bio-gem/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"60ac17e06f7392d4c671fd8f8d9a15b5534772b2","tarball":"https://registry.npmjs.org/@dsh-bio/dsh-bio-gem/-/dsh-bio-gem-0.1.14.tgz","fileCount":48,"integrity":"sha512-km4dv04l907VZVI3Io8VNrB+OUIfgPijkgCVYyolNbXuLec3ElxcMTdUMCVv7x0O6TY6ggPmvdRMw+wcxGUMjQ==","signatures":[{"sig":"MEQCIEwEp035+XzugmqfhCpWcxf542JhFktayoY4ivnVV28BAiBlNriA+WcWkJQ1GC5f3B5ANAp4JCL1bbVjqEF9T2NJDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEW9rsHqL/qTAYuxHwIuPT18jEEaVe0LZAa6oY4k69z9AiEAoxXn+PbY0fG83fLYVEt4PFUoudwg4vZrZ0lH9RyxMwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":561501},"main":"index.js","type":"module","engines":{"node":"^22.19 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"1cff3ca2c3eef82900e734758b221fcce9bc8e2a","scripts":{"test":"node test/check-version-source.mjs && node test/smoke.js --skip-build && node test/integration.js && node --import ./test/register-dsh-tools.mjs test/optional-injection.js && node --import ./test/register-dsh-tools.mjs test/check-capabilities.mjs && node test/check-counts.mjs","smoke":"node test/smoke.js","test:full":"node test/smoke.js && node test/integration.js && node --import ./test/register-dsh-tools.mjs test/optional-injection.js && node --import ./test/register-dsh-tools.mjs test/check-capabilities.mjs && node test/check-counts.mjs"},"_npmUser":{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"},"repository":{"url":"git+https://github.com/moonbowterfly/dsh-bio-gem.git","type":"git"},"_npmVersion":"11.19.0","description":"基因组尺度代谢模型（GEM）构建插件：输入细菌全基因组（蛋白FASTA，支持多质粒/多染色体），自动构建+验证+补洞+出报告（SBML + 模型卡），供 dsh-bio-genie 消费工具加载使用 | Genome-scale metabolic model builder for dsh","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh-tools":"*"},"peerDependenciesMeta":{"@deepseek-ai/dsh-tools":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-bio-gem_0.1.14_1790866983555_0.9269918562304647","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"_id":"@dsh-bio/dsh-bio-gem@0.1.15","dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"bugs":{"url":"https://github.com/moonbowterfly/dsh-bio-gem/issues"},"dist":{"shasum":"70782fda086986d84fd6c5fcb84935eb76b6e9d8","tarball":"https://registry.npmjs.org/@dsh-bio/dsh-bio-gem/-/dsh-bio-gem-0.1.15.tgz","fileCount":48,"integrity":"sha512-U65m/9mv9g0g1DWWRJQ8F1qxinGUTjXtL0Pj9fzibycHXAqJkWIXMbysf1nvhYsBRPVRaKzhMYx1DZ8yqjgxow==","signatures":[{"sig":"MEYCIQDh2YZjpt1qoqts5ZkXlkk145ksV3q3spMBjBC4PKrMaAIhAMxvkSAOlpvtESafFOC357Qgb3146r8zxG/5yWDNNBRB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCcmUF+3UII28umjMht1WZ5wX7mJZ61ibyVh8cPId1rqQIhALAa7frDiz6X5MDB7FzF+MHZB425SQgIu+ydzXX6wtOu"}],"unpackedSize":562539},"main":"index.js","name":"@dsh-bio/dsh-bio-gem","type":"module","engines":{"node":"^22.19 || >=24"},"exports":{".":"./index.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"fb6bbdce4400ddfa5a11979583c0aa3101e972f0","license":"MIT","scripts":{"test":"node test/check-version-source.mjs && node test/smoke.js --skip-build && node test/integration.js && node test/capabilities.js && node --import ./test/register-dsh-tools.mjs test/optional-injection.js && node --import ./test/register-dsh-tools.mjs test/check-capabilities.mjs && node test/check-counts.mjs && node test/capabilities-warn-state.mjs","smoke":"node test/smoke.js","test:full":"node test/smoke.js && node test/integration.js && node test/capabilities.js && node --import ./test/register-dsh-tools.mjs test/optional-injection.js && node --import ./test/register-dsh-tools.mjs test/check-capabilities.mjs && node test/check-counts.mjs"},"version":"0.1.15","_npmUser":{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"},"homepage":"https://github.com/moonbowterfly/dsh-bio-gem","keywords":["dsh","deepseek-harness","dsh-plugin","metabolic-model","GEM","SBML","carveme","cobra","bioinformatics"],"repository":{"url":"git+https://github.com/moonbowterfly/dsh-bio-gem.git","type":"git"},"_npmVersion":"11.19.0","description":"基因组尺度代谢模型（GEM）构建插件：输入细菌全基因组（蛋白FASTA，支持多质粒/多染色体），自动构建+验证+补洞+出报告（SBML + 模型卡），供 dsh-bio-genie 消费工具加载使用 | Genome-scale metabolic model builder for dsh","directories":{},"maintainers":[{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"}],"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/dsh-tools":"*"},"peerDependenciesMeta":{"@deepseek-ai/dsh-tools":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-bio-gem_0.1.15_1790941013760_0.4780816606036735"}}},"time":{"created":"2026-09-10T14:58:32.131Z","modified":"2026-10-02T11:36:54.442Z","0.1.1":"2026-09-10T14:58:32.419Z","0.1.2":"2026-09-10T15:04:28.964Z","0.1.3":"2026-09-10T16:20:01.274Z","0.1.12":"2026-09-19T16:23:10.795Z","0.1.13":"2026-10-01T08:33:38.042Z","0.1.14":"2026-10-01T15:03:03.754Z","0.1.15":"2026-10-02T11:36:53.891Z"},"bugs":{"url":"https://github.com/moonbowterfly/dsh-bio-gem/issues"},"license":"MIT","homepage":"https://github.com/moonbowterfly/dsh-bio-gem","keywords":["dsh","deepseek-harness","dsh-plugin","metabolic-model","GEM","SBML","carveme","cobra","bioinformatics"],"repository":{"url":"git+https://github.com/moonbowterfly/dsh-bio-gem.git","type":"git"},"description":"基因组尺度代谢模型（GEM）构建插件：输入细菌全基因组（蛋白FASTA，支持多质粒/多染色体），自动构建+验证+补洞+出报告（SBML + 模型卡），供 dsh-bio-genie 消费工具加载使用 | Genome-scale metabolic model builder for dsh","maintainers":[{"name":"moonbowterfly","email":"Shuaihao264@foxmail.com"}],"readme":"# dsh-bio-gem\n\n**基因组尺度代谢模型（GEM）构建插件**：输入细菌全基因组（支持多质粒/多染色体），自动构建 → 验证 → 补洞 → 出报告（标准 SBML + 模型卡），产出后可由 dsh-bio-genie 现有消费工具（FBA / 基因必需性 / 生产包络线 / 模型管理面板）直接加载使用。\n\nGenome-scale metabolic model builder for dsh: genome in, validated SBML out.\n\n## 📦 安装\n\n本插件已发布为 npm 包 **`@dsh-bio/dsh-bio-gem`**（纯 ESM，无构建步骤），也可直接从 GitHub 源或本地目录安装。\n\n### 0. 环境要求\n\n| 组件 | 要求 | 用途 |\n|------|------|------|\n| dsh 引擎 | 0.1.x（`npx -y @deepseek-ai/dsh --version` 可查） | 宿主 |\n| Node.js | ≥ 22.19 或 ≥ 24（见 `package.json` 的 `engines`） | 宿主 |\n| Python | 3.10+，且装 **`cobra`** | 分析/验证/补洞/账本/基准/导出 —— 除 `gem_build` 外的 22 个工具 |\n| `pyrodigal` | 装在同一个 Python 环境（可选但建议） | 裸基因组自动注释兜底（`gem_annotate` / fna 输入） |\n| **CarveMe** | 独立 venv `~/.dsh/dsh-bio-gem/venv-carveme`，含 `carve.exe` + **`diamond.exe`** | `gem_build`（carveme 引擎） |\n| WSL2 + gapseq | 可选，按本机拓扑（见第 4 节） | `gem_build`（gapseq 引擎） |\n\n> **Python 环境从哪来（v0.1.4 起）**：解释器探测顺序为\n> `GEM_PYTHON` → **宿主 `dsh-bio-genie` 的自举环境** → `CONDA_PREFIX` → `PATH` 中的 `python`，\n> 且会**逐个探测该解释器能否 `import cobra`**（不盲选）。\n>\n> 因此：**装了 dsh-bio-genie 就无需任何额外配置** —— genie 的自举环境自带 cobra\n> （属它的第一层依赖），gem 直接复用。只有**未装 genie** 时才需要按第 2 步自备解释器。\n>\n> `gem_build`（构建侧）另有重依赖（CarveMe + `diamond`，或 WSL2 + gapseq），见第 3、4 步，\n> 这部分不与 genie 共享环境。\n\n### 1. 安装插件\n\n```sh\n# 方式一：从 npm 安装（推荐，已发布预置包）\nnpx -y @deepseek-ai/dsh plugin --profile web add @dsh-bio/dsh-bio-gem\n\n# 方式二：从 GitHub 安装（拉源码；本插件纯 ESM 无构建步骤，可直接加载）\nnpx -y @deepseek-ai/dsh plugin --profile web add github:moonbowterfly/dsh-bio-gem\n\n# 方式三：从本地目录安装（开发调试）\nnpx -y @deepseek-ai/dsh plugin --profile web add ./dsh-bio-gem\n```\n\n**方式四：安装到 dsh 桌面端（0.2.0+，推荐）**——桌面端内置 dsh 命令与 pnpm，无需另装 Node/pnpm：\n\n1. 先启动一次桌面端（初始化 `desktop` profile），**完全退出应用**；\n2. 用桌面端自带 CLI 安装（Windows 默认安装路径）：\n\n```powershell\n& \"$env:LOCALAPPDATA\\Programs\\DeepSeek Harness\\resources\\runtime\\cli\\bin\\dsh.cmd\" plugin --profile desktop add @dsh-bio/dsh-bio-gem\n```\n\n3. 重新打开桌面端生效（也可直接在桌面端内 **「插件」页**输入包名安装，无需退出应用）。\n\n- 本机若已全局安装 dsh CLI，把 `npx -y @deepseek-ai/dsh` 换成 `dsh` 即可。\n- `--profile <name>` 是**必填选项**（不传报 `required option '--profile <name>' not specified`）；Web 端固定用 `web`，桌面端固定用 `desktop`。\n- 安装完**重启对应的 dsh**（web：重新双击启动入口；桌面端：重开应用）。\n- **引擎兼容**：0.1.x 侧经 dsh 0.1.5-rc.2 走廊逐卡走查与实机验证；**0.2.0+（含官方桌面端）已于 2026-10-01 实测**（工具全量注册 + `gem_media_resolve` 真实执行）。\n- 版本刚发布时可能短时间拉不到：registry 首次分发有几分钟延迟，`pnpm` 还可能缓存住 404。遇到 `ERR_PNPM_FETCH_404 ... is not in the npm registry` 时等几分钟重试，或在命令末尾追加 `--registry https://registry.npmjs.org/` 绕过缓存。\n\n验证插件层已生效（不用启动服务）：\n\n```sh\nnpx -y @deepseek-ai/dsh --profile web --dump-config | grep dsh-bio-gem\n```\n\n### 2. 准备分析用 Python（cobra）—— 装了 genie 就跳过\n\n**已安装 `@dsh-bio/dsh-bio-genie` 时本节可跳过**：gem 自动复用 genie 的自举环境\n（`$DSH_HOME/dsh-bio-genie/python-env`），其中 cobra 属 genie 的第一层依赖，无需任何配置。\n\n未装 genie 时，自备一个装了 cobra 的解释器：\n\n```sh\n# uv 建独立 venv 并安装（推荐）\nuv venv --python 3.11 \"$HOME/.dsh/dsh-bio-gem/venv\"\nuv pip install --python \"$HOME/.dsh/dsh-bio-gem/venv/Scripts/python.exe\" cobra pyrodigal\n```\n\n用 `GEM_PYTHON` 指向它（**dsh 进程的环境变量，必须在启动 dsh 之前设置**）：\n\n```bat\n:: cmd（写进启动脚本即可）\nset GEM_PYTHON=%USERPROFILE%\\.dsh\\dsh-bio-gem\\venv\\Scripts\\python.exe\n```\n\n```powershell\n# PowerShell：永久（对之后新开的终端与快捷方式生效）\nsetx GEM_PYTHON \"$env:USERPROFILE\\.dsh\\dsh-bio-gem\\venv\\Scripts\\python.exe\"\n\n# 或临时（仅当前窗口）\n$env:GEM_PYTHON = \"$env:USERPROFILE\\.dsh\\dsh-bio-gem\\venv\\Scripts\\python.exe\"\n```\n\n> 插件**不会盲选**解释器：它按上述顺序逐个探测 `import cobra`，选中第一个可用的并缓存。\n> 若候选全都不含 cobra，工具会显式报 `ModuleNotFoundError: cobra` 并附带候选探测结果，\n> 而不是静默落到一个不可用的解释器上。\n\n### 3. 准备 CarveMe（构建引擎）\n\n```sh\n# ① 独立 venv（勿并入系统 Python，也不要并入 dsh-bio-genie 的环境）\nuv venv --python 3.11 \"$HOME/.dsh/dsh-bio-gem/venv-carveme\"\nuv pip install --python \"$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/python.exe\" carveme\n\n# ② diamond 是 CarveMe 的外部分比对引擎，不在 Python 包里，必须单独放进来\ncurl -L -o diamond.zip https://github.com/bbuchfink/diamond/releases/latest/download/diamond-windows.zip\nunzip -o diamond.zip diamond.exe -d \"$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/\"\n\n# ③ 验证（两个可执行文件应同在 venv 的 Scripts/ 下）\n\"$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/carve.exe\" --version\n\"$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/diamond.exe\" --version\n```\n\n两个实测坑（都真实踩到过）：\n\n- 命令名是 **`carve`**，不是 `carveme`。\n- **缺 diamond 不报错、不产文件**：`carve` 只打一行 `Unable to run diamond (make sure diamond is available in your PATH)`，**退出码 0、输出目录为空**。构建失败又找不到原因时，先确认 `diamond.exe` 就在 `carve.exe` 旁边。\n- 插件已把 venv 的 `Scripts/` 注入子进程 PATH，无需激活 venv。\n\n### 4.（可选）gapseq 引擎（WSL2）\n\n`gem_build` 的 `engine=gapseq` 走 WSL2 桥（`gem_gapseq` 原子四步：setup / launch / status / fetch），质量档耗时 30-60 分钟/模型，非必需——默认的 `engine=carveme` 已能出可验证模型。桥按本机拓扑实现（WSL2 + `/opt/miniforge3` conda 环境 `gapseq` + 本地序列库），换机器需改 `python/gapseq_wsl.py` 顶部常量，故目前**视为实验性可选能力**。没有 WSL2 不影响其余 22 个工具与 carveme 构建。\n\n### 5. 自检（仓库源码目录内）\n\n```sh\n# 冒烟：不依赖 dsh，直测 Python 层 + 工具注册表\n# 断言锚定本机 C58 夹具路径（见 test/smoke.js 顶部常量），换机器先改路径\nGEM_PYTHON=<你的-cobra-python> node test/smoke.js --skip-build   # 跳过 ~70s 的 build 单测\nGEM_PYTHON=<你的-cobra-python> node test/smoke.js                # 含 build 单测\n# 托管领域扩展的只读 integration 协议（无需 dsh 实例）\nnode test/integration.js\n```\n\n### 6. 与 dsh-bio-genie 协同\n\n两个插件职责互补、可同时安装（各自独立 bundle patch 行，互不冲突）：\n\n| 插件 | 职责 |\n|------|------|\n| **dsh-bio-gem**（本插件） | **造模型**：基因组 → 构建 → 验证 → 补洞 → 模型卡 |\n| dsh-bio-genie | **用模型**：FBA / 基因必需性 / 生产包络线 / 模型管理面板，外加全量生信分析工具 |\n\n装好 genie 后，其 agent 常驻 persona 已内置 GEM 能力域路由，「建模型 / 建模 / 补洞」类需求会自动转给 `gem_*` 工具。\n\n#### 托管领域扩展集成协议（v0.1.11+）\n\n当 gem 与 BioGenie 运行在同一 dsh Web 实例时，gem 提供两个**固定、只读、loopback-only** 的端点：\n\n```text\nGET /api/dsh-bio-gem/integration/health\nGET /api/dsh-bio-gem/integration/v1/status\n```\n\n- 两端点统一返回 `{ ok: true, value }` 或 `{ ok: false, code, message }`；health 只声明插件身份与协议能力，绝不启动 Python 或写盘。\n- status 返回模型/账本/导出的限量摘要、解释器与构建引擎的只读检查；`state` 仅为 `ready` 或 `degraded`。Python/cobra 仍在进程内短缓存；WSL/gapseq 则采用非阻塞 stale-while-revalidate：首次返回 `available: null` / `probing` 与 `warn`，后台完成后才转为 `ok` 或 `missing`，不会把 status 响应拖到超时。\n- gapseq 成功结果缓存 5 分钟；失败或超时最多缓存 60 秒后自动重试。探测先用固定的 `wsl.exe -l -q` 预检目标发行版，再运行固定只读版本命令；插件在 webServer 出现约 8 秒后后台预热一次，加载期不探测、不阻塞启动。\n- 非 loopback、跨站或 Origin/Host 不一致的请求一律得到 `403`；端点不返回 token、任意命令、任意 URL 或完整日志。修复建议只有受控 `code` + `owner`。\n- **设置入口和五态显示属于 BioGenie 面板**，gem 不注册自己的设置页。BioGenie 结合本地安装探测与上述端点显示 `not-installed` / `legacy` / `installed-unavailable` / `incompatible` / `degraded` / `ready`；旧 gem 仅有文件系统只读兼容视图。\n- 本批不提供 job、安装、删除、配置或其他写 API；这些操作必须等后续的显式用户动作协议。\n\n### 7. 卸载\n\n```sh\nnpx -y @deepseek-ai/dsh plugin --profile web remove dsh-bio-gem\n```\n\n运行时数据都落在 `~/.dsh/dsh-bio-gem/`（`models/` 模型、`ledger/` 预测账本、`jobs/` 构建任务、`venv*` 环境），**卸载不会删除**，需要清理请手动删除该目录。\n\n### Installation (English quickstart)\n\n```sh\n# 1) install the plugin into the web profile, then restart dsh\nnpx -y @deepseek-ai/dsh plugin --profile web add @dsh-bio/dsh-bio-gem\n# (or from source: github:moonbowterfly/dsh-bio-gem)\n# desktop app (0.2.0+): use its bundled CLI with --profile desktop, e.g.\n#   & \"$env:LOCALAPPDATA\\Programs\\DeepSeek Harness\\resources\\runtime\\cli\\bin\\dsh.cmd\" plugin --profile desktop add @dsh-bio/dsh-bio-gem\n\n# 2) analysis Python needs cobra (+ pyrodigal for the annotation fallback)\nuv venv --python 3.11 \"$HOME/.dsh/dsh-bio-gem/venv\"\nuv pip install --python \"$HOME/.dsh/dsh-bio-gem/venv/Scripts/python.exe\" cobra pyrodigal\n# point the plugin at it BEFORE starting dsh (dsh reads process env):\n#   PowerShell: setx GEM_PYTHON \"$env:USERPROFILE\\.dsh\\dsh-bio-gem\\venv\\Scripts\\python.exe\"\n\n# 3) build engine: CarveMe in a dedicated venv + the external `diamond` binary\nuv venv --python 3.11 \"$HOME/.dsh/dsh-bio-gem/venv-carveme\"\nuv pip install --python \"$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/python.exe\" carveme\ncurl -L -o diamond.zip https://github.com/bbuchfink/diamond/releases/latest/download/diamond-windows.zip\nunzip -o diamond.zip diamond.exe -d \"$HOME/.dsh/dsh-bio-gem/venv-carveme/Scripts/\"\n\n# 4) verify the plugin layer is registered (no server needed)\nnpx -y @deepseek-ai/dsh --profile web --dump-config | grep dsh-bio-gem\n```\n\nCarveMe + diamond are required only by `gem_build`; the other 20 tools need nothing but a `cobra`-enabled Python.\n\n## 工具（20）\n\n| 工具 | 作用 | 状态 |\n|---|---|---|\n| `gem_report` | 模型摘要（基因/反应/区室/复制子分布）+ 预测账本基率摘要（ledger_summary）| ✅ |\n| `gem_validate` | 六道关卡 G1-G6（加载/元素平衡/生长真实性/表型(条件)/必需性抽检(条件)/ATP 泄漏）| ✅ |\n| `gem_gapfind` | 缺口分级诊断（L1 缺交换 / L2 缺转运 / L3 内部路径）| ✅ |\n| `gem_gapfill` | 规则级补洞（L1/L2 自动，provenance 打标，防过补四闸门）| ✅ |\n| `gem_l3_fix` | L3 内部路径补洞（L3a 连通性/L3b 白名单+BiGG 反应式；证据分级 + 防过补第五闸门）| ✅ C58 阿拉伯糖 0→0.851 |\n| `gem_biomass` | biomass 精修（inspect 组分/对照参考；apply 覆盖表+三联对照+回滚）| ✅ 复位 delta 0.0 |\n| `gem_phenotype` | 表型回填迭代（G4 sole 检测 → L1/L2 修复 → L3 报告 → 匹配率对比）| ✅ |\n| `gem_essentiality` | 全量必需基因扫描（FVA 预筛 + 手工敲除）| ✅ C58: 必需 155 |\n| `gem_annotate` | 基因组→蛋白（官方优先 + pyrodigal 兜底，纯 Windows）| ✅ pyrodigal 5330 |\n| `gem_build` | CarveMe/gapseq 双引擎构建（fna/faa；后台 job + 进度；M9 或目标介质验证闭环）| ✅ carveme 70s / fna 全链 63.5s / gapseq 实测中 |\n| `gem_gapseq` | gapseq 原子四步（WSL 可选：setup/launch/status/fetch）| ✅ 本机全通 |\n| `gem_media_resolve` | 跨引擎介质解析 RPC（自然名→EX ID；消费侧统一入口）| ✅ AB→20 EX |\n| `gem_fluxscan` | 通量区间制（FVA 区间+pFBA 点值；条件对比区间分离判定，overlap=伪影禁止引用）| ✅ C58 AB 0.519981 / 蔗糖 supplement 0.97077 |\n| `gem_sensitivity` | 结构性灵敏度（GAM×biomass 22 组合全量+稳定性三分类+单组分漂移+模型卡鲁棒性 v3）| ✅ C58 基准复现 155 |\n| `gem_ledger` | 预测账本（essentiality/phenotype 自动登记；幂等；list/query/update；基率追踪）| ✅ C58 155+19 条幂等复跑 |\n| `gem_benchmark` | 通用基准对比（两模型六关并列/生长/biomass 断供探针/必需性对比[退化护栏]/表型/账本回填；介质层两级策略；支持 bigg:&lt;id&gt; 下载）| ✅ B1 自检 C58 vs C58_P1；B2 C58 vs iNX1344_v4；B3 bigg:iML1515 |\n| `gem_secretion` | 可分泌代谢物谱（production envelope 扫描；边界声明=纯拓扑 LP；wt<=EPS 退化护栏）| ✅ C58: 182 候选 85 可分泌 |\n| `gem_double_knockout` | 双敲 v1 合成致死（GPR 穷尽先验+全扫预算；假设生成声明内置）| ✅ C58: Atu3364↔Atu4682 对应命中 |\n| `gem_enrichment` | 必需基因通路富集（超几何+BH FDR；通路源=SBML groups；无注释诚实兜底）| ✅ C58: 388 通路 55 显著 |\n| `gem_targets` | 靶点清单规范导出（账本三类 -> 锁定 schema CSV/JSON；计数闭合）| ✅ C58: 258 行三类闭合 |\n| `gem_precursor_scan` | 阻塞前体分析（模型为什么不长：基线通量→可生长即返无阻塞；不生长则逐前体移除测试定位阻塞点）| ✅ 2026-09-11 新增 |\n| `gem_quality` | 模型质量报告（gem-qi-v1：blocked/环路(fastcc 方向锥)/元素平衡/孤儿与死端/覆盖/连通性 + 启发式聚合分；分项与 failed_checks 为准）| ✅ C58+AB: qi 67.23 / blocked 1032 / cyclic 289 |\n| `gem_sample` | 通量空间采样（ACHR 默认 / OptGP 大样本；growth_floor_fraction 受限空间；全空间 vs 受限边界声明）| ✅ C58+AB: 全空间 median 0.019 / floor-0.9 min 0.468 |\n\n架构/决策见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)、[docs/DECISIONS-2026-08-29.md](docs/DECISIONS-2026-08-29.md)。\n\n## 开发速查\n\n```bash\n# Python 层直测（需 Python + cobra，推荐显式指定解释器）\necho '{\"op\":\"model_info\",\"args\":{\"model\":\"path.xml\"}}' | \"$GEM_PYTHON\" -I python/gem_ops.py\n\"$GEM_PYTHON\" -u python/build.py --input proteins.faa --name X --progress p.jsonl --medium-json '{...}'\n\n# 独立脚本模式（gapfind/gapfill）\n\"$GEM_PYTHON\" -I python/gapfind.py payload.json\n\"$GEM_PYTHON\" -I python/gapfill.py payload.json\n```\n\n依赖：`cobra`（分析，需装在插件探测到的 Python 里）；`carveme` + `diamond`（构建，独立 venv `~/.dsh/dsh-bio-gem/venv-carveme`）。安装步骤见上文第 2、3 节。\n\n## 验收（C58 回归锚）\n\n- `gem_validate` 对 C58.xml：G1 PASS / G2 WARN(仅 bio1 已知边界) / G3 PASS(0.519981) / G4 PASS(17/19) / G5 PASS\n- gapfind→gapfill 闭环：原版 C58.xml + 蔗糖培养基 → 自动补交换/转运 → 蔗糖生长 0.97077（与手工 P1 补洞一致）\n- gem_build 端到端（C58 protein.faa）：carve M9 gapfill 54s → 精确 M9 介质 G3 PASS 0.782 → AB 目标介质 resolve 20/20，G3 FAIL（L3 内部路径，已记录为 CarveMe 已知边界）\n\n## 许可\n\nMIT（工程层，见 [LICENSE](LICENSE)）；引擎 CarveMe/gapseq 以独立子进程调用分发，版本记录入模型卡，自带许可边界。\n","readmeFilename":"README.md"}