gen fn validateContract(iface: ModuleInterface) -> String
The first objection to iface as a procedure module, or "": the Api contract, then serializability. A gen fn, because contractOf has no runtime lowering. Exported for std/http's REST projection, which publishes the same procedures under the same rule.
gen fn rpcServer(contract: String) -> String
Emits a module that imports the contract's procedures and exposes rpcHandle(req: Request) -> Option<Response>.
gen fn rpcClient(contract: String) -> String
Emits the client: the contract's type declarations, one stub per procedure over one vyrnRpcCall extern, and one completion per procedure. The caller passes the callback inline: createPaste(req, |res| match res { .. }).
gen fn rpcInProcess(contract: String) -> String
Emits the deterministic test and SSR flavor: a stub per procedure under the same name the wire client exposes, running the real procedure synchronously.
gen fn rpc(dir: String) -> String
Mounts every procedure module under dir at its derived path. Two procedures deriving one path fail the build naming both.
gen fn client(dir: String) -> String
The calling side of an api directory. It reads interfaces, re-emits types and never imports an api module, so no procedure body reaches a client bundle.
gen fn clientInProcess(dir: String) -> String
client(dir) with direct dispatch. A separate generator, because a generator cannot see its importer's audience; the stubs share names, so a composition root swaps one import line.