@zlink-systems/framework 0.21.0 → 0.23.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 (516) 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/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -60,7 +60,11 @@ export function encodeNodeRequestHeader(correlation: bigint): Buffer {
60
60
 
61
61
  export function decodeNodeRequestHeader(frame: Uint8Array): bigint {
62
62
  const header = decodeHeader(frame);
63
- if (header.command !== M6aServiceWireCommand.nodeRequest || header.flags !== 0 || frame.byteLength !== 13) {
63
+ if (
64
+ header.command !== M6aServiceWireCommand.nodeRequest ||
65
+ header.flags !== 0 ||
66
+ frame.byteLength !== 13
67
+ ) {
64
68
  fail('Invalid nodeRequest header.');
65
69
  }
66
70
  return readNonZeroU64(asBuffer(frame), PREFIX_SIZE, 'correlation');
@@ -88,9 +92,10 @@ export function encodeChannelRequestHeader(correlation: bigint, channelName: str
88
92
  );
89
93
  }
90
94
 
91
- export function decodeChannelRequestHeader(
92
- frame: Uint8Array
93
- ): { readonly correlation: bigint; readonly channelName: string } {
95
+ export function decodeChannelRequestHeader(frame: Uint8Array): {
96
+ readonly correlation: bigint;
97
+ readonly channelName: string;
98
+ } {
94
99
  const header = decodeHeader(frame);
95
100
  if (header.command !== M6aServiceWireCommand.channelRequest || header.flags !== 0) {
96
101
  fail('Invalid channelRequest header.');
@@ -126,7 +131,11 @@ export function encodeReplyHeader(
126
131
 
127
132
  export function decodeReplyHeader(frame: Uint8Array): ServiceReplyHeader {
128
133
  const header = decodeHeader(frame);
129
- if (header.command !== M6aServiceWireCommand.reply || header.flags !== 0 || frame.byteLength < 21) {
134
+ if (
135
+ header.command !== M6aServiceWireCommand.reply ||
136
+ header.flags !== 0 ||
137
+ frame.byteLength < 21
138
+ ) {
130
139
  fail('Invalid reply header.');
131
140
  }
132
141
  const bytes = asBuffer(frame);
@@ -147,10 +156,8 @@ export function encodeApplicationPayload(payload: ServiceApplicationPayload): Bu
147
156
  const packetName = encodeText8(payload.packetName, 'packetName');
148
157
  const contentType = encodeText8(payload.contentType, 'contentType');
149
158
  if (payload.payload.byteLength > MAX_U32) fail('Application payload exceeds u32.');
150
- const bodyLength = packetName.byteLength
151
- + contentType.byteLength
152
- + 4
153
- + payload.payload.byteLength;
159
+ const bodyLength =
160
+ packetName.byteLength + contentType.byteLength + 4 + payload.payload.byteLength;
154
161
  if (bodyLength > MAX_U32) fail('Application payload body exceeds u32.');
155
162
  const result = Buffer.alloc(5 + bodyLength);
156
163
  result[0] = 1;
@@ -160,11 +167,10 @@ export function encodeApplicationPayload(payload: ServiceApplicationPayload): Bu
160
167
  offset += contentType.copy(result, offset);
161
168
  result.writeUInt32BE(payload.payload.byteLength, offset);
162
169
  offset += 4;
163
- Buffer.from(
164
- payload.payload.buffer,
165
- payload.payload.byteOffset,
166
- payload.payload.byteLength
167
- ).copy(result, offset);
170
+ Buffer.from(payload.payload.buffer, payload.payload.byteOffset, payload.payload.byteLength).copy(
171
+ result,
172
+ offset
173
+ );
168
174
  return result;
169
175
  }
170
176
 
@@ -188,10 +194,7 @@ export function encodeMultipartApplicationPayload(
188
194
  multipartLength += 4 + part.byteLength;
189
195
  if (multipartLength > MAX_U32) fail('Multipart payload exceeds u32.');
190
196
  }
191
- const bodyLength = packetNameBytes.byteLength
192
- + contentTypeBytes.byteLength
193
- + 4
194
- + multipartLength;
197
+ const bodyLength = packetNameBytes.byteLength + contentTypeBytes.byteLength + 4 + multipartLength;
195
198
  if (bodyLength > MAX_U32) fail('Application payload body exceeds u32.');
196
199
  const result = Buffer.alloc(5 + bodyLength);
197
200
  result[0] = 1;
@@ -277,10 +280,13 @@ export function encodeRouteMeshAdmission(
277
280
  const extension = concat(
278
281
  tlv(1, Buffer.of(stateToWire(descriptor.state))),
279
282
  tlv(2, encodeU64(descriptor.applicationVersion)),
280
- tlv(6, concat(
281
- encodeU16(descriptor.protocolCapabilities.length),
282
- ...descriptor.protocolCapabilities.map(value => encodeText8(value, 'protocolCapability'))
283
- )),
283
+ tlv(
284
+ 6,
285
+ concat(
286
+ encodeU16(descriptor.protocolCapabilities.length),
287
+ ...descriptor.protocolCapabilities.map((value) => encodeText8(value, 'protocolCapability'))
288
+ )
289
+ ),
284
290
  tlv(7, Buffer.of(roleToWire(descriptor.objectRole))),
285
291
  tlv(8, encodeU32(descriptor.placementWeight)),
286
292
  tlv(9, encodeU32(descriptor.activeCapacityLimit)),
@@ -302,7 +308,8 @@ export function decodeRouteMeshAdmission(
302
308
  ): ServiceNodeDescriptor {
303
309
  validateAdmissionCommand(expectedCommand);
304
310
  const header = decodeHeader(frame);
305
- if (header.command !== expectedCommand || header.flags !== 0) fail('Unexpected admission header.');
311
+ if (header.command !== expectedCommand || header.flags !== 0)
312
+ fail('Unexpected admission header.');
306
313
  const reader = new Reader(frame, PREFIX_SIZE);
307
314
  if (reader.u8('topologyKind') !== 1) fail('Admission is not RouteMesh topology.');
308
315
  const routeLength = reader.u32('routeLength');
@@ -370,11 +377,11 @@ export function decodeRouteMeshAdmission(
370
377
  }
371
378
  reader.end();
372
379
  if (
373
- state === undefined
374
- || applicationVersion === undefined
375
- || protocolCapabilities === undefined
376
- || objectRole === undefined
377
- || ![8, 9, 10, 11, 12].every(id => capacities.has(id))
380
+ state === undefined ||
381
+ applicationVersion === undefined ||
382
+ protocolCapabilities === undefined ||
383
+ objectRole === undefined ||
384
+ ![8, 9, 10, 11, 12].every((id) => capacities.has(id))
378
385
  ) {
379
386
  fail('Descriptor extension omits a required field.');
380
387
  }
@@ -408,7 +415,11 @@ export function encodeReject(reason: number): Buffer {
408
415
 
409
416
  export function decodeReject(frame: Uint8Array): number {
410
417
  const header = decodeHeader(frame);
411
- if (header.command !== M6aServiceWireCommand.reject || header.flags !== 0 || frame.byteLength !== 9) {
418
+ if (
419
+ header.command !== M6aServiceWireCommand.reject ||
420
+ header.flags !== 0 ||
421
+ frame.byteLength !== 9
422
+ ) {
412
423
  fail('Invalid reject record.');
413
424
  }
414
425
  const reason = asBuffer(frame).readUInt32BE(PREFIX_SIZE);
@@ -476,7 +487,7 @@ function tlv(id: number, value: Buffer): Buffer {
476
487
  }
477
488
 
478
489
  function concat(...parts: readonly Uint8Array[]): Buffer {
479
- return Buffer.concat(parts.map(part => Buffer.from(part)));
490
+ return Buffer.concat(parts.map((part) => Buffer.from(part)));
480
491
  }
481
492
 
482
493
  function readNonZeroU64(bytes: Buffer, offset: number, field: string): bigint {
@@ -491,9 +502,9 @@ function asBuffer(value: Uint8Array): Buffer {
491
502
 
492
503
  function validateAdmissionCommand(command: number): void {
493
504
  if (
494
- command !== M6aServiceWireCommand.hello
495
- && command !== M6aServiceWireCommand.admit
496
- && command !== M6aServiceWireCommand.update
505
+ command !== M6aServiceWireCommand.hello &&
506
+ command !== M6aServiceWireCommand.admit &&
507
+ command !== M6aServiceWireCommand.update
497
508
  ) {
498
509
  fail('Command is not an admission record.');
499
510
  }
@@ -507,9 +518,9 @@ function validateReplyFields(correlation: bigint, terminal: number, failure: num
507
518
  // generated predicate replaces the old broad-category check, which
508
519
  // accepted any typed pairing and wrongly rejected defined codes 33/34.
509
520
  if (
510
- correlation <= 0n
511
- || correlation > MAX_U64
512
- || !isValidServiceWireTerminalFailure(terminal, failure)
521
+ correlation <= 0n ||
522
+ correlation > MAX_U64 ||
523
+ !isValidServiceWireTerminalFailure(terminal, failure)
513
524
  ) {
514
525
  fail('Invalid reply terminal fields.');
515
526
  }
@@ -520,23 +531,34 @@ function stateToWire(value: ServiceNodeState): number {
520
531
  // is a host-internal transition and has the same remote admission meaning
521
532
  // as `draining`; the service wire does not expose a separate retiring value.
522
533
  switch (value) {
523
- case 'preparing': return 0;
524
- case 'serving': return 1;
534
+ case 'preparing':
535
+ return 0;
536
+ case 'serving':
537
+ return 1;
525
538
  case 'retiring':
526
- case 'draining': return 2;
527
- case 'stopped': return 3;
528
- case 'error': return 4;
539
+ case 'draining':
540
+ return 2;
541
+ case 'stopped':
542
+ return 3;
543
+ case 'error':
544
+ return 4;
529
545
  }
530
546
  }
531
547
 
532
548
  function stateFromWire(value: number): ServiceNodeState {
533
549
  switch (value) {
534
- case 0: return 'preparing';
535
- case 1: return 'serving';
536
- case 2: return 'draining';
537
- case 3: return 'stopped';
538
- case 4: return 'error';
539
- default: fail('Invalid runtime state.');
550
+ case 0:
551
+ return 'preparing';
552
+ case 1:
553
+ return 'serving';
554
+ case 2:
555
+ return 'draining';
556
+ case 3:
557
+ return 'stopped';
558
+ case 4:
559
+ return 'error';
560
+ default:
561
+ fail('Invalid runtime state.');
540
562
  }
541
563
  }
542
564
 
@@ -51,7 +51,9 @@ export enum ZLinkFrameworkInternalErrorKind {
51
51
  ActorRouteUnavailable = 'actorRouteUnavailable'
52
52
  }
53
53
 
54
- const INTERNAL_TO_PUBLIC: Readonly<Record<ZLinkFrameworkInternalErrorKind, ZLinkFrameworkErrorKind>> = Object.freeze({
54
+ const INTERNAL_TO_PUBLIC: Readonly<
55
+ Record<ZLinkFrameworkInternalErrorKind, ZLinkFrameworkErrorKind>
56
+ > = Object.freeze({
55
57
  [ZLinkFrameworkInternalErrorKind.ActorRouteNotFound]: ZLinkFrameworkErrorKind.NotFound,
56
58
  [ZLinkFrameworkInternalErrorKind.ActorCreateFailed]: ZLinkFrameworkErrorKind.InternalFailure,
57
59
  [ZLinkFrameworkInternalErrorKind.ActorAlreadyExists]: ZLinkFrameworkErrorKind.AlreadyExists,
@@ -74,7 +76,8 @@ const INTERNAL_TO_PUBLIC: Readonly<Record<ZLinkFrameworkInternalErrorKind, ZLink
74
76
  [ZLinkFrameworkInternalErrorKind.WorkerFailed]: ZLinkFrameworkErrorKind.InternalFailure,
75
77
  [ZLinkFrameworkInternalErrorKind.ActorLocationStale]: ZLinkFrameworkErrorKind.Unavailable,
76
78
  [ZLinkFrameworkInternalErrorKind.ActorCreateRejected]: ZLinkFrameworkErrorKind.Rejected,
77
- [ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured]: ZLinkFrameworkErrorKind.NotConfigured,
79
+ [ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured]:
80
+ ZLinkFrameworkErrorKind.NotConfigured,
78
81
  [ZLinkFrameworkInternalErrorKind.MeshSelectionRequired]: ZLinkFrameworkErrorKind.NotConfigured,
79
82
  [ZLinkFrameworkInternalErrorKind.MeshNotFound]: ZLinkFrameworkErrorKind.NotFound,
80
83
  [ZLinkFrameworkInternalErrorKind.InvalidConfiguration]: ZLinkFrameworkErrorKind.NotConfigured,
@@ -90,13 +93,16 @@ const INTERNAL_TO_PUBLIC: Readonly<Record<ZLinkFrameworkInternalErrorKind, ZLink
90
93
  [ZLinkFrameworkInternalErrorKind.SpotIdConflict]: ZLinkFrameworkErrorKind.AlreadyExists,
91
94
  [ZLinkFrameworkInternalErrorKind.RuntimeShutdown]: ZLinkFrameworkErrorKind.ShuttingDown,
92
95
  [ZLinkFrameworkInternalErrorKind.RelocationDisabled]: ZLinkFrameworkErrorKind.Rejected,
93
- [ZLinkFrameworkInternalErrorKind.RelocationTargetUnavailable]: ZLinkFrameworkErrorKind.Unavailable,
96
+ [ZLinkFrameworkInternalErrorKind.RelocationTargetUnavailable]:
97
+ ZLinkFrameworkErrorKind.Unavailable,
94
98
  [ZLinkFrameworkInternalErrorKind.RelocationFailed]: ZLinkFrameworkErrorKind.InternalFailure,
95
99
  [ZLinkFrameworkInternalErrorKind.InvalidOperation]: ZLinkFrameworkErrorKind.InvalidOperation,
96
100
  [ZLinkFrameworkInternalErrorKind.ActorRouteUnavailable]: ZLinkFrameworkErrorKind.Unavailable
97
101
  });
98
102
 
99
- export const ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES: Readonly<Record<ZLinkFrameworkInternalErrorKind, number>> = Object.freeze({
103
+ export const ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES: Readonly<
104
+ Record<ZLinkFrameworkInternalErrorKind, number>
105
+ > = Object.freeze({
100
106
  [ZLinkFrameworkInternalErrorKind.ActorRouteNotFound]: 0,
101
107
  [ZLinkFrameworkInternalErrorKind.ActorCreateFailed]: 1,
102
108
  [ZLinkFrameworkInternalErrorKind.ActorAlreadyExists]: 2,
@@ -141,20 +147,22 @@ export const ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES: Readonly<Record<ZLinkFr
141
147
  [ZLinkFrameworkInternalErrorKind.ActorRouteUnavailable]: 41
142
148
  });
143
149
 
144
- const INTERNAL_KIND_BY_WIRE_FAILURE_CODE: ReadonlyMap<number, ZLinkFrameworkInternalErrorKind> = new Map<number, ZLinkFrameworkInternalErrorKind>([
145
- ...Object.entries(ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES)
146
- .map(([kind, code]) => [code + 1, kind as ZLinkFrameworkInternalErrorKind] as const),
147
- // Spec 32-framework-error-model:99-103 — a workerQueueFull(18) received in a
148
- // remote reply is the target's queue state and maps to Unavailable.
149
- [18, ZLinkFrameworkInternalErrorKind.RouteNotConnected]
150
- ]);
150
+ const INTERNAL_KIND_BY_WIRE_FAILURE_CODE: ReadonlyMap<number, ZLinkFrameworkInternalErrorKind> =
151
+ new Map<number, ZLinkFrameworkInternalErrorKind>([
152
+ ...Object.entries(ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES).map(
153
+ ([kind, code]) => [code + 1, kind as ZLinkFrameworkInternalErrorKind] as const
154
+ ),
155
+ // Spec 32-framework-error-model:99-103 — a workerQueueFull(18) received in a
156
+ // remote reply is the target's queue state and maps to Unavailable.
157
+ [18, ZLinkFrameworkInternalErrorKind.RouteNotConnected]
158
+ ]);
151
159
 
152
160
  const WIRE_TERMINAL_RESULT_BY_FAILURE_CODE: ReadonlyMap<number, number> = new Map([
153
- ...[1, 6, 8, 9, 10, 11, 14].map(code => [code, 102] as const),
154
- ...[2, 5, 13, 17, 19, 20, 35, 42].map(code => [code, 105] as const),
155
- ...[3, 4, 7, 21, 33, 34].map(code => [code, 107] as const),
156
- ...[12, 16].map(code => [code, 104] as const),
157
- ...[15, 18, 22].map(code => [code, 106] as const)
161
+ ...[1, 6, 8, 9, 10, 11, 14].map((code) => [code, 102] as const),
162
+ ...[2, 5, 13, 17, 19, 20, 35, 42].map((code) => [code, 105] as const),
163
+ ...[3, 4, 7, 21, 33, 34].map((code) => [code, 107] as const),
164
+ ...[12, 16].map((code) => [code, 104] as const),
165
+ ...[15, 18, 22].map((code) => [code, 106] as const)
158
166
  ]);
159
167
 
160
168
  const INTERNAL_KIND = new WeakMap<ZLinkFrameworkException, ZLinkFrameworkInternalErrorKind>();
@@ -249,10 +257,7 @@ export function wireReplyFailureException(
249
257
  message
250
258
  );
251
259
  }
252
- return new ZLinkFrameworkException(
253
- requestResultToPublicErrorKind(terminalResult),
254
- message
255
- );
260
+ return new ZLinkFrameworkException(requestResultToPublicErrorKind(terminalResult), message);
256
261
  }
257
262
 
258
263
  /**
@@ -280,9 +285,10 @@ export function internalFrameworkErrorCode(error: ZLinkFrameworkException): numb
280
285
  }
281
286
 
282
287
  /** Produces the canonical stateful wire terminal without leaking internal kinds. */
283
- export function internalFrameworkWireReply(
284
- error: ZLinkFrameworkException
285
- ): { readonly terminalResult: number; readonly failureCode: number } {
288
+ export function internalFrameworkWireReply(error: ZLinkFrameworkException): {
289
+ readonly terminalResult: number;
290
+ readonly failureCode: number;
291
+ } {
286
292
  const kind = INTERNAL_KIND.get(error);
287
293
  if (kind === ZLinkFrameworkInternalErrorKind.DeadlineExceeded) {
288
294
  return { terminalResult: 101, failureCode: 0 };
@@ -321,15 +327,10 @@ export function internalFrameworkErrorKindFromWireReply(
321
327
  return expectedTerminalResult === terminalResult ? kind : undefined;
322
328
  }
323
329
 
324
- const BOUNDARY_WIRE_TERMINAL_RESULTS = new Set([
325
- 101, 103, 108, 109, 110, 111, 112, 113
326
- ]);
330
+ const BOUNDARY_WIRE_TERMINAL_RESULTS = new Set([101, 103, 108, 109, 110, 111, 112, 113]);
327
331
 
328
332
  /** Checks the terminal and failure-code pair before a transport maps it. */
329
- export function isCanonicalWireReplyTerminal(
330
- terminalResult: number,
331
- failureCode: number
332
- ): boolean {
333
+ export function isCanonicalWireReplyTerminal(terminalResult: number, failureCode: number): boolean {
333
334
  if (terminalResult === 0) return failureCode === 0;
334
335
  if (BOUNDARY_WIRE_TERMINAL_RESULTS.has(terminalResult)) return failureCode === 0;
335
336
  return internalFrameworkErrorKindFromWireReply(terminalResult, failureCode) !== undefined;
@@ -38,12 +38,9 @@ interface LifecycleScopeDisposal {
38
38
  readonly idle: Promise<void> | undefined;
39
39
  }
40
40
 
41
- const HANDLER_SCOPE_FACTORY = Symbol.for(
42
- '@zlink-systems/framework.handler-instance-scope-factory'
43
- );
41
+ const HANDLER_SCOPE_FACTORY = Symbol.for('@zlink-systems/framework.handler-instance-scope-factory');
44
42
  const activeHandlerScope = new AsyncLocalStorage<ActiveHandlerScope>();
45
- const activeLifecycleScope =
46
- new AsyncLocalStorage<LifecycleHandlerInstanceScope>();
43
+ const activeLifecycleScope = new AsyncLocalStorage<LifecycleHandlerInstanceScope>();
47
44
  const detachedStateLaneResource = new AsyncResource('zlink:handler-instance-scope');
48
45
  const dispatchScopes = new WeakMap<object, ZLinkHandlerInstanceScope>();
49
46
  const lifecycleScopes = new WeakMap<object, Promise<LifecycleHandlerInstanceScope>>();
@@ -69,10 +66,7 @@ export async function runInHandlerInstanceScope<T>(
69
66
  dispatchScopes.set(context, scope);
70
67
  }
71
68
  try {
72
- return await activeHandlerScope.run(
73
- { scope },
74
- () => callback(scope)
75
- );
69
+ return await activeHandlerScope.run({ scope }, () => callback(scope));
76
70
  } finally {
77
71
  if (context !== undefined && dispatchScopes.get(context) === scope) {
78
72
  dispatchScopes.delete(context);
@@ -89,9 +83,7 @@ export async function resolveLifecycleHandler<T>(
89
83
  let scope = lifecycleScopes.get(owner);
90
84
  if (scope === undefined) {
91
85
  scope = Promise.resolve(
92
- new LifecycleHandlerInstanceScope(
93
- createHandlerInstanceScope(providerResolver)
94
- )
86
+ new LifecycleHandlerInstanceScope(createHandlerInstanceScope(providerResolver))
95
87
  );
96
88
  lifecycleScopes.set(owner, scope);
97
89
  }
@@ -107,9 +99,7 @@ export async function runWithLifecycleHandler<THandler, TResult>(
107
99
  let scope = lifecycleScopes.get(owner);
108
100
  if (scope === undefined) {
109
101
  scope = Promise.resolve(
110
- new LifecycleHandlerInstanceScope(
111
- createHandlerInstanceScope(providerResolver)
112
- )
102
+ new LifecycleHandlerInstanceScope(createHandlerInstanceScope(providerResolver))
113
103
  );
114
104
  lifecycleScopes.set(owner, scope);
115
105
  }
@@ -129,21 +119,22 @@ function createHandlerInstanceScope(
129
119
  providerResolver?: ZLinkProviderResolver,
130
120
  context?: ZLinkMessageContext
131
121
  ): ZLinkHandlerInstanceScope {
132
- const factory = providerResolver === undefined
133
- ? undefined
134
- : (providerResolver as unknown as Record<PropertyKey, unknown>)[HANDLER_SCOPE_FACTORY];
122
+ const factory =
123
+ providerResolver === undefined
124
+ ? undefined
125
+ : (providerResolver as unknown as Record<PropertyKey, unknown>)[HANDLER_SCOPE_FACTORY];
135
126
  if (isHandlerInstanceScopeFactory(factory)) {
136
127
  return factory.create(context);
137
128
  }
138
129
  return new DefaultHandlerInstanceScope(providerResolver);
139
130
  }
140
131
 
141
- function isHandlerInstanceScopeFactory(
142
- value: unknown
143
- ): value is ZLinkHandlerInstanceScopeFactory {
144
- return typeof value === 'object'
145
- && value !== null
146
- && typeof (value as { create?: unknown }).create === 'function';
132
+ function isHandlerInstanceScopeFactory(value: unknown): value is ZLinkHandlerInstanceScopeFactory {
133
+ return (
134
+ typeof value === 'object' &&
135
+ value !== null &&
136
+ typeof (value as { create?: unknown }).create === 'function'
137
+ );
147
138
  }
148
139
 
149
140
  class DefaultHandlerInstanceScope implements ZLinkHandlerInstanceScope {
@@ -205,8 +196,7 @@ class DefaultHandlerInstanceScope implements ZLinkHandlerInstanceScope {
205
196
  private async activate<T>(type: Type<T>, activation: Deferred<unknown>): Promise<void> {
206
197
  let instance: T;
207
198
  try {
208
- instance = await this.providerResolver?.create?.(type)
209
- ?? new type();
199
+ instance = (await this.providerResolver?.create?.(type)) ?? new type();
210
200
  } catch (error) {
211
201
  activation.reject(error);
212
202
  return;
@@ -258,9 +248,8 @@ class LifecycleHandlerInstanceScope {
258
248
  ): Promise<TResult> {
259
249
  await this.lane.run(() => this.beginInvocationCore());
260
250
  try {
261
- return await activeLifecycleScope.run(
262
- this,
263
- async () => callback(await this.instances.resolve(type))
251
+ return await activeLifecycleScope.run(this, async () =>
252
+ callback(await this.instances.resolve(type))
264
253
  );
265
254
  } finally {
266
255
  await this.lane.run(() => this.completeInvocationCore());
@@ -1,9 +1,12 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import {
3
6
  type Type,
4
7
  type ZLinkHandlerFilterNext,
5
8
  type ZLinkHandlerFilter,
6
- type ZLinkHandlerFilterContext,
9
+ type ZLinkHandlerFilterContext
7
10
  } from '../../contracts';
8
11
  import {
9
12
  readZLinkDecoratorMetadata,
@@ -20,7 +23,9 @@ export interface ZLinkHandlerExposurePolicy {
20
23
  readonly explicitHandlers?: readonly Type[];
21
24
  }
22
25
 
23
- export function scanZLinkHandlerTypes(handlerTypes: readonly Type[]): readonly ZLinkHandlerDescriptor[] {
26
+ export function scanZLinkHandlerTypes(
27
+ handlerTypes: readonly Type[]
28
+ ): readonly ZLinkHandlerDescriptor[] {
24
29
  return handlerTypes.flatMap((handlerType) =>
25
30
  readZLinkDecoratorMetadata(handlerType)
26
31
  .filter((metadata) => metadata.kind !== 'handlerGroup' && metadata.kind !== 'packet')
@@ -43,7 +48,10 @@ export function exposeZLinkHandlers(
43
48
  return false;
44
49
  }
45
50
  return readZLinkDecoratorMetadata(descriptor.handlerType).some(
46
- (metadata) => metadata.kind === 'handlerGroup' && metadata.groupName !== undefined && groups.has(metadata.groupName)
51
+ (metadata) =>
52
+ metadata.kind === 'handlerGroup' &&
53
+ metadata.groupName !== undefined &&
54
+ groups.has(metadata.groupName)
47
55
  );
48
56
  });
49
57
  }
@@ -82,10 +90,12 @@ function invokeAtMostOnce(next: ZLinkHandlerFilterNext): ZLinkHandlerFilterNext
82
90
  let invoked = false;
83
91
  return () => {
84
92
  if (invoked) {
85
- return Promise.reject(createInternalFrameworkException(
86
- ZLinkFrameworkInternalErrorKind.InvalidOperation,
87
- 'A handler filter cannot invoke next more than once.'
88
- ));
93
+ return Promise.reject(
94
+ createInternalFrameworkException(
95
+ ZLinkFrameworkInternalErrorKind.InvalidOperation,
96
+ 'A handler filter cannot invoke next more than once.'
97
+ )
98
+ );
89
99
  }
90
100
  invoked = true;
91
101
  return next();