@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,4 +1,7 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import type {
3
6
  ActorRef,
4
7
  RoutingId,
@@ -6,14 +9,9 @@ import type {
6
9
  ZLinkActorContext,
7
10
  ZLinkSpot
8
11
  } from '../../contracts';
9
- import {
10
- ZLinkSpotKind
11
- } from '../../contracts';
12
+ import { ZLinkSpotKind } from '../../contracts';
12
13
  import type { Message } from '../../contracts/Common/Message';
13
- import type {
14
- ZLinkBackendActorRef,
15
- ZLinkBackendMeshNode
16
- } from '../backend/contracts';
14
+ import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend/contracts';
17
15
  import { routingIdsEqual } from '../routing-id';
18
16
  import { lookupNativeActorRef } from './actor-native-lookup';
19
17
 
@@ -64,14 +62,12 @@ export function mergeRemoteBoundSessionTarget(
64
62
  fallback: ZLinkRemoteBoundSessionTarget | undefined
65
63
  ): ZLinkRemoteBoundSessionTarget {
66
64
  if (
67
- fallback === undefined
68
- || fallback.routerChannelId !== target.routerChannelId
69
- || !routingIdsEqual(fallback.targetNodeRid, target.targetNodeRid)
70
- || (
71
- !routingIdsEqual(fallback.spotId, target.spotId)
72
- && !samePhysicalRemoteSession(fallback, target)
73
- )
74
- || isSuccessorSessionBinding(fallback, target)
65
+ fallback === undefined ||
66
+ fallback.routerChannelId !== target.routerChannelId ||
67
+ !routingIdsEqual(fallback.targetNodeRid, target.targetNodeRid) ||
68
+ (!routingIdsEqual(fallback.spotId, target.spotId) &&
69
+ !samePhysicalRemoteSession(fallback, target)) ||
70
+ isSuccessorSessionBinding(fallback, target)
75
71
  ) {
76
72
  return target;
77
73
  }
@@ -91,8 +87,7 @@ export function mergeRemoteBoundSessionTarget(
91
87
  previousOwnerLeaseGeneration:
92
88
  target.previousOwnerLeaseGeneration ?? fallback.previousOwnerLeaseGeneration,
93
89
  relocationSealId: target.relocationSealId ?? fallback.relocationSealId,
94
- serviceWireRelocation:
95
- target.serviceWireRelocation ?? fallback.serviceWireRelocation
90
+ serviceWireRelocation: target.serviceWireRelocation ?? fallback.serviceWireRelocation
96
91
  };
97
92
  return merged;
98
93
  }
@@ -120,25 +115,21 @@ function isSuccessorSessionBinding(
120
115
  target: ZLinkRemoteBoundSessionTarget
121
116
  ): boolean {
122
117
  return (
123
- fallback.sessionNodeRid !== undefined
124
- && target.sessionNodeRid !== undefined
125
- && !routingIdsEqual(fallback.sessionNodeRid, target.sessionNodeRid)
126
- ) || (
127
- fallback.sessionRid !== undefined
128
- && target.sessionRid !== undefined
129
- && !routingIdsEqual(fallback.sessionRid, target.sessionRid)
130
- ) || (
131
- fallback.sessionOwnerNodeGeneration !== undefined
132
- && target.sessionOwnerNodeGeneration !== undefined
133
- && fallback.sessionOwnerNodeGeneration !== target.sessionOwnerNodeGeneration
134
- ) || (
135
- fallback.sessionOwnerId !== undefined
136
- && target.sessionOwnerId !== undefined
137
- && fallback.sessionOwnerId !== target.sessionOwnerId
138
- ) || (
139
- fallback.sessionOwnerLeaseGeneration !== undefined
140
- && target.sessionOwnerLeaseGeneration !== undefined
141
- && fallback.sessionOwnerLeaseGeneration !== target.sessionOwnerLeaseGeneration
118
+ (fallback.sessionNodeRid !== undefined &&
119
+ target.sessionNodeRid !== undefined &&
120
+ !routingIdsEqual(fallback.sessionNodeRid, target.sessionNodeRid)) ||
121
+ (fallback.sessionRid !== undefined &&
122
+ target.sessionRid !== undefined &&
123
+ !routingIdsEqual(fallback.sessionRid, target.sessionRid)) ||
124
+ (fallback.sessionOwnerNodeGeneration !== undefined &&
125
+ target.sessionOwnerNodeGeneration !== undefined &&
126
+ fallback.sessionOwnerNodeGeneration !== target.sessionOwnerNodeGeneration) ||
127
+ (fallback.sessionOwnerId !== undefined &&
128
+ target.sessionOwnerId !== undefined &&
129
+ fallback.sessionOwnerId !== target.sessionOwnerId) ||
130
+ (fallback.sessionOwnerLeaseGeneration !== undefined &&
131
+ target.sessionOwnerLeaseGeneration !== undefined &&
132
+ fallback.sessionOwnerLeaseGeneration !== target.sessionOwnerLeaseGeneration)
142
133
  );
143
134
  }
144
135
 
@@ -151,65 +142,69 @@ type ZLinkRemoteSessionOwnerIdentity = Pick<
151
142
  | 'sessionOwnerLeaseGeneration'
152
143
  >;
153
144
 
154
- type ZLinkRemoteSessionOwnerLifecycle = Omit<
155
- ZLinkRemoteSessionOwnerIdentity,
156
- 'sessionRid'
157
- >;
145
+ type ZLinkRemoteSessionOwnerLifecycle = Omit<ZLinkRemoteSessionOwnerIdentity, 'sessionRid'>;
158
146
 
159
147
  function samePhysicalRemoteSession(
160
148
  left: ZLinkRemoteBoundSessionTarget,
161
149
  right: Pick<ZLinkRemoteBoundSessionTarget, 'sessionNodeRid' | 'sessionRid'>
162
150
  ): boolean {
163
- return left.sessionNodeRid !== undefined
164
- && right.sessionNodeRid !== undefined
165
- && left.sessionRid !== undefined
166
- && right.sessionRid !== undefined
167
- && routingIdsEqual(left.sessionNodeRid, right.sessionNodeRid)
168
- && routingIdsEqual(left.sessionRid, right.sessionRid);
151
+ return (
152
+ left.sessionNodeRid !== undefined &&
153
+ right.sessionNodeRid !== undefined &&
154
+ left.sessionRid !== undefined &&
155
+ right.sessionRid !== undefined &&
156
+ routingIdsEqual(left.sessionNodeRid, right.sessionNodeRid) &&
157
+ routingIdsEqual(left.sessionRid, right.sessionRid)
158
+ );
169
159
  }
170
160
 
171
161
  function sameRemoteSessionOwnerLifecycle(
172
162
  left: ZLinkRemoteBoundSessionTarget,
173
163
  right: ZLinkRemoteSessionOwnerLifecycle
174
164
  ): boolean {
175
- return left.sessionNodeRid !== undefined
176
- && right.sessionNodeRid !== undefined
177
- && left.sessionOwnerNodeGeneration !== undefined
178
- && right.sessionOwnerNodeGeneration !== undefined
179
- && left.sessionOwnerId !== undefined
180
- && right.sessionOwnerId !== undefined
181
- && left.sessionOwnerLeaseGeneration !== undefined
182
- && right.sessionOwnerLeaseGeneration !== undefined
183
- && routingIdsEqual(left.sessionNodeRid, right.sessionNodeRid)
184
- && left.sessionOwnerNodeGeneration === right.sessionOwnerNodeGeneration
185
- && left.sessionOwnerId === right.sessionOwnerId
186
- && left.sessionOwnerLeaseGeneration === right.sessionOwnerLeaseGeneration;
165
+ return (
166
+ left.sessionNodeRid !== undefined &&
167
+ right.sessionNodeRid !== undefined &&
168
+ left.sessionOwnerNodeGeneration !== undefined &&
169
+ right.sessionOwnerNodeGeneration !== undefined &&
170
+ left.sessionOwnerId !== undefined &&
171
+ right.sessionOwnerId !== undefined &&
172
+ left.sessionOwnerLeaseGeneration !== undefined &&
173
+ right.sessionOwnerLeaseGeneration !== undefined &&
174
+ routingIdsEqual(left.sessionNodeRid, right.sessionNodeRid) &&
175
+ left.sessionOwnerNodeGeneration === right.sessionOwnerNodeGeneration &&
176
+ left.sessionOwnerId === right.sessionOwnerId &&
177
+ left.sessionOwnerLeaseGeneration === right.sessionOwnerLeaseGeneration
178
+ );
187
179
  }
188
180
 
189
181
  function sameRemoteSessionOwner(
190
182
  left: ZLinkRemoteBoundSessionTarget,
191
183
  right: ZLinkRemoteSessionOwnerIdentity
192
184
  ): boolean {
193
- return left.sessionRid !== undefined
194
- && right.sessionRid !== undefined
195
- && routingIdsEqual(left.sessionRid, right.sessionRid)
196
- && sameRemoteSessionOwnerLifecycle(left, right);
185
+ return (
186
+ left.sessionRid !== undefined &&
187
+ right.sessionRid !== undefined &&
188
+ routingIdsEqual(left.sessionRid, right.sessionRid) &&
189
+ sameRemoteSessionOwnerLifecycle(left, right)
190
+ );
197
191
  }
198
192
 
199
193
  type ZLinkBoundSessionBindingIdentity = Pick<
200
194
  ZLinkRemoteBoundSessionTarget,
201
- keyof ZLinkRemoteSessionOwnerIdentity
202
- | 'bindingGeneration'
195
+ keyof ZLinkRemoteSessionOwnerIdentity | 'bindingGeneration'
203
196
  >;
204
197
 
205
198
  function sameRemoteSessionBinding(
206
199
  left: ZLinkRemoteBoundSessionTarget,
207
200
  right: ZLinkBoundSessionBindingIdentity
208
201
  ): boolean {
209
- return sameRemoteSessionOwner(left, right)
210
- && left.bindingGeneration !== undefined
211
- && right.bindingGeneration !== undefined
212
- && left.bindingGeneration === right.bindingGeneration;
202
+ return (
203
+ sameRemoteSessionOwner(left, right) &&
204
+ left.bindingGeneration !== undefined &&
205
+ right.bindingGeneration !== undefined &&
206
+ left.bindingGeneration === right.bindingGeneration
207
+ );
213
208
  }
214
209
 
215
210
  /**
@@ -226,8 +221,7 @@ export function preferredRemoteBoundSessionTarget(
226
221
  }
227
222
 
228
223
  function hasRelocationFence(target: ZLinkRemoteBoundSessionTarget): boolean {
229
- return target.relocationSealId !== undefined
230
- || target.serviceWireRelocation !== undefined;
224
+ return target.relocationSealId !== undefined || target.serviceWireRelocation !== undefined;
231
225
  }
232
226
 
233
227
  export interface ZLinkRemoteActorPacketTarget {
@@ -433,7 +427,10 @@ export class ZLinkActorRuntimeState {
433
427
  return this.destroyTask;
434
428
  }
435
429
  const actorRef = this.nativeActorRefValue;
436
- if (actorRef !== undefined && !routingIdsEqual(toFrameworkRoutingId(actorRef.nodeRid), entryNodeRid)) {
430
+ if (
431
+ actorRef !== undefined &&
432
+ !routingIdsEqual(toFrameworkRoutingId(actorRef.nodeRid), entryNodeRid)
433
+ ) {
437
434
  throw createInternalFrameworkException(
438
435
  ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
439
436
  `Actor '${this.actorId}' is not owned by this Entry Spot.`
@@ -541,10 +538,12 @@ export class ZLinkActorRuntimeState {
541
538
  ensureNativeActorRef(node: ZLinkBackendMeshNode, request?: Message): ZLinkBackendActorRef {
542
539
  if (this.nativeActorRefValue === undefined) {
543
540
  const existing = lookupNativeActorRef(node, this.actorId);
544
- const native = existing ?? node.createActor(
545
- this.actorId,
546
- request === undefined ? undefined : Buffer.from(request.data())
547
- );
541
+ const native =
542
+ existing ??
543
+ node.createActor(
544
+ this.actorId,
545
+ request === undefined ? undefined : Buffer.from(request.data())
546
+ );
548
547
  this.nativeActorRefValue = {
549
548
  nodeRid: native.nodeRid as ZLinkBackendActorRef['nodeRid'],
550
549
  actorId: native.actorId,
@@ -581,14 +580,16 @@ export class ZLinkActorRuntimeState {
581
580
  /** @internal Installs one authority-confirmed binding inside its Actor owner turn. */
582
581
  installBoundSessionBinding(target: ZLinkRemoteBoundSessionTarget): boolean {
583
582
  if (
584
- target.sessionNodeRid === undefined
585
- || target.sessionRid === undefined
586
- || target.sessionOwnerNodeGeneration === undefined
587
- || target.sessionOwnerId === undefined
588
- || target.sessionOwnerLeaseGeneration === undefined
589
- || target.bindingGeneration === undefined
583
+ target.sessionNodeRid === undefined ||
584
+ target.sessionRid === undefined ||
585
+ target.sessionOwnerNodeGeneration === undefined ||
586
+ target.sessionOwnerId === undefined ||
587
+ target.sessionOwnerLeaseGeneration === undefined ||
588
+ target.bindingGeneration === undefined
590
589
  ) {
591
- throw new TypeError('An installed bound Session target requires its complete binding identity.');
590
+ throw new TypeError(
591
+ 'An installed bound Session target requires its complete binding identity.'
592
+ );
592
593
  }
593
594
  const current = preferredRemoteBoundSessionTarget(
594
595
  this.remoteBoundSessionTargetValue,
@@ -600,9 +601,10 @@ export class ZLinkActorRuntimeState {
600
601
  // lifecycle's generation; a late equal/lower generation is stale.
601
602
  if (sameRemoteSessionOwner(current, target)) return true;
602
603
  if (
603
- current.bindingGeneration !== undefined
604
- && current.bindingGeneration >= target.bindingGeneration
605
- ) return false;
604
+ current.bindingGeneration !== undefined &&
605
+ current.bindingGeneration >= target.bindingGeneration
606
+ )
607
+ return false;
606
608
  }
607
609
  const installed = mergeRemoteBoundSessionTarget(target, current);
608
610
  // Binding generations are scoped to a Session-owner lifecycle. A restarted
@@ -619,35 +621,36 @@ export class ZLinkActorRuntimeState {
619
621
  /** @internal Removes only the exact authority-confirmed Session incarnation. */
620
622
  retireBoundSessionBinding(target: ZLinkBoundSessionBindingIdentity): boolean {
621
623
  if (
622
- target.sessionNodeRid === undefined
623
- || target.sessionRid === undefined
624
- || target.sessionOwnerNodeGeneration === undefined
625
- || target.sessionOwnerId === undefined
626
- || target.sessionOwnerLeaseGeneration === undefined
627
- || target.bindingGeneration === undefined
624
+ target.sessionNodeRid === undefined ||
625
+ target.sessionRid === undefined ||
626
+ target.sessionOwnerNodeGeneration === undefined ||
627
+ target.sessionOwnerId === undefined ||
628
+ target.sessionOwnerLeaseGeneration === undefined ||
629
+ target.bindingGeneration === undefined
628
630
  ) {
629
631
  throw new TypeError('A retired bound Session target requires its complete binding identity.');
630
632
  }
631
633
  let retired = false;
632
634
  if (
633
- this.remoteBoundSessionTargetValue !== undefined
634
- && sameRemoteSessionBinding(this.remoteBoundSessionTargetValue, target)
635
+ this.remoteBoundSessionTargetValue !== undefined &&
636
+ sameRemoteSessionBinding(this.remoteBoundSessionTargetValue, target)
635
637
  ) {
636
638
  this.remoteBoundSessionTargetValue = undefined;
637
639
  retired = true;
638
640
  }
639
641
  if (
640
- this.boundSessionTransferTargetValue !== undefined
641
- && sameRemoteSessionBinding(this.boundSessionTransferTargetValue, target)
642
+ this.boundSessionTransferTargetValue !== undefined &&
643
+ sameRemoteSessionBinding(this.boundSessionTransferTargetValue, target)
642
644
  ) {
643
645
  this.boundSessionTransferTargetValue = undefined;
644
646
  retired = true;
645
647
  }
646
648
  if (retired) {
647
- this.boundSessionBindingGenerationValue = preferredRemoteBoundSessionTarget(
648
- this.remoteBoundSessionTargetValue,
649
- this.boundSessionTransferTargetValue
650
- )?.bindingGeneration ?? 0n;
649
+ this.boundSessionBindingGenerationValue =
650
+ preferredRemoteBoundSessionTarget(
651
+ this.remoteBoundSessionTargetValue,
652
+ this.boundSessionTransferTargetValue
653
+ )?.bindingGeneration ?? 0n;
651
654
  }
652
655
  return retired;
653
656
  }
@@ -661,35 +664,37 @@ export class ZLinkActorRuntimeState {
661
664
  this.remoteBoundSessionTargetValue,
662
665
  this.boundSessionTransferTargetValue
663
666
  );
664
- const merged = target === undefined
665
- ? undefined
666
- : mergeRemoteBoundSessionTarget(target, current);
667
+ const merged =
668
+ target === undefined ? undefined : mergeRemoteBoundSessionTarget(target, current);
667
669
  const bindingGeneration = maxBindingGeneration(
668
670
  merged?.bindingGeneration,
669
671
  this.remoteBoundSessionTargetValue?.bindingGeneration,
670
672
  this.boundSessionBindingGenerationValue
671
673
  );
672
- this.remoteBoundSessionTargetValue = merged === undefined
673
- ? undefined
674
- : bindingGeneration === undefined
675
- ? merged
676
- : { ...merged, bindingGeneration };
674
+ this.remoteBoundSessionTargetValue =
675
+ merged === undefined
676
+ ? undefined
677
+ : bindingGeneration === undefined
678
+ ? merged
679
+ : { ...merged, bindingGeneration };
677
680
  }
678
681
 
679
682
  setBoundSessionTransferTarget(target: ZLinkRemoteBoundSessionTarget | undefined): void {
680
- const merged = target === undefined
681
- ? undefined
682
- : mergeRemoteBoundSessionTarget(target, this.boundSessionTransferTargetValue);
683
+ const merged =
684
+ target === undefined
685
+ ? undefined
686
+ : mergeRemoteBoundSessionTarget(target, this.boundSessionTransferTargetValue);
683
687
  const bindingGeneration = maxBindingGeneration(
684
688
  merged?.bindingGeneration,
685
689
  this.boundSessionTransferTargetValue?.bindingGeneration,
686
690
  this.boundSessionBindingGenerationValue
687
691
  );
688
- this.boundSessionTransferTargetValue = merged === undefined
689
- ? undefined
690
- : bindingGeneration === undefined
691
- ? merged
692
- : { ...merged, bindingGeneration };
692
+ this.boundSessionTransferTargetValue =
693
+ merged === undefined
694
+ ? undefined
695
+ : bindingGeneration === undefined
696
+ ? merged
697
+ : { ...merged, bindingGeneration };
693
698
  }
694
699
 
695
700
  setRemoteActorPacketTarget(target: ZLinkRemoteActorPacketTarget | undefined): void {
@@ -748,10 +753,11 @@ export class ZLinkActorRuntimeState {
748
753
 
749
754
  prepareForRemoteReentry(): void {
750
755
  if (this.remoteActorPacketTargetValue === undefined) return;
751
- const relocationTransferTarget = this.boundSessionTransferTargetValue !== undefined
752
- && hasRelocationFence(this.boundSessionTransferTargetValue)
753
- ? this.boundSessionTransferTargetValue
754
- : undefined;
756
+ const relocationTransferTarget =
757
+ this.boundSessionTransferTargetValue !== undefined &&
758
+ hasRelocationFence(this.boundSessionTransferTargetValue)
759
+ ? this.boundSessionTransferTargetValue
760
+ : undefined;
755
761
  this.creationTask = undefined;
756
762
  this.configured = false;
757
763
  this.context = undefined;
@@ -790,10 +796,7 @@ export function toFrameworkRoutingId(routingId: unknown): RoutingId {
790
796
  return routingId as unknown as RoutingId;
791
797
  }
792
798
 
793
- export function toFrameworkActorRef(
794
- actor: ZLinkBackendActorRef,
795
- meshName: string
796
- ): ActorRef {
799
+ export function toFrameworkActorRef(actor: ZLinkBackendActorRef, meshName: string): ActorRef {
797
800
  const actorRef = {
798
801
  actorId: actor.actorId,
799
802
  objectGeneration: actor.generation,
@@ -1,8 +1,4 @@
1
- import type {
2
- Type,
3
- ZLinkActor,
4
- ZLinkMessageSerializer,
5
- } from '../../contracts';
1
+ import type { Type, ZLinkActor, ZLinkMessageSerializer } from '../../contracts';
6
2
  import type { ZLinkActorRelocationAdapter } from '../../contracts/Configuration/ObjectRoles';
7
3
  import type { ZLinkSpotNodeOptions } from '../../contracts/Configuration/RegistrationTypes';
8
4
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
@@ -45,17 +41,14 @@ export class ZLinkActorTransferRegistry {
45
41
  signal?: AbortSignal
46
42
  ): Promise<ZLinkActorTransferPayloadState> {
47
43
  throwIfAborted(signal);
48
- const adapterType = actorType === undefined
49
- ? undefined
50
- : this.byKey.get(actorType);
44
+ const adapterType = actorType === undefined ? undefined : this.byKey.get(actorType);
51
45
  if (adapterType === undefined) {
52
46
  return { state: emptyTransferState(this.messageSerializers) };
53
47
  }
54
- const adapter = await this.createAdapter(adapterType) as ZLinkActorRelocationAdapter<ZLinkActor>;
55
- const state = await adapter.capture(
56
- actor,
57
- signal ?? new AbortController().signal
58
- );
48
+ const adapter = (await this.createAdapter(
49
+ adapterType
50
+ )) as ZLinkActorRelocationAdapter<ZLinkActor>;
51
+ const state = await adapter.capture(actor, signal ?? new AbortController().signal);
59
52
  if (!(state instanceof Uint8Array)) {
60
53
  throw new Error(
61
54
  `Actor relocation adapter '${adapterType.name}' returned invalid state bytes.`
@@ -84,7 +77,9 @@ export class ZLinkActorTransferRegistry {
84
77
  `Actor relocation adapter for stable type '${adapterKey}' is not registered on the target node.`
85
78
  );
86
79
  }
87
- const adapter = await this.createAdapter(adapterType) as ZLinkActorRelocationAdapter<ZLinkActor>;
80
+ const adapter = (await this.createAdapter(
81
+ adapterType
82
+ )) as ZLinkActorRelocationAdapter<ZLinkActor>;
88
83
  await adapter.restore(
89
84
  actor,
90
85
  state.toEncodedPayload().toBytes(),
@@ -1,7 +1,8 @@
1
1
  import type { ZLinkActorMessageFollowContext } from './actor-message-follow-context';
2
2
 
3
- export const ZLINK_INTERNAL_ACTOR_TRANSPORT_DELIVERY_GATE =
4
- Symbol.for('zlink.internal.actor.transport-delivery-gate');
3
+ export const ZLINK_INTERNAL_ACTOR_TRANSPORT_DELIVERY_GATE = Symbol.for(
4
+ 'zlink.internal.actor.transport-delivery-gate'
5
+ );
5
6
 
6
7
  export interface ZLinkInternalActorTransportDeliveryGate {
7
8
  waitBeforeSubmit(
@@ -10,8 +11,5 @@ export interface ZLinkInternalActorTransportDeliveryGate {
10
11
  signal?: AbortSignal
11
12
  ): Promise<number | void>;
12
13
 
13
- recordMessageFollowRelay?(
14
- actorId: string,
15
- context: ZLinkActorMessageFollowContext
16
- ): void;
14
+ recordMessageFollowRelay?(actorId: string, context: ZLinkActorMessageFollowContext): void;
17
15
  }
@@ -17,12 +17,15 @@ export class ZLinkRemoteBoundSessionFenceError extends Error {
17
17
  export function isRemoteBoundSessionFenceError(error: unknown): boolean {
18
18
  if (error instanceof ZLinkRemoteBoundSessionFenceError) return true;
19
19
  if (!(error instanceof Error)) return false;
20
- if ((error as { code?: unknown }).code === ZLINK_REMOTE_BOUND_SESSION_FENCE_NACK_CODE) return true;
20
+ if ((error as { code?: unknown }).code === ZLINK_REMOTE_BOUND_SESSION_FENCE_NACK_CODE)
21
+ return true;
21
22
  // Fallback for transports that only surface the session owner's message.
22
- return error.message.includes('did not match its command 42 Session seal')
23
- || error.message.includes('released Session seal cannot publish a different route')
24
- || error.message.includes('was fenced by its binding identity')
25
- || error.message.includes('session route seal abort was fenced');
23
+ return (
24
+ error.message.includes('did not match its command 42 Session seal') ||
25
+ error.message.includes('released Session seal cannot publish a different route') ||
26
+ error.message.includes('was fenced by its binding identity') ||
27
+ error.message.includes('session route seal abort was fenced')
28
+ );
26
29
  }
27
30
 
28
31
  /** Encodes a request/reply nack for the command 42/44/45 packet family. */
@@ -108,9 +111,10 @@ export function encodeRemoteBoundSessionErrorPayload(input: {
108
111
  packetName: ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET,
109
112
  ...input,
110
113
  requestSeq: input.requestSeq.toString(),
111
- error: input.error instanceof Error
112
- ? { code: input.error.constructor.name, message: input.error.message }
113
- : input.error,
114
+ error:
115
+ input.error instanceof Error
116
+ ? { code: input.error.constructor.name, message: input.error.message }
117
+ : input.error,
114
118
  metadata: Object.fromEntries(input.metadata)
115
119
  };
116
120
  }
@@ -155,16 +159,23 @@ export function decodeRemoteBoundSessionSendPayload(payload: unknown): {
155
159
  };
156
160
  }
157
161
 
158
- function optionalFlowOrigin(payload: object): import('../../contracts').ZLinkFlowOrigin | undefined {
162
+ function optionalFlowOrigin(
163
+ payload: object
164
+ ): import('../../contracts').ZLinkFlowOrigin | undefined {
159
165
  // Spec 27 §3 wire spelling (lowercase). This relay JSON is a Node<->Node
160
166
  // internal wire deployed atomically with this repository, so the decoder
161
167
  // accepts only the spec spelling.
162
168
  switch ((payload as { flowOrigin?: unknown }).flowOrigin) {
163
- case 'inbound': return 'Inbound';
164
- case 'timer': return 'Timer';
165
- case 'application': return 'Application';
166
- case 'lifecycle': return 'Lifecycle';
167
- default: return undefined;
169
+ case 'inbound':
170
+ return 'Inbound';
171
+ case 'timer':
172
+ return 'Timer';
173
+ case 'application':
174
+ return 'Application';
175
+ case 'lifecycle':
176
+ return 'Lifecycle';
177
+ default:
178
+ return undefined;
168
179
  }
169
180
  }
170
181
 
@@ -177,7 +188,10 @@ export function decodeRemoteBoundSessionResponsePayload(payload: unknown): {
177
188
  readonly compressPayload: boolean;
178
189
  readonly actorPacketTarget?: unknown;
179
190
  } {
180
- const decoded = decodeRemoteBoundSessionControlPayload(payload, ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET);
191
+ const decoded = decodeRemoteBoundSessionControlPayload(
192
+ payload,
193
+ ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET
194
+ );
181
195
  return { ...decoded, message: (payload as { message?: unknown }).message };
182
196
  }
183
197
 
@@ -189,7 +203,10 @@ export function decodeRemoteBoundSessionErrorPayload(payload: unknown): {
189
203
  readonly metadata?: Record<string, string>;
190
204
  readonly actorPacketTarget?: unknown;
191
205
  } {
192
- const decoded = decodeRemoteBoundSessionControlPayload(payload, ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET);
206
+ const decoded = decodeRemoteBoundSessionControlPayload(
207
+ payload,
208
+ ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET
209
+ );
193
210
  return {
194
211
  actorId: decoded.actorId,
195
212
  error: (payload as { error?: unknown }).error,
@@ -211,7 +228,10 @@ export function streamMetadataMap(metadata: unknown): ReadonlyMap<string, string
211
228
  return new Map();
212
229
  }
213
230
 
214
- function decodeRemoteBoundSessionControlPayload(payload: unknown, packetName: string): {
231
+ function decodeRemoteBoundSessionControlPayload(
232
+ payload: unknown,
233
+ packetName: string
234
+ ): {
215
235
  readonly actorId: string;
216
236
  readonly boundPacketName: string;
217
237
  readonly requestSeq: bigint;