{"_id":"@dennisrongo/dsh-mission-control","_rev":"7-e6b3df0ec26034b7fe43193391edf711","name":"@dennisrongo/dsh-mission-control","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"@dennisrongo/dsh-mission-control","version":"0.1.0","author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/dsh-mission-control@0.1.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime"],"platform":"web","immediately":true}},"dist":{"shasum":"a9dfa2d52b769a11fe95dac53aadea42972ff4f2","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-mission-control/-/dsh-mission-control-0.1.0.tgz","fileCount":5,"integrity":"sha512-ZjudvM2hRH5mCviIwsiYIO/VhiiDgUsg5ABc1aixkwiqFeVXMc+etKNeLXtnhmNOowhLqheb71/Y8jaA7oR9uA==","signatures":[{"sig":"MEUCICjMYn6D4QfjWxoGtNF1FCdRLyMjhYin5c1TUt4GPcXgAiEAr7HXwPc0w+dCPYblJHYldLiN+r+ErgZ8u9iHsPQwwYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-mission-control@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":166584},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"9ecaef26f2f676cc5d3c799b74d46b02ff93049f","scripts":{"test":"node test/smoke.mjs","build":"node build/build.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-mission-control"},"_npmVersion":"10.9.8","description":"Mission Control dashboard for DeepSeek Harness (dsh) — live session fleet, swarm tree, token burn, and permission inbox as a shell.overlay plugin","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.0","esbuild":"^0.24.0","react-dom":"^18.3.0","typescript":"^5.6.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mission-control_0.1.0_1787868873655_0.020161381929440836","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dennisrongo/dsh-mission-control","version":"0.2.0","author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/dsh-mission-control@0.2.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime"],"platform":"web","immediately":true}},"dist":{"shasum":"bdbc6e6f3d574066b10f7bc5e3d37de2a775cfec","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-mission-control/-/dsh-mission-control-0.2.0.tgz","fileCount":5,"integrity":"sha512-8NdHJiBZTJKN5EU1Mvlm/pyHqvEVPW3N5vPPLcmUzU0bh2DjSgjZ8mCoRZsNxdyDp+D6gv23xNBVZcbvUFmVaA==","signatures":[{"sig":"MEUCIGQq+ncqbJvM1YWtUkVSXpfWpcC1IF+FcDxsJJe0jCTnAiEAlF1/C5lrg6TNHoAiZZBzmt3L5Fdf1TgLaE978shEm5s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-mission-control@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":168199},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"e8ade9e9fdfff3981b3cd9753c3f79b0a4ba11e6","scripts":{"test":"node test/smoke.mjs","build":"node build/build.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-mission-control"},"_npmVersion":"10.9.8","description":"Mission Control dashboard for DeepSeek Harness (dsh) — live session fleet, swarm tree, token burn, and permission inbox as a shell.overlay plugin","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.0","esbuild":"^0.24.0","react-dom":"^18.3.0","typescript":"^5.6.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mission-control_0.2.0_1787880925182_0.9051546599950571","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dennisrongo/dsh-mission-control","version":"0.3.0","author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/dsh-mission-control@0.3.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime"],"platform":"web","immediately":true}},"dist":{"shasum":"57e8fc803c4ebd9cf10ea0fe0210bcf3705f1e6a","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-mission-control/-/dsh-mission-control-0.3.0.tgz","fileCount":5,"integrity":"sha512-GANpYoB+ONRpZKs7QY4mJgW21dyIHDFOaw0SlxHhKYYaBoK9Cm7wgsxaqUonqbf+bRe636QZblm9E7cUCLtIoA==","signatures":[{"sig":"MEQCICJSgqQOJUSodFJ8vndfyyU3oR012OYgPxpgBlOZXY1LAiBydjcM6PVQUBAJfDRjoBA7fhko2QG+3OHnsFG1Iiwhbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-mission-control@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176098},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"377c8ef55a1bc9a64a99d08a7b73c398ae83b113","scripts":{"test":"node test/smoke.mjs","build":"node build/build.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-mission-control"},"_npmVersion":"10.9.8","description":"Mission Control dashboard for DeepSeek Harness (dsh) — live session fleet, swarm tree, token burn, and permission inbox as a shell.overlay plugin","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.0","esbuild":"^0.24.0","react-dom":"^18.3.0","typescript":"^5.6.0","@types/react":"^18.3.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mission-control_0.3.0_1787891177491_0.8701212831074698","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dennisrongo/dsh-mission-control","version":"0.4.0","author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/dsh-mission-control@0.4.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime"],"platform":"web","immediately":true}},"dist":{"shasum":"34a268b0a284745a615a1e7d8e53c391561a15bc","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-mission-control/-/dsh-mission-control-0.4.0.tgz","fileCount":6,"integrity":"sha512-ZUa/2HAA0kjGplmjPy1CNDyM7ATuuFMSvFrbtguuh5ss/dEbQqGUXS6cN9bStJiFo6wLZJCKQw70wzl1uMIP3w==","signatures":[{"sig":"MEUCIQCXXKSgJibYQG12JOnjJ37MDfZ0OXJZsx8iZaeFRfF91wIgFJcBTwsM4jWqObY+hIZ3ui1YOMxw8gGdxYiIgBUMRBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-mission-control@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":741408},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./typert":{"default":"./lib/typert.host.js"},"./package.json":"./package.json"},"gitHead":"c3611c436258283184a3b4f7027308fed223289b","scripts":{"test":"node build/build.mjs && node test/smoke.mjs","build":"node build/build.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-mission-control"},"_npmVersion":"10.9.8","description":"Mission Control dashboard for DeepSeek Harness (dsh) — live session fleet, swarm tree, token burn, and permission inbox as a shell.overlay plugin","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.0","esbuild":"^0.24.0","react-dom":"^18.3.0","typescript":"^5.6.0","@types/node":"22.20.1","@types/react":"^18.3.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mission-control_0.4.0_1787949889306_0.1395454414260422","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dennisrongo/dsh-mission-control","version":"0.4.1","author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/dsh-mission-control@0.4.1","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime"],"platform":"web","immediately":true}},"dist":{"shasum":"6e1be86d2641e65d09b0a29bb6660c0e758f9e6d","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-mission-control/-/dsh-mission-control-0.4.1.tgz","fileCount":6,"integrity":"sha512-GqTtVia0uNuwAkAC+0hauNHzGOhh3TQX+ahKhiuJkxaUvxKR5Hbp49iNu6Ub23362NBYfSxUOIDB+zXNeQtr9g==","signatures":[{"sig":"MEQCIEwKhGlLxcvBXMHtZ2QTcCT8L2f4x9ulpfV2/zsYQ9obAiBvEJuM9QM7kE0V4WW4KgzZKiLwwZH33bj488+WDHcNog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-mission-control@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":741418},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./typert":{"default":"./lib/typert.host.js"},"./package.json":"./package.json"},"gitHead":"2dc928ed60770d25643793c32cb73424f3e56760","scripts":{"test":"node build/build.mjs && node test/smoke.mjs","build":"node build/build.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-mission-control"},"_npmVersion":"10.9.8","description":"Mission Control dashboard for DeepSeek Harness (dsh) — live session fleet, swarm tree, token burn, and permission inbox as a shell.overlay plugin","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.0","esbuild":"^0.24.0","react-dom":"^18.3.0","typescript":"^5.6.0","@types/node":"22.20.1","@types/react":"^18.3.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mission-control_0.4.1_1787951379025_0.500010114308012","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@dennisrongo/dsh-mission-control","version":"0.5.0","author":{"name":"Dennis Rongo"},"license":"MIT","_id":"@dennisrongo/dsh-mission-control@0.5.0","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime"],"platform":"web","immediately":true}},"dist":{"shasum":"2b087f63ebdaebb4be7dba1fd1b1ab216e2b9192","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-mission-control/-/dsh-mission-control-0.5.0.tgz","fileCount":7,"integrity":"sha512-pxniu0tmZ5mTllgPdk26L8hvsqlNl8UORJ196MtpZwk5nPWR6GkObRA2f47bxh5YBvpP4m/xNQRWTg7jERwtTA==","signatures":[{"sig":"MEUCIQD8HkNcPvqciXMH98K0Jbz885s/Ig6diWa/Fd3Bu2VocgIgRDtoj3cM4IPmzUQp1JD2nufBsQ/fbQc08CFShk2uUuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-mission-control@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":743798},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./typert":{"default":"./lib/typert.host.js"},"./package.json":"./package.json"},"gitHead":"95502da7aac802c5e846caefdd9bb9c2e5961a56","scripts":{"test":"node build/build.mjs && node test/contract.mjs && node test/host-service.mjs && node test/persistence.mjs && node test/smoke.mjs","build":"node build/build.mjs","typecheck":"tsc --noEmit","test:installed":"node test/installed-copy.mjs"},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"repository":{"url":"git+https://github.com/dennisrongo/dsh-plugins.git","type":"git","directory":"plugins/dsh-mission-control"},"_npmVersion":"10.9.8","description":"Mission Control dashboard for DeepSeek Harness (dsh) — live session fleet, swarm tree, token burn, and permission inbox as a shell.overlay plugin","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.0","esbuild":"^0.24.0","react-dom":"^18.3.0","typescript":"^5.6.0","@types/node":"22.20.1","@types/react":"^18.3.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-mission-control_0.5.0_1787979874591_0.830570769660101","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@dennisrongo/dsh-mission-control","version":"0.5.1","description":"Mission Control dashboard for DeepSeek Harness (dsh) — live session fleet, swarm tree, token burn, and permission inbox as a shell.overlay plugin","type":"module","license":"MIT","author":{"name":"Dennis Rongo"},"main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./typert":{"default":"./lib/typert.host.js"},"./package.json":"./package.json"},"scripts":{"build":"node build/build.mjs","typecheck":"tsc --noEmit","test":"node build/build.mjs && node test/contract.mjs && node test/host-service.mjs && node test/persistence.mjs && node test/smoke.mjs","test:installed":"node test/installed-copy.mjs"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-runtime"],"immediately":true}},"dependencies":{"zod":"^4.4.3"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-typert-protocol":"^0.1.1-rc.2"},"devDependencies":{"@types/node":"22.20.1","@types/react":"^18.3.0","esbuild":"^0.24.0","react":"^18.3.0","react-dom":"^18.3.0","typescript":"^5.6.0"},"repository":{"type":"git","url":"git+https://github.com/dennisrongo/dsh-plugins.git","directory":"plugins/dsh-mission-control"},"homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control#readme","bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"_id":"@dennisrongo/dsh-mission-control@0.5.1","gitHead":"b037914e62a2b12d5c76d3387b218f96319d7a54","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-vvubmD75m+6JTiZ8VdeEZorWLNSajztuFcGZnRXHq5F722Mvb5kPTJe4YzrGAs2213n2zEdXIPLrur3iDYzenw==","shasum":"15ad3683fd1d0c9696a13c321d2c225766b125f5","tarball":"https://registry.npmjs.org/@dennisrongo/dsh-mission-control/-/dsh-mission-control-0.5.1.tgz","fileCount":7,"unpackedSize":760376,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dennisrongo%2fdsh-mission-control@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEpjDvgKBmRTqpfEvq4KS9IHz5w8LHhByP9+cNJQDe4EAiATYUqAmEkF/aDoJEWtC6hLc1xbMBmgyYnkL2MrGzyRsQ=="}]},"_npmUser":{"name":"dennisrongo","email":"dennis@menacestudio.com"},"directories":{},"maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-mission-control_0.5.1_1788288068523_0.3518410522586255"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-27T22:14:33.509Z","modified":"2026-09-01T18:41:09.002Z","0.1.0":"2026-08-27T22:14:33.805Z","0.2.0":"2026-08-28T01:35:25.350Z","0.3.0":"2026-08-28T04:26:17.626Z","0.4.0":"2026-08-28T20:44:49.479Z","0.4.1":"2026-08-28T21:09:39.329Z","0.5.0":"2026-08-29T05:04:34.750Z","0.5.1":"2026-09-01T18:41:08.655Z"},"bugs":{"url":"https://github.com/dennisrongo/dsh-plugins/issues"},"author":{"name":"Dennis Rongo"},"license":"MIT","homepage":"https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control#readme","repository":{"type":"git","url":"git+https://github.com/dennisrongo/dsh-plugins.git","directory":"plugins/dsh-mission-control"},"description":"Mission Control dashboard for DeepSeek Harness (dsh) — live session fleet, swarm tree, token burn, and permission inbox as a shell.overlay plugin","maintainers":[{"name":"dennisrongo","email":"dennis@menacestudio.com"}],"readme":"# dsh-mission-control\n\n[![npm](https://img.shields.io/npm/v/@dennisrongo/dsh-mission-control)](https://www.npmjs.com/package/@dennisrongo/dsh-mission-control)\n\n**npm:** [`@dennisrongo/dsh-mission-control`](https://www.npmjs.com/package/@dennisrongo/dsh-mission-control) ·\n**source:** [dennisrongo/dsh-plugins](https://github.com/dennisrongo/dsh-plugins/tree/main/plugins/dsh-mission-control)\n\n**Mission Control** — a fleet dashboard plugin for [DeepSeek Harness (dsh)](https://github.com/deepseek-ai/deepseek-harness).\n\nOne glass panel over your entire agent fleet: live sessions, subagent swarm tree,\ntoken burn, and a permission inbox — registered into dsh's additive\n`shell.overlay` slot, so it floats over the stock web UI without touching it.\n\n## What it shows\n\nDocked as a right rail that the shell's layout reflows around:\n\n- **Fleet** — every session (root + subagents) with running / waiting / done\n  states, grouped by workspace\n- **Swarm tree** — coordinator → worker lineages, nested\n- **Stats strip** — session count, running, subagents, waiting-on-you\n- **Token burn** — estimated spend broken down by model\n- **Permission inbox** — sessions blocked on `approval` / `question` / `plan-review`\n\nBuilt on public faces only: `ctx.sessions.list` and `ctx.workspaces.list`\n(ObservableSnapshot → React), `sessionStats` projections (turns / steps / llmMs\n/ decodeTokens), and `PendingInteraction` off the session summaries. No tools,\nno presets. One minimal host service persists the panel's timer state to a JSON\ncell under the harness home — browser storage is origin-scoped and DSH Desktop\nserves the UI from an ephemeral port per launch, so without it a restart reset\nthe pomodoro. Without the host half the panel degrades to localStorage.\n\n## Stage\n\n**Stage** is a full-screen takeover, not a fourth panel mode — it layers over\nwhichever tab you were on and returns you to it on exit, via Esc or ×.\n\nIt renders a live grid of tiles: one per session that is **running**, **waiting\non you**, or was touched inside the **activity window** (a `30m` / `2h` toggle),\nmost active first so the busiest tiles sit far left. A tile carries the\nsession's live conversation and lets you **answer a pending permission in\nplace** — the operator is already looking at the tile, so sending them back to\nthe inbox to approve it would be the wrong move. Clicking through jumps to the\nsession.\n\nStage covers the whole viewport, so unlike the docked panel it also spans DSH\nDesktop's 36px window-drag strip. That region resolves before hit-testing and\noutranks the overlay's z-index, so the bar clears the band with top padding and\nevery control opts out with `data-dsh-no-drag` — otherwise the exit button\nlands under the caption controls and simply doesn't click.\n\nControl metrics are CSS custom properties (`--mc-ctl-h`, `--mc-ctl-font`,\n`--mc-msg-size`). The 400px rail wants compact controls; Stage is a full-screen\nsurface and overrides the same tokens with comfortable ones, so the two scales\nderive from one place instead of drifting apart.\n\n## Settings\n\nA drawer in the panel header, persisted to `localStorage` under\n`dsh-mission-control:settings` (origin-local; only the pomodoro is mirrored\nto the host cell). Parsing is defensive — any bad shape falls back to\ndefaults, and a storage failure (private mode, quota) degrades to an\nin-memory value rather than throwing into the shell.\n\n| Setting | Does |\n| --- | --- |\n| Sessions per workspace | How many sessions each Fleet group lists; the rest stay one click away. `0` = all. |\n| Fleet sort | Orders sessions inside a group. Sessions needing attention always stay on top regardless. |\n| Show break timer | Toggles the pomodoro footer. |\n| Work / break / long break | Pomodoro phase lengths, in minutes. |\n\nThe **pomodoro timer** runs in the footer and fires a desktop notification on\neach phase change. Its state survives restarts: it is mirrored to the host's\nstate cell (`<DSH_HOME>/storages/dsh-mission-control.json`) with a timestamped\nenvelope, and the newer copy wins on load — so a running timer picked up after a\nDesktop restart simply re-derives its remainder from the wall clock. The drawer is a two-column grid — one column for every label,\none for every control — so labels and controls line up across all rows; per-row\n`space-between` cannot do that, because it aligns each control to its own label.\n\n## Install (dev)\n\n```bash\npnpm install\npnpm run build          # emits lib/index.js + lib/client.js + lib/typert.host.js\npnpm test               # offline smoke test\n```\n\nThe package declares `dsh.bundle`, so one command installs **and** mounts both\nhalves — do **not** also add an `insert:` row to the profile's\n`cordis.patch.yml`; a second row with the same id is fatal\n(`duplicate loader entry id: dsh-mission-control`):\n\n```bash\ndsh plugin --profile web add @dennisrongo/dsh-mission-control\n# or, from a clone:\ndsh plugin --profile web add \"file:C:/absolute/path/to/dsh-plugins/plugins/dsh-mission-control\"\n```\n\nRestart the profile. The overlay rides in the `shell.overlay` seat; the host\ncell is at `<DSH_HOME>/storages/dsh-mission-control.json`.\n\n## Status\n\nVerified against dsh `0.1.1-rc.2` seams: `window.__ModuleLoader__.load`\nclosure-factory convention, `ctx.slots.register` additive list entry,\n`useSyncExternalStore` binding over `ctx.sessions.list`, and the\n`./typert` host-face export that publishes `dshMissionControl/load` and\n`save`.\n\ndsh is a fast-moving 0.1.x dev preview — re-verify seams on upgrade.\n","readmeFilename":"README.md"}