@zlink-systems/framework 0.31.0 → 0.32.1

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.
Files changed (181) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActor.d.ts +2 -0
  3. package/dist/contracts/Actors/ZLinkSessionBindingIdentity.d.ts +6 -0
  4. package/dist/contracts/Actors/ZLinkSessionBindingIdentity.js +2 -0
  5. package/dist/contracts/Actors/index.d.ts +1 -0
  6. package/dist/contracts/Actors/index.js +1 -0
  7. package/dist/contracts/Common/payload-slab.d.ts +4 -0
  8. package/dist/contracts/Common/payload-slab.js +30 -0
  9. package/dist/contracts/Handlers/Contexts.d.ts +1 -0
  10. package/dist/internal.d.ts +9 -0
  11. package/dist/internal.js +23 -1
  12. package/dist/runtime/actors/actor-client.d.ts +1 -1
  13. package/dist/runtime/actors/actor-client.js +32 -23
  14. package/dist/runtime/actors/actor-context.js +1 -1
  15. package/dist/runtime/actors/actor-creation.js +1 -1
  16. package/dist/runtime/actors/actor-mailbox.d.ts +1 -1
  17. package/dist/runtime/actors/actor-runtime-state.d.ts +3 -2
  18. package/dist/runtime/actors/actor-runtime-state.js +24 -8
  19. package/dist/runtime/actors/index.d.ts +3 -3
  20. package/dist/runtime/actors/index.js +19 -32
  21. package/dist/runtime/actors/spot-actor-dispatch.d.ts +4 -2
  22. package/dist/runtime/actors/spot-actor-dispatch.js +2 -1
  23. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +1 -0
  24. package/dist/runtime/application-jobs/application-ingress-record-owner.js +3 -0
  25. package/dist/runtime/backend/contracts/index.d.ts +2 -0
  26. package/dist/runtime/backend/mesh-completion-table.d.ts +1 -0
  27. package/dist/runtime/backend/mesh-completion-table.js +1 -0
  28. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +5 -1
  29. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +7 -2
  30. package/dist/runtime/backend/node/node-raw-binding-port.js +17 -11
  31. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +2 -2
  32. package/dist/runtime/backend/node/node-raw-mesh-backend.js +15 -8
  33. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +7 -6
  34. package/dist/runtime/channels/channel-dispatch-pipeline.js +1 -0
  35. package/dist/runtime/channels/channel-dispatchers.d.ts +7 -3
  36. package/dist/runtime/channels/channel-dispatchers.js +27 -19
  37. package/dist/runtime/channels/channel-envelope.js +543 -23
  38. package/dist/runtime/channels/channel-receive-loops.d.ts +9 -6
  39. package/dist/runtime/channels/channel-receive-loops.js +59 -18
  40. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +22 -3
  41. package/dist/runtime/channels/channel-socket-registry.d.ts +22 -4
  42. package/dist/runtime/diagnostics/runtime-metrics.d.ts +1 -1
  43. package/dist/runtime/diagnostics/runtime-metrics.js +2 -1
  44. package/dist/runtime/execution/serial-execution-queue.d.ts +26 -13
  45. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +27 -11
  46. package/dist/runtime/foundation/raw-service-mesh-runtime.js +29 -25
  47. package/dist/runtime/foundation/service-liveness-registry.d.ts +1 -1
  48. package/dist/runtime/foundation/service-mailbox.d.ts +3 -1
  49. package/dist/runtime/foundation/service-mailbox.js +4 -1
  50. package/dist/runtime/foundation/service-runtime-contracts.d.ts +3 -1
  51. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  52. package/dist/runtime/foundation/service-stateful-registry.js +28 -12
  53. package/dist/runtime/foundation/service-stateful-runtime.d.ts +51 -19
  54. package/dist/runtime/foundation/service-stateful-runtime.js +54 -5
  55. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -0
  56. package/dist/runtime/foundation/service-stateful-wire-codec.js +15 -0
  57. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  58. package/dist/runtime/foundation/service-wire-constants.generated.js +12 -0
  59. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  60. package/dist/runtime/foundation/service-wire-m6a-codec.js +17 -7
  61. package/dist/runtime/host/actor-placement-coordinator.d.ts +1 -1
  62. package/dist/runtime/host/actor-transfer-runtime.d.ts +3 -3
  63. package/dist/runtime/host/application-job-queue.d.ts +1 -1
  64. package/dist/runtime/host/index.d.ts +89 -36
  65. package/dist/runtime/host/index.js +101 -7
  66. package/dist/runtime/host/location-runtime-owner.d.ts +2 -2
  67. package/dist/runtime/host/service-relocation-host-runtime.d.ts +181 -44
  68. package/dist/runtime/host/service-relocation-host-runtime.js +47 -13
  69. package/dist/runtime/host/spot-address-transport.js +50 -42
  70. package/dist/runtime/locations/actor-location-claims.js +9 -10
  71. package/dist/runtime/locations/auto-connect-loop.d.ts +0 -1
  72. package/dist/runtime/locations/auto-connect-loop.js +25 -19
  73. package/dist/runtime/locations/auto-connect-planner.js +2 -5
  74. package/dist/runtime/locations/auto-connect-reconciler.d.ts +1 -0
  75. package/dist/runtime/locations/auto-connect-reconciler.js +35 -23
  76. package/dist/runtime/locations/in-memory-location-store.d.ts +0 -2
  77. package/dist/runtime/locations/in-memory-location-store.js +1 -38
  78. package/dist/runtime/locations/location-store-repository.d.ts +0 -1
  79. package/dist/runtime/locations/location-store-repository.js +13 -115
  80. package/dist/runtime/locations/runtime.d.ts +3 -3
  81. package/dist/runtime/locations/runtime.js +12 -16
  82. package/dist/runtime/messaging/creation-payload-codec.js +2 -2
  83. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +4 -0
  84. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -7
  85. package/dist/runtime/spots/index.d.ts +20 -5
  86. package/dist/runtime/spots/index.js +14 -0
  87. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +3 -3
  88. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +1 -0
  89. package/dist/runtime/spots/spot-actor-packet-dispatch.js +13 -7
  90. package/dist/runtime/spots/spot-actor-packet-drain.d.ts +1 -0
  91. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -5
  92. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -1
  93. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +8 -6
  94. package/dist/runtime/spots/spot-node-runtime-manager.js +2 -0
  95. package/dist/runtime/spots/spot-route-packet-dispatch.js +7 -4
  96. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +3 -1
  97. package/dist/runtime/spots/spot-serial-executor.d.ts +2 -1
  98. package/dist/runtime/spots/spot-subscription-dispatch.js +3 -1
  99. package/dist/runtime/spots/spot-timer.d.ts +1 -1
  100. package/dist/runtime/streams/actor-session-binding-registry.d.ts +9 -3
  101. package/dist/runtime/streams/actor-session-binding-registry.js +17 -0
  102. package/dist/runtime/streams/index.d.ts +3 -3
  103. package/dist/runtime/streams/index.js +22 -2
  104. package/dist/runtime/streams/managed-stream.js +2 -1
  105. package/dist/runtime/streams/session-calls.d.ts +1 -1
  106. package/dist/runtime/streams/session-calls.js +3 -9
  107. package/dist/runtime/streams/session-context.d.ts +2 -2
  108. package/dist/runtime/streams/session-context.js +2 -2
  109. package/dist/runtime/streams/stream-session-runtime.d.ts +1 -0
  110. package/dist/runtime/streams/stream-session-runtime.js +37 -12
  111. package/package.json +3 -3
  112. package/src/contracts/Actors/ZLinkActor.ts +6 -0
  113. package/src/contracts/Actors/ZLinkSessionBindingIdentity.ts +7 -0
  114. package/src/contracts/Actors/index.ts +1 -0
  115. package/src/contracts/Common/payload-slab.ts +29 -0
  116. package/src/contracts/Handlers/Contexts.ts +1 -0
  117. package/src/internal.ts +17 -0
  118. package/src/runtime/actors/actor-client.ts +48 -23
  119. package/src/runtime/actors/actor-context.ts +1 -1
  120. package/src/runtime/actors/actor-creation.ts +1 -1
  121. package/src/runtime/actors/actor-mailbox.ts +1 -1
  122. package/src/runtime/actors/actor-runtime-state.ts +28 -10
  123. package/src/runtime/actors/index.ts +30 -35
  124. package/src/runtime/actors/spot-actor-dispatch.ts +4 -3
  125. package/src/runtime/application-jobs/application-ingress-record-owner.ts +4 -0
  126. package/src/runtime/backend/contracts/index.ts +2 -0
  127. package/src/runtime/backend/mesh-completion-table.ts +2 -0
  128. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +5 -1
  129. package/src/runtime/backend/node/node-raw-binding-port.ts +20 -7
  130. package/src/runtime/backend/node/node-raw-mesh-backend.ts +18 -10
  131. package/src/runtime/channels/channel-dispatch-pipeline.ts +6 -5
  132. package/src/runtime/channels/channel-dispatchers.ts +39 -19
  133. package/src/runtime/channels/channel-envelope.ts +547 -20
  134. package/src/runtime/channels/channel-receive-loops.ts +93 -36
  135. package/src/runtime/channels/channel-runtime-lifecycle.ts +2 -2
  136. package/src/runtime/channels/channel-socket-registry.ts +3 -3
  137. package/src/runtime/diagnostics/runtime-metrics.ts +3 -1
  138. package/src/runtime/execution/serial-execution-queue.ts +13 -13
  139. package/src/runtime/foundation/raw-service-mesh-runtime.ts +40 -39
  140. package/src/runtime/foundation/service-liveness-registry.ts +1 -1
  141. package/src/runtime/foundation/service-mailbox.ts +6 -1
  142. package/src/runtime/foundation/service-runtime-contracts.ts +7 -1
  143. package/src/runtime/foundation/service-stateful-registry.ts +39 -14
  144. package/src/runtime/foundation/service-stateful-runtime.ts +87 -21
  145. package/src/runtime/foundation/service-stateful-wire-codec.ts +18 -0
  146. package/src/runtime/foundation/service-wire-constants.generated.ts +10 -0
  147. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -7
  148. package/src/runtime/host/actor-placement-coordinator.ts +1 -1
  149. package/src/runtime/host/actor-transfer-runtime.ts +3 -3
  150. package/src/runtime/host/application-job-queue.ts +1 -1
  151. package/src/runtime/host/index.ts +183 -44
  152. package/src/runtime/host/location-runtime-owner.ts +2 -2
  153. package/src/runtime/host/service-relocation-host-runtime.ts +101 -65
  154. package/src/runtime/host/spot-address-transport.ts +67 -61
  155. package/src/runtime/locations/actor-location-claims.ts +14 -14
  156. package/src/runtime/locations/auto-connect-loop.ts +24 -16
  157. package/src/runtime/locations/auto-connect-planner.ts +2 -5
  158. package/src/runtime/locations/auto-connect-reconciler.ts +37 -24
  159. package/src/runtime/locations/in-memory-location-store.ts +1 -74
  160. package/src/runtime/locations/location-store-repository.ts +32 -153
  161. package/src/runtime/locations/runtime.ts +16 -28
  162. package/src/runtime/messaging/creation-payload-codec.ts +3 -3
  163. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  164. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  165. package/src/runtime/spots/index.ts +28 -4
  166. package/src/runtime/spots/spot-actor-admission-coordinator.ts +1 -1
  167. package/src/runtime/spots/spot-actor-packet-dispatch.ts +16 -6
  168. package/src/runtime/spots/spot-actor-packet-drain.ts +21 -6
  169. package/src/runtime/spots/spot-entry-activation.ts +1 -1
  170. package/src/runtime/spots/spot-node-runtime-manager.ts +8 -6
  171. package/src/runtime/spots/spot-route-packet-dispatch.ts +8 -4
  172. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +3 -1
  173. package/src/runtime/spots/spot-serial-executor.ts +1 -1
  174. package/src/runtime/spots/spot-subscription-dispatch.ts +3 -1
  175. package/src/runtime/spots/spot-timer.ts +1 -1
  176. package/src/runtime/streams/actor-session-binding-registry.ts +30 -3
  177. package/src/runtime/streams/index.ts +30 -4
  178. package/src/runtime/streams/managed-stream.ts +2 -1
  179. package/src/runtime/streams/session-calls.ts +9 -14
  180. package/src/runtime/streams/session-context.ts +6 -11
  181. package/src/runtime/streams/stream-session-runtime.ts +49 -20
@@ -11,6 +11,7 @@ exports.decodeChannelRequestHeader = decodeChannelRequestHeader;
11
11
  exports.encodeReplyHeader = encodeReplyHeader;
12
12
  exports.decodeReplyHeader = decodeReplyHeader;
13
13
  exports.encodeApplicationPayload = encodeApplicationPayload;
14
+ exports.encodeOwnedApplicationPayload = encodeOwnedApplicationPayload;
14
15
  exports.encodeMultipartApplicationPayload = encodeMultipartApplicationPayload;
15
16
  exports.encodeMultipartPayload = encodeMultipartPayload;
16
17
  exports.decodeApplicationPayload = decodeApplicationPayload;
@@ -25,6 +26,7 @@ exports.encodeReject = encodeReject;
25
26
  exports.decodeReject = decodeReject;
26
27
  exports.decodeHeader = decodeHeader;
27
28
  const stream_wire_1 = require("@zlink-systems/stream-wire");
29
+ const payload_slab_1 = require("../../contracts/Common/payload-slab");
28
30
  const EndpointNotation_1 = require("../../contracts/Configuration/EndpointNotation");
29
31
  const service_topology_registry_1 = require("./service-topology-registry");
30
32
  const service_wire_binary_primitives_1 = require("./service-wire-binary-primitives");
@@ -142,7 +144,14 @@ function decodeReplyHeader(frame) {
142
144
  return result;
143
145
  }
144
146
  function encodeApplicationPayload(payload) {
145
- const result = allocateApplicationPayload(payload.packetName, payload.contentType, payload.payload.byteLength);
147
+ return encodeApplicationPayloadWith(payload, payload_slab_1.allocatePayloadBytes);
148
+ }
149
+ /** Encodes a retained internal application frame with its own backing store. */
150
+ function encodeOwnedApplicationPayload(payload) {
151
+ return encodeApplicationPayloadWith(payload, allocateOwnedPayloadBytes);
152
+ }
153
+ function encodeApplicationPayloadWith(payload, allocate) {
154
+ const result = allocateApplicationPayload(payload.packetName, payload.contentType, payload.payload.byteLength, allocate);
146
155
  result.set(payload.payload, result.byteLength - payload.payload.byteLength);
147
156
  return result;
148
157
  }
@@ -153,7 +162,7 @@ function encodeApplicationPayload(payload) {
153
162
  */
154
163
  function encodeMultipartApplicationPayload(parts, packetName, contentType) {
155
164
  const multipartLength = multipartPayloadLength(parts);
156
- const result = allocateApplicationPayload(packetName, contentType, multipartLength);
165
+ const result = allocateApplicationPayload(packetName, contentType, multipartLength, payload_slab_1.allocatePayloadBytes);
157
166
  writeMultipartPayload(result, result.byteLength - multipartLength, parts);
158
167
  return result;
159
168
  }
@@ -197,7 +206,7 @@ function writeMultipartPayload(result, offset, parts) {
197
206
  offset += length;
198
207
  }
199
208
  }
200
- function allocateApplicationPayload(packetName, contentType, payloadLength) {
209
+ function allocateApplicationPayload(packetName, contentType, payloadLength, allocate) {
201
210
  const packetNameLength = (0, service_wire_binary_primitives_1.canonicalServiceWireTextLength)(packetName, 'packetName', service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES, fail);
202
211
  const contentTypeLength = (0, service_wire_binary_primitives_1.canonicalServiceWireTextLength)(contentType, 'contentType', service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES, fail);
203
212
  if (payloadLength > MAX_U32)
@@ -207,10 +216,8 @@ function allocateApplicationPayload(packetName, contentType, payloadLength) {
207
216
  const bodyLength = frameLength - prefixLength;
208
217
  if (bodyLength > MAX_U32)
209
218
  fail('Application payload body exceeds u32.');
210
- // Both callers write every payload byte after these header fields, so the
211
- // frame needs no zero fill and a small frame comes from the shared pool
212
- // instead of its own backing store.
213
- const result = Buffer.allocUnsafe(frameLength);
219
+ // Both callers write every payload byte after these header fields.
220
+ const result = allocate(frameLength);
214
221
  result[0] = exports.APPLICATION_PAYLOAD_VERSION;
215
222
  result.writeUInt32BE(bodyLength, 1);
216
223
  let offset = writeText8(result, prefixLength, packetName, packetNameLength);
@@ -218,6 +225,9 @@ function allocateApplicationPayload(packetName, contentType, payloadLength) {
218
225
  result.writeUInt32BE(payloadLength, offset);
219
226
  return result;
220
227
  }
228
+ function allocateOwnedPayloadBytes(length) {
229
+ return Buffer.allocUnsafeSlow(length);
230
+ }
221
231
  function decodeApplicationPayload(frame) {
222
232
  const decoded = decodeApplicationPayloadView(frame);
223
233
  return {
@@ -21,7 +21,7 @@ export interface ZLinkActorPlacementCoordinatorOptions {
21
21
  readonly decodeRemoteReply?: (payload: Uint8Array) => unknown;
22
22
  }
23
23
  export declare class ZLinkActorPlacementCoordinator {
24
- private readonly options;
24
+ readonly options: ZLinkActorPlacementCoordinatorOptions;
25
25
  constructor(options: ZLinkActorPlacementCoordinatorOptions);
26
26
  create(actorId: string, stableType: string, createOnly: boolean, meshName: string | undefined, requestPayload: Uint8Array, timeoutMs: number, signal?: AbortSignal): Promise<ZLinkActorCreateResult>;
27
27
  handleRemoteCreate(record: ServiceActorCreateRecord, materialize: (requestPayload: Uint8Array, authority: ZLinkAuthoritySnapshot, signal: AbortSignal) => Promise<{
@@ -90,8 +90,8 @@ export declare class ZLinkActorTransferRuntime {
90
90
  completeRelocationSourceLeave(actor: ZLinkActor, sourceSpotId: RoutingId | undefined, signal?: AbortSignal): Promise<void>;
91
91
  relayMaintenanceTerminal(actorId: string, packet: ZLinkActorHandoffPacket, result: ZLinkActorHandoffResult, sourceNodeRid: RoutingId, targetAuthorityOwnerGeneration?: bigint): ZLinkActorHandoffTerminalAck;
92
92
  relayCanonicalMaintenanceTerminal(operationId: string, replyRouteId: string, result: ZLinkActorHandoffResult, sourceNodeRid: RoutingId, targetAuthorityOwnerGeneration?: bigint): ZLinkActorHandoffTerminalAcceptance;
93
- private sealBoundSessionRoute;
94
- private abortBoundSessionRouteSeal;
93
+ sealBoundSessionRoute(actor: ZLinkActor, state: ZLinkActorRuntimeState, signal?: AbortSignal, relocation?: ServiceWireOperationId, relocationTarget?: Pick<ZLinkMeshNodeDescriptor, 'rid' | 'lifecycleGeneration'>): Promise<ZLinkRemoteBoundSessionTarget | undefined>;
94
+ abortBoundSessionRouteSeal(actor: ZLinkActor, state: ZLinkActorRuntimeState, target: ZLinkRemoteBoundSessionTarget): Promise<void>;
95
95
  private observeBoundSessionSealAbort;
96
96
  getOrCreateRoutedActor(actorId: string, actorType: string, actorRef?: ActorRef, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, actorCreateRequest?: Message, signal?: AbortSignal): Promise<{
97
97
  readonly actor: ZLinkActor;
@@ -120,6 +120,6 @@ export declare class ZLinkActorTransferRuntime {
120
120
  rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
121
121
  actorEntryNodeRid(actor: ZLinkActor): RoutingId | undefined;
122
122
  private requireActorManager;
123
- private publishBoundSessionOwnership;
123
+ publishBoundSessionOwnership(actorId: string, actorRef: ZLinkBackendActorRef, ownershipGeneration: bigint, target: ZLinkRemoteBoundSessionTarget | undefined, targetOwnerLeaseGeneration: bigint | undefined): Promise<void>;
124
124
  }
125
125
  export {};
@@ -133,7 +133,7 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
133
133
  private recordCompletedWait;
134
134
  private updateLocalWaiters;
135
135
  private logLocalBacklog;
136
- private evaluatePressure;
136
+ evaluatePressure(): void;
137
137
  private pauseDurationAt;
138
138
  private cumulativePauseDurationAt;
139
139
  }
@@ -1,17 +1,33 @@
1
+ import { RequestRuntime } from '../foundation/request-runtime';
1
2
  import { inspectRuntime } from '../internal-observation';
2
- import { type ZLinkClientServerRuntime, type ZLinkFanoutRuntime, type ZLinkFrameworkLifecycleOptions, type ZLinkFrameworkRelocationOptions, type ZLinkFrameworkRelocationResult, type ZLinkFrameworkRuntime, type ZLinkFrameworkRuntimeStatus, type ZLinkFrameworkTerminationResult, type ZLinkListenerKind, type ZLinkListenerStatus, type ZLinkMeshNodeDescriptor, type ZLinkMessageFlowControl, type ZLinkMessageFlowLogMode, type ZLinkObservedStatus, type ZLinkRouteMeshRuntime } from '../../contracts';
3
+ import type { ApplicationJobOrigin } from '../application-jobs/contracts';
4
+ import { type ZLinkClientServerRuntime, type ZLinkFanoutRuntime, type ZLinkFrameworkLifecycleOptions, type ZLinkFrameworkRelocationOptions, type ZLinkFrameworkRelocationResult, type ZLinkFrameworkRuntime, type ZLinkFrameworkRuntimeStatus, type ZLinkFrameworkTerminationResult, type ZLinkListenerKind, type ZLinkListenerStatus, type ZLinkMeshNodeDescriptor, type ZLinkMessageFlowControl, type ZLinkMessageFlowLogMode, type ZLinkObservedStatus, type ZLinkRouteMeshRuntime, ZLinkFrameworkRelocationReason, ZLinkFrameworkRuntimeState } from '../../contracts';
3
5
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
4
6
  import { type ZLinkLocationRuntimeQuery } from '../../contracts/Locations';
5
7
  import { type DefaultZLinkActorManager, type ZLinkActorManagerOptions, DefaultZLinkActorClient } from '../actors';
6
- import { type ZLinkBackendContext, type ZLinkBackendMeshNode } from '../backend';
7
- import { DefaultZLinkChannelRuntimeOptions, ZLinkChannelRuntimeManager, ZLinkRuntimeRouteTransport } from '../channels';
8
+ import { ZLinkRuntimeAdmissionGate, type ZLinkMeshDispatchAdmission } from '../admission';
9
+ import { type ZLinkBackendAdapterFactory, type ZLinkBackendContext, type ZLinkBackendMeshNode } from '../backend';
10
+ import { type ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
11
+ import { DefaultZLinkChannelRuntimeOptions, ZLinkChannelRuntimeManager, ZLinkDispatchErrorReporter, ZLinkRuntimeRouteTransport, type ZLinkDispatchErrorSink } from '../channels';
8
12
  import type { ZLinkFrameworkRegistration } from '../configuration';
9
- import { type ZLinkRuntimeEventPublisher } from '../diagnostics';
13
+ import { type ZLinkRuntimeEventPublisher, ZLinkRuntimeMetrics, type ZLinkRuntimeMetricMeshSnapshot } from '../diagnostics';
10
14
  import { ZLinkFrameworkExecutionState } from '../execution';
11
- import { type ZLinkStoreLocationResolvers } from '../locations';
12
- import { DefaultZLinkSpotManager, ZLinkRuntimeSpotPublisherTransport, type ZLinkDetachedTaskRunner, type ZLinkSpotManagerOptions } from '../spots';
15
+ import { ZLinkListenerRecords } from '../foundation/listener-records';
16
+ import { type ReadyRecord, type ReceiveRecord } from '../foundation/service-runtime-contracts';
17
+ import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
18
+ import { type ZLinkLocationRuntime, type ZLinkStoreLocationResolvers } from '../locations';
19
+ import { ZLinkSubmitStatus } from '../messaging/submission-result';
20
+ import { DefaultZLinkSpotManager, ZLinkRuntimeSpotPublisherTransport, ZLinkSpotNodeRuntimeManager, type ZLinkDetachedTaskRunner, type ZLinkSpotManagerOptions } from '../spots';
21
+ import type { ZLinkSpotRouteResolver } from '../spots/spot-routing-internal';
13
22
  import { DefaultZLinkBoundSessionFactory, ZLinkStreamBindingRuntime } from '../streams';
23
+ import { ZLinkActorPlacementCoordinator } from './actor-placement-coordinator';
24
+ import { ApplicationJobQueue } from './application-job-queue';
25
+ import { ZLinkBoundSessionRelay } from './bound-session-relay';
26
+ import { ZLinkEntryActorRuntimeService } from './entry-actor-runtime';
27
+ import { ZLinkLocationRuntimeOwner } from './location-runtime-owner';
28
+ import { ZLinkRouteMeshRuntimeCoordinator } from './route-mesh-runtime';
14
29
  import { DefaultZLinkRouteMeshRuntimeOptions } from './route-mesh-runtime-options';
30
+ import { ZLinkHostServiceRelocationRuntime } from './service-relocation-host-runtime';
15
31
  import { ZLinkHostSpotAddressTransport } from './spot-address-transport';
16
32
  export interface ZLinkFrameworkRuntimeLifecycle {
17
33
  readonly isStarted: boolean;
@@ -42,8 +58,8 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
42
58
  }>;
43
59
  private readonly backendAdapterFactory;
44
60
  private readonly lifecycleSink?;
45
- private executionState?;
46
- private runtimeState;
61
+ executionState?: ZLinkFrameworkExecutionState;
62
+ runtimeState: ZLinkFrameworkRuntimeState;
47
63
  private runtimeStatus?;
48
64
  private readonly runtimeObservationSource;
49
65
  private runtimeDeadline?;
@@ -58,21 +74,21 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
58
74
  private shutdownOperationStartedAt?;
59
75
  private relocationTargetApplicationVersion?;
60
76
  private readonly runtimeObservers;
61
- private channelRuntime?;
62
- private spotNodeRuntime?;
77
+ channelRuntime?: ZLinkChannelRuntimeManager;
78
+ spotNodeRuntime?: ZLinkSpotNodeRuntimeManager;
63
79
  private streamRuntime?;
64
80
  private statefulAuthorityRoutes?;
65
- private readonly locationOwner;
81
+ readonly locationOwner: ZLinkLocationRuntimeOwner;
66
82
  private readonly meshRouters;
67
- private readonly boundSessionRelay;
83
+ readonly boundSessionRelay: ZLinkBoundSessionRelay;
68
84
  private readonly actorHandoff;
69
85
  private readonly actorTransferRegistry;
70
86
  private readonly actorTransferRuntime;
71
87
  private readonly actorTransferAuthorityRuntime;
72
- private readonly serviceRelocation;
73
- private readonly entryActorRuntime;
88
+ readonly serviceRelocation: ZLinkHostServiceRelocationRuntime;
89
+ readonly entryActorRuntime: ZLinkEntryActorRuntimeService;
74
90
  private actorManager?;
75
- private actorPlacement?;
91
+ actorPlacement?: ZLinkActorPlacementCoordinator;
76
92
  private spotManager?;
77
93
  private userSpotCoordinator?;
78
94
  private ownerLeaseRecoveryRuntime?;
@@ -81,17 +97,17 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
81
97
  private readonly destroyedActorRefs;
82
98
  private readonly runtimeEventPublisher;
83
99
  private readonly metrics;
84
- private readonly applicationJobQueue;
100
+ readonly applicationJobQueue: ApplicationJobQueue;
85
101
  private readonly capacityStatus;
86
102
  private readonly metricRegistrations;
87
- private readonly admission;
103
+ readonly admission: ZLinkRuntimeAdmissionGate;
88
104
  private readonly activationAdmission;
89
105
  private cachedLocationSpotRouteResolver?;
90
106
  private actorClientLocationResolver?;
91
107
  private readonly messageFlowModeCell;
92
108
  private telemetryLease;
93
109
  private dispatchErrorReporters;
94
- private readonly runtimeOrPreStartErrorSink;
110
+ readonly runtimeOrPreStartErrorSink: ZLinkDispatchErrorSink;
95
111
  private cachedDiagnosticsContext?;
96
112
  private readonly preStartErrorSink;
97
113
  readonly channelTransport: () => ZLinkChannelRuntimeManager | undefined;
@@ -108,7 +124,7 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
108
124
  readonly clientServerRuntime: ZLinkClientServerRuntime;
109
125
  readonly fanoutRuntime: ZLinkFanoutRuntime;
110
126
  private readonly relocationStore?;
111
- private readonly routeMeshCoordinator;
127
+ readonly routeMeshCoordinator: ZLinkRouteMeshRuntimeCoordinator;
112
128
  constructor(options: ZLinkFrameworkRuntimeHostOptions, internalOptions?: unknown);
113
129
  get isStarted(): boolean;
114
130
  get status(): ZLinkFrameworkRuntimeStatus;
@@ -148,17 +164,17 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
148
164
  start(): Promise<void>;
149
165
  private startCore;
150
166
  stop(): Promise<void>;
151
- private runtimeMetricMeshSnapshots;
167
+ runtimeMetricMeshSnapshots(): readonly ZLinkRuntimeMetricMeshSnapshot[];
152
168
  private stopCore;
153
- private installOwnerLeaseRecoveryPublication;
154
- private resumeOwnerLeaseOwnedWork;
155
- private enterServing;
169
+ installOwnerLeaseRecoveryPublication(runtime: ZLinkLocationRuntime, spotNodeRuntime: ZLinkSpotNodeRuntimeManager, channelRuntime: ZLinkChannelRuntimeManager): void;
170
+ resumeOwnerLeaseOwnedWork(runtime: ZLinkLocationRuntime, spotNodeRuntime: ZLinkSpotNodeRuntimeManager, channelRuntime: ZLinkChannelRuntimeManager): Promise<void>;
171
+ enterServing(spotNodeRuntime: ZLinkSpotNodeRuntimeManager, signal: AbortSignal | undefined): Promise<void>;
156
172
  private publishOrStayPreparing;
157
- private startStatefulAuthority;
173
+ startStatefulAuthority(locationStore: import('../locations/domain-store-contract').ZLinkDomainLocationStore, spotNodeRuntime: ZLinkSpotNodeRuntimeManager, signal: AbortSignal | undefined): Promise<void>;
158
174
  private createStatefulAuthorityRoutes;
159
175
  private requiresStatefulAuthorityRuntime;
160
176
  private installLocationBackedAuthorities;
161
- private removeOwnerLeaseRecoveryPublication;
177
+ removeOwnerLeaseRecoveryPublication(): void;
162
178
  private ownerAdmissionOpen;
163
179
  onApplicationBootstrap(): Promise<void>;
164
180
  onApplicationShutdown(): Promise<void>;
@@ -167,10 +183,10 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
167
183
  private publishMeshRetiring;
168
184
  private publishMeshServing;
169
185
  private publishMeshDraining;
170
- private preflightAutomaticPeerReadiness;
186
+ preflightAutomaticPeerReadiness(deadlineAt: number, targetApplicationVersion: bigint): Promise<ZLinkFrameworkRelocationReason | undefined>;
171
187
  private hasLocalStatefulRelocationWork;
172
188
  private hasExactAutomaticPeerReadiness;
173
- private publishHostRelocated;
189
+ publishHostRelocated(): Promise<void>;
174
190
  private publishHostDraining;
175
191
  private cleanupOwnerForDrain;
176
192
  private registerInstanceApplicationLifecycle;
@@ -183,24 +199,61 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
183
199
  createPublicSpotManager(local: DefaultZLinkSpotManager): import('../../contracts').ZLinkSpotManager;
184
200
  private actorRuntimeOptionsFactory;
185
201
  private createChannelRuntimeOptions;
186
- private createSpotNodeRuntimeOptions;
202
+ createSpotNodeRuntimeOptions(context: ZLinkBackendContext, dispatchErrors: ZLinkDispatchErrorReporter): {
203
+ admission: ZLinkRuntimeAdmissionGate;
204
+ errorSink: ZLinkDispatchErrorSink;
205
+ peerAdmissionSealed: (meshName: string) => boolean;
206
+ messageFollowReceiver: (record: ServiceMessageFollowRecord) => void;
207
+ meshRecordDispatcher: (meshName: string, owner: ReadyRecord, record: ReceiveRecord) => void | Promise<void>;
208
+ activationConcurrency: (meshName: string) => import("../activation-admission").ZLinkActivationConcurrency;
209
+ context: ZLinkBackendContext;
210
+ applicationJobQueue?: ApplicationJobQueue;
211
+ registration: ZLinkFrameworkRegistration;
212
+ messageSerializers?: ReadonlyMap<string, import("../../contracts").ZLinkMessageSerializer>;
213
+ providerResolver?: ZLinkProviderResolver;
214
+ metrics?: import("../diagnostics").ZLinkRuntimeMetrics;
215
+ spotRouterChannelIdForMesh?: (meshName: string) => string;
216
+ runtimeEventPublisher?: ZLinkRuntimeEventPublisher;
217
+ actorHandoffRuntime?: import("../spots/spot-runtime-ports").ZLinkSpotActorHandoffRuntime;
218
+ actorTransferRuntime?: import("../spots/spot-runtime-ports").ZLinkSpotActorTransferRuntime;
219
+ boundSessionRuntime?: import("../spots/spot-runtime-ports").ZLinkSpotBoundSessionRuntime;
220
+ detachedTaskRunner: ZLinkDetachedTaskRunner;
221
+ dispatchErrors?: ZLinkDispatchErrorReporter;
222
+ channelClient?: import("../../contracts").ZLinkChannelClient;
223
+ fanoutClient?: import("../../contracts").ZLinkFanoutClient;
224
+ spotPublisherClient?: import("../../contracts").ZLinkSpotPublisherClient;
225
+ routedTransport?: import("../spots").ZLinkSpotRoutedTransport;
226
+ requests?: RequestRuntime;
227
+ listenerRecords?: ZLinkListenerRecords;
228
+ primaryMeshName?: string;
229
+ backendAdapterFactory: ZLinkBackendAdapterFactory;
230
+ spotRouteResolver?: ZLinkSpotRouteResolver;
231
+ entryActorRuntime?: import("../spots/spot-runtime-ports").ZLinkEntryActorRuntime;
232
+ applicationJobReceiveFlowFailureSink?: (error: unknown) => void;
233
+ };
187
234
  private dispatchMeshNodeRecord;
188
235
  private dispatchMeshNodePayload;
189
236
  private completeFormalSourceLeave;
190
- private dispatchMeshRecord;
237
+ dispatchMeshRecord(applicationJobOrigin: () => ApplicationJobOrigin, meshName: string, owner: ReadyRecord, record: ReceiveRecord, signal?: AbortSignal): void | Promise<void>;
191
238
  private admitMeshDispatch;
192
- private dispatchMeshActorBinding;
193
- private submitLocalMeshRoute;
194
- private dispatchMeshSpotRecord;
195
- private createDispatchErrorReporter;
239
+ dispatchMeshActorBinding(meshName: string, record: ReceiveRecord, signal?: AbortSignal): Promise<void>;
240
+ submitLocalMeshRoute(meshName: string, sourceNodeRid: string, parts: readonly MessageLike[]): {
241
+ readonly status: ZLinkSubmitStatus.Shutdown;
242
+ } | {
243
+ readonly status: ZLinkSubmitStatus.TargetNotFound;
244
+ } | {
245
+ readonly status: ZLinkSubmitStatus.Submitted;
246
+ };
247
+ dispatchMeshSpotRecord(meshName: string, owner: ReadyRecord, record: ReceiveRecord, admit?: ZLinkMeshDispatchAdmission): Promise<void>;
248
+ createDispatchErrorReporter(errorSink: ZLinkDispatchErrorSink): ZLinkDispatchErrorReporter;
196
249
  detachedTaskRunner(): ZLinkDetachedTaskRunner;
197
250
  private diagnosticsContext;
198
- private flowCreationEnabled;
251
+ flowCreationEnabled(): boolean;
199
252
  private runLifecycle;
200
253
  requirePrimaryMeshNode(): ZLinkBackendMeshNode;
201
254
  private ensureLocationRuntime;
202
- private createLocationSpotRouteResolver;
203
- private createActorLocationResolver;
255
+ createLocationSpotRouteResolver(): ZLinkSpotRouteResolver | undefined;
256
+ createActorLocationResolver(): ZLinkStoreLocationResolvers | undefined;
204
257
  }
205
258
  export declare function hasUnsupportedManualTopology(registration: ZLinkFrameworkRegistration): boolean;
206
259
  export declare function hasExactPeerReadiness(descriptors: readonly ZLinkMeshNodeDescriptor[], local: {
@@ -559,7 +559,7 @@ class ZLinkFrameworkRuntimeHost {
559
559
  clear: () => this.boundSessionRelay.boundSessions.clearServiceWireSessionRelocations()
560
560
  },
561
561
  trackInstanceSpot: (input) => this.locationOwner.currentLifecycle?.trackInstanceSpot(input),
562
- invalidateActorRoute: (actorId) => this.actorClientLocationResolver?.invalidateActorRoute(actorId),
562
+ observeActorAuthorityVersion: (actorId, storeVersion) => this.actorClientLocationResolver?.observeActorAuthorityVersion(actorId, storeVersion),
563
563
  reconcileStatefulAuthorityRoutes: (signal) => this.statefulAuthorityRoutes?.reconcile(signal) ?? Promise.resolve(),
564
564
  runtimeEventPublisher: this.runtimeEventPublisher,
565
565
  metrics: this.metrics,
@@ -1998,7 +1998,7 @@ class ZLinkFrameworkRuntimeHost {
1998
1998
  if (entrySpotId === undefined) {
1999
1999
  throw new ConfigurationException_1.ZLinkConfigurationException(`Actor '${actorRef.actorId}' authority requires its RouteMesh Entry Spot.`);
2000
2000
  }
2001
- await (0, actors_1.publishInitialActorAuthority)(store, {
2001
+ const authority = await (0, actors_1.publishInitialActorAuthority)(store, {
2002
2002
  actorType,
2003
2003
  actor: actorRef,
2004
2004
  meshName,
@@ -2008,7 +2008,7 @@ class ZLinkFrameworkRuntimeHost {
2008
2008
  spotGeneration: ownerNodeGeneration,
2009
2009
  spotKind: contracts_2.ZLinkSpotKind.Entry
2010
2010
  }, signal);
2011
- this.actorClientLocationResolver?.invalidateActorRoute(actorRef.actorId);
2011
+ this.actorClientLocationResolver?.observeActorAuthorityVersion(actorRef.actorId, authority.storeVersion.value);
2012
2012
  },
2013
2013
  reportPostCommitError: (error) => this.runtimeOrPreStartErrorSink.reportRuntimeTaskException('post-commit actor binding', error),
2014
2014
  reportBoundSessionSendError: (error) => this.runtimeOrPreStartErrorSink.reportRuntimeTaskException('bound session one-way submit', error),
@@ -2260,8 +2260,7 @@ class ZLinkFrameworkRuntimeHost {
2260
2260
  replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
2261
2261
  return;
2262
2262
  }
2263
- replyBindingSuccess();
2264
- state.installBoundSessionBinding({
2263
+ const incomingTarget = {
2265
2264
  ...target,
2266
2265
  sessionNodeRid: binding.sessionNodeRid,
2267
2266
  sessionRid: binding.sessionRid,
@@ -2269,8 +2268,79 @@ class ZLinkFrameworkRuntimeHost {
2269
2268
  sessionOwnerId: binding.sessionOwnerId,
2270
2269
  sessionOwnerLeaseGeneration: binding.sessionOwnerLeaseGeneration,
2271
2270
  bindingGeneration: binding.bindingGeneration
2271
+ };
2272
+ const currentBinding = state.boundSession;
2273
+ const currentActor = state.actor;
2274
+ if (currentBinding === undefined ||
2275
+ currentActor?.onDuplicateBind === undefined ||
2276
+ samePhysicalSession(currentBinding, incomingTarget)) {
2277
+ state.installBoundSessionBinding(incomingTarget);
2278
+ replyBindingSuccess();
2279
+ return;
2280
+ }
2281
+ const spotManager = this.spotManager;
2282
+ if (spotManager === undefined || state.meshName === undefined) {
2283
+ replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
2284
+ return;
2285
+ }
2286
+ let callbackStarted;
2287
+ const started = new Promise((resolve) => {
2288
+ callbackStarted = resolve;
2272
2289
  });
2273
- return Promise.resolve();
2290
+ let callbackTimedOut = false;
2291
+ let timeoutHandle;
2292
+ const cancellation = new AbortController();
2293
+ const callbackSignal = signal === undefined ? cancellation.signal : AbortSignal.any([signal, cancellation.signal]);
2294
+ const turn = spotManager.executeActorTurn(state.meshName, state.actor?.context.spotId, state.actorId, async () => {
2295
+ const current = state.boundSession;
2296
+ const actor = state.actor;
2297
+ const duplicateCallback = current !== undefined && !samePhysicalSession(current, incomingTarget)
2298
+ ? actor?.onDuplicateBind
2299
+ : undefined;
2300
+ if (duplicateCallback === undefined || actor === undefined || current === undefined) {
2301
+ state.installBoundSessionBinding(incomingTarget);
2302
+ replyBindingSuccess();
2303
+ return;
2304
+ }
2305
+ callbackStarted();
2306
+ const decision = await duplicateCallback.call(actor, sessionBindingIdentity(current), sessionBindingIdentity(incomingTarget), callbackSignal);
2307
+ if (callbackTimedOut)
2308
+ return;
2309
+ if (decision !== undefined && decision.length > 0) {
2310
+ if (Buffer.byteLength(decision, 'utf8') > 0xffff) {
2311
+ throw new RangeError('Duplicate bind rejection message exceeds Text16 capacity.');
2312
+ }
2313
+ if (record.replyFailure?.(runtime_values_1.RequestResult.Rejected, 0, {
2314
+ kind: 'streamBindRejected',
2315
+ rejectionMessage: decision
2316
+ }) !== runtime_values_1.SubmitResult.Ok) {
2317
+ throw new ConfigurationException_1.ZLinkConfigurationException(`MeshNode Actor binding target '${binding.actor.actorId}' rejection acknowledgement failed.`);
2318
+ }
2319
+ return;
2320
+ }
2321
+ state.installBoundSessionBinding(incomingTarget);
2322
+ replyBindingSuccess();
2323
+ });
2324
+ const timeout = started.then(() => new Promise((resolve) => {
2325
+ timeoutHandle = setTimeout(() => {
2326
+ callbackTimedOut = true;
2327
+ resolve('timedOut');
2328
+ }, this.options.registration.sessionReplacementCallbackTimeoutMs);
2329
+ }));
2330
+ try {
2331
+ const outcome = await Promise.race([turn.then(() => 'completed'), timeout]);
2332
+ if (outcome === 'timedOut') {
2333
+ cancellation.abort((0, abort_1.createDeadlineExceededError)('Duplicate bind callback timed out.'));
2334
+ if (record.replyFailure?.(runtime_values_1.RequestResult.TimedOut, 0) !== runtime_values_1.SubmitResult.Ok) {
2335
+ throw new ConfigurationException_1.ZLinkConfigurationException(`MeshNode Actor binding target '${binding.actor.actorId}' timeout acknowledgement failed.`);
2336
+ }
2337
+ void turn.catch((error) => this.runtimeOrPreStartErrorSink.reportRuntimeTaskException(`duplicate bind callback '${binding.actor.actorId}'`, error));
2338
+ }
2339
+ }
2340
+ finally {
2341
+ if (timeoutHandle !== undefined)
2342
+ clearTimeout(timeoutHandle);
2343
+ }
2274
2344
  }
2275
2345
  submitLocalMeshRoute(meshName, sourceNodeRid, parts) {
2276
2346
  const state = this.executionState;
@@ -2332,7 +2402,8 @@ class ZLinkFrameworkRuntimeHost {
2332
2402
  contentType: envelope.header.contentType,
2333
2403
  sourceNodeRid: String(record.sourceNodeRid ?? ''),
2334
2404
  metadata: (0, contracts_2.zlinkMessageMetadata)(envelope.header.metadata),
2335
- correlationId: envelope.header.correlationId ?? undefined
2405
+ correlationId: envelope.header.correlationId ?? undefined,
2406
+ receivedAt: record.receivedAt ?? new Date()
2336
2407
  };
2337
2408
  try {
2338
2409
  const dispatch = async () => {
@@ -2452,6 +2523,29 @@ function hasUnsupportedManualTopology(registration) {
2452
2523
  }
2453
2524
  return false;
2454
2525
  }
2526
+ function samePhysicalSession(left, right) {
2527
+ return (left.sessionNodeRid !== undefined &&
2528
+ left.sessionRid !== undefined &&
2529
+ left.sessionOwnerNodeGeneration !== undefined &&
2530
+ right.sessionNodeRid !== undefined &&
2531
+ right.sessionRid !== undefined &&
2532
+ right.sessionOwnerNodeGeneration !== undefined &&
2533
+ (0, routing_id_1.routingIdsEqual)(left.sessionNodeRid, right.sessionNodeRid) &&
2534
+ left.sessionRid === right.sessionRid &&
2535
+ left.sessionOwnerNodeGeneration === right.sessionOwnerNodeGeneration);
2536
+ }
2537
+ function sessionBindingIdentity(value) {
2538
+ if (value.sessionNodeRid === undefined ||
2539
+ value.sessionOwnerNodeGeneration === undefined ||
2540
+ value.bindingGeneration === undefined) {
2541
+ throw new ConfigurationException_1.ZLinkConfigurationException('Duplicate bind callback requires a complete identity.');
2542
+ }
2543
+ return {
2544
+ sessionOwnerNodeRid: value.sessionNodeRid,
2545
+ sessionOwnerNodeGeneration: value.sessionOwnerNodeGeneration,
2546
+ bindingGeneration: value.bindingGeneration
2547
+ };
2548
+ }
2455
2549
  function hasConfiguredLocationStore(registration) {
2456
2550
  return (registration.locations.useInMemoryStores || registration.locations.storeInstance !== undefined);
2457
2551
  }
@@ -19,8 +19,8 @@ export interface ZLinkLocationRuntimeStopSnapshot {
19
19
  }
20
20
  export declare class ZLinkLocationRuntimeOwner {
21
21
  private readonly options;
22
- private stores?;
23
- private runtime?;
22
+ stores?: ZLinkLocationRuntimeStores;
23
+ runtime?: ZLinkLocationRuntime;
24
24
  private lifecycle?;
25
25
  private events?;
26
26
  private leaseTrackerState?;