@zlink-systems/framework 0.21.0 → 0.23.0

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 (516) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -1,20 +1,12 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
2
1
  import {
3
- ZLinkFrameworkException,
4
- type ActorRef,
5
- type RoutingId
6
- } from '../../contracts';
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
5
+ import { ZLinkFrameworkException, type ActorRef, type RoutingId } from '../../contracts';
7
6
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
8
7
  import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
9
- import type {
10
- ZLinkRemoteActorPacketTarget,
11
- ZLinkRemoteBoundSessionTarget
12
- } from '../actors';
13
- import {
14
- decodeStreamHeader,
15
- messageToBytes,
16
- ZLinkStreamMessageKind
17
- } from '../streams/protocol';
8
+ import type { ZLinkRemoteActorPacketTarget, ZLinkRemoteBoundSessionTarget } from '../actors';
9
+ import { decodeStreamHeader, messageToBytes, ZLinkStreamMessageKind } from '../streams/protocol';
18
10
  import {
19
11
  decodeRemoteActorSessionBinding,
20
12
  encodeRemoteActorPacketTarget,
@@ -22,15 +14,14 @@ import {
22
14
  } from '../actors/actor-packet-relay-wire';
23
15
  import { decodeRoutingId as decodeWireRoutingId, routingIdsEqual } from '../routing-id';
24
16
  import type { ZLinkRemoteActorPacketRelay } from './spot-remote-route-codec';
25
- import {
26
- hasReplyToken,
27
- submitSpotRouteBridgeReply
28
- } from './spot-route-replies';
17
+ import { hasReplyToken, submitSpotRouteBridgeReply } from './spot-route-replies';
29
18
  import type { ZLinkActorPacketDelivery } from './spot-actor-packet-dispatch';
30
19
 
31
20
  interface ZLinkSpotActorPacketRelayDispatchOptions {
32
21
  readonly actorPacketHandler?: (delivery: ZLinkActorPacketDelivery) => Promise<unknown>;
33
- readonly actorPacketTargetProvider?: (actorId: string) => ZLinkRemoteActorPacketTarget | undefined;
22
+ readonly actorPacketTargetProvider?: (
23
+ actorId: string
24
+ ) => ZLinkRemoteActorPacketTarget | undefined;
34
25
  readonly bindRemoteSession?: (
35
26
  actor: ActorRef,
36
27
  sourceNodeRid: RoutingId,
@@ -54,18 +45,15 @@ export class ZLinkSpotActorPacketRelayDispatch {
54
45
  actorPacketRelay.routerChannelId === undefined ||
55
46
  actorPacketRelay.boundSessionTargetNodeRid === undefined ||
56
47
  actorPacketRelay.boundSessionSpotId === undefined
57
- ? undefined
58
- : {
59
- routerChannelId: actorPacketRelay.routerChannelId,
60
- targetNodeRid: decodeWireRoutingId(
61
- actorPacketRelay.boundSessionTargetNodeRid,
62
- undefined
63
- ),
64
- spotId: decodeWireRoutingId(
65
- actorPacketRelay.boundSessionSpotId,
66
- undefined
67
- )
68
- };
48
+ ? undefined
49
+ : {
50
+ routerChannelId: actorPacketRelay.routerChannelId,
51
+ targetNodeRid: decodeWireRoutingId(
52
+ actorPacketRelay.boundSessionTargetNodeRid,
53
+ undefined
54
+ ),
55
+ spotId: decodeWireRoutingId(actorPacketRelay.boundSessionSpotId, undefined)
56
+ };
69
57
  const header = RuntimeMessage.from(Buffer.from(actorPacketRelay.header, 'base64'));
70
58
  const payload = RuntimeMessage.from(Buffer.from(actorPacketRelay.payload, 'base64'));
71
59
  try {
@@ -82,12 +70,16 @@ export class ZLinkSpotActorPacketRelayDispatch {
82
70
  sourceNodeRid === null ||
83
71
  this.options.bindRemoteSession === undefined
84
72
  ) {
85
- throw new Error('Remote actor session binding requires a send, source route, and concrete actor ref.');
73
+ throw new Error(
74
+ 'Remote actor session binding requires a send, source route, and concrete actor ref.'
75
+ );
86
76
  }
87
77
  const binding = decodeRemoteActorSessionBinding(messageToBytes(payload));
88
78
  const declaredSourceNodeRid = binding.sessionNodeRid;
89
79
  if (!routingIdsEqual(sourceNodeRid, declaredSourceNodeRid)) {
90
- throw new Error('Remote actor session binding source did not match the declared session node.');
80
+ throw new Error(
81
+ 'Remote actor session binding source did not match the declared session node.'
82
+ );
91
83
  }
92
84
  this.options.bindRemoteSession(
93
85
  actorRef,
@@ -109,8 +101,10 @@ export class ZLinkSpotActorPacketRelayDispatch {
109
101
  }
110
102
  return true;
111
103
  }
112
- if (actorPacketRelay.messageFollowContext?.deadlineUnixMs !== undefined
113
- && Date.now() >= actorPacketRelay.messageFollowContext.deadlineUnixMs) {
104
+ if (
105
+ actorPacketRelay.messageFollowContext?.deadlineUnixMs !== undefined &&
106
+ Date.now() >= actorPacketRelay.messageFollowContext.deadlineUnixMs
107
+ ) {
114
108
  throw createInternalFrameworkException(
115
109
  ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
116
110
  `Actor request '${actorPacketRelay.actorId}' expired before target handler admission.`
@@ -125,9 +119,9 @@ export class ZLinkSpotActorPacketRelayDispatch {
125
119
  // be discarded. Non-follow relays keep the synchronous-return path.
126
120
  const outerReplyable = hasReplyToken(received.replyToken);
127
121
  const followedBoundSessionReply =
128
- !outerReplyable
129
- && actorPacketRelay.messageFollowContext !== undefined
130
- && remoteBoundSessionTarget !== undefined;
122
+ !outerReplyable &&
123
+ actorPacketRelay.messageFollowContext !== undefined &&
124
+ remoteBoundSessionTarget !== undefined;
131
125
  const response = await this.options.actorPacketHandler({
132
126
  actorId: actorPacketRelay.actorId,
133
127
  parts: [header, payload],
@@ -137,7 +131,11 @@ export class ZLinkSpotActorPacketRelayDispatch {
137
131
  });
138
132
  const actorPacketTarget = this.actorPacketTarget(actorPacketRelay.actorId);
139
133
  if (hasReplyToken(received.replyToken)) {
140
- submitSpotRouteBridgeReply(received, actorPacketRelay.envelope, { ok: true, response, actorPacketTarget });
134
+ submitSpotRouteBridgeReply(received, actorPacketRelay.envelope, {
135
+ ok: true,
136
+ response,
137
+ actorPacketTarget
138
+ });
141
139
  }
142
140
  return true;
143
141
  } catch (error) {
@@ -1,25 +1,24 @@
1
- import {
2
- ZLinkSpotCloseReason,
3
- type ZLinkSpotClosingContext
4
- } from '../../contracts';
1
+ import { ZLinkSpotCloseReason, type ZLinkSpotClosingContext } from '../../contracts';
5
2
 
6
3
  const DEFAULT_CLEANUP_TIMEOUT_MS = 30_000;
7
4
 
8
5
  export async function invokeSpotClosing(
9
- callback: ((context: ZLinkSpotClosingContext, cleanupSignal: AbortSignal) => Promise<void>) | undefined,
6
+ callback:
7
+ ((context: ZLinkSpotClosingContext, cleanupSignal: AbortSignal) => Promise<void>) | undefined,
10
8
  reason: ZLinkSpotCloseReason,
11
9
  cleanupDeadline: Date | number = DEFAULT_CLEANUP_TIMEOUT_MS
12
10
  ): Promise<void> {
13
11
  if (callback === undefined) return;
14
- const deadline = new Date(cleanupDeadline instanceof Date
15
- ? cleanupDeadline.getTime()
16
- : Date.now() + cleanupDeadline);
17
- const timeoutMs = Math.max(0, cleanupDeadline instanceof Date
18
- ? cleanupDeadline.getTime() - Date.now()
19
- : cleanupDeadline);
12
+ const deadline = new Date(
13
+ cleanupDeadline instanceof Date ? cleanupDeadline.getTime() : Date.now() + cleanupDeadline
14
+ );
15
+ const timeoutMs = Math.max(
16
+ 0,
17
+ cleanupDeadline instanceof Date ? cleanupDeadline.getTime() - Date.now() : cleanupDeadline
18
+ );
20
19
  const controller = new AbortController();
21
20
  let timer: ReturnType<typeof setTimeout> | undefined;
22
- const expired = new Promise<void>(resolve => {
21
+ const expired = new Promise<void>((resolve) => {
23
22
  timer = setTimeout(() => {
24
23
  controller.abort();
25
24
  resolve();
@@ -21,10 +21,7 @@ import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
21
21
  import type { ZLinkWorkerCall } from '../../contracts';
22
22
  import { ZLinkConfigurationException } from '../configuration';
23
23
  import { DefaultZLinkWorkerCall, ZLinkWorkerRuntime } from '../workers';
24
- import {
25
- createTimerDiagnostics,
26
- type ZLinkSpotTimerRegistry
27
- } from './spot-timer';
24
+ import { createTimerDiagnostics, type ZLinkSpotTimerRegistry } from './spot-timer';
28
25
  import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
29
26
 
30
27
  interface ZLinkEntrySpotContextOptions {
@@ -67,7 +64,9 @@ interface ZLinkSpotContextOptions {
67
64
  readonly ensureOperationAllowed?: () => void;
68
65
  }
69
66
 
70
- export function createEntrySpotContext(options: ZLinkEntrySpotContextOptions): ZLinkEntrySpotContext {
67
+ export function createEntrySpotContext(
68
+ options: ZLinkEntrySpotContextOptions
69
+ ): ZLinkEntrySpotContext {
71
70
  return withImmutableSpotIdentity({
72
71
  meshName: options.spotNodeName,
73
72
  spotId: options.spotId,
@@ -109,11 +108,13 @@ export function createEntrySpotContext(options: ZLinkEntrySpotContextOptions): Z
109
108
  },
110
109
  runCpuWorker<T>(work: (signal: AbortSignal) => T): ZLinkWorkerCall<T> {
111
110
  return new DefaultZLinkWorkerCall(options.serial, (timeoutMs, signal) =>
112
- options.workerRuntime.scheduleCpu(work, timeoutMs, signal));
111
+ options.workerRuntime.scheduleCpu(work, timeoutMs, signal)
112
+ );
113
113
  },
114
114
  runIoWorker<T>(work: (signal: AbortSignal) => Promise<T>): ZLinkWorkerCall<T> {
115
115
  return new DefaultZLinkWorkerCall(options.serial, (timeoutMs, signal) =>
116
- options.workerRuntime.scheduleIo(work, timeoutMs, signal));
116
+ options.workerRuntime.scheduleIo(work, timeoutMs, signal)
117
+ );
117
118
  }
118
119
  });
119
120
  }
@@ -131,13 +132,15 @@ export function createSpotContext(options: ZLinkSpotContextOptions): ZLinkSpotCo
131
132
  },
132
133
  relocationReady: () => {
133
134
  options.ensureOperationAllowed?.();
134
- return options.relocationReady?.() ?? {
135
- defer() {
136
- throw new ZLinkConfigurationException(
137
- 'Spot relocation readiness is not configured for application signaling.'
138
- );
135
+ return (
136
+ options.relocationReady?.() ?? {
137
+ defer() {
138
+ throw new ZLinkConfigurationException(
139
+ 'Spot relocation readiness is not configured for application signaling.'
140
+ );
141
+ }
139
142
  }
140
- };
143
+ );
141
144
  },
142
145
  leaveActor: (actor: ZLinkActor, signal?: AbortSignal) => {
143
146
  options.ensureOperationAllowed?.();
@@ -157,7 +160,9 @@ export function createSpotContext(options: ZLinkSpotContextOptions): ZLinkSpotCo
157
160
  options.ensureOperationAllowed?.();
158
161
  const spot = options.getSpot();
159
162
  if (spot === undefined) {
160
- throw new ZLinkConfigurationException('Spot timer cannot be registered before spot activation.');
163
+ throw new ZLinkConfigurationException(
164
+ 'Spot timer cannot be registered before spot activation.'
165
+ );
161
166
  }
162
167
  return options.timers.add(
163
168
  name,
@@ -168,18 +173,27 @@ export function createSpotContext(options: ZLinkSpotContextOptions): ZLinkSpotCo
168
173
  spot,
169
174
  options.providerResolver,
170
175
  signal,
171
- createTimerDiagnostics(String(options.spotId), options.spotId, false, name, handlerType, options.runtimeEventPublisher)
176
+ createTimerDiagnostics(
177
+ String(options.spotId),
178
+ options.spotId,
179
+ false,
180
+ name,
181
+ handlerType,
182
+ options.runtimeEventPublisher
183
+ )
172
184
  );
173
185
  },
174
186
  runCpuWorker: <T>(work: (signal: AbortSignal) => T): ZLinkWorkerCall<T> => {
175
187
  options.ensureOperationAllowed?.();
176
188
  return new DefaultZLinkWorkerCall(options.serial, (timeoutMs, signal) =>
177
- options.workerRuntime.scheduleCpu(work, timeoutMs, signal));
189
+ options.workerRuntime.scheduleCpu(work, timeoutMs, signal)
190
+ );
178
191
  },
179
192
  runIoWorker: <T>(work: (signal: AbortSignal) => Promise<T>): ZLinkWorkerCall<T> => {
180
193
  options.ensureOperationAllowed?.();
181
194
  return new DefaultZLinkWorkerCall(options.serial, (timeoutMs, signal) =>
182
- options.workerRuntime.scheduleIo(work, timeoutMs, signal));
195
+ options.workerRuntime.scheduleIo(work, timeoutMs, signal)
196
+ );
183
197
  }
184
198
  });
185
199
  }
@@ -206,7 +220,9 @@ export function createInstanceSpotContext(
206
220
  ) => {
207
221
  const spot = options.getSpot();
208
222
  if (spot === undefined) {
209
- throw new ZLinkConfigurationException('Instance Spot timer cannot be registered before activation.');
223
+ throw new ZLinkConfigurationException(
224
+ 'Instance Spot timer cannot be registered before activation.'
225
+ );
210
226
  }
211
227
  return options.timers.add(
212
228
  name,
@@ -229,10 +245,12 @@ export function createInstanceSpotContext(
229
245
  },
230
246
  runCpuWorker: <T>(work: (signal: AbortSignal) => T): ZLinkWorkerCall<T> =>
231
247
  new DefaultZLinkWorkerCall(options.serial, (timeoutMs, signal) =>
232
- options.workerRuntime.scheduleCpu(work, timeoutMs, signal)),
248
+ options.workerRuntime.scheduleCpu(work, timeoutMs, signal)
249
+ ),
233
250
  runIoWorker: <T>(work: (signal: AbortSignal) => Promise<T>): ZLinkWorkerCall<T> =>
234
251
  new DefaultZLinkWorkerCall(options.serial, (timeoutMs, signal) =>
235
- options.workerRuntime.scheduleIo(work, timeoutMs, signal))
252
+ options.workerRuntime.scheduleIo(work, timeoutMs, signal)
253
+ )
236
254
  };
237
255
  return withImmutableSpotIdentity(common);
238
256
  }
@@ -241,12 +259,14 @@ function contextNodeRid(nodeRid: RoutingId | undefined): RoutingId {
241
259
  return nodeRid ?? ('' as RoutingId);
242
260
  }
243
261
 
244
- function withImmutableSpotIdentity<T extends {
245
- readonly meshName: string;
246
- readonly spotId: SpotId;
247
- readonly objectGeneration: number;
248
- readonly nodeRid: RoutingId;
249
- }>(context: T): T {
262
+ function withImmutableSpotIdentity<
263
+ T extends {
264
+ readonly meshName: string;
265
+ readonly spotId: SpotId;
266
+ readonly objectGeneration: number;
267
+ readonly nodeRid: RoutingId;
268
+ }
269
+ >(context: T): T {
250
270
  for (const key of ['meshName', 'spotId', 'objectGeneration', 'nodeRid'] as const) {
251
271
  Object.defineProperty(context, key, {
252
272
  configurable: false,
@@ -26,9 +26,7 @@ import type {
26
26
  import type { Message } from '../../contracts/Common/Message';
27
27
  import { throwIfAborted } from '../abort';
28
28
  import { routingIdsEqual } from '../routing-id';
29
- import {
30
- ZLinkSpotActorHandlerRegistryRuntime
31
- } from '../actors';
29
+ import { ZLinkSpotActorHandlerRegistryRuntime } from '../actors';
32
30
  import type {
33
31
  ZLinkBackendActorRecvInfo,
34
32
  ZLinkBackendReceived,
@@ -52,18 +50,12 @@ import {
52
50
  applyEntrySpotHandlerRegistrations,
53
51
  DefaultZLinkSpotHandlerRegistry
54
52
  } from './spot-handler-registry';
55
- import {
56
- DefaultZLinkSpotOutbound,
57
- type ZLinkSpotRoutedTransport
58
- } from './spot-outbound';
53
+ import { DefaultZLinkSpotOutbound, type ZLinkSpotRoutedTransport } from './spot-outbound';
59
54
  import { createProviderInstance } from './spot-provider';
60
55
  import { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
61
56
  import { ZLinkSpotSerialExecutor } from './spot-serial-executor';
62
57
  import { invokeSpotClosing } from './spot-closing';
63
- import {
64
- addEntrySpotTimerRegistrations,
65
- ZLinkSpotTimerRegistry
66
- } from './spot-timer';
58
+ import { addEntrySpotTimerRegistrations, ZLinkSpotTimerRegistry } from './spot-timer';
67
59
  import { createEntrySpotContext } from './spot-context';
68
60
  import { ZLinkRoutedSpotPacketDispatch } from './spot-routed-spot-packet-dispatch';
69
61
  import type { RequestResult } from '../backend/runtime-values';
@@ -166,14 +158,11 @@ export class ZLinkEntrySpotActivation {
166
158
  providerResolver: options.providerResolver,
167
159
  runtimeEventPublisher: options.runtimeEventPublisher,
168
160
  workerRuntime: this.workerRuntime,
169
- destroyActor: options.entryActorRuntime === undefined
170
- ? undefined
171
- : (nodeRid, actor, signal) => options.entryActorRuntime!.destroyActor(
172
- options.nativeNode,
173
- nodeRid,
174
- actor,
175
- signal
176
- )
161
+ destroyActor:
162
+ options.entryActorRuntime === undefined
163
+ ? undefined
164
+ : (nodeRid, actor, signal) =>
165
+ options.entryActorRuntime!.destroyActor(options.nativeNode, nodeRid, actor, signal)
177
166
  });
178
167
  this.entrySpot = undefined as unknown as ZLinkEntrySpot;
179
168
  applyEntrySpotHandlerRegistrations(this.handlers, options.entrySpotType, {
@@ -183,14 +172,15 @@ export class ZLinkEntrySpotActivation {
183
172
  subscriptionHandlers: options.subscriptionHandlers
184
173
  });
185
174
  this.packetDispatch = new ZLinkRoutedSpotPacketDispatch({
186
- resolveActivation: (spotId) => spotId === this.spotId
187
- ? {
188
- spotId: this.spotId,
189
- spot: this.entrySpot as unknown as ZLinkSpot,
190
- serial: this.serial,
191
- handlers: this.handlers
192
- }
193
- : undefined,
175
+ resolveActivation: (spotId) =>
176
+ spotId === this.spotId
177
+ ? {
178
+ spotId: this.spotId,
179
+ spot: this.entrySpot as unknown as ZLinkSpot,
180
+ serial: this.serial,
181
+ handlers: this.handlers
182
+ }
183
+ : undefined,
194
184
  providerResolver: options.providerResolver,
195
185
  dispatchErrors: options.dispatchErrors
196
186
  });
@@ -210,8 +200,12 @@ export class ZLinkEntrySpotActivation {
210
200
  onRemoteBoundSessionTarget: (targetActorId, target) =>
211
201
  this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(targetActorId, target),
212
202
  onDisconnectActor: (actor) => this.notifyDisconnectActor(actor),
213
- actorResponseSender: this.options.boundSessionRuntime?.sendActorResponse.bind(this.options.boundSessionRuntime),
214
- actorErrorSender: this.options.boundSessionRuntime?.sendActorError.bind(this.options.boundSessionRuntime),
203
+ actorResponseSender: this.options.boundSessionRuntime?.sendActorResponse.bind(
204
+ this.options.boundSessionRuntime
205
+ ),
206
+ actorErrorSender: this.options.boundSessionRuntime?.sendActorError.bind(
207
+ this.options.boundSessionRuntime
208
+ ),
215
209
  providerResolver: this.options.providerResolver,
216
210
  messageSerializers: this.options.messageSerializers,
217
211
  dispatchErrors: this.options.dispatchErrors
@@ -271,7 +265,11 @@ export class ZLinkEntrySpotActivation {
271
265
  }
272
266
 
273
267
  async create(): Promise<void> {
274
- const entrySpot = await createProviderInstance(this.options.entrySpotType, this.options.providerResolver, this.context);
268
+ const entrySpot = await createProviderInstance(
269
+ this.options.entrySpotType,
270
+ this.options.providerResolver,
271
+ this.context
272
+ );
275
273
  this.entrySpot = entrySpot;
276
274
  Object.defineProperty(this.entrySpot, 'context', {
277
275
  configurable: true,
@@ -285,9 +283,9 @@ export class ZLinkEntrySpotActivation {
285
283
  this.serial,
286
284
  { timerHandlers: this.options.timerHandlers },
287
285
  {
288
- providerResolver: this.options.providerResolver,
289
- spotNodeName: this.options.spotNodeName,
290
- spotId: this.context.spotId,
286
+ providerResolver: this.options.providerResolver,
287
+ spotNodeName: this.options.spotNodeName,
288
+ spotId: this.context.spotId,
291
289
  runtimeEventPublisher: this.options.runtimeEventPublisher
292
290
  }
293
291
  );
@@ -316,11 +314,15 @@ export class ZLinkEntrySpotActivation {
316
314
  }
317
315
  };
318
316
  if (this.initialized) {
319
- await cleanup(() => this.serial.execute(() => invokeSpotClosing(
320
- this.entrySpot.onClosing?.bind(this.entrySpot),
321
- ZLinkSpotCloseReason.HostShutdown,
322
- deadline
323
- )));
317
+ await cleanup(() =>
318
+ this.serial.execute(() =>
319
+ invokeSpotClosing(
320
+ this.entrySpot.onClosing?.bind(this.entrySpot),
321
+ ZLinkSpotCloseReason.HostShutdown,
322
+ deadline
323
+ )
324
+ )
325
+ );
324
326
  }
325
327
  await cleanup(() => this.actorDispatch?.dispose());
326
328
  await cleanup(() => this.timers.dispose());
@@ -340,9 +342,9 @@ export class ZLinkEntrySpotActivation {
340
342
  signal?: AbortSignal
341
343
  ): Promise<ZLinkActorCreateResponse> {
342
344
  throwIfAborted(signal);
343
- return this.serial.execute(async () =>
344
- await this.entrySpot.onCreateActor?.(actor, createRequest)
345
- ?? { accepted: true });
345
+ return this.serial.execute(
346
+ async () => (await this.entrySpot.onCreateActor?.(actor, createRequest)) ?? { accepted: true }
347
+ );
346
348
  }
347
349
 
348
350
  notifyJoinActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void> {
@@ -387,10 +389,13 @@ export class ZLinkEntrySpotActivation {
387
389
  resolveActor: (actorId) => this.options.entryActorRuntime?.resolveActor(actorId),
388
390
  getTarget: () => this.entrySpot,
389
391
  defaultAccept: true,
390
- transfer: this.options.actorTransferRuntime === undefined ? { kind: 'disabled' } : {
391
- kind: 'enabled',
392
- runtime: this.options.actorTransferRuntime
393
- },
392
+ transfer:
393
+ this.options.actorTransferRuntime === undefined
394
+ ? { kind: 'disabled' }
395
+ : {
396
+ kind: 'enabled',
397
+ runtime: this.options.actorTransferRuntime
398
+ },
394
399
  commitNativeActor: (actor) => this.commitEntryActorTransaction(actor),
395
400
  commitTransferredActor: async (actor, backlog) => {
396
401
  await this.commitEntryActorTransaction(actor);
@@ -403,8 +408,12 @@ export class ZLinkEntrySpotActivation {
403
408
  if (routingIdsEqual(sourceNodeRid, this.options.nativeNode.routingId)) {
404
409
  return;
405
410
  }
406
- const target = declaredTarget
407
- ?? this.options.boundSessionRuntime?.resolveRemoteBoundSessionTarget(sourceNodeRid, sourceSessionRid);
411
+ const target =
412
+ declaredTarget ??
413
+ this.options.boundSessionRuntime?.resolveRemoteBoundSessionTarget(
414
+ sourceNodeRid,
415
+ sourceSessionRid
416
+ );
408
417
  if (target !== undefined) {
409
418
  this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(actor.actorId, {
410
419
  ...target,
@@ -428,8 +437,8 @@ export class ZLinkEntrySpotActivation {
428
437
  }
429
438
 
430
439
  private async commitEntryActorTransaction(actor: ZLinkActor): Promise<void> {
431
- const notifyJoined = () => this.serial.execute(() =>
432
- notifyEntryActorJoined(this.entrySpot, actor));
440
+ const notifyJoined = () =>
441
+ this.serial.execute(() => notifyEntryActorJoined(this.entrySpot, actor));
433
442
  const runtime = this.options.entryActorRuntime;
434
443
  if (runtime === undefined) {
435
444
  await notifyJoined();
@@ -445,8 +454,7 @@ export class ZLinkEntrySpotActivation {
445
454
  _membershipEpoch?: bigint
446
455
  ): Promise<void> {
447
456
  throwIfAborted(signal);
448
- return this.serial.execute(() =>
449
- this.entrySpot.onLeaveActor(actor));
457
+ return this.serial.execute(() => this.entrySpot.onLeaveActor(actor));
450
458
  }
451
459
 
452
460
  notifyDisconnectActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void> {
@@ -471,7 +479,12 @@ export class ZLinkEntrySpotActivation {
471
479
  fallbackActorRef,
472
480
  undefined,
473
481
  messageFollowOrigin,
474
- (replayedParts, replayReturnResponse, replayRemoteBoundSessionTarget, replayFallbackActorRef) =>
482
+ (
483
+ replayedParts,
484
+ replayReturnResponse,
485
+ replayRemoteBoundSessionTarget,
486
+ replayFallbackActorRef
487
+ ) =>
475
488
  this.spotSerialExecutor.executeActor(actorId, () =>
476
489
  this.dispatchActorPacketInsideMailbox({
477
490
  actorId,
@@ -479,11 +492,13 @@ export class ZLinkEntrySpotActivation {
479
492
  returnResponse: replayReturnResponse,
480
493
  remoteBoundSessionTarget: replayRemoteBoundSessionTarget,
481
494
  fallbackActorRef: replayFallbackActorRef
482
- }))
495
+ })
496
+ )
483
497
  );
484
498
  if (handoff !== undefined) return await handoff;
485
499
  return this.spotSerialExecutor.executeActor(actorId, () =>
486
- this.dispatchActorPacketInsideMailbox(delivery));
500
+ this.dispatchActorPacketInsideMailbox(delivery)
501
+ );
487
502
  }
488
503
 
489
504
  private async replayActorBacklog(
@@ -500,8 +515,10 @@ export class ZLinkEntrySpotActivation {
500
515
  returnResponse,
501
516
  remoteBoundSessionTarget,
502
517
  fallbackActorRef
503
- })),
504
- (index) => this.options.runtimeEventPublisher?.publish({
518
+ })
519
+ ),
520
+ (index) =>
521
+ this.options.runtimeEventPublisher?.publish({
505
522
  sourceName: 'zlink.framework.actor-handoff',
506
523
  timestamp: new Date(),
507
524
  marker: 'backlog_enqueued',
@@ -527,12 +544,12 @@ export class ZLinkEntrySpotActivation {
527
544
  }
528
545
 
529
546
  function notifyEntryActorJoined(entrySpot: ZLinkEntrySpot, actor: ZLinkActor): Promise<void> {
530
- const callback = (entrySpot as unknown as {
531
- readonly onJoinedActor?: (joinedActor: ZLinkActor) => Promise<void>;
532
- }).onJoinedActor;
533
- return callback === undefined
534
- ? Promise.resolve()
535
- : callback.call(entrySpot, actor);
547
+ const callback = (
548
+ entrySpot as unknown as {
549
+ readonly onJoinedActor?: (joinedActor: ZLinkActor) => Promise<void>;
550
+ }
551
+ ).onJoinedActor;
552
+ return callback === undefined ? Promise.resolve() : callback.call(entrySpot, actor);
536
553
  }
537
554
 
538
555
  function toContextGeneration(generation: bigint): number {
@@ -545,7 +562,9 @@ function toContextGeneration(generation: bigint): number {
545
562
  }
546
563
 
547
564
  function entrySpotGeneration(spot: ZLinkBackendSpot): bigint {
548
- return spot.lifecycleGeneration
549
- ?? (spot as Partial<ZLinkBackendSpot>).status?.().lifecycleGeneration
550
- ?? 0n;
565
+ return (
566
+ spot.lifecycleGeneration ??
567
+ (spot as Partial<ZLinkBackendSpot>).status?.().lifecycleGeneration ??
568
+ 0n
569
+ );
551
570
  }
@@ -1,8 +1,4 @@
1
- import type {
2
- RoutingId,
3
- ZLinkFrameworkRuntimeState,
4
- ZLinkSpotKind
5
- } from '../../contracts';
1
+ import type { RoutingId, ZLinkFrameworkRuntimeState, ZLinkSpotKind } from '../../contracts';
6
2
 
7
3
  declare const spotHandleBrand: unique symbol;
8
4
 
@@ -64,9 +60,12 @@ export function createSpotHandle(
64
60
  meshName: initial?.meshName ?? '',
65
61
  spotId
66
62
  }) as SpotHandle;
67
- handleStates.set(handle, typeof initialOrRefresh === 'function'
68
- ? { current: undefined, refresh: initialOrRefresh }
69
- : { current: initialOrRefresh, refresh: refresh! });
63
+ handleStates.set(
64
+ handle,
65
+ typeof initialOrRefresh === 'function'
66
+ ? { current: undefined, refresh: initialOrRefresh }
67
+ : { current: initialOrRefresh, refresh: refresh! }
68
+ );
70
69
  return handle;
71
70
  }
72
71
 
@@ -75,7 +74,7 @@ export async function resolveSpotHandle(
75
74
  signal?: AbortSignal
76
75
  ): Promise<ResolvedSpotHandle | undefined> {
77
76
  const state = requireHandleState(handle);
78
- return state.current ?? await refreshSpotHandle(handle, signal);
77
+ return state.current ?? (await refreshSpotHandle(handle, signal));
79
78
  }
80
79
 
81
80
  export async function refreshSpotHandle(
@@ -83,12 +82,15 @@ export async function refreshSpotHandle(
83
82
  signal?: AbortSignal
84
83
  ): Promise<ResolvedSpotHandle | undefined> {
85
84
  const state = requireHandleState(handle);
86
- state.refreshing ??= state.refresh(signal).then((resolved) => {
87
- state.current = resolved;
88
- return resolved;
89
- }).finally(() => {
90
- state.refreshing = undefined;
91
- });
85
+ state.refreshing ??= state
86
+ .refresh(signal)
87
+ .then((resolved) => {
88
+ state.current = resolved;
89
+ return resolved;
90
+ })
91
+ .finally(() => {
92
+ state.refreshing = undefined;
93
+ });
92
94
  return await state.refreshing;
93
95
  }
94
96