@zlink-systems/framework 0.21.0 → 0.22.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 (487) 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/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -1,9 +1,8 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
2
1
  import {
3
- ActorRef,
4
- ZLinkActor,
5
- ZLinkFrameworkException
6
- } from '../../contracts';
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
5
+ import { ActorRef, ZLinkActor, ZLinkFrameworkException } from '../../contracts';
7
6
  import { throwIfAborted } from '../abort';
8
7
  import { routingIdsEqual } from '../routing-id';
9
8
  import type { ZLinkRuntimeMetrics } from '../diagnostics';
@@ -12,13 +11,8 @@ import {
12
11
  type ZLinkActorSessionAuthorityFence
13
12
  } from './actor-session-binding-registry';
14
13
  import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
15
- import {
16
- ZLinkManagedStream
17
- } from './managed-stream';
18
- import {
19
- DefaultZLinkSessionActor,
20
- DefaultZLinkSessionContext
21
- } from './session-context';
14
+ import { ZLinkManagedStream } from './managed-stream';
15
+ import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
22
16
 
23
17
  export interface ZLinkSessionActorCoordinatorOptions {
24
18
  readonly actorBindTimeoutMs?: number;
@@ -27,9 +21,11 @@ export interface ZLinkSessionActorCoordinatorOptions {
27
21
  actorId: string,
28
22
  signal?: AbortSignal
29
23
  ) => Promise<ZLinkActorSessionAuthorityFence | undefined>;
30
- readonly nativeActorNodeProvider?: () => {
31
- status(): { readonly routingId: unknown };
32
- } | undefined;
24
+ readonly nativeActorNodeProvider?: () =>
25
+ | {
26
+ status(): { readonly routingId: unknown };
27
+ }
28
+ | undefined;
33
29
  readonly nativeActorMeshNameProvider?: () => string | undefined;
34
30
  readonly confirmRemoteActorSessionBinding?: (
35
31
  actor: ActorRef,
@@ -37,15 +33,20 @@ export interface ZLinkSessionActorCoordinatorOptions {
37
33
  signal?: AbortSignal,
38
34
  options?: { readonly waitForAcknowledgement?: boolean }
39
35
  ) => Promise<void>;
40
- readonly errorSink?: () => {
41
- reportRuntimeTaskException(taskName: string, error: unknown): void;
42
- } | undefined;
36
+ readonly errorSink?: () =>
37
+ | {
38
+ reportRuntimeTaskException(taskName: string, error: unknown): void;
39
+ }
40
+ | undefined;
43
41
  readonly metrics?: ZLinkRuntimeMetrics;
44
42
  }
45
43
 
46
44
  export class ZLinkSessionActorCoordinator {
47
45
  constructor(
48
- private readonly routes: ZLinkActorSessionBindingRegistry<DefaultZLinkSessionContext, DefaultZLinkSessionActor>,
46
+ private readonly routes: ZLinkActorSessionBindingRegistry<
47
+ DefaultZLinkSessionContext,
48
+ DefaultZLinkSessionActor
49
+ >,
49
50
  private readonly sessionActorRuntime: ConstructorParameters<typeof DefaultZLinkSessionActor>[0],
50
51
  private readonly options: ZLinkSessionActorCoordinatorOptions = {},
51
52
  private readonly lifecycle = new ZLinkActorSessionLifecycleCoordinator()
@@ -59,7 +60,9 @@ export class ZLinkSessionActorCoordinator {
59
60
  const actorRef = isActorRefLike(actorOrRef)
60
61
  ? normalizeActorRef(actorOrRef, this.options.nativeActorMeshNameProvider?.())
61
62
  : this.resolveActorRef(actorOrRef as ZLinkActor);
62
- return await this.lifecycle.run(actorRef.actorId, async () => this.replaceBinding(context, actorRef, signal));
63
+ return await this.lifecycle.run(actorRef.actorId, async () =>
64
+ this.replaceBinding(context, actorRef, signal)
65
+ );
63
66
  }
64
67
 
65
68
  private async replaceBinding(
@@ -101,13 +104,12 @@ export class ZLinkSessionActorCoordinator {
101
104
 
102
105
  const previous = await this.routes.route(actorRef.actorId);
103
106
  const sameIncarnation =
104
- previous !== undefined
105
- && previous.context === context
106
- && previous.actor.ref.actorId === actorRef.actorId
107
- && BigInt(previous.actor.ref.objectGeneration) === BigInt(actorRef.objectGeneration);
107
+ previous !== undefined &&
108
+ previous.context === context &&
109
+ previous.actor.ref.actorId === actorRef.actorId &&
110
+ BigInt(previous.actor.ref.objectGeneration) === BigInt(actorRef.objectGeneration);
108
111
  const samePhysicalBinding = sameIncarnation && sameActorRef(previous!.actor.ref, actorRef);
109
- const reuseActor =
110
- sameIncarnation ? previous!.actor : undefined;
112
+ const reuseActor = sameIncarnation ? previous!.actor : undefined;
111
113
  if (reuseActor !== undefined) {
112
114
  // A repeated bind from the same physical session is idempotent. A route
113
115
  // refresh for the same actor incarnation still submits the native bind,
@@ -127,8 +129,9 @@ export class ZLinkSessionActorCoordinator {
127
129
  : undefined,
128
130
  previous?.actor.ref
129
131
  );
130
- const sessionActor = reuseActor
131
- ?? new DefaultZLinkSessionActor(this.sessionActorRuntime, boundActorRef, bindingToken);
132
+ const sessionActor =
133
+ reuseActor ??
134
+ new DefaultZLinkSessionActor(this.sessionActorRuntime, boundActorRef, bindingToken);
132
135
  const sessionIdentity = String(this.actorBindingRoutingId(context));
133
136
  sessionActor.updateRef(boundActorRef);
134
137
  if (previous === undefined) {
@@ -160,9 +163,12 @@ export class ZLinkSessionActorCoordinator {
160
163
  sessionIdentity
161
164
  );
162
165
  }
163
- if (confirmRemoteSessionBinding !== false && this.options.confirmRemoteActorSessionBinding !== undefined) {
164
- const waitForAcknowledgement = previous === undefined
165
- && confirmRemoteSessionBinding !== 'send';
166
+ if (
167
+ confirmRemoteSessionBinding !== false &&
168
+ this.options.confirmRemoteActorSessionBinding !== undefined
169
+ ) {
170
+ const waitForAcknowledgement =
171
+ previous === undefined && confirmRemoteSessionBinding !== 'send';
166
172
  const confirmation = this.options.confirmRemoteActorSessionBinding(
167
173
  boundActorRef,
168
174
  this.actorBindingRoutingId(context),
@@ -174,10 +180,9 @@ export class ZLinkSessionActorCoordinator {
174
180
  // its failure is bounded diagnostics rather than a rollback. The
175
181
  // relay retries independently and reports the typed failure through
176
182
  // the runtime error sink instead of silently discarding it.
177
- this.options.errorSink?.()?.reportRuntimeTaskException(
178
- 'remote session binding confirmation',
179
- error
180
- );
183
+ this.options
184
+ .errorSink?.()
185
+ ?.reportRuntimeTaskException('remote session binding confirmation', error);
181
186
  };
182
187
  if (waitForAcknowledgement) {
183
188
  try {
@@ -227,11 +232,11 @@ export class ZLinkSessionActorCoordinator {
227
232
  readonly ownerLeaseGeneration?: bigint;
228
233
  readonly ownerNodeGeneration?: bigint;
229
234
  };
230
- if (internal.ownershipGeneration !== undefined
231
- && internal.ownerLeaseGeneration !== undefined) {
232
- const resolved = internal.ownerNodeGeneration === undefined
233
- ? await this.options.actorAuthorityFenceResolver?.(actorRef.actorId, signal)
234
- : undefined;
235
+ if (internal.ownershipGeneration !== undefined && internal.ownerLeaseGeneration !== undefined) {
236
+ const resolved =
237
+ internal.ownerNodeGeneration === undefined
238
+ ? await this.options.actorAuthorityFenceResolver?.(actorRef.actorId, signal)
239
+ : undefined;
235
240
  return {
236
241
  authorityOwnerGeneration: internal.ownershipGeneration,
237
242
  ownerLeaseGeneration: internal.ownerLeaseGeneration,
@@ -331,11 +336,10 @@ export class ZLinkSessionActorCoordinator {
331
336
  requireSameIncarnation(route.actor.ref, normalizedActorRef);
332
337
  if (routingIdsEqual(route.actor.ref.nodeRid, normalizedActorRef.nodeRid)) {
333
338
  const authorityFence = await this.resolveAuthorityFence(normalizedActorRef, signal);
334
- if (options.releaseSeal !== undefined
335
- && !await this.routes.validateSeal(
336
- normalizedActorRef.actorId,
337
- options.releaseSeal.sealId
338
- )) {
339
+ if (
340
+ options.releaseSeal !== undefined &&
341
+ !(await this.routes.validateSeal(normalizedActorRef.actorId, options.releaseSeal.sealId))
342
+ ) {
339
343
  throw createInternalFrameworkException(
340
344
  ZLinkFrameworkInternalErrorKind.ActorLocationStale,
341
345
  `Actor '${normalizedActorRef.actorId}' route switch did not match its relocation seal.`,
@@ -346,11 +350,10 @@ export class ZLinkSessionActorCoordinator {
346
350
  if (authorityFence !== undefined) {
347
351
  await this.routes.updateAuthorityFence(normalizedActorRef.actorId, authorityFence);
348
352
  }
349
- if (options.releaseSeal !== undefined
350
- && !await this.routes.abortSeal(
351
- normalizedActorRef.actorId,
352
- options.releaseSeal.sealId
353
- )) {
353
+ if (
354
+ options.releaseSeal !== undefined &&
355
+ !(await this.routes.abortSeal(normalizedActorRef.actorId, options.releaseSeal.sealId))
356
+ ) {
354
357
  throw createInternalFrameworkException(
355
358
  ZLinkFrameworkInternalErrorKind.ActorLocationStale,
356
359
  `Actor '${normalizedActorRef.actorId}' route switch lost its relocation seal.`,
@@ -379,10 +382,10 @@ export class ZLinkSessionActorCoordinator {
379
382
  throwIfAborted(signal);
380
383
  const route = await this.routes.route(actorRef.actorId);
381
384
  if (
382
- route === undefined
383
- || !sameActorRef(route.actor.ref, actorRef)
384
- || !routingIdsEqual(route.sessionIdentity, sessionRid)
385
- || bindingGenerationOf(route.actor.ref) !== bindingGeneration
385
+ route === undefined ||
386
+ !sameActorRef(route.actor.ref, actorRef) ||
387
+ !routingIdsEqual(route.sessionIdentity, sessionRid) ||
388
+ bindingGenerationOf(route.actor.ref) !== bindingGeneration
386
389
  ) {
387
390
  return false;
388
391
  }
@@ -394,26 +397,29 @@ export class ZLinkSessionActorCoordinator {
394
397
  });
395
398
  }
396
399
 
397
- async authorityFence(actorId: string): Promise<{
398
- readonly authorityOwnerGeneration: bigint;
399
- readonly ownerLeaseGeneration: bigint;
400
- } | undefined> {
400
+ async authorityFence(actorId: string): Promise<
401
+ | {
402
+ readonly authorityOwnerGeneration: bigint;
403
+ readonly ownerLeaseGeneration: bigint;
404
+ }
405
+ | undefined
406
+ > {
401
407
  return (await this.routes.route(actorId))?.authorityFence;
402
408
  }
403
409
 
404
- async sessionRouteFence(actorId: string): Promise<{
405
- readonly actor: ActorRef;
406
- readonly sessionRid: ActorRef['nodeRid'];
407
- readonly bindingGeneration: bigint;
408
- } | undefined> {
410
+ async sessionRouteFence(actorId: string): Promise<
411
+ | {
412
+ readonly actor: ActorRef;
413
+ readonly sessionRid: ActorRef['nodeRid'];
414
+ readonly bindingGeneration: bigint;
415
+ }
416
+ | undefined
417
+ > {
409
418
  const route = await this.routes.route(actorId);
410
419
  const sessionRid = route?.sessionIdentity;
411
- const actor = route?.actor.ref as (ActorRef & { readonly bindingGeneration?: bigint }) | undefined;
412
- if (
413
- route === undefined
414
- || sessionRid === undefined
415
- || actor?.bindingGeneration === undefined
416
- ) {
420
+ const actor = route?.actor.ref as
421
+ (ActorRef & { readonly bindingGeneration?: bigint }) | undefined;
422
+ if (route === undefined || sessionRid === undefined || actor?.bindingGeneration === undefined) {
417
423
  return undefined;
418
424
  }
419
425
  return {
@@ -468,9 +474,8 @@ export class ZLinkSessionActorCoordinator {
468
474
  private actorBindingRoutingId(context: DefaultZLinkSessionContext): ActorRef['nodeRid'] {
469
475
  return context.stream instanceof ZLinkManagedStream
470
476
  ? context.stream.actorBindingRoutingId
471
- : context.routingId as ActorRef['nodeRid'];
477
+ : (context.routingId as ActorRef['nodeRid']);
472
478
  }
473
-
474
479
  }
475
480
 
476
481
  function withBindingGeneration(
@@ -480,9 +485,8 @@ function withBindingGeneration(
480
485
  ): ActorRef {
481
486
  const input = actorRef as ActorRef & { readonly bindingGeneration?: bigint };
482
487
  const previous = previousRef as (ActorRef & { readonly bindingGeneration?: bigint }) | undefined;
483
- const bindingGeneration = nativeBindingGeneration
484
- ?? input.bindingGeneration
485
- ?? previous?.bindingGeneration;
488
+ const bindingGeneration =
489
+ nativeBindingGeneration ?? input.bindingGeneration ?? previous?.bindingGeneration;
486
490
  if (bindingGeneration === undefined) {
487
491
  return actorRef;
488
492
  }
@@ -518,10 +522,12 @@ function preserveInternalActorRefField(
518
522
  source: ActorRef,
519
523
  field: 'ownershipGeneration' | 'ownerLeaseGeneration'
520
524
  ): void {
521
- const value = (source as ActorRef & {
522
- readonly ownershipGeneration?: bigint;
523
- readonly ownerLeaseGeneration?: bigint;
524
- })[field];
525
+ const value = (
526
+ source as ActorRef & {
527
+ readonly ownershipGeneration?: bigint;
528
+ readonly ownerLeaseGeneration?: bigint;
529
+ }
530
+ )[field];
525
531
  if (value === undefined) return;
526
532
  Object.defineProperty(target, field, {
527
533
  configurable: false,
@@ -540,10 +546,10 @@ function isActorRefLike(
540
546
  value: ZLinkActor | ActorRef | CompatibleActorRef
541
547
  ): value is CompatibleActorRef {
542
548
  return (
543
- typeof value === 'object'
544
- && 'nodeRid' in value
545
- && 'actorId' in value
546
- && ('objectGeneration' in value || 'generation' in value)
549
+ typeof value === 'object' &&
550
+ 'nodeRid' in value &&
551
+ 'actorId' in value &&
552
+ ('objectGeneration' in value || 'generation' in value)
547
553
  );
548
554
  }
549
555
 
@@ -584,22 +590,24 @@ function createBindingToken(): string {
584
590
  }
585
591
 
586
592
  function sameActorRef(left: ActorRef, right: ActorRef): boolean {
587
- return routingIdsEqual(left.nodeRid, right.nodeRid)
588
- && left.actorId === right.actorId
589
- && BigInt(left.objectGeneration) === BigInt(right.objectGeneration);
593
+ return (
594
+ routingIdsEqual(left.nodeRid, right.nodeRid) &&
595
+ left.actorId === right.actorId &&
596
+ BigInt(left.objectGeneration) === BigInt(right.objectGeneration)
597
+ );
590
598
  }
591
599
 
592
600
  function requireSameIncarnation(current: ActorRef, updated: ActorRef): void {
593
601
  if (
594
- current.actorId === updated.actorId
595
- && BigInt(current.objectGeneration) === BigInt(updated.objectGeneration)
602
+ current.actorId === updated.actorId &&
603
+ BigInt(current.objectGeneration) === BigInt(updated.objectGeneration)
596
604
  ) {
597
605
  return;
598
606
  }
599
607
  throw createInternalFrameworkException(
600
608
  ZLinkFrameworkInternalErrorKind.ActorLocationStale,
601
- `Actor '${updated.actorId}' route update cannot replace object generation `
602
- + `${String(current.objectGeneration)} with ${String(updated.objectGeneration)}.`,
609
+ `Actor '${updated.actorId}' route update cannot replace object generation ` +
610
+ `${String(current.objectGeneration)} with ${String(updated.objectGeneration)}.`,
603
611
  true
604
612
  );
605
613
  }
@@ -5,9 +5,7 @@ import type {
5
5
  ZLinkSessionSendCall
6
6
  } from '../../contracts';
7
7
  import type { ZLinkSubmitResult } from '../messaging/submission-result';
8
- import {
9
- requireOneWayCompletion
10
- } from '../messaging/submission-result';
8
+ import { requireOneWayCompletion } from '../messaging/submission-result';
11
9
  import type { Message } from '../../contracts/Common/Message';
12
10
  import { throwIfAborted } from '../abort';
13
11
  import { ZLinkConfigurationException } from '../configuration';
@@ -160,11 +158,7 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
160
158
  this.message
161
159
  );
162
160
  try {
163
- const result = await this.context.stream.submitRaw(
164
- message,
165
- signal,
166
- this.selectedTimeoutMs
167
- );
161
+ const result = await this.context.stream.submitRaw(message, signal, this.selectedTimeoutMs);
168
162
  requireOneWayCompletion(result, 'STREAM session send');
169
163
  this.context.traceFrameWritten?.(ZLinkStreamMessageKind.Send, packetName, undefined);
170
164
  } finally {
@@ -36,10 +36,7 @@ import {
36
36
  DefaultZLinkSessionReplyCall,
37
37
  DefaultZLinkSessionSendCall
38
38
  } from './session-calls';
39
- import {
40
- ZLinkSessionRequestTracker,
41
- type ZLinkPendingSessionRequest
42
- } from './session-requests';
39
+ import { ZLinkSessionRequestTracker, type ZLinkPendingSessionRequest } from './session-requests';
43
40
  import { ZLinkSessionLocalActorBindings } from './session-local-actors';
44
41
  import type { ServiceActorRef } from '../foundation/service-stateful-registry';
45
42
  import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
@@ -126,10 +123,13 @@ export class DefaultZLinkSessionContext implements ZLinkSessionContext {
126
123
  correlationId: string | undefined
127
124
  ) => void;
128
125
  private closingForActorReplacement = false;
129
- private readonly retiredActorBindings = new Map<string, {
130
- readonly actorGeneration: bigint;
131
- readonly retiredSession: ServiceRetiredBoundSessionRouteFence;
132
- }>();
126
+ private readonly retiredActorBindings = new Map<
127
+ string,
128
+ {
129
+ readonly actorGeneration: bigint;
130
+ readonly retiredSession: ServiceRetiredBoundSessionRouteFence;
131
+ }
132
+ >();
133
133
 
134
134
  constructor(
135
135
  private readonly runtime: ZLinkSessionContextRuntime,
@@ -173,11 +173,13 @@ export class DefaultZLinkSessionContext implements ZLinkSessionContext {
173
173
  }
174
174
 
175
175
  /** Wired by the owning session runtime; see ZLinkSessionCallContext.traceFrameWritten. */
176
- setFrameWrittenObserver(observer: (
177
- kind: ZLinkStreamMessageKind,
178
- packetName: string,
179
- correlationId: string | undefined
180
- ) => void): void {
176
+ setFrameWrittenObserver(
177
+ observer: (
178
+ kind: ZLinkStreamMessageKind,
179
+ packetName: string,
180
+ correlationId: string | undefined
181
+ ) => void
182
+ ): void {
181
183
  this.frameWrittenObserver = observer;
182
184
  }
183
185
 
@@ -199,9 +201,9 @@ export class DefaultZLinkSessionContext implements ZLinkSessionContext {
199
201
  ): boolean {
200
202
  const previous = this.retiredActorBindings.get(actor.actorId);
201
203
  if (
202
- previous !== undefined
203
- && previous.actorGeneration === actor.generation
204
- && sameRetiredSession(previous.retiredSession, retiredSession)
204
+ previous !== undefined &&
205
+ previous.actorGeneration === actor.generation &&
206
+ sameRetiredSession(previous.retiredSession, retiredSession)
205
207
  ) {
206
208
  return false;
207
209
  }
@@ -219,17 +221,19 @@ export class DefaultZLinkSessionContext implements ZLinkSessionContext {
219
221
  ): boolean {
220
222
  const expected = this.retiredActorBindings.get(actor.actorId);
221
223
  if (
222
- expected === undefined
223
- || expected.actorGeneration !== actor.generation
224
- || !sameRetiredSession(expected.retiredSession, retiredSession)
224
+ expected === undefined ||
225
+ expected.actorGeneration !== actor.generation ||
226
+ !sameRetiredSession(expected.retiredSession, retiredSession)
225
227
  ) {
226
228
  return false;
227
229
  }
228
230
  const current = this.findBoundActor(actor.actorId);
229
231
  if (current === undefined) return true;
230
232
  const currentRef = current.ref as ActorRef & { readonly bindingGeneration?: bigint };
231
- return BigInt(currentRef.objectGeneration) === actor.generation
232
- && currentRef.bindingGeneration === retiredSession.retiredBindingGeneration;
233
+ return (
234
+ BigInt(currentRef.objectGeneration) === actor.generation &&
235
+ currentRef.bindingGeneration === retiredSession.retiredBindingGeneration
236
+ );
233
237
  }
234
238
 
235
239
  createTextMessage(payload: string): Message {
@@ -372,13 +376,14 @@ class DefaultZLinkSessionHandlerRegistry implements ZLinkSessionHandlerRegistry
372
376
  `Session packet '${packetName}' is already registered.`
373
377
  );
374
378
  }
375
- if (typeof (handlerType as { prototype?: { handle?: unknown } }).prototype?.handle !== 'function') {
379
+ if (
380
+ typeof (handlerType as { prototype?: { handle?: unknown } }).prototype?.handle !== 'function'
381
+ ) {
376
382
  throw new TypeError(`Session handler '${handlerType.name}' must implement handle(...).`);
377
383
  }
378
- this.handlersByPacket.set(
379
- packetName,
380
- { handlerType: handlerType as Type<ZLinkSessionPacketHandler<ZLinkSessionContext>> }
381
- );
384
+ this.handlersByPacket.set(packetName, {
385
+ handlerType: handlerType as Type<ZLinkSessionPacketHandler<ZLinkSessionContext>>
386
+ });
382
387
  return this;
383
388
  }
384
389
 
@@ -386,7 +391,10 @@ class DefaultZLinkSessionHandlerRegistry implements ZLinkSessionHandlerRegistry
386
391
  this.registrationOpen = false;
387
392
  }
388
393
 
389
- async tryHandle(dispatch: import('../../contracts').ZLinkSessionDispatchContext, payload: ZLinkMessage): Promise<boolean> {
394
+ async tryHandle(
395
+ dispatch: import('../../contracts').ZLinkSessionDispatchContext,
396
+ payload: ZLinkMessage
397
+ ): Promise<boolean> {
390
398
  const registration = this.handlersByPacket.get(dispatch.packetName);
391
399
  if (registration === undefined) {
392
400
  return false;
@@ -407,9 +415,11 @@ class DefaultZLinkSessionHandlerRegistry implements ZLinkSessionHandlerRegistry
407
415
  private async createHandler(
408
416
  handlerType: Type<ZLinkSessionPacketHandler<ZLinkSessionContext>>
409
417
  ): Promise<ZLinkSessionPacketHandler<ZLinkSessionContext>> {
410
- return this.providerResolver?.get?.(handlerType)
411
- ?? await this.providerResolver?.create?.(handlerType)
412
- ?? new handlerType();
418
+ return (
419
+ this.providerResolver?.get?.(handlerType) ??
420
+ (await this.providerResolver?.create?.(handlerType)) ??
421
+ new handlerType()
422
+ );
413
423
  }
414
424
  }
415
425
 
@@ -420,7 +430,8 @@ interface SessionHandlerRegistration {
420
430
 
421
431
  function sessionHandlerPacketName(handlerType: new (...args: never[]) => unknown): string {
422
432
  const declared = readZLinkDecoratorMetadata(handlerType)
423
- .find((metadata) => metadata.kind === 'packet')?.packetName?.trim();
433
+ .find((metadata) => metadata.kind === 'packet')
434
+ ?.packetName?.trim();
424
435
  if (declared === undefined || declared.length === 0) {
425
436
  throw new ZLinkConfigurationException(
426
437
  `Session handler '${handlerType.name}' must declare a packet name with @ZLinkPacket(...).`
@@ -489,9 +500,9 @@ export class DefaultZLinkSessionActor implements ZLinkSessionActor {
489
500
  }
490
501
  if (BigInt(ref.objectGeneration) !== BigInt(this.currentRef.objectGeneration)) {
491
502
  throw new Error(
492
- `Cannot change session actor '${this.actorId}' object generation `
493
- + `from ${String(this.currentRef.objectGeneration)} `
494
- + `to ${String(ref.objectGeneration)}.`
503
+ `Cannot change session actor '${this.actorId}' object generation ` +
504
+ `from ${String(this.currentRef.objectGeneration)} ` +
505
+ `to ${String(ref.objectGeneration)}.`
495
506
  );
496
507
  }
497
508
  this.currentRef = ref;
@@ -508,9 +519,7 @@ export class DefaultZLinkSessionActor implements ZLinkSessionActor {
508
519
  payloadOrSignal?: ZLinkMessage | AbortSignal,
509
520
  signal?: AbortSignal
510
521
  ): Promise<void> {
511
- const dispatch = isSessionDispatchContext(dispatchOrPayload)
512
- ? dispatchOrPayload
513
- : undefined;
522
+ const dispatch = isSessionDispatchContext(dispatchOrPayload) ? dispatchOrPayload : undefined;
514
523
  let payload: ZLinkMessage;
515
524
  let relaySignal: AbortSignal | undefined;
516
525
  let header: ZLinkStreamFrameHeader | undefined;
@@ -537,7 +546,9 @@ export class DefaultZLinkSessionActor implements ZLinkSessionActor {
537
546
 
538
547
  const SESSION_DISPATCH_HEADERS = new WeakMap<ZLinkSessionDispatchContext, ZLinkStreamFrameHeader>();
539
548
 
540
- export function createSessionDispatchContext(header: ZLinkStreamFrameHeader): ZLinkSessionDispatchContext {
549
+ export function createSessionDispatchContext(
550
+ header: ZLinkStreamFrameHeader
551
+ ): ZLinkSessionDispatchContext {
541
552
  const dispatch: ZLinkSessionDispatchContext = {
542
553
  packetName: header.name,
543
554
  metadata: header.metadata,
@@ -548,15 +559,20 @@ export function createSessionDispatchContext(header: ZLinkStreamFrameHeader): ZL
548
559
  }
549
560
 
550
561
  function isSessionDispatchContext(value: unknown): value is ZLinkSessionDispatchContext {
551
- return value !== null && typeof value === 'object'
552
- && typeof (value as ZLinkSessionDispatchContext).packetName === 'string'
553
- && 'canReply' in value;
562
+ return (
563
+ value !== null &&
564
+ typeof value === 'object' &&
565
+ typeof (value as ZLinkSessionDispatchContext).packetName === 'string' &&
566
+ 'canReply' in value
567
+ );
554
568
  }
555
569
 
556
570
  function sessionDispatchHeader(dispatch: ZLinkSessionDispatchContext): ZLinkStreamFrameHeader {
557
571
  const header = SESSION_DISPATCH_HEADERS.get(dispatch);
558
572
  if (header === undefined) {
559
- throw new Error('Session actor relay dispatch must be the context supplied to the active session handler.');
573
+ throw new Error(
574
+ 'Session actor relay dispatch must be the context supplied to the active session handler.'
575
+ );
560
576
  }
561
577
  return header;
562
578
  }
@@ -600,10 +616,12 @@ function sameRetiredSession(
600
616
  left: ServiceRetiredBoundSessionRouteFence,
601
617
  right: ServiceRetiredBoundSessionRouteFence
602
618
  ): boolean {
603
- return left.sessionOwnerNodeRid === right.sessionOwnerNodeRid
604
- && left.sessionOwnerNodeGeneration === right.sessionOwnerNodeGeneration
605
- && left.sessionOwnerId === right.sessionOwnerId
606
- && left.sessionOwnerLeaseGeneration === right.sessionOwnerLeaseGeneration
607
- && left.sessionRid === right.sessionRid
608
- && left.retiredBindingGeneration === right.retiredBindingGeneration;
619
+ return (
620
+ left.sessionOwnerNodeRid === right.sessionOwnerNodeRid &&
621
+ left.sessionOwnerNodeGeneration === right.sessionOwnerNodeGeneration &&
622
+ left.sessionOwnerId === right.sessionOwnerId &&
623
+ left.sessionOwnerLeaseGeneration === right.sessionOwnerLeaseGeneration &&
624
+ left.sessionRid === right.sessionRid &&
625
+ left.retiredBindingGeneration === right.retiredBindingGeneration
626
+ );
609
627
  }
@@ -1,8 +1,4 @@
1
- import type {
2
- Type,
3
- ZLinkSession,
4
- ZLinkSessionFactory
5
- } from '../../contracts';
1
+ import type { Type, ZLinkSession, ZLinkSessionFactory } from '../../contracts';
6
2
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
7
3
  import type { DefaultZLinkSessionContext } from './session-context';
8
4
 
@@ -45,6 +41,8 @@ async function createProviderInstance<T>(
45
41
  }
46
42
 
47
43
  function isSessionFactory(value: unknown): value is ZLinkSessionFactory {
48
- return typeof (value as { create?: unknown }).create === 'function'
49
- && (value as { context?: unknown }).context === undefined;
44
+ return (
45
+ typeof (value as { create?: unknown }).create === 'function' &&
46
+ (value as { context?: unknown }).context === undefined
47
+ );
50
48
  }
@@ -46,10 +46,12 @@ export class ZLinkSessionSerialExecutor {
46
46
 
47
47
  executeFinal(work: () => Promise<void>): Promise<void> {
48
48
  if (this.closed) {
49
- return Promise.reject(createInternalFrameworkException(
50
- ZLinkFrameworkInternalErrorKind.RuntimeShutdown,
51
- 'Session execution queue is closed.'
52
- ));
49
+ return Promise.reject(
50
+ createInternalFrameworkException(
51
+ ZLinkFrameworkInternalErrorKind.RuntimeShutdown,
52
+ 'Session execution queue is closed.'
53
+ )
54
+ );
53
55
  }
54
56
  const boundWork = bindApplicationJobPermit(work);
55
57
  return hasApplicationJobPermit()
@@ -69,8 +71,7 @@ export class ZLinkSessionSerialExecutor {
69
71
  const submitted = hasApplicationJobPermit()
70
72
  ? this.scheduler.submitPreAdmitted(boundWork, serialOptions)
71
73
  : this.scheduler.submit(boundWork, serialOptions);
72
- void submitted
73
- .catch(error => onRejected?.(error));
74
+ void submitted.catch((error) => onRejected?.(error));
74
75
  return true;
75
76
  }
76
77