Skip to content

Vendored package rescope

English | 中文

The Cordis framework and its foundation libraries are vendored under vendor/ and published under the @deepseek-ai scope, because every harness package declares the framework as a peer dependency: publishing the harness publishes this layer with it, and under the upstream names that publication would squat them on the registry. This page is the name mapping; the decision and its consequences live in the rescope Agent Note, and the upstream commits in vendor/README.md.

Name mapping

DirectoryUpstream namePublished nameVersionRole
vendor/cordis/cordis@deepseek-ai/cordis4.0.0-rc.7Framework core: Context, Service, Fiber, events
vendor/cosmokit/cosmokit@deepseek-ai/cosmokit1.8.1Shared utilities the framework and Schemastery build on
vendor/schemastery/schemastery@deepseek-ai/schemastery3.18.0Config schemas (Schema) behind every plugin's Config
vendor/loader/@cordisjs/plugin-loader@deepseek-ai/cordis-plugin-loader1.0.0-rc.5cordis.yml loading, plugin resolution, repository cache
vendor/include/@cordisjs/plugin-include@deepseek-ai/cordis-plugin-include1.0.4Config includes and patch overlays
vendor/group/@cordisjs/plugin-group@deepseek-ai/cordis-plugin-group1.0.0Nested plugin groups
vendor/timer/@cordisjs/plugin-timer@deepseek-ai/cordis-plugin-timer1.1.2Disposal-aware timers on ctx
vendor/hmr/@cordisjs/plugin-hmr@deepseek-ai/cordis-plugin-hmr1.0.15Hot module replacement for plugins and config
vendor/logger-console/@cordisjs/plugin-logger-console@deepseek-ai/cordis-plugin-logger-console1.0.0Console logger exporter

Subpath exports keep their path: @cordisjs/plugin-loader/repository becomes @deepseek-ai/cordis-plugin-loader/repository.

What the rename does not touch

  • Directory names and versions. vendor/hmr/ stays vendor/hmr/, and every package keeps the upstream version its manifest table row records, so the vendored tree still reads as an upstream snapshot.
  • Dependency ranges. A dependency entry changes its key, never its range: "cordis": "^4.0.0-rc.7" becomes "@deepseek-ai/cordis": "^4.0.0-rc.7". linkWorkspacePackages resolves those preserved ranges to the pinned workspaces.
  • The Loader's cordis: builtin prefix. cordis:include and cordis:group are a protocol prefix, not a package name.
  • The cordis.yml configuration family, including *.cordis.yml, *.cordis.snapshot.yml, and cordis.patch.yml.
  • Harness packages whose own names contain the word, such as @deepseek-ai/dsh-tool-cordis.
  • Upstream runtime identifiers, such as Schemastery's Symbol.for('schemastery') and its vendor: metadata field.
  • Prose outside docs/. vendor/*/README.md, package READMEs, and Agent Notes keep the names they were written with; a bare cordis there can also be the Python SDK's option name or an agent-preset id. Inside docs/, prose and every Markdown fence follow the rename.

What your code has to change

SiteBeforeAfter
Module importimport { Context } from 'cordis'import { Context } from '@deepseek-ai/cordis'
Typed-event mergedeclare module 'cordis'declare module '@deepseek-ai/cordis'
package.json dependency key"@cordisjs/plugin-hmr": "^1.0.15""@deepseek-ai/cordis-plugin-hmr": "^1.0.15"
cordis.yml plugin entryname: '@cordisjs/plugin-include'name: '@deepseek-ai/cordis-plugin-include'

Applying, verifying, and reverting

scripts/rescope-vendor.ts owns the mapping above and performs the rename, so no reference is renamed by hand:

sh
pnpm run rescope-vendor            # report what would change
pnpm run rescope-vendor --apply    # rewrite every reference
pnpm run rescope-vendor:check      # assert the post-state; runs in the hygiene gate
pnpm run rescope-vendor --apply --reverse   # return to the upstream names

Re-apply it after an upstream sync (procedure), and follow it with the regeneration it prints: pnpm install for the lockfile, pnpm run gen-third-party-notices, and pnpm run verify-translation-pairing --write for the bilingual pairs it touched.

Released under the MIT License.