@agentplat/mesh 0.3.0-beta.1 → 0.3.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +133 -4
- package/dist/adaptive-overlay-contracts.d.ts +149 -0
- package/dist/adaptive-overlay-contracts.d.ts.map +1 -0
- package/dist/adaptive-overlay-contracts.js +3 -0
- package/dist/adaptive-overlay-contracts.js.map +1 -0
- package/dist/adaptive-overlay-runtime.d.ts +67 -0
- package/dist/adaptive-overlay-runtime.d.ts.map +1 -0
- package/dist/adaptive-overlay-runtime.js +427 -0
- package/dist/adaptive-overlay-runtime.js.map +1 -0
- package/dist/adaptive-overlay-validation.d.ts +19 -0
- package/dist/adaptive-overlay-validation.d.ts.map +1 -0
- package/dist/adaptive-overlay-validation.js +326 -0
- package/dist/adaptive-overlay-validation.js.map +1 -0
- package/dist/adaptive-overlay.d.ts +4 -0
- package/dist/adaptive-overlay.d.ts.map +1 -0
- package/dist/adaptive-overlay.js +4 -0
- package/dist/adaptive-overlay.js.map +1 -0
- package/dist/authenticated-overlay-transport.d.ts +227 -0
- package/dist/authenticated-overlay-transport.d.ts.map +1 -0
- package/dist/authenticated-overlay-transport.js +702 -0
- package/dist/authenticated-overlay-transport.js.map +1 -0
- package/dist/authority-continuity-contracts.d.ts +249 -0
- package/dist/authority-continuity-contracts.d.ts.map +1 -0
- package/dist/authority-continuity-contracts.js +11 -0
- package/dist/authority-continuity-contracts.js.map +1 -0
- package/dist/authority-continuity.d.ts +43 -0
- package/dist/authority-continuity.d.ts.map +1 -0
- package/dist/authority-continuity.js +1338 -0
- package/dist/authority-continuity.js.map +1 -0
- package/dist/continuity.d.ts +3 -0
- package/dist/continuity.d.ts.map +1 -0
- package/dist/continuity.js +3 -0
- package/dist/continuity.js.map +1 -0
- package/dist/coordination-allocation-contracts.d.ts +6 -0
- package/dist/coordination-allocation-contracts.d.ts.map +1 -1
- package/dist/coordination-allocation-state.d.ts.map +1 -1
- package/dist/coordination-allocation-state.js +37 -7
- package/dist/coordination-allocation-state.js.map +1 -1
- package/dist/coordination-allocation.d.ts +1 -1
- package/dist/coordination-allocation.d.ts.map +1 -1
- package/dist/coordination-allocation.js +92 -11
- package/dist/coordination-allocation.js.map +1 -1
- package/dist/coordination-discovery-state.d.ts.map +1 -1
- package/dist/coordination-discovery-state.js +5 -3
- package/dist/coordination-discovery-state.js.map +1 -1
- package/dist/coordination-recovery.js +5 -1
- package/dist/coordination-recovery.js.map +1 -1
- package/dist/durability.d.ts +22 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +22 -0
- package/dist/durability.js.map +1 -1
- package/dist/overlay-transport.d.ts +7 -0
- package/dist/overlay-transport.d.ts.map +1 -0
- package/dist/overlay-transport.js +7 -0
- package/dist/overlay-transport.js.map +1 -0
- package/dist/overlay.d.ts +9 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +9 -0
- package/dist/overlay.js.map +1 -0
- package/dist/sparse-overlay-contracts.d.ts +91 -0
- package/dist/sparse-overlay-contracts.d.ts.map +1 -0
- package/dist/sparse-overlay-contracts.js +2 -0
- package/dist/sparse-overlay-contracts.js.map +1 -0
- package/dist/sparse-overlay-durability.d.ts +23 -0
- package/dist/sparse-overlay-durability.d.ts.map +1 -0
- package/dist/sparse-overlay-durability.js +97 -0
- package/dist/sparse-overlay-durability.js.map +1 -0
- package/dist/sparse-overlay-runtime-contracts.d.ts +158 -0
- package/dist/sparse-overlay-runtime-contracts.d.ts.map +1 -0
- package/dist/sparse-overlay-runtime-contracts.js +2 -0
- package/dist/sparse-overlay-runtime-contracts.js.map +1 -0
- package/dist/sparse-overlay-runtime.d.ts +48 -0
- package/dist/sparse-overlay-runtime.d.ts.map +1 -0
- package/dist/sparse-overlay-runtime.js +763 -0
- package/dist/sparse-overlay-runtime.js.map +1 -0
- package/dist/sparse-overlay-transport-contracts.d.ts +183 -0
- package/dist/sparse-overlay-transport-contracts.d.ts.map +1 -0
- package/dist/sparse-overlay-transport-contracts.js +2 -0
- package/dist/sparse-overlay-transport-contracts.js.map +1 -0
- package/dist/sparse-overlay-transport-durability.d.ts +19 -0
- package/dist/sparse-overlay-transport-durability.d.ts.map +1 -0
- package/dist/sparse-overlay-transport-durability.js +91 -0
- package/dist/sparse-overlay-transport-durability.js.map +1 -0
- package/dist/sparse-overlay-transport.d.ts +97 -0
- package/dist/sparse-overlay-transport.d.ts.map +1 -0
- package/dist/sparse-overlay-transport.js +888 -0
- package/dist/sparse-overlay-transport.js.map +1 -0
- package/dist/sparse-overlay.d.ts +74 -0
- package/dist/sparse-overlay.d.ts.map +1 -0
- package/dist/sparse-overlay.js +817 -0
- package/dist/sparse-overlay.js.map +1 -0
- package/package.json +20 -4
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./sparse-overlay-contracts.js";
|
|
2
|
+
export * from "./sparse-overlay-runtime-contracts.js";
|
|
3
|
+
export * from "./sparse-overlay-transport-contracts.js";
|
|
4
|
+
export * from "./sparse-overlay-transport.js";
|
|
5
|
+
export * from "./sparse-overlay-transport-durability.js";
|
|
6
|
+
export * from "./authenticated-overlay-transport.js";
|
|
7
|
+
//# sourceMappingURL=overlay-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-transport.js","sourceRoot":"","sources":["../src/overlay-transport.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './sparse-overlay-contracts.js';
|
|
2
|
+
export * from './sparse-overlay.js';
|
|
3
|
+
export * from './sparse-overlay-runtime-contracts.js';
|
|
4
|
+
export * from './sparse-overlay-runtime.js';
|
|
5
|
+
export * from './sparse-overlay-durability.js';
|
|
6
|
+
export * from './sparse-overlay-transport-contracts.js';
|
|
7
|
+
export * from './sparse-overlay-transport.js';
|
|
8
|
+
export * from './sparse-overlay-transport-durability.js';
|
|
9
|
+
//# sourceMappingURL=overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0CAA0C,CAAC"}
|
package/dist/overlay.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './sparse-overlay-contracts.js';
|
|
2
|
+
export * from './sparse-overlay.js';
|
|
3
|
+
export * from './sparse-overlay-runtime-contracts.js';
|
|
4
|
+
export * from './sparse-overlay-runtime.js';
|
|
5
|
+
export * from './sparse-overlay-durability.js';
|
|
6
|
+
export * from './sparse-overlay-transport-contracts.js';
|
|
7
|
+
export * from './sparse-overlay-transport.js';
|
|
8
|
+
export * from './sparse-overlay-transport-durability.js';
|
|
9
|
+
//# sourceMappingURL=overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0CAA0C,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/** Closed, interoperable scale profiles for the sparse overlay. */
|
|
2
|
+
export type MeshSparseOverlayProfileIdV2 = 'standard-500' | 'large-5000' | 'frontier-100000';
|
|
3
|
+
export type MeshSparseOverlayDigestV2 = `sha256:${string}`;
|
|
4
|
+
export type MeshSparseOverlayUpdateIdV2 = `overlay-update:${string}`;
|
|
5
|
+
/** Immutable population, topology and resource bounds. */
|
|
6
|
+
export interface MeshSparseOverlayProfileV2 {
|
|
7
|
+
readonly schemaVersion: 2;
|
|
8
|
+
readonly profileId: MeshSparseOverlayProfileIdV2;
|
|
9
|
+
readonly maximumPeers: 500 | 5_000 | 100_000;
|
|
10
|
+
readonly maximumInteractions: 5_000 | 50_000 | 1_000_000;
|
|
11
|
+
readonly activeNeighborCount: number;
|
|
12
|
+
readonly reserveNeighborCount: number;
|
|
13
|
+
readonly maximumFanout: number;
|
|
14
|
+
readonly maximumHops: number;
|
|
15
|
+
readonly maximumRecentUpdates: number;
|
|
16
|
+
readonly profileDigest: MeshSparseOverlayDigestV2;
|
|
17
|
+
}
|
|
18
|
+
/** One peer's complete bounded routing knowledge. */
|
|
19
|
+
export interface MeshSparsePeerViewV2 {
|
|
20
|
+
readonly schemaVersion: 2;
|
|
21
|
+
readonly profileDigest: MeshSparseOverlayDigestV2;
|
|
22
|
+
readonly topologySeed: number;
|
|
23
|
+
readonly peerIndex: number;
|
|
24
|
+
readonly peerId: string;
|
|
25
|
+
readonly revision: number;
|
|
26
|
+
readonly activeNeighborIndexes: readonly number[];
|
|
27
|
+
readonly reserveNeighborIndexes: readonly number[];
|
|
28
|
+
readonly excludedNeighborIndexes: readonly number[];
|
|
29
|
+
readonly viewDigest: MeshSparseOverlayDigestV2;
|
|
30
|
+
}
|
|
31
|
+
/** Content-free update identity propagated by the overlay. */
|
|
32
|
+
export interface MeshSparseUpdateV2 {
|
|
33
|
+
readonly schemaVersion: 2;
|
|
34
|
+
readonly profileDigest: MeshSparseOverlayDigestV2;
|
|
35
|
+
readonly updateId: MeshSparseOverlayUpdateIdV2;
|
|
36
|
+
readonly originPeerIndex: number;
|
|
37
|
+
readonly originPeerId: string;
|
|
38
|
+
readonly originSequence: number;
|
|
39
|
+
readonly topic: string;
|
|
40
|
+
readonly payloadDigest: MeshSparseOverlayDigestV2;
|
|
41
|
+
readonly createdAtLogicalTime: number;
|
|
42
|
+
readonly expiresAtLogicalTime: number;
|
|
43
|
+
readonly maximumHops: number;
|
|
44
|
+
readonly updateDigest: MeshSparseOverlayDigestV2;
|
|
45
|
+
}
|
|
46
|
+
/** One transport-agnostic delivery plan in an auditable forwarding chain. */
|
|
47
|
+
export interface MeshSparseDeliveryV2 {
|
|
48
|
+
readonly schemaVersion: 2;
|
|
49
|
+
readonly update: MeshSparseUpdateV2;
|
|
50
|
+
readonly senderPeerIndex: number;
|
|
51
|
+
readonly recipientPeerIndex: number;
|
|
52
|
+
readonly hop: number;
|
|
53
|
+
readonly senderViewDigest: MeshSparseOverlayDigestV2;
|
|
54
|
+
readonly previousDeliveryDigest: MeshSparseOverlayDigestV2 | null;
|
|
55
|
+
readonly deliveryDigest: MeshSparseOverlayDigestV2;
|
|
56
|
+
}
|
|
57
|
+
export interface MeshSparseRecentUpdateV2 {
|
|
58
|
+
readonly updateId: MeshSparseOverlayUpdateIdV2;
|
|
59
|
+
readonly expiresAtLogicalTime: number;
|
|
60
|
+
}
|
|
61
|
+
/** Construction-bound local routing state; it never contains global state. */
|
|
62
|
+
export interface MeshSparseRoutingStateV2 {
|
|
63
|
+
readonly schemaVersion: 2;
|
|
64
|
+
readonly profileDigest: MeshSparseOverlayDigestV2;
|
|
65
|
+
readonly view: MeshSparsePeerViewV2;
|
|
66
|
+
readonly recentUpdates: readonly MeshSparseRecentUpdateV2[];
|
|
67
|
+
readonly nextOriginSequence: number;
|
|
68
|
+
readonly maximumOutboundInteractions: number;
|
|
69
|
+
readonly outboundInteractions: number;
|
|
70
|
+
readonly acceptedRemoteUpdates: number;
|
|
71
|
+
readonly lastLogicalTime: number;
|
|
72
|
+
readonly stateDigest: MeshSparseOverlayDigestV2;
|
|
73
|
+
}
|
|
74
|
+
export interface MeshSparsePublishResultV2 {
|
|
75
|
+
readonly state: MeshSparseRoutingStateV2;
|
|
76
|
+
readonly update: MeshSparseUpdateV2;
|
|
77
|
+
readonly deliveries: readonly MeshSparseDeliveryV2[];
|
|
78
|
+
}
|
|
79
|
+
export type MeshSparseReceiveRejectionCodeV2 = 'profile_mismatch' | 'recipient_mismatch' | 'update_expired' | 'hop_limit_exceeded' | 'recent_update_capacity_exceeded';
|
|
80
|
+
export type MeshSparseReceiveResultV2 = {
|
|
81
|
+
readonly accepted: true;
|
|
82
|
+
readonly duplicate: boolean;
|
|
83
|
+
readonly state: MeshSparseRoutingStateV2;
|
|
84
|
+
readonly deliveries: readonly MeshSparseDeliveryV2[];
|
|
85
|
+
} | {
|
|
86
|
+
readonly accepted: false;
|
|
87
|
+
readonly code: MeshSparseReceiveRejectionCodeV2;
|
|
88
|
+
readonly state: MeshSparseRoutingStateV2;
|
|
89
|
+
readonly deliveries: readonly [];
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=sparse-overlay-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-overlay-contracts.d.ts","sourceRoot":"","sources":["../src/sparse-overlay-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-overlay-contracts.js","sourceRoot":"","sources":["../src/sparse-overlay-contracts.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { MeshDurableLocalTransitionRepository, MeshDurableScope } from "./durability.js";
|
|
2
|
+
import type { MeshSparsePeerPlaneStateV1, MeshSparsePeerPlaneStoreV1 } from "./sparse-overlay-runtime-contracts.js";
|
|
3
|
+
export declare const MESH_SPARSE_PEER_PLANE_SNAPSHOT_FORMAT_V1: "application/vnd.agentplat.mesh-sparse-peer-plane.v1+json";
|
|
4
|
+
/**
|
|
5
|
+
* Concrete durable CAS adapter over the mesh local-transition repository.
|
|
6
|
+
* Use a dedicated scope/instance for this plane; repository snapshots are
|
|
7
|
+
* single-head and must not share the node business-state scope.
|
|
8
|
+
*/
|
|
9
|
+
export declare class MeshDurableSparsePeerPlaneStoreV1 implements MeshSparsePeerPlaneStoreV1 {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(input: {
|
|
12
|
+
readonly repository: MeshDurableLocalTransitionRepository;
|
|
13
|
+
readonly scope: MeshDurableScope;
|
|
14
|
+
});
|
|
15
|
+
load(overlayId: string): Promise<MeshSparsePeerPlaneStateV1 | undefined>;
|
|
16
|
+
compareAndSwap(input: {
|
|
17
|
+
readonly overlayId: string;
|
|
18
|
+
readonly expectedRevision: number | null;
|
|
19
|
+
readonly expectedStateDigest: MeshSparsePeerPlaneStateV1["stateDigest"] | null;
|
|
20
|
+
readonly next: MeshSparsePeerPlaneStateV1;
|
|
21
|
+
}): Promise<boolean>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=sparse-overlay-durability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-overlay-durability.d.ts","sourceRoot":"","sources":["../src/sparse-overlay-durability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oCAAoC,EAEpC,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,uCAAuC,CAAC;AAE/C,eAAO,MAAM,yCAAyC,EACpD,0DAAmE,CAAC;AAEtE;;;;GAIG;AACH,qBAAa,iCACX,YAAW,0BAA0B;;gBAKzB,KAAK,EAAE;QACjB,QAAQ,CAAC,UAAU,EAAE,oCAAoC,CAAC;QAC1D,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;KAClC;IAWK,IAAI,CACR,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAM5C,cAAc,CAAC,KAAK,EAAE;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QAC/E,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;KAC3C,GAAG,OAAO,CAAC,OAAO,CAAC;CA6CrB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
export const MESH_SPARSE_PEER_PLANE_SNAPSHOT_FORMAT_V1 = "application/vnd.agentplat.mesh-sparse-peer-plane.v1+json";
|
|
2
|
+
/**
|
|
3
|
+
* Concrete durable CAS adapter over the mesh local-transition repository.
|
|
4
|
+
* Use a dedicated scope/instance for this plane; repository snapshots are
|
|
5
|
+
* single-head and must not share the node business-state scope.
|
|
6
|
+
*/
|
|
7
|
+
export class MeshDurableSparsePeerPlaneStoreV1 {
|
|
8
|
+
#repository;
|
|
9
|
+
#scope;
|
|
10
|
+
constructor(input) {
|
|
11
|
+
if (!input?.repository ||
|
|
12
|
+
typeof input.repository.loadSnapshot !== "function" ||
|
|
13
|
+
typeof input.repository.commitLocalTransition !== "function")
|
|
14
|
+
throw new TypeError("sparse peer plane durable repository is required");
|
|
15
|
+
this.#repository = input.repository;
|
|
16
|
+
this.#scope = normalizeScope(input.scope);
|
|
17
|
+
}
|
|
18
|
+
async load(overlayId) {
|
|
19
|
+
identifier(overlayId, "overlayId");
|
|
20
|
+
const snapshot = await this.#repository.loadSnapshot(this.#scope);
|
|
21
|
+
return snapshot ? decode(snapshot, overlayId) : undefined;
|
|
22
|
+
}
|
|
23
|
+
async compareAndSwap(input) {
|
|
24
|
+
identifier(input?.overlayId, "overlayId");
|
|
25
|
+
if (!input.next || input.next.overlayId !== input.overlayId)
|
|
26
|
+
throw new TypeError("sparse peer plane next state binding is invalid");
|
|
27
|
+
const snapshot = await this.#repository.loadSnapshot(this.#scope);
|
|
28
|
+
const current = snapshot ? decode(snapshot, input.overlayId) : undefined;
|
|
29
|
+
if (input.expectedRevision === null || input.expectedStateDigest === null) {
|
|
30
|
+
if (input.expectedRevision !== null ||
|
|
31
|
+
input.expectedStateDigest !== null ||
|
|
32
|
+
current ||
|
|
33
|
+
input.next.revision !== 0)
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
else if (!current ||
|
|
37
|
+
current.revision !== input.expectedRevision ||
|
|
38
|
+
current.stateDigest !== input.expectedStateDigest ||
|
|
39
|
+
input.next.revision !== current.revision + 1) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const transitionId = `sparse-plane.${input.next.revision}.${input.next.stateDigest.slice(7, 23)}`;
|
|
43
|
+
const committed = await this.#repository.commitLocalTransition({
|
|
44
|
+
scope: this.#scope,
|
|
45
|
+
expectedSnapshotRevision: snapshot?.revision ?? 0,
|
|
46
|
+
transitionId,
|
|
47
|
+
nextState: json(input.next),
|
|
48
|
+
nextStateDescriptor: {
|
|
49
|
+
format: MESH_SPARSE_PEER_PLANE_SNAPSHOT_FORMAT_V1,
|
|
50
|
+
schemaVersion: 1,
|
|
51
|
+
},
|
|
52
|
+
journal: [
|
|
53
|
+
{
|
|
54
|
+
entryId: transitionId,
|
|
55
|
+
kind: input.next.revision === 0
|
|
56
|
+
? "sparse.peer-plane.initialized"
|
|
57
|
+
: "sparse.peer-plane.committed",
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
outbox: [],
|
|
61
|
+
});
|
|
62
|
+
return committed.committed;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function decode(snapshot, overlayId) {
|
|
66
|
+
if (snapshot.snapshotFormat !== MESH_SPARSE_PEER_PLANE_SNAPSHOT_FORMAT_V1 ||
|
|
67
|
+
snapshot.snapshotSchemaVersion !== 1 ||
|
|
68
|
+
!snapshot.state ||
|
|
69
|
+
typeof snapshot.state !== "object" ||
|
|
70
|
+
Array.isArray(snapshot.state))
|
|
71
|
+
throw new TypeError("sparse peer plane durable snapshot is invalid");
|
|
72
|
+
const state = snapshot.state;
|
|
73
|
+
if (state.schemaVersion !== 1 || state.overlayId !== overlayId)
|
|
74
|
+
throw new TypeError("sparse peer plane durable snapshot binding is invalid");
|
|
75
|
+
return state;
|
|
76
|
+
}
|
|
77
|
+
function json(value) {
|
|
78
|
+
return JSON.parse(JSON.stringify(value));
|
|
79
|
+
}
|
|
80
|
+
function normalizeScope(scope) {
|
|
81
|
+
if (!scope || typeof scope !== "object")
|
|
82
|
+
throw new TypeError("sparse peer plane durable scope is required");
|
|
83
|
+
return Object.freeze({
|
|
84
|
+
tenantId: identifier(scope.tenantId, "scope.tenantId"),
|
|
85
|
+
meshId: identifier(scope.meshId, "scope.meshId"),
|
|
86
|
+
peerId: identifier(scope.peerId, "scope.peerId"),
|
|
87
|
+
instanceId: identifier(scope.instanceId, "scope.instanceId"),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function identifier(value, label) {
|
|
91
|
+
if (typeof value !== "string" ||
|
|
92
|
+
value.length > 256 ||
|
|
93
|
+
!/^[A-Za-z0-9][A-Za-z0-9._:@/-]*$/u.test(value))
|
|
94
|
+
throw new TypeError(`${label} is invalid`);
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=sparse-overlay-durability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-overlay-durability.js","sourceRoot":"","sources":["../src/sparse-overlay-durability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { MeshAdaptiveOverlayCertificateV1, MeshAdaptiveOverlayResultV1 } from "./adaptive-overlay-contracts.js";
|
|
2
|
+
import type { MeshSparseDeliveryV2, MeshSparseOverlayDigestV2, MeshSparseOverlayProfileV2, MeshSparsePeerViewV2, MeshSparseRoutingStateV2, MeshSparseUpdateV2 } from "./sparse-overlay-contracts.js";
|
|
3
|
+
export declare const MESH_SPARSE_PEER_PLANE_SCHEMA_VERSION_V1: 1;
|
|
4
|
+
export type MeshSparsePeerAvailabilityV1 = "active" | "suspect" | "departed";
|
|
5
|
+
/** One bounded membership projection. It may contain only requested local-view peers. */
|
|
6
|
+
export interface MeshSparseMembershipPeerV1 {
|
|
7
|
+
readonly peerIndex: number;
|
|
8
|
+
readonly peerId: string;
|
|
9
|
+
readonly availability: MeshSparsePeerAvailabilityV1;
|
|
10
|
+
}
|
|
11
|
+
export interface MeshSparseMembershipSliceV1 {
|
|
12
|
+
readonly schemaVersion: 1;
|
|
13
|
+
readonly overlayId: string;
|
|
14
|
+
readonly membershipDigest: MeshSparseOverlayDigestV2;
|
|
15
|
+
readonly observedAtLogicalTime: number;
|
|
16
|
+
readonly validUntilLogicalTime: number;
|
|
17
|
+
readonly peers: readonly MeshSparseMembershipPeerV1[];
|
|
18
|
+
}
|
|
19
|
+
export interface MeshSparseMembershipPortV1 {
|
|
20
|
+
/** Must return no peer outside `peerIndexes`; callers never request a global graph. */
|
|
21
|
+
resolve(input: {
|
|
22
|
+
readonly overlayId: string;
|
|
23
|
+
readonly membershipDigest: MeshSparseOverlayDigestV2;
|
|
24
|
+
readonly peerIndexes: readonly number[];
|
|
25
|
+
readonly logicalTime: number;
|
|
26
|
+
}): Promise<MeshSparseMembershipSliceV1>;
|
|
27
|
+
}
|
|
28
|
+
export interface MeshSparseMembershipCatchUpPortV1 {
|
|
29
|
+
/** Refreshes a lagging local projection of the same membership configuration. */
|
|
30
|
+
catchUp(input: {
|
|
31
|
+
readonly overlayId: string;
|
|
32
|
+
readonly membershipDigest: MeshSparseOverlayDigestV2;
|
|
33
|
+
readonly requiredPeerIndexes: readonly number[];
|
|
34
|
+
readonly logicalTime: number;
|
|
35
|
+
}): Promise<boolean>;
|
|
36
|
+
}
|
|
37
|
+
/** Narrow application surface implemented by MeshAdaptiveOverlayRuntimeV1. */
|
|
38
|
+
export interface MeshSparseAdaptiveOverlayApplicationPortV1 {
|
|
39
|
+
apply(input: {
|
|
40
|
+
readonly certificate: MeshAdaptiveOverlayCertificateV1;
|
|
41
|
+
readonly profile: MeshSparseOverlayProfileV2;
|
|
42
|
+
readonly view: MeshSparsePeerViewV2;
|
|
43
|
+
/** Fences a new application; exact already-applied certificate replay is duplicate. */
|
|
44
|
+
readonly expectedRevision: number;
|
|
45
|
+
readonly logicalTimeMs: number;
|
|
46
|
+
}): Promise<MeshAdaptiveOverlayResultV1>;
|
|
47
|
+
}
|
|
48
|
+
export interface MeshSparsePendingDeliveryV1 {
|
|
49
|
+
readonly delivery: MeshSparseDeliveryV2;
|
|
50
|
+
readonly queuedAtLogicalTime: number;
|
|
51
|
+
}
|
|
52
|
+
export interface MeshSparsePendingUpdateV1 {
|
|
53
|
+
readonly update: MeshSparseUpdateV2;
|
|
54
|
+
readonly admittedAtLogicalTime: number;
|
|
55
|
+
}
|
|
56
|
+
/** Durable local state. It contains one sparse view, never collective-wide topology. */
|
|
57
|
+
export interface MeshSparsePeerPlaneStateV1 {
|
|
58
|
+
readonly schemaVersion: 1;
|
|
59
|
+
readonly overlayId: string;
|
|
60
|
+
readonly revision: number;
|
|
61
|
+
readonly membershipDigest: MeshSparseOverlayDigestV2;
|
|
62
|
+
readonly profile: MeshSparseOverlayProfileV2;
|
|
63
|
+
readonly routing: MeshSparseRoutingStateV2;
|
|
64
|
+
readonly pendingDeliveries: readonly MeshSparsePendingDeliveryV1[];
|
|
65
|
+
readonly pendingUpdates: readonly MeshSparsePendingUpdateV1[];
|
|
66
|
+
readonly lastLogicalTime: number;
|
|
67
|
+
readonly stateDigest: MeshSparseOverlayDigestV2;
|
|
68
|
+
}
|
|
69
|
+
/** Implementations must provide durable compare-and-swap for one local peer. */
|
|
70
|
+
export interface MeshSparsePeerPlaneStoreV1 {
|
|
71
|
+
load(overlayId: string): Promise<MeshSparsePeerPlaneStateV1 | undefined>;
|
|
72
|
+
compareAndSwap(input: {
|
|
73
|
+
readonly overlayId: string;
|
|
74
|
+
readonly expectedRevision: number | null;
|
|
75
|
+
readonly expectedStateDigest: MeshSparseOverlayDigestV2 | null;
|
|
76
|
+
readonly next: MeshSparsePeerPlaneStateV1;
|
|
77
|
+
}): Promise<boolean>;
|
|
78
|
+
}
|
|
79
|
+
export type MeshSparseDurableAdmissionV1 = {
|
|
80
|
+
readonly status: "admitted" | "duplicate";
|
|
81
|
+
} | {
|
|
82
|
+
readonly status: "backpressured";
|
|
83
|
+
readonly reasonCode: string;
|
|
84
|
+
} | {
|
|
85
|
+
readonly status: "rejected";
|
|
86
|
+
readonly reasonCode: string;
|
|
87
|
+
};
|
|
88
|
+
/** Durable, idempotent next-hop queue keyed by deliveryDigest. */
|
|
89
|
+
export interface MeshSparseDeliveryQueuePortV1 {
|
|
90
|
+
pending(recipientPeerId: string): number | Promise<number>;
|
|
91
|
+
enqueue(input: {
|
|
92
|
+
readonly overlayId: string;
|
|
93
|
+
readonly recipient: MeshSparseMembershipPeerV1;
|
|
94
|
+
readonly delivery: MeshSparseDeliveryV2;
|
|
95
|
+
}): Promise<MeshSparseDurableAdmissionV1>;
|
|
96
|
+
}
|
|
97
|
+
/** Durable, idempotent local announcement inbox keyed by updateId. */
|
|
98
|
+
export interface MeshSparseUpdateAdmissionPortV1 {
|
|
99
|
+
pending(topic: string): number | Promise<number>;
|
|
100
|
+
admit(input: {
|
|
101
|
+
readonly overlayId: string;
|
|
102
|
+
readonly update: MeshSparseUpdateV2;
|
|
103
|
+
}): Promise<MeshSparseDurableAdmissionV1>;
|
|
104
|
+
}
|
|
105
|
+
export interface MeshSparsePeerPlaneLimitsV1 {
|
|
106
|
+
readonly maximumPendingDeliveries: number;
|
|
107
|
+
readonly maximumPendingUpdates: number;
|
|
108
|
+
readonly maximumPendingPerNeighbor: number;
|
|
109
|
+
readonly maximumPendingPerTopic: number;
|
|
110
|
+
readonly maximumDrainItems: number;
|
|
111
|
+
readonly maximumCommitAttempts: number;
|
|
112
|
+
}
|
|
113
|
+
export interface MeshSparsePeerPlaneOptionsV1 {
|
|
114
|
+
readonly overlayId: string;
|
|
115
|
+
readonly profile: MeshSparseOverlayProfileV2;
|
|
116
|
+
readonly topologySeed: number;
|
|
117
|
+
readonly localPeerIndex: number;
|
|
118
|
+
readonly membershipDigest: MeshSparseOverlayDigestV2;
|
|
119
|
+
readonly store: MeshSparsePeerPlaneStoreV1;
|
|
120
|
+
readonly membership: MeshSparseMembershipPortV1;
|
|
121
|
+
readonly deliveryQueue: MeshSparseDeliveryQueuePortV1;
|
|
122
|
+
readonly updateAdmission: MeshSparseUpdateAdmissionPortV1;
|
|
123
|
+
readonly membershipCatchUp?: MeshSparseMembershipCatchUpPortV1;
|
|
124
|
+
readonly adaptive?: MeshSparseAdaptiveOverlayApplicationPortV1;
|
|
125
|
+
readonly limits?: Partial<MeshSparsePeerPlaneLimitsV1>;
|
|
126
|
+
}
|
|
127
|
+
export type MeshSparseTopologyFreshnessV1 = "fresh" | "stale" | "unknown";
|
|
128
|
+
export interface MeshSparsePeerPlaneDrainResultV1 {
|
|
129
|
+
readonly attempted: number;
|
|
130
|
+
readonly admitted: number;
|
|
131
|
+
readonly backpressured: number;
|
|
132
|
+
readonly rejected: number;
|
|
133
|
+
readonly remaining: number;
|
|
134
|
+
}
|
|
135
|
+
export interface MeshSparsePeerPlanePublishResultV1 {
|
|
136
|
+
readonly update: MeshSparseUpdateV2;
|
|
137
|
+
readonly state: MeshSparsePeerPlaneStateV1;
|
|
138
|
+
readonly drain: MeshSparsePeerPlaneDrainResultV1;
|
|
139
|
+
}
|
|
140
|
+
export interface MeshSparsePeerPlaneReceiveResultV1 {
|
|
141
|
+
readonly accepted: boolean;
|
|
142
|
+
readonly duplicate: boolean;
|
|
143
|
+
readonly reasonCode: string | null;
|
|
144
|
+
readonly state: MeshSparsePeerPlaneStateV1;
|
|
145
|
+
readonly drain: MeshSparsePeerPlaneDrainResultV1;
|
|
146
|
+
}
|
|
147
|
+
export interface MeshSparsePeerPlaneAdaptationResultV1 {
|
|
148
|
+
readonly adaptation: MeshAdaptiveOverlayResultV1;
|
|
149
|
+
readonly state: MeshSparsePeerPlaneStateV1;
|
|
150
|
+
}
|
|
151
|
+
export interface MeshSparsePeerPlaneAdaptivePortV1 {
|
|
152
|
+
applyAdaptation(input: {
|
|
153
|
+
readonly certificate: MeshAdaptiveOverlayCertificateV1;
|
|
154
|
+
readonly expectedRevision: number;
|
|
155
|
+
readonly logicalTime: number;
|
|
156
|
+
}): Promise<MeshSparsePeerPlaneAdaptationResultV1>;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=sparse-overlay-runtime-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-overlay-runtime-contracts.d.ts","sourceRoot":"","sources":["../src/sparse-overlay-runtime-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,2BAA2B,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,wCAAwC,EAAG,CAAU,CAAC;AAEnE,MAAM,MAAM,4BAA4B,GACpC,QAAQ,GACR,SAAS,GACT,UAAU,CAAC;AAEf,yFAAyF;AACzF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC;CACrD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IACrD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,0BAA0B;IACzC,uFAAuF;IACvF,OAAO,CAAC,KAAK,EAAE;QACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;QACrD,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;QACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,iCAAiC;IAChD,iFAAiF;IACjF,OAAO,CAAC,KAAK,EAAE;QACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;QACrD,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;QAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AAED,8EAA8E;AAC9E,MAAM,WAAW,0CAA0C;IACzD,KAAK,CAAC,KAAK,EAAE;QACX,QAAQ,CAAC,WAAW,EAAE,gCAAgC,CAAC;QACvD,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;QAC7C,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;QACpC,uFAAuF;QACvF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAED,wFAAwF;AACxF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACnE,QAAQ,CAAC,cAAc,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC9D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;CACjD;AAED,gFAAgF;AAChF,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IACzE,cAAc,CAAC,KAAK,EAAE;QACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,yBAAyB,GAAG,IAAI,CAAC;QAC/D,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;KAC3C,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AAED,MAAM,MAAM,4BAA4B,GACpC;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,kEAAkE;AAClE,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,CAAC,KAAK,EAAE;QACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;QAC/C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;KACzC,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;CAC3C;AAED,sEAAsE;AACtE,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,KAAK,CAAC,KAAK,EAAE;QACX,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;KACrC,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,6BAA6B,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,+BAA+B,CAAC;IAC1D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iCAAiC,CAAC;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,0CAA0C,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACxD;AAED,MAAM,MAAM,6BAA6B,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,gCAAgC,CAAC;CAClD;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,gCAAgC,CAAC;CAClD;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;CAC5C;AAED,MAAM,WAAW,iCAAiC;IAChD,eAAe,CAAC,KAAK,EAAE;QACrB,QAAQ,CAAC,WAAW,EAAE,gCAAgC,CAAC;QACvD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;CACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-overlay-runtime-contracts.js","sourceRoot":"","sources":["../src/sparse-overlay-runtime-contracts.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAU,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { MeshAdaptiveOverlayCertificateV1 } from "./adaptive-overlay-contracts.js";
|
|
2
|
+
import type { MeshSparseDeliveryV2, MeshSparseOverlayDigestV2 } from "./sparse-overlay-contracts.js";
|
|
3
|
+
import type { MeshSparsePeerPlaneAdaptationResultV1, MeshSparsePeerPlaneDrainResultV1, MeshSparsePeerPlaneOptionsV1, MeshSparsePeerPlanePublishResultV1, MeshSparsePeerPlaneReceiveResultV1, MeshSparsePeerPlaneStateV1, MeshSparseTopologyFreshnessV1 } from "./sparse-overlay-runtime-contracts.js";
|
|
4
|
+
interface MeshSparsePeerPlaneRuntimeInvokersV1 {
|
|
5
|
+
readonly restore: (logicalTime?: number) => Promise<MeshSparsePeerPlaneStateV1>;
|
|
6
|
+
readonly publish: (input: {
|
|
7
|
+
readonly topic: string;
|
|
8
|
+
readonly payloadDigest: MeshSparseOverlayDigestV2;
|
|
9
|
+
readonly logicalTime: number;
|
|
10
|
+
readonly lifetime: number;
|
|
11
|
+
readonly fanout?: number;
|
|
12
|
+
}) => Promise<MeshSparsePeerPlanePublishResultV1>;
|
|
13
|
+
readonly receive: (input: {
|
|
14
|
+
readonly delivery: MeshSparseDeliveryV2;
|
|
15
|
+
readonly logicalTime: number;
|
|
16
|
+
}) => Promise<MeshSparsePeerPlaneReceiveResultV1>;
|
|
17
|
+
readonly drain: (input: {
|
|
18
|
+
readonly logicalTime: number;
|
|
19
|
+
readonly maximumItems?: number;
|
|
20
|
+
}) => Promise<MeshSparsePeerPlaneDrainResultV1>;
|
|
21
|
+
readonly topologyFreshness: (logicalTime: number) => Promise<MeshSparseTopologyFreshnessV1>;
|
|
22
|
+
readonly catchUpMembership: (logicalTime: number) => Promise<boolean>;
|
|
23
|
+
readonly applyAdaptation: (input: {
|
|
24
|
+
readonly certificate: MeshAdaptiveOverlayCertificateV1;
|
|
25
|
+
readonly expectedRevision: number;
|
|
26
|
+
readonly logicalTime: number;
|
|
27
|
+
}) => Promise<MeshSparsePeerPlaneAdaptationResultV1>;
|
|
28
|
+
}
|
|
29
|
+
/** Durable peer-local execution path for sparse selection, deduplication and forwarding. */
|
|
30
|
+
export declare class MeshSparsePeerPlaneRuntimeV1 {
|
|
31
|
+
#private;
|
|
32
|
+
readonly restore: MeshSparsePeerPlaneRuntimeInvokersV1["restore"];
|
|
33
|
+
readonly publish: MeshSparsePeerPlaneRuntimeInvokersV1["publish"];
|
|
34
|
+
readonly receive: MeshSparsePeerPlaneRuntimeInvokersV1["receive"];
|
|
35
|
+
readonly drain: MeshSparsePeerPlaneRuntimeInvokersV1["drain"];
|
|
36
|
+
readonly topologyFreshness: MeshSparsePeerPlaneRuntimeInvokersV1["topologyFreshness"];
|
|
37
|
+
readonly catchUpMembership: MeshSparsePeerPlaneRuntimeInvokersV1["catchUpMembership"];
|
|
38
|
+
readonly applyAdaptation: MeshSparsePeerPlaneRuntimeInvokersV1["applyAdaptation"];
|
|
39
|
+
constructor(options: MeshSparsePeerPlaneOptionsV1);
|
|
40
|
+
}
|
|
41
|
+
/** Nominal check for the module-owned sparse peer plane runtime. */
|
|
42
|
+
export declare function isMeshSparsePeerPlaneRuntimeV1(value: unknown): value is MeshSparsePeerPlaneRuntimeV1;
|
|
43
|
+
/** Invokes the construction-time publish implementation. */
|
|
44
|
+
export declare function invokeMeshSparsePeerPlanePublishV1(runtime: MeshSparsePeerPlaneRuntimeV1, input: Parameters<MeshSparsePeerPlaneRuntimeInvokersV1["publish"]>[0]): Promise<MeshSparsePeerPlanePublishResultV1>;
|
|
45
|
+
/** Invokes the construction-time sparse admission implementation. */
|
|
46
|
+
export declare function invokeMeshSparsePeerPlaneReceiveV1(runtime: MeshSparsePeerPlaneRuntimeV1, input: Parameters<MeshSparsePeerPlaneRuntimeInvokersV1["receive"]>[0]): Promise<MeshSparsePeerPlaneReceiveResultV1>;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=sparse-overlay-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-overlay-runtime.d.ts","sourceRoot":"","sources":["../src/sparse-overlay-runtime.ts"],"names":[],"mappings":"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"}
|