diff --git a/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.i18n.yaml b/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.i18n.yaml index c9c690211e..e780a00501 100644 --- a/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.i18n.yaml +++ b/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.i18n.yaml @@ -27,8 +27,8 @@ en: 151b1f66af030bc5 zh: 44fea0898acfbdcb /agent-note-unified-typert-remote-metadata/acceptance-criteria: - en: 875ea831cf90f310 - zh: 67f57449a55fe8ec + en: d011ec1516706b20 + zh: 945c6e3eba101368 /agent-note-unified-typert-remote-metadata/risks: en: a770478eac8f5fd1 zh: f24aa378f875f47f diff --git a/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.md b/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.md index 25154bcb8a..c99fd9effd 100644 --- a/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.md +++ b/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.md @@ -180,7 +180,7 @@ pnpm dsh --profile - Ordinary artifacts emit one static method spec per endpoint and return lazy class instances; direct method indexes alias descriptor objects, with full stream/binary typing, separate compiler faces, and full-face augmentation retention. - Descriptor indexes and each input-policy view, parser, and projection are independently lazy and cached; Loader validates static specs and callable helpers without calling selectors, parsers, or projections. - Every input parameter emits normal and strict codecs from the same model; consumers select policy without a method annotation. Both envelopes reject extra named arguments; strict input recursively closes declared objects without closing JSON or dictionary keys or changing Host dispatch and results. -- Protocol source and built entries have no Zod runtime dependency; generated artifacts explicitly supply Zod, zero-argument endpoints create empty inputs that reject extra fields, and the production-profile Loader regression asserts actual Session events. +- Protocol source and built entries have no Zod runtime dependency; generated artifacts explicitly supply Zod, zero-argument endpoints create empty inputs that reject extra fields, and the [production headless-profile Loader regression](<../../../../packages/context/time-context/tests/time-context.e2e.ts>) asserts actual Session events. - Registry identity, atomic registration, withdrawal, and disposal remain intact. - Missing documentation or unsupported optional projection does not disable generation; selected tools reject missing requirements and still parse outputs. - Strict source/artifact invocation and limited fallback have separate tests; a withdrawn strict descriptor never enables fallback. diff --git a/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.zh.md b/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.zh.md index 1b09c77379..9370060e1e 100644 --- a/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.zh.md +++ b/.agents/notes/proposed/architecture/2026-09-20-unified-typert-remote-metadata.zh.md @@ -180,7 +180,7 @@ pnpm dsh --profile - 普通产物为每个端点生成一份静态方法 spec,并返回惰性类实例;直接方法索引引用描述符对象,保留完整流式/二进制类型、独立编译面及完整编译面的声明合并。 - 描述符索引与每种输入策略的视图、解析器和投影都独立惰性求值并缓存;Loader 校验静态 spec 及可调用辅助能力,不调用选择器、解析器或投影。 - 每个输入参数从同一模型生成普通与严格 codec;消费方无需方法注解即可选择策略。两种封装都拒绝额外具名参数;严格输入递归关闭已声明对象,但不关闭 JSON 或字典键,也不改变 Host 分发和结果。 -- 协议源码与构建入口没有 Zod 运行时依赖;生成产物显式提供 Zod,无参端点也能创建拒绝额外字段的空输入对象;生产 profile 的 Loader 回归保留真实 Session 事件断言。 +- 协议源码与构建入口没有 Zod 运行时依赖;生成产物显式提供 Zod,无参端点也能创建拒绝额外字段的空输入对象;[生产 headless profile 的 Loader 回归](<../../../../packages/context/time-context/tests/time-context.e2e.ts>)断言真实 Session 事件。 - Registry 身份、原子注册、撤销和释放保持不变。 - 缺少文档或不支持可选投影不阻止生成;选中的工具拒绝缺少必需信息的条目,并仍然解析输出。 - 严格源码/产物调用与有限 fallback 分别测试;撤销严格 descriptor 绝不启用 fallback。 diff --git a/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml b/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml index 1ae5d09e4f..080248eabe 100644 --- a/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml +++ b/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml @@ -21,8 +21,8 @@ en: 39494aa3af994e6f zh: 07c2880503668176 /2026-10-05-working-directory-attribution/verification: - en: 5963942c0d87e518 - zh: 5dbb6ac0fca1f279 + en: 9b79379292881d10 + zh: 54d670c09ce1bfc7 /2026-10-05-working-directory-attribution/dev-note: en: b75c8458928b72b9 zh: 003ba4e17b4b5269 diff --git a/docs/persistence-changes/2026-10-05-working-directory-attribution.md b/docs/persistence-changes/2026-10-05-working-directory-attribution.md index 80996eee5c..6496413c37 100644 --- a/docs/persistence-changes/2026-10-05-working-directory-attribution.md +++ b/docs/persistence-changes/2026-10-05-working-directory-attribution.md @@ -52,7 +52,7 @@ Existing records remain valid. The additive working-directory source kind is att ## Verification -pnpm exec vitest run packages/session/working-directory/tests packages/shell/tool-bash/tests/tools.spec.ts packages/shell/tool-pwsh/tests/tools.spec.ts packages/subagent/subagent-in-process-driver/tests/schedule-tools.spec.ts: 4 files and 203 tests passed. +pnpm exec vitest run packages/session/working-directory/tests packages/shell/tool-bash/tests/tools.spec.ts packages/shell/tool-pwsh/tests/tools.spec.ts packages/subagent/subagent/tests/schedule-tools.spec.ts: 5 files and 207 tests passed. ## Dev Note diff --git a/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md b/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md index e7ed00e08f..56157cc7d2 100644 --- a/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md +++ b/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md @@ -52,7 +52,7 @@ changes: ## 验证 -pnpm exec vitest run packages/session/working-directory/tests packages/shell/tool-bash/tests/tools.spec.ts packages/shell/tool-pwsh/tests/tools.spec.ts packages/subagent/subagent-in-process-driver/tests/schedule-tools.spec.ts:4 个文件、203 个测试通过。 +pnpm exec vitest run packages/session/working-directory/tests packages/shell/tool-bash/tests/tools.spec.ts packages/shell/tool-pwsh/tests/tools.spec.ts packages/subagent/subagent/tests/schedule-tools.spec.ts:5 个文件、207 个测试通过。 ## 开发备注 diff --git a/docs/subsystems/typert.i18n.yaml b/docs/subsystems/typert.i18n.yaml index bb46fc7d0b..0030b50111 100644 --- a/docs/subsystems/typert.i18n.yaml +++ b/docs/subsystems/typert.i18n.yaml @@ -18,5 +18,5 @@ en: 90fab88fe51d17bb zh: 2d4c3849cf2dc7d3 /typert-remote-calls/consumer-remote: - en: 37f48bfcc9e3e0d1 - zh: 45509a69a67143ad + en: 324386c600a5fdf5 + zh: 7963501eb663e228 diff --git a/docs/subsystems/typert.md b/docs/subsystems/typert.md index 6bea7bf887..e9cabd714b 100644 --- a/docs/subsystems/typert.md +++ b/docs/subsystems/typert.md @@ -372,7 +372,7 @@ interface TypertGateway { `ctx.remote` exposes only namespaces contributed by imported `/remote` artifacts. `$mount()` installs generated descriptors and concrete methods as one fiber-owned operation. Each namespace is a traced `remote.` Cordis child Service whose lifetime spans its mounted methods; no JavaScript Proxy or Host business Service type enters the consumer. -Metadata ownership is separate from connection ownership; the [registry reference](<../../packages/typert/registry/README.md>) covers offline registration and mount lifetimes. Importing, registering, listing, or calling Remote methods does not acquire interaction-waterfall ownership. Gateway Clients remain passive unless the connection opts into Host events with `forwardedEvents: true`; the Web bundle publishes that choice to served pages through the Host Gateway row. +Metadata ownership is separate from connection ownership; the [registry reference](<../../packages/typert/registry/README.md>) covers offline registration and mount lifetimes. ```ts type-equiv /** Client Remote capability implemented by the Gateway and consumed by Remote assemblies. */ diff --git a/docs/subsystems/typert.zh.md b/docs/subsystems/typert.zh.md index 72cba0f04c..287e81a5fa 100644 --- a/docs/subsystems/typert.zh.md +++ b/docs/subsystems/typert.zh.md @@ -372,7 +372,7 @@ interface TypertGateway { `ctx.remote` 只暴露由已导入 `/remote` 产物贡献的 namespace。`$mount()` 会把生成的 descriptor 与具体方法作为一项由 fiber 持有的操作统一注册。每个 namespace 都是可追踪的 `remote.` Cordis 子服务,其生命周期覆盖已挂载的方法;JavaScript Proxy 与 Host 业务服务类型都不会进入消费方。 -元数据所有权与连接所有权相互独立;[注册表参考](<../../packages/typert/registry/README.zh.md>)说明离线注册与挂载生命周期。导入、注册、列出或调用 Remote 方法都不会取得交互 waterfall 的所有权。Gateway Client 保持被动,除非连接通过 `forwardedEvents: true` 选择加入 Host 事件;Web bundle 通过 Host Gateway 行把这一选择发布给已服务的页面。 +元数据所有权与连接所有权相互独立;[注册表参考](<../../packages/typert/registry/README.zh.md>)说明离线注册与挂载生命周期。 ```ts type-equiv /** Client Remote capability implemented by the Gateway and consumed by Remote assemblies. */ diff --git a/packages/typert/protocol/src/index.ts b/packages/typert/protocol/src/index.ts index 22d5036650..cac28eace5 100644 --- a/packages/typert/protocol/src/index.ts +++ b/packages/typert/protocol/src/index.ts @@ -219,8 +219,8 @@ export function Remote( context: ClassMethodDecoratorContext Result>, ): void /** - * Mark one method with an exported name, stream delivery, or closed generated request objects. - * @param option - endpoint name or explicit Remote options. + * Mark one public instance method with an endpoint name or stream delivery. + * @param option - endpoint name or Remote options for name and mode. * @returns a standard method decorator. */ export function Remote(option: string | RemoteMethodOptions): RemoteMethodDecorator