@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
@@ -84,7 +84,7 @@ export class ZLinkRoutedSpotPacketDispatch {
84
84
  request: unknown,
85
85
  context: ZLinkRoutedSpotPacketContext
86
86
  ): Promise<TReply> {
87
- return await this.dispatch(spotId, packetName, () => request, context, true) as TReply;
87
+ return (await this.dispatch(spotId, packetName, () => request, context, true)) as TReply;
88
88
  }
89
89
 
90
90
  async requestEncoded<TReply>(
@@ -93,7 +93,7 @@ export class ZLinkRoutedSpotPacketDispatch {
93
93
  decodePayload: () => unknown,
94
94
  context: ZLinkRoutedSpotPacketContext
95
95
  ): Promise<TReply> {
96
- return await this.dispatch(spotId, packetName, decodePayload, context, true) as TReply;
96
+ return (await this.dispatch(spotId, packetName, decodePayload, context, true)) as TReply;
97
97
  }
98
98
 
99
99
  private async dispatch(
@@ -112,10 +112,13 @@ export class ZLinkRoutedSpotPacketDispatch {
112
112
  throw new ZLinkConfigurationException(`Spot '${spotId}' is not active.`);
113
113
  }
114
114
 
115
- const registrations = activation.handlers.snapshot().filter((registration) =>
116
- registration.kind === 'packet' &&
117
- (registration.packetName ?? registration.handlerType.name) === (packetName ?? '')
118
- );
115
+ const registrations = activation.handlers
116
+ .snapshot()
117
+ .filter(
118
+ (registration) =>
119
+ registration.kind === 'packet' &&
120
+ (registration.packetName ?? registration.handlerType.name) === (packetName ?? '')
121
+ );
119
122
  if (registrations.length === 0) {
120
123
  this.reportMissing(spotId, packetName, context, returnResponse);
121
124
  if (!returnResponse) {
@@ -128,16 +131,18 @@ export class ZLinkRoutedSpotPacketDispatch {
128
131
  let detached = false;
129
132
  let resolveFirstHandlerTurn: (() => void) | undefined;
130
133
  let rejectFirstHandlerTurn: ((error: unknown) => void) | undefined;
131
- const firstHandlerTurn = context.awaitFirstHandlerTurn === true
132
- ? new Promise<void>((resolve, reject) => {
133
- resolveFirstHandlerTurn = resolve;
134
- rejectFirstHandlerTurn = reject;
135
- })
136
- : undefined;
134
+ const firstHandlerTurn =
135
+ context.awaitFirstHandlerTurn === true
136
+ ? new Promise<void>((resolve, reject) => {
137
+ resolveFirstHandlerTurn = resolve;
138
+ rejectFirstHandlerTurn = reject;
139
+ })
140
+ : undefined;
137
141
  void firstHandlerTurn?.catch(() => undefined);
138
- const applicationClaim = activation.meshName === undefined
139
- ? undefined
140
- : this.options.claimApplicationWork?.(activation.meshName);
142
+ const applicationClaim =
143
+ activation.meshName === undefined
144
+ ? undefined
145
+ : this.options.claimApplicationWork?.(activation.meshName);
141
146
  const runHandler = async () => {
142
147
  try {
143
148
  // Decode only after the Spot has acquired both application admission
@@ -147,8 +152,8 @@ export class ZLinkRoutedSpotPacketDispatch {
147
152
  const handler = await resolveLifecycleHandler(
148
153
  activation.spot,
149
154
  registration.handlerType as Type<
150
- ZLinkSpotPacketHandler<ZLinkSpot, unknown> |
151
- ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
155
+ | ZLinkSpotPacketHandler<ZLinkSpot, unknown>
156
+ | ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
152
157
  >,
153
158
  this.options.providerResolver
154
159
  );
@@ -217,16 +222,18 @@ export class ZLinkRoutedSpotPacketDispatch {
217
222
  returnResponse: boolean,
218
223
  error: unknown
219
224
  ): void {
220
- const frameworkErrorKind = error instanceof ZLinkFrameworkException
221
- ? internalFrameworkErrorKind(error)
222
- : undefined;
225
+ const frameworkErrorKind =
226
+ error instanceof ZLinkFrameworkException ? internalFrameworkErrorKind(error) : undefined;
223
227
  this.options.dispatchErrors?.report({
224
228
  surface: ZLinkDispatchErrorSurface.SpotRoute,
225
- messageKind: returnResponse ? ZLinkDispatchMessageKind.Request : ZLinkDispatchMessageKind.Send,
226
- reason: frameworkErrorKind === ZLinkFrameworkInternalErrorKind.WorkerQueueFull
227
- || frameworkErrorKind === ZLinkFrameworkInternalErrorKind.DeadlineExceeded
228
- ? ZLinkDispatchErrorReason.Backpressure
229
- : ZLinkDispatchErrorReason.HandlerException,
229
+ messageKind: returnResponse
230
+ ? ZLinkDispatchMessageKind.Request
231
+ : ZLinkDispatchMessageKind.Send,
232
+ reason:
233
+ frameworkErrorKind === ZLinkFrameworkInternalErrorKind.WorkerQueueFull ||
234
+ frameworkErrorKind === ZLinkFrameworkInternalErrorKind.DeadlineExceeded
235
+ ? ZLinkDispatchErrorReason.Backpressure
236
+ : ZLinkDispatchErrorReason.HandlerException,
230
237
  action: returnResponse ? ZLinkDispatchErrorAction.FailCaller : ZLinkDispatchErrorAction.Drop,
231
238
  packetName,
232
239
  channelName: context.channelName,
@@ -243,7 +250,9 @@ export class ZLinkRoutedSpotPacketDispatch {
243
250
  ): void {
244
251
  this.options.dispatchErrors?.report({
245
252
  surface: ZLinkDispatchErrorSurface.SpotRoute,
246
- messageKind: returnResponse ? ZLinkDispatchMessageKind.Request : ZLinkDispatchMessageKind.Send,
253
+ messageKind: returnResponse
254
+ ? ZLinkDispatchMessageKind.Request
255
+ : ZLinkDispatchMessageKind.Send,
247
256
  reason: ZLinkDispatchErrorReason.HandlerMissing,
248
257
  action: returnResponse ? ZLinkDispatchErrorAction.FailCaller : ZLinkDispatchErrorAction.Drop,
249
258
  packetName,
@@ -1,8 +1,5 @@
1
1
  import type { RoutingId } from '../../contracts/Common';
2
- import type {
3
- ZLinkFrameworkRuntimeState,
4
- ZLinkSpotKind
5
- } from '../../contracts';
2
+ import type { ZLinkFrameworkRuntimeState, ZLinkSpotKind } from '../../contracts';
6
3
 
7
4
  export interface ZLinkSpotRouteResolver {
8
5
  resolve(spotId: RoutingId, signal?: AbortSignal): Promise<ZLinkSpotRouteTarget>;
@@ -106,10 +106,7 @@ export interface ZLinkSpotActorTransferRuntime {
106
106
  bindRoutedActorRef(actor: ZLinkActor, actorRef: ActorRef): void;
107
107
  commitRoutedActor(actor: ZLinkActor, spotId: RoutingId, spot: ZLinkSpot): void;
108
108
  clearRoutedActor(actor: ZLinkActor): void;
109
- rollbackNativeActorJoin(
110
- actor: ZLinkActor,
111
- snapshot: ZLinkNativeActorJoinSnapshot
112
- ): Promise<void>;
109
+ rollbackNativeActorJoin(actor: ZLinkActor, snapshot: ZLinkNativeActorJoinSnapshot): Promise<void>;
113
110
  rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
114
111
  notifyCoreSourceLeave(actor: ZLinkActor, callback: () => Promise<void>): Promise<void>;
115
112
  actorEntryNodeRid(actor: ZLinkActor): RoutingId | undefined;
@@ -154,7 +151,10 @@ export interface ZLinkSpotBoundSessionRuntime {
154
151
  actorPacketTarget?: unknown,
155
152
  signal?: AbortSignal
156
153
  ): Promise<void>;
157
- rememberRemoteBoundSessionTarget(actorId: string, target: ZLinkRemoteBoundSessionTarget | undefined): void;
154
+ rememberRemoteBoundSessionTarget(
155
+ actorId: string,
156
+ target: ZLinkRemoteBoundSessionTarget | undefined
157
+ ): void;
158
158
  resolveRemoteBoundSessionTarget(
159
159
  sourceNodeRid: RoutingId,
160
160
  sourceSessionRid: RoutingId
@@ -72,9 +72,8 @@ export class ZLinkSpotSerialExecutor {
72
72
  ): readonly Promise<void>[] {
73
73
  const serial = this.actorSerial(actorId);
74
74
  return this.actorExecutor(actorId).admitDurablePrefix(
75
- records.map(record => ({
76
- operation: executeChild =>
77
- record.operation(child => executeChild(() => child(serial))),
75
+ records.map((record) => ({
76
+ operation: (executeChild) => record.operation((child) => executeChild(() => child(serial))),
78
77
  preparation: record.preparation,
79
78
  workOptions: record.workOptions
80
79
  }))
@@ -110,18 +109,15 @@ export class ZLinkSpotSerialExecutor {
110
109
  close(): Promise<void> {
111
110
  if (this.closePromise !== undefined) return this.closePromise;
112
111
  this.closing = true;
113
- const childSerials = [
114
- ...this.actorSerials.values(),
115
- ...this.timerSerials.values()
116
- ];
112
+ const childSerials = [...this.actorSerials.values(), ...this.timerSerials.values()];
117
113
  const actorExecutors = [...this.actorExecutors.values()];
118
114
  this.actorSerials.clear();
119
115
  this.timerSerials.clear();
120
116
  this.actorExecutors.clear();
121
117
  this.closePromise = Promise.all([
122
118
  this.spotSerial.close(),
123
- ...childSerials.map(serial => serial.close()),
124
- ...actorExecutors.map(executor => executor.close())
119
+ ...childSerials.map((serial) => serial.close()),
120
+ ...actorExecutors.map((executor) => executor.close())
125
121
  ]).then(() => undefined);
126
122
  return this.closePromise;
127
123
  }
@@ -69,18 +69,14 @@ export class ZLinkSpotSerialTurnExecutor {
69
69
 
70
70
  /** Distinguishes a gate-owning turn from a suspended AsyncLocalStorage tail. */
71
71
  isActiveTurn(turn: ZLinkSpotSerialTurn, turnId: number): boolean {
72
- return this.depth > 0
73
- && (
74
- this.resumedOwnerTurn === turn
75
- || (turnId === this.activeTurnId && !turn.isSuspended)
76
- );
72
+ return (
73
+ this.depth > 0 &&
74
+ (this.resumedOwnerTurn === turn || (turnId === this.activeTurnId && !turn.isSuspended))
75
+ );
77
76
  }
78
77
 
79
78
  setExecutionBarrier(barrier: ZLinkExecutionBarrier): void {
80
- if (
81
- this.executionBarrier !== undefined
82
- && this.executionBarrier !== barrier
83
- ) {
79
+ if (this.executionBarrier !== undefined && this.executionBarrier !== barrier) {
84
80
  throw new Error('ZLink Spot serial executor already belongs to another execution barrier.');
85
81
  }
86
82
  if (this.turnSequence !== 0 && this.executionBarrier === undefined) {
@@ -90,10 +86,7 @@ export class ZLinkSpotSerialTurnExecutor {
90
86
  }
91
87
 
92
88
  /** Runs `operation` in serial order, one turn at a time. */
93
- execute<T>(
94
- operation: () => Promise<T> | T,
95
- workOptions?: ZLinkSerialWorkOptions
96
- ): Promise<T> {
89
+ execute<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions): Promise<T> {
97
90
  if (this.isCurrentTurn) {
98
91
  throw createInternalFrameworkException(
99
92
  ZLinkFrameworkInternalErrorKind.InvalidOperation,
@@ -108,10 +101,7 @@ export class ZLinkSpotSerialTurnExecutor {
108
101
  * from within the currently active turn. Detached completion callbacks use
109
102
  * this so they never run inline inside another callback's turn.
110
103
  */
111
- post<T>(
112
- operation: () => Promise<T> | T,
113
- workOptions?: ZLinkSerialWorkOptions
114
- ): Promise<T> {
104
+ post<T>(operation: () => Promise<T> | T, workOptions?: ZLinkSerialWorkOptions): Promise<T> {
115
105
  return this.enqueueApplicationTurn(operation, workOptions);
116
106
  }
117
107
 
@@ -142,7 +132,7 @@ export class ZLinkSpotSerialTurnExecutor {
142
132
  const submitted = hasApplicationJobPermit()
143
133
  ? this.scheduler.submitPreAdmitted(boundOperation, options, barrierClaim)
144
134
  : this.scheduler.submit(boundOperation, options, barrierClaim);
145
- void submitted.catch(error => {
135
+ void submitted.catch((error) => {
146
136
  barrierClaim?.release();
147
137
  onError(error);
148
138
  });
@@ -194,9 +184,7 @@ export class ZLinkSpotSerialTurnExecutor {
194
184
  return await this.submitQueuedTurn(operation, workOptions);
195
185
  }
196
186
 
197
- private async enqueueContinuationTurn<T>(
198
- operation: () => Promise<T> | T
199
- ): Promise<T> {
187
+ private async enqueueContinuationTurn<T>(operation: () => Promise<T> | T): Promise<T> {
200
188
  this.lastActivityAtMs = performance.now();
201
189
  await Promise.resolve();
202
190
  return await this.scheduler.submitContinuation(operation);
@@ -274,7 +262,10 @@ export class ZLinkSpotSerialTurnExecutor {
274
262
  );
275
263
  owner.then(resolve, reject);
276
264
  return Promise.race([
277
- owner.then(() => undefined, () => undefined),
265
+ owner.then(
266
+ () => undefined,
267
+ () => undefined
268
+ ),
278
269
  turn.suspended
279
270
  ]);
280
271
  }
@@ -287,10 +278,12 @@ export class ZLinkSpotSerialTurnExecutor {
287
278
  const barrier = this.executionBarrier;
288
279
  const resumeClaim = barrier?.tryEnter();
289
280
  if (barrier !== undefined && resumeClaim === undefined) {
290
- reject(createInternalFrameworkException(
291
- ZLinkFrameworkInternalErrorKind.SpotMoving,
292
- 'The yielded Spot turn cannot resume after its execution unit was sealed.'
293
- ));
281
+ reject(
282
+ createInternalFrameworkException(
283
+ ZLinkFrameworkInternalErrorKind.SpotMoving,
284
+ 'The yielded Spot turn cannot resume after its execution unit was sealed.'
285
+ )
286
+ );
294
287
  return true;
295
288
  }
296
289
  turn.bindExecutionClaim(resumeClaim);
@@ -59,9 +59,11 @@ export class ZLinkSpotSubscriptionDispatch {
59
59
 
60
60
  configure(registrations: readonly ZLinkSpotHandlerRegistration[]): void {
61
61
  for (const registration of registrations) {
62
- if (registration.kind !== 'subscribe'
63
- || registration.channelName === undefined
64
- || registration.topic === undefined) {
62
+ if (
63
+ registration.kind !== 'subscribe' ||
64
+ registration.channelName === undefined ||
65
+ registration.topic === undefined
66
+ ) {
65
67
  continue;
66
68
  }
67
69
  const key = subscriptionKey(registration.channelName, registration.topic);
@@ -163,7 +165,9 @@ export class ZLinkSpotSubscriptionDispatch {
163
165
  });
164
166
  return;
165
167
  }
166
- const registrations = this.handlers.get(subscriptionKey(envelope.header.channelName, message.topic));
168
+ const registrations = this.handlers.get(
169
+ subscriptionKey(envelope.header.channelName, message.topic)
170
+ );
167
171
  if (registrations === undefined || registrations.length === 0) {
168
172
  this.options.dispatchErrors?.report({
169
173
  surface: ZLinkDispatchErrorSurface.SpotSubscription,
@@ -186,49 +190,55 @@ export class ZLinkSpotSubscriptionDispatch {
186
190
  this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true
187
191
  );
188
192
  try {
189
- await this.options.serial.execute(() => runWithFlow(inboundFlow, async () => {
190
- // Payload deserialization belongs to the Spot serial turn. Queue
191
- // admission and execution authority therefore precede this work.
192
- const event = decodeChannelPayload(envelope, this.channelCodecs());
193
- for (const registration of registrations) {
194
- const handler = await resolveLifecycleHandler(
195
- spot,
196
- registration.handlerType as Type<ZLinkSpotSubscriptionHandler<ZLinkSpot, unknown>>,
197
- this.options.providerResolver
198
- );
199
- try {
200
- await handler.handle(spot, event, {
201
- channelName: envelope.header.channelName,
202
- contentType: envelope.header.contentType,
203
- packetName: envelope.packetName!,
204
- topic: message.topic,
205
- source: subSource,
206
- metadata: zlinkMessageMetadata(envelope.header.metadata),
207
- correlationId: envelope.header.correlationId ?? undefined
208
- });
209
- } catch (error) {
210
- this.options.dispatchErrors?.report({
211
- surface: ZLinkDispatchErrorSurface.SpotSubscription,
212
- messageKind: ZLinkDispatchMessageKind.Send,
213
- reason: ZLinkDispatchErrorReason.HandlerException,
214
- action: ZLinkDispatchErrorAction.Drop,
215
- packetName: envelope.packetName,
216
- channelName: envelope.header.channelName,
217
- topic: message.topic,
218
- sourceRid: message.routingId === null ? undefined : String(message.routingId),
219
- correlationId: envelope.header.correlationId ?? undefined,
220
- error
221
- });
222
- throw error;
223
- }
224
- }
225
- }), zlinkSerialWorkOptions(
226
- envelope.payload.byteLength,
227
- zlinkMetadataByteLength(envelope.header.metadata)
228
- ));
193
+ await this.options.serial.execute(
194
+ () =>
195
+ runWithFlow(inboundFlow, async () => {
196
+ // Payload deserialization belongs to the Spot serial turn. Queue
197
+ // admission and execution authority therefore precede this work.
198
+ const event = decodeChannelPayload(envelope, this.channelCodecs());
199
+ for (const registration of registrations) {
200
+ const handler = await resolveLifecycleHandler(
201
+ spot,
202
+ registration.handlerType as Type<ZLinkSpotSubscriptionHandler<ZLinkSpot, unknown>>,
203
+ this.options.providerResolver
204
+ );
205
+ try {
206
+ await handler.handle(spot, event, {
207
+ channelName: envelope.header.channelName,
208
+ contentType: envelope.header.contentType,
209
+ packetName: envelope.packetName!,
210
+ topic: message.topic,
211
+ source: subSource,
212
+ metadata: zlinkMessageMetadata(envelope.header.metadata),
213
+ correlationId: envelope.header.correlationId ?? undefined
214
+ });
215
+ } catch (error) {
216
+ this.options.dispatchErrors?.report({
217
+ surface: ZLinkDispatchErrorSurface.SpotSubscription,
218
+ messageKind: ZLinkDispatchMessageKind.Send,
219
+ reason: ZLinkDispatchErrorReason.HandlerException,
220
+ action: ZLinkDispatchErrorAction.Drop,
221
+ packetName: envelope.packetName,
222
+ channelName: envelope.header.channelName,
223
+ topic: message.topic,
224
+ sourceRid: message.routingId === null ? undefined : String(message.routingId),
225
+ correlationId: envelope.header.correlationId ?? undefined,
226
+ error
227
+ });
228
+ throw error;
229
+ }
230
+ }
231
+ }),
232
+ zlinkSerialWorkOptions(
233
+ envelope.payload.byteLength,
234
+ zlinkMetadataByteLength(envelope.header.metadata)
235
+ )
236
+ );
229
237
  } catch (error) {
230
- if (error instanceof ZLinkFrameworkException
231
- && internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed) {
238
+ if (
239
+ error instanceof ZLinkFrameworkException &&
240
+ internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed
241
+ ) {
232
242
  this.options.dispatchErrors?.report({
233
243
  surface: ZLinkDispatchErrorSurface.SpotSubscription,
234
244
  messageKind: ZLinkDispatchMessageKind.Send,