Files
deepseek-harness/packages/typert
imccyu c687fe9185 perf(typert): memoize per-file registration and path normalization
The Typert workspace pass scans the analyzer's symbol table, and every
symbol asked `registrationForFile`/`packageNameForFile` for its owning
package. Both looked up the real path and then scanned every registration
with `isWithin`, and `isWithin` re-ran `path.resolve` through `realPath`
for both arguments on each call. A CPU profile of the host pass put
17.0 s of the 30.9 s sampled in that scan, almost all of it in
`realPath`/`resolve`/`existsSync`.

The registration set and the analyzer's face are fixed for the analyzer's
lifetime, so each source path's answer cannot change: memoize both
lookups per analyzer. `resolve` depends only on the requested path and the
process working directory, so memoize the normalization step too; the
existing canonical-path cache keeps its "existing paths only" rule.

tsdown host pass, interleaved A/B: 39.89/37.18 s -> 25.70/25.06 s.
Isolated generator phase: discover 8.69/8.59 s -> 7.33/7.44 s,
generate 17.19/16.96 s -> 4.21/4.21 s. Every emitted `typert.*` file
hashes identically before and after each run.
2026-10-08 13:03:43 +08:00
..
…

description, kind
description kind
The Typert group map: the build-time type-graph generator, runtime registry, Loader integration, and shared Remote protocol that enable typed Host-to-Client calls. package-group

packages/typert

English | 中文

Summary

With the Typert group, Client environments can call Host capabilities as typed methods and share generated schemas and reflection without hand-written wire code. A build-time generator turns source type declarations into compiler-independent models and runtime artifacts, a runtime registry stores those artifacts, and a Loader integration registers them automatically in Loader compositions. A shared protocol package supplies the Remote-call declarations — decorators, wire descriptors, codecs, and provider contracts — that business packages, generated artifacts, the Host Gateway, and the Client API all consume. This page maps the four packages; each package README owns its configuration, usage, and limits.

Table of Contents


Packages

Package Role ctx key
generator/ Analyzes source types at build time and generates the reflection, schemas, and Remote descriptors that runtimes load —
loader/ Auto-registers generated Typert artifacts from Loader compositions into the runtime registry consumes ctx.loader and ctx.typert
protocol/ Declares the Remote decorators, wire descriptors, codecs, and provider contracts shared by Host and Client —
registry/ Stores generated package reflection and live Zod schemas at runtime, plus lookup and Context provider registries ctx.typert


Dev Note

Working context for maintainers — click to expand

None.