@zlink-systems/framework 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,17 +1,14 @@
1
- import { randomBytes } from 'node:crypto';
2
- import { setImmediate as yieldToIO } from 'node:timers/promises';
3
1
  import {
4
2
  decodeStreamWireFrame,
5
3
  decodeStreamWireHeader,
6
4
  encodeStreamWireFrame,
7
5
  encodeStreamWireHeader
8
6
  } from '@zlink-systems/stream-wire';
9
- import { disconnectStreamPeer } from './node-socket-backend-adapter';
10
- import { ZLinkFrameworkException } from '../../../contracts';
11
- import { internalFrameworkWireReply } from '../../framework-errors-internal';
12
7
  import {
13
- Message,
14
8
  RoutingId as BindingRoutingId,
9
+ ConfigError,
10
+ ConfigResult,
11
+ Message,
15
12
  RequestResult,
16
13
  SubmitError,
17
14
  SubmitResult,
@@ -19,51 +16,64 @@ import {
19
16
  type StreamSocket,
20
17
  type SubmitResult as SubmitResultValue
21
18
  } from '@zlink-systems/zlink';
22
- import {
23
- isZLinkBackendResultError,
24
- ZLinkBackendResultError,
25
- type ZLinkBackendMessageLike as MessageLike
26
- } from '../runtime-values';
27
- import { ZLinkBufferMessage } from '../runtime-message';
19
+ import { randomBytes } from 'node:crypto';
20
+ import { setImmediate as yieldToIO } from 'node:timers/promises';
21
+ import { type RoutingId, ZLinkFrameworkException } from '../../../contracts';
22
+
28
23
  import type { Message as FrameworkMessage } from '../../../contracts/Common/Message';
29
- import type { ZLinkDispatchErrorReporter } from '../../channels/dispatch-error-reporter';
30
- import type {
31
- MeshOperationId,
32
- MeshPeerEntry,
33
- MeshPublisher,
34
- ReadyBatch,
35
- ReadyRecord,
36
- ReceiveBatch,
37
- ReceiveRecord,
38
- ServiceSpot,
39
- StreamSessionActorAuthorityFence,
40
- StreamSessionService
41
- } from '../../foundation/service-runtime-contracts';
24
+ import { ZLinkConfigurationException } from '../../../contracts/Configuration/ConfigurationException';
25
+ import { buildAdvertisedEndpoint } from '../../../contracts/Configuration/EndpointNotation';
26
+ import { DEFAULT_ACTIVATION_CONCURRENCY_LIMIT } from '../../../contracts/Configuration/InternalDefaults';
27
+ import { DEFAULT_REQUEST_TIMEOUT_MS } from '../../../contracts/Configuration/Registration';
42
28
  import {
43
- OperationKind,
44
- ReadyDomain,
45
- ReadyOwnerKind,
46
- ReceiveKind
47
- } from '../../foundation/service-runtime-contracts';
29
+ isValidPositiveCapacity,
30
+ isValidPublicWeight,
31
+ ZLINK_DEFAULT_PUBLIC_WEIGHT,
32
+ ZLINK_MAX_CAPACITY,
33
+ ZLINK_MAX_PUBLIC_WEIGHT
34
+ } from '../../../contracts/Configuration/RegistrationBuilderPolicy';
35
+ import { shouldCompactBackingArray } from '../../admission';
36
+ import type { ApplicationJobQueuePort } from '../../application-jobs/contracts';
37
+ import type { ZLinkDispatchErrorReporter } from '../../channels/dispatch-error-reporter';
38
+ import { ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE } from '../../foundation/operation-identity';
48
39
  import {
49
40
  OperationCancelledError,
50
41
  OperationTimeoutError
51
42
  } from '../../foundation/operation-registry';
52
43
  import {
53
44
  RawServiceMeshRuntime,
45
+ RAW_MESH_RECEIVE_TIME_BUDGET_MS,
54
46
  type RawServiceRequestResult
55
47
  } from '../../foundation/raw-service-mesh-runtime';
48
+ import type { ServiceInstanceActivationRecoveryEnvelope } from '../../foundation/service-instance-activation-recovery-codec';
49
+ import type {
50
+ ServiceMailboxClaim,
51
+ ServiceMailboxDomain,
52
+ ServiceMailboxRecord
53
+ } from '../../foundation/service-mailbox';
54
+ import { encodeServiceMetadataFrame } from '../../foundation/service-metadata-codec';
56
55
  import {
57
- decodeApplicationPayloadView,
58
- encodeMultipartApplicationPayload,
59
- type ServiceApplicationPayload,
60
- ServiceWireProtocolError
61
- } from '../../foundation/service-wire-m6a-codec';
62
- import {
63
- SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE,
64
- SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME,
65
- SERVICE_WIRE_REQUIRED_CAPABILITY
66
- } from '../../foundation/service-wire-constants.generated';
56
+ type MeshOperationId,
57
+ type MeshPeerEntry,
58
+ type MeshPublisher,
59
+ type ReadyBatch,
60
+ type ReadyRecord,
61
+ type ReceiveBatch,
62
+ type ReceiveRecord,
63
+ type ServiceSpot,
64
+ type StreamSessionActorAuthorityFence,
65
+ type StreamSessionService,
66
+ MeshNodeRuntimeState,
67
+ MeshPeerRuntimeState,
68
+ OperationKind,
69
+ ReadyDomain,
70
+ ReadyOwnerKind,
71
+ ReceiveKind,
72
+ StreamSessionRuntimeState
73
+ } from '../../foundation/service-runtime-contracts';
74
+
75
+ import { serviceSessionBindingIngressPortIfRegistered } from '../../foundation/service-session-binding-ingress-port';
76
+ import type { ServiceActorRef, ServiceSpotState } from '../../foundation/service-stateful-registry';
67
77
  import {
68
78
  ServiceStatefulRuntime,
69
79
  statefulMailboxData,
@@ -71,14 +81,12 @@ import {
71
81
  type ServiceInstanceApplicationLifecycle,
72
82
  type ServicePendingInstanceActivation,
73
83
  type ServiceSpotMessageFollowSeal,
74
- type ServiceUserSpotOperationHandler,
75
- type ServiceUserSpotOperationResult,
76
84
  type ServiceStatefulMailboxData,
77
85
  type ServiceStatefulPendingOperation,
78
- type ServiceStatefulResult
86
+ type ServiceStatefulResult,
87
+ type ServiceUserSpotOperationHandler,
88
+ type ServiceUserSpotOperationResult
79
89
  } from '../../foundation/service-stateful-runtime';
80
- import type { ServiceActorRef, ServiceSpotState } from '../../foundation/service-stateful-registry';
81
- import { serviceSessionBindingIngressPortIfRegistered } from '../../foundation/service-session-binding-ingress-port';
82
90
  import type {
83
91
  ServiceActorCreateRecord,
84
92
  ServiceDirectSpotRouteFence,
@@ -89,36 +97,55 @@ import type {
89
97
  ServiceUserSpotCloseRecord,
90
98
  ServiceUserSpotCreateRecord
91
99
  } from '../../foundation/service-stateful-wire-codec';
92
- import { encodeServiceMetadataFrame } from '../../foundation/service-metadata-codec';
93
- import type { ServiceInstanceActivationRecoveryEnvelope } from '../../foundation/service-instance-activation-recovery-codec';
94
- import type {
95
- ServiceMailboxClaim,
96
- ServiceMailboxDomain,
97
- ServiceMailboxRecord
98
- } from '../../foundation/service-mailbox';
99
100
  import type {
100
101
  ServiceChannelDescriptor,
101
102
  ServiceNodeDescriptor
102
103
  } from '../../foundation/service-topology-registry';
103
- import type { RoutingId } from '../../../contracts';
104
- import { buildAdvertisedEndpoint } from '../../../contracts/Configuration/EndpointNotation';
105
- import { ZLinkConfigurationException } from '../../../contracts/Configuration/ConfigurationException';
104
+ import { SERVICE_WIRE_COMMAND_OFFSET } from '../../foundation/service-wire-binary-primitives';
105
+ import {
106
+ SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE,
107
+ SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME,
108
+ SERVICE_WIRE_REQUIRED_CAPABILITY,
109
+ ServiceWireCommand,
110
+ ServiceWireFrameworkErrorCode
111
+ } from '../../foundation/service-wire-constants.generated';
112
+ import {
113
+ APPLICATION_PAYLOAD_MINIMUM_FIELD_BYTES,
114
+ APPLICATION_PAYLOAD_VERSION,
115
+ decodeApplicationPayloadView,
116
+ encodeMultipartApplicationPayload,
117
+ ServiceWireProtocolError,
118
+ type ServiceApplicationPayload
119
+ } from '../../foundation/service-wire-m6a-codec';
120
+ import { submitToRequestResult } from '../../messaging/submission-result';
121
+ import { internalFrameworkWireReply } from '../../framework-errors-internal';
106
122
  import type {
107
123
  ZLinkBackendActorRef,
108
- ZLinkBackendActorSessionSendFence,
109
- ZLinkBackendObjectPlacement,
110
- ZLinkBackendMeshNode
124
+ ZLinkBackendMeshNode,
125
+ ZLinkBackendObjectPlacement
111
126
  } from '../contracts';
112
127
  import type { ZLinkRawBindingPort } from '../raw-binding-port';
113
- import type { ApplicationJobQueuePort } from '../../application-jobs/contracts';
128
+ import { ZLinkBufferMessage } from '../runtime-message';
129
+ import {
130
+ isZLinkBackendResultError,
131
+ ZLinkBackendResultError,
132
+ type ZLinkBackendMessageLike as MessageLike
133
+ } from '../runtime-values';
134
+ import { translateBindingResultError } from './node-backend-adapter-support';
135
+ import { disconnectStreamPeer } from './node-socket-backend-adapter';
136
+ const DEFAULT_NATIVE_ACTIVE_CAPACITY = 10_000;
137
+ const UNSTARTED_DIAGNOSTIC_ENDPOINT = 'inproc://not-started';
114
138
 
115
139
  const MULTIPART_PACKET_NAME = SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME;
116
140
  const MULTIPART_CONTENT_TYPE = SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE;
117
141
  const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
118
142
  const MAX_DRAIN_RECORDS = 64;
119
- // Preserve the existing monitor/admission/liveness cadence. Only the binding
143
+ // Preserve the existing route observation/admission/liveness cadence. Only the binding
120
144
  // readable handler admits receive work; this timer never probes the socket.
121
145
  const MESH_BACKEND_MAINTENANCE_INTERVAL_MS = 1;
146
+ // Spec 08 §4.2 bounds the combined turn. Raw gets one equal share; stateful
147
+ // can use the remaining turn, including time the raw registry did not consume.
148
+ const MESH_BACKEND_RAW_MAINTENANCE_SHARE = 1 / 2;
122
149
  /**
123
150
  * Conservative Actor Join admission cap for relocation state chunks (spec 15
124
151
  * §4.2): a stable lower bound safe on any deployment, never lowered on
@@ -155,21 +182,32 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
155
182
  private readyHandler?: (domains: number) => number;
156
183
  private maintenanceTimer?: NodeJS.Timeout;
157
184
  private pumping = false;
158
- private readable = false;
159
- private readonly onReadable = (): void => {
160
- this.readable = true;
185
+ private readable = 0;
186
+ private readonly onReadable = (receiveReady: boolean, routeReady: boolean): void => {
187
+ if (receiveReady) this.readable |= 1;
188
+ if (routeReady) this.readable |= 2;
161
189
  if (!this.closed && !this.pumping) void this.pump();
162
190
  };
163
191
  private readonly onMaintenance = (): void => {
164
192
  this.maintenanceTimer = undefined;
193
+ if (this.closed) return;
194
+ const nowMs = performance.now();
195
+ const turnDeadlineMs = nowMs + RAW_MESH_RECEIVE_TIME_BUDGET_MS;
196
+ this.runtime?.expireOperations(
197
+ nowMs,
198
+ nowMs + RAW_MESH_RECEIVE_TIME_BUDGET_MS * MESH_BACKEND_RAW_MAINTENANCE_SHARE
199
+ );
200
+ this.stateful?.expireOperations(nowMs, turnDeadlineMs);
201
+ this.scheduleMaintenance();
165
202
  void this.pump();
166
203
  };
204
+ private readonly onPendingOperationsChanged = (): void => this.scheduleMaintenance();
167
205
  private nextPeerIntent = 1n;
168
206
  private closed = false;
169
207
  private objectRole: ServiceNodeDescriptor['objectRole'] = 'none';
170
- private placementWeight = 100;
171
- private activeCapacityLimit = 10_000;
172
- private pendingCapacityLimit = 128;
208
+ private placementWeight = ZLINK_DEFAULT_PUBLIC_WEIGHT;
209
+ private activeCapacityLimit: number = DEFAULT_NATIVE_ACTIVE_CAPACITY;
210
+ private pendingCapacityLimit: number = DEFAULT_ACTIVATION_CONCURRENCY_LIMIT;
173
211
  private objectCapabilities: readonly string[] = [];
174
212
  private maintenanceWave?: string;
175
213
  private mailboxRecordDropped?: (record: {
@@ -349,6 +387,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
349
387
  throw new Error('MeshNode bind endpoint is not configured.');
350
388
  const descriptor = this.createDescriptor();
351
389
  const runtime = new RawServiceMeshRuntime({
390
+ onPendingOperationsChanged: this.onPendingOperationsChanged,
352
391
  descriptor,
353
392
  resolveAdvertisedEndpoint: (boundEndpoint) => this.resolveAdvertisedEndpoint(boundEndpoint),
354
393
  bindingPort: this.bindingPort,
@@ -392,7 +431,8 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
392
431
  this.stateful = new ServiceStatefulRuntime(
393
432
  runtime,
394
433
  descriptor.nodeRoutingId,
395
- descriptor.lifecycleGeneration
434
+ descriptor.lifecycleGeneration,
435
+ this.onPendingOperationsChanged
396
436
  );
397
437
  if (this.dispatchErrors !== undefined) {
398
438
  this.stateful.setDispatchErrorReporter(this.dispatchErrors, this.meshName);
@@ -441,7 +481,6 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
441
481
 
442
482
  close(): void {
443
483
  if (this.closed) return;
444
- this.closed = true;
445
484
  if (this.maintenanceTimer !== undefined) clearTimeout(this.maintenanceTimer);
446
485
  this.maintenanceTimer = undefined;
447
486
  this.stateful?.close();
@@ -449,6 +488,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
449
488
  this.runtime?.close();
450
489
  this.runtime = undefined;
451
490
  this.clearCompletions();
491
+ this.closed = true;
452
492
  }
453
493
 
454
494
  addChannelName(name: string): void {
@@ -508,7 +548,6 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
508
548
  lifecycleGeneration: options.expectedLifecycleGeneration
509
549
  })
510
550
  });
511
- if (nodeRoutingId !== undefined) await runtime.announcePeer(nodeRoutingId);
512
551
  return intent;
513
552
  }
514
553
 
@@ -644,7 +683,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
644
683
  return await this.requireRuntime().requestService(
645
684
  String(targetRid),
646
685
  frames.map((frame) => Buffer.from(frame)),
647
- options?.timeoutMs ?? 30_000
686
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
648
687
  );
649
688
  }
650
689
 
@@ -656,7 +695,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
656
695
  const pending = this.requireRuntime().requestToNode(
657
696
  String(targetRid),
658
697
  encodeMultipartApplicationFrame(parts),
659
- options?.timeoutMs ?? 30_000
698
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
660
699
  );
661
700
  return this.observeCompletion(pending.id, OperationKind.NodeRequest, pending.promise);
662
701
  }
@@ -676,7 +715,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
676
715
  const pending = this.requireRuntime().requestToChannel(
677
716
  channelName,
678
717
  encodeMultipartApplicationFrame(parts),
679
- options?.timeoutMs ?? 30_000
718
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
680
719
  );
681
720
  return this.observeCompletion(pending.id, OperationKind.ChannelRequest, pending.promise);
682
721
  }
@@ -725,7 +764,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
725
764
  source: 1,
726
765
  state:
727
766
  this.runtime?.isPeerRouteReady(peer.descriptor.nodeRoutingId) === false
728
- ? 1
767
+ ? MeshPeerRuntimeState.Connecting
729
768
  : peerStateCode(peer.descriptor.state),
730
769
  routingId: peer.descriptor.nodeRoutingId as RoutingId,
731
770
  lifecycleGeneration: peer.descriptor.lifecycleGeneration,
@@ -739,7 +778,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
739
778
  connectionIntentId:
740
779
  findIntent(descriptor.nodeRoutingId, descriptor.advertisedEndpoint)?.id ?? 0n,
741
780
  source: 1,
742
- state: 6,
781
+ state: MeshPeerRuntimeState.NotRequired,
743
782
  routingId: descriptor.nodeRoutingId as RoutingId,
744
783
  lifecycleGeneration: descriptor.lifecycleGeneration,
745
784
  descriptorRevision: descriptor.descriptorRevision,
@@ -929,17 +968,19 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
929
968
  stableType: string,
930
969
  generation: bigint,
931
970
  authorityOwnerGeneration: bigint,
932
- spotId: string,
971
+ spotId: string | undefined,
933
972
  spotGeneration: bigint,
934
973
  membershipEpoch: bigint
935
974
  ): ZLinkBackendActorRef {
936
- return this.requireStateful().restoreActorAuthority(
975
+ const stateful = this.requireStateful();
976
+ const entry = spotId === undefined ? stateful.entrySpot().ref : undefined;
977
+ return stateful.restoreActorAuthority(
937
978
  actorId,
938
979
  stableType,
939
980
  generation,
940
981
  authorityOwnerGeneration,
941
- spotId,
942
- spotGeneration,
982
+ entry?.spotId ?? spotId!,
983
+ entry?.generation ?? spotGeneration,
943
984
  membershipEpoch
944
985
  ).ref;
945
986
  }
@@ -1115,13 +1156,15 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1115
1156
  route: ServiceInstanceRouteFence,
1116
1157
  parts: MessageLike | readonly MessageLike[],
1117
1158
  sourceSpotId?: string,
1118
- metadata?: ReadonlyMap<string, string>
1159
+ metadata?: ReadonlyMap<string, string>,
1160
+ instanceIntent = false
1119
1161
  ): Promise<SubmitResult> {
1120
1162
  const result = await this.requireStateful().sendToInstanceSpot(
1121
1163
  route,
1122
1164
  encodeMultipart(parts),
1123
1165
  sourceSpotId,
1124
- metadata === undefined ? undefined : encodeServiceMetadataFrame(metadata)
1166
+ metadata === undefined ? undefined : encodeServiceMetadataFrame(metadata),
1167
+ instanceIntent
1125
1168
  );
1126
1169
  return result as SubmitResult;
1127
1170
  }
@@ -1129,9 +1172,10 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1129
1172
  requestInstanceSpot(
1130
1173
  route: ServiceInstanceRouteFence,
1131
1174
  parts: MessageLike | readonly MessageLike[],
1132
- timeoutMs = 30_000,
1175
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS,
1133
1176
  sourceSpotId?: string,
1134
- metadata?: ReadonlyMap<string, string>
1177
+ metadata?: ReadonlyMap<string, string>,
1178
+ instanceIntent = false
1135
1179
  ): MeshOperationId {
1136
1180
  return this.observeStateful(
1137
1181
  OperationKind.InstanceSpotRequest,
@@ -1140,7 +1184,8 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1140
1184
  encodeMultipart(parts),
1141
1185
  timeoutMs,
1142
1186
  sourceSpotId,
1143
- metadata === undefined ? undefined : encodeServiceMetadataFrame(metadata)
1187
+ metadata === undefined ? undefined : encodeServiceMetadataFrame(metadata),
1188
+ instanceIntent
1144
1189
  )
1145
1190
  );
1146
1191
  }
@@ -1148,7 +1193,9 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1148
1193
  actorLookup(actorId: string) {
1149
1194
  const actor = this.requireStateful().actor(actorId);
1150
1195
  if (actor === undefined) {
1151
- throw Object.assign(new Error(`Actor '${actorId}' was not found.`), { nativeErrno: 2 });
1196
+ const error = new ConfigError(ConfigResult.NotFound);
1197
+ error.message = `Actor '${actorId}' was not found.`;
1198
+ throw error;
1152
1199
  }
1153
1200
  return {
1154
1201
  actor: actor.ref,
@@ -1158,14 +1205,21 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1158
1205
  };
1159
1206
  }
1160
1207
 
1161
- lookupRemoteActor(targetNodeRid: unknown, actorId: string, timeoutMs = 30_000): MeshOperationId {
1208
+ lookupRemoteActor(
1209
+ targetNodeRid: unknown,
1210
+ actorId: string,
1211
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1212
+ ): MeshOperationId {
1162
1213
  return this.observeStateful(
1163
1214
  OperationKind.ActorLookup,
1164
1215
  this.requireStateful().lookupRemoteActor(String(targetNodeRid), actorId, timeoutMs)
1165
1216
  );
1166
1217
  }
1167
1218
 
1168
- destroyActor(actor: ZLinkBackendActorRef, timeoutMs = 30_000): MeshOperationId {
1219
+ destroyActor(
1220
+ actor: ZLinkBackendActorRef,
1221
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1222
+ ): MeshOperationId {
1169
1223
  return this.observeStateful(
1170
1224
  OperationKind.ActorDestroy,
1171
1225
  this.requireStateful().destroyActor(actor, timeoutMs)
@@ -1178,7 +1232,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1178
1232
  targetSpotId: unknown,
1179
1233
  targetSpotGeneration: bigint,
1180
1234
  request: ServiceApplicationPayload,
1181
- timeoutMs = 30_000
1235
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1182
1236
  ): MeshOperationId {
1183
1237
  return this.observeStateful(
1184
1238
  OperationKind.ActorJoin,
@@ -1205,7 +1259,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1205
1259
  readonly ownerLeaseGeneration: bigint;
1206
1260
  },
1207
1261
  local: { readonly phase: 'admission'; readonly transferId: string },
1208
- timeoutMs = 30_000
1262
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1209
1263
  ): MeshOperationId {
1210
1264
  return this.observeStateful(
1211
1265
  OperationKind.ActorJoin,
@@ -1226,7 +1280,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1226
1280
  actor: ZLinkBackendActorRef,
1227
1281
  targetNodeRid: unknown,
1228
1282
  request: ServiceApplicationPayload,
1229
- timeoutMs = 30_000
1283
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1230
1284
  ): MeshOperationId {
1231
1285
  const target = String(targetNodeRid);
1232
1286
  return this.observeStateful(
@@ -1245,7 +1299,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1245
1299
  readonly ownerLeaseGeneration: bigint;
1246
1300
  },
1247
1301
  local: { readonly phase: 'admission'; readonly transferId: string },
1248
- timeoutMs = 30_000
1302
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1249
1303
  ): MeshOperationId {
1250
1304
  const target = String(targetNodeRid);
1251
1305
  return this.observeStateful(
@@ -1285,7 +1339,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1285
1339
  this.peerGeneration(String(actor.nodeRid)),
1286
1340
  actor.generation,
1287
1341
  encodeMultipart(parts),
1288
- options?.timeoutMs ?? 30_000
1342
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
1289
1343
  )
1290
1344
  );
1291
1345
  }
@@ -1317,7 +1371,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1317
1371
  this.peerGeneration(String(target.nodeRid)),
1318
1372
  target.generation,
1319
1373
  encodeMultipart(parts),
1320
- options?.timeoutMs ?? 30_000,
1374
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
1321
1375
  source
1322
1376
  )
1323
1377
  );
@@ -1327,21 +1381,19 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1327
1381
  actor: ZLinkBackendActorRef,
1328
1382
  expectedBindingGeneration: bigint,
1329
1383
  parts: MessageLike | readonly MessageLike[],
1330
- _flags?: number,
1331
- actorFence?: ZLinkBackendActorSessionSendFence
1384
+ _flags?: number
1332
1385
  ): Promise<SubmitResultValue> {
1333
1386
  return (await this.requireStateful().sendBoundSession(
1334
1387
  actor,
1335
1388
  expectedBindingGeneration,
1336
- encodeMultipart(parts),
1337
- actorFence
1389
+ encodeMultipart(parts)
1338
1390
  )) as SubmitResultValue;
1339
1391
  }
1340
1392
 
1341
1393
  closeActorBoundSession(
1342
1394
  actor: ZLinkBackendActorRef,
1343
1395
  expectedBindingGeneration: bigint,
1344
- timeoutMs = 30_000
1396
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1345
1397
  ): MeshOperationId {
1346
1398
  const binding = this.requireStateful().registry.binding(actor);
1347
1399
  if (binding === undefined) {
@@ -1361,7 +1413,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1361
1413
  leaveActor(
1362
1414
  actor: ZLinkBackendActorRef,
1363
1415
  expectedMembershipEpoch: bigint,
1364
- timeoutMs = 30_000
1416
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1365
1417
  ): MeshOperationId {
1366
1418
  return this.observeStateful(
1367
1419
  OperationKind.ActorLeave,
@@ -1445,7 +1497,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1445
1497
  nodeRoutingId: this.routingId,
1446
1498
  lifecycleGeneration: this.lifecycleGeneration,
1447
1499
  descriptorRevision: 1n,
1448
- advertisedEndpoint: this.bindEndpoint ?? 'inproc://not-started',
1500
+ advertisedEndpoint: this.bindEndpoint ?? UNSTARTED_DIAGNOSTIC_ENDPOINT,
1449
1501
  channels,
1450
1502
  state: 'preparing',
1451
1503
  // Plaintext RouteMesh peers use the shared default admission identity.
@@ -1473,27 +1525,33 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1473
1525
  }
1474
1526
 
1475
1527
  private scheduleMaintenance(): void {
1476
- if (this.closed || this.maintenanceTimer !== undefined) return;
1477
- this.maintenanceTimer = setTimeout(this.onMaintenance, MESH_BACKEND_MAINTENANCE_INTERVAL_MS);
1528
+ if (this.closed) return;
1529
+ this.maintenanceTimer ??= setTimeout(this.onMaintenance, MESH_BACKEND_MAINTENANCE_INTERVAL_MS);
1530
+ const pending =
1531
+ (this.runtime?.pendingOperationCount ?? 0) + (this.stateful?.pendingOperationCount ?? 0) > 0;
1532
+ if (pending === this.maintenanceTimer.hasRef()) return;
1533
+ if (pending) {
1534
+ this.maintenanceTimer.ref();
1535
+ } else {
1536
+ this.maintenanceTimer.unref();
1537
+ }
1478
1538
  }
1479
1539
 
1480
1540
  private async pump(): Promise<void> {
1481
1541
  if (this.isClosed() || this.pumping) return;
1482
1542
  this.pumping = true;
1483
- if (this.maintenanceTimer !== undefined) clearTimeout(this.maintenanceTimer);
1484
- this.maintenanceTimer = undefined;
1485
1543
  try {
1486
1544
  do {
1487
- const receiveReady = this.readable;
1488
- this.readable = false;
1489
- const more = await this.requireRuntime().pumpBatch(receiveReady);
1545
+ const ready = this.readable;
1546
+ this.readable = 0;
1547
+ const more = await this.requireRuntime().pumpBatch((ready & 1) !== 0, (ready & 2) !== 0);
1490
1548
  if (more) {
1491
1549
  // Yield only after actual progress, retaining readiness across the
1492
1550
  // existing batch limits until receive reports no data.
1493
- this.readable = true;
1551
+ this.readable |= 1;
1494
1552
  await yieldToIO();
1495
1553
  }
1496
- } while (!this.closed && this.readable);
1554
+ } while (!this.closed && this.readable !== 0);
1497
1555
  } finally {
1498
1556
  this.pumping = false;
1499
1557
  this.scheduleMaintenance();
@@ -1524,7 +1582,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1524
1582
  const id = { high: 1n, low };
1525
1583
  void promise.then(
1526
1584
  (result) => this.enqueueCompletion(id, operationKind, result),
1527
- (error) => this.enqueueCompletion(id, operationKind, genericOperationFailure(error))
1585
+ (error) => this.enqueueCompletion(id, operationKind, requestFailureResult(error))
1528
1586
  );
1529
1587
  return id;
1530
1588
  }
@@ -1533,10 +1591,10 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1533
1591
  operationKind: number,
1534
1592
  pending: ServiceStatefulPendingOperation
1535
1593
  ): MeshOperationId {
1536
- const id = { high: 2n, low: pending.id };
1594
+ const id = { high: ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: pending.id };
1537
1595
  void pending.promise.then(
1538
1596
  (result) => this.enqueueCompletion(id, operationKind, result),
1539
- (error) => this.enqueueCompletion(id, operationKind, statefulOperationFailure(error))
1597
+ (error) => this.enqueueCompletion(id, operationKind, requestFailureResult(error))
1540
1598
  );
1541
1599
  return id;
1542
1600
  }
@@ -1584,7 +1642,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1584
1642
  this.completionCount -= 1;
1585
1643
  if (this.completionCount === 0) {
1586
1644
  this.clearCompletions();
1587
- } else if (this.completionHead >= 1024 && this.completionHead * 2 >= this.completions.length) {
1645
+ } else if (shouldCompactBackingArray(this.completionHead, this.completions.length)) {
1588
1646
  this.completions.splice(0, this.completionHead);
1589
1647
  this.completionHead = 0;
1590
1648
  }
@@ -1740,7 +1798,7 @@ class RawServiceSpot implements ServiceSpot {
1740
1798
  this.state,
1741
1799
  routeFence,
1742
1800
  parts,
1743
- options?.timeoutMs ?? 30_000
1801
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
1744
1802
  );
1745
1803
  }
1746
1804
 
@@ -1816,7 +1874,7 @@ function entrySpotFenceVersion(generation: bigint): string {
1816
1874
  }
1817
1875
 
1818
1876
  class RawStreamSessionService implements StreamSessionService {
1819
- private state = 1;
1877
+ private state: StreamSessionRuntimeState = StreamSessionRuntimeState.Created;
1820
1878
  private closed = false;
1821
1879
  private readonly sessionTargets = new Map<string, RoutingId>();
1822
1880
 
@@ -1831,7 +1889,7 @@ class RawStreamSessionService implements StreamSessionService {
1831
1889
 
1832
1890
  start(): void {
1833
1891
  if (this.closed) throw new Error('STREAM session service is closed.');
1834
- this.state = 2;
1892
+ this.state = StreamSessionRuntimeState.Started;
1835
1893
  }
1836
1894
 
1837
1895
  shutdown(_timeoutMs: number): RequestResultValue {
@@ -1842,7 +1900,7 @@ class RawStreamSessionService implements StreamSessionService {
1842
1900
  close(): void {
1843
1901
  if (this.closed) return;
1844
1902
  this.closed = true;
1845
- this.state = 5;
1903
+ this.state = StreamSessionRuntimeState.Closed;
1846
1904
  this.sessionTargets.clear();
1847
1905
  }
1848
1906
 
@@ -1859,7 +1917,11 @@ class RawStreamSessionService implements StreamSessionService {
1859
1917
  };
1860
1918
  }
1861
1919
 
1862
- lookupActor(targetNodeRid: RoutingId, actorId: string, timeoutMs = 30_000): MeshOperationId {
1920
+ lookupActor(
1921
+ targetNodeRid: RoutingId,
1922
+ actorId: string,
1923
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1924
+ ): MeshOperationId {
1863
1925
  this.requireStarted();
1864
1926
  return this.observe(
1865
1927
  OperationKind.ActorLookup,
@@ -1870,7 +1932,7 @@ class RawStreamSessionService implements StreamSessionService {
1870
1932
  bindActor(
1871
1933
  sessionRid: RoutingId,
1872
1934
  actor: ServiceActorRef,
1873
- timeoutMs = 30_000,
1935
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS,
1874
1936
  onBindingReplaced?: (
1875
1937
  actorId: string,
1876
1938
  retiredSession: ServiceRetiredBoundSessionRouteFence,
@@ -1890,7 +1952,6 @@ class RawStreamSessionService implements StreamSessionService {
1890
1952
  (targetSessionRid, payloadFrame) =>
1891
1953
  this.deliver(targetSessionRid, actor.actorId, payloadFrame),
1892
1954
  onBindingReplaced,
1893
- serviceSessionBindingIngressPortIfRegistered(this),
1894
1955
  actorAuthority
1895
1956
  )
1896
1957
  );
@@ -1900,7 +1961,7 @@ class RawStreamSessionService implements StreamSessionService {
1900
1961
  sessionRid: RoutingId,
1901
1962
  actor: ServiceActorRef,
1902
1963
  expectedBindingGeneration: bigint,
1903
- timeoutMs = 30_000
1964
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1904
1965
  ): MeshOperationId {
1905
1966
  this.requireStarted();
1906
1967
  return this.observe(
@@ -1973,7 +2034,7 @@ class RawStreamSessionService implements StreamSessionService {
1973
2034
  }
1974
2035
 
1975
2036
  private requireStarted(): void {
1976
- if (this.state !== 2 || this.closed) {
2037
+ if (this.state !== StreamSessionRuntimeState.Started || this.closed) {
1977
2038
  throw new Error('STREAM session service is not started.');
1978
2039
  }
1979
2040
  }
@@ -2215,7 +2276,7 @@ function decodeMultipartRecord(
2215
2276
  };
2216
2277
  }
2217
2278
  const header = record.parts[0]!;
2218
- const command = header[3]!;
2279
+ const command = header[SERVICE_WIRE_COMMAND_OFFSET]!;
2219
2280
  const payloadFrame = record.parts[1]!;
2220
2281
  const application = decodeApplicationEnvelope(payloadFrame);
2221
2282
  const channelName = record.owner.startsWith('channel:')
@@ -2226,11 +2287,11 @@ function decodeMultipartRecord(
2226
2287
  ? { high: 0n, low: 0n }
2227
2288
  : { high: 1n, low: record.correlation };
2228
2289
  const kind =
2229
- command === 16
2290
+ command === ServiceWireCommand.nodeSend
2230
2291
  ? ReceiveKind.NodeSend
2231
- : command === 17
2292
+ : command === ServiceWireCommand.nodeRequest
2232
2293
  ? ReceiveKind.NodeRequest
2233
- : command === 18
2294
+ : command === ServiceWireCommand.channelSend
2234
2295
  ? ReceiveKind.ChannelSend
2235
2296
  : ReceiveKind.ChannelRequest;
2236
2297
  const operationKind =
@@ -2287,7 +2348,7 @@ function decodeStatefulRecord(
2287
2348
  const operationId =
2288
2349
  record.correlation === undefined
2289
2350
  ? { high: 0n, low: 0n }
2290
- : { high: 2n, low: record.correlation };
2351
+ : { high: ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: record.correlation };
2291
2352
  const ingressLifecycle = receiveIngressLifecycle(record);
2292
2353
  return {
2293
2354
  kind: stateful.receiveKind,
@@ -2319,12 +2380,18 @@ function decodeStatefulRecord(
2319
2380
  : decodeMultipart(application.payload),
2320
2381
  ...(stateful.isPending === undefined ? {} : { isPending: stateful.isPending }),
2321
2382
  ...(stateful.deadlineUnixMs === undefined ? {} : { deadlineUnixMs: stateful.deadlineUnixMs }),
2383
+ ...(stateful.activationRecord === undefined
2384
+ ? {}
2385
+ : { activationRecord: stateful.activationRecord }),
2322
2386
  ...(stateful.messageFollowOrigin === undefined
2323
2387
  ? {}
2324
2388
  : { messageFollowOrigin: stateful.messageFollowOrigin }),
2325
2389
  ...(stateful.onTerminalCompletion === undefined
2326
2390
  ? {}
2327
2391
  : { onTerminalCompletion: stateful.onTerminalCompletion }),
2392
+ ...(stateful.onHandlerTurnStarted === undefined
2393
+ ? {}
2394
+ : { onHandlerTurnStarted: stateful.onHandlerTurnStarted }),
2328
2395
  reply(parts) {
2329
2396
  if (stateful.reply === undefined) return SubmitResult.InvalidState;
2330
2397
  return stateful.reply(RequestResult.Ok, 0, encodeMultipart(parts))
@@ -2430,38 +2497,45 @@ function readyDomain(domain: ServiceMailboxDomain): number {
2430
2497
  }
2431
2498
 
2432
2499
  /**
2433
- * Classifies a generic node/channel request rejection into a completion
2434
- * terminal. Spec 32-framework-error-model:91-92 — a reply that could not be
2435
- * decoded (ServiceWireProtocolError from the reply parser) is a protocol
2436
- * failure, not connection loss; only genuine transport rejections collapse to
2437
- * NotConnected.
2500
+ * The one classification of a failed node/channel/stateful request into its
2501
+ * completion terminal. A binding REQUEST result is Core's decision and is kept
2502
+ * as is; a submit failure is classified from its submission or completion phase.
2503
+ * A reply that could not be decoded is a protocol
2504
+ * failure (spec 32-framework-error-model:91-92). The failure code is a wire
2505
+ * code, so a Core result carries 0.
2438
2506
  */
2439
- export function genericOperationFailure(error: unknown): RawServiceRequestResult {
2440
- // requestProtocolError(16): the schema terminal-failure-integrity rule
2441
- // forbids a typed terminal (104) with failure none, so the synthesized
2442
- // decode-failure pair is 104+16; genuine transport loss stays 109+0.
2443
- return error instanceof ServiceWireProtocolError
2444
- ? { terminalResult: RequestResult.ProtocolError, failureCode: 16 }
2445
- : { terminalResult: RequestResult.NotConnected, failureCode: 0 };
2446
- }
2447
-
2448
- function statefulOperationFailure(error: unknown): RawServiceRequestResult {
2449
- if (error instanceof ZLinkFrameworkException) {
2450
- return internalFrameworkWireReply(error);
2451
- }
2452
- if (error instanceof OperationTimeoutError) {
2453
- return { terminalResult: RequestResult.TimedOut, failureCode: 0 };
2507
+ export function requestFailureResult(error: unknown): RawServiceRequestResult {
2508
+ const failure = translateBindingResultError(error);
2509
+ if (isZLinkBackendResultError(failure)) {
2510
+ return {
2511
+ terminalResult:
2512
+ failure.operation === 'request'
2513
+ ? failure.result
2514
+ : submitToRequestResult(failure.result, failure.phase),
2515
+ failureCode: 0
2516
+ };
2454
2517
  }
2455
- if (isZLinkBackendResultError(error)) {
2518
+ // requestProtocolError(16): the schema terminal-failure-integrity rule
2519
+ // forbids a typed terminal (104) with failure none.
2520
+ if (failure instanceof ServiceWireProtocolError) {
2456
2521
  return {
2457
- terminalResult: error.result,
2458
- failureCode: error.nativeErrno ?? 0
2522
+ terminalResult: RequestResult.ProtocolError,
2523
+ failureCode: ServiceWireFrameworkErrorCode.requestProtocolError
2459
2524
  };
2460
2525
  }
2461
- if (error instanceof OperationCancelledError) {
2526
+ if (failure instanceof ZLinkFrameworkException) {
2527
+ return internalFrameworkWireReply(failure);
2528
+ }
2529
+ if (failure instanceof OperationTimeoutError) {
2530
+ return { terminalResult: RequestResult.TimedOut, failureCode: 0 };
2531
+ }
2532
+ if (failure instanceof OperationCancelledError) {
2462
2533
  return { terminalResult: RequestResult.NotConnected, failureCode: 0 };
2463
2534
  }
2464
- return { terminalResult: RequestResult.InternalError, failureCode: 17 };
2535
+ return {
2536
+ terminalResult: RequestResult.InternalError,
2537
+ failureCode: ServiceWireFrameworkErrorCode.requestFailed
2538
+ };
2465
2539
  }
2466
2540
 
2467
2541
  function encodeMultipart(parts: MessageLike | readonly MessageLike[]) {
@@ -2500,7 +2574,10 @@ function encodeMultipartApplicationFrame(parts: MessageLike | readonly MessageLi
2500
2574
 
2501
2575
  function decodeApplicationEnvelope(frame: Uint8Array) {
2502
2576
  const bytes = Buffer.from(frame.buffer, frame.byteOffset, frame.byteLength);
2503
- if (bytes.length < 11 || bytes[0] !== 1) {
2577
+ if (
2578
+ bytes.length < APPLICATION_PAYLOAD_MINIMUM_FIELD_BYTES ||
2579
+ bytes[0] !== APPLICATION_PAYLOAD_VERSION
2580
+ ) {
2504
2581
  throw new ServiceWireProtocolError('Invalid application envelope.');
2505
2582
  }
2506
2583
  const bodyLength = bytes.readUInt32BE(1);
@@ -2598,22 +2675,35 @@ function requireRawReadyBatch(batch: ReadyBatch): RawReadyBatch {
2598
2675
  return batch;
2599
2676
  }
2600
2677
 
2601
- function stateCode(state: ServiceNodeDescriptor['state']): number {
2602
- return ['preparing', 'serving', 'retiring', 'draining', 'stopped', 'error'].indexOf(state) + 1;
2678
+ function stateCode(state: ServiceNodeDescriptor['state']): MeshNodeRuntimeState {
2679
+ switch (state) {
2680
+ case 'preparing':
2681
+ return MeshNodeRuntimeState.Preparing;
2682
+ case 'serving':
2683
+ return MeshNodeRuntimeState.Serving;
2684
+ case 'retiring':
2685
+ return MeshNodeRuntimeState.Retiring;
2686
+ case 'draining':
2687
+ return MeshNodeRuntimeState.Draining;
2688
+ case 'stopped':
2689
+ return MeshNodeRuntimeState.Stopped;
2690
+ case 'error':
2691
+ return MeshNodeRuntimeState.Error;
2692
+ }
2603
2693
  }
2604
2694
 
2605
2695
  function peerStateCode(state: ServiceNodeDescriptor['state']): number {
2606
2696
  switch (state) {
2607
2697
  case 'preparing':
2608
- return 2;
2698
+ return MeshPeerRuntimeState.Preparing;
2609
2699
  case 'serving':
2610
2700
  case 'retiring':
2611
- return 3;
2701
+ return MeshPeerRuntimeState.Serving;
2612
2702
  case 'draining':
2613
- return 4;
2703
+ return MeshPeerRuntimeState.Draining;
2614
2704
  case 'stopped':
2615
2705
  case 'error':
2616
- return 5;
2706
+ return MeshPeerRuntimeState.Closed;
2617
2707
  }
2618
2708
  }
2619
2709
 
@@ -2626,15 +2716,15 @@ function createLifecycleGeneration(): bigint {
2626
2716
  }
2627
2717
 
2628
2718
  function requirePositivePlacementValue(value: number, name: string): number {
2629
- if (!Number.isSafeInteger(value) || value <= 0 || value > 0x7fff_ffff) {
2630
- throw new RangeError(`${name} must be an integer in 1..2147483647.`);
2719
+ if (!isValidPositiveCapacity(value)) {
2720
+ throw new RangeError(`${name} must be an integer in 1..${ZLINK_MAX_CAPACITY}.`);
2631
2721
  }
2632
2722
  return value;
2633
2723
  }
2634
2724
 
2635
2725
  function requirePublicWeight(value: number, name: string): number {
2636
- if (!Number.isInteger(value) || value < 0 || value > 10_000) {
2637
- throw new RangeError(`${name} must be an integer in 0..10000.`);
2726
+ if (!isValidPublicWeight(value)) {
2727
+ throw new RangeError(`${name} must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`);
2638
2728
  }
2639
2729
  return value;
2640
2730
  }