@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
@@ -1,18 +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 { translateBindingResultError } from './node-backend-adapter-support';
11
- import { ZLinkFrameworkException } from '../../../contracts';
12
- import { internalFrameworkWireReply } from '../../framework-errors-internal';
13
7
  import {
14
- Message,
15
8
  RoutingId as BindingRoutingId,
9
+ ConfigError,
10
+ ConfigResult,
11
+ Message,
16
12
  RequestResult,
17
13
  SubmitError,
18
14
  SubmitResult,
@@ -20,51 +16,64 @@ import {
20
16
  type StreamSocket,
21
17
  type SubmitResult as SubmitResultValue
22
18
  } from '@zlink-systems/zlink';
23
- import {
24
- isZLinkBackendResultError,
25
- ZLinkBackendResultError,
26
- type ZLinkBackendMessageLike as MessageLike
27
- } from '../runtime-values';
28
- 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
+
29
23
  import type { Message as FrameworkMessage } from '../../../contracts/Common/Message';
30
- import type { ZLinkDispatchErrorReporter } from '../../channels/dispatch-error-reporter';
31
- import type {
32
- MeshOperationId,
33
- MeshPeerEntry,
34
- MeshPublisher,
35
- ReadyBatch,
36
- ReadyRecord,
37
- ReceiveBatch,
38
- ReceiveRecord,
39
- ServiceSpot,
40
- StreamSessionActorAuthorityFence,
41
- StreamSessionService
42
- } 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';
43
28
  import {
44
- OperationKind,
45
- ReadyDomain,
46
- ReadyOwnerKind,
47
- ReceiveKind
48
- } 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';
49
39
  import {
50
40
  OperationCancelledError,
51
41
  OperationTimeoutError
52
42
  } from '../../foundation/operation-registry';
53
43
  import {
54
44
  RawServiceMeshRuntime,
45
+ RAW_MESH_RECEIVE_TIME_BUDGET_MS,
55
46
  type RawServiceRequestResult
56
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';
57
55
  import {
58
- decodeApplicationPayloadView,
59
- encodeMultipartApplicationPayload,
60
- type ServiceApplicationPayload,
61
- ServiceWireProtocolError
62
- } from '../../foundation/service-wire-m6a-codec';
63
- import {
64
- SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE,
65
- SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME,
66
- SERVICE_WIRE_REQUIRED_CAPABILITY
67
- } 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';
68
77
  import {
69
78
  ServiceStatefulRuntime,
70
79
  statefulMailboxData,
@@ -72,14 +81,12 @@ import {
72
81
  type ServiceInstanceApplicationLifecycle,
73
82
  type ServicePendingInstanceActivation,
74
83
  type ServiceSpotMessageFollowSeal,
75
- type ServiceUserSpotOperationHandler,
76
- type ServiceUserSpotOperationResult,
77
84
  type ServiceStatefulMailboxData,
78
85
  type ServiceStatefulPendingOperation,
79
- type ServiceStatefulResult
86
+ type ServiceStatefulResult,
87
+ type ServiceUserSpotOperationHandler,
88
+ type ServiceUserSpotOperationResult
80
89
  } from '../../foundation/service-stateful-runtime';
81
- import type { ServiceActorRef, ServiceSpotState } from '../../foundation/service-stateful-registry';
82
- import { serviceSessionBindingIngressPortIfRegistered } from '../../foundation/service-session-binding-ingress-port';
83
90
  import type {
84
91
  ServiceActorCreateRecord,
85
92
  ServiceDirectSpotRouteFence,
@@ -90,27 +97,44 @@ import type {
90
97
  ServiceUserSpotCloseRecord,
91
98
  ServiceUserSpotCreateRecord
92
99
  } from '../../foundation/service-stateful-wire-codec';
93
- import { encodeServiceMetadataFrame } from '../../foundation/service-metadata-codec';
94
- import type { ServiceInstanceActivationRecoveryEnvelope } from '../../foundation/service-instance-activation-recovery-codec';
95
- import type {
96
- ServiceMailboxClaim,
97
- ServiceMailboxDomain,
98
- ServiceMailboxRecord
99
- } from '../../foundation/service-mailbox';
100
100
  import type {
101
101
  ServiceChannelDescriptor,
102
102
  ServiceNodeDescriptor
103
103
  } from '../../foundation/service-topology-registry';
104
- import type { RoutingId } from '../../../contracts';
105
- import { buildAdvertisedEndpoint } from '../../../contracts/Configuration/EndpointNotation';
106
- 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';
107
122
  import type {
108
123
  ZLinkBackendActorRef,
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;
@@ -119,6 +143,9 @@ const MAX_DRAIN_RECORDS = 64;
119
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: {
@@ -186,7 +224,6 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
186
224
  record: import('../../foundation/service-stateful-wire-codec').ServiceMessageFollowRecord
187
225
  ) => void;
188
226
  private dispatchErrors?: ZLinkDispatchErrorReporter;
189
- private spotAdmissionProvider?: Parameters<ServiceStatefulRuntime['setSpotAdmissionProvider']>[0];
190
227
  private readonly peerDisconnectedHandlers = new Set<(endpoint: string) => void>();
191
228
  constructor(
192
229
  private readonly meshName: string,
@@ -242,13 +279,6 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
242
279
  this.stateful?.setDispatchErrorReporter(reporter, this.meshName);
243
280
  }
244
281
 
245
- setSpotAdmissionProvider(
246
- provider: Parameters<ServiceStatefulRuntime['setSpotAdmissionProvider']>[0]
247
- ): void {
248
- this.spotAdmissionProvider = provider;
249
- this.stateful?.setSpotAdmissionProvider(provider);
250
- }
251
-
252
282
  setProtocolErrorHandler(
253
283
  handler: (record: {
254
284
  readonly sourceNodeRid: string;
@@ -357,6 +387,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
357
387
  throw new Error('MeshNode bind endpoint is not configured.');
358
388
  const descriptor = this.createDescriptor();
359
389
  const runtime = new RawServiceMeshRuntime({
390
+ onPendingOperationsChanged: this.onPendingOperationsChanged,
360
391
  descriptor,
361
392
  resolveAdvertisedEndpoint: (boundEndpoint) => this.resolveAdvertisedEndpoint(boundEndpoint),
362
393
  bindingPort: this.bindingPort,
@@ -400,11 +431,9 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
400
431
  this.stateful = new ServiceStatefulRuntime(
401
432
  runtime,
402
433
  descriptor.nodeRoutingId,
403
- descriptor.lifecycleGeneration
434
+ descriptor.lifecycleGeneration,
435
+ this.onPendingOperationsChanged
404
436
  );
405
- if (this.spotAdmissionProvider !== undefined) {
406
- this.stateful.setSpotAdmissionProvider(this.spotAdmissionProvider);
407
- }
408
437
  if (this.dispatchErrors !== undefined) {
409
438
  this.stateful.setDispatchErrorReporter(this.dispatchErrors, this.meshName);
410
439
  }
@@ -452,7 +481,6 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
452
481
 
453
482
  close(): void {
454
483
  if (this.closed) return;
455
- this.closed = true;
456
484
  if (this.maintenanceTimer !== undefined) clearTimeout(this.maintenanceTimer);
457
485
  this.maintenanceTimer = undefined;
458
486
  this.stateful?.close();
@@ -460,6 +488,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
460
488
  this.runtime?.close();
461
489
  this.runtime = undefined;
462
490
  this.clearCompletions();
491
+ this.closed = true;
463
492
  }
464
493
 
465
494
  addChannelName(name: string): void {
@@ -519,7 +548,6 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
519
548
  lifecycleGeneration: options.expectedLifecycleGeneration
520
549
  })
521
550
  });
522
- if (nodeRoutingId !== undefined) await runtime.announcePeer(nodeRoutingId);
523
551
  return intent;
524
552
  }
525
553
 
@@ -655,7 +683,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
655
683
  return await this.requireRuntime().requestService(
656
684
  String(targetRid),
657
685
  frames.map((frame) => Buffer.from(frame)),
658
- options?.timeoutMs ?? 30_000
686
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
659
687
  );
660
688
  }
661
689
 
@@ -667,7 +695,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
667
695
  const pending = this.requireRuntime().requestToNode(
668
696
  String(targetRid),
669
697
  encodeMultipartApplicationFrame(parts),
670
- options?.timeoutMs ?? 30_000
698
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
671
699
  );
672
700
  return this.observeCompletion(pending.id, OperationKind.NodeRequest, pending.promise);
673
701
  }
@@ -687,7 +715,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
687
715
  const pending = this.requireRuntime().requestToChannel(
688
716
  channelName,
689
717
  encodeMultipartApplicationFrame(parts),
690
- options?.timeoutMs ?? 30_000
718
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
691
719
  );
692
720
  return this.observeCompletion(pending.id, OperationKind.ChannelRequest, pending.promise);
693
721
  }
@@ -736,7 +764,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
736
764
  source: 1,
737
765
  state:
738
766
  this.runtime?.isPeerRouteReady(peer.descriptor.nodeRoutingId) === false
739
- ? 1
767
+ ? MeshPeerRuntimeState.Connecting
740
768
  : peerStateCode(peer.descriptor.state),
741
769
  routingId: peer.descriptor.nodeRoutingId as RoutingId,
742
770
  lifecycleGeneration: peer.descriptor.lifecycleGeneration,
@@ -750,7 +778,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
750
778
  connectionIntentId:
751
779
  findIntent(descriptor.nodeRoutingId, descriptor.advertisedEndpoint)?.id ?? 0n,
752
780
  source: 1,
753
- state: 6,
781
+ state: MeshPeerRuntimeState.NotRequired,
754
782
  routingId: descriptor.nodeRoutingId as RoutingId,
755
783
  lifecycleGeneration: descriptor.lifecycleGeneration,
756
784
  descriptorRevision: descriptor.descriptorRevision,
@@ -940,17 +968,19 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
940
968
  stableType: string,
941
969
  generation: bigint,
942
970
  authorityOwnerGeneration: bigint,
943
- spotId: string,
971
+ spotId: string | undefined,
944
972
  spotGeneration: bigint,
945
973
  membershipEpoch: bigint
946
974
  ): ZLinkBackendActorRef {
947
- return this.requireStateful().restoreActorAuthority(
975
+ const stateful = this.requireStateful();
976
+ const entry = spotId === undefined ? stateful.entrySpot().ref : undefined;
977
+ return stateful.restoreActorAuthority(
948
978
  actorId,
949
979
  stableType,
950
980
  generation,
951
981
  authorityOwnerGeneration,
952
- spotId,
953
- spotGeneration,
982
+ entry?.spotId ?? spotId!,
983
+ entry?.generation ?? spotGeneration,
954
984
  membershipEpoch
955
985
  ).ref;
956
986
  }
@@ -1126,13 +1156,15 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1126
1156
  route: ServiceInstanceRouteFence,
1127
1157
  parts: MessageLike | readonly MessageLike[],
1128
1158
  sourceSpotId?: string,
1129
- metadata?: ReadonlyMap<string, string>
1159
+ metadata?: ReadonlyMap<string, string>,
1160
+ instanceIntent = false
1130
1161
  ): Promise<SubmitResult> {
1131
1162
  const result = await this.requireStateful().sendToInstanceSpot(
1132
1163
  route,
1133
1164
  encodeMultipart(parts),
1134
1165
  sourceSpotId,
1135
- metadata === undefined ? undefined : encodeServiceMetadataFrame(metadata)
1166
+ metadata === undefined ? undefined : encodeServiceMetadataFrame(metadata),
1167
+ instanceIntent
1136
1168
  );
1137
1169
  return result as SubmitResult;
1138
1170
  }
@@ -1140,9 +1172,10 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1140
1172
  requestInstanceSpot(
1141
1173
  route: ServiceInstanceRouteFence,
1142
1174
  parts: MessageLike | readonly MessageLike[],
1143
- timeoutMs = 30_000,
1175
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS,
1144
1176
  sourceSpotId?: string,
1145
- metadata?: ReadonlyMap<string, string>
1177
+ metadata?: ReadonlyMap<string, string>,
1178
+ instanceIntent = false
1146
1179
  ): MeshOperationId {
1147
1180
  return this.observeStateful(
1148
1181
  OperationKind.InstanceSpotRequest,
@@ -1151,7 +1184,8 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1151
1184
  encodeMultipart(parts),
1152
1185
  timeoutMs,
1153
1186
  sourceSpotId,
1154
- metadata === undefined ? undefined : encodeServiceMetadataFrame(metadata)
1187
+ metadata === undefined ? undefined : encodeServiceMetadataFrame(metadata),
1188
+ instanceIntent
1155
1189
  )
1156
1190
  );
1157
1191
  }
@@ -1159,7 +1193,9 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1159
1193
  actorLookup(actorId: string) {
1160
1194
  const actor = this.requireStateful().actor(actorId);
1161
1195
  if (actor === undefined) {
1162
- 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;
1163
1199
  }
1164
1200
  return {
1165
1201
  actor: actor.ref,
@@ -1169,14 +1205,21 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1169
1205
  };
1170
1206
  }
1171
1207
 
1172
- 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 {
1173
1213
  return this.observeStateful(
1174
1214
  OperationKind.ActorLookup,
1175
1215
  this.requireStateful().lookupRemoteActor(String(targetNodeRid), actorId, timeoutMs)
1176
1216
  );
1177
1217
  }
1178
1218
 
1179
- destroyActor(actor: ZLinkBackendActorRef, timeoutMs = 30_000): MeshOperationId {
1219
+ destroyActor(
1220
+ actor: ZLinkBackendActorRef,
1221
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1222
+ ): MeshOperationId {
1180
1223
  return this.observeStateful(
1181
1224
  OperationKind.ActorDestroy,
1182
1225
  this.requireStateful().destroyActor(actor, timeoutMs)
@@ -1189,7 +1232,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1189
1232
  targetSpotId: unknown,
1190
1233
  targetSpotGeneration: bigint,
1191
1234
  request: ServiceApplicationPayload,
1192
- timeoutMs = 30_000
1235
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1193
1236
  ): MeshOperationId {
1194
1237
  return this.observeStateful(
1195
1238
  OperationKind.ActorJoin,
@@ -1216,7 +1259,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1216
1259
  readonly ownerLeaseGeneration: bigint;
1217
1260
  },
1218
1261
  local: { readonly phase: 'admission'; readonly transferId: string },
1219
- timeoutMs = 30_000
1262
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1220
1263
  ): MeshOperationId {
1221
1264
  return this.observeStateful(
1222
1265
  OperationKind.ActorJoin,
@@ -1237,7 +1280,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1237
1280
  actor: ZLinkBackendActorRef,
1238
1281
  targetNodeRid: unknown,
1239
1282
  request: ServiceApplicationPayload,
1240
- timeoutMs = 30_000
1283
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1241
1284
  ): MeshOperationId {
1242
1285
  const target = String(targetNodeRid);
1243
1286
  return this.observeStateful(
@@ -1256,7 +1299,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1256
1299
  readonly ownerLeaseGeneration: bigint;
1257
1300
  },
1258
1301
  local: { readonly phase: 'admission'; readonly transferId: string },
1259
- timeoutMs = 30_000
1302
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1260
1303
  ): MeshOperationId {
1261
1304
  const target = String(targetNodeRid);
1262
1305
  return this.observeStateful(
@@ -1296,7 +1339,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1296
1339
  this.peerGeneration(String(actor.nodeRid)),
1297
1340
  actor.generation,
1298
1341
  encodeMultipart(parts),
1299
- options?.timeoutMs ?? 30_000
1342
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
1300
1343
  )
1301
1344
  );
1302
1345
  }
@@ -1328,7 +1371,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1328
1371
  this.peerGeneration(String(target.nodeRid)),
1329
1372
  target.generation,
1330
1373
  encodeMultipart(parts),
1331
- options?.timeoutMs ?? 30_000,
1374
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS,
1332
1375
  source
1333
1376
  )
1334
1377
  );
@@ -1350,7 +1393,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1350
1393
  closeActorBoundSession(
1351
1394
  actor: ZLinkBackendActorRef,
1352
1395
  expectedBindingGeneration: bigint,
1353
- timeoutMs = 30_000
1396
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1354
1397
  ): MeshOperationId {
1355
1398
  const binding = this.requireStateful().registry.binding(actor);
1356
1399
  if (binding === undefined) {
@@ -1370,7 +1413,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1370
1413
  leaveActor(
1371
1414
  actor: ZLinkBackendActorRef,
1372
1415
  expectedMembershipEpoch: bigint,
1373
- timeoutMs = 30_000
1416
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1374
1417
  ): MeshOperationId {
1375
1418
  return this.observeStateful(
1376
1419
  OperationKind.ActorLeave,
@@ -1454,7 +1497,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1454
1497
  nodeRoutingId: this.routingId,
1455
1498
  lifecycleGeneration: this.lifecycleGeneration,
1456
1499
  descriptorRevision: 1n,
1457
- advertisedEndpoint: this.bindEndpoint ?? 'inproc://not-started',
1500
+ advertisedEndpoint: this.bindEndpoint ?? UNSTARTED_DIAGNOSTIC_ENDPOINT,
1458
1501
  channels,
1459
1502
  state: 'preparing',
1460
1503
  // Plaintext RouteMesh peers use the shared default admission identity.
@@ -1482,27 +1525,33 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1482
1525
  }
1483
1526
 
1484
1527
  private scheduleMaintenance(): void {
1485
- if (this.closed || this.maintenanceTimer !== undefined) return;
1486
- 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
+ }
1487
1538
  }
1488
1539
 
1489
1540
  private async pump(): Promise<void> {
1490
1541
  if (this.isClosed() || this.pumping) return;
1491
1542
  this.pumping = true;
1492
- if (this.maintenanceTimer !== undefined) clearTimeout(this.maintenanceTimer);
1493
- this.maintenanceTimer = undefined;
1494
1543
  try {
1495
1544
  do {
1496
- const receiveReady = this.readable;
1497
- this.readable = false;
1498
- 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);
1499
1548
  if (more) {
1500
1549
  // Yield only after actual progress, retaining readiness across the
1501
1550
  // existing batch limits until receive reports no data.
1502
- this.readable = true;
1551
+ this.readable |= 1;
1503
1552
  await yieldToIO();
1504
1553
  }
1505
- } while (!this.closed && this.readable);
1554
+ } while (!this.closed && this.readable !== 0);
1506
1555
  } finally {
1507
1556
  this.pumping = false;
1508
1557
  this.scheduleMaintenance();
@@ -1542,7 +1591,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1542
1591
  operationKind: number,
1543
1592
  pending: ServiceStatefulPendingOperation
1544
1593
  ): MeshOperationId {
1545
- const id = { high: 2n, low: pending.id };
1594
+ const id = { high: ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: pending.id };
1546
1595
  void pending.promise.then(
1547
1596
  (result) => this.enqueueCompletion(id, operationKind, result),
1548
1597
  (error) => this.enqueueCompletion(id, operationKind, requestFailureResult(error))
@@ -1593,7 +1642,7 @@ export class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
1593
1642
  this.completionCount -= 1;
1594
1643
  if (this.completionCount === 0) {
1595
1644
  this.clearCompletions();
1596
- } else if (this.completionHead >= 1024 && this.completionHead * 2 >= this.completions.length) {
1645
+ } else if (shouldCompactBackingArray(this.completionHead, this.completions.length)) {
1597
1646
  this.completions.splice(0, this.completionHead);
1598
1647
  this.completionHead = 0;
1599
1648
  }
@@ -1749,7 +1798,7 @@ class RawServiceSpot implements ServiceSpot {
1749
1798
  this.state,
1750
1799
  routeFence,
1751
1800
  parts,
1752
- options?.timeoutMs ?? 30_000
1801
+ options?.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS
1753
1802
  );
1754
1803
  }
1755
1804
 
@@ -1825,7 +1874,7 @@ function entrySpotFenceVersion(generation: bigint): string {
1825
1874
  }
1826
1875
 
1827
1876
  class RawStreamSessionService implements StreamSessionService {
1828
- private state = 1;
1877
+ private state: StreamSessionRuntimeState = StreamSessionRuntimeState.Created;
1829
1878
  private closed = false;
1830
1879
  private readonly sessionTargets = new Map<string, RoutingId>();
1831
1880
 
@@ -1840,7 +1889,7 @@ class RawStreamSessionService implements StreamSessionService {
1840
1889
 
1841
1890
  start(): void {
1842
1891
  if (this.closed) throw new Error('STREAM session service is closed.');
1843
- this.state = 2;
1892
+ this.state = StreamSessionRuntimeState.Started;
1844
1893
  }
1845
1894
 
1846
1895
  shutdown(_timeoutMs: number): RequestResultValue {
@@ -1851,7 +1900,7 @@ class RawStreamSessionService implements StreamSessionService {
1851
1900
  close(): void {
1852
1901
  if (this.closed) return;
1853
1902
  this.closed = true;
1854
- this.state = 5;
1903
+ this.state = StreamSessionRuntimeState.Closed;
1855
1904
  this.sessionTargets.clear();
1856
1905
  }
1857
1906
 
@@ -1868,7 +1917,11 @@ class RawStreamSessionService implements StreamSessionService {
1868
1917
  };
1869
1918
  }
1870
1919
 
1871
- 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 {
1872
1925
  this.requireStarted();
1873
1926
  return this.observe(
1874
1927
  OperationKind.ActorLookup,
@@ -1879,7 +1932,7 @@ class RawStreamSessionService implements StreamSessionService {
1879
1932
  bindActor(
1880
1933
  sessionRid: RoutingId,
1881
1934
  actor: ServiceActorRef,
1882
- timeoutMs = 30_000,
1935
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS,
1883
1936
  onBindingReplaced?: (
1884
1937
  actorId: string,
1885
1938
  retiredSession: ServiceRetiredBoundSessionRouteFence,
@@ -1899,7 +1952,6 @@ class RawStreamSessionService implements StreamSessionService {
1899
1952
  (targetSessionRid, payloadFrame) =>
1900
1953
  this.deliver(targetSessionRid, actor.actorId, payloadFrame),
1901
1954
  onBindingReplaced,
1902
- serviceSessionBindingIngressPortIfRegistered(this),
1903
1955
  actorAuthority
1904
1956
  )
1905
1957
  );
@@ -1909,7 +1961,7 @@ class RawStreamSessionService implements StreamSessionService {
1909
1961
  sessionRid: RoutingId,
1910
1962
  actor: ServiceActorRef,
1911
1963
  expectedBindingGeneration: bigint,
1912
- timeoutMs = 30_000
1964
+ timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS
1913
1965
  ): MeshOperationId {
1914
1966
  this.requireStarted();
1915
1967
  return this.observe(
@@ -1982,7 +2034,7 @@ class RawStreamSessionService implements StreamSessionService {
1982
2034
  }
1983
2035
 
1984
2036
  private requireStarted(): void {
1985
- if (this.state !== 2 || this.closed) {
2037
+ if (this.state !== StreamSessionRuntimeState.Started || this.closed) {
1986
2038
  throw new Error('STREAM session service is not started.');
1987
2039
  }
1988
2040
  }
@@ -2224,7 +2276,7 @@ function decodeMultipartRecord(
2224
2276
  };
2225
2277
  }
2226
2278
  const header = record.parts[0]!;
2227
- const command = header[3]!;
2279
+ const command = header[SERVICE_WIRE_COMMAND_OFFSET]!;
2228
2280
  const payloadFrame = record.parts[1]!;
2229
2281
  const application = decodeApplicationEnvelope(payloadFrame);
2230
2282
  const channelName = record.owner.startsWith('channel:')
@@ -2235,11 +2287,11 @@ function decodeMultipartRecord(
2235
2287
  ? { high: 0n, low: 0n }
2236
2288
  : { high: 1n, low: record.correlation };
2237
2289
  const kind =
2238
- command === 16
2290
+ command === ServiceWireCommand.nodeSend
2239
2291
  ? ReceiveKind.NodeSend
2240
- : command === 17
2292
+ : command === ServiceWireCommand.nodeRequest
2241
2293
  ? ReceiveKind.NodeRequest
2242
- : command === 18
2294
+ : command === ServiceWireCommand.channelSend
2243
2295
  ? ReceiveKind.ChannelSend
2244
2296
  : ReceiveKind.ChannelRequest;
2245
2297
  const operationKind =
@@ -2296,7 +2348,7 @@ function decodeStatefulRecord(
2296
2348
  const operationId =
2297
2349
  record.correlation === undefined
2298
2350
  ? { high: 0n, low: 0n }
2299
- : { high: 2n, low: record.correlation };
2351
+ : { high: ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: record.correlation };
2300
2352
  const ingressLifecycle = receiveIngressLifecycle(record);
2301
2353
  return {
2302
2354
  kind: stateful.receiveKind,
@@ -2328,12 +2380,18 @@ function decodeStatefulRecord(
2328
2380
  : decodeMultipart(application.payload),
2329
2381
  ...(stateful.isPending === undefined ? {} : { isPending: stateful.isPending }),
2330
2382
  ...(stateful.deadlineUnixMs === undefined ? {} : { deadlineUnixMs: stateful.deadlineUnixMs }),
2383
+ ...(stateful.activationRecord === undefined
2384
+ ? {}
2385
+ : { activationRecord: stateful.activationRecord }),
2331
2386
  ...(stateful.messageFollowOrigin === undefined
2332
2387
  ? {}
2333
2388
  : { messageFollowOrigin: stateful.messageFollowOrigin }),
2334
2389
  ...(stateful.onTerminalCompletion === undefined
2335
2390
  ? {}
2336
2391
  : { onTerminalCompletion: stateful.onTerminalCompletion }),
2392
+ ...(stateful.onHandlerTurnStarted === undefined
2393
+ ? {}
2394
+ : { onHandlerTurnStarted: stateful.onHandlerTurnStarted }),
2337
2395
  reply(parts) {
2338
2396
  if (stateful.reply === undefined) return SubmitResult.InvalidState;
2339
2397
  return stateful.reply(RequestResult.Ok, 0, encodeMultipart(parts))
@@ -2441,7 +2499,7 @@ function readyDomain(domain: ServiceMailboxDomain): number {
2441
2499
  /**
2442
2500
  * The one classification of a failed node/channel/stateful request into its
2443
2501
  * completion terminal. A binding REQUEST result is Core's decision and is kept
2444
- * as is; a submit failure retains its Core meaning at the request boundary.
2502
+ * as is; a submit failure is classified from its submission or completion phase.
2445
2503
  * A reply that could not be decoded is a protocol
2446
2504
  * failure (spec 32-framework-error-model:91-92). The failure code is a wire
2447
2505
  * code, so a Core result carries 0.
@@ -2451,14 +2509,19 @@ export function requestFailureResult(error: unknown): RawServiceRequestResult {
2451
2509
  if (isZLinkBackendResultError(failure)) {
2452
2510
  return {
2453
2511
  terminalResult:
2454
- failure.operation === 'request' ? failure.result : submitFailureTerminal(failure.result),
2512
+ failure.operation === 'request'
2513
+ ? failure.result
2514
+ : submitToRequestResult(failure.result, failure.phase),
2455
2515
  failureCode: 0
2456
2516
  };
2457
2517
  }
2458
2518
  // requestProtocolError(16): the schema terminal-failure-integrity rule
2459
2519
  // forbids a typed terminal (104) with failure none.
2460
2520
  if (failure instanceof ServiceWireProtocolError) {
2461
- return { terminalResult: RequestResult.ProtocolError, failureCode: 16 };
2521
+ return {
2522
+ terminalResult: RequestResult.ProtocolError,
2523
+ failureCode: ServiceWireFrameworkErrorCode.requestProtocolError
2524
+ };
2462
2525
  }
2463
2526
  if (failure instanceof ZLinkFrameworkException) {
2464
2527
  return internalFrameworkWireReply(failure);
@@ -2469,32 +2532,10 @@ export function requestFailureResult(error: unknown): RawServiceRequestResult {
2469
2532
  if (failure instanceof OperationCancelledError) {
2470
2533
  return { terminalResult: RequestResult.NotConnected, failureCode: 0 };
2471
2534
  }
2472
- return { terminalResult: RequestResult.InternalError, failureCode: 17 };
2473
- }
2474
-
2475
- function submitFailureTerminal(result: number): number {
2476
- switch (result) {
2477
- case SubmitResult.Backpressured:
2478
- return RequestResult.Backpressured;
2479
- case SubmitResult.NotConnected:
2480
- return RequestResult.NotConnected;
2481
- case SubmitResult.NotFound:
2482
- return RequestResult.NotFound;
2483
- case SubmitResult.NotAdmitted:
2484
- return RequestResult.Rejected;
2485
- case SubmitResult.InvalidHandle:
2486
- case SubmitResult.InvalidArgument:
2487
- case SubmitResult.ThreadViolation:
2488
- return RequestResult.InvalidArgument;
2489
- case SubmitResult.InvalidState:
2490
- return RequestResult.InvalidState;
2491
- case SubmitResult.NotSupported:
2492
- return RequestResult.NotSupported;
2493
- case SubmitResult.Terminated:
2494
- return RequestResult.Terminated;
2495
- default:
2496
- return RequestResult.InternalError;
2497
- }
2535
+ return {
2536
+ terminalResult: RequestResult.InternalError,
2537
+ failureCode: ServiceWireFrameworkErrorCode.requestFailed
2538
+ };
2498
2539
  }
2499
2540
 
2500
2541
  function encodeMultipart(parts: MessageLike | readonly MessageLike[]) {
@@ -2533,7 +2574,10 @@ function encodeMultipartApplicationFrame(parts: MessageLike | readonly MessageLi
2533
2574
 
2534
2575
  function decodeApplicationEnvelope(frame: Uint8Array) {
2535
2576
  const bytes = Buffer.from(frame.buffer, frame.byteOffset, frame.byteLength);
2536
- if (bytes.length < 11 || bytes[0] !== 1) {
2577
+ if (
2578
+ bytes.length < APPLICATION_PAYLOAD_MINIMUM_FIELD_BYTES ||
2579
+ bytes[0] !== APPLICATION_PAYLOAD_VERSION
2580
+ ) {
2537
2581
  throw new ServiceWireProtocolError('Invalid application envelope.');
2538
2582
  }
2539
2583
  const bodyLength = bytes.readUInt32BE(1);
@@ -2631,22 +2675,35 @@ function requireRawReadyBatch(batch: ReadyBatch): RawReadyBatch {
2631
2675
  return batch;
2632
2676
  }
2633
2677
 
2634
- function stateCode(state: ServiceNodeDescriptor['state']): number {
2635
- 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
+ }
2636
2693
  }
2637
2694
 
2638
2695
  function peerStateCode(state: ServiceNodeDescriptor['state']): number {
2639
2696
  switch (state) {
2640
2697
  case 'preparing':
2641
- return 2;
2698
+ return MeshPeerRuntimeState.Preparing;
2642
2699
  case 'serving':
2643
2700
  case 'retiring':
2644
- return 3;
2701
+ return MeshPeerRuntimeState.Serving;
2645
2702
  case 'draining':
2646
- return 4;
2703
+ return MeshPeerRuntimeState.Draining;
2647
2704
  case 'stopped':
2648
2705
  case 'error':
2649
- return 5;
2706
+ return MeshPeerRuntimeState.Closed;
2650
2707
  }
2651
2708
  }
2652
2709
 
@@ -2659,15 +2716,15 @@ function createLifecycleGeneration(): bigint {
2659
2716
  }
2660
2717
 
2661
2718
  function requirePositivePlacementValue(value: number, name: string): number {
2662
- if (!Number.isSafeInteger(value) || value <= 0 || value > 0x7fff_ffff) {
2663
- 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}.`);
2664
2721
  }
2665
2722
  return value;
2666
2723
  }
2667
2724
 
2668
2725
  function requirePublicWeight(value: number, name: string): number {
2669
- if (!Number.isInteger(value) || value < 0 || value > 10_000) {
2670
- 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}.`);
2671
2728
  }
2672
2729
  return value;
2673
2730
  }