Merge remote-tracking branch 'origin/worktree/ci-native-windows-20260808' into worktree/ci-native-windows-coverage-20260808

# Conflicts:
#	packages/subagent/subagent-codex/README.i18n.yaml
#	packages/subagent/subagent-codex/README.zh.md
This commit is contained in:
Tianyi Cui
2026-08-09 13:29:57 +08:00
1007 changed files with 1965 additions and 1893 deletions

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write packages/typert/README.md
README.md: ad9f843e48be0e3be85921ed8fd3ca4e2c327160
README.zh.md: 0d4be016b766178b54f7e269583fa4200e3eb24b
README.zh.md: aae74bf89f657f50f4519b2f8a0628fd391f8de3

View File

@@ -7,5 +7,5 @@ Typert 将源代码分析、运行时存储和 Loader 发现机制分离。
| 包 | 职责 | Cordis 键 |
|---|---|---|
| [`registry/`](registry/README.md) | 存储运行时包反射和 schema | `ctx.typert` |
| [`loader/`](loader/README.md) | 发现 Loader 条目并注册生成的宿主产物 | 消费 `ctx.loader``ctx.typert` |
| [`loader/`](loader/README.md) | 发现 Loader 条目并注册生成的宿主产物 | 使用 `ctx.loader``ctx.typert` |
| [`generator/`](generator/README.md) | 从源代码类型生成运行时产物 | 构建时库 |

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write packages/typert/generator/README.md
README.md: 38030c2b7e07c70ab79001086640b6581943dbd9
README.zh.md: afa45820b7c7fba77704b86902c8752cd45777e6
README.zh.md: 0cf0a365785775a9461e9744d29a0da482e54d14

View File

@@ -4,7 +4,7 @@
TypeScript 项目分析器和模型驱动的 Typert 生成器。在生成任何产物之前,它会先将开发者编写的源类型树转换为独立于编译器的 `FaceModel``TypeGraph` 数据。静态分析无需 Cordis 即可消费该模型;各产物生成组件均不会接收 TypeScript 抽象语法树AST或类型检查器对象。
分析器可以分别使用由 `tsconfig.host.json``tsconfig.client.json` 初始化的独立 `ts.Program`。直接 Project Reference 确定 compiler project 成员关系;带 `dshClient` 的普通单 project package 可按公开 subpath 同时贡献 Host 与 Client 运行时 face显式引用 `tsconfig.host.json``tsconfig.client.json` 的拆分 project 则只贡献所选 face。`package.json#exports` 确定所有跨包公开边界,跨 face 的边只能来自源码导入或重新导出。NPM 依赖拥有的类型(包括 `@types` 包中的全局声明)继续以 `external` 引用表示,不会被展开。
分析器可以分别使用由 `tsconfig.host.json``tsconfig.client.json` 初始化的独立 `ts.Program`。直接项目引用确定编译器 face 的成员归属,而包子路径确定 TypeRT 运行时 face 的贡献:带 `dshClient` 的普通单项目包可以同时贡献 Host 与 Client 运行时模型;只有通过 `tsconfig.host.json``tsconfig.client.json` 显式引用的拆分项目,才会被限制在相应 face。`package.json#exports` 确定所有跨包公开边界,跨 face 的边只能来自源码导入或重新导出。NPM 依赖拥有的类型(包括 `@types` 包中的全局声明)继续以 `external` 引用表示,不会被展开。
## 分析模型
@@ -18,7 +18,7 @@ TypeScript 项目分析器和模型驱动的 Typert 生成器。在生成任何
`WorkspaceTypertGenerator` 会遍历从 Cordis `Context``Events` 扩充声明及显式 `@typert` 声明可达的包公开导出,以发现贡献方。发布产物时,它要求宿主侧产物位于 `lib/typert.host.{js,d.ts}` 并以 `package/typert` 暴露,客户端侧产物位于 `lib/typert.client.{js,d.ts}` 并以 `package/client/typert` 暴露。生成的声明将 `TYPERT` 暴露为 `unknown`,因此参与贡献的业务包无需依赖运行时注册表。
各包可自行选择是否发布,未提供对应公开入口的业务包无需生成 Typert 产物。仓库的 Host tsdown 会以 `tsconfig.host.json` 为唯一 program 种子运行 workspace TypeRT 生成;它既生成 Host 反射产物,也把 Host Remote 约投影为 Client 使用的 `typert.remote-client.*`。后续 Client tsdown 不启动 TypeRT也不分析 `tsconfig.client.json`。静态消费方仍可直接调用 `WorkspaceAnalyzer`,显式选择 face 与包子集,并在不发布或加载运行时产物的情况下分批处理包。
各包可自行选择是否发布,未提供对应公开入口的业务包无需生成 Typert 产物。仓库的 Host tsdown 会以 `tsconfig.host.json` 为唯一 program 种子运行 workspace TypeRT 生成;它既生成 Host 反射产物,也把 Host Remote 约投影为 Client 使用的 `typert.remote-client.*`。后续 Client tsdown 不启动 TypeRT也不分析 `tsconfig.client.json`。静态消费方仍可直接调用 `WorkspaceAnalyzer`,显式选择 face 与包子集,并在不发布或加载运行时产物的情况下分批处理包。
## 本仓库的 Cordis 投影

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write packages/typert/registry/README.md
README.md: fa227b1c8faf1abd5a6492d4b8fe7d0c51ceeef1
README.zh.md: 343e43aaca6ddaa0bb5e8d3130c85f37e4b4cb93
README.zh.md: b708e536acb7a5c4dc47e8c83180728e2ce150cd

View File

@@ -9,15 +9,15 @@
## 公开 API
- `TypertRegistry` 是默认插件,并提供 `ctx.typert`
- `ctx.typert.lookups.register()` 注册业务包拥有的 wire 声明和默认 resolver`configure()` 注册 Host 组合拥有可异步执行的 resolver。两者生命周期独立配置可以先于 provider,卸载配置会恢复默认策略。
- `ctx.typert.contexts.registerHost()``configureHost()` 将同一所有权拆分应用于 scoped Context 身份`registerClient()` 提供对应的 Client Context binder
- `ctx.typert.lookups.register()` 注册业务包拥有的协议声明和默认解析器`configure()` 注册由宿主组合拥有可异步执行的解析器。两者生命周期相互独立配置可以先于提供方注册,卸载配置会恢复默认策略。
- `ctx.typert.contexts.registerHost()``configureHost()` 对具作用域的上下文身份采用同样的所有权划分`registerClient()` 提供对应的客户端上下文绑定器
- `register(contribution)` 会在提交任何内容之前拒绝格式错误的标识,以及重复的包与 face 组合键或 schema 键,随后返回 Cordis effect 提供的同一资源释放函数。
- `get(key)``resolve(key)``list(filter?)` 查询当前有效的 schema。`resolve()` 能区分格式错误的键、未注册的包,以及已注册但未以该名称提供 schema 的包。
- `getPackage(packageName, face?)``listPackages(filter?)` 查询生成的服务、事件和对象反射信息;默认 face 为 `host`
- `toJSONSchema(key, params?)` 使用 `z.toJSONSchema()` 投影当前有效的 schema且不缓存结果。
- `typertKey()``typertPackageKey()` 构造两种稳定的标识形式。
`@deepseek-ai/dsh-typert-registry/types` 子路径包含注册项和记录的纯类型约。[`dsh-typert-loader`](../loader/README.md) 会在 Loader 组合中发现并注册生成的宿主侧产物;其他组合所有者可以直接调用 `ctx.typert.register()`
`@deepseek-ai/dsh-typert-registry/types` 子路径包含注册项和记录的纯类型约。[`dsh-typert-loader`](../loader/README.md) 会在 Loader 组合中发现并注册生成的宿主侧产物;其他组合所有者可以直接调用 `ctx.typert.register()`
## 模型体验

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write packages/typert/type-meta/README.md
README.md: 9bd475f8973ec54756fe0e63d5b7fa485381697d
README.zh.md: 10a6309bc47001d572abb3dd3f794ebfcf6252e8
README.zh.md: 68b690d2143b4420f2e10efceaca0dfc1149d0ff

View File

@@ -2,7 +2,7 @@
[English](README.md) | 中文
该包提供不依赖编译器的声明,由业务包、生成的 TypeRT 产物、Host Gateway 和 Client API 共享。它负责 Remote Service 基类、装饰器、显式 binding 回退、可通过声明合并扩展的协议映射、调用描述符、编解码器和提供方约;它不执行 TypeScript 分析,也不注册具体 Cordis 服务。
该包提供不依赖编译器的声明,由业务包、生成的 TypeRT 产物、Host Gateway 和 Client API 共享。它负责 Remote Service 基类、装饰器、显式 binding 回退、可通过声明合并扩展的协议映射、调用描述符、编解码器和提供方约;它不执行 TypeScript 分析,也不注册具体 Cordis 服务。
## Remote 声明
@@ -20,7 +20,7 @@ Host 方法通过将 `signal: AbortSignal` 声明为最后一个参数来启用
业务包扩展 `TypeRTLookupMap``TypeRTContextMap`,以关联 Host 对象或作用域 Context 与其协议身份。生成的产物扩展 `TypeRTRemoteMap``TypeRTRemoteScopeMap``TypeRTRemoteNamespaceMap`,使 Client 导入后仅暴露选定的 Remote 方法。`InvocationDescriptor` 是供注册表、Gateway 和 Client Remote 使用的共享运行时形式。
查找包与 Context 包同时负责其约的两侧:声明合并提供静态关联,运行时提供方则向 `ctx.typert` 注册身份解析。lookup 或 Host Context provider 提供稳定声明与默认 resolverHost 组合可以另行配置同步或异步 resolver策略拒绝可用 `TypeRTLookupFailure` 携带由边界适配器拥有的失败值。严格编解码器携带生成的 schema`src-json` 编解码器标识约束更弱的源码启动路径。
查找包与 Context 包同时负责其约的两侧:声明合并提供静态关联,运行时提供方则向 `ctx.typert` 注册身份解析。lookup 或 Host Context provider 提供稳定声明与默认 resolverHost 组合可以另行配置同步或异步 resolver策略拒绝可用 `TypeRTLookupFailure` 携带由边界适配器拥有的失败值。严格编解码器携带生成的 schema`src-json` 编解码器标识约束更弱的源码启动路径。
## 模型体验