@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
@@ -1,4 +1,7 @@
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/Common';
3
6
  import type {
4
7
  ZLinkAuthoritySnapshot,
@@ -12,10 +15,7 @@ import {
12
15
  } from './internal-location-contracts';
13
16
  import { ZLinkSpotKind } from '../../contracts/Spots';
14
17
  import { ZLinkLocationKeyCodec } from './key-codec';
15
- import type {
16
- IZLinkLocationLifecycleRuntime,
17
- ZLinkOwnershipLostEvent
18
- } from './lifecycle-runtime';
18
+ import type { IZLinkLocationLifecycleRuntime, ZLinkOwnershipLostEvent } from './lifecycle-runtime';
19
19
  import type { ZLinkAuthorityStore, ZLinkSpotLocationStore } from './internal-store-contracts';
20
20
  import { encodeAuthorityKey } from './authority-key-codec';
21
21
  import { routingIdsEqual } from '../routing-id';
@@ -63,20 +63,17 @@ export class ZLinkSpotLocationClaims {
63
63
  const result = await this.runtime.writeSpot(row, ZLinkLocationWriteIntent.NewClaim);
64
64
  if (result.status === ZLinkLocationWriteStatus.Stored) {
65
65
  const owner = this.runtime.currentOwnerToken;
66
- this.spots.set(
67
- ZLinkLocationKeyCodec.encodeSpotKey({ meshName, spotId }),
68
- {
69
- kind: 'legacy',
70
- row: {
71
- ...row,
72
- ownerId: this.runtime.ownerId,
73
- leaseGeneration: owner?.leaseGeneration ?? row.leaseGeneration,
74
- updatedAt: result.updatedAt
75
- },
76
- generation: result.generation,
77
- deactivate
78
- }
79
- );
66
+ this.spots.set(ZLinkLocationKeyCodec.encodeSpotKey({ meshName, spotId }), {
67
+ kind: 'legacy',
68
+ row: {
69
+ ...row,
70
+ ownerId: this.runtime.ownerId,
71
+ leaseGeneration: owner?.leaseGeneration ?? row.leaseGeneration,
72
+ updatedAt: result.updatedAt
73
+ },
74
+ generation: result.generation,
75
+ deactivate
76
+ });
80
77
  }
81
78
  return result.status;
82
79
  }
@@ -106,8 +103,8 @@ export class ZLinkSpotLocationClaims {
106
103
  return;
107
104
  }
108
105
  if (
109
- expectedObjectGeneration !== undefined
110
- && (tracked.kind !== 'authority' || tracked.objectGeneration !== expectedObjectGeneration)
106
+ expectedObjectGeneration !== undefined &&
107
+ (tracked.kind !== 'authority' || tracked.objectGeneration !== expectedObjectGeneration)
111
108
  ) {
112
109
  return;
113
110
  }
@@ -148,27 +145,23 @@ export class ZLinkSpotLocationClaims {
148
145
  if (decoded?.state !== 'ready' || decoded.activationRecovery !== undefined) {
149
146
  return undefined;
150
147
  }
151
- const result = await store.compareExchangeAuthority(
152
- key,
153
- current.storeVersion,
154
- {
155
- kind: 'put',
156
- generationTransition: 'preserve',
157
- payload: replaceServiceRelocationAuthorityApplicationPayload(
158
- current.payload,
159
- encodeServiceInstanceAuthorityPayload({
160
- state: 'closing',
161
- stableType: decoded.stableType,
162
- spotId: decoded.spotId,
163
- ownerId: decoded.ownerId,
164
- ownerLeaseGeneration: decoded.ownerLeaseGeneration,
165
- ownerMeshName: decoded.ownerMeshName,
166
- ownerNodeRid: decoded.ownerNodeRid,
167
- ownerNodeGeneration: decoded.ownerNodeGeneration
168
- })
169
- )
170
- }
171
- );
148
+ const result = await store.compareExchangeAuthority(key, current.storeVersion, {
149
+ kind: 'put',
150
+ generationTransition: 'preserve',
151
+ payload: replaceServiceRelocationAuthorityApplicationPayload(
152
+ current.payload,
153
+ encodeServiceInstanceAuthorityPayload({
154
+ state: 'closing',
155
+ stableType: decoded.stableType,
156
+ spotId: decoded.spotId,
157
+ ownerId: decoded.ownerId,
158
+ ownerLeaseGeneration: decoded.ownerLeaseGeneration,
159
+ ownerMeshName: decoded.ownerMeshName,
160
+ ownerNodeRid: decoded.ownerNodeRid,
161
+ ownerNodeGeneration: decoded.ownerNodeGeneration
162
+ })
163
+ )
164
+ });
172
165
  if (result.kind !== 'stored') {
173
166
  return undefined;
174
167
  }
@@ -178,27 +171,23 @@ export class ZLinkSpotLocationClaims {
178
171
  return {
179
172
  restoreReady: async () => {
180
173
  if (restored) return;
181
- const restore = await store.compareExchangeAuthority(
182
- key,
183
- result.storeVersion,
184
- {
185
- kind: 'put',
186
- generationTransition: 'preserve',
187
- payload: replaceServiceRelocationAuthorityApplicationPayload(
188
- current.payload,
189
- encodeServiceInstanceAuthorityPayload({
190
- state: 'ready',
191
- stableType: decoded.stableType,
192
- spotId: decoded.spotId,
193
- ownerId: decoded.ownerId,
194
- ownerLeaseGeneration: decoded.ownerLeaseGeneration,
195
- ownerMeshName: decoded.ownerMeshName,
196
- ownerNodeRid: decoded.ownerNodeRid,
197
- ownerNodeGeneration: decoded.ownerNodeGeneration
198
- })
199
- )
200
- }
201
- );
174
+ const restore = await store.compareExchangeAuthority(key, result.storeVersion, {
175
+ kind: 'put',
176
+ generationTransition: 'preserve',
177
+ payload: replaceServiceRelocationAuthorityApplicationPayload(
178
+ current.payload,
179
+ encodeServiceInstanceAuthorityPayload({
180
+ state: 'ready',
181
+ stableType: decoded.stableType,
182
+ spotId: decoded.spotId,
183
+ ownerId: decoded.ownerId,
184
+ ownerLeaseGeneration: decoded.ownerLeaseGeneration,
185
+ ownerMeshName: decoded.ownerMeshName,
186
+ ownerNodeRid: decoded.ownerNodeRid,
187
+ ownerNodeGeneration: decoded.ownerNodeGeneration
188
+ })
189
+ )
190
+ });
202
191
  if (restore.kind !== 'stored') {
203
192
  throw createInternalFrameworkException(
204
193
  ZLinkFrameworkInternalErrorKind.SpotMoving,
@@ -243,10 +232,12 @@ export class ZLinkSpotLocationClaims {
243
232
  spotId: tracked.row.spotId
244
233
  });
245
234
  if (this.spots.get(canonical) !== tracked) continue;
246
- if (current === undefined
247
- || current.ownerId !== owner.ownerId
248
- || (current.leaseGeneration !== tracked.row.leaseGeneration
249
- && current.leaseGeneration !== owner.leaseGeneration)) {
235
+ if (
236
+ current === undefined ||
237
+ current.ownerId !== owner.ownerId ||
238
+ (current.leaseGeneration !== tracked.row.leaseGeneration &&
239
+ current.leaseGeneration !== owner.leaseGeneration)
240
+ ) {
250
241
  if (this.spots.get(canonical) !== tracked) continue;
251
242
  this.spots.delete(canonical);
252
243
  await tracked.deactivate?.();
@@ -258,14 +249,13 @@ export class ZLinkSpotLocationClaims {
258
249
  continue;
259
250
  }
260
251
  if (this.spots.get(canonical) !== tracked) continue;
261
- const result = await this.runtime.writeSpot(
262
- current,
263
- ZLinkLocationWriteIntent.Takeover
264
- );
252
+ const result = await this.runtime.writeSpot(current, ZLinkLocationWriteIntent.Takeover);
265
253
  if (result.status !== ZLinkLocationWriteStatus.Stored) {
266
- failures.push(new Error(
267
- `Spot location recovery for '${tracked.row.spotId}' was rejected with status ${result.status}.`
268
- ));
254
+ failures.push(
255
+ new Error(
256
+ `Spot location recovery for '${tracked.row.spotId}' was rejected with status ${result.status}.`
257
+ )
258
+ );
269
259
  continue;
270
260
  }
271
261
  if (this.spots.get(canonical) !== tracked) continue;
@@ -282,9 +272,12 @@ export class ZLinkSpotLocationClaims {
282
272
  const key = encodeAuthorityKey('instance_spot', String(tracked.spotId));
283
273
  const current = await this.authorityStore?.readAuthority(key);
284
274
  if (this.spots.get(canonical) !== tracked) continue;
285
- if (current === undefined || current.kind === 'missing'
286
- || !matchesTrackedAuthorityIdentity(current, tracked)
287
- || current.ownerId !== owner.ownerId) {
275
+ if (
276
+ current === undefined ||
277
+ current.kind === 'missing' ||
278
+ !matchesTrackedAuthorityIdentity(current, tracked) ||
279
+ current.ownerId !== owner.ownerId
280
+ ) {
288
281
  if (this.spots.get(canonical) !== tracked) continue;
289
282
  this.spots.delete(canonical);
290
283
  await tracked.deactivate?.();
@@ -306,9 +299,11 @@ export class ZLinkSpotLocationClaims {
306
299
  }
307
300
  );
308
301
  if (rebound.kind !== 'stored') {
309
- failures.push(new Error(
310
- `Instance Spot '${String(tracked.spotId)}' authority recovery returned '${rebound.kind}'.`
311
- ));
302
+ failures.push(
303
+ new Error(
304
+ `Instance Spot '${String(tracked.spotId)}' authority recovery returned '${rebound.kind}'.`
305
+ )
306
+ );
312
307
  continue;
313
308
  }
314
309
  if (this.spots.get(canonical) !== tracked) continue;
@@ -337,26 +332,25 @@ export class ZLinkSpotLocationClaims {
337
332
  { kind: 'delete' }
338
333
  );
339
334
  if (
340
- result.kind === 'conflict'
341
- && result.current.kind === 'snapshot'
342
- && matchesTrackedAuthority(result.current, tracked)
335
+ result.kind === 'conflict' &&
336
+ result.current.kind === 'snapshot' &&
337
+ matchesTrackedAuthority(result.current, tracked)
343
338
  ) {
344
- result = await store.compareExchangeAuthority(
345
- key,
346
- result.current.storeVersion,
347
- { kind: 'delete' }
348
- );
339
+ result = await store.compareExchangeAuthority(key, result.current.storeVersion, {
340
+ kind: 'delete'
341
+ });
349
342
  }
350
343
  if (
351
- result.kind === 'conflict'
352
- && result.current.kind === 'snapshot'
353
- && !matchesTrackedAuthority(result.current, tracked)
344
+ result.kind === 'conflict' &&
345
+ result.current.kind === 'snapshot' &&
346
+ !matchesTrackedAuthority(result.current, tracked)
354
347
  ) {
355
348
  return;
356
349
  }
357
- if (result.kind === 'deleted' || (
358
- result.kind === 'conflict' && result.current.kind === 'missing'
359
- )) {
350
+ if (
351
+ result.kind === 'deleted' ||
352
+ (result.kind === 'conflict' && result.current.kind === 'missing')
353
+ ) {
360
354
  return;
361
355
  }
362
356
  if (result.kind === 'generationExhausted') {
@@ -408,28 +402,32 @@ function matchesTrackedAuthority(
408
402
  snapshot: ZLinkAuthoritySnapshot,
409
403
  tracked: TrackedAuthoritySpot
410
404
  ): boolean {
411
- return snapshot.objectGeneration === tracked.objectGeneration
412
- && snapshot.authorityOwnerGeneration === tracked.authorityOwnerGeneration
413
- && snapshot.ownerId === tracked.ownerId
414
- && snapshot.ownerLeaseGeneration === tracked.ownerLeaseGeneration
415
- && snapshot.allocation.state === 'active'
416
- && snapshot.allocation.objectKind === 'instance_spot'
417
- && snapshot.allocation.stableType === tracked.stableType
418
- && snapshot.allocation.descriptor.meshName === tracked.meshName
419
- && routingIdsEqual(snapshot.allocation.descriptor.rid, tracked.nodeRid)
420
- && snapshot.allocation.descriptorLifecycleGeneration === tracked.nodeGeneration;
405
+ return (
406
+ snapshot.objectGeneration === tracked.objectGeneration &&
407
+ snapshot.authorityOwnerGeneration === tracked.authorityOwnerGeneration &&
408
+ snapshot.ownerId === tracked.ownerId &&
409
+ snapshot.ownerLeaseGeneration === tracked.ownerLeaseGeneration &&
410
+ snapshot.allocation.state === 'active' &&
411
+ snapshot.allocation.objectKind === 'instance_spot' &&
412
+ snapshot.allocation.stableType === tracked.stableType &&
413
+ snapshot.allocation.descriptor.meshName === tracked.meshName &&
414
+ routingIdsEqual(snapshot.allocation.descriptor.rid, tracked.nodeRid) &&
415
+ snapshot.allocation.descriptorLifecycleGeneration === tracked.nodeGeneration
416
+ );
421
417
  }
422
418
 
423
419
  function matchesTrackedAuthorityIdentity(
424
420
  snapshot: ZLinkAuthoritySnapshot,
425
421
  tracked: TrackedAuthoritySpot
426
422
  ): boolean {
427
- return snapshot.objectGeneration === tracked.objectGeneration
428
- && snapshot.authorityOwnerGeneration === tracked.authorityOwnerGeneration
429
- && snapshot.allocation.state === 'active'
430
- && snapshot.allocation.objectKind === 'instance_spot'
431
- && snapshot.allocation.stableType === tracked.stableType
432
- && snapshot.allocation.descriptor.meshName === tracked.meshName
433
- && routingIdsEqual(snapshot.allocation.descriptor.rid, tracked.nodeRid)
434
- && snapshot.allocation.descriptorLifecycleGeneration === tracked.nodeGeneration;
423
+ return (
424
+ snapshot.objectGeneration === tracked.objectGeneration &&
425
+ snapshot.authorityOwnerGeneration === tracked.authorityOwnerGeneration &&
426
+ snapshot.allocation.state === 'active' &&
427
+ snapshot.allocation.objectKind === 'instance_spot' &&
428
+ snapshot.allocation.stableType === tracked.stableType &&
429
+ snapshot.allocation.descriptor.meshName === tracked.meshName &&
430
+ routingIdsEqual(snapshot.allocation.descriptor.rid, tracked.nodeRid) &&
431
+ snapshot.allocation.descriptorLifecycleGeneration === tracked.nodeGeneration
432
+ );
435
433
  }
@@ -1,4 +1,7 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
3
6
  import type { ZLinkMessageSerializer } from '../../contracts';
4
7
  import {
@@ -45,9 +45,9 @@ function frameworkJsonV1Replacer(
45
45
  throw new TypeError('framework-json-v1 does not implicitly encode Date values.');
46
46
  }
47
47
  if (
48
- typeof source === 'object'
49
- && source !== null
50
- && typeof (source as { readonly toJSON?: unknown }).toJSON === 'function'
48
+ typeof source === 'object' &&
49
+ source !== null &&
50
+ typeof (source as { readonly toJSON?: unknown }).toJSON === 'function'
51
51
  ) {
52
52
  throw new TypeError('framework-json-v1 does not implicitly invoke custom toJSON methods.');
53
53
  }
@@ -64,9 +64,7 @@ export function parseFrameworkJsonV1(
64
64
  }
65
65
  new JsonPropertyScanner(text, options).scan();
66
66
  const parsed = JSON.parse(text);
67
- return schema === undefined
68
- ? parsed
69
- : validateFrameworkJsonV1Value(parsed, schema, '$', true);
67
+ return schema === undefined ? parsed : validateFrameworkJsonV1Value(parsed, schema, '$', true);
70
68
  }
71
69
 
72
70
  // Sticky pattern shared across scans; matching happens synchronously so the
@@ -92,10 +90,15 @@ function validateFrameworkJsonV1Value(
92
90
  if (typeof value !== 'string') schemaFailure(path, 'a string');
93
91
  return value;
94
92
  case 'number':
95
- if (typeof value !== 'number' || !Number.isFinite(value)) schemaFailure(path, 'a finite number');
93
+ if (typeof value !== 'number' || !Number.isFinite(value))
94
+ schemaFailure(path, 'a finite number');
96
95
  return value;
97
96
  case 'int32':
98
- if (!Number.isInteger(value) || (value as number) < INT32_MIN || (value as number) > INT32_MAX) {
97
+ if (
98
+ !Number.isInteger(value) ||
99
+ (value as number) < INT32_MIN ||
100
+ (value as number) > INT32_MAX
101
+ ) {
99
102
  schemaFailure(path, 'an int32 JSON number');
100
103
  }
101
104
  return value;
@@ -113,7 +116,8 @@ function validateFrameworkJsonV1Value(
113
116
  schemaFailure(path, 'padded RFC 4648 base64');
114
117
  }
115
118
  const bytes = Buffer.from(value as string, 'base64');
116
- if (bytes.toString('base64') !== value) schemaFailure(path, 'canonical padded RFC 4648 base64');
119
+ if (bytes.toString('base64') !== value)
120
+ schemaFailure(path, 'canonical padded RFC 4648 base64');
117
121
  return decode ? Uint8Array.from(bytes) : value;
118
122
  }
119
123
  case 'enum':
@@ -128,7 +132,8 @@ function validateFrameworkJsonV1Value(
128
132
  case 'array':
129
133
  if (!Array.isArray(value)) schemaFailure(path, 'an array');
130
134
  return (value as unknown[]).map((item, index) =>
131
- validateFrameworkJsonV1Value(item, schema.items, `${path}[${index}]`, decode));
135
+ validateFrameworkJsonV1Value(item, schema.items, `${path}[${index}]`, decode)
136
+ );
132
137
  case 'record': {
133
138
  if (!isJsonObject(value)) schemaFailure(path, 'an object');
134
139
  const result: Record<string, unknown> = {};
@@ -154,21 +159,35 @@ function validateFrameworkJsonV1Value(
154
159
  }
155
160
  continue;
156
161
  }
157
- result[name] = validateFrameworkJsonV1Value(item, propertySchema as ZLinkJsonSchema, `${path}.${name}`, decode);
162
+ result[name] = validateFrameworkJsonV1Value(
163
+ item,
164
+ propertySchema as ZLinkJsonSchema,
165
+ `${path}.${name}`,
166
+ decode
167
+ );
158
168
  }
159
169
  return decode ? result : value;
160
170
  }
161
171
  }
162
172
  }
163
173
 
164
- function validateDecimalInteger(value: unknown, path: string, signed: boolean, decode: boolean): unknown {
174
+ function validateDecimalInteger(
175
+ value: unknown,
176
+ path: string,
177
+ signed: boolean,
178
+ decode: boolean
179
+ ): unknown {
165
180
  if (typeof value !== 'string' || !/^(?:0|[1-9][0-9]*|-[1-9][0-9]*)$/u.test(value)) {
166
- schemaFailure(path, signed ? 'a canonical int64 decimal string' : 'a canonical uint64 decimal string');
181
+ schemaFailure(
182
+ path,
183
+ signed ? 'a canonical int64 decimal string' : 'a canonical uint64 decimal string'
184
+ );
167
185
  }
168
186
  const parsed = BigInt(value as string);
169
187
  const minimum = signed ? SIGNED_64_MIN : 0n;
170
188
  const maximum = signed ? (1n << 63n) - 1n : UNSIGNED_64_MAX;
171
- if (parsed < minimum || parsed > maximum) schemaFailure(path, signed ? 'an int64 value' : 'a uint64 value');
189
+ if (parsed < minimum || parsed > maximum)
190
+ schemaFailure(path, signed ? 'an int64 value' : 'a uint64 value');
172
191
  return decode ? parsed : value;
173
192
  }
174
193
 
@@ -266,7 +285,7 @@ class JsonPropertyScanner {
266
285
  // Without escapes the token content is verbatim; the outer
267
286
  // JSON.parse pass still rejects any raw control characters.
268
287
  return sawEscape
269
- ? JSON.parse(this.text.slice(start, this.index)) as string
288
+ ? (JSON.parse(this.text.slice(start, this.index)) as string)
270
289
  : this.text.slice(start + 1, this.index - 1);
271
290
  }
272
291
  if (character === '\\') {
@@ -20,9 +20,10 @@ export function resolveFrameworkPacketName(
20
20
  explicitPacketName: string | undefined,
21
21
  surface: string
22
22
  ): string {
23
- const packetName = normalizePacketName(explicitPacketName)
24
- ?? tryDecoratorPacketName(payload)
25
- ?? tryConstructorPacketName(payload);
23
+ const packetName =
24
+ normalizePacketName(explicitPacketName) ??
25
+ tryDecoratorPacketName(payload) ??
26
+ tryConstructorPacketName(payload);
26
27
  if (packetName === undefined) {
27
28
  throw new ZLinkConfigurationException(
28
29
  `${surface} packetName is required when the payload type cannot provide one.`
@@ -48,9 +49,10 @@ export function readFrameworkPacketJsonContract(
48
49
  const expectedPacketName = normalizePacketName(explicitPacketName);
49
50
  for (const metadata of readZLinkDecoratorMetadata(type)) {
50
51
  if (
51
- metadata.kind === 'packet'
52
- && metadata.jsonContract !== undefined
53
- && (expectedPacketName === undefined || normalizePacketName(metadata.packetName) === expectedPacketName)
52
+ metadata.kind === 'packet' &&
53
+ metadata.jsonContract !== undefined &&
54
+ (expectedPacketName === undefined ||
55
+ normalizePacketName(metadata.packetName) === expectedPacketName)
54
56
  ) {
55
57
  return metadata.jsonContract;
56
58
  }
@@ -1,4 +1,7 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
3
6
  import {
4
7
  isZLinkMessage,
@@ -13,18 +16,15 @@ import {
13
16
  materializeZLinkMessageValue,
14
17
  readZLinkMessageDeclaredType
15
18
  } from '../../contracts/Common/ZLinkMessage';
16
- import { adoptEncodedPayload, borrowEncodedPayload } from '../../contracts/Common/encoded-payload-storage';
17
- import { ZLinkConfigurationException } from '../configuration';
18
19
  import {
19
- parseFrameworkJsonV1,
20
- stringifyFrameworkJsonV1
21
- } from './framework-json-v1';
20
+ adoptEncodedPayload,
21
+ borrowEncodedPayload
22
+ } from '../../contracts/Common/encoded-payload-storage';
23
+ import { ZLinkConfigurationException } from '../configuration';
24
+ import { parseFrameworkJsonV1, stringifyFrameworkJsonV1 } from './framework-json-v1';
22
25
  import type { ZLinkJsonSchema } from '../../contracts/Handlers/JsonContract';
23
26
  import { readZLinkPacketJsonContract } from '../../contracts/Handlers/Attributes';
24
- import {
25
- readFrameworkPacketJsonContract,
26
- resolveFrameworkPacketJsonContract
27
- } from './packet-name';
27
+ import { readFrameworkPacketJsonContract, resolveFrameworkPacketJsonContract } from './packet-name';
28
28
  import { isCanonicalCodecContentType } from '../../contracts/Configuration/CodecContentType';
29
29
  import {
30
30
  codecSerializerSelectionsOf,
@@ -82,7 +82,10 @@ export function encodeFrameworkPayload(
82
82
  if (isZLinkMessage(payload)) {
83
83
  if (payload.isEncoded()) {
84
84
  return {
85
- message: rememberContentType(toRuntimeMessage(payload.toEncodedPayload()), 'application/octet-stream'),
85
+ message: rememberContentType(
86
+ toRuntimeMessage(payload.toEncodedPayload()),
87
+ 'application/octet-stream'
88
+ ),
86
89
  contentType: 'application/octet-stream'
87
90
  };
88
91
  }
@@ -113,11 +116,17 @@ export function encodeFrameworkPayload(
113
116
 
114
117
  return {
115
118
  message: rememberContentType(
116
- RuntimeMessage.fromOwned(Buffer.from(stringifyFrameworkJsonV1(
117
- payload,
118
- (resolveFrameworkPacketJsonContract(payload, packetName)
119
- ?? (packetName === undefined ? undefined : readZLinkPacketJsonContract(packetName)))?.[contractPart]
120
- ))),
119
+ RuntimeMessage.fromOwned(
120
+ Buffer.from(
121
+ stringifyFrameworkJsonV1(
122
+ payload,
123
+ (resolveFrameworkPacketJsonContract(payload, packetName) ??
124
+ (packetName === undefined ? undefined : readZLinkPacketJsonContract(packetName)))?.[
125
+ contractPart
126
+ ]
127
+ )
128
+ )
129
+ ),
121
130
  JSON_CONTENT_TYPE
122
131
  ),
123
132
  contentType: JSON_CONTENT_TYPE
@@ -194,7 +203,8 @@ export function wrapFrameworkPayloadMessage(
194
203
  ): ZLinkMessage {
195
204
  const payload = encodedPayloadFromOwned(message.data());
196
205
  return createZLinkMessageFromEncoded(payload, <T>(type?: Type<T>) =>
197
- decodeFrameworkEncodedPayload(payload, registry, type, contentType, packetName, contractPart));
206
+ decodeFrameworkEncodedPayload(payload, registry, type, contentType, packetName, contractPart)
207
+ );
198
208
  }
199
209
 
200
210
  function decodeFrameworkEncodedPayload<T>(
@@ -217,11 +227,10 @@ function decodeFrameworkEncodedPayload<T>(
217
227
  if (payload.isEmpty()) return undefined as T;
218
228
  const text = payload.getString('utf8');
219
229
  try {
220
- return materializeZLinkMessageValue(parseFrameworkJsonV1(
221
- text,
222
- {},
223
- schemaForDecode(type, packetName, contractPart)
224
- ) as T, type);
230
+ return materializeZLinkMessageValue(
231
+ parseFrameworkJsonV1(text, {}, schemaForDecode(type, packetName, contractPart)) as T,
232
+ type
233
+ );
225
234
  } catch (error) {
226
235
  throw createInternalFrameworkException(
227
236
  ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed,
@@ -237,10 +246,12 @@ function schemaForDecode(
237
246
  packetName: string | undefined,
238
247
  contractPart: 'payload' | 'reply'
239
248
  ): ZLinkJsonSchema | undefined {
240
- const contract = type === undefined
241
- ? undefined
242
- : readFrameworkPacketJsonContract(type, packetName);
243
- return (contract ?? (packetName === undefined ? undefined : readZLinkPacketJsonContract(packetName)))?.[contractPart];
249
+ const contract =
250
+ type === undefined ? undefined : readFrameworkPacketJsonContract(type, packetName);
251
+ return (contract ??
252
+ (packetName === undefined ? undefined : readZLinkPacketJsonContract(packetName)))?.[
253
+ contractPart
254
+ ];
244
255
  }
245
256
 
246
257
  export function selectDefaultSerializer(
@@ -262,9 +273,7 @@ export function selectSerializerWithContentType(
262
273
  registry?: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer>,
263
274
  declaredType?: Type
264
275
  ): ZLinkSerializerSelectionEntry | undefined {
265
- return serializerSelectionPlanOf(registry)?.select(
266
- declaredType ?? outboundBusinessType(value)
267
- );
276
+ return serializerSelectionPlanOf(registry)?.select(declaredType ?? outboundBusinessType(value));
268
277
  }
269
278
 
270
279
  function serializerSelectionPlanOf(
@@ -321,17 +330,21 @@ function serializerSelectionPlanOf(
321
330
  function outboundBusinessType(value: unknown): Type | undefined {
322
331
  if (value === null || value === undefined) return undefined;
323
332
  switch (typeof value) {
324
- case 'string': return String as unknown as Type;
325
- case 'number': return Number as unknown as Type;
326
- case 'boolean': return Boolean as unknown as Type;
327
- case 'bigint': return BigInt as unknown as Type;
328
- case 'symbol': return Symbol as unknown as Type;
329
- case 'function': return Function as unknown as Type;
333
+ case 'string':
334
+ return String as unknown as Type;
335
+ case 'number':
336
+ return Number as unknown as Type;
337
+ case 'boolean':
338
+ return Boolean as unknown as Type;
339
+ case 'bigint':
340
+ return BigInt as unknown as Type;
341
+ case 'symbol':
342
+ return Symbol as unknown as Type;
343
+ case 'function':
344
+ return Function as unknown as Type;
330
345
  case 'object': {
331
346
  const constructor = (value as { constructor?: unknown }).constructor;
332
- return typeof constructor === 'function'
333
- ? constructor as Type
334
- : Object as Type;
347
+ return typeof constructor === 'function' ? (constructor as Type) : (Object as Type);
335
348
  }
336
349
  }
337
350
  throw new TypeError('Unsupported payload type.');
@@ -365,15 +378,20 @@ function unsupportedContentType(contentType: string): Error {
365
378
  );
366
379
  }
367
380
 
368
- function parseJsonPayload(message: Message, schema?: ZLinkJsonSchema): {
369
- readonly valid: true;
370
- readonly value: unknown;
371
- readonly error?: undefined;
372
- } | {
373
- readonly valid: false;
374
- readonly value?: undefined;
375
- readonly error: unknown;
376
- } {
381
+ function parseJsonPayload(
382
+ message: Message,
383
+ schema?: ZLinkJsonSchema
384
+ ):
385
+ | {
386
+ readonly valid: true;
387
+ readonly value: unknown;
388
+ readonly error?: undefined;
389
+ }
390
+ | {
391
+ readonly valid: false;
392
+ readonly value?: undefined;
393
+ readonly error: unknown;
394
+ } {
377
395
  try {
378
396
  return { valid: true, value: parseFrameworkJsonV1(message.getString('utf8'), {}, schema) };
379
397
  } catch (error) {
@@ -391,9 +409,11 @@ function serializerMapOf(
391
409
  }
392
410
 
393
411
  function isMessage(value: unknown): value is Message {
394
- return typeof value === 'object'
395
- && value !== null
396
- && typeof (value as { data?: unknown }).data === 'function';
412
+ return (
413
+ typeof value === 'object' &&
414
+ value !== null &&
415
+ typeof (value as { data?: unknown }).data === 'function'
416
+ );
397
417
  }
398
418
 
399
419
  function toRuntimeMessage(payload: ZLinkEncodedPayload): Message {