Expose closed module types and define stable presentation occurrences
This commit is contained in:
@@ -7,6 +7,7 @@ import type {
|
||||
import { canonicalJson } from "../capability-model/evolution.js";
|
||||
import { portableValueSchema, tsType } from "../bindings/portable.js";
|
||||
import { type ExecutionPlan, resolvePlannedOperation, hexDigest, ExecutionPlanError } from "./plan.js";
|
||||
import { moduleTypeContext } from "./module-contracts.js";
|
||||
|
||||
/** Public shape only: no slot inventory, implementation binding, or workspace identity. */
|
||||
export interface PublicOperationContract {
|
||||
@@ -111,7 +112,7 @@ export function generateInterfaceClientBindings(
|
||||
const members = iface.members.map((member) => {
|
||||
if (member.kind === "module" && member.subject?.kind === "interface") {
|
||||
const subject = member.subject.interfaceRevisionId;
|
||||
return `${JSON.stringify(member.displayName)}: defineModuleMember<${JSON.stringify(subject)}, ${moduleProps?.(iface.revisionId, member.id) ?? "{}"}>(${JSON.stringify({ interface: iface.revisionId, member: member.id, subject, contract: member.contract })})`;
|
||||
return `${JSON.stringify(member.displayName)}: defineModuleMember<${JSON.stringify(subject)}, ${moduleProps?.(iface.revisionId, member.id) ?? "{}"}>(${JSON.stringify({ interface: iface.revisionId, member: member.id, subject, contract: member.contract, ...moduleTypeContext(iface) })})`;
|
||||
}
|
||||
const operations = member.operations
|
||||
.filter((op) => op.mode === "call")
|
||||
|
||||
Reference in New Issue
Block a user