Files
deepseek-harness/packages/typert/registry
imccyu ec601ca13d build(vendor): rescope the vendored Cordis packages into @deepseek-ai
Machine-produced by `pnpm run rescope-vendor --apply` plus the regeneration it
prints: `pnpm install` for the lockfile, `pnpm run gen-third-party-notices`,
`verify-translation-pairing --write` for the touched bilingual pairs,
`gen-doc-graphs`, and one typert snapshot whose ids embed character offsets.
`pnpm run rescope-vendor --check` verifies the result.

Renames nine vendored packages (cordis, cosmokit, schemastery and the six
@cordisjs plugins) and every reference that resolves them: manifest names and
dependency keys, module specifiers including declare-module merges, cordis.yml
plugin names, tsconfig paths, every Markdown fence, and `docs/` prose.
Directory names, upstream versions, and dependency ranges are unchanged, so
vendor/README.md still reads as an upstream snapshot; its manifest table gains
an upstream-name column so THIRD_PARTY_NOTICES keeps MIT attribution pointed
at each fork's origin.

The tutorial tier follows the rename end to end: its yaml fences named plugins
the Loader can no longer resolve, its `ts ignore-check` fences disagreed with
the compiled fences beside them, and its prose quoted both. The contracts that
told readers to keep upstream names — the root convention and the vendoring
cookbook's tree comment and manifest invariant — now say to rescope instead.

Two rules read `@deepseek-ai/` as "another workspace plugin": the client bundle
purity gate now names the vendored libraries a browser bundle inlines, and the
files where a bare `cordis` is an agent-preset id keep that product data.
2026-08-10 22:04:13 +08:00
..

@deepseek-ai/dsh-typert-registry

English | 中文

Runtime registry for generated Typert artifacts. A contribution carries one package face's business reflection and optional live Zod schemas; ctx.typert registers both atomically and withdraws them with the calling Cordis fiber. TypeScript analysis and code generation live in dsh-typert-generator.

Package reflection is keyed by <package>#<face>. Schemas are keyed by <package>#<name> and retain the producer's Zod instance. JSON Schema is computed on demand at the consumer edge.

Public API

  • TypertRegistry is the default plugin and provides ctx.typert.
  • ctx.typert.lookups.register() registers the wire declaration and default resolver owned by the business package; configure() registers a resolver owned by Host composition that may run asynchronously. Their lifetimes are independent: configuration may precede the provider, and unloading the configuration restores the default policy.
  • ctx.typert.contexts.registerHost() and configureHost() apply the same ownership split to scoped Context identity; registerClient() supplies the corresponding Client Context binder.
  • register(contribution) rejects malformed identities and duplicate package-face or schema keys before committing anything, then returns the exact Cordis effect disposer.
  • get(key), resolve(key), and list(filter?) query live schemas. resolve() distinguishes a malformed key, an absent package, and a package that contributes no schema under that name.
  • getPackage(packageName, face?) and listPackages(filter?) query generated service, event, and object reflection; the default face is host.
  • toJSONSchema(key, params?) projects a live schema with z.toJSONSchema() without caching the result.
  • typertKey() and typertPackageKey() compose the two stable identity forms.

The @deepseek-ai/dsh-typert-registry/types subpath contains the pure contribution and record contracts. dsh-typert-loader discovers and registers generated host artifacts in Loader compositions; direct ctx.typert.register() supports other composition owners.

Model Experience

None, as the registry contributes no prompt, tool, or session event; consumers such as cordis_inspect own any model-visible projection.

KV Cache effect

No direct effect. A consumer that places reflection in a request owns the resulting prefix change.

Known Limitations and Deferred Work

  • The registry stores generated reflection but does not merge host and client graphs or resolve TypeScript references. Those are analyzer and emitter concerns.
  • Schema keys omit the face because host and client run in separate contexts. Registering same-named schemas from both faces into one context is rejected as a duplicate.