@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
@@ -4,7 +4,7 @@ import type {
4
4
  ZLinkEntrySpot,
5
5
  ZLinkInstanceSpotHandlerRegistry,
6
6
  ZLinkSpot,
7
- ZLinkSpotHandlerRegistry,
7
+ ZLinkSpotHandlerRegistry
8
8
  } from '../../contracts';
9
9
  import type {
10
10
  ZLinkEntrySpotActorRequestHandlerRegistration,
@@ -17,19 +17,11 @@ import type {
17
17
  ZLinkSpotSubscriptionHandlerRegistration
18
18
  } from '../../contracts/Configuration/RegistrationTypes';
19
19
  import { ZLinkConfigurationException } from '../configuration';
20
- import {
21
- ZLinkActorPacketKind,
22
- ZLinkSpotActorHandlerRegistryRuntime
23
- } from '../actors';
20
+ import { ZLinkActorPacketKind, ZLinkSpotActorHandlerRegistryRuntime } from '../actors';
24
21
  import { readZLinkDecoratorMetadata } from '../../contracts/Handlers/Attributes';
25
22
 
26
23
  export interface ZLinkSpotHandlerRegistration {
27
- readonly kind:
28
- | 'packet'
29
- | 'subscribe'
30
- | 'actorSend'
31
- | 'actorRequest'
32
- | 'spotHandler';
24
+ readonly kind: 'packet' | 'subscribe' | 'actorSend' | 'actorRequest' | 'spotHandler';
33
25
  readonly handlerType: Type;
34
26
  readonly packetName?: string;
35
27
  readonly channelName?: string;
@@ -37,14 +29,17 @@ export interface ZLinkSpotHandlerRegistration {
37
29
  readonly actorType?: Type<ZLinkActor>;
38
30
  }
39
31
 
40
- export class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor = ZLinkActor> implements ZLinkSpotHandlerRegistry {
32
+ export class DefaultZLinkSpotHandlerRegistry<
33
+ TActor extends ZLinkActor = ZLinkActor
34
+ > implements ZLinkSpotHandlerRegistry {
41
35
  private readonly entries: ZLinkSpotHandlerRegistration[] = [];
42
36
 
43
37
  constructor(private readonly actorHandlers?: ZLinkSpotActorHandlerRegistryRuntime) {}
44
38
 
45
39
  addHandler<THandler>(handlerType: Type<THandler>, packetName?: string): this {
46
- const metadata = readZLinkDecoratorMetadata(handlerType).find((entry) =>
47
- entry.kind === 'spotActorSend' || entry.kind === 'spotActorRequest');
40
+ const metadata = readZLinkDecoratorMetadata(handlerType).find(
41
+ (entry) => entry.kind === 'spotActorSend' || entry.kind === 'spotActorRequest'
42
+ );
48
43
  const resolvedPacketName = packetName ?? metadata?.packetName;
49
44
  if (metadata === undefined || resolvedPacketName === undefined) {
50
45
  throw new ZLinkConfigurationException(
@@ -52,9 +47,7 @@ export class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor = ZLinkAc
52
47
  );
53
48
  }
54
49
  return this.addActorPacketRegistration(
55
- metadata.kind === 'spotActorSend'
56
- ? ZLinkActorPacketKind.Send
57
- : ZLinkActorPacketKind.Request,
50
+ metadata.kind === 'spotActorSend' ? ZLinkActorPacketKind.Send : ZLinkActorPacketKind.Request,
58
51
  handlerType,
59
52
  Object as unknown as Type<TActor>,
60
53
  resolvedPacketName
@@ -65,10 +58,13 @@ export class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor = ZLinkAc
65
58
  handlerType: Type<THandler>,
66
59
  actorType: Type<TRegisteredActor>
67
60
  ): this {
68
- const metadata = readZLinkDecoratorMetadata(handlerType).find((entry) =>
69
- entry.kind === 'spotActorSend' || entry.kind === 'spotActorRequest');
61
+ const metadata = readZLinkDecoratorMetadata(handlerType).find(
62
+ (entry) => entry.kind === 'spotActorSend' || entry.kind === 'spotActorRequest'
63
+ );
70
64
  if (metadata?.packetName === undefined) {
71
- throw new ZLinkConfigurationException(`Actor packet handler '${handlerType.name}' must declare a packet name.`);
65
+ throw new ZLinkConfigurationException(
66
+ `Actor packet handler '${handlerType.name}' must declare a packet name.`
67
+ );
72
68
  }
73
69
  return this.addActorPacketRegistration(
74
70
  metadata.kind === 'spotActorSend' ? ZLinkActorPacketKind.Send : ZLinkActorPacketKind.Request,
@@ -79,9 +75,14 @@ export class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor = ZLinkAc
79
75
  }
80
76
 
81
77
  addPacket(handlerType: Type, packetName?: string): this {
82
- const declared = readZLinkDecoratorMetadata(handlerType)
83
- .find((entry) => entry.kind === 'packet')?.packetName;
84
- this.entries.push({ kind: 'packet', handlerType, packetName: packetName ?? declared ?? handlerType.name });
78
+ const declared = readZLinkDecoratorMetadata(handlerType).find(
79
+ (entry) => entry.kind === 'packet'
80
+ )?.packetName;
81
+ this.entries.push({
82
+ kind: 'packet',
83
+ handlerType,
84
+ packetName: packetName ?? declared ?? handlerType.name
85
+ });
85
86
  return this;
86
87
  }
87
88
 
@@ -110,7 +111,11 @@ export class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor = ZLinkAc
110
111
  return this;
111
112
  }
112
113
 
113
- actorSend(packetName: string, handlerType: Type, actorType: Type<TActor> = Object as unknown as Type<TActor>): this {
114
+ actorSend(
115
+ packetName: string,
116
+ handlerType: Type,
117
+ actorType: Type<TActor> = Object as unknown as Type<TActor>
118
+ ): this {
114
119
  return this.addActorPacketRegistration(
115
120
  ZLinkActorPacketKind.Send,
116
121
  handlerType,
@@ -119,7 +124,11 @@ export class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor = ZLinkAc
119
124
  );
120
125
  }
121
126
 
122
- actorRequest(packetName: string, handlerType: Type, actorType: Type<TActor> = Object as unknown as Type<TActor>): this {
127
+ actorRequest(
128
+ packetName: string,
129
+ handlerType: Type,
130
+ actorType: Type<TActor> = Object as unknown as Type<TActor>
131
+ ): this {
123
132
  return this.addActorPacketRegistration(
124
133
  ZLinkActorPacketKind.Request,
125
134
  handlerType,
@@ -135,10 +144,15 @@ export class DefaultZLinkSpotHandlerRegistry<TActor extends ZLinkActor = ZLinkAc
135
144
  if (topic.trim().length === 0) {
136
145
  throw new ZLinkConfigurationException('SPOT subscribe topic must not be empty.');
137
146
  }
138
- if (this.entries.some((entry) => entry.kind === 'subscribe'
139
- && entry.handlerType === handlerType
140
- && entry.channelName === channelName
141
- && entry.topic === topic)) {
147
+ if (
148
+ this.entries.some(
149
+ (entry) =>
150
+ entry.kind === 'subscribe' &&
151
+ entry.handlerType === handlerType &&
152
+ entry.channelName === channelName &&
153
+ entry.topic === topic
154
+ )
155
+ ) {
142
156
  return this;
143
157
  }
144
158
  this.entries.push({ kind: 'subscribe', handlerType, channelName, topic });
@@ -268,6 +282,5 @@ function isSpotImplementation(
268
282
  registeredType: Type<ZLinkSpot>,
269
283
  implementation: Type<ZLinkSpot>
270
284
  ): boolean {
271
- return registeredType === implementation
272
- || implementation.prototype instanceof registeredType;
285
+ return registeredType === implementation || implementation.prototype instanceof registeredType;
273
286
  }
@@ -1,9 +1,10 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import type { RoutingId } from '../../contracts';
3
6
  import { ZLinkLocationWriteStatus } from '../../contracts/Locations';
4
- import {
5
- ZLinkSpotKind,
6
- } from '../../contracts';
7
+ import { ZLinkSpotKind } from '../../contracts';
7
8
  import { ZLinkConfigurationException } from '../configuration';
8
9
  import type { ZLinkLocationLifecycle } from '../locations';
9
10
 
@@ -1,4 +1,9 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException, internalFrameworkErrorKind, wireReplyFailureException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException,
4
+ internalFrameworkErrorKind,
5
+ wireReplyFailureException
6
+ } from '../framework-errors-internal';
2
7
  import { randomUUID } from 'node:crypto';
3
8
  import {
4
9
  ZLinkFrameworkException,
@@ -16,23 +21,14 @@ import {
16
21
  import type { ZLinkMessageSerializer } from '../../contracts';
17
22
  import type { ZLinkObjectFactoryRegistration } from '../../contracts/Configuration/RegistrationTypes';
18
23
  import { ZLinkConfigurationException } from '../configuration';
19
- import type {
20
- ZLinkUserSpotCreationCoordinator
21
- } from '../host/user-spot-creation-coordinator';
24
+ import type { ZLinkUserSpotCreationCoordinator } from '../host/user-spot-creation-coordinator';
22
25
  import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
23
26
  import type { DefaultZLinkSpotManager } from './index';
24
27
  import { encodeFrameworkCreationPayload } from '../messaging/creation-payload-codec';
25
- import type {
26
- ServiceUserSpotCloseRecord
27
- } from '../foundation/service-stateful-wire-codec';
28
- import type {
29
- ServiceUserSpotOperationResult
30
- } from '../foundation/service-stateful-runtime';
28
+ import type { ServiceUserSpotCloseRecord } from '../foundation/service-stateful-wire-codec';
29
+ import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
31
30
  import type { ZLinkAuthoritySnapshot } from '../locations/internal-location-contracts';
32
- import {
33
- captureZLinkSpotSerialTurn,
34
- requireZLinkYieldTurn
35
- } from '../execution';
31
+ import { captureZLinkSpotSerialTurn, requireZLinkYieldTurn } from '../execution';
36
32
 
37
33
  export interface ZLinkPublicSpotManagerOptions {
38
34
  readonly local: DefaultZLinkSpotManager;
@@ -88,8 +84,8 @@ export class ZLinkPublicSpotManager implements ZLinkSpotManager {
88
84
  };
89
85
  } catch (error) {
90
86
  if (
91
- error instanceof ZLinkFrameworkException
92
- && internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.SpotRouteNotFound
87
+ error instanceof ZLinkFrameworkException &&
88
+ internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.SpotRouteNotFound
93
89
  ) {
94
90
  return undefined;
95
91
  }
@@ -138,10 +134,7 @@ export class ZLinkPublicSpotManager implements ZLinkSpotManager {
138
134
  },
139
135
  timeoutMs
140
136
  );
141
- if (
142
- result.terminalResult !== 0
143
- || result.tail?.kind !== 'userSpotClose'
144
- ) {
137
+ if (result.terminalResult !== 0 || result.tail?.kind !== 'userSpotClose') {
145
138
  const message = `Remote User Spot close failed. terminalResult=${result.terminalResult}, failureCode=${result.failureCode}.`;
146
139
  // Route the close terminal through the shared ownership-aware translator
147
140
  // (spec 32-framework-error-model:81-118, 99-108) instead of an ad-hoc
@@ -193,22 +186,10 @@ export class ZLinkPublicSpotManager implements ZLinkSpotManager {
193
186
  state.timeoutMs = timeoutMs;
194
187
  return call;
195
188
  },
196
- submit: (signal) => this.submit(
197
- spotId,
198
- stableType,
199
- generatedIdentity,
200
- state,
201
- signal
202
- ),
189
+ submit: (signal) => this.submit(spotId, stableType, generatedIdentity, state, signal),
203
190
  yield: (signal) => {
204
191
  const yieldTurn = requireZLinkYieldTurn(turn);
205
- const pending = this.submit(
206
- spotId,
207
- stableType,
208
- generatedIdentity,
209
- state,
210
- signal
211
- );
192
+ const pending = this.submit(spotId, stableType, generatedIdentity, state, signal);
212
193
  return yieldTurn.yieldPromise(pending);
213
194
  }
214
195
  };
@@ -243,54 +224,53 @@ export class ZLinkPublicSpotManager implements ZLinkSpotManager {
243
224
  true
244
225
  );
245
226
  }
246
- const coordinated = await this.options.coordinator.getOrCreate({
247
- meshName: state.meshName,
248
- spotId,
249
- stableType,
250
- requestPayload: requestBytes,
251
- timeoutMs: Math.ceil(remainingMs),
252
- signal,
253
- generatedIdentity
254
- }, async (target, authority, deadlineSignal) => {
255
- const selected = selectFactory(this.options.factories, stableType, target.meshName);
256
- this.options.local.beginUserSpotPublication(target.meshName, spotId);
257
- try {
258
- const result = await this.options.local.getOrCreateWithAuthority(
259
- target.meshName,
260
- selected.registration.implementation as Type<ZLinkSpot>,
261
- spotId,
262
- state.request,
263
- {
264
- stableType,
265
- objectGeneration: authority.objectGeneration,
266
- authorityOwnerGeneration: authority.authorityOwnerGeneration
267
- },
268
- deadlineSignal
269
- );
270
- return {
271
- ...result,
272
- publication: {
273
- publish: () => this.options.local.publishUserSpot(
274
- target.meshName,
275
- spotId
276
- ),
277
- abort: () => this.options.local.abortUserSpotPublication(
278
- target.meshName,
279
- spotId
280
- )
281
- }
282
- };
283
- } catch (error) {
284
- this.options.local.abortUserSpotPublication(target.meshName, spotId);
285
- throw error;
286
- }
287
- }, async (cleanupSignal) => {
288
- const meshName = state.meshName ?? [...this.options.factories]
289
- .find(([, byType]) => byType.has(stableType))?.[0];
290
- if (meshName !== undefined) {
291
- await this.options.local.close(meshName, spotId, cleanupSignal);
292
- }
293
- });
227
+ const coordinated = await this.options.coordinator.getOrCreate(
228
+ {
229
+ meshName: state.meshName,
230
+ spotId,
231
+ stableType,
232
+ requestPayload: requestBytes,
233
+ timeoutMs: Math.ceil(remainingMs),
234
+ signal,
235
+ generatedIdentity
236
+ },
237
+ async (target, authority, deadlineSignal) => {
238
+ const selected = selectFactory(this.options.factories, stableType, target.meshName);
239
+ this.options.local.beginUserSpotPublication(target.meshName, spotId);
240
+ try {
241
+ const result = await this.options.local.getOrCreateWithAuthority(
242
+ target.meshName,
243
+ selected.registration.implementation as Type<ZLinkSpot>,
244
+ spotId,
245
+ state.request,
246
+ {
247
+ stableType,
248
+ objectGeneration: authority.objectGeneration,
249
+ authorityOwnerGeneration: authority.authorityOwnerGeneration
250
+ },
251
+ deadlineSignal
252
+ );
253
+ return {
254
+ ...result,
255
+ publication: {
256
+ publish: () => this.options.local.publishUserSpot(target.meshName, spotId),
257
+ abort: () => this.options.local.abortUserSpotPublication(target.meshName, spotId)
258
+ }
259
+ };
260
+ } catch (error) {
261
+ this.options.local.abortUserSpotPublication(target.meshName, spotId);
262
+ throw error;
263
+ }
264
+ },
265
+ async (cleanupSignal) => {
266
+ const meshName =
267
+ state.meshName ??
268
+ [...this.options.factories].find(([, byType]) => byType.has(stableType))?.[0];
269
+ if (meshName !== undefined) {
270
+ await this.options.local.close(meshName, spotId, cleanupSignal);
271
+ }
272
+ }
273
+ );
294
274
  this.options.resolver()?.invalidate?.(spotId);
295
275
  return coordinated.result;
296
276
  }
@@ -12,10 +12,7 @@ import {
12
12
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
13
13
  import type { Message } from '../../contracts/Common/Message';
14
14
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
15
- import type {
16
- ZLinkBackendActorJoinRequest,
17
- ZLinkBackendSpot
18
- } from '../backend/contracts';
15
+ import type { ZLinkBackendActorJoinRequest, ZLinkBackendSpot } from '../backend/contracts';
19
16
  import type { ZLinkDispatchErrorReporter } from '../channels';
20
17
  import {
21
18
  encodeFrameworkPayloadMessage,
@@ -57,16 +54,20 @@ export class ZLinkSpotNativeActorJoinAdmission {
57
54
  if (actor !== undefined) {
58
55
  const target = this.options.getTarget();
59
56
  const joinRequest = request.message;
60
- const joinPayload = wrapFrameworkPayloadMessage(joinRequest, this.options.messageSerializers);
57
+ const joinPayload = wrapFrameworkPayloadMessage(
58
+ joinRequest,
59
+ this.options.messageSerializers
60
+ );
61
61
  const response: ZLinkSpotActorJoinResult = await this.options.serial.execute(async () =>
62
62
  this.options.defaultAccept || target.onActorJoin === undefined
63
63
  ? { accepted: this.options.defaultAccept }
64
64
  : target.onActorJoin(actorId, joinPayload)
65
65
  );
66
66
  accepted = response.accepted;
67
- reply = response.reply === undefined
68
- ? undefined
69
- : encodeFrameworkPayloadMessage(response.reply, this.options.messageSerializers);
67
+ reply =
68
+ response.reply === undefined
69
+ ? undefined
70
+ : encodeFrameworkPayloadMessage(response.reply, this.options.messageSerializers);
70
71
  if (accepted) {
71
72
  acceptedActor = actor;
72
73
  }
@@ -104,11 +105,13 @@ export class ZLinkSpotNativeActorJoinAdmission {
104
105
  }
105
106
  }
106
107
 
107
- private decodeNativeActorJoinRequest(message: Message): {
108
- readonly actorType: string;
109
- readonly actorCreateRequest?: Message;
110
- readonly request: Message;
111
- } | undefined {
108
+ private decodeNativeActorJoinRequest(message: Message):
109
+ | {
110
+ readonly actorType: string;
111
+ readonly actorCreateRequest?: Message;
112
+ readonly request: Message;
113
+ }
114
+ | undefined {
112
115
  try {
113
116
  const payload = JSON.parse(message.data().toString()) as {
114
117
  readonly packetName?: unknown;
@@ -128,9 +131,10 @@ export class ZLinkSpotNativeActorJoinAdmission {
128
131
  }
129
132
  return {
130
133
  actorType: payload.actorType,
131
- actorCreateRequest: typeof payload.actorCreateRequest === 'string'
132
- ? RuntimeMessage.from(Buffer.from(payload.actorCreateRequest, 'base64'))
133
- : undefined,
134
+ actorCreateRequest:
135
+ typeof payload.actorCreateRequest === 'string'
136
+ ? RuntimeMessage.from(Buffer.from(payload.actorCreateRequest, 'base64'))
137
+ : undefined,
134
138
  request: RuntimeMessage.from(Buffer.from(payload.request, 'base64'))
135
139
  };
136
140
  } catch {
@@ -4,10 +4,7 @@ import type { ZLinkPeerLocationResolver } from '../../contracts/Locations/Resolv
4
4
  import type { ZLinkDomainLocationStore as ZLinkLocationStore } from '../locations/domain-store-contract';
5
5
  import type { ZLinkPeerLocation } from '../../contracts/Locations/Rows';
6
6
  import { ZLinkLocationAutoConnectType } from '../../contracts/Locations/Values';
7
- import {
8
- ZLinkFrameworkRuntimeState,
9
- ZLinkLocationRole
10
- } from '../../contracts';
7
+ import { ZLinkFrameworkRuntimeState, ZLinkLocationRole } from '../../contracts';
11
8
  import type { ZLinkSpotNodeOptions } from '../configuration';
12
9
  import type { ZLinkBackendMeshNode } from '../backend/contracts';
13
10
  import { AsyncResource } from 'node:async_hooks';
@@ -83,37 +80,28 @@ export function spotNodeAutoConnectCapability(
83
80
  nodeRid: String(status.routingId),
84
81
  endpoint,
85
82
  objectRole: spotNode.objectRole ?? 'none',
86
- hasRouteMeshServerChannel: Object.values(spotNode.meshChannels ?? {})
87
- .some((channel) => channel.server === true)
83
+ hasRouteMeshServerChannel: Object.values(spotNode.meshChannels ?? {}).some(
84
+ (channel) => channel.server === true
85
+ )
88
86
  };
89
87
  const manualConnections = hasManualRouterConnections(spotNode);
90
88
  return {
91
89
  local,
92
- executor: new ZLinkSpotNodeAutoConnectExecutor(
93
- node,
94
- manualConnections
95
- )
90
+ executor: new ZLinkSpotNodeAutoConnectExecutor(node, manualConnections)
96
91
  };
97
92
  }
98
93
 
99
- function meshDescriptorPeerResolver(
100
- runtime: ZLinkLocationRuntime
101
- ): ZLinkPeerLocationResolver {
94
+ function meshDescriptorPeerResolver(runtime: ZLinkLocationRuntime): ZLinkPeerLocationResolver {
102
95
  return {
103
96
  async listLivePeers(
104
97
  filter: ZLinkPeerLocationFilter,
105
98
  signal?: AbortSignal
106
99
  ): Promise<readonly ZLinkPeerLocation[]> {
107
100
  if (
108
- filter.meshName === undefined
109
- || (
110
- filter.autoConnectType !== undefined
111
- && filter.autoConnectType !== ZLinkLocationAutoConnectType.RouteMesh
112
- )
113
- || (
114
- filter.role !== undefined
115
- && filter.role !== ZLinkLocationRole.Router
116
- )
101
+ filter.meshName === undefined ||
102
+ (filter.autoConnectType !== undefined &&
103
+ filter.autoConnectType !== ZLinkLocationAutoConnectType.RouteMesh) ||
104
+ (filter.role !== undefined && filter.role !== ZLinkLocationRole.Router)
117
105
  ) {
118
106
  return [];
119
107
  }
@@ -133,23 +121,25 @@ function meshDescriptorPeerResolver(
133
121
  updatedAt: descriptor.updatedAt,
134
122
  metadata: {
135
123
  objectRole: descriptor.objectRole,
136
- hasRouteMeshServerChannel:
137
- String(Object.keys(descriptor.channelWeights).length > 0),
124
+ hasRouteMeshServerChannel: String(Object.keys(descriptor.channelWeights).length > 0),
138
125
  descriptorRevision: descriptor.descriptorRevision.toString(),
139
126
  securityIdentity: descriptor.securityIdentity
140
127
  }
141
128
  }))
142
- .filter(peer =>
143
- (filter.nodeRid === undefined || String(peer.nodeRid) === String(filter.nodeRid))
144
- && (filter.endpoint === undefined || peer.endpoint === filter.endpoint)
129
+ .filter(
130
+ (peer) =>
131
+ (filter.nodeRid === undefined || String(peer.nodeRid) === String(filter.nodeRid)) &&
132
+ (filter.endpoint === undefined || peer.endpoint === filter.endpoint)
145
133
  );
146
134
  }
147
135
  };
148
136
  }
149
137
 
150
138
  function hasManualRouterConnections(spotNode: ZLinkSpotNodeOptions): boolean {
151
- return (spotNode.router?.manualConnections?.length ?? 0) > 0
152
- || (spotNode.router?.manualPeerConnections?.length ?? 0) > 0;
139
+ return (
140
+ (spotNode.router?.manualConnections?.length ?? 0) > 0 ||
141
+ (spotNode.router?.manualPeerConnections?.length ?? 0) > 0
142
+ );
153
143
  }
154
144
 
155
145
  const detachedSpotNodeAutoConnectResource = new AsyncResource('zlink:spot-node-autoconnect');
@@ -186,17 +176,16 @@ class ZLinkSpotNodeAutoConnectExecutor implements IZLinkAutoConnectExecutor {
186
176
 
187
177
  disconnectStalePeers(targets: readonly ZLinkAutoConnectTarget[]): void {
188
178
  if (this.manualConnections) return;
189
- const current = new Map(targets
190
- .filter((target) => target.nodeRid !== undefined)
191
- .map((target) => [String(target.nodeRid), target]));
179
+ const current = new Map(
180
+ targets
181
+ .filter((target) => target.nodeRid !== undefined)
182
+ .map((target) => [String(target.nodeRid), target])
183
+ );
192
184
  const peers = this.node.peers();
193
185
  for (const peer of peers) {
194
186
  if (peer.routingId === null) continue;
195
187
  const target = current.get(String(peer.routingId));
196
- if (
197
- target !== undefined
198
- && peer.endpoint === target.endpoint
199
- ) {
188
+ if (target !== undefined && peer.endpoint === target.endpoint) {
200
189
  continue;
201
190
  }
202
191
  this.node.disconnectPeer(peer.routingId, peer.lifecycleGeneration);
@@ -208,25 +197,35 @@ class ZLinkSpotNodeAutoConnectExecutor implements IZLinkAutoConnectExecutor {
208
197
  // reached the admitted table yet. Shutdown must remove that intent before
209
198
  // it can treat the automatic route as disconnected.
210
199
  if (this.connectionIntents.has(connectionKey(target))) return false;
211
- return !this.node.peers().some((peer) =>
212
- peer.routingId !== null &&
213
- peer.endpoint === target.endpoint &&
214
- (target.nodeRid === undefined || String(peer.routingId) === String(target.nodeRid)) &&
215
- peer.lifecycleGeneration === target.lifecycleGeneration &&
216
- peer.state === 3);
200
+ return !this.node
201
+ .peers()
202
+ .some(
203
+ (peer) =>
204
+ peer.routingId !== null &&
205
+ peer.endpoint === target.endpoint &&
206
+ (target.nodeRid === undefined || String(peer.routingId) === String(target.nodeRid)) &&
207
+ peer.lifecycleGeneration === target.lifecycleGeneration &&
208
+ peer.state === 3
209
+ );
217
210
  }
218
211
 
219
212
  replaceNotRequired(targets: readonly ZLinkAutoConnectTarget[]): void {
220
- this.node.replaceDiscoveredNotRequiredPeers?.(targets
221
- .filter((target): target is ZLinkAutoConnectTarget & {
222
- readonly nodeRid: NonNullable<ZLinkAutoConnectTarget['nodeRid']>;
223
- } => target.nodeRid !== undefined)
224
- .map(target => ({
225
- nodeRoutingId: String(target.nodeRid),
226
- lifecycleGeneration: target.lifecycleGeneration,
227
- descriptorRevision: target.descriptorRevision ?? 1n,
228
- endpoint: target.endpoint
229
- })));
213
+ this.node.replaceDiscoveredNotRequiredPeers?.(
214
+ targets
215
+ .filter(
216
+ (
217
+ target
218
+ ): target is ZLinkAutoConnectTarget & {
219
+ readonly nodeRid: NonNullable<ZLinkAutoConnectTarget['nodeRid']>;
220
+ } => target.nodeRid !== undefined
221
+ )
222
+ .map((target) => ({
223
+ nodeRoutingId: String(target.nodeRid),
224
+ lifecycleGeneration: target.lifecycleGeneration,
225
+ descriptorRevision: target.descriptorRevision ?? 1n,
226
+ endpoint: target.endpoint
227
+ }))
228
+ );
230
229
  }
231
230
 
232
231
  expectPeers(targets: readonly ZLinkAutoConnectTarget[]): void {
@@ -235,9 +234,7 @@ class ZLinkSpotNodeAutoConnectExecutor implements IZLinkAutoConnectExecutor {
235
234
  this.node.expectPeer?.({
236
235
  nodeRoutingId: String(target.nodeRid),
237
236
  endpoint: target.endpoint,
238
- securityIdentity: toAdmissionSecurityIdentity(
239
- target.metadata?.securityIdentity
240
- ),
237
+ securityIdentity: toAdmissionSecurityIdentity(target.metadata?.securityIdentity),
241
238
  lifecycleGeneration: target.lifecycleGeneration
242
239
  });
243
240
  }
@@ -258,12 +255,8 @@ class ZLinkSpotNodeAutoConnectExecutor implements IZLinkAutoConnectExecutor {
258
255
  try {
259
256
  const connectionIntentId = await this.node.connectPeer({
260
257
  endpoint: target.endpoint,
261
- expectedRid: target.nodeRid === undefined
262
- ? undefined
263
- : toBackendRoutingId(target.nodeRid),
264
- expectedSecurityIdentity: toAdmissionSecurityIdentity(
265
- target.metadata?.securityIdentity
266
- ),
258
+ expectedRid: target.nodeRid === undefined ? undefined : toBackendRoutingId(target.nodeRid),
259
+ expectedSecurityIdentity: toAdmissionSecurityIdentity(target.metadata?.securityIdentity),
267
260
  expectedLifecycleGeneration: target.lifecycleGeneration
268
261
  });
269
262
  const accepted = await this.lane.run(() => {