Add local-first execution contracts to the capability language
This commit is contained in:
@@ -104,7 +104,11 @@ export interface AtomDefinition {
|
||||
|
||||
export type InterfaceOperationMode = "call" | "watch-start" | "watch-stop" | "subscribe" | "unsubscribe";
|
||||
|
||||
/** Omission has remote semantics; availability never strengthens an imported contract. */
|
||||
export type ExecutionContract = { kind: "remote" } | { kind: "snapshot" | "transaction"; targets: string[] };
|
||||
|
||||
export interface InterfaceOperation<Type = ValueType> {
|
||||
execution?: ExecutionContract;
|
||||
id: OperationId;
|
||||
displayName: string;
|
||||
inputType: Type;
|
||||
@@ -116,7 +120,7 @@ export interface InterfaceOperation<Type = ValueType> {
|
||||
eventType?: Type;
|
||||
}
|
||||
|
||||
export type QueryReadContract = { execution: "native" | "rpc-permitted" };
|
||||
export type QueryReadContract = { execution: "native" | "rpc-permitted" | "portable" };
|
||||
|
||||
interface InterfaceMemberBase<Type = ValueType> {
|
||||
id: MemberId;
|
||||
@@ -239,6 +243,8 @@ export type DependencyPortRequirement =
|
||||
| {
|
||||
kind: "interface";
|
||||
interfaceRevisionId: InterfaceRevisionId;
|
||||
/** Exact public operation identities, not implementation export names. */
|
||||
operations?: OperationId[];
|
||||
}
|
||||
| { kind: "constructor"; atomId: AtomId; inputType?: ValueType };
|
||||
|
||||
@@ -249,6 +255,7 @@ export interface DependencyPort {
|
||||
}
|
||||
|
||||
interface PackageExportBase {
|
||||
execution?: ExecutionContract;
|
||||
id: PackageExportId;
|
||||
displayName: string;
|
||||
inputType: ValueType;
|
||||
|
||||
Reference in New Issue
Block a user