@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
@@ -80,8 +80,8 @@ export interface ZLinkBackendMeshNode {
80
80
  readonly stableType: string;
81
81
  readonly descriptorVersion: string;
82
82
  }, parts: ZLinkBackendMessageLike | readonly ZLinkBackendMessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): MeshOperationId;
83
- sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): Promise<SubmitResult>;
84
- requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): MeshOperationId;
83
+ sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): Promise<SubmitResult>;
84
+ requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): MeshOperationId;
85
85
  registerUserSpotOperationHandler(handler: ServiceUserSpotOperationHandler): void;
86
86
  requestUserSpotCreate(targetNodeRid: string, request: Omit<ServiceUserSpotCreateRecord, 'kind' | 'correlation' | 'operation'>, timeoutMs: number): Promise<ServiceUserSpotOperationResult>;
87
87
  requestUserSpotClose(targetNodeRid: string, request: Omit<ServiceUserSpotCloseRecord, 'kind' | 'correlation' | 'operation'>, timeoutMs: number): Promise<ServiceUserSpotOperationResult>;
@@ -156,11 +156,12 @@ export interface ZLinkBackendMeshNode {
156
156
  readonly stableType: string;
157
157
  readonly objectGeneration: bigint;
158
158
  } | undefined;
159
+ registerInstanceIntent?(instanceType: string, route: import('../../foundation/service-stateful-wire-codec').ServiceInstanceRouteFence, expectedCurrentRoute?: import('../../foundation/service-stateful-wire-codec').ServiceInstanceRouteFence | null): void;
159
160
  waitForInstanceApplicationQuiescence?(spotId: string, signal?: AbortSignal): Promise<void>;
160
161
  restoreUserSpotAuthority?(spotId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint): ServiceSpot;
161
162
  restoreSpotAuthority?(spotId: string, objectKind: 'user_spot' | 'instance_spot', stableType: string, generation: bigint, authorityOwnerGeneration: bigint): ServiceSpot;
162
163
  createActor(actorId: string, parts?: MessageLike | readonly MessageLike[]): ZLinkBackendActorRef;
163
- restoreActorAuthority?(actorId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint, spotId: string, spotGeneration: bigint, membershipEpoch: bigint): ZLinkBackendActorRef;
164
+ restoreActorAuthority?(actorId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint, spotId: string | undefined, spotGeneration: bigint, membershipEpoch: bigint): ZLinkBackendActorRef;
164
165
  discardRelocatedActor?(actor: ZLinkBackendActorRef): void;
165
166
  restoreActorSessionBinding?(actor: ZLinkBackendActorRef, sessionNodeRid: unknown, sessionRid: unknown, bindingGeneration: bigint): void;
166
167
  actorLookup(actorId: string): {
@@ -210,7 +211,7 @@ export interface ZLinkBackendMeshNode {
210
211
  timeoutMs?: number;
211
212
  applicationMetadata?: Buffer;
212
213
  }): MeshOperationId;
213
- sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: MessageLike | readonly MessageLike[], flags?: number, actorFence?: ZLinkBackendActorSessionSendFence): Promise<SubmitResult>;
214
+ sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: MessageLike | readonly MessageLike[], flags?: number): Promise<SubmitResult>;
214
215
  closeActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, timeoutMs?: number): MeshOperationId;
215
216
  leaveActor(actor: ZLinkBackendActorRef, expectedMembershipEpoch: bigint, timeoutMs?: number): MeshOperationId;
216
217
  setReadyHandler(handler: (readyDomains: number) => number): void;
@@ -237,14 +238,8 @@ export interface ZLinkBackendActorRef {
237
238
  readonly actorId: string;
238
239
  readonly generation: bigint;
239
240
  }
240
- export interface ZLinkBackendActorSessionSendFence {
241
- readonly targetNodeGeneration: bigint;
242
- readonly authorityOwnerGeneration: bigint;
243
- readonly ownerLeaseGeneration: bigint;
244
- }
245
241
  export interface ZLinkBackendActorSessionNode {
246
- actorNodeGeneration?(actor: ZLinkBackendActorRef): bigint | undefined;
247
- sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: readonly Message[], flags: number, actorFence?: ZLinkBackendActorSessionSendFence): Promise<ZLinkSubmitResult>;
242
+ sendActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, parts: readonly Message[], flags: number): Promise<ZLinkSubmitResult>;
248
243
  closeActorBoundSession(actor: ZLinkBackendActorRef, expectedBindingGeneration: bigint, timeoutMs: number, signal?: AbortSignal): Promise<void>;
249
244
  }
250
245
  export interface ZLinkBackendActorRecvInfo {
@@ -254,24 +249,6 @@ export interface ZLinkBackendActorRecvInfo {
254
249
  readonly requestId: bigint;
255
250
  readonly flags: number;
256
251
  }
257
- export interface ZLinkBackendActorJoinInfo {
258
- readonly sourceActor: ZLinkBackendActorRef;
259
- readonly targetActor: ZLinkBackendActorRef;
260
- readonly sourceNodeRid: RoutingId;
261
- readonly sourceSpotId: RoutingId;
262
- readonly targetNodeRid: RoutingId;
263
- readonly targetSpotId: RoutingId;
264
- readonly joinEpoch: bigint;
265
- readonly flags: number;
266
- }
267
- export interface ZLinkBackendActorJoinRequest {
268
- readonly info: ZLinkBackendActorJoinInfo;
269
- readonly message: Message;
270
- }
271
- export interface ZLinkBackendActorJoinReplyOperation {
272
- message(message: Message): ZLinkBackendActorJoinReplyOperation;
273
- submit(): void;
274
- }
275
252
  export interface ZLinkBackendSpotDispatchInfo {
276
253
  readonly event: ZLinkBackendSpotDispatchEvent;
277
254
  readonly subjectKind?: number;
@@ -280,6 +257,7 @@ export interface ZLinkBackendSpotDispatchInfo {
280
257
  }
281
258
  export interface ZLinkBackendSocketMonitorEvent {
282
259
  readonly nativeEvent: MonitorEventType;
260
+ readonly readyEdge: boolean;
283
261
  readonly routingId?: unknown;
284
262
  readonly localAddr: string;
285
263
  readonly remoteAddr: string;
@@ -354,6 +332,7 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
354
332
  reply(routingId: RoutingId, replyToken: unknown, message: Message | readonly Message[]): void;
355
333
  }
356
334
  export interface ZLinkBackendPublisherSocket extends ZLinkBackendSocket {
335
+ sendTimeoutMs: number;
357
336
  sendHighWaterMark: number;
358
337
  noDrop: boolean;
359
338
  publish(topic: string, message: Message | readonly Message[]): void;
@@ -446,15 +425,12 @@ export interface ZLinkBackendSpot extends ZLinkBackendObject {
446
425
  recvActorLifecycle(flags: ZLinkBackendRecvFlags): unknown | null;
447
426
  drainReply(): number;
448
427
  drainChannelReply(subjectHandle: bigint): number;
449
- recvRoute(result: Received, flags: ZLinkBackendRecvFlags): boolean;
450
428
  setDispatchHandler(handler: (info: ZLinkBackendSpotDispatchInfo) => void): void;
451
429
  requestToChannel(channelName: string, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
452
430
  sendToChannel(channelName: string, payload: Message | readonly Message[]): Promise<void>;
453
431
  publish(topic: string, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
454
432
  sendToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[]): Promise<void>;
455
433
  requestToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
456
- recvActorJoin(flags: ZLinkBackendRecvFlags): ZLinkBackendActorJoinRequest | null;
457
- replyActorJoin(request: ZLinkBackendActorJoinRequest, joinResultCode: number): ZLinkBackendActorJoinReplyOperation;
458
434
  dispose(): Promise<void>;
459
435
  }
460
436
  export interface ZLinkChannelBackendAdapter {
@@ -486,7 +462,6 @@ export interface ZLinkMonitoringBackendAdapter {
486
462
  openSocketMonitor(socket: ZLinkBackendSocket): ZLinkBackendSocketMonitor;
487
463
  }
488
464
  export interface ZLinkBackendAdapterFactory {
489
- createReceived(): Received;
490
465
  createTopicMessage(): TopicMessage;
491
466
  createChannelAdapter(): ZLinkChannelBackendAdapter;
492
467
  createMeshAdapter(): ZLinkMeshBackendAdapter;
@@ -1,36 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.meshActorSessionNodeAdapter = meshActorSessionNodeAdapter;
4
- const runtime_values_1 = require("./runtime-values");
5
4
  const submission_result_1 = require("../messaging/submission-result");
6
5
  const mesh_completion_table_1 = require("./mesh-completion-table");
7
- const routing_id_1 = require("../routing-id");
8
6
  function meshActorSessionNodeAdapter(node, completions) {
9
7
  return {
10
- actorNodeGeneration(actor) {
11
- const status = node.status();
12
- return (0, routing_id_1.routingIdsEqual)(status.routingId, actor.nodeRid)
13
- ? status.lifecycleGeneration
14
- : undefined;
15
- },
16
- async sendActorBoundSession(actor, expectedBindingGeneration, parts, flags, actorFence) {
17
- const result = await node.sendActorBoundSession(actor, expectedBindingGeneration, parts, flags, actorFence);
18
- switch (result) {
19
- case runtime_values_1.SubmitResult.Ok:
20
- return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
21
- case runtime_values_1.SubmitResult.Backpressured:
22
- case runtime_values_1.SubmitResult.NotAdmitted:
23
- return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
24
- case runtime_values_1.SubmitResult.NotFound:
25
- case runtime_values_1.SubmitResult.InvalidState:
26
- return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
27
- case runtime_values_1.SubmitResult.NotConnected:
28
- return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
29
- case runtime_values_1.SubmitResult.Terminated:
30
- return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
31
- default:
32
- throw new Error(`Actor bound-session send failed with result '${result}'.`);
33
- }
8
+ async sendActorBoundSession(actor, expectedBindingGeneration, parts, flags) {
9
+ const result = await node.sendActorBoundSession(actor, expectedBindingGeneration, parts, flags);
10
+ return (0, submission_result_1.classifySubmitResult)(result, 'Actor bound-session send');
34
11
  },
35
12
  async closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs, signal) {
36
13
  if (completions === undefined) {
@@ -1,6 +1,6 @@
1
+ import type { ApplicationJobQueuePort } from '../application-jobs/contracts';
1
2
  import { type ReadyRecord, type ReceiveRecord } from '../foundation/service-runtime-contracts';
2
3
  import type { ZLinkBackendMeshNode } from './contracts';
3
- import type { ApplicationJobQueuePort } from '../application-jobs/contracts';
4
4
  export interface ZLinkMeshDispatchPumpOptions {
5
5
  readonly readyCapacity?: number;
6
6
  readonly messageCapacity?: number;
@@ -23,7 +23,6 @@ export declare class ZLinkMeshDispatchPump {
23
23
  private pendingDomains;
24
24
  private infrastructureScheduled;
25
25
  private disposed;
26
- private infrastructureDrainPromise?;
27
26
  private readonly activeDrains;
28
27
  private readonly idleApplicationWorkers;
29
28
  private applicationWorkerCount;
@@ -3,10 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkMeshDispatchPump = void 0;
4
4
  const node_async_hooks_1 = require("node:async_hooks");
5
5
  const node_os_1 = require("node:os");
6
- const runtime_values_1 = require("./runtime-values");
7
- const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
8
- const execution_1 = require("../execution");
9
6
  const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
7
+ const execution_1 = require("../execution");
8
+ const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
9
+ const service_wire_binary_primitives_1 = require("../foundation/service-wire-binary-primitives");
10
+ const service_wire_constants_generated_1 = require("../foundation/service-wire-constants.generated");
11
+ const runtime_values_1 = require("./runtime-values");
12
+ const DEFAULT_MESH_READY_CAPACITY = 32;
13
+ const DEFAULT_MESH_PART_CAPACITY = 256;
10
14
  const MESH_DISPATCH_YIELD_RECORDS = 16;
11
15
  const MESH_DISPATCH_YIELD_INTERVAL_MS = 2;
12
16
  const MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET = 4;
@@ -17,23 +21,12 @@ const MESH_DISPATCH_MAX_APPLICATION_WORKERS = Math.max(2, (0, node_os_1.availabl
17
21
  // must enter like an independent receive-loop task, without inheriting that
18
22
  // owner's AsyncLocalStorage identity.
19
23
  const detachedMeshDispatchScope = node_async_hooks_1.AsyncLocalStorage.snapshot();
20
- class ZLinkMeshDispatchFailure extends Error {
21
- context;
22
- dispatchCause;
23
- constructor(context, dispatchCause) {
24
- super('Mesh record dispatch failed.', { cause: dispatchCause });
25
- this.context = context;
26
- this.dispatchCause = dispatchCause;
27
- this.name = 'ZLinkMeshDispatchFailure';
28
- }
29
- }
30
24
  class ZLinkMeshDispatchPump {
31
25
  node;
32
26
  options;
33
27
  pendingDomains = service_runtime_contracts_1.ReadyDomain.None;
34
28
  infrastructureScheduled = false;
35
29
  disposed = false;
36
- infrastructureDrainPromise;
37
30
  activeDrains = new Set();
38
31
  idleApplicationWorkers = new Set();
39
32
  applicationWorkerCount = 0;
@@ -119,7 +112,7 @@ class ZLinkMeshDispatchPump {
119
112
  // A worker claims one owner at a time so a suspended handler cannot hold
120
113
  // unrelated owners. Each owner may supply up to 64 pre-admitted records.
121
114
  const readyBatch = this.node.createReadyBatch(1);
122
- const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? 256);
115
+ const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? DEFAULT_MESH_PART_CAPACITY);
123
116
  try {
124
117
  for (;;) {
125
118
  await this.waitForApplicationReady();
@@ -147,12 +140,8 @@ class ZLinkMeshDispatchPump {
147
140
  }
148
141
  return new Promise((resolve) => this.idleApplicationWorkers.add(resolve));
149
142
  }
150
- reportDispatchError(error) {
151
- if (error instanceof ZLinkMeshDispatchFailure) {
152
- this.options.reportError?.(error.dispatchCause, error.context);
153
- return;
154
- }
155
- this.options.reportError?.(error);
143
+ reportDispatchError(error, context) {
144
+ this.options.reportError?.(error, context);
156
145
  }
157
146
  /**
158
147
  * Infrastructure controls must not wait for an application permit. During
@@ -168,29 +157,18 @@ class ZLinkMeshDispatchPump {
168
157
  this.infrastructureScheduled = true;
169
158
  const drain = (startTurn ?? this.yieldIfNeeded() ?? Promise.resolve())
170
159
  .then(() => detachedMeshDispatchScope(() => (0, execution_1.runZLinkExecutionArea)('infrastructure', () => this.drainInfrastructure())))
171
- .catch((error) => {
172
- if (error instanceof ZLinkMeshDispatchFailure) {
173
- this.options.reportError?.(error.dispatchCause, error.context);
174
- return;
175
- }
176
- this.options.reportError?.(error);
177
- });
160
+ .catch((error) => this.reportDispatchError(error));
178
161
  this.activeDrains.add(drain);
179
- this.infrastructureDrainPromise = drain;
180
162
  void drain.finally(() => {
181
163
  this.activeDrains.delete(drain);
182
- if (this.infrastructureDrainPromise === drain) {
183
- this.infrastructureDrainPromise = undefined;
184
- this.infrastructureScheduled = false;
185
- if (!this.disposed && (this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
186
- this.scheduleInfrastructure();
187
- }
164
+ this.infrastructureScheduled = false;
165
+ if (!this.disposed && (this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
166
+ this.scheduleInfrastructure();
188
167
  }
189
168
  });
190
169
  }
191
170
  async drainInfrastructure() {
192
- const readyBatch = this.node.createReadyBatch(Math.min(this.options.readyCapacity ?? 32, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET));
193
- const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? 256);
171
+ const readyBatch = this.node.createReadyBatch(Math.min(this.options.readyCapacity ?? DEFAULT_MESH_READY_CAPACITY, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET));
194
172
  try {
195
173
  while (!this.disposed) {
196
174
  if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) === 0) {
@@ -200,7 +178,7 @@ class ZLinkMeshDispatchPump {
200
178
  if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Application) !== 0) {
201
179
  setImmediate(() => this.wakeApplicationWorker());
202
180
  }
203
- const lifecycleBudgetExhausted = await this.drainDomain(service_runtime_contracts_1.ReadyDomain.Infrastructure, readyBatch, receiveBatch, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET);
181
+ const lifecycleBudgetExhausted = await this.drainDomain(service_runtime_contracts_1.ReadyDomain.Infrastructure, readyBatch, undefined, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET);
204
182
  if (lifecycleBudgetExhausted) {
205
183
  this.pendingDomains |= service_runtime_contracts_1.ReadyDomain.Infrastructure;
206
184
  await yieldToEventLoop();
@@ -208,7 +186,6 @@ class ZLinkMeshDispatchPump {
208
186
  }
209
187
  }
210
188
  finally {
211
- receiveBatch.close();
212
189
  readyBatch.close();
213
190
  }
214
191
  }
@@ -235,84 +212,92 @@ class ZLinkMeshDispatchPump {
235
212
  const owner = drained.records[index];
236
213
  // Raw ingress already attached one host permit to each record.
237
214
  // A claim that reserves admission here may receive only that permit's record.
238
- try {
239
- const capacity = owner.ordinaryIngressPreAdmitted === true ? MESH_DISPATCH_RECEIVE_CAPACITY : 1;
240
- for (;;) {
241
- let claimPermit = owner.terminalCompletion === true ||
242
- owner.ordinaryIngressPreAdmitted === true ||
243
- domain === service_runtime_contracts_1.ReadyDomain.Infrastructure
244
- ? undefined
245
- : await this.acquirePermit();
246
- try {
247
- if (this.capacityStop.signal.aborted)
248
- return false;
249
- receiveBatch.reset(capacity);
250
- const received = claim.recvBatch(receiveBatch, runtime_values_1.ZLINK_BACKEND_RECV_DONT_WAIT);
251
- if (!received.ok)
252
- break;
253
- // This owner keeps its claim while it drains. Other owners and
254
- // infrastructure may progress if one of its handlers suspends.
255
- if (domain === service_runtime_contracts_1.ReadyDomain.Infrastructure) {
256
- this.infrastructureScheduled = false;
257
- this.infrastructureDrainPromise = undefined;
258
- if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
259
- this.scheduleInfrastructure();
260
- }
261
- }
215
+ const drainClaim = async () => {
216
+ let ownerReceiveBatch = receiveBatch;
217
+ try {
218
+ ownerReceiveBatch ??= this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? DEFAULT_MESH_PART_CAPACITY);
219
+ const capacity = owner.ordinaryIngressPreAdmitted === true ? MESH_DISPATCH_RECEIVE_CAPACITY : 1;
220
+ for (;;) {
221
+ let claimPermit = owner.terminalCompletion === true ||
222
+ owner.ordinaryIngressPreAdmitted === true ||
223
+ domain === service_runtime_contracts_1.ReadyDomain.Infrastructure
224
+ ? undefined
225
+ : await this.acquirePermit();
262
226
  try {
263
- for (const record of received.records) {
264
- if (this.disposed)
265
- break;
266
- const permit = record.applicationJobPermit ?? claimPermit;
267
- if (owner.ordinaryIngressPreAdmitted === true && permit === undefined) {
268
- throw new Error('Pre-admitted raw ingress record lost its Application Job Queue permit.');
269
- }
270
- this.recordsSinceYield += 1;
271
- const dispatch = async () => {
272
- try {
273
- await this.options.dispatch(drained.records[index], record);
227
+ if (this.capacityStop.signal.aborted)
228
+ return;
229
+ ownerReceiveBatch.reset(capacity);
230
+ const received = claim.recvBatch(ownerReceiveBatch, runtime_values_1.ZLINK_BACKEND_RECV_DONT_WAIT);
231
+ if (!received.ok)
232
+ break;
233
+ // This owner keeps its claim while it drains, so its records stay in FIFO order.
234
+ try {
235
+ for (const record of received.records) {
236
+ if (this.disposed)
237
+ break;
238
+ const permit = record.applicationJobPermit ?? claimPermit;
239
+ if (owner.ordinaryIngressPreAdmitted === true && permit === undefined) {
240
+ throw new Error('Pre-admitted raw ingress record lost its Application Job Queue permit.');
274
241
  }
275
- catch (error) {
276
- throw new ZLinkMeshDispatchFailure(meshDispatchFailureContext(record), error);
242
+ this.recordsSinceYield += 1;
243
+ const dispatch = async () => {
244
+ try {
245
+ await this.options.dispatch(owner, record);
246
+ await record.onTerminalCompletion?.();
247
+ }
248
+ catch (error) {
249
+ this.reportDispatchError(error, meshDispatchFailureContext(record));
250
+ }
251
+ };
252
+ if (permit === undefined) {
253
+ await dispatch();
277
254
  }
278
- await record.onTerminalCompletion?.();
279
- };
280
- if (permit === undefined) {
281
- await dispatch();
255
+ else {
256
+ if (domain === service_runtime_contracts_1.ReadyDomain.Application &&
257
+ record.applicationJobPermit === undefined)
258
+ permit.markApplicationQueued();
259
+ // The scope now owns this reservation, including failure
260
+ // and detached handler handoff. Only unused permits remain
261
+ // owned by the receive attempt's finally block.
262
+ if (permit === claimPermit)
263
+ claimPermit = undefined;
264
+ await (0, application_job_queue_scope_1.runWithApplicationJobPermit)(permit, dispatch);
265
+ }
266
+ const yieldTurn = this.yieldIfNeeded();
267
+ if (yieldTurn !== undefined)
268
+ await yieldTurn;
282
269
  }
283
- else {
284
- if (domain === service_runtime_contracts_1.ReadyDomain.Application &&
285
- record.applicationJobPermit === undefined)
286
- permit.markApplicationQueued();
287
- // The scope now owns this reservation, including failure
288
- // and detached handler handoff. Only unused permits remain
289
- // owned by the receive attempt's finally block.
290
- if (permit === claimPermit)
291
- claimPermit = undefined;
292
- await (0, application_job_queue_scope_1.runWithApplicationJobPermit)(permit, dispatch);
270
+ }
271
+ finally {
272
+ // Batch ownership includes records whose dispatch never began,
273
+ // including on failure or shutdown in the middle of the batch.
274
+ for (const record of received.records) {
275
+ for (const part of record.parts)
276
+ part.close();
277
+ record.releaseRetainedIngress?.();
293
278
  }
294
- const yieldTurn = this.yieldIfNeeded();
295
- if (yieldTurn !== undefined)
296
- await yieldTurn;
297
279
  }
298
280
  }
299
281
  finally {
300
- // Batch ownership includes records whose dispatch never began,
301
- // including on failure or shutdown in the middle of the batch.
302
- for (const record of received.records) {
303
- for (const part of record.parts)
304
- part.close();
305
- record.releaseRetainedIngress?.();
306
- }
282
+ claimPermit?.releaseAfterInternalProcessing();
307
283
  }
308
284
  }
309
- finally {
310
- claimPermit?.releaseAfterInternalProcessing();
311
- }
312
285
  }
286
+ finally {
287
+ claim.release();
288
+ if (receiveBatch === undefined)
289
+ ownerReceiveBatch?.close();
290
+ }
291
+ };
292
+ // An application worker drains the one owner it claimed. Infrastructure owners
293
+ // drain independently, so a suspended owner does not hold the other claims.
294
+ if (receiveBatch !== undefined) {
295
+ await drainClaim();
313
296
  }
314
- finally {
315
- claim.release();
297
+ else {
298
+ const drain = drainClaim().catch((error) => this.reportDispatchError(error));
299
+ this.activeDrains.add(drain);
300
+ void drain.finally(() => this.activeDrains.delete(drain));
316
301
  }
317
302
  }
318
303
  if (claimBudget !== undefined && claimsDrained >= claimBudget) {
@@ -373,8 +358,11 @@ function serviceWireCommand(record) {
373
358
  if (record.parts.length !== 1)
374
359
  return undefined;
375
360
  const bytes = record.parts[0].data();
376
- return bytes.byteLength >= 5 && bytes[0] === 0x5a && bytes[1] === 0x4d && bytes[2] === 1
377
- ? bytes[3]
361
+ return bytes.byteLength >= service_wire_binary_primitives_1.SERVICE_WIRE_PREFIX_SIZE &&
362
+ bytes[0] === service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[0] &&
363
+ bytes[1] === service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[1] &&
364
+ bytes[service_wire_binary_primitives_1.SERVICE_WIRE_MAJOR_OFFSET] === service_wire_constants_generated_1.SERVICE_WIRE_MAJOR
365
+ ? bytes[service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET]
378
366
  : undefined;
379
367
  }
380
368
  function yieldToEventLoop() {
@@ -1,8 +1,7 @@
1
1
  import type { TopicMessage } from '@zlink-systems/zlink';
2
- import type { ZLinkBackendAdapterFactory, ZLinkBackendReceived, ZLinkChannelBackendAdapter, ZLinkMonitoringBackendAdapter, ZLinkStreamBackendAdapter } from '../contracts';
2
+ import type { ZLinkBackendAdapterFactory, ZLinkChannelBackendAdapter, ZLinkMonitoringBackendAdapter, ZLinkStreamBackendAdapter } from '../contracts';
3
3
  import { ZLinkNodeMeshBackendAdapter } from './node-mesh-backend-adapter';
4
4
  export declare class ZLinkNodeBackendAdapterFactory implements ZLinkBackendAdapterFactory {
5
- createReceived(): ZLinkBackendReceived;
6
5
  createTopicMessage(): TopicMessage;
7
6
  createChannelAdapter(): ZLinkChannelBackendAdapter;
8
7
  createMeshAdapter(): ZLinkNodeMeshBackendAdapter;
@@ -6,9 +6,6 @@ const node_monitor_backend_adapter_1 = require("./node-monitor-backend-adapter")
6
6
  const node_socket_backend_adapter_1 = require("./node-socket-backend-adapter");
7
7
  const node_mesh_backend_adapter_1 = require("./node-mesh-backend-adapter");
8
8
  class ZLinkNodeBackendAdapterFactory {
9
- createReceived() {
10
- return new node_backend_adapter_support_1.zlink.Received();
11
- }
12
9
  createTopicMessage() {
13
10
  return new node_backend_adapter_support_1.zlink.TopicMessage();
14
11
  }
@@ -51,7 +48,8 @@ class ZLinkNodeChannelBackendAdapter {
51
48
  }
52
49
  class ZLinkNodeStreamBackendAdapter {
53
50
  createStreamSocket(context) {
54
- const socket = node_backend_adapter_support_1.zlink.createStreamSocket(asNodeContext(context));
51
+ const nodeContext = asNodeContext(context);
52
+ const socket = node_backend_adapter_support_1.zlink.createStreamSocket(nodeContext);
55
53
  socket.options.recvMode = node_backend_adapter_support_1.zlink.StreamRecvMode.Packet;
56
54
  return (0, node_socket_backend_adapter_1.wrapSocket)(socket, true);
57
55
  }
@@ -93,20 +91,8 @@ class ZLinkNodeBackendContext {
93
91
  this.nativeInstance.resetCoreHwmBudgetMetrics();
94
92
  }
95
93
  async dispose() {
96
- // Terminal cleanup shuts the context down before terminating it, the same
97
- // sequence the .NET reference binding runs inside `Context.Dispose()`
98
- // (`zlink_ctx_shutdown` then `zlink_ctx_term`). Without the shutdown signal
99
- // termination can block forever waiting on the reaper even after every
100
- // socket this runtime owns has been closed.
101
- try {
102
- this.nativeInstance.shutdown();
103
- }
104
- catch (error) {
105
- if (!(0, node_backend_adapter_support_1.isContextTerminatedError)(error)) {
106
- throw error;
107
- }
108
- }
109
- await (0, node_backend_adapter_support_1.closeWithBusyRetry)(this.nativeInstance);
94
+ // Binding Context.close() shuts down and then terminates the native context.
95
+ (0, node_backend_adapter_support_1.closeBindingHandle)(this.nativeInstance);
110
96
  }
111
97
  close() {
112
98
  this.nativeInstance.close();
@@ -35,18 +35,21 @@ interface ZLinkBindingRequestSubmitOperation {
35
35
  }
36
36
  export declare function isBindingNotFound(error: unknown): boolean;
37
37
  export declare function isRouteRecvRetryable(error: unknown): boolean;
38
- export declare function isPollerInterruptedError(error: unknown): boolean;
39
38
  export declare function submitBindingPublish(operation: ZLinkBindingPublishOperation, payload: unknown): void;
40
39
  export declare function submitBindingReply(operation: ZLinkBindingReplyOperation, payload: unknown): void;
41
40
  export declare function submitBindingAsyncSend(operation: ZLinkBindingAsyncSendOperation, payload: unknown): Promise<void>;
42
41
  export declare function submitBindingSyncSend(operation: ZLinkBindingAsyncSendOperation, payload: unknown): void;
43
42
  export declare function submitBindingRequest(operation: ZLinkBindingRequestOperation, payload: unknown, timeoutMs: number | undefined): Promise<readonly unknown[]>;
44
- export declare function closeWithBusyRetry(target: {
43
+ /**
44
+ * Closes a binding handle once. An already closed or terminated handle counts as
45
+ * closed. A busy close propagates to the caller.
46
+ */
47
+ export declare function closeBindingHandle(target: {
45
48
  close(): void;
46
- }): Promise<void>;
49
+ }): void;
47
50
  export declare function isContextTerminatedError(error: unknown): boolean;
48
51
  export declare function disableSocketLinger(target: unknown): void;
49
52
  export declare function toNativeRoutingId(routingId: unknown): unknown;
50
- export declare function translateBindingResultError(error: unknown): unknown;
53
+ export declare function translateBindingResultError(error: unknown, phase?: 'submit' | 'completion'): unknown;
51
54
  export declare function toNativeActorRef(actor: unknown): unknown;
52
55
  export {};