Review follow-ups that are logic rather than documentation: - rpc.schema.ts had lost the credential-rejected branch while api-proxy.ts still returns that code, so a legitimate business error failed the client's response parse. Restore the branch and assert it. - rpc-schemas.spec.ts had lost the workspace list, archiveSession and insertSessionBefore cases along with the command schemas; those routes still ship, so restore their coverage. - An omitted SRC field is now recognized by an absent key instead of an undefined value, which makes the allowance assertExactArguments already granted reachable; an explicitly undefined field stays invalid input. A weak descriptor's undefined result rides the wire as an absent value, matching the envelope removal. - The chooser unmounts an already-created backend when the surface entry fails to load, and no longer reverses the captured id array in place.
api/ — Remote API layers
English | 中文
The application-facing Remote stack. remotes owns BFF policy and the selected business API, while gateway implements the TypeRT unary RPC endpoints shared by Host and Client environments.
| Package | Role | ctx key |
|---|---|---|
remotes/ |
Host Agent/Session lookup policy and Client Remote contribution assembly | no service; configures ctx.typert and consumes ctx.remote |
gateway/ |
Host TypeRT dispatcher and Client Remote endpoint | ctx.typertGateway / ctx.remote |
The runtime dependency direction is remotes → gateway → connection → webserver: the BFF consumes the shared TypeRTClientRemote contract, Gateway delegates transport to Connection, and Connection mounts on the HTTP server. Cordis service injection and Client module metadata preserve this order without importing the concrete Gateway from the Remotes Client entry.
Known Limitations and Deferred Work
- Connection and WebServer remain at
client/connectionandhost/webserver; a later package-only move can place them underapi/connectionandapi/webserverwithout changing their service contracts. - The legacy API Proxy remains at
host/apiproxyas the fallback for methods not yet migrated to Remote. It consumes the Host resolver owned byapi-remotesso migrated and legacy methods retain one Agent/Session identity policy.