@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
@@ -27,9 +27,7 @@ import { normalizeOpaqueRoutingId } from '../routing-id';
27
27
  import { ZLinkConfigurationException } from '../configuration';
28
28
  import type { ZLinkBackendSpot } from '../backend/contracts';
29
29
  import { deliverOnSerial } from '../workers';
30
- import {
31
- requireZLinkYieldTurn
32
- } from '../execution';
30
+ import { requireZLinkYieldTurn } from '../execution';
33
31
  import { resolveFrameworkPacketName } from '../messaging/packet-name';
34
32
  import type { ZLinkSpotRouteTarget } from './spot-routing-internal';
35
33
  import { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
@@ -66,8 +64,8 @@ export class DefaultZLinkSpotOutbound implements ZLinkSpotOutbound {
66
64
  this.channelClient = options.channelClient;
67
65
  this.spotPublisherClient = options.spotPublisherClient;
68
66
  this.routedTransport = options.routedTransport;
69
- this.spotRouterChannelIdForMesh = options.spotRouterChannelIdForMesh
70
- ?? ((meshName) => meshName);
67
+ this.spotRouterChannelIdForMesh =
68
+ options.spotRouterChannelIdForMesh ?? ((meshName) => meshName);
71
69
  this.sourceSpotProvider = options.sourceSpotProvider;
72
70
  this.meshName = options.meshName;
73
71
  this.addressTransport = options.addressTransport;
@@ -99,7 +97,10 @@ export class DefaultZLinkSpotOutbound implements ZLinkSpotOutbound {
99
97
  requestToSpot(spotId: RoutingId, request: unknown): ZLinkSpotRequestCall;
100
98
  /** @internal Compatibility path for an already resolved handle. */
101
99
  requestToSpot(spot: SpotHandle, request: unknown): ZLinkRequestCall;
102
- requestToSpot(spot: RoutingId | SpotHandle, request: unknown): ZLinkSpotRequestCall | ZLinkRequestCall {
100
+ requestToSpot(
101
+ spot: RoutingId | SpotHandle,
102
+ request: unknown
103
+ ): ZLinkSpotRequestCall | ZLinkRequestCall {
103
104
  if (typeof spot !== 'object') {
104
105
  return createAddressedSpotRequestCall(
105
106
  this.serial,
@@ -126,7 +127,9 @@ export class DefaultZLinkSpotOutbound implements ZLinkSpotOutbound {
126
127
  this.spotPublisherClient.publish(this.requireMeshName(), channelName, topic, event)
127
128
  );
128
129
  }
129
- throw new ZLinkConfigurationException('Spot outbound publish requires a configured Spot publisher client.');
130
+ throw new ZLinkConfigurationException(
131
+ 'Spot outbound publish requires a configured Spot publisher client.'
132
+ );
130
133
  }
131
134
 
132
135
  sendToChannel(channelName: string, message: unknown): ZLinkSendCall {
@@ -264,11 +267,7 @@ function createAddressedSpotSendCall(
264
267
  selectOnce(options, 'instanceSpot');
265
268
  options.instanceSpot = true;
266
269
  if (instanceSpotType !== undefined) {
267
- options.instanceSpotType = requireAddressValue(
268
- instanceSpotType,
269
- 'Instance Spot type',
270
- 255
271
- );
270
+ options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', 255);
272
271
  }
273
272
  return this;
274
273
  },
@@ -324,11 +323,7 @@ function createAddressedSpotRequestCall(
324
323
  selectOnce(options, 'instanceSpot');
325
324
  options.instanceSpot = true;
326
325
  if (instanceSpotType !== undefined) {
327
- options.instanceSpotType = requireAddressValue(
328
- instanceSpotType,
329
- 'Instance Spot type',
330
- 255
331
- );
326
+ options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', 255);
332
327
  }
333
328
  return this;
334
329
  },
@@ -340,7 +335,9 @@ function createAddressedSpotRequestCall(
340
335
  timeout(timeoutMs: number) {
341
336
  selectOnce(options, 'timeout');
342
337
  if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) {
343
- throw new ZLinkConfigurationException('Spot request timeout must be a positive safe integer.');
338
+ throw new ZLinkConfigurationException(
339
+ 'Spot request timeout must be a positive safe integer.'
340
+ );
344
341
  }
345
342
  options.timeoutMs = timeoutMs;
346
343
  return this;
@@ -399,13 +396,11 @@ function markSubmitted(options: MutableAddressCallOptions): void {
399
396
  if (options.submitted) {
400
397
  throwAlreadySubmitted('Spot call');
401
398
  }
402
- if (!options.instanceSpot && (
403
- options.instanceSpotType !== undefined
404
- || options.initialMeshName !== undefined
405
- )) {
406
- throw new ZLinkConfigurationException(
407
- 'Mesh selection requires an Instance Spot intent.'
408
- );
399
+ if (
400
+ !options.instanceSpot &&
401
+ (options.instanceSpotType !== undefined || options.initialMeshName !== undefined)
402
+ ) {
403
+ throw new ZLinkConfigurationException('Mesh selection requires an Instance Spot intent.');
409
404
  }
410
405
  options.submitted = true;
411
406
  }
@@ -450,7 +445,10 @@ function wrapSendCall(serial: ZLinkSpotSerialTurnExecutor, inner: ZLinkSendCall)
450
445
  };
451
446
  }
452
447
 
453
- function wrapPublishCall(serial: ZLinkSpotSerialTurnExecutor, inner: ZLinkPublishCall): ZLinkPublishCall {
448
+ function wrapPublishCall(
449
+ serial: ZLinkSpotSerialTurnExecutor,
450
+ inner: ZLinkPublishCall
451
+ ): ZLinkPublishCall {
454
452
  return {
455
453
  metadata(key: string | ZLinkMessageMetadata, value?: string) {
456
454
  if (typeof key === 'string') inner.metadata(key, value!);
@@ -501,8 +499,7 @@ function startRequestOnSerial<TReply>(
501
499
  serial: ZLinkSpotSerialTurnExecutor,
502
500
  begin: () => Promise<{ pending: Promise<TReply> }> | { pending: Promise<TReply> }
503
501
  ): Promise<TReply> {
504
- return runInternalTransportStart(serial, begin)
505
- .then((startedRequest) => startedRequest.pending);
502
+ return runInternalTransportStart(serial, begin).then((startedRequest) => startedRequest.pending);
506
503
  }
507
504
 
508
505
  /**
@@ -513,9 +510,7 @@ function runInternalTransportStart<T>(
513
510
  serial: ZLinkSpotSerialTurnExecutor,
514
511
  begin: () => Promise<T> | T
515
512
  ): Promise<T> {
516
- return serial.isCurrentTurn
517
- ? Promise.resolve().then(begin)
518
- : serial.post(begin);
513
+ return serial.isCurrentTurn ? Promise.resolve().then(begin) : serial.post(begin);
519
514
  }
520
515
 
521
516
  function wrapRoutedSpotSendCall(
@@ -540,17 +535,12 @@ function wrapRoutedSpotSendCall(
540
535
  },
541
536
  async submit(signal?: AbortSignal): Promise<void> {
542
537
  const pending = startRequestOnSerial(serial, () => ({
543
- pending: sendToSpotHandle(
544
- transport,
545
- spot,
546
- message,
547
- {
548
- metadata,
549
- signal,
550
- spotRouterChannelIdForMesh,
551
- sourceSpot: sourceSpotProvider?.()
552
- }
553
- )
538
+ pending: sendToSpotHandle(transport, spot, message, {
539
+ metadata,
540
+ signal,
541
+ spotRouterChannelIdForMesh,
542
+ sourceSpot: sourceSpotProvider?.()
543
+ })
554
544
  }));
555
545
  const result = await (serial.isCurrentTurn ? pending : deliverOnSerial(serial, pending));
556
546
  requireOneWayCompletion(
@@ -644,10 +634,7 @@ export async function sendToSpotHandle(
644
634
  ): Promise<ZLinkSubmitResult> {
645
635
  const packetName = resolveFrameworkPacketName(message, undefined, 'SPOT');
646
636
  const sendResolved = async (resolved: ResolvedSpotHandle): Promise<ZLinkSubmitResult> => {
647
- const target = spotRefToSpotRouteTarget(
648
- resolved,
649
- options.spotRouterChannelIdForMesh
650
- );
637
+ const target = spotRefToSpotRouteTarget(resolved, options.spotRouterChannelIdForMesh);
651
638
  if (options.sourceSpot !== undefined && transport.sendFromSpotToSpot !== undefined) {
652
639
  return transport.sendFromSpotToSpot(options.sourceSpot, target, message, {
653
640
  packetName,
@@ -718,7 +705,10 @@ export async function requestToSpotHandle<TReply = unknown>(
718
705
  }
719
706
  }
720
707
 
721
- async function requireSpotRef(handle: SpotHandle, signal?: AbortSignal): Promise<ResolvedSpotHandle> {
708
+ async function requireSpotRef(
709
+ handle: SpotHandle,
710
+ signal?: AbortSignal
711
+ ): Promise<ResolvedSpotHandle> {
722
712
  const resolved = await resolveSpotHandle(handle, signal);
723
713
  if (resolved === undefined) {
724
714
  throw new ZLinkConfigurationException(`Spot '${handle.spotId}' has no live location.`);
@@ -740,20 +730,18 @@ function spotRefToSpotRouteTarget(
740
730
  };
741
731
  }
742
732
 
743
- function shouldRefreshAfterRouteDisconnect(
744
- target: ResolvedSpotHandle,
745
- error: unknown
746
- ): boolean {
747
- return target.targetNodeState === ZLinkFrameworkRuntimeState.Serving
748
- && error instanceof ZLinkFrameworkException
749
- && internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RouteNotConnected;
733
+ function shouldRefreshAfterRouteDisconnect(target: ResolvedSpotHandle, error: unknown): boolean {
734
+ return (
735
+ target.targetNodeState === ZLinkFrameworkRuntimeState.Serving &&
736
+ error instanceof ZLinkFrameworkException &&
737
+ internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RouteNotConnected
738
+ );
750
739
  }
751
740
 
752
- function isShutdownTargetState(
753
- state: ResolvedSpotHandle['targetNodeState']
754
- ): boolean {
755
- return state === ZLinkFrameworkRuntimeState.Draining
756
- || state === ZLinkFrameworkRuntimeState.Stopped;
741
+ function isShutdownTargetState(state: ResolvedSpotHandle['targetNodeState']): boolean {
742
+ return (
743
+ state === ZLinkFrameworkRuntimeState.Draining || state === ZLinkFrameworkRuntimeState.Stopped
744
+ );
757
745
  }
758
746
 
759
747
  function normalizeSpotRefRoutingId(routingId: RoutingId): RoutingId {
@@ -1,8 +1,9 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
2
- import type { Message } from '../../contracts/Common/Message';
3
1
  import {
4
- ZLinkFrameworkException
5
- } from '../../contracts';
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
5
+ import type { Message } from '../../contracts/Common/Message';
6
+ import { ZLinkFrameworkException } from '../../contracts';
6
7
  import type { ZLinkSpotPublisherClientTransport } from '../channels';
7
8
  import type { ZLinkSubmitResult } from '../messaging/submission-result';
8
9
 
@@ -1,8 +1,5 @@
1
1
  import type { ZLinkBackendActorRef } from '../backend/contracts';
2
- import {
3
- decodeActorMessageFollowContext,
4
- type ZLinkRemoteBoundSessionTarget
5
- } from '../actors';
2
+ import { decodeActorMessageFollowContext, type ZLinkRemoteBoundSessionTarget } from '../actors';
6
3
  import type { RoutingId, ZLinkActor } from '../../contracts';
7
4
  import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
8
5
  import type { Message } from '../../contracts/Common/Message';
@@ -75,10 +72,7 @@ export function isRemoteActorJoinPayload(
75
72
  readonly actorType: string;
76
73
  readonly request: string;
77
74
  } {
78
- return (
79
- hasRemoteActorJoinIdentity(value) &&
80
- typeof value.request === 'string'
81
- );
75
+ return hasRemoteActorJoinIdentity(value) && typeof value.request === 'string';
82
76
  }
83
77
 
84
78
  export function decodeRemoteActorJoinPayload(
@@ -91,9 +85,8 @@ export function decodeRemoteActorJoinPayload(
91
85
  raw: boolean,
92
86
  envelope?: ReturnType<typeof decodeChannelEnvelope>
93
87
  ): ZLinkDecodedRemoteActorJoinRequest {
94
- const phase = payload.phase === 'admission' || payload.phase === 'commit'
95
- ? payload.phase
96
- : undefined;
88
+ const phase =
89
+ payload.phase === 'admission' || payload.phase === 'commit' ? payload.phase : undefined;
97
90
  const transferProtocol = phase !== undefined;
98
91
  return {
99
92
  envelope,
@@ -106,37 +99,39 @@ export function decodeRemoteActorJoinPayload(
106
99
  payload.actorId,
107
100
  payload.actorGeneration
108
101
  ),
109
- expectedMembershipEpoch: typeof payload.expectedMembershipEpoch === 'string'
110
- ? BigInt(payload.expectedMembershipEpoch)
111
- : 0n,
112
- actorEntryNodeRid: typeof payload.actorEntryNodeRid === 'string'
113
- ? decodeWireRoutingId(payload.actorEntryNodeRid, payload.actorEntryNodeRidHex)
114
- : undefined,
115
- actorCreateRequest: typeof payload.actorCreateRequest === 'string'
116
- ? RuntimeMessage.from(Buffer.from(payload.actorCreateRequest, 'base64'))
117
- : undefined,
102
+ expectedMembershipEpoch:
103
+ typeof payload.expectedMembershipEpoch === 'string'
104
+ ? BigInt(payload.expectedMembershipEpoch)
105
+ : 0n,
106
+ actorEntryNodeRid:
107
+ typeof payload.actorEntryNodeRid === 'string'
108
+ ? decodeWireRoutingId(payload.actorEntryNodeRid, payload.actorEntryNodeRidHex)
109
+ : undefined,
110
+ actorCreateRequest:
111
+ typeof payload.actorCreateRequest === 'string'
112
+ ? RuntimeMessage.from(Buffer.from(payload.actorCreateRequest, 'base64'))
113
+ : undefined,
118
114
  phase,
119
115
  transferId: typeof payload.transferId === 'string' ? payload.transferId : undefined,
120
- transferAdapterKey: typeof payload.transferAdapterKey === 'string'
121
- ? payload.transferAdapterKey
122
- : undefined,
123
- transferState: typeof payload.transferState === 'string'
124
- ? RuntimeMessage.from(Buffer.from(payload.transferState, 'base64'))
125
- : undefined,
116
+ transferAdapterKey:
117
+ typeof payload.transferAdapterKey === 'string' ? payload.transferAdapterKey : undefined,
118
+ transferState:
119
+ typeof payload.transferState === 'string'
120
+ ? RuntimeMessage.from(Buffer.from(payload.transferState, 'base64'))
121
+ : undefined,
126
122
  handoffBacklog: decodeHandoffBacklog(payload.handoffBacklog),
127
123
  remoteBoundSessionTarget: decodeRemoteBoundSessionTarget(
128
- transferProtocol ? payload.boundSessionRouterChannelId : payload.boundSessionRouterChannelId ?? payload.routerChannelId,
124
+ transferProtocol
125
+ ? payload.boundSessionRouterChannelId
126
+ : (payload.boundSessionRouterChannelId ?? payload.routerChannelId),
129
127
  transferProtocol
130
128
  ? payload.boundSessionTargetNodeRid
131
- : payload.boundSessionTargetNodeRid ?? (
132
- received.routingId === null
133
- ? payload.actorNodeRid
134
- : String(received.routingId)
135
- ),
129
+ : (payload.boundSessionTargetNodeRid ??
130
+ (received.routingId === null ? payload.actorNodeRid : String(received.routingId))),
136
131
  payload.boundSessionTargetNodeRidHex,
137
132
  transferProtocol
138
133
  ? payload.boundSessionSpotId
139
- : payload.boundSessionSpotId ?? payload.sourceSpotId,
134
+ : (payload.boundSessionSpotId ?? payload.sourceSpotId),
140
135
  payload.boundSessionNodeRid,
141
136
  payload.boundSessionNodeRidHex,
142
137
  payload.boundSessionRid,
@@ -148,9 +143,10 @@ export function decodeRemoteActorJoinPayload(
148
143
  payload.boundSessionServiceWireRelocation
149
144
  ),
150
145
  request,
151
- requestContentType: typeof payload.requestContentType === 'string'
152
- ? payload.requestContentType
153
- : 'application/json'
146
+ requestContentType:
147
+ typeof payload.requestContentType === 'string'
148
+ ? payload.requestContentType
149
+ : 'application/json'
154
150
  };
155
151
  }
156
152
 
@@ -158,7 +154,8 @@ export function decodeHandoffBacklog(value: unknown): readonly ZLinkActorHandoff
158
154
  if (!Array.isArray(value)) return [];
159
155
  return value.map((entry, expectedIndex) => {
160
156
  if (
161
- typeof entry !== 'object' || entry === null ||
157
+ typeof entry !== 'object' ||
158
+ entry === null ||
162
159
  (entry as { index?: unknown }).index !== expectedIndex ||
163
160
  typeof (entry as { header?: unknown }).header !== 'string' ||
164
161
  typeof (entry as { payload?: unknown }).payload !== 'string' ||
@@ -167,18 +164,19 @@ export function decodeHandoffBacklog(value: unknown): readonly ZLinkActorHandoff
167
164
  throw new Error('Remote actor handoff backlog is not a contiguous packet sequence.');
168
165
  }
169
166
  const packet = entry as ZLinkActorHandoffPacket;
170
- const messageFollowContext = decodeActorMessageFollowContext(
171
- packet.messageFollowContext
172
- );
167
+ const messageFollowContext = decodeActorMessageFollowContext(packet.messageFollowContext);
173
168
  const source = packet.source;
174
- if (messageFollowContext === undefined
175
- || (packet.returnResponse && (
176
- source === undefined || source.ownerId.length === 0
177
- || BigInt(source.ownerLeaseGeneration) <= 0n || source.nodeRid.length === 0
178
- || BigInt(source.nodeGeneration) <= 0n
179
- || source.replyRouteId !== messageFollowContext.replyRouteId
180
- ))
181
- || (!packet.returnResponse && source !== undefined)) {
169
+ if (
170
+ messageFollowContext === undefined ||
171
+ (packet.returnResponse &&
172
+ (source === undefined ||
173
+ source.ownerId.length === 0 ||
174
+ BigInt(source.ownerLeaseGeneration) <= 0n ||
175
+ source.nodeRid.length === 0 ||
176
+ BigInt(source.nodeGeneration) <= 0n ||
177
+ source.replyRouteId !== messageFollowContext.replyRouteId)) ||
178
+ (!packet.returnResponse && source !== undefined)
179
+ ) {
182
180
  throw new Error('Remote actor handoff request source fence is invalid.');
183
181
  }
184
182
  return { ...packet, messageFollowContext };
@@ -228,21 +226,22 @@ export function decodeRemoteBoundSessionTarget(
228
226
  routerChannelId,
229
227
  targetNodeRid: decodeWireRoutingId(targetNodeRid, targetNodeRidHex),
230
228
  spotId: requireSpotId(String(spotId)),
231
- sessionNodeRid: typeof sessionNodeRid === 'string'
232
- ? decodeWireRoutingId(sessionNodeRid, sessionNodeRidHex)
233
- : undefined,
234
- sessionRid: typeof sessionRid === 'string'
235
- ? decodeWireRoutingId(sessionRid, sessionRidHex)
236
- : undefined,
237
- bindingGeneration: typeof bindingGeneration === 'string'
238
- ? BigInt(bindingGeneration)
239
- : undefined,
240
- previousAuthorityOwnerGeneration: typeof previousAuthorityOwnerGeneration === 'string'
241
- ? BigInt(previousAuthorityOwnerGeneration)
242
- : undefined,
243
- previousOwnerLeaseGeneration: typeof previousOwnerLeaseGeneration === 'string'
244
- ? BigInt(previousOwnerLeaseGeneration)
245
- : undefined,
229
+ sessionNodeRid:
230
+ typeof sessionNodeRid === 'string'
231
+ ? decodeWireRoutingId(sessionNodeRid, sessionNodeRidHex)
232
+ : undefined,
233
+ sessionRid:
234
+ typeof sessionRid === 'string' ? decodeWireRoutingId(sessionRid, sessionRidHex) : undefined,
235
+ bindingGeneration:
236
+ typeof bindingGeneration === 'string' ? BigInt(bindingGeneration) : undefined,
237
+ previousAuthorityOwnerGeneration:
238
+ typeof previousAuthorityOwnerGeneration === 'string'
239
+ ? BigInt(previousAuthorityOwnerGeneration)
240
+ : undefined,
241
+ previousOwnerLeaseGeneration:
242
+ typeof previousOwnerLeaseGeneration === 'string'
243
+ ? BigInt(previousOwnerLeaseGeneration)
244
+ : undefined,
246
245
  relocationSealId: typeof relocationSealId === 'string' ? relocationSealId : undefined,
247
246
  serviceWireRelocation: decodeBoundSessionServiceWireRelocation(serviceWireRelocation)
248
247
  };
@@ -264,12 +263,14 @@ function decodeBoundSessionServiceWireRelocation(
264
263
  };
265
264
  const nonNegative = (key: string): bigint => {
266
265
  const candidate = BigInt(text(key));
267
- if (candidate < 0n) throw new TypeError(`Remote bound Session service-wire '${key}' is invalid.`);
266
+ if (candidate < 0n)
267
+ throw new TypeError(`Remote bound Session service-wire '${key}' is invalid.`);
268
268
  return candidate;
269
269
  };
270
270
  const positive = (key: string): bigint => {
271
271
  const candidate = nonNegative(key);
272
- if (candidate === 0n) throw new TypeError(`Remote bound Session service-wire '${key}' is invalid.`);
272
+ if (candidate === 0n)
273
+ throw new TypeError(`Remote bound Session service-wire '${key}' is invalid.`);
273
274
  return candidate;
274
275
  };
275
276
  const relocation = {
@@ -107,10 +107,10 @@ function decodeActorRef(payload: {
107
107
  readonly actorOwnershipGeneration?: unknown;
108
108
  }): ActorRef | undefined {
109
109
  if (
110
- typeof payload.actorId !== 'string'
111
- || typeof payload.actorNodeRid !== 'string'
112
- || typeof payload.actorGeneration !== 'string'
113
- || typeof payload.actorMeshName !== 'string'
110
+ typeof payload.actorId !== 'string' ||
111
+ typeof payload.actorNodeRid !== 'string' ||
112
+ typeof payload.actorGeneration !== 'string' ||
113
+ typeof payload.actorMeshName !== 'string'
114
114
  ) {
115
115
  return undefined;
116
116
  }
@@ -134,7 +134,12 @@ export function decodeRemoteBoundSessionResponse(
134
134
  codecs?: ZLinkChannelEnvelopeCodecRegistry,
135
135
  flowEnabled = true
136
136
  ): ZLinkRemoteBoundSessionResponse | undefined {
137
- const decoded = decodeRemoteBoundSessionControl(parts, ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET, codecs, flowEnabled);
137
+ const decoded = decodeRemoteBoundSessionControl(
138
+ parts,
139
+ ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET,
140
+ codecs,
141
+ flowEnabled
142
+ );
138
143
  if (decoded === undefined) {
139
144
  return undefined;
140
145
  }
@@ -154,7 +159,12 @@ export function decodeRemoteBoundSessionError(
154
159
  codecs?: ZLinkChannelEnvelopeCodecRegistry,
155
160
  flowEnabled = true
156
161
  ): ZLinkRemoteBoundSessionError | undefined {
157
- const decoded = decodeRemoteBoundSessionControl(parts, ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET, codecs, flowEnabled);
162
+ const decoded = decodeRemoteBoundSessionControl(
163
+ parts,
164
+ ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET,
165
+ codecs,
166
+ flowEnabled
167
+ );
158
168
  if (decoded === undefined) {
159
169
  return undefined;
160
170
  }
@@ -179,12 +189,15 @@ export function decodeRemoteActorPacketRelay(
179
189
  const relay = decodeRemoteActorPacketRelayPayload(multipart.payload);
180
190
  return {
181
191
  ...relay,
182
- actorRef: decodeForwardedActorRef({
183
- actorId: relay.actorId,
184
- actorNodeRid: relay.actorNodeRid,
185
- actorNodeRidHex: relay.actorNodeRidHex,
186
- actorGeneration: relay.actorGeneration
187
- }, relay.messageFollowContext),
192
+ actorRef: decodeForwardedActorRef(
193
+ {
194
+ actorId: relay.actorId,
195
+ actorNodeRid: relay.actorNodeRid,
196
+ actorNodeRidHex: relay.actorNodeRidHex,
197
+ actorGeneration: relay.actorGeneration
198
+ },
199
+ relay.messageFollowContext
200
+ ),
188
201
  bindingActorRef: decodeActorRef({
189
202
  actorId: relay.actorId,
190
203
  actorNodeRid: relay.bindingActorNodeRid,
@@ -199,12 +212,15 @@ export function decodeRemoteActorPacketRelay(
199
212
  }
200
213
  }
201
214
 
202
- function decodeForwardedActorRef(payload: {
203
- readonly actorId?: unknown;
204
- readonly actorNodeRid?: unknown;
205
- readonly actorNodeRidHex?: unknown;
206
- readonly actorGeneration?: unknown;
207
- }, messageFollowContext?: import('../actors').ZLinkActorMessageFollowContext): ActorRef | undefined {
215
+ function decodeForwardedActorRef(
216
+ payload: {
217
+ readonly actorId?: unknown;
218
+ readonly actorNodeRid?: unknown;
219
+ readonly actorNodeRidHex?: unknown;
220
+ readonly actorGeneration?: unknown;
221
+ },
222
+ messageFollowContext?: import('../actors').ZLinkActorMessageFollowContext
223
+ ): ActorRef | undefined {
208
224
  const actorRef = decodeActorRef(payload);
209
225
  return actorRef === undefined || messageFollowContext === undefined
210
226
  ? actorRef
@@ -216,25 +232,28 @@ function decodeRemoteBoundSessionControl(
216
232
  packetName: string,
217
233
  codecs?: ZLinkChannelEnvelopeCodecRegistry,
218
234
  flowEnabled = true
219
- ): {
220
- readonly actorId: string;
221
- readonly packetName: string;
222
- readonly requestSeq: bigint;
223
- readonly metadata: ReadonlyMap<string, string>;
224
- readonly payload: {
225
- readonly message?: unknown;
226
- readonly error?: unknown;
227
- readonly compressPayload?: unknown;
228
- };
229
- readonly actorPacketTarget?: unknown;
230
- } | undefined {
235
+ ):
236
+ | {
237
+ readonly actorId: string;
238
+ readonly packetName: string;
239
+ readonly requestSeq: bigint;
240
+ readonly metadata: ReadonlyMap<string, string>;
241
+ readonly payload: {
242
+ readonly message?: unknown;
243
+ readonly error?: unknown;
244
+ readonly compressPayload?: unknown;
245
+ };
246
+ readonly actorPacketTarget?: unknown;
247
+ }
248
+ | undefined {
231
249
  try {
232
250
  const multipart = decodeMultipartPayload(parts, codecs, flowEnabled);
233
251
  if (multipart.packetName !== packetName) return undefined;
234
252
  const payload = multipart.payload as Record<string, unknown>;
235
- const decoded = packetName === ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET
236
- ? decodeRemoteBoundSessionResponsePayload(payload)
237
- : decodeRemoteBoundSessionErrorPayload(payload);
253
+ const decoded =
254
+ packetName === ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET
255
+ ? decodeRemoteBoundSessionResponsePayload(payload)
256
+ : decodeRemoteBoundSessionErrorPayload(payload);
238
257
  return {
239
258
  actorId: decoded.actorId,
240
259
  packetName: decoded.boundPacketName,
@@ -268,17 +287,18 @@ function decodeMultipartPayload(
268
287
  const decodedPayload = decodeChannelPayload(envelope, codecs);
269
288
  return {
270
289
  packetName: envelope.packetName,
271
- payload: typeof decodedPayload === 'object' && decodedPayload !== null
272
- ? { ...decodedPayload, packetName: envelope.packetName }
273
- : decodedPayload,
290
+ payload:
291
+ typeof decodedPayload === 'object' && decodedPayload !== null
292
+ ? { ...decodedPayload, packetName: envelope.packetName }
293
+ : decodedPayload,
274
294
  envelope
275
295
  };
276
296
  }
277
297
 
278
298
  function metadataOf(value: unknown): ReadonlyMap<string, string> {
279
- return new Map(Object.entries(
280
- typeof value === 'object' && value !== null
281
- ? value as Record<string, string>
282
- : {}
283
- ));
299
+ return new Map(
300
+ Object.entries(
301
+ typeof value === 'object' && value !== null ? (value as Record<string, string>) : {}
302
+ )
303
+ );
284
304
  }