@zlink-systems/framework 0.26.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 (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. 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): {
@@ -248,24 +249,6 @@ export interface ZLinkBackendActorRecvInfo {
248
249
  readonly requestId: bigint;
249
250
  readonly flags: number;
250
251
  }
251
- export interface ZLinkBackendActorJoinInfo {
252
- readonly sourceActor: ZLinkBackendActorRef;
253
- readonly targetActor: ZLinkBackendActorRef;
254
- readonly sourceNodeRid: RoutingId;
255
- readonly sourceSpotId: RoutingId;
256
- readonly targetNodeRid: RoutingId;
257
- readonly targetSpotId: RoutingId;
258
- readonly joinEpoch: bigint;
259
- readonly flags: number;
260
- }
261
- export interface ZLinkBackendActorJoinRequest {
262
- readonly info: ZLinkBackendActorJoinInfo;
263
- readonly message: Message;
264
- }
265
- export interface ZLinkBackendActorJoinReplyOperation {
266
- message(message: Message): ZLinkBackendActorJoinReplyOperation;
267
- submit(): void;
268
- }
269
252
  export interface ZLinkBackendSpotDispatchInfo {
270
253
  readonly event: ZLinkBackendSpotDispatchEvent;
271
254
  readonly subjectKind?: number;
@@ -274,6 +257,7 @@ export interface ZLinkBackendSpotDispatchInfo {
274
257
  }
275
258
  export interface ZLinkBackendSocketMonitorEvent {
276
259
  readonly nativeEvent: MonitorEventType;
260
+ readonly readyEdge: boolean;
277
261
  readonly routingId?: unknown;
278
262
  readonly localAddr: string;
279
263
  readonly remoteAddr: string;
@@ -348,6 +332,7 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
348
332
  reply(routingId: RoutingId, replyToken: unknown, message: Message | readonly Message[]): void;
349
333
  }
350
334
  export interface ZLinkBackendPublisherSocket extends ZLinkBackendSocket {
335
+ sendTimeoutMs: number;
351
336
  sendHighWaterMark: number;
352
337
  noDrop: boolean;
353
338
  publish(topic: string, message: Message | readonly Message[]): void;
@@ -446,8 +431,6 @@ export interface ZLinkBackendSpot extends ZLinkBackendObject {
446
431
  publish(topic: string, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
447
432
  sendToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[]): Promise<void>;
448
433
  requestToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
449
- recvActorJoin(flags: ZLinkBackendRecvFlags): ZLinkBackendActorJoinRequest | null;
450
- replyActorJoin(request: ZLinkBackendActorJoinRequest, joinResultCode: number): ZLinkBackendActorJoinReplyOperation;
451
434
  dispose(): Promise<void>;
452
435
  }
453
436
  export interface ZLinkChannelBackendAdapter {
@@ -1,29 +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
6
  function meshActorSessionNodeAdapter(node, completions) {
8
7
  return {
9
8
  async sendActorBoundSession(actor, expectedBindingGeneration, parts, flags) {
10
9
  const result = await node.sendActorBoundSession(actor, expectedBindingGeneration, parts, flags);
11
- switch (result) {
12
- case runtime_values_1.SubmitResult.Ok:
13
- return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
14
- case runtime_values_1.SubmitResult.Backpressured:
15
- case runtime_values_1.SubmitResult.NotAdmitted:
16
- return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
17
- case runtime_values_1.SubmitResult.NotFound:
18
- case runtime_values_1.SubmitResult.InvalidState:
19
- return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
20
- case runtime_values_1.SubmitResult.NotConnected:
21
- return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
22
- case runtime_values_1.SubmitResult.Terminated:
23
- return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
24
- default:
25
- throw new Error(`Actor bound-session send failed with result '${result}'.`);
26
- }
10
+ return (0, submission_result_1.classifySubmitResult)(result, 'Actor bound-session send');
27
11
  },
28
12
  async closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs, signal) {
29
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() {
@@ -50,6 +50,6 @@ export declare function closeBindingHandle(target: {
50
50
  export declare function isContextTerminatedError(error: unknown): boolean;
51
51
  export declare function disableSocketLinger(target: unknown): void;
52
52
  export declare function toNativeRoutingId(routingId: unknown): unknown;
53
- export declare function translateBindingResultError(error: unknown): unknown;
53
+ export declare function translateBindingResultError(error: unknown, phase?: 'submit' | 'completion'): unknown;
54
54
  export declare function toNativeActorRef(actor: unknown): unknown;
55
55
  export {};
@@ -14,12 +14,14 @@ exports.disableSocketLinger = disableSocketLinger;
14
14
  exports.toNativeRoutingId = toNativeRoutingId;
15
15
  exports.translateBindingResultError = translateBindingResultError;
16
16
  exports.toNativeActorRef = toNativeActorRef;
17
+ const node_os_1 = require("node:os");
18
+ const submission_result_1 = require("../../messaging/submission-result");
17
19
  const node_backend_adapter_1 = require("../node-backend-adapter");
18
20
  const runtime_values_1 = require("../runtime-values");
19
- const submission_result_1 = require("../../messaging/submission-result");
21
+ const nativeErrnoValues = node_os_1.constants.errno;
20
22
  exports.zlink = (0, node_backend_adapter_1.loadBinding)();
21
23
  function isBindingNotFound(error) {
22
- return error instanceof exports.zlink.ConfigError && error.result === exports.zlink.ConfigResult.NotFound;
24
+ return error instanceof exports.zlink.ConnectError && error.result === exports.zlink.ConnectResult.NotFound;
23
25
  }
24
26
  function isNonBlockingRecvEmpty(error) {
25
27
  return error instanceof exports.zlink.RecvError && error.result === exports.zlink.RecvResult.NoData;
@@ -32,7 +34,8 @@ function isRouteRecvRetryable(error) {
32
34
  isNativeBadAddress(error)));
33
35
  }
34
36
  function isNativeBadAddress(error) {
35
- return error.nativeErrno === 14 || /Bad address/i.test(String(error.message ?? ''));
37
+ return (error.nativeErrno === nativeErrnoValues.EFAULT ||
38
+ /Bad address/i.test(String(error.message ?? '')));
36
39
  }
37
40
  function submitBindingPublish(operation, payload) {
38
41
  try {
@@ -139,7 +142,11 @@ function isSuccessfulOrAlreadyShutdownCloseError(error) {
139
142
  return (isContextTerminatedError(error) ||
140
143
  (error instanceof Error &&
141
144
  'code' in error &&
142
- [0, 402, 403].includes(error.code)));
145
+ [
146
+ exports.zlink.CloseResult.Ok,
147
+ exports.zlink.CloseResult.Shutdown,
148
+ exports.zlink.CloseResult.InvalidHandle
149
+ ].includes(error.code)));
143
150
  }
144
151
  function isContextTerminatedError(error) {
145
152
  return error instanceof Error && /context was terminated/i.test(error.message);
@@ -182,9 +189,12 @@ function toNativeMessageLike(message) {
182
189
  }
183
190
  return message;
184
191
  }
185
- function translateBindingResultError(error) {
192
+ function translateBindingResultError(error, phase = 'completion') {
186
193
  if (error instanceof exports.zlink.SubmitError) {
187
- return new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, { cause: error });
194
+ return new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
195
+ cause: error,
196
+ phase
197
+ });
188
198
  }
189
199
  if (error instanceof exports.zlink.RequestError) {
190
200
  return new runtime_values_1.ZLinkBackendResultError('request', error.result, error.nativeErrno, {
@@ -9,8 +9,8 @@ export declare class ZLinkNodeEventLoopPoller {
9
9
  private readonly events;
10
10
  private readableHandler;
11
11
  private disposed;
12
- constructor(socket: Socket, pollCompletion: boolean, readableHandler: () => void, pollRoute?: boolean);
13
- setReadableHandler(handler: () => void): void;
12
+ constructor(socket: Socket, pollCompletion: boolean, readableHandler: (receiveReady: boolean, routeReady: boolean) => void, pollRoute?: boolean);
13
+ setReadableHandler(handler: (receiveReady: boolean, routeReady: boolean) => void): void;
14
14
  dispose(): void;
15
15
  private readonly onReady;
16
16
  }
@@ -37,19 +37,18 @@ class ZLinkNodeEventLoopPoller {
37
37
  dispose() {
38
38
  if (this.disposed)
39
39
  return;
40
- this.disposed = true;
41
- this.events.close();
42
40
  this.poller.close();
41
+ this.events.close();
42
+ this.disposed = true;
43
43
  }
44
44
  onReady = () => {
45
45
  if (this.disposed)
46
46
  return;
47
47
  const ready = this.poller.wait(this.events, 0);
48
- if (ready === 0 ||
49
- this.events.hasEvent(0, node_backend_adapter_support_1.zlink.PollEventFlag.PollIn) ||
50
- this.events.hasEvent(0, node_backend_adapter_support_1.zlink.PollEventFlag.PollRoute)) {
51
- this.readableHandler();
52
- }
48
+ const receiveReady = ready === 0 || this.events.hasEvent(0, node_backend_adapter_support_1.zlink.PollEventFlag.PollIn);
49
+ const routeReady = ready > 0 && this.events.hasEvent(0, node_backend_adapter_support_1.zlink.PollEventFlag.PollRoute);
50
+ if (receiveReady || routeReady)
51
+ this.readableHandler(receiveReady, routeReady);
53
52
  };
54
53
  }
55
54
  exports.ZLinkNodeEventLoopPoller = ZLinkNodeEventLoopPoller;
@@ -30,6 +30,7 @@ function wrapMonitorSocket(nativeInstance) {
30
30
  function toBackendMonitorEvent(event) {
31
31
  return {
32
32
  nativeEvent: event.event,
33
+ readyEdge: (event.flags & node_backend_adapter_support_1.zlink.MonitorEventFlag.ConnectionReadyEdge) !== 0,
33
34
  routingId: event.routingId ?? undefined,
34
35
  localAddr: event.localAddr,
35
36
  remoteAddr: event.remoteAddr,