Add factory creation ports and owner initialization contracts
This commit is contained in:
@@ -181,7 +181,7 @@ export interface InterfaceRevision {
|
||||
argumentRequirements?: { target: ObjectExpectation; required: InterfaceRevisionId }[];
|
||||
}
|
||||
|
||||
export type StoragePolicy = { kind: "optimistic-register" } | { kind: "crdt-document"; updateType: ValueType };
|
||||
export type StoragePolicy = { kind: "register" } | { kind: "crdt-document"; updateType: ValueType };
|
||||
|
||||
export interface StateSlotDefinition {
|
||||
kind: "state";
|
||||
@@ -246,6 +246,7 @@ export type DependencyPortRequirement =
|
||||
/** Exact public operation identities, not implementation export names. */
|
||||
operations?: OperationId[];
|
||||
}
|
||||
| { kind: "creation"; atomId: AtomId; inputType: ValueType }
|
||||
| { kind: "constructor"; atomId: AtomId; inputType?: ValueType };
|
||||
|
||||
export interface DependencyPort {
|
||||
@@ -320,6 +321,12 @@ export type DependencyBinding =
|
||||
interfaceRevisionId: InterfaceRevisionId;
|
||||
via?: EdgeTraversal;
|
||||
}
|
||||
| {
|
||||
kind: "creation";
|
||||
atomId: AtomId;
|
||||
owners: { interfaceRevisionId: InterfaceRevisionId; inputPath: string[] }[];
|
||||
via?: never;
|
||||
}
|
||||
| { kind: "constructor"; atomId: AtomId };
|
||||
|
||||
export interface BoundDependency {
|
||||
@@ -376,7 +383,13 @@ export interface OperationBinding {
|
||||
queryReason?: string;
|
||||
}
|
||||
|
||||
export interface InitializationField {
|
||||
input: string;
|
||||
binding: { kind: "state"; slotId: SlotId } | { kind: "edge"; edgeTypeId: EdgeTypeId; projectionId: EdgeProjectionId };
|
||||
}
|
||||
|
||||
export interface Conformance {
|
||||
initialization?: InitializationField[];
|
||||
/** Absent only for legacy assemblies awaiting explicit ownership enrollment. */
|
||||
id?: ConformanceId;
|
||||
semanticMajor?: number;
|
||||
|
||||
Reference in New Issue
Block a user