@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
@@ -10,10 +10,7 @@ import type {
10
10
  ZLinkMessageSerializer,
11
11
  ZLinkStream
12
12
  } from '../../contracts';
13
- import {
14
- ZLinkSubmitStatus,
15
- type ZLinkSubmitResult
16
- } from '../messaging/submission-result';
13
+ import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
17
14
  import type { Message } from '../../contracts/Common/Message';
18
15
  import { throwIfAborted } from '../abort';
19
16
  import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
@@ -58,11 +55,14 @@ export class ZLinkManagedStream implements ZLinkStream {
58
55
  private currentLocalAddr: string | undefined;
59
56
  private currentRemoteAddr: string | undefined;
60
57
  private transportClosed = false;
61
- private readonly nativeActorBindings = new Map<string, {
62
- readonly actor: ZLinkBackendActorRef;
63
- readonly bindingGeneration: bigint;
64
- readonly route?: ZLinkNativeSessionRoute;
65
- }>();
58
+ private readonly nativeActorBindings = new Map<
59
+ string,
60
+ {
61
+ readonly actor: ZLinkBackendActorRef;
62
+ readonly bindingGeneration: bigint;
63
+ readonly route?: ZLinkNativeSessionRoute;
64
+ }
65
+ >();
66
66
 
67
67
  constructor(
68
68
  private readonly socket: ZLinkBackendStreamSocket,
@@ -138,12 +138,11 @@ export class ZLinkManagedStream implements ZLinkStream {
138
138
  signal?: AbortSignal
139
139
  ): Promise<ZLinkSubmitResult> {
140
140
  throwIfAborted(signal);
141
- return await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT)
141
+ return (await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT))
142
142
  ? { status: ZLinkSubmitStatus.Submitted }
143
143
  : { status: ZLinkSubmitStatus.Backpressured };
144
144
  }
145
145
 
146
-
147
146
  async close(signal?: AbortSignal): Promise<void> {
148
147
  throwIfAborted(signal);
149
148
  this.markTransportClosed();
@@ -211,25 +210,29 @@ export class ZLinkManagedStream implements ZLinkStream {
211
210
  }
212
211
  await this.requireSuccessfulCompletion(
213
212
  route.completions.submit(
214
- () => route.service.bindActor(
215
- this.backendRoutingId(),
216
- nativeActor,
217
- timeoutMs,
218
- onBindingReplaced === undefined
219
- ? undefined
220
- : (_actorId, retiredSession, replacedActor) => {
221
- onBindingReplaced(replacedActor, retiredSession);
222
- },
223
- toStreamSessionActorAuthorityFence(authorityFence)
224
- ),
213
+ () =>
214
+ route.service.bindActor(
215
+ this.backendRoutingId(),
216
+ nativeActor,
217
+ timeoutMs,
218
+ onBindingReplaced === undefined
219
+ ? undefined
220
+ : (_actorId, retiredSession, replacedActor) => {
221
+ onBindingReplaced(replacedActor, retiredSession);
222
+ },
223
+ toStreamSessionActorAuthorityFence(authorityFence)
224
+ ),
225
225
  signal
226
226
  ),
227
- `Actor '${actor.actorId}' native session bind`,
227
+ `Actor '${actor.actorId}' native session bind`
228
228
  );
229
- const binding = route.service.bindings(this.backendRoutingId())
230
- .find((candidate) =>
231
- candidate.actor.actorId === nativeActor.actorId
232
- && candidate.actor.generation === nativeActor.generation);
229
+ const binding = route.service
230
+ .bindings(this.backendRoutingId())
231
+ .find(
232
+ (candidate) =>
233
+ candidate.actor.actorId === nativeActor.actorId &&
234
+ candidate.actor.generation === nativeActor.generation
235
+ );
233
236
  if (binding === undefined) {
234
237
  throw createInternalFrameworkException(
235
238
  ZLinkFrameworkInternalErrorKind.RouteNotConnected,
@@ -240,12 +243,13 @@ export class ZLinkManagedStream implements ZLinkStream {
240
243
  try {
241
244
  await this.requireSuccessfulCompletion(
242
245
  route.completions.submit(
243
- () => route.service.unbindActor(
244
- this.backendRoutingId(),
245
- nativeActor as never,
246
- binding.bindingGeneration,
247
- timeoutMs
248
- ),
246
+ () =>
247
+ route.service.unbindActor(
248
+ this.backendRoutingId(),
249
+ nativeActor as never,
250
+ binding.bindingGeneration,
251
+ timeoutMs
252
+ ),
249
253
  signal
250
254
  ),
251
255
  `Actor '${actor.actorId}' native session unbind`,
@@ -268,7 +272,12 @@ export class ZLinkManagedStream implements ZLinkStream {
268
272
  });
269
273
  return;
270
274
  }
271
- await this.socket.bindActor(this.backendRoutingId(), toBackendActorRef(actor), timeoutMs, signal);
275
+ await this.socket.bindActor(
276
+ this.backendRoutingId(),
277
+ toBackendActorRef(actor),
278
+ timeoutMs,
279
+ signal
280
+ );
272
281
  }
273
282
 
274
283
  private async ensureNativeActorRoute(
@@ -282,23 +291,24 @@ export class ZLinkManagedStream implements ZLinkStream {
282
291
  signal
283
292
  );
284
293
  try {
285
- const resolved = completion.kindData?.kind === 'actorLookupCompletion'
286
- ? completion.kindData.location.actor
287
- : undefined;
294
+ const resolved =
295
+ completion.kindData?.kind === 'actorLookupCompletion'
296
+ ? completion.kindData.location.actor
297
+ : undefined;
288
298
  if (
289
- completion.terminalResult !== 0
290
- || completion.failureErrno !== 0
291
- || resolved === undefined
292
- || resolved.actorId !== actor.actorId
293
- || resolved.generation !== actor.objectGeneration
294
- || String(resolved.nodeRid) !== String(actor.nodeRid)
299
+ completion.terminalResult !== 0 ||
300
+ completion.failureErrno !== 0 ||
301
+ resolved === undefined ||
302
+ resolved.actorId !== actor.actorId ||
303
+ resolved.generation !== actor.objectGeneration ||
304
+ String(resolved.nodeRid) !== String(actor.nodeRid)
295
305
  ) {
296
306
  throw createInternalFrameworkException(
297
307
  ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
298
- `Actor '${actor.actorId}' native route fence does not match its ActorRef `
299
- + `(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, `
300
- + `resolved ${resolved === undefined ? 'none' : `${String(resolved.nodeRid)}/${resolved.generation}`}, `
301
- + `terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`
308
+ `Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
309
+ `(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
310
+ `resolved ${resolved === undefined ? 'none' : `${String(resolved.nodeRid)}/${resolved.generation}`}, ` +
311
+ `terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`
302
312
  );
303
313
  }
304
314
  } finally {
@@ -324,12 +334,13 @@ export class ZLinkManagedStream implements ZLinkStream {
324
334
  try {
325
335
  await this.requireSuccessfulCompletion(
326
336
  route.completions.submit(
327
- () => route.service.unbindActor(
328
- this.backendRoutingId(),
329
- binding.actor as never,
330
- binding.bindingGeneration,
331
- timeoutMs
332
- ),
337
+ () =>
338
+ route.service.unbindActor(
339
+ this.backendRoutingId(),
340
+ binding.actor as never,
341
+ binding.bindingGeneration,
342
+ timeoutMs
343
+ ),
333
344
  signal
334
345
  ),
335
346
  `Actor '${actorId}' native session unbind`,
@@ -370,24 +381,21 @@ export class ZLinkManagedStream implements ZLinkStream {
370
381
  if (binding?.route !== undefined) {
371
382
  const nativeParts = parts.map((part) => NativeMessage.from(part.data()));
372
383
  try {
373
- return await binding.route.service.sendToActor(
374
- this.backendRoutingId(),
375
- binding.actor as never,
376
- nativeParts,
377
- { flags: flags ?? 0 }
378
- ) === 0;
384
+ return (
385
+ (await binding.route.service.sendToActor(
386
+ this.backendRoutingId(),
387
+ binding.actor as never,
388
+ nativeParts,
389
+ { flags: flags ?? 0 }
390
+ )) === 0
391
+ );
379
392
  } finally {
380
393
  for (const part of nativeParts) {
381
394
  part.close();
382
395
  }
383
396
  }
384
397
  }
385
- return this.socket.sendBoundActor(
386
- this.backendRoutingId(),
387
- actorId,
388
- parts,
389
- flags ?? 0
390
- );
398
+ return this.socket.sendBoundActor(this.backendRoutingId(), actorId, parts, flags ?? 0);
391
399
  }
392
400
 
393
401
  updateAddresses(localAddr: string | undefined, remoteAddr: string | undefined): void {
@@ -406,9 +414,12 @@ export class ZLinkManagedStream implements ZLinkStream {
406
414
  bindingGeneration: bigint
407
415
  ): boolean {
408
416
  try {
409
- return route.service.bindings(this.backendRoutingId()).some(candidate =>
410
- candidate.actor.actorId === actorId
411
- && candidate.bindingGeneration === bindingGeneration);
417
+ return route.service
418
+ .bindings(this.backendRoutingId())
419
+ .some(
420
+ (candidate) =>
421
+ candidate.actor.actorId === actorId && candidate.bindingGeneration === bindingGeneration
422
+ );
412
423
  } catch {
413
424
  // A closed native service owns the teardown state. Keep the original
414
425
  // error when its binding snapshot is unavailable.
@@ -428,8 +439,8 @@ export class ZLinkManagedStream implements ZLinkStream {
428
439
  const completion = await completionPromise;
429
440
  try {
430
441
  if (
431
- completion.terminalResult !== 0
432
- && !acceptedTerminalResults.has(completion.terminalResult)
442
+ completion.terminalResult !== 0 &&
443
+ !acceptedTerminalResults.has(completion.terminalResult)
433
444
  ) {
434
445
  throw wireReplyFailureException(
435
446
  completion.terminalResult,
@@ -443,15 +454,15 @@ export class ZLinkManagedStream implements ZLinkStream {
443
454
  }
444
455
 
445
456
  private nativeRoute(meshName: string): ZLinkNativeSessionRoute | undefined {
446
- return this.nativeSessionRouteForMesh?.(meshName)
447
- ?? (
448
- this.nativeSessionService !== undefined && this.meshCompletions !== undefined
449
- ? {
450
- service: this.nativeSessionService,
451
- completions: this.meshCompletions
452
- }
453
- : undefined
454
- );
457
+ return (
458
+ this.nativeSessionRouteForMesh?.(meshName) ??
459
+ (this.nativeSessionService !== undefined && this.meshCompletions !== undefined
460
+ ? {
461
+ service: this.nativeSessionService,
462
+ completions: this.meshCompletions
463
+ }
464
+ : undefined)
465
+ );
455
466
  }
456
467
  }
457
468
 
@@ -460,18 +471,18 @@ export function streamSessionIdFromRoutingId(routingId: unknown): string {
460
471
  return routingId;
461
472
  }
462
473
  if (
463
- typeof routingId === 'object'
464
- && routingId !== null
465
- && 'toHex' in routingId
466
- && typeof (routingId as { toHex?: unknown }).toHex === 'function'
474
+ typeof routingId === 'object' &&
475
+ routingId !== null &&
476
+ 'toHex' in routingId &&
477
+ typeof (routingId as { toHex?: unknown }).toHex === 'function'
467
478
  ) {
468
479
  return (routingId as { toHex(): string }).toHex();
469
480
  }
470
481
  if (
471
- typeof routingId === 'object'
472
- && routingId !== null
473
- && 'toString' in routingId
474
- && typeof (routingId as { toString?: unknown }).toString === 'function'
482
+ typeof routingId === 'object' &&
483
+ routingId !== null &&
484
+ 'toString' in routingId &&
485
+ typeof (routingId as { toString?: unknown }).toString === 'function'
475
486
  ) {
476
487
  return (routingId as { toString(): string }).toString();
477
488
  }
@@ -63,7 +63,9 @@ export class ZLinkNativeFallbackBoundSession implements ZLinkBoundSession {
63
63
  const remoteTarget = this.options.remoteBoundSessionTargetProvider();
64
64
  if (remoteTarget !== undefined) {
65
65
  const spotKind: ZLinkSpotKind | undefined =
66
- 'spotKind' in remoteTarget ? remoteTarget.spotKind as ZLinkSpotKind | undefined : undefined;
66
+ 'spotKind' in remoteTarget
67
+ ? (remoteTarget.spotKind as ZLinkSpotKind | undefined)
68
+ : undefined;
67
69
  const payload = encodeRemoteActorPacketRelayPayload({
68
70
  actorId: this.options.actorId,
69
71
  routerChannelId: remoteTarget.routerChannelId,
@@ -76,27 +78,26 @@ export class ZLinkNativeFallbackBoundSession implements ZLinkBoundSession {
76
78
  spotId: remoteTarget.spotId,
77
79
  spotKind: spotKind ?? ZLinkSpotKind.Entry
78
80
  };
79
- if (await tryRequestRoutedJson(
80
- this.options.routedTransport,
81
- target,
82
- payload,
83
- { timeoutMs: this.options.requestTimeoutMs, signal }
84
- )) {
81
+ if (
82
+ await tryRequestRoutedJson(this.options.routedTransport, target, payload, {
83
+ timeoutMs: this.options.requestTimeoutMs,
84
+ signal
85
+ })
86
+ ) {
85
87
  return;
86
88
  }
87
- await this.options.routedTransport.sendToSpot(
88
- target,
89
- payload,
90
- { packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET, signal }
91
- );
89
+ await this.options.routedTransport.sendToSpot(target, payload, {
90
+ packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
91
+ signal
92
+ });
92
93
  return;
93
94
  }
94
95
  const actorRef = this.options.actorRefProvider();
95
96
  const node = this.options.nativeActorNodeProvider();
96
97
  if (
97
- actorRef !== undefined
98
- && node !== undefined
99
- && currentBindingGeneration(actorRef) !== undefined
98
+ actorRef !== undefined &&
99
+ node !== undefined &&
100
+ currentBindingGeneration(actorRef) !== undefined
100
101
  ) {
101
102
  await this.options.runtime.disconnectNativeBoundSession(node, actorRef, signal);
102
103
  return;
@@ -129,7 +130,11 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
129
130
  if (this.executed) {
130
131
  throwAlreadySubmitted('Bound session send call');
131
132
  }
132
- const packetName = resolveFrameworkPacketName(this.message, this.selectedPacketName, 'Bound session');
133
+ const packetName = resolveFrameworkPacketName(
134
+ this.message,
135
+ this.selectedPacketName,
136
+ 'Bound session'
137
+ );
133
138
  this.executed = true;
134
139
  throwIfAborted(signal);
135
140
  const result = await this.execute(packetName, signal);
@@ -144,13 +149,15 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
144
149
  // Call-scoped flow (spec 27 §4): the relay JSON flow pair and any nested
145
150
  // routed-transport envelope share one ambient flow that does not outlive
146
151
  // this submit call.
147
- return runWithOutboundFlow(
148
- this.options.flowCreationEnabled?.() ?? true,
149
- () => this.executeScoped(packetName, signal)
152
+ return runWithOutboundFlow(this.options.flowCreationEnabled?.() ?? true, () =>
153
+ this.executeScoped(packetName, signal)
150
154
  );
151
155
  }
152
156
 
153
- private async executeScoped(packetName: string, signal?: AbortSignal): Promise<ZLinkSubmitResult> {
157
+ private async executeScoped(
158
+ packetName: string,
159
+ signal?: AbortSignal
160
+ ): Promise<ZLinkSubmitResult> {
154
161
  const localActor = this.options.localActorProvider?.() === true;
155
162
  const remoteTarget = this.options.remoteBoundSessionTargetProvider();
156
163
  const sealedRemoteTarget = remoteTarget?.relocationSealId !== undefined;
@@ -175,11 +182,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
175
182
  const actorRef = this.options.actorRefProvider();
176
183
  const node = this.options.nativeActorNodeProvider();
177
184
  const bindingGeneration = currentBindingGeneration(actorRef);
178
- if (
179
- actorRef !== undefined
180
- && node !== undefined
181
- && bindingGeneration !== undefined
182
- ) {
185
+ if (actorRef !== undefined && node !== undefined && bindingGeneration !== undefined) {
183
186
  nativeAttempted = true;
184
187
  const result = await this.options.runtime.sendNativeBoundSession(
185
188
  node,
@@ -200,8 +203,9 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
200
203
  }
201
204
  if (remoteTarget !== undefined) {
202
205
  const actorRef = this.options.actorRefProvider();
203
- const ownershipGeneration = (actorRef as (ActorRef & { ownershipGeneration?: bigint }) | undefined)
204
- ?.ownershipGeneration;
206
+ const ownershipGeneration = (
207
+ actorRef as (ActorRef & { ownershipGeneration?: bigint }) | undefined
208
+ )?.ownershipGeneration;
205
209
  const payload = encodeRemoteBoundSessionSendPayload({
206
210
  actorId: this.options.actorId,
207
211
  actorMeshName: actorRef?.meshName,
@@ -220,27 +224,28 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
220
224
  ? currentOrCreateFlow('Application')
221
225
  : undefined)
222
226
  });
223
- const submit = this.options.routedTransport.submitInfrastructure
224
- ?? this.options.routedTransport.submit;
225
- const result = submit === undefined
226
- ? await this.options.routedTransport.sendToSpot(
227
- {
228
- routerChannelId: remoteTarget.routerChannelId,
229
- targetNodeRid: remoteTarget.targetNodeRid,
230
- spotId: remoteTarget.spotId,
231
- spotKind: ZLinkSpotKind.Entry
232
- },
233
- payload,
234
- { packetName: ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET, signal }
235
- )
236
- : await submit.call(
237
- this.options.routedTransport,
238
- remoteTarget.routerChannelId,
239
- String(remoteTarget.targetNodeRid),
240
- ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET,
241
- payload,
242
- signal
243
- );
227
+ const submit =
228
+ this.options.routedTransport.submitInfrastructure ?? this.options.routedTransport.submit;
229
+ const result =
230
+ submit === undefined
231
+ ? await this.options.routedTransport.sendToSpot(
232
+ {
233
+ routerChannelId: remoteTarget.routerChannelId,
234
+ targetNodeRid: remoteTarget.targetNodeRid,
235
+ spotId: remoteTarget.spotId,
236
+ spotKind: ZLinkSpotKind.Entry
237
+ },
238
+ payload,
239
+ { packetName: ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET, signal }
240
+ )
241
+ : await submit.call(
242
+ this.options.routedTransport,
243
+ remoteTarget.routerChannelId,
244
+ String(remoteTarget.targetNodeRid),
245
+ ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET,
246
+ payload,
247
+ signal
248
+ );
244
249
  this.traceSubmitted(result, packetName);
245
250
  return result;
246
251
  }
@@ -259,10 +264,10 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
259
264
  const node = this.options.nativeActorNodeProvider();
260
265
  const bindingGeneration = currentBindingGeneration(actorRef);
261
266
  if (
262
- !nativeAttempted
263
- && actorRef !== undefined
264
- && node !== undefined
265
- && bindingGeneration !== undefined
267
+ !nativeAttempted &&
268
+ actorRef !== undefined &&
269
+ node !== undefined &&
270
+ bindingGeneration !== undefined
266
271
  ) {
267
272
  const result = await this.options.runtime.sendNativeBoundSession(
268
273
  node,
@@ -30,20 +30,28 @@ export enum ZLinkStreamCodec {
30
30
 
31
31
  export function streamCodecContentType(codec: ZLinkStreamCodec): string {
32
32
  switch (codec) {
33
- case ZLinkStreamCodec.Json: return 'application/json';
34
- case ZLinkStreamCodec.MessagePack: return 'application/x-msgpack';
35
- case ZLinkStreamCodec.Protobuf: return 'application/x-protobuf';
36
- case ZLinkStreamCodec.Raw: return 'application/octet-stream';
33
+ case ZLinkStreamCodec.Json:
34
+ return 'application/json';
35
+ case ZLinkStreamCodec.MessagePack:
36
+ return 'application/x-msgpack';
37
+ case ZLinkStreamCodec.Protobuf:
38
+ return 'application/x-protobuf';
39
+ case ZLinkStreamCodec.Raw:
40
+ return 'application/octet-stream';
37
41
  }
38
42
  throw new TypeError(`Unsupported STREAM codec '${codec}'.`);
39
43
  }
40
44
 
41
45
  export function streamCodecForContentType(contentType: string): ZLinkStreamCodec {
42
46
  switch (contentType) {
43
- case 'application/json': return ZLinkStreamCodec.Json;
44
- case 'application/x-msgpack': return ZLinkStreamCodec.MessagePack;
45
- case 'application/x-protobuf': return ZLinkStreamCodec.Protobuf;
46
- case 'application/octet-stream': return ZLinkStreamCodec.Raw;
47
+ case 'application/json':
48
+ return ZLinkStreamCodec.Json;
49
+ case 'application/x-msgpack':
50
+ return ZLinkStreamCodec.MessagePack;
51
+ case 'application/x-protobuf':
52
+ return ZLinkStreamCodec.Protobuf;
53
+ case 'application/octet-stream':
54
+ return ZLinkStreamCodec.Raw;
47
55
  }
48
56
  throw new TypeError(`Unsupported STREAM content type '${contentType}'.`);
49
57
  }
@@ -90,15 +98,17 @@ export interface ZLinkStreamFrameHeader {
90
98
  }
91
99
 
92
100
  export type ZLinkStreamReplyMessageKind =
93
- | ZLinkStreamMessageKind.Response
94
- | ZLinkStreamMessageKind.Error;
101
+ ZLinkStreamMessageKind.Response | ZLinkStreamMessageKind.Error;
95
102
 
96
103
  export interface ZLinkStreamFrame {
97
104
  readonly header: Uint8Array;
98
105
  readonly payload: Uint8Array;
99
106
  }
100
107
 
101
- export function resolvePacketName(message: unknown, explicitPacketName: string | undefined): string {
108
+ export function resolvePacketName(
109
+ message: unknown,
110
+ explicitPacketName: string | undefined
111
+ ): string {
102
112
  const packetName = resolveFrameworkPacketName(message, explicitPacketName, 'Stream');
103
113
  if (packetName.trim().length === 0) {
104
114
  throw new Error('Stream packet name must not be empty.');
@@ -117,13 +127,16 @@ export function encodeStreamFrame(header: ZLinkStreamFrameHeader, payload: Uint8
117
127
  }
118
128
 
119
129
  export function encodeStreamControlFrame(name: string): Uint8Array {
120
- return encodeStreamFrame({
121
- kind: ZLinkStreamMessageKind.Control,
122
- codec: ZLinkStreamCodec.Raw,
123
- flags: ZLinkStreamHeaderFlags.None,
124
- name,
125
- metadata: EMPTY_STREAM_METADATA
126
- }, new Uint8Array());
130
+ return encodeStreamFrame(
131
+ {
132
+ kind: ZLinkStreamMessageKind.Control,
133
+ codec: ZLinkStreamCodec.Raw,
134
+ flags: ZLinkStreamHeaderFlags.None,
135
+ name,
136
+ metadata: EMPTY_STREAM_METADATA
137
+ },
138
+ new Uint8Array()
139
+ );
127
140
  }
128
141
 
129
142
  export function encodeSessionClosingFrame(
@@ -138,13 +151,16 @@ export function encodeSessionClosingFrame(
138
151
  payload[2] = diagnosticBytes.length >>> 8;
139
152
  payload[3] = diagnosticBytes.length & 0xff;
140
153
  payload.set(diagnosticBytes, 4);
141
- return encodeStreamFrame({
142
- kind: ZLinkStreamMessageKind.Control,
143
- codec: ZLinkStreamCodec.Raw,
144
- flags: ZLinkStreamHeaderFlags.None,
145
- name: 'session-closing',
146
- metadata: new Map()
147
- }, payload);
154
+ return encodeStreamFrame(
155
+ {
156
+ kind: ZLinkStreamMessageKind.Control,
157
+ codec: ZLinkStreamCodec.Raw,
158
+ flags: ZLinkStreamHeaderFlags.None,
159
+ name: 'session-closing',
160
+ metadata: new Map()
161
+ },
162
+ payload
163
+ );
148
164
  }
149
165
 
150
166
  export function decodeStreamFrame(frame: Uint8Array): ZLinkStreamFrame {
@@ -160,8 +176,13 @@ export function encodeStreamHeader(header: ZLinkStreamFrameHeader): Uint8Array {
160
176
  const hasMetadata = header.metadata.size > 0;
161
177
  const hasCorrelation = header.correlationId !== undefined && header.correlationId.length > 0;
162
178
  const hasFlow = header.flowId !== undefined || header.flowOrigin !== undefined;
163
- if (header.kind === ZLinkStreamMessageKind.Control && (hasCorrelation || hasRequestSeq || hasMetadata || hasFlow)) {
164
- throw new Error('Control packet must not contain a request sequence, metadata, correlation id, or flow id.');
179
+ if (
180
+ header.kind === ZLinkStreamMessageKind.Control &&
181
+ (hasCorrelation || hasRequestSeq || hasMetadata || hasFlow)
182
+ ) {
183
+ throw new Error(
184
+ 'Control packet must not contain a request sequence, metadata, correlation id, or flow id.'
185
+ );
165
186
  }
166
187
  // Explicit construction: this runs for every outbound frame, so avoid a
167
188
  // per-message spread of the whole header.
@@ -178,10 +199,7 @@ export function encodeStreamHeader(header: ZLinkStreamFrameHeader): Uint8Array {
178
199
  });
179
200
  }
180
201
 
181
- export function decodeStreamHeader(
182
- header: Uint8Array,
183
- flowEnabled = true
184
- ): ZLinkStreamFrameHeader {
202
+ export function decodeStreamHeader(header: Uint8Array, flowEnabled = true): ZLinkStreamFrameHeader {
185
203
  const decoded = decodeStreamWireHeader(header, undefined, flowEnabled);
186
204
  const kind = decoded.kind as ZLinkStreamMessageKind;
187
205
  const flags = decoded.flags as ZLinkStreamHeaderFlags;
@@ -189,16 +207,21 @@ export function decodeStreamHeader(
189
207
  const hasMetadata = (flags & ZLinkStreamHeaderFlags.HasMetadata) !== 0;
190
208
  const hasCorrelation = (flags & ZLinkStreamHeaderFlags.HasCorrelationId) !== 0;
191
209
  const hasFlow = (flags & ZLinkStreamHeaderFlags.HasFlowId) !== 0;
192
- if (kind === ZLinkStreamMessageKind.Control && (hasCorrelation || hasRequestSeq || hasMetadata || hasFlow)) {
193
- throw new Error('Control packet must not contain a request sequence, metadata, correlation id, or flow id.');
210
+ if (
211
+ kind === ZLinkStreamMessageKind.Control &&
212
+ (hasCorrelation || hasRequestSeq || hasMetadata || hasFlow)
213
+ ) {
214
+ throw new Error(
215
+ 'Control packet must not contain a request sequence, metadata, correlation id, or flow id.'
216
+ );
194
217
  }
195
218
  const metadata = publicStreamMetadata(decoded.metadata);
196
219
  return {
197
220
  kind,
198
221
  codec: decoded.codec as ZLinkStreamCodec,
199
- flags: (metadata.size === 0
200
- ? flags & ~ZLinkStreamHeaderFlags.HasMetadata
201
- : flags) & (flowEnabled ? ~0 : ~ZLinkStreamHeaderFlags.HasFlowId),
222
+ flags:
223
+ (metadata.size === 0 ? flags & ~ZLinkStreamHeaderFlags.HasMetadata : flags) &
224
+ (flowEnabled ? ~0 : ~ZLinkStreamHeaderFlags.HasFlowId),
202
225
  requestSeq: decoded.requestSeq,
203
226
  name: decoded.name,
204
227
  metadata,
@@ -208,7 +231,9 @@ export function decodeStreamHeader(
208
231
  };
209
232
  }
210
233
 
211
- export function actorRequestDeadlineMetadata(deadlineUnixMs: number | undefined): ReadonlyMap<string, string> {
234
+ export function actorRequestDeadlineMetadata(
235
+ deadlineUnixMs: number | undefined
236
+ ): ReadonlyMap<string, string> {
212
237
  return deadlineUnixMs === undefined
213
238
  ? EMPTY_STREAM_METADATA
214
239
  : new Map([[actorRequestDeadlineMetadataKey, String(deadlineUnixMs)]]);
@@ -250,18 +275,20 @@ export function createStreamReplyHeader(
250
275
  // observation-only and is not copied into the reply when tracing is Off
251
276
  // (spec 27 §4, §7).
252
277
  correlationId: requestHeader.correlationId,
253
- ...(includeFlow
254
- ? { flowId: requestHeader.flowId, flowOrigin: requestHeader.flowOrigin }
255
- : {})
278
+ ...(includeFlow ? { flowId: requestHeader.flowId, flowOrigin: requestHeader.flowOrigin } : {})
256
279
  };
257
280
  }
258
281
 
259
282
  function encodeFlowOrigin(origin: ZLinkFlowOrigin | undefined): number | undefined {
260
- return origin === undefined ? undefined : ({ Inbound: 1, Timer: 2, Application: 3, Lifecycle: 4 } as const)[origin];
283
+ return origin === undefined
284
+ ? undefined
285
+ : ({ Inbound: 1, Timer: 2, Application: 3, Lifecycle: 4 } as const)[origin];
261
286
  }
262
287
 
263
288
  function decodeFlowOrigin(origin: number | undefined): ZLinkFlowOrigin | undefined {
264
- return origin === undefined ? undefined : ({ 1: 'Inbound', 2: 'Timer', 3: 'Application', 4: 'Lifecycle' } as const)[origin];
289
+ return origin === undefined
290
+ ? undefined
291
+ : ({ 1: 'Inbound', 2: 'Timer', 3: 'Application', 4: 'Lifecycle' } as const)[origin];
265
292
  }
266
293
 
267
294
  export function messageToBytes(message: Message): Uint8Array {
@@ -286,6 +313,9 @@ export function lz4Pickle(payload: Uint8Array): Uint8Array {
286
313
  return lz4PickleUncompressed(payload);
287
314
  }
288
315
 
289
- export function lz4Unpickle(payload: Uint8Array, maxDecompressedSize = defaultMaxDecompressedPayloadSize): Uint8Array {
316
+ export function lz4Unpickle(
317
+ payload: Uint8Array,
318
+ maxDecompressedSize = defaultMaxDecompressedPayloadSize
319
+ ): Uint8Array {
290
320
  return lz4UnpicklePayload(payload, maxDecompressedSize);
291
321
  }