@zlink-systems/framework 0.25.0 → 0.27.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 (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,44 +1,45 @@
1
- import type {
2
- ActorRef,
3
- Type,
4
- ZLinkActor,
5
- ZLinkBoundSession,
6
- ZLinkSessionActor,
7
- ZLinkSessionFactory,
8
- ZLinkSession,
9
- ZLinkMessageSerializer,
10
- ZLinkStreamCompressionCodec,
11
- ZLinkStreamCompressionOptions
1
+ import {
2
+ type ActorRef,
3
+ type Type,
4
+ type ZLinkActor,
5
+ type ZLinkBoundSession,
6
+ type ZLinkMessageSerializer,
7
+ type ZLinkSession,
8
+ type ZLinkSessionActor,
9
+ type ZLinkSessionFactory,
10
+ type ZLinkStreamCompressionCodec,
11
+ type ZLinkStreamCompressionOptions,
12
+ ZLinkMessage
12
13
  } from '../../contracts';
13
- import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
14
- import type { ZLinkSubmitResult } from '../messaging/submission-result';
15
- import { ZLinkMessage } from '../../contracts';
16
14
  import type { Message } from '../../contracts/Common/Message';
17
- import {
18
- buildAdvertisedEndpoint,
19
- ZLinkConfigurationException,
20
- type ZLinkFrameworkRegistration
21
- } from '../configuration';
22
- import { ZLinkDispatchErrorReporter } from '../channels';
15
+ import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
16
+ import { DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE } from '../../contracts/Configuration/InternalDefaults';
17
+ import { zlinkDefaultLocationOptions } from '../../contracts/Locations/Options';
23
18
  import type {
24
- ZLinkBackendAdapterFactory,
25
19
  ZLinkBackendActorSessionNode,
20
+ ZLinkBackendAdapterFactory,
26
21
  ZLinkBackendContext,
27
22
  ZLinkBackendMeshNode,
28
23
  ZLinkBackendSocketMonitor,
29
24
  ZLinkBackendStreamSocket
30
25
  } from '../backend/contracts';
31
26
  import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
27
+ import { ZLinkDispatchErrorReporter } from '../channels';
28
+ import {
29
+ buildAdvertisedEndpoint,
30
+ ZLinkConfigurationException,
31
+ type ZLinkFrameworkRegistration
32
+ } from '../configuration';
33
+ import type { ZLinkListenerRecords } from '../foundation/listener-records';
32
34
  import type { StreamSessionService } from '../foundation/service-runtime-contracts';
33
35
  import { registerServiceSessionBindingIngressPort } from '../foundation/service-session-binding-ingress-port';
34
36
  import {
35
- messageToBytes,
36
- ZLinkStreamCodec,
37
- type ZLinkStreamFrameHeader,
38
- ZLinkStreamMessageKind,
39
- type ZLinkStreamReplyMessageKind
40
- } from './protocol';
37
+ ApplicationJobQueue,
38
+ resolveApplicationJobQueueConfiguration
39
+ } from '../host/application-job-queue';
40
+ import type { ZLinkSubmitResult } from '../messaging/submission-result';
41
41
  import {
42
+ DEFAULT_TERMINAL_RELOCATION_CAPACITY,
42
43
  ZLinkActorSessionBindingRegistry,
43
44
  type ZLinkActorSessionAuthorityFence
44
45
  } from './actor-session-binding-registry';
@@ -47,38 +48,45 @@ import {
47
48
  registerActorSessionBindingRuntimeOwner
48
49
  } from './actor-session-binding-runtime-owner';
49
50
  import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
51
+ import { ZLinkBoundActorRelaySender } from './bound-actor-relay-sender';
50
52
  import {
51
- decompressStreamPayload,
52
- resolveStreamCompressionCodec,
53
- ZLinkStreamFrameMessageFactory
54
- } from './stream-frame-factory';
53
+ DefaultZLinkBoundSessionResponseTarget,
54
+ type ZLinkBoundSessionResponseTarget
55
+ } from './bound-session-response-target';
56
+ import { ZLinkBoundSessionService, type ZLinkBoundSessionTransport } from './bound-session-service';
57
+ import { ZLinkManagedStream } from './managed-stream';
55
58
  import {
56
- ApplicationJobQueue,
57
- resolveApplicationJobQueueConfiguration
58
- } from '../host/application-job-queue';
59
- import { simpleMessage } from './stream-message-utils';
59
+ messageToBytes,
60
+ ZLinkStreamCodec,
61
+ ZLinkStreamMessageKind,
62
+ type ZLinkStreamFrameHeader,
63
+ type ZLinkStreamReplyMessageKind
64
+ } from './protocol';
65
+ import { ZLinkSessionActorCoordinator } from './session-actor-coordinator';
60
66
  import {
61
67
  DefaultZLinkBoundSession,
62
68
  DefaultZLinkSessionActor,
63
69
  DefaultZLinkSessionContext
64
70
  } from './session-context';
65
- import {
66
- DefaultZLinkBoundSessionResponseTarget,
67
- type ZLinkBoundSessionResponseTarget
68
- } from './bound-session-response-target';
69
- import { ZLinkBoundSessionService, type ZLinkBoundSessionTransport } from './bound-session-service';
70
- import { ZLinkSessionActorCoordinator } from './session-actor-coordinator';
71
- import { ZLinkBoundActorRelaySender } from './bound-actor-relay-sender';
72
- import { ZLinkManagedStream } from './managed-stream';
73
71
  import { createStreamSessionInstance } from './session-provider';
74
- import { DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE } from '../../contracts/Configuration/InternalDefaults';
72
+ import type {
73
+ ZLinkActorRouteCommitOptions,
74
+ ZLinkSessionBindingConfirmationOptions,
75
+ ZLinkSessionBindingIdentity
76
+ } from './stream-binding-runtime-ports';
77
+ import {
78
+ decompressStreamPayload,
79
+ resolveStreamCompressionCodec,
80
+ ZLinkStreamFrameMessageFactory
81
+ } from './stream-frame-factory';
82
+ import { simpleMessage } from './stream-message-utils';
75
83
  import {
76
84
  ZLinkStreamSessionNodeRuntime as ZLinkStreamSessionNodeRuntimeCore,
77
85
  ZLinkStreamSessionRuntime as ZLinkStreamSessionRuntimeCore,
78
86
  type ZLinkStreamSessionNodeRuntimeOptions as ZLinkStreamSessionNodeRuntimeCoreOptions,
79
87
  type ZLinkStreamSessionRuntimeOptions as ZLinkStreamSessionRuntimeCoreOptions
80
88
  } from './stream-session-runtime';
81
- import type { ZLinkActorRouteCommitOptions } from './stream-binding-runtime-ports';
89
+ const DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS = 1000;
82
90
  export { ZLinkPendingSessionRequest } from './session-requests';
83
91
  export { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
84
92
  export { ZLinkActorSessionBindingRegistry } from './actor-session-binding-registry';
@@ -98,6 +106,7 @@ export type {
98
106
  } from './bound-session-service';
99
107
 
100
108
  export interface ZLinkStreamBindingRuntimeOptions {
109
+ readonly dispatchErrors?: ZLinkDispatchErrorReporter;
101
110
  readonly transport?: ZLinkBoundSessionTransport;
102
111
  readonly messageFactory?: ZLinkStreamMessageFactory;
103
112
  readonly streamPayloadCodec?: ZLinkStreamPayloadCodec;
@@ -120,7 +129,7 @@ export interface ZLinkStreamBindingRuntimeOptions {
120
129
  actor: ActorRef,
121
130
  sessionRid: ActorRef['nodeRid'],
122
131
  signal?: AbortSignal,
123
- options?: { readonly waitForAcknowledgement?: boolean }
132
+ options?: ZLinkSessionBindingConfirmationOptions
124
133
  ) => Promise<void>;
125
134
  readonly errorSink?: () =>
126
135
  | {
@@ -167,6 +176,7 @@ export interface ZLinkStreamSessionNodeRuntimeOptions extends Omit<
167
176
  }
168
177
 
169
178
  export interface ZLinkStreamRuntimeManagerOptions {
179
+ readonly listenerRecords?: ZLinkListenerRecords;
170
180
  readonly registration: ZLinkFrameworkRegistration;
171
181
  readonly backendAdapterFactory: ZLinkBackendAdapterFactory;
172
182
  readonly context: ZLinkBackendContext;
@@ -183,14 +193,16 @@ export interface ZLinkStreamRuntimeManagerOptions {
183
193
  readonly applicationJobQueue?: ApplicationJobQueue;
184
194
  }
185
195
 
196
+ // A STREAM node's native resources, recorded as each one is created. The
197
+ // manager owns them from creation, so `dispose` releases whatever a failed
198
+ // `start` had already opened; an unreleased socket keeps the context from
199
+ // terminating.
186
200
  interface ZLinkStartedStreamNode {
187
201
  readonly meshName?: string;
188
- readonly advertisedEndpoint: string;
189
- readonly runtime: ZLinkStreamSessionNodeRuntimeCore;
190
202
  readonly socket: ZLinkBackendStreamSocket;
191
- readonly monitor: ZLinkBackendSocketMonitor;
192
- readonly nativeSessionService?: StreamSessionService;
193
- readonly nativeSessionServices?: readonly StreamSessionService[];
203
+ readonly nativeSessionServices: StreamSessionService[];
204
+ monitor?: ZLinkBackendSocketMonitor;
205
+ runtime?: ZLinkStreamSessionNodeRuntimeCore;
194
206
  }
195
207
 
196
208
  export class ZLinkStreamRuntimeManager {
@@ -215,6 +227,12 @@ export class ZLinkStreamRuntimeManager {
215
227
  const nativeMeshNode = actorDispatchEnabled ? this.options.nativeMeshNode : undefined;
216
228
  const meshCompletions = actorDispatchEnabled ? this.options.meshCompletions : undefined;
217
229
  const socket = streamAdapter.createStreamSocket(this.options.context);
230
+ const node: ZLinkStartedStreamNode = {
231
+ meshName: applicationMeshName,
232
+ socket,
233
+ nativeSessionServices: []
234
+ };
235
+ this.nodes.set(nodeName, node);
218
236
  // Core uses -1 as the explicit unlimited value. The Framework value 0
219
237
  // means that it adds no separate STREAM cap, so preserve that meaning
220
238
  // when applying the socket option.
@@ -240,7 +258,6 @@ export class ZLinkStreamRuntimeManager {
240
258
  `STREAM node '${nodeName}' advertised host requires a TCP endpoint, received '${boundEndpoint}'.`
241
259
  );
242
260
  }
243
- const readablePoller = streamAdapter.createReadablePoller(socket);
244
261
  const nativeSessionRoutes = new Map<
245
262
  string,
246
263
  {
@@ -262,12 +279,10 @@ export class ZLinkStreamRuntimeManager {
262
279
  const createService = meshNode?.createStreamSessionService;
263
280
  if (typeof createService !== 'function' || completions === undefined) continue;
264
281
  const service = createService.call(meshNode, socket.nativeInstance as never);
282
+ node.nativeSessionServices.push(service);
265
283
  const bindingOwner = actorSessionBindingRuntimeOwner(this.options.bindingRuntime);
266
284
  registerServiceSessionBindingIngressPort(service, {
267
- actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid),
268
- retainOutbound: (claim, delivery) =>
269
- bindingOwner.admitRelocationOutbound(claim, delivery),
270
- clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
285
+ actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
271
286
  });
272
287
  nativeSessionRoutes.set(meshName, {
273
288
  service,
@@ -280,11 +295,15 @@ export class ZLinkStreamRuntimeManager {
280
295
  ? undefined
281
296
  : nativeSessionRoutes.get(applicationMeshName)?.service;
282
297
  const monitor = monitoringAdapter.openSocketMonitor(socket);
298
+ node.monitor = monitor;
283
299
  const sessionType = streamNode.session!;
284
300
  const sessionHandlerTypes =
285
301
  (streamNode as unknown as Record<symbol, readonly Type[] | undefined>)[
286
302
  Symbol.for('@zlink-systems/framework:session-handler-types')
287
303
  ] ?? [];
304
+ // The runtime disposes the poller, so the poller is created where nothing
305
+ // can fail before the runtime owns it.
306
+ const readablePoller = streamAdapter.createReadablePoller(socket);
288
307
  const runtime = new ZLinkStreamSessionNodeRuntimeCore({
289
308
  nodeName,
290
309
  socket,
@@ -310,41 +329,31 @@ export class ZLinkStreamRuntimeManager {
310
329
  sessionHandlerTypes
311
330
  )
312
331
  });
332
+ node.runtime = runtime;
313
333
  runtime.start();
314
- this.nodes.set(nodeName, {
315
- meshName: applicationMeshName,
316
- advertisedEndpoint,
317
- runtime,
318
- socket,
319
- monitor,
320
- nativeSessionService,
321
- nativeSessionServices: [...nativeSessionRoutes.values()].map((route) => route.service)
322
- });
334
+ this.options.listenerRecords?.record('stream', nodeName, advertisedEndpoint);
323
335
  }
324
336
  }
325
337
 
326
338
  async dispose(): Promise<void> {
327
339
  const nodes = [...this.nodes.values()];
328
- this.nodes.clear();
329
340
  for (const node of nodes.reverse()) {
330
- await node.runtime.dispose();
331
- const nativeServices =
332
- node.nativeSessionServices ??
333
- (node.nativeSessionService === undefined ? [] : [node.nativeSessionService]);
334
- for (const service of nativeServices) {
335
- service.shutdown(1000);
341
+ await node.runtime?.dispose();
342
+ for (const service of node.nativeSessionServices) {
343
+ service.shutdown(DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS);
336
344
  service.close();
337
345
  }
338
- await node.monitor.dispose();
346
+ await node.monitor?.dispose();
339
347
  await node.socket.dispose();
340
348
  }
349
+ this.nodes.clear();
341
350
  }
342
351
 
343
352
  async notifyServerDrain(meshName: string): Promise<void> {
344
353
  await Promise.all(
345
354
  [...this.nodes.values()]
346
355
  .filter((node) => node.meshName === meshName)
347
- .map((node) => node.runtime.drainCloseSessions())
356
+ .map((node) => node.runtime?.drainCloseSessions())
348
357
  );
349
358
  }
350
359
 
@@ -352,7 +361,7 @@ export class ZLinkStreamRuntimeManager {
352
361
  await Promise.all(
353
362
  [...this.nodes.values()]
354
363
  .filter((node) => node.meshName === undefined)
355
- .map((node) => node.runtime.drainCloseSessions())
364
+ .map((node) => node.runtime?.drainCloseSessions())
356
365
  );
357
366
  }
358
367
  }
@@ -369,6 +378,7 @@ export class ZLinkStreamSessionRuntime extends ZLinkStreamSessionRuntimeCore {
369
378
  const bindingRuntime =
370
379
  options.bindingRuntime ??
371
380
  new ZLinkStreamBindingRuntime({
381
+ dispatchErrors: options.dispatchErrors,
372
382
  flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
373
383
  });
374
384
  super(
@@ -392,6 +402,7 @@ export class ZLinkStreamSessionNodeRuntime extends ZLinkStreamSessionNodeRuntime
392
402
  const bindingRuntime =
393
403
  options.bindingRuntime ??
394
404
  new ZLinkStreamBindingRuntime({
405
+ dispatchErrors: options.dispatchErrors,
395
406
  flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
396
407
  });
397
408
  super({
@@ -420,7 +431,12 @@ export class ZLinkStreamBindingRuntime {
420
431
  this.routes = new ZLinkActorSessionBindingRegistry<
421
432
  DefaultZLinkSessionContext,
422
433
  DefaultZLinkSessionActor
423
- >(4096, 4096, runtimeOptions.sessionRelocationSealTimeoutMs ?? 3_000, runtimeOptions.errorSink);
434
+ >(
435
+ DEFAULT_TERMINAL_RELOCATION_CAPACITY,
436
+ runtimeOptions.sessionRelocationSealTimeoutMs ??
437
+ zlinkDefaultLocationOptions.sessionRelocationSealTimeoutMs,
438
+ runtimeOptions.errorSink
439
+ );
424
440
  this.compressionCodec = resolveStreamCompressionCodec(runtimeOptions.streamCompression);
425
441
  this.frameMessages = new ZLinkStreamFrameMessageFactory(runtimeOptions);
426
442
  this.boundSessions = new ZLinkBoundSessionService(
@@ -442,21 +458,11 @@ export class ZLinkStreamBindingRuntime {
442
458
  actorSessionLifecycle
443
459
  );
444
460
  registerActorSessionBindingRuntimeOwner(this, {
445
- actorSlot: async (actorId, sessionRid) => {
446
- const route = await this.routes.route(actorId);
447
- return route !== undefined && route.sessionIdentity === sessionRid
448
- ? route.actorSlot
449
- : undefined;
450
- },
461
+ actorSlot: async (actorId, sessionRid) =>
462
+ (await this.routes.routeForSessionBinding(actorId, sessionRid))?.actorSlot,
451
463
  sealRelocation: (claim, expected, signal) =>
452
464
  this.routes.sealRelocation(claim, expected, signal),
453
465
  relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
454
- retainRelocationOutbound: (actorId, operation, sealId) =>
455
- this.routes.retainRelocationOutbound(actorId, operation, sealId),
456
- admitRelocationOutbound: (claim, operation) =>
457
- this.routes.admitRelocationOutbound(claim, operation),
458
- discardRelocationOutbound: (actorId, sealId, error) =>
459
- this.routes.discardRelocationOutbound(actorId, sealId, error),
460
466
  applyRelocation: (...args) => this.routes.applyRelocation(...args),
461
467
  observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
462
468
  clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
@@ -741,6 +747,14 @@ export class ZLinkStreamBindingRuntime {
741
747
  await this.boundSessions.disconnectBoundSession(actorId, signal);
742
748
  }
743
749
 
750
+ async closeSessionBinding(
751
+ actorId: string,
752
+ expected: ZLinkSessionBindingIdentity,
753
+ signal?: AbortSignal
754
+ ): Promise<void> {
755
+ await this.boundSessions.closeSessionBinding(actorId, expected, signal);
756
+ }
757
+
744
758
  async relay(
745
759
  actor: DefaultZLinkSessionActor,
746
760
  payload: ZLinkMessage,
@@ -10,7 +10,11 @@ import type {
10
10
  ZLinkMessageSerializer,
11
11
  ZLinkStream
12
12
  } from '../../contracts';
13
- import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
13
+ import {
14
+ ZLinkSubmitStatus,
15
+ classifySubmitResult,
16
+ type ZLinkSubmitResult
17
+ } from '../messaging/submission-result';
14
18
  import type { Message } from '../../contracts/Common/Message';
15
19
  import { throwIfAborted } from '../abort';
16
20
  import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
@@ -19,14 +23,16 @@ import type {
19
23
  ZLinkBackendSendFlags,
20
24
  ZLinkBackendStreamSocket
21
25
  } from '../backend/contracts';
22
- import { RequestResult, isBackendNotConnectedError } from '../backend/runtime-values';
26
+ import { RequestResult, isZLinkBackendResultError } from '../backend/runtime-values';
23
27
  import { ZLinkBufferMessage as NativeMessage } from '../backend/runtime-message';
28
+ import { diagnosticTextOrAbsent } from '../diagnostics/diagnostic-text';
24
29
  import type {
25
30
  StreamSessionActorAuthorityFence,
26
31
  StreamSessionService
27
32
  } from '../foundation/service-runtime-contracts';
28
33
  import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
29
34
  import type { ServiceActorRef } from '../foundation/service-stateful-registry';
35
+ import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
30
36
  import {
31
37
  closeMeshCompletion,
32
38
  type ZLinkMeshCompletion,
@@ -55,7 +61,8 @@ export interface ZLinkNativeSessionRoute {
55
61
 
56
62
  interface ZLinkManagedActorBinding {
57
63
  readonly actor: ZLinkBackendActorRef;
58
- readonly bindingGeneration?: bigint;
64
+ /** The Session owner's registry snapshot of this binding (Session–Actor binding §5-2). */
65
+ readonly binding?: ServiceStreamSessionBinding;
59
66
  readonly route?: ZLinkNativeSessionRoute;
60
67
  }
61
68
 
@@ -90,7 +97,12 @@ export class ZLinkManagedStream implements ZLinkStream {
90
97
  }
91
98
 
92
99
  actorBindingGeneration(actorId: string): bigint | undefined {
93
- return this.nativeActorBindings.get(actorId)?.bindingGeneration;
100
+ return this.nativeActorBindings.get(actorId)?.binding?.bindingGeneration;
101
+ }
102
+
103
+ /** The Session owner's registry snapshot of the Actor's current native binding. */
104
+ actorBinding(actorId: string): ServiceStreamSessionBinding | undefined {
105
+ return this.nativeActorBindings.get(actorId)?.binding;
94
106
  }
95
107
 
96
108
  private isTransportClosed(): boolean {
@@ -128,7 +140,9 @@ export class ZLinkManagedStream implements ZLinkStream {
128
140
  await this.socket.submit(this.backendRoutingId(), payload, timeoutMs);
129
141
  return { status: ZLinkSubmitStatus.Submitted };
130
142
  } catch (error) {
131
- if (isBackendNotConnectedError(error)) return { status: ZLinkSubmitStatus.Backpressured };
143
+ if (isZLinkBackendResultError(error) && error.operation === 'submit') {
144
+ return classifySubmitResult(error.result, 'STREAM submit', error.phase);
145
+ }
132
146
  throw error;
133
147
  }
134
148
  }
@@ -268,7 +282,7 @@ export class ZLinkManagedStream implements ZLinkStream {
268
282
  }
269
283
  this.nativeActorBindings.set(actor.actorId, {
270
284
  actor: nativeActor,
271
- bindingGeneration: binding.bindingGeneration,
285
+ binding,
272
286
  route
273
287
  });
274
288
  return;
@@ -309,7 +323,11 @@ export class ZLinkManagedStream implements ZLinkStream {
309
323
  ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
310
324
  `Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
311
325
  `(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
312
- `resolved ${resolved === undefined ? 'none' : `${String(resolved.nodeRid)}/${resolved.generation}`}, ` +
326
+ `resolved ${diagnosticTextOrAbsent(
327
+ resolved === undefined
328
+ ? undefined
329
+ : `${String(resolved.nodeRid)}/${resolved.generation}`
330
+ )}, ` +
313
331
  `terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`
314
332
  );
315
333
  }
@@ -329,7 +347,8 @@ export class ZLinkManagedStream implements ZLinkStream {
329
347
  const binding = this.nativeActorBindings.get(actorId);
330
348
  if (binding?.route !== undefined) {
331
349
  const route = binding.route;
332
- if (!this.hasNativeBinding(route, actorId, binding.bindingGeneration!)) {
350
+ const bindingGeneration = binding.binding!.bindingGeneration;
351
+ if (!this.hasNativeBinding(route, actorId, bindingGeneration)) {
333
352
  this.nativeActorBindings.delete(actorId);
334
353
  return;
335
354
  }
@@ -340,7 +359,7 @@ export class ZLinkManagedStream implements ZLinkStream {
340
359
  route.service.unbindActor(
341
360
  this.backendRoutingId(),
342
361
  binding.actor as never,
343
- binding.bindingGeneration!,
362
+ bindingGeneration,
344
363
  timeoutMs
345
364
  ),
346
365
  signal
@@ -356,7 +375,7 @@ export class ZLinkManagedStream implements ZLinkStream {
356
375
  // tombstone. A transport teardown can therefore report an internal
357
376
  // completion after the exact binding is already gone. Treat only that
358
377
  // exact missing binding as stale cleanup; preserve other failures.
359
- if (this.hasNativeBinding(route, actorId, binding.bindingGeneration!)) {
378
+ if (this.hasNativeBinding(route, actorId, bindingGeneration)) {
360
379
  throw error;
361
380
  }
362
381
  }
@@ -160,9 +160,8 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
160
160
  ): Promise<ZLinkSubmitResult> {
161
161
  const localActor = this.options.localActorProvider?.() === true;
162
162
  const remoteTarget = this.options.remoteBoundSessionTargetProvider();
163
- const sealedRemoteTarget = remoteTarget?.relocationSealId !== undefined;
164
163
  let nativeAttempted = false;
165
- if (localActor && !sealedRemoteTarget) {
164
+ if (localActor) {
166
165
  const result = await this.options.runtime.submitLocalBoundSession(
167
166
  this.options.actorId,
168
167
  this.message,
@@ -213,7 +212,6 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
213
212
  actorNodeRidHex: (actorRef?.nodeRid as { toHex?: () => string } | undefined)?.toHex?.(),
214
213
  actorGeneration: actorRef?.objectGeneration.toString(),
215
214
  actorOwnershipGeneration: ownershipGeneration?.toString(),
216
- relocationSealId: remoteTarget.relocationSealId,
217
215
  message: this.message,
218
216
  boundPacketName: packetName,
219
217
  metadata: this.selectedMetadata,
@@ -1,90 +1,52 @@
1
- import type { Message } from '../../contracts/Common/Message';
2
- import type { ZLinkFlowOrigin } from '../../contracts';
3
- import { resolveFrameworkPacketName } from '../messaging/packet-name';
4
1
  import {
2
+ ZlinkStreamCloseReasonCode as ZLinkStreamCloseReasonCode,
3
+ ZlinkStreamCodec as ZLinkStreamCodec,
4
+ ZlinkStreamHeaderFlags as ZLinkStreamHeaderFlags,
5
+ ZlinkStreamMessageKind as ZLinkStreamMessageKind,
6
+ ZlinkStreamControlPacket,
5
7
  decodeStreamWireFrame,
6
8
  decodeStreamWireHeader,
9
+ defaultMaxDecompressedPayloadSize,
10
+ encodeStreamWireActorBoundPayload,
11
+ encodeStreamWireActorUnboundPayload,
7
12
  encodeStreamWireFrame,
8
13
  encodeStreamWireHeader,
14
+ encodeStreamWireSessionClosingPayload,
9
15
  lz4PickleUncompressed,
10
16
  lz4UnpicklePayload,
11
17
  tryDecodeStreamWireFrame,
12
- utf8Encode
18
+ streamCodecContentType as wireCodecContentType,
19
+ streamCodecForContentType as wireCodecForContentType
13
20
  } from '@zlink-systems/stream-wire';
21
+ import type { ZLinkFlowOrigin } from '../../contracts';
22
+ import type { Message } from '../../contracts/Common/Message';
23
+ import { resolveFrameworkPacketName } from '../messaging/packet-name';
14
24
  import { throwAlreadySubmitted } from '../messaging/submission-result';
25
+ export {
26
+ ZlinkStreamMessageKind as ZLinkStreamMessageKind,
27
+ ZlinkStreamHeaderFlags as ZLinkStreamHeaderFlags,
28
+ ZlinkStreamCloseReasonCode as ZLinkStreamCloseReasonCode
29
+ } from '@zlink-systems/stream-wire';
15
30
 
16
31
  export { utf8Decode, utf8Encode } from '@zlink-systems/stream-wire';
17
32
 
18
- const defaultMaxDecompressedPayloadSize = 64 * 1024;
19
33
  const actorRequestDeadlineMetadataKey = '$zlink.actor-request-deadline-unix-ms';
20
34
  // Shared empty metadata for the dominant no-metadata frame; ReadonlyMap
21
35
  // keeps every consumer from mutating it.
22
36
  const EMPTY_STREAM_METADATA: ReadonlyMap<string, string> = new Map();
23
37
 
24
- export enum ZLinkStreamCodec {
25
- Raw = 0,
26
- Json = 1,
27
- MessagePack = 2,
28
- Protobuf = 3
29
- }
38
+ export { ZlinkStreamCodec as ZLinkStreamCodec } from '@zlink-systems/stream-wire';
30
39
 
31
40
  export function streamCodecContentType(codec: ZLinkStreamCodec): string {
32
- switch (codec) {
33
- case ZLinkStreamCodec.Json:
34
- return 'application/json';
35
- case ZLinkStreamCodec.MessagePack:
36
- return 'application/x-msgpack';
37
- case ZLinkStreamCodec.Protobuf:
38
- return 'application/x-protobuf';
39
- case ZLinkStreamCodec.Raw:
40
- return 'application/octet-stream';
41
- }
42
- throw new TypeError(`Unsupported STREAM codec '${codec}'.`);
41
+ return wireCodecContentType(codec);
43
42
  }
44
43
 
45
44
  export function streamCodecForContentType(contentType: string): ZLinkStreamCodec {
46
- switch (contentType) {
47
- case 'application/json':
48
- return ZLinkStreamCodec.Json;
49
- case 'application/x-msgpack':
50
- return ZLinkStreamCodec.MessagePack;
51
- case 'application/x-protobuf':
52
- return ZLinkStreamCodec.Protobuf;
53
- case 'application/octet-stream':
54
- return ZLinkStreamCodec.Raw;
55
- }
56
- throw new TypeError(`Unsupported STREAM content type '${contentType}'.`);
45
+ return wireCodecForContentType(contentType);
57
46
  }
58
47
 
59
- export enum ZLinkStreamMessageKind {
60
- Send = 1,
61
- Request = 2,
62
- Response = 3,
63
- Error = 4,
64
- Control = 5
65
- }
66
-
67
- export enum ZLinkStreamHeaderFlags {
68
- None = 0,
69
- HasRequestSeq = 0x01,
70
- HasMetadata = 0x02,
71
- PayloadCompressed = 0x04,
72
- HasCorrelationId = 0x08,
73
- HasFlowId = 0x10,
74
- HasActorSlot = 0x20
75
- }
76
-
77
- export enum ZLinkStreamCloseReasonCode {
78
- ClientClose = 1,
79
- IdleTimeout = 2,
80
- HeartbeatTimeout = 3,
81
- ServerDrain = 4,
82
- ProtocolError = 5,
83
- TransportError = 6
84
- }
85
-
86
- export const ZLINK_STREAM_HEARTBEAT_PING = '$zlink.heartbeat.ping';
87
- export const ZLINK_STREAM_HEARTBEAT_PONG = '$zlink.heartbeat.pong';
48
+ export const ZLINK_STREAM_HEARTBEAT_PING = ZlinkStreamControlPacket.HeartbeatPing;
49
+ export const ZLINK_STREAM_HEARTBEAT_PONG = ZlinkStreamControlPacket.HeartbeatPong;
88
50
 
89
51
  export interface ZLinkStreamFrameHeader {
90
52
  readonly kind: ZLinkStreamMessageKind;
@@ -142,48 +104,32 @@ export function encodeStreamControlFrame(name: string): Uint8Array {
142
104
  }
143
105
 
144
106
  export function encodeActorBoundFrame(actorSlot: number, actorId: string): Uint8Array {
145
- const actorIdBytes = utf8Encode(actorId);
146
- if (actorIdBytes.length < 1 || actorIdBytes.length > 0xff) {
147
- throw new Error('Actor id length is invalid for a STREAM binding control packet.');
148
- }
149
- const payload = new Uint8Array(4 + actorIdBytes.length);
150
- payload[0] = 1;
151
- payload[1] = actorSlot >>> 8;
152
- payload[2] = actorSlot & 0xff;
153
- payload[3] = actorIdBytes.length;
154
- payload.set(actorIdBytes, 4);
155
- return encodeStreamFrame(controlHeader('$zlink.actor.bound'), payload);
107
+ return encodeStreamFrame(
108
+ controlHeader(ZlinkStreamControlPacket.ActorBound),
109
+ encodeStreamWireActorBoundPayload(actorSlot, actorId)
110
+ );
156
111
  }
157
112
 
158
113
  export function encodeActorUnboundFrame(actorSlot: number): Uint8Array {
159
- const payload = new Uint8Array(3);
160
- payload[0] = 1;
161
- payload[1] = actorSlot >>> 8;
162
- payload[2] = actorSlot & 0xff;
163
- return encodeStreamFrame(controlHeader('$zlink.actor.unbound'), payload);
114
+ return encodeStreamFrame(
115
+ controlHeader(ZlinkStreamControlPacket.ActorUnbound),
116
+ encodeStreamWireActorUnboundPayload(actorSlot)
117
+ );
164
118
  }
165
119
 
166
120
  export function encodeSessionClosingFrame(
167
121
  diagnostic = '',
168
122
  reason = ZLinkStreamCloseReasonCode.ServerDrain
169
123
  ): Uint8Array {
170
- const diagnosticBytes = utf8Encode(diagnostic);
171
- if (diagnosticBytes.length > 512) throw new Error('Session-closing diagnostic is too large.');
172
- const payload = new Uint8Array(4 + diagnosticBytes.length);
173
- payload[0] = 1;
174
- payload[1] = reason;
175
- payload[2] = diagnosticBytes.length >>> 8;
176
- payload[3] = diagnosticBytes.length & 0xff;
177
- payload.set(diagnosticBytes, 4);
178
124
  return encodeStreamFrame(
179
125
  {
180
126
  kind: ZLinkStreamMessageKind.Control,
181
127
  codec: ZLinkStreamCodec.Raw,
182
128
  flags: ZLinkStreamHeaderFlags.None,
183
- name: 'session-closing',
129
+ name: ZlinkStreamControlPacket.SessionClosing,
184
130
  metadata: new Map()
185
131
  },
186
- payload
132
+ encodeStreamWireSessionClosingPayload(reason, diagnostic)
187
133
  );
188
134
  }
189
135