{"_id":"@deepseek-ai/cordis","_rev":"4-736163a51cb84474d41c63584381e1c9","name":"@deepseek-ai/cordis","dist-tags":{"latest":"4.0.1","next":"4.0.1-rc.4"},"versions":{"4.0.1-rc.1":{"name":"@deepseek-ai/cordis","version":"4.0.1-rc.1","author":{"name":"Shigma","email":"shigma10826@gmail.com"},"license":"MIT","_id":"@deepseek-ai/cordis@4.0.1-rc.1","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"bin":{"cordis":"bin.js"},"dist":{"shasum":"c3628cbf4a844f9a7850bbbc246c1fbd7c0fb924","tarball":"https://registry.npmjs.org/@deepseek-ai/cordis/-/cordis-4.0.1-rc.1.tgz","fileCount":32,"integrity":"sha512-S6gVP4ZwkNy2bsPdz2Wc4wII69uRs98e5OJ1Xsd8idxxXTIgAG7eMF8CqVz6fPxves79htnHlP55ZkOgTfwZTQ==","signatures":[{"sig":"MEYCIQCxPTW5JHEANXDwvN0ci/4riCT0tlwUFHGAQRu/CTL4JgIhAO3pNGhujDMSL7SIV9vIk2WB0HEgGkXgGHaBBzYgeCF9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239100},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm-vendor/deepseek-ai-cordis-4.0.1-rc.1.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./package.json":"./package.json"},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm-vendor/deepseek-ai-cordis-4.0.1-rc.1.tgz","_integrity":"sha512-S6gVP4ZwkNy2bsPdz2Wc4wII69uRs98e5OJ1Xsd8idxxXTIgAG7eMF8CqVz6fPxves79htnHlP55ZkOgTfwZTQ==","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"vendor/cordis"},"_npmVersion":"11.16.0","description":"Meta-Framework for Modern JavaScript Applications","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@deepseek-ai/cosmokit":"^1.8.2-rc.1","@standard-schema/spec":"^1.1.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"peerDependencies":{"@deepseek-ai/cordis-plugin-loader":"^1.0.1-rc.1","@deepseek-ai/cordis-plugin-include":"^1.0.5-rc.1"},"peerDependenciesMeta":{"@deepseek-ai/cordis-plugin-loader":{"optional":true},"@deepseek-ai/cordis-plugin-include":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cordis_4.0.1-rc.1_1786388509129_0.27093556145414377","host":"s3://npm-registry-packages-npm-production"}},"4.0.1-rc.4":{"name":"@deepseek-ai/cordis","version":"4.0.1-rc.4","author":{"name":"Shigma","email":"shigma10826@gmail.com"},"license":"MIT","_id":"@deepseek-ai/cordis@4.0.1-rc.4","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"bin":{"cordis":"bin.js"},"dist":{"shasum":"5337fe0aeb7900b563173815b2d24731ee941515","tarball":"https://registry.npmjs.org/@deepseek-ai/cordis/-/cordis-4.0.1-rc.4.tgz","fileCount":32,"integrity":"sha512-EaKPj5M79GCqYwazS7wnLfAzXPiCQRKvgj67+FZjzR0CQiYQO/WOUaWxwVETlzrgvq3nOsLwHIIMtzqQeLOzcA==","signatures":[{"sig":"MEUCIAcOP4nLY2UQj9kMEcm0MOcJky5j5JRosjqw7SGFeRZsAiEA+8p5UMSVjFKAlVed2dqFyUPnWSl9GFSBWuSfNifGOOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239100},"main":"lib/index.js","type":"module","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm-vendor/deepseek-ai-cordis-4.0.1-rc.4.tgz","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./package.json":"./package.json"},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm-vendor/deepseek-ai-cordis-4.0.1-rc.4.tgz","_integrity":"sha512-EaKPj5M79GCqYwazS7wnLfAzXPiCQRKvgj67+FZjzR0CQiYQO/WOUaWxwVETlzrgvq3nOsLwHIIMtzqQeLOzcA==","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"vendor/cordis"},"_npmVersion":"11.17.0","description":"Meta-Framework for Modern JavaScript Applications","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@deepseek-ai/cosmokit":"^1.8.2-rc.4","@standard-schema/spec":"^1.1.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"@deepseek-ai/cordis-plugin-loader":"^1.0.2-rc.4","@deepseek-ai/cordis-plugin-include":"^1.0.6-rc.4"},"peerDependenciesMeta":{"@deepseek-ai/cordis-plugin-loader":{"optional":true},"@deepseek-ai/cordis-plugin-include":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/cordis_4.0.1-rc.4_1786572891430_0.001636397036283599","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@deepseek-ai/cordis","description":"Meta-Framework for Modern JavaScript Applications","version":"4.0.1","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"vendor/cordis"},"sideEffects":false,"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./package.json":"./package.json"},"author":{"name":"Shigma","email":"shigma10826@gmail.com"},"license":"MIT","peerDependencies":{"@deepseek-ai/cordis-plugin-loader":"^1.0.2","@deepseek-ai/cordis-plugin-include":"^1.0.6"},"peerDependenciesMeta":{"@deepseek-ai/cordis-plugin-include":{"optional":true},"@deepseek-ai/cordis-plugin-loader":{"optional":true}},"dependencies":{"@standard-schema/spec":"^1.1.0","@deepseek-ai/cosmokit":"^1.8.2"},"bin":{"cordis":"bin.js"},"_id":"@deepseek-ai/cordis@4.0.1","bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","_integrity":"sha512-YBdskTU2Po1kru3GgcUWUbkTsPMA9LkSQDAY8rBkFJeajdgcQad3QPJZE26JyK99Xb6HaASvoXg2DSUTeN/0Nw==","_resolved":"/home/runner/work/deepseek-harness/deepseek-harness/dist/npm-vendor/deepseek-ai-cordis-4.0.1.tgz","_from":"file:/home/runner/work/deepseek-harness/deepseek-harness/dist/npm-vendor/deepseek-ai-cordis-4.0.1.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-YBdskTU2Po1kru3GgcUWUbkTsPMA9LkSQDAY8rBkFJeajdgcQad3QPJZE26JyK99Xb6HaASvoXg2DSUTeN/0Nw==","shasum":"e8171e63b11d259eec87ab42b2cd6d8b56949203","tarball":"https://registry.npmjs.org/@deepseek-ai/cordis/-/cordis-4.0.1.tgz","fileCount":32,"unpackedSize":239076,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCwrltmd5gag0+RApP6DcxmPPpHAYgnRh56cVbgUDKungIgbLijokCHcDszBbmd3yK4DtRcbUelPTPWt+GbHl5cjhU="}]},"_npmUser":{"name":"imccyu","email":"imccyu@gmail.com"},"directories":{},"maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordis_4.0.1_1786607345493_0.17850649069690427"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-10T19:01:48.578Z","modified":"2026-08-13T07:49:05.845Z","4.0.1-rc.1":"2026-08-10T19:01:49.281Z","4.0.1-rc.4":"2026-08-12T22:14:51.567Z","4.0.1":"2026-08-13T07:49:05.642Z"},"bugs":{"url":"https://github.com/deepseek-ai/deepseek-harness/issues"},"author":{"name":"Shigma","email":"shigma10826@gmail.com"},"license":"MIT","homepage":"https://github.com/deepseek-ai/deepseek-harness#readme","repository":{"type":"git","url":"git+https://github.com/deepseek-ai/deepseek-harness.git","directory":"vendor/cordis"},"description":"Meta-Framework for Modern JavaScript Applications","maintainers":[{"name":"imccyu","email":"imccyu@gmail.com"},{"name":"tianyicui-deepseek","email":"tianyi@deepseek.com"}],"readme":"# Cordis\n\nCordis is a TypeScript plugin framework for applications that need explicit\ndependency injection, scoped services, lifecycle-managed cleanup, and optional\nconfiguration-driven loading. The core package is published as `cordis`; the\nofficial packages in this repository add a loader, config-file includes, HMR,\nconsole logging, timers, and project scaffolding.\n\n## Install\n\n```sh\nyarn add cordis\n```\n\nCordis is ESM-first. The repository is tested on current Node releases, and the\nscaffolder requires Node 22 or newer.\n\n## Quick Start\n\n```ts\nimport { Context, Service } from 'cordis'\n\ndeclare module 'cordis' {\n  interface Context {\n    counter: Counter\n  }\n\n  interface Events {\n    'app/ready'(message: string): void\n  }\n}\n\nclass Counter extends Service {\n  value = 0\n\n  constructor(ctx: Context) {\n    super(ctx, 'counter')\n  }\n\n  next() {\n    return ++this.value\n  }\n}\n\nconst greeter = Object.assign((ctx: Context) => {\n  ctx.on('app/ready', (message) => {\n    ctx.logger.info('%s #%d', message, ctx.counter.next())\n  })\n}, {\n  inject: ['counter'],\n})\n\nconst root = new Context()\nawait root.plugin(Counter)\nawait root.plugin(greeter)\n\nroot.emit('app/ready', 'started')\nawait root.fiber.dispose()\n```\n\nThe important pieces are:\n\n- `new Context()` creates the root dependency container.\n- `ctx.plugin()` starts a plugin and returns a `Fiber`.\n- `inject` tells Cordis which services must exist before the plugin runs.\n- Effects, event listeners, and services are removed when their owning fiber is\n  disposed.\n\n## Documentation\n\n- [Tutorial: build a plugin](../../docs/tutorials/build-a-plugin.md)\n- [Guide: plugin lifecycle](../../docs/guides/plugin-lifecycle.md)\n- [Guide: loader configuration](../../docs/guides/loader-config.md)\n- [API reference](../../docs/api/core.md)\n\n## Packages\n\n| Package | Purpose |\n| --- | --- |\n| `cordis` | Core context, plugin registry, fiber lifecycle, events, services, and logger. |\n| `create-cordis` | Interactive project scaffolder. |\n| `@cordisjs/plugin-loader` | Runtime plugin tree and loader service. |\n| `@cordisjs/plugin-include` | YAML/JSON config-file include support for the loader. |\n| `@cordisjs/plugin-group` | Nested plugin groups for loader configs. |\n| `@cordisjs/plugin-hmr` | Hot module replacement for loader-managed plugins. |\n| `@cordisjs/plugin-logger-console` | Console exporter for the built-in logger. |\n| `@cordisjs/plugin-timer` | Disposal-aware timeout, interval, throttle, and debounce helpers. |\n| `@cordisjs/utils` | Shared utilities used by Cordis packages. |\n\n## Development\n\n```sh\nyarn install\nyarn build\nyarn test\nyarn lint\n```\n\nThe monorepo uses Yakumo to build and test all packages. Most examples in the\ndocs use public APIs from `cordis`; loader examples additionally use\n`@cordisjs/plugin-loader` and `@cordisjs/plugin-include`.\n","readmeFilename":"README.md"}