@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
@@ -60,7 +60,11 @@ export function encodeNodeRequestHeader(correlation: bigint): Buffer {
60
60
 
61
61
  export function decodeNodeRequestHeader(frame: Uint8Array): bigint {
62
62
  const header = decodeHeader(frame);
63
- if (header.command !== M6aServiceWireCommand.nodeRequest || header.flags !== 0 || frame.byteLength !== 13) {
63
+ if (
64
+ header.command !== M6aServiceWireCommand.nodeRequest ||
65
+ header.flags !== 0 ||
66
+ frame.byteLength !== 13
67
+ ) {
64
68
  fail('Invalid nodeRequest header.');
65
69
  }
66
70
  return readNonZeroU64(asBuffer(frame), PREFIX_SIZE, 'correlation');
@@ -88,9 +92,10 @@ export function encodeChannelRequestHeader(correlation: bigint, channelName: str
88
92
  );
89
93
  }
90
94
 
91
- export function decodeChannelRequestHeader(
92
- frame: Uint8Array
93
- ): { readonly correlation: bigint; readonly channelName: string } {
95
+ export function decodeChannelRequestHeader(frame: Uint8Array): {
96
+ readonly correlation: bigint;
97
+ readonly channelName: string;
98
+ } {
94
99
  const header = decodeHeader(frame);
95
100
  if (header.command !== M6aServiceWireCommand.channelRequest || header.flags !== 0) {
96
101
  fail('Invalid channelRequest header.');
@@ -126,7 +131,11 @@ export function encodeReplyHeader(
126
131
 
127
132
  export function decodeReplyHeader(frame: Uint8Array): ServiceReplyHeader {
128
133
  const header = decodeHeader(frame);
129
- if (header.command !== M6aServiceWireCommand.reply || header.flags !== 0 || frame.byteLength < 21) {
134
+ if (
135
+ header.command !== M6aServiceWireCommand.reply ||
136
+ header.flags !== 0 ||
137
+ frame.byteLength < 21
138
+ ) {
130
139
  fail('Invalid reply header.');
131
140
  }
132
141
  const bytes = asBuffer(frame);
@@ -147,10 +156,8 @@ export function encodeApplicationPayload(payload: ServiceApplicationPayload): Bu
147
156
  const packetName = encodeText8(payload.packetName, 'packetName');
148
157
  const contentType = encodeText8(payload.contentType, 'contentType');
149
158
  if (payload.payload.byteLength > MAX_U32) fail('Application payload exceeds u32.');
150
- const bodyLength = packetName.byteLength
151
- + contentType.byteLength
152
- + 4
153
- + payload.payload.byteLength;
159
+ const bodyLength =
160
+ packetName.byteLength + contentType.byteLength + 4 + payload.payload.byteLength;
154
161
  if (bodyLength > MAX_U32) fail('Application payload body exceeds u32.');
155
162
  const result = Buffer.alloc(5 + bodyLength);
156
163
  result[0] = 1;
@@ -160,11 +167,10 @@ export function encodeApplicationPayload(payload: ServiceApplicationPayload): Bu
160
167
  offset += contentType.copy(result, offset);
161
168
  result.writeUInt32BE(payload.payload.byteLength, offset);
162
169
  offset += 4;
163
- Buffer.from(
164
- payload.payload.buffer,
165
- payload.payload.byteOffset,
166
- payload.payload.byteLength
167
- ).copy(result, offset);
170
+ Buffer.from(payload.payload.buffer, payload.payload.byteOffset, payload.payload.byteLength).copy(
171
+ result,
172
+ offset
173
+ );
168
174
  return result;
169
175
  }
170
176
 
@@ -188,10 +194,7 @@ export function encodeMultipartApplicationPayload(
188
194
  multipartLength += 4 + part.byteLength;
189
195
  if (multipartLength > MAX_U32) fail('Multipart payload exceeds u32.');
190
196
  }
191
- const bodyLength = packetNameBytes.byteLength
192
- + contentTypeBytes.byteLength
193
- + 4
194
- + multipartLength;
197
+ const bodyLength = packetNameBytes.byteLength + contentTypeBytes.byteLength + 4 + multipartLength;
195
198
  if (bodyLength > MAX_U32) fail('Application payload body exceeds u32.');
196
199
  const result = Buffer.alloc(5 + bodyLength);
197
200
  result[0] = 1;
@@ -277,10 +280,13 @@ export function encodeRouteMeshAdmission(
277
280
  const extension = concat(
278
281
  tlv(1, Buffer.of(stateToWire(descriptor.state))),
279
282
  tlv(2, encodeU64(descriptor.applicationVersion)),
280
- tlv(6, concat(
281
- encodeU16(descriptor.protocolCapabilities.length),
282
- ...descriptor.protocolCapabilities.map(value => encodeText8(value, 'protocolCapability'))
283
- )),
283
+ tlv(
284
+ 6,
285
+ concat(
286
+ encodeU16(descriptor.protocolCapabilities.length),
287
+ ...descriptor.protocolCapabilities.map((value) => encodeText8(value, 'protocolCapability'))
288
+ )
289
+ ),
284
290
  tlv(7, Buffer.of(roleToWire(descriptor.objectRole))),
285
291
  tlv(8, encodeU32(descriptor.placementWeight)),
286
292
  tlv(9, encodeU32(descriptor.activeCapacityLimit)),
@@ -302,7 +308,8 @@ export function decodeRouteMeshAdmission(
302
308
  ): ServiceNodeDescriptor {
303
309
  validateAdmissionCommand(expectedCommand);
304
310
  const header = decodeHeader(frame);
305
- if (header.command !== expectedCommand || header.flags !== 0) fail('Unexpected admission header.');
311
+ if (header.command !== expectedCommand || header.flags !== 0)
312
+ fail('Unexpected admission header.');
306
313
  const reader = new Reader(frame, PREFIX_SIZE);
307
314
  if (reader.u8('topologyKind') !== 1) fail('Admission is not RouteMesh topology.');
308
315
  const routeLength = reader.u32('routeLength');
@@ -370,11 +377,11 @@ export function decodeRouteMeshAdmission(
370
377
  }
371
378
  reader.end();
372
379
  if (
373
- state === undefined
374
- || applicationVersion === undefined
375
- || protocolCapabilities === undefined
376
- || objectRole === undefined
377
- || ![8, 9, 10, 11, 12].every(id => capacities.has(id))
380
+ state === undefined ||
381
+ applicationVersion === undefined ||
382
+ protocolCapabilities === undefined ||
383
+ objectRole === undefined ||
384
+ ![8, 9, 10, 11, 12].every((id) => capacities.has(id))
378
385
  ) {
379
386
  fail('Descriptor extension omits a required field.');
380
387
  }
@@ -408,7 +415,11 @@ export function encodeReject(reason: number): Buffer {
408
415
 
409
416
  export function decodeReject(frame: Uint8Array): number {
410
417
  const header = decodeHeader(frame);
411
- if (header.command !== M6aServiceWireCommand.reject || header.flags !== 0 || frame.byteLength !== 9) {
418
+ if (
419
+ header.command !== M6aServiceWireCommand.reject ||
420
+ header.flags !== 0 ||
421
+ frame.byteLength !== 9
422
+ ) {
412
423
  fail('Invalid reject record.');
413
424
  }
414
425
  const reason = asBuffer(frame).readUInt32BE(PREFIX_SIZE);
@@ -476,7 +487,7 @@ function tlv(id: number, value: Buffer): Buffer {
476
487
  }
477
488
 
478
489
  function concat(...parts: readonly Uint8Array[]): Buffer {
479
- return Buffer.concat(parts.map(part => Buffer.from(part)));
490
+ return Buffer.concat(parts.map((part) => Buffer.from(part)));
480
491
  }
481
492
 
482
493
  function readNonZeroU64(bytes: Buffer, offset: number, field: string): bigint {
@@ -491,9 +502,9 @@ function asBuffer(value: Uint8Array): Buffer {
491
502
 
492
503
  function validateAdmissionCommand(command: number): void {
493
504
  if (
494
- command !== M6aServiceWireCommand.hello
495
- && command !== M6aServiceWireCommand.admit
496
- && command !== M6aServiceWireCommand.update
505
+ command !== M6aServiceWireCommand.hello &&
506
+ command !== M6aServiceWireCommand.admit &&
507
+ command !== M6aServiceWireCommand.update
497
508
  ) {
498
509
  fail('Command is not an admission record.');
499
510
  }
@@ -507,9 +518,9 @@ function validateReplyFields(correlation: bigint, terminal: number, failure: num
507
518
  // generated predicate replaces the old broad-category check, which
508
519
  // accepted any typed pairing and wrongly rejected defined codes 33/34.
509
520
  if (
510
- correlation <= 0n
511
- || correlation > MAX_U64
512
- || !isValidServiceWireTerminalFailure(terminal, failure)
521
+ correlation <= 0n ||
522
+ correlation > MAX_U64 ||
523
+ !isValidServiceWireTerminalFailure(terminal, failure)
513
524
  ) {
514
525
  fail('Invalid reply terminal fields.');
515
526
  }
@@ -520,23 +531,34 @@ function stateToWire(value: ServiceNodeState): number {
520
531
  // is a host-internal transition and has the same remote admission meaning
521
532
  // as `draining`; the service wire does not expose a separate retiring value.
522
533
  switch (value) {
523
- case 'preparing': return 0;
524
- case 'serving': return 1;
534
+ case 'preparing':
535
+ return 0;
536
+ case 'serving':
537
+ return 1;
525
538
  case 'retiring':
526
- case 'draining': return 2;
527
- case 'stopped': return 3;
528
- case 'error': return 4;
539
+ case 'draining':
540
+ return 2;
541
+ case 'stopped':
542
+ return 3;
543
+ case 'error':
544
+ return 4;
529
545
  }
530
546
  }
531
547
 
532
548
  function stateFromWire(value: number): ServiceNodeState {
533
549
  switch (value) {
534
- case 0: return 'preparing';
535
- case 1: return 'serving';
536
- case 2: return 'draining';
537
- case 3: return 'stopped';
538
- case 4: return 'error';
539
- default: fail('Invalid runtime state.');
550
+ case 0:
551
+ return 'preparing';
552
+ case 1:
553
+ return 'serving';
554
+ case 2:
555
+ return 'draining';
556
+ case 3:
557
+ return 'stopped';
558
+ case 4:
559
+ return 'error';
560
+ default:
561
+ fail('Invalid runtime state.');
540
562
  }
541
563
  }
542
564
 
@@ -51,7 +51,9 @@ export enum ZLinkFrameworkInternalErrorKind {
51
51
  ActorRouteUnavailable = 'actorRouteUnavailable'
52
52
  }
53
53
 
54
- const INTERNAL_TO_PUBLIC: Readonly<Record<ZLinkFrameworkInternalErrorKind, ZLinkFrameworkErrorKind>> = Object.freeze({
54
+ const INTERNAL_TO_PUBLIC: Readonly<
55
+ Record<ZLinkFrameworkInternalErrorKind, ZLinkFrameworkErrorKind>
56
+ > = Object.freeze({
55
57
  [ZLinkFrameworkInternalErrorKind.ActorRouteNotFound]: ZLinkFrameworkErrorKind.NotFound,
56
58
  [ZLinkFrameworkInternalErrorKind.ActorCreateFailed]: ZLinkFrameworkErrorKind.InternalFailure,
57
59
  [ZLinkFrameworkInternalErrorKind.ActorAlreadyExists]: ZLinkFrameworkErrorKind.AlreadyExists,
@@ -74,7 +76,8 @@ const INTERNAL_TO_PUBLIC: Readonly<Record<ZLinkFrameworkInternalErrorKind, ZLink
74
76
  [ZLinkFrameworkInternalErrorKind.WorkerFailed]: ZLinkFrameworkErrorKind.InternalFailure,
75
77
  [ZLinkFrameworkInternalErrorKind.ActorLocationStale]: ZLinkFrameworkErrorKind.Unavailable,
76
78
  [ZLinkFrameworkInternalErrorKind.ActorCreateRejected]: ZLinkFrameworkErrorKind.Rejected,
77
- [ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured]: ZLinkFrameworkErrorKind.NotConfigured,
79
+ [ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured]:
80
+ ZLinkFrameworkErrorKind.NotConfigured,
78
81
  [ZLinkFrameworkInternalErrorKind.MeshSelectionRequired]: ZLinkFrameworkErrorKind.NotConfigured,
79
82
  [ZLinkFrameworkInternalErrorKind.MeshNotFound]: ZLinkFrameworkErrorKind.NotFound,
80
83
  [ZLinkFrameworkInternalErrorKind.InvalidConfiguration]: ZLinkFrameworkErrorKind.NotConfigured,
@@ -90,13 +93,16 @@ const INTERNAL_TO_PUBLIC: Readonly<Record<ZLinkFrameworkInternalErrorKind, ZLink
90
93
  [ZLinkFrameworkInternalErrorKind.SpotIdConflict]: ZLinkFrameworkErrorKind.AlreadyExists,
91
94
  [ZLinkFrameworkInternalErrorKind.RuntimeShutdown]: ZLinkFrameworkErrorKind.ShuttingDown,
92
95
  [ZLinkFrameworkInternalErrorKind.RelocationDisabled]: ZLinkFrameworkErrorKind.Rejected,
93
- [ZLinkFrameworkInternalErrorKind.RelocationTargetUnavailable]: ZLinkFrameworkErrorKind.Unavailable,
96
+ [ZLinkFrameworkInternalErrorKind.RelocationTargetUnavailable]:
97
+ ZLinkFrameworkErrorKind.Unavailable,
94
98
  [ZLinkFrameworkInternalErrorKind.RelocationFailed]: ZLinkFrameworkErrorKind.InternalFailure,
95
99
  [ZLinkFrameworkInternalErrorKind.InvalidOperation]: ZLinkFrameworkErrorKind.InvalidOperation,
96
100
  [ZLinkFrameworkInternalErrorKind.ActorRouteUnavailable]: ZLinkFrameworkErrorKind.Unavailable
97
101
  });
98
102
 
99
- export const ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES: Readonly<Record<ZLinkFrameworkInternalErrorKind, number>> = Object.freeze({
103
+ export const ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES: Readonly<
104
+ Record<ZLinkFrameworkInternalErrorKind, number>
105
+ > = Object.freeze({
100
106
  [ZLinkFrameworkInternalErrorKind.ActorRouteNotFound]: 0,
101
107
  [ZLinkFrameworkInternalErrorKind.ActorCreateFailed]: 1,
102
108
  [ZLinkFrameworkInternalErrorKind.ActorAlreadyExists]: 2,
@@ -141,20 +147,22 @@ export const ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES: Readonly<Record<ZLinkFr
141
147
  [ZLinkFrameworkInternalErrorKind.ActorRouteUnavailable]: 41
142
148
  });
143
149
 
144
- const INTERNAL_KIND_BY_WIRE_FAILURE_CODE: ReadonlyMap<number, ZLinkFrameworkInternalErrorKind> = new Map<number, ZLinkFrameworkInternalErrorKind>([
145
- ...Object.entries(ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES)
146
- .map(([kind, code]) => [code + 1, kind as ZLinkFrameworkInternalErrorKind] as const),
147
- // Spec 32-framework-error-model:99-103 — a workerQueueFull(18) received in a
148
- // remote reply is the target's queue state and maps to Unavailable.
149
- [18, ZLinkFrameworkInternalErrorKind.RouteNotConnected]
150
- ]);
150
+ const INTERNAL_KIND_BY_WIRE_FAILURE_CODE: ReadonlyMap<number, ZLinkFrameworkInternalErrorKind> =
151
+ new Map<number, ZLinkFrameworkInternalErrorKind>([
152
+ ...Object.entries(ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES).map(
153
+ ([kind, code]) => [code + 1, kind as ZLinkFrameworkInternalErrorKind] as const
154
+ ),
155
+ // Spec 32-framework-error-model:99-103 — a workerQueueFull(18) received in a
156
+ // remote reply is the target's queue state and maps to Unavailable.
157
+ [18, ZLinkFrameworkInternalErrorKind.RouteNotConnected]
158
+ ]);
151
159
 
152
160
  const WIRE_TERMINAL_RESULT_BY_FAILURE_CODE: ReadonlyMap<number, number> = new Map([
153
- ...[1, 6, 8, 9, 10, 11, 14].map(code => [code, 102] as const),
154
- ...[2, 5, 13, 17, 19, 20, 35, 42].map(code => [code, 105] as const),
155
- ...[3, 4, 7, 21, 33, 34].map(code => [code, 107] as const),
156
- ...[12, 16].map(code => [code, 104] as const),
157
- ...[15, 18, 22].map(code => [code, 106] as const)
161
+ ...[1, 6, 8, 9, 10, 11, 14].map((code) => [code, 102] as const),
162
+ ...[2, 5, 13, 17, 19, 20, 35, 42].map((code) => [code, 105] as const),
163
+ ...[3, 4, 7, 21, 33, 34].map((code) => [code, 107] as const),
164
+ ...[12, 16].map((code) => [code, 104] as const),
165
+ ...[15, 18, 22].map((code) => [code, 106] as const)
158
166
  ]);
159
167
 
160
168
  const INTERNAL_KIND = new WeakMap<ZLinkFrameworkException, ZLinkFrameworkInternalErrorKind>();
@@ -249,10 +257,7 @@ export function wireReplyFailureException(
249
257
  message
250
258
  );
251
259
  }
252
- return new ZLinkFrameworkException(
253
- requestResultToPublicErrorKind(terminalResult),
254
- message
255
- );
260
+ return new ZLinkFrameworkException(requestResultToPublicErrorKind(terminalResult), message);
256
261
  }
257
262
 
258
263
  /**
@@ -280,9 +285,10 @@ export function internalFrameworkErrorCode(error: ZLinkFrameworkException): numb
280
285
  }
281
286
 
282
287
  /** Produces the canonical stateful wire terminal without leaking internal kinds. */
283
- export function internalFrameworkWireReply(
284
- error: ZLinkFrameworkException
285
- ): { readonly terminalResult: number; readonly failureCode: number } {
288
+ export function internalFrameworkWireReply(error: ZLinkFrameworkException): {
289
+ readonly terminalResult: number;
290
+ readonly failureCode: number;
291
+ } {
286
292
  const kind = INTERNAL_KIND.get(error);
287
293
  if (kind === ZLinkFrameworkInternalErrorKind.DeadlineExceeded) {
288
294
  return { terminalResult: 101, failureCode: 0 };
@@ -321,15 +327,10 @@ export function internalFrameworkErrorKindFromWireReply(
321
327
  return expectedTerminalResult === terminalResult ? kind : undefined;
322
328
  }
323
329
 
324
- const BOUNDARY_WIRE_TERMINAL_RESULTS = new Set([
325
- 101, 103, 108, 109, 110, 111, 112, 113
326
- ]);
330
+ const BOUNDARY_WIRE_TERMINAL_RESULTS = new Set([101, 103, 108, 109, 110, 111, 112, 113]);
327
331
 
328
332
  /** Checks the terminal and failure-code pair before a transport maps it. */
329
- export function isCanonicalWireReplyTerminal(
330
- terminalResult: number,
331
- failureCode: number
332
- ): boolean {
333
+ export function isCanonicalWireReplyTerminal(terminalResult: number, failureCode: number): boolean {
333
334
  if (terminalResult === 0) return failureCode === 0;
334
335
  if (BOUNDARY_WIRE_TERMINAL_RESULTS.has(terminalResult)) return failureCode === 0;
335
336
  return internalFrameworkErrorKindFromWireReply(terminalResult, failureCode) !== undefined;
@@ -38,12 +38,9 @@ interface LifecycleScopeDisposal {
38
38
  readonly idle: Promise<void> | undefined;
39
39
  }
40
40
 
41
- const HANDLER_SCOPE_FACTORY = Symbol.for(
42
- '@zlink-systems/framework.handler-instance-scope-factory'
43
- );
41
+ const HANDLER_SCOPE_FACTORY = Symbol.for('@zlink-systems/framework.handler-instance-scope-factory');
44
42
  const activeHandlerScope = new AsyncLocalStorage<ActiveHandlerScope>();
45
- const activeLifecycleScope =
46
- new AsyncLocalStorage<LifecycleHandlerInstanceScope>();
43
+ const activeLifecycleScope = new AsyncLocalStorage<LifecycleHandlerInstanceScope>();
47
44
  const detachedStateLaneResource = new AsyncResource('zlink:handler-instance-scope');
48
45
  const dispatchScopes = new WeakMap<object, ZLinkHandlerInstanceScope>();
49
46
  const lifecycleScopes = new WeakMap<object, Promise<LifecycleHandlerInstanceScope>>();
@@ -69,10 +66,7 @@ export async function runInHandlerInstanceScope<T>(
69
66
  dispatchScopes.set(context, scope);
70
67
  }
71
68
  try {
72
- return await activeHandlerScope.run(
73
- { scope },
74
- () => callback(scope)
75
- );
69
+ return await activeHandlerScope.run({ scope }, () => callback(scope));
76
70
  } finally {
77
71
  if (context !== undefined && dispatchScopes.get(context) === scope) {
78
72
  dispatchScopes.delete(context);
@@ -89,9 +83,7 @@ export async function resolveLifecycleHandler<T>(
89
83
  let scope = lifecycleScopes.get(owner);
90
84
  if (scope === undefined) {
91
85
  scope = Promise.resolve(
92
- new LifecycleHandlerInstanceScope(
93
- createHandlerInstanceScope(providerResolver)
94
- )
86
+ new LifecycleHandlerInstanceScope(createHandlerInstanceScope(providerResolver))
95
87
  );
96
88
  lifecycleScopes.set(owner, scope);
97
89
  }
@@ -107,9 +99,7 @@ export async function runWithLifecycleHandler<THandler, TResult>(
107
99
  let scope = lifecycleScopes.get(owner);
108
100
  if (scope === undefined) {
109
101
  scope = Promise.resolve(
110
- new LifecycleHandlerInstanceScope(
111
- createHandlerInstanceScope(providerResolver)
112
- )
102
+ new LifecycleHandlerInstanceScope(createHandlerInstanceScope(providerResolver))
113
103
  );
114
104
  lifecycleScopes.set(owner, scope);
115
105
  }
@@ -129,21 +119,22 @@ function createHandlerInstanceScope(
129
119
  providerResolver?: ZLinkProviderResolver,
130
120
  context?: ZLinkMessageContext
131
121
  ): ZLinkHandlerInstanceScope {
132
- const factory = providerResolver === undefined
133
- ? undefined
134
- : (providerResolver as unknown as Record<PropertyKey, unknown>)[HANDLER_SCOPE_FACTORY];
122
+ const factory =
123
+ providerResolver === undefined
124
+ ? undefined
125
+ : (providerResolver as unknown as Record<PropertyKey, unknown>)[HANDLER_SCOPE_FACTORY];
135
126
  if (isHandlerInstanceScopeFactory(factory)) {
136
127
  return factory.create(context);
137
128
  }
138
129
  return new DefaultHandlerInstanceScope(providerResolver);
139
130
  }
140
131
 
141
- function isHandlerInstanceScopeFactory(
142
- value: unknown
143
- ): value is ZLinkHandlerInstanceScopeFactory {
144
- return typeof value === 'object'
145
- && value !== null
146
- && typeof (value as { create?: unknown }).create === 'function';
132
+ function isHandlerInstanceScopeFactory(value: unknown): value is ZLinkHandlerInstanceScopeFactory {
133
+ return (
134
+ typeof value === 'object' &&
135
+ value !== null &&
136
+ typeof (value as { create?: unknown }).create === 'function'
137
+ );
147
138
  }
148
139
 
149
140
  class DefaultHandlerInstanceScope implements ZLinkHandlerInstanceScope {
@@ -205,8 +196,7 @@ class DefaultHandlerInstanceScope implements ZLinkHandlerInstanceScope {
205
196
  private async activate<T>(type: Type<T>, activation: Deferred<unknown>): Promise<void> {
206
197
  let instance: T;
207
198
  try {
208
- instance = await this.providerResolver?.create?.(type)
209
- ?? new type();
199
+ instance = (await this.providerResolver?.create?.(type)) ?? new type();
210
200
  } catch (error) {
211
201
  activation.reject(error);
212
202
  return;
@@ -258,9 +248,8 @@ class LifecycleHandlerInstanceScope {
258
248
  ): Promise<TResult> {
259
249
  await this.lane.run(() => this.beginInvocationCore());
260
250
  try {
261
- return await activeLifecycleScope.run(
262
- this,
263
- async () => callback(await this.instances.resolve(type))
251
+ return await activeLifecycleScope.run(this, async () =>
252
+ callback(await this.instances.resolve(type))
264
253
  );
265
254
  } finally {
266
255
  await this.lane.run(() => this.completeInvocationCore());
@@ -1,9 +1,12 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import {
3
6
  type Type,
4
7
  type ZLinkHandlerFilterNext,
5
8
  type ZLinkHandlerFilter,
6
- type ZLinkHandlerFilterContext,
9
+ type ZLinkHandlerFilterContext
7
10
  } from '../../contracts';
8
11
  import {
9
12
  readZLinkDecoratorMetadata,
@@ -20,7 +23,9 @@ export interface ZLinkHandlerExposurePolicy {
20
23
  readonly explicitHandlers?: readonly Type[];
21
24
  }
22
25
 
23
- export function scanZLinkHandlerTypes(handlerTypes: readonly Type[]): readonly ZLinkHandlerDescriptor[] {
26
+ export function scanZLinkHandlerTypes(
27
+ handlerTypes: readonly Type[]
28
+ ): readonly ZLinkHandlerDescriptor[] {
24
29
  return handlerTypes.flatMap((handlerType) =>
25
30
  readZLinkDecoratorMetadata(handlerType)
26
31
  .filter((metadata) => metadata.kind !== 'handlerGroup' && metadata.kind !== 'packet')
@@ -43,7 +48,10 @@ export function exposeZLinkHandlers(
43
48
  return false;
44
49
  }
45
50
  return readZLinkDecoratorMetadata(descriptor.handlerType).some(
46
- (metadata) => metadata.kind === 'handlerGroup' && metadata.groupName !== undefined && groups.has(metadata.groupName)
51
+ (metadata) =>
52
+ metadata.kind === 'handlerGroup' &&
53
+ metadata.groupName !== undefined &&
54
+ groups.has(metadata.groupName)
47
55
  );
48
56
  });
49
57
  }
@@ -82,10 +90,12 @@ function invokeAtMostOnce(next: ZLinkHandlerFilterNext): ZLinkHandlerFilterNext
82
90
  let invoked = false;
83
91
  return () => {
84
92
  if (invoked) {
85
- return Promise.reject(createInternalFrameworkException(
86
- ZLinkFrameworkInternalErrorKind.InvalidOperation,
87
- 'A handler filter cannot invoke next more than once.'
88
- ));
93
+ return Promise.reject(
94
+ createInternalFrameworkException(
95
+ ZLinkFrameworkInternalErrorKind.InvalidOperation,
96
+ 'A handler filter cannot invoke next more than once.'
97
+ )
98
+ );
89
99
  }
90
100
  invoked = true;
91
101
  return next();