@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,40 +1,24 @@
1
- import type {
2
- ServiceActorRef,
3
- ServiceSessionBinding,
4
- ServiceSpotRef
5
- } from './service-stateful-registry';
6
- import { operationRequiresReply } from './service-runtime-contracts';
7
- import { ServiceWireProtocolError } from './service-wire-m6a-codec';
1
+ import { UINT64_MAX, ZlinkStreamContentType } from '@zlink-systems/stream-wire';
2
+ import { RELOCATION_STATE_CHUNK_DATA_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
8
3
  import { isCanonicalWireReplyTerminal } from '../framework-errors-internal';
9
- import { routingIdsEqual } from '../routing-id';
10
- import {
11
- SERVICE_WIRE_MAGIC,
12
- SERVICE_WIRE_MAJOR,
13
- ServiceWireCommand,
14
- ServiceWireFlag
15
- } from './service-wire-constants.generated';
16
- import {
17
- decodeCanonicalServiceWireText,
18
- decodeServiceWireRoutingId,
19
- encodeCanonicalServiceWireText,
20
- encodeServiceWireRoutingId
21
- } from './service-wire-binary-primitives';
22
4
  import {
23
5
  decodeActorRequestCommand,
24
6
  decodeActorSendCommand,
25
7
  decodeMetadataFrame,
8
+ decodeInstanceRouteV1,
26
9
  decodeSpotRequestCommand,
27
10
  decodeSpotSendCommand,
28
11
  encodeActorRequestCommand,
29
12
  encodeActorSendCommand,
30
13
  encodeApplicationPayloadEnvelopeV1,
14
+ encodeInstanceRouteV1,
31
15
  encodeSpotRequestCommand,
32
16
  encodeSpotSendCommand,
33
17
  type ServiceWireDecoderContext
34
18
  } from '../protocol/service_wire_codec.generated';
35
19
  import {
36
- decodeActorCreate49 as decodeGeneratedActorCreate49,
37
20
  decodeActorJoin28,
21
+ decodeActorCreate49 as decodeGeneratedActorCreate49,
38
22
  decodeRelocationCutover34 as decodeGeneratedRelocationCutover34,
39
23
  decodeRelocationData31 as decodeGeneratedRelocationData31,
40
24
  decodeRelocationFailed53 as decodeGeneratedRelocationFailed53,
@@ -63,20 +47,45 @@ import {
63
47
  encodeUserSpotClose48 as encodeGeneratedUserSpotClose48,
64
48
  encodeUserSpotCreate47 as encodeGeneratedUserSpotCreate47,
65
49
  type ActorCreate49 as GeneratedActorCreate49,
50
+ type ServiceWireCoordinatorFence as GeneratedCoordinatorFence,
66
51
  type RelocationObjectIdentity as GeneratedRelocationObjectIdentity,
67
52
  type ReplyRelay33 as GeneratedReplyRelay33,
68
- type ServiceWireCoordinatorFence as GeneratedCoordinatorFence,
69
53
  type ServiceWireRequestSourceFence as GeneratedRequestSourceFence,
70
54
  type ServiceWireRouteFence as GeneratedRouteFence,
71
- type ServiceWireTargetFence as GeneratedTargetFence,
72
55
  type SessionRelocationRoute44 as GeneratedSessionRelocationRoute44,
73
56
  type SessionRelocationSeal42 as GeneratedSessionRelocationSeal42,
74
57
  type SessionRelocationSealed43 as GeneratedSessionRelocationSealed43,
58
+ type ServiceWireTargetFence as GeneratedTargetFence,
75
59
  type UserSpotClose48 as GeneratedUserSpotClose48,
76
60
  type UserSpotCreate47 as GeneratedUserSpotCreate47
77
61
  } from '../protocol/service_wire_pilot_codec.generated';
62
+ import { routingIdsEqual } from '../routing-id';
63
+ import { operationRequiresReply } from './service-runtime-contracts';
64
+ import type {
65
+ ServiceActorRef,
66
+ ServiceSessionBinding,
67
+ ServiceSpotRef
68
+ } from './service-stateful-registry';
69
+ import {
70
+ decodeCanonicalServiceWireText,
71
+ decodeServiceWireRoutingId,
72
+ encodeCanonicalServiceWireText,
73
+ encodeServiceWireRoutingId,
74
+ SERVICE_WIRE_PREFIX_SIZE
75
+ } from './service-wire-binary-primitives';
76
+ import {
77
+ SERVICE_WIRE_MAGIC,
78
+ SERVICE_WIRE_MAJOR,
79
+ ServiceWireCommand,
80
+ ServiceWireFlag
81
+ } from './service-wire-constants.generated';
82
+ import { APPLICATION_PAYLOAD_VERSION, ServiceWireProtocolError } from './service-wire-m6a-codec';
83
+ const MESSAGE_FOLLOW_MAX_BODY_BYTES = 16 * 1024 * 1024;
84
+ const MESSAGE_FOLLOW_VERSION = 1;
85
+ const INSTANCE_ROUTE_VERSION = 1;
86
+ const INSTANCE_ACTIVATION_VERSION = 2;
78
87
 
79
- const PREFIX_SIZE = 5;
88
+ const PREFIX_SIZE = SERVICE_WIRE_PREFIX_SIZE;
80
89
  const MAGIC_0 = SERVICE_WIRE_MAGIC[0];
81
90
  const MAGIC_1 = SERVICE_WIRE_MAGIC[1];
82
91
  const MAJOR = SERVICE_WIRE_MAJOR;
@@ -161,7 +170,7 @@ export type ServiceWireRelocationObject =
161
170
  /** Shared CRC-32C wire bounds for the direct relocation payload transfer. */
162
171
  export const RELOCATION_PAYLOAD_TOTAL_LENGTH_MAX = 274_877_906_944n;
163
172
  export const RELOCATION_PAYLOAD_CHUNK_COUNT_MAX = 4096;
164
- export const RELOCATION_STATE_CHUNK_DATA_MAX_BYTES = 67_108_864;
173
+ export { RELOCATION_STATE_CHUNK_DATA_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
165
174
 
166
175
  interface ServiceWireRelocationBase {
167
176
  readonly relocation: ServiceWireOperationId;
@@ -1086,6 +1095,7 @@ export type ServiceStatefulWireRecord =
1086
1095
  | {
1087
1096
  readonly kind: 'instanceSpot';
1088
1097
  readonly activation: 'ready';
1098
+ readonly instanceIntent: boolean;
1089
1099
  readonly route: ServiceInstanceRouteFence;
1090
1100
  readonly sourceNodeGeneration: bigint;
1091
1101
  readonly sourceNodeRid: string;
@@ -1161,7 +1171,7 @@ const STATEFUL_MESSAGE_CONTEXT: ServiceWireDecoderContext = {
1161
1171
  };
1162
1172
  const STATEFUL_HEADER_PAYLOAD = {
1163
1173
  packetName: 'wire',
1164
- contentType: 'application/json',
1174
+ contentType: ZlinkStreamContentType.Json,
1165
1175
  payload: Buffer.from('{}')
1166
1176
  };
1167
1177
 
@@ -1384,17 +1394,25 @@ export function encodeInstanceSpotHeader(
1384
1394
  operationKind: 'send' | 'request',
1385
1395
  operation: { readonly high: bigint; readonly low: bigint },
1386
1396
  replyRouteId?: bigint,
1387
- hasMetadata = false
1397
+ hasMetadata = false,
1398
+ instanceIntent = false
1388
1399
  ): Buffer {
1389
- const routeBody = concat(
1390
- rid(route.targetNodeRid, 'targetNodeRid'),
1391
- u64(route.targetNodeGeneration),
1392
- rid(route.targetSpotId, 'targetSpotId'),
1393
- u64(route.objectGeneration),
1394
- text8(route.ownerId, 'ownerId'),
1395
- u64(route.authorityOwnerGeneration),
1396
- u64(route.leaseGeneration),
1397
- text16(route.storeVersion, 'storeVersion')
1400
+ const encodedRoute = encodeInstanceRouteV1(
1401
+ {
1402
+ routeKind: 'ready',
1403
+ targetNodeRid: toGeneratedRoutingId(route.targetNodeRid, 'targetNodeRid'),
1404
+ targetNodeGeneration: route.targetNodeGeneration,
1405
+ targetSpotId: route.targetSpotId,
1406
+ authority: {
1407
+ objectGeneration: route.objectGeneration,
1408
+ ownerId: route.ownerId,
1409
+ authorityOwnerGeneration: route.authorityOwnerGeneration,
1410
+ leaseGeneration: route.leaseGeneration,
1411
+ storeVersion: route.storeVersion
1412
+ },
1413
+ instanceIntent: instanceIntent ? 'true' : 'false'
1414
+ },
1415
+ STATEFUL_MESSAGE_CONTEXT
1398
1416
  );
1399
1417
  if (
1400
1418
  operationKind === 'send' &&
@@ -1407,9 +1425,7 @@ export function encodeInstanceSpotHeader(
1407
1425
  }
1408
1426
  return concat(
1409
1427
  prefix(M6bServiceWireCommand.instanceSpot, hasMetadata ? M6bServiceWireFlag.metadata : 0),
1410
- Buffer.of(1),
1411
- u16(routeBody.byteLength),
1412
- routeBody,
1428
+ encodedRoute,
1413
1429
  u64Any(sourceNodeGeneration),
1414
1430
  rid(sourceNodeRid, 'sourceNodeRid'),
1415
1431
  optionalRid(sourceSpotId),
@@ -1449,7 +1465,7 @@ export function encodeInstanceSpotActivationHeader(
1449
1465
  );
1450
1466
  return concat(
1451
1467
  prefix(M6bServiceWireCommand.instanceSpot, hasMetadata ? M6bServiceWireFlag.metadata : 0),
1452
- Buffer.of(2),
1468
+ Buffer.of(INSTANCE_ACTIVATION_VERSION),
1453
1469
  u16(targetBody.byteLength),
1454
1470
  targetBody,
1455
1471
  u64Any(sourceNodeGeneration),
@@ -1493,12 +1509,14 @@ export function encodeMessageFollowHeader(
1493
1509
  u64Any(record.originalOperation.low),
1494
1510
  u64Any(record.originalReplyRouteId)
1495
1511
  );
1496
- if (body.byteLength > 16 * 1024 * 1024) {
1497
- throw new RangeError('Message Follow body exceeds 16 MiB.');
1512
+ if (body.byteLength > MESSAGE_FOLLOW_MAX_BODY_BYTES) {
1513
+ throw new RangeError(
1514
+ `Message Follow body exceeds ${MESSAGE_FOLLOW_MAX_BODY_BYTES / (1024 * 1024)} MiB.`
1515
+ );
1498
1516
  }
1499
1517
  return concat(
1500
1518
  prefix(M6bServiceWireCommand.messageFollow),
1501
- Buffer.of(1),
1519
+ Buffer.of(MESSAGE_FOLLOW_VERSION),
1502
1520
  u32(body.byteLength, 'messageFollow.length'),
1503
1521
  body
1504
1522
  );
@@ -1724,34 +1742,53 @@ export function decodeStatefulHeader(
1724
1742
  if ((command.flags & ~M6bServiceWireFlag.metadata) !== 0) {
1725
1743
  fail(`Invalid command flags '${command.flags}'.`);
1726
1744
  }
1745
+ const routeStart = reader.offset;
1727
1746
  const version = reader.u8('instanceRoute.version');
1728
- if (version !== 1 && version !== 2) fail('Unsupported Instance route version.');
1747
+ if (version !== INSTANCE_ROUTE_VERSION && version !== INSTANCE_ACTIVATION_VERSION)
1748
+ fail('Unsupported Instance route version.');
1729
1749
  const routeLength = reader.u16('instanceRoute.length');
1730
1750
  const routeEnd = reader.offset + routeLength;
1731
- const commonTarget = {
1732
- targetNodeRid: reader.rid('targetNodeRid'),
1733
- targetNodeGeneration: reader.nonZeroU64('targetNodeGeneration'),
1734
- targetSpotId: reader.rid('targetSpotId')
1735
- };
1751
+ const generatedReadyRoute =
1752
+ version === INSTANCE_ROUTE_VERSION
1753
+ ? decodeInstanceRouteV1(
1754
+ reader.bytes.subarray(routeStart, routeEnd),
1755
+ STATEFUL_MESSAGE_CONTEXT
1756
+ )
1757
+ : undefined;
1758
+ if (generatedReadyRoute !== undefined && generatedReadyRoute.routeKind !== 'ready') {
1759
+ fail('Invalid Ready Instance route kind.');
1760
+ }
1761
+ const commonTarget =
1762
+ generatedReadyRoute?.routeKind === 'ready'
1763
+ ? {
1764
+ targetNodeRid: fromGeneratedRoutingId(
1765
+ generatedReadyRoute.targetNodeRid,
1766
+ 'targetNodeRid'
1767
+ ),
1768
+ targetNodeGeneration: generatedReadyRoute.targetNodeGeneration,
1769
+ targetSpotId: generatedReadyRoute.targetSpotId
1770
+ }
1771
+ : {
1772
+ targetNodeRid: reader.rid('targetNodeRid'),
1773
+ targetNodeGeneration: reader.nonZeroU64('targetNodeGeneration'),
1774
+ targetSpotId: reader.rid('targetSpotId')
1775
+ };
1736
1776
  const route: ServiceInstanceRouteFence | undefined =
1737
- version === 1
1777
+ generatedReadyRoute?.routeKind === 'ready'
1738
1778
  ? {
1739
1779
  ...commonTarget,
1740
- objectGeneration: reader.nonZeroU64('objectGeneration'),
1741
- ownerId: reader.text8('ownerId'),
1742
- authorityOwnerGeneration: reader.nonZeroU64('authorityOwnerGeneration'),
1743
- leaseGeneration: reader.nonZeroU64('leaseGeneration'),
1744
- storeVersion: reader.text16('storeVersion')
1780
+ ...generatedReadyRoute.authority
1745
1781
  }
1746
1782
  : undefined;
1747
1783
  const target: ServiceInstanceActivationTarget | undefined =
1748
- version === 2
1784
+ version === INSTANCE_ACTIVATION_VERSION
1749
1785
  ? {
1750
1786
  ...commonTarget,
1751
1787
  stableType: reader.text16('stableType'),
1752
1788
  descriptorVersion: reader.text16('descriptorVersion')
1753
1789
  }
1754
1790
  : undefined;
1791
+ if (generatedReadyRoute !== undefined) reader.offset = routeEnd;
1755
1792
  if (reader.offset !== routeEnd) fail('Invalid Instance route body length.');
1756
1793
  const sourceNodeGeneration = reader.nonZeroU64('sourceNodeGeneration');
1757
1794
  const sourceNodeRid = reader.rid('sourceNodeRid');
@@ -1764,16 +1801,21 @@ export function decodeStatefulHeader(
1764
1801
  };
1765
1802
  const operationKind = operationValue === 1 ? ('send' as const) : ('request' as const);
1766
1803
  if (
1767
- version === 1 &&
1804
+ version === INSTANCE_ROUTE_VERSION &&
1768
1805
  ((operationKind === 'send' && (operation.high !== 0n || operation.low !== 0n)) ||
1769
1806
  (operationKind === 'request' && operation.high === 0n && operation.low === 0n))
1770
1807
  ) {
1771
1808
  fail('Invalid Instance operation identity.');
1772
1809
  }
1773
- if (version === 2 && operation.high === 0n && operation.low === 0n) {
1810
+ if (
1811
+ version === INSTANCE_ACTIVATION_VERSION &&
1812
+ operation.high === 0n &&
1813
+ operation.low === 0n
1814
+ ) {
1774
1815
  fail('Instance activation requires a non-zero operation identity.');
1775
1816
  }
1776
- const deadlineUnixMs = version === 2 ? reader.nonZeroU64('deadlineUnixMs') : undefined;
1817
+ const deadlineUnixMs =
1818
+ version === INSTANCE_ACTIVATION_VERSION ? reader.nonZeroU64('deadlineUnixMs') : undefined;
1777
1819
  const replyRouteId =
1778
1820
  operationKind === 'request' ? reader.nonZeroU64('replyRouteId') : undefined;
1779
1821
  reader.end();
@@ -1786,8 +1828,13 @@ export function decodeStatefulHeader(
1786
1828
  operation,
1787
1829
  ...(replyRouteId === undefined ? {} : { replyRouteId })
1788
1830
  };
1789
- return version === 1
1790
- ? { ...common, activation: 'ready', route: route! }
1831
+ return version === INSTANCE_ROUTE_VERSION
1832
+ ? {
1833
+ ...common,
1834
+ activation: 'ready',
1835
+ route: route!,
1836
+ instanceIntent: generatedReadyRoute!.instanceIntent === 'true'
1837
+ }
1791
1838
  : {
1792
1839
  ...common,
1793
1840
  activation: 'missing',
@@ -1797,12 +1844,12 @@ export function decodeStatefulHeader(
1797
1844
  }
1798
1845
  case M6bServiceWireCommand.messageFollow: {
1799
1846
  requireFlags(command.flags, 0);
1800
- if (reader.u8('messageFollow.version') !== 1) {
1847
+ if (reader.u8('messageFollow.version') !== MESSAGE_FOLLOW_VERSION) {
1801
1848
  fail('Unsupported Message Follow version.');
1802
1849
  }
1803
1850
  const length = reader.u32('messageFollow.length');
1804
1851
  const end = reader.offset + length;
1805
- if (length > 16 * 1024 * 1024 || end > reader.bytes.byteLength) {
1852
+ if (length > MESSAGE_FOLLOW_MAX_BODY_BYTES || end > reader.bytes.byteLength) {
1806
1853
  fail('Invalid Message Follow body length.');
1807
1854
  }
1808
1855
  const record: ServiceMessageFollowRecord = {
@@ -2231,7 +2278,11 @@ function applicationPayload(value: NonNullable<ServiceMaintenanceReplyRelay['pay
2231
2278
  u32(value.bytes.byteLength, 'payload.length'),
2232
2279
  value.bytes
2233
2280
  );
2234
- return concat(Buffer.of(1), u32(body.byteLength, 'applicationPayload.length'), body);
2281
+ return concat(
2282
+ Buffer.of(APPLICATION_PAYLOAD_VERSION),
2283
+ u32(body.byteLength, 'applicationPayload.length'),
2284
+ body
2285
+ );
2235
2286
  }
2236
2287
 
2237
2288
  function prefix(command: number, flags = 0): Buffer {
@@ -2316,7 +2367,7 @@ function validateMessageFollowRecord(
2316
2367
  if (value.originalOperation.high === 0n && value.originalOperation.low === 0n) {
2317
2368
  invalid('Message Follow originalOperation must not be zero.');
2318
2369
  }
2319
- if (value.originalReplyRouteId < 0n || value.originalReplyRouteId > 0xffff_ffff_ffff_ffffn) {
2370
+ if (value.originalReplyRouteId < 0n || value.originalReplyRouteId > UINT64_MAX) {
2320
2371
  invalid('Message Follow originalReplyRouteId must be a u64.');
2321
2372
  }
2322
2373
  }
@@ -2376,7 +2427,7 @@ function u64(value: bigint): Buffer {
2376
2427
  }
2377
2428
 
2378
2429
  function u64Any(value: bigint): Buffer {
2379
- if (value < 0n || value > 0xffff_ffff_ffff_ffffn) {
2430
+ if (value < 0n || value > UINT64_MAX) {
2380
2431
  throw new RangeError('u64 value is out of range.');
2381
2432
  }
2382
2433
  const result = Buffer.alloc(8);
@@ -2385,7 +2436,7 @@ function u64Any(value: bigint): Buffer {
2385
2436
  }
2386
2437
 
2387
2438
  function requirePositive(value: bigint | undefined, name: string): bigint {
2388
- if (value === undefined || value < 1n || value > 0xffff_ffff_ffff_ffffn) {
2439
+ if (value === undefined || value < 1n || value > UINT64_MAX) {
2389
2440
  throw new RangeError(`${name} must be a non-zero u64.`);
2390
2441
  }
2391
2442
  return value;
@@ -2909,7 +2960,7 @@ class FrozenReader {
2909
2960
  }
2910
2961
 
2911
2962
  applicationPayload(): NonNullable<ServiceMaintenanceReplyRelay['payload']> {
2912
- if (this.u8('applicationPayload.version') !== 1) {
2963
+ if (this.u8('applicationPayload.version') !== APPLICATION_PAYLOAD_VERSION) {
2913
2964
  fail('Application payload envelope version must be one.');
2914
2965
  }
2915
2966
  const body = this.body32('application payload');
@@ -3066,24 +3117,21 @@ class FrozenReader {
3066
3117
  }
3067
3118
 
3068
3119
  private instanceRoute(): void {
3120
+ const start = this.offset;
3069
3121
  const kind = this.u8('instanceRouteKind');
3070
3122
  if (kind < 1 || kind > 2) fail('Invalid Instance route kind.');
3071
3123
  const body = this.body16('Instance route');
3124
+ if (kind === INSTANCE_ROUTE_VERSION) {
3125
+ decodeInstanceRouteV1(this.bytes.subarray(start, this.offset), STATEFUL_MESSAGE_CONTEXT);
3126
+ return;
3127
+ }
3072
3128
  body.rid8('targetNodeRid');
3073
3129
  body.nonZeroU64('targetNodeGeneration');
3074
3130
  body.text8('targetSpotId');
3075
- if (kind === 1) {
3076
- body.nonZeroU64('objectGeneration');
3077
- body.text8('ownerId');
3078
- body.nonZeroU64('authorityOwnerGeneration');
3079
- body.nonZeroU64('leaseGeneration');
3080
- body.text16('storeVersion');
3081
- } else {
3082
- body.text8('targetMeshName');
3083
- body.text8('stableType');
3084
- body.text8('targetDescriptorVersion');
3085
- body.nonZeroU64('deadlineUnixMs');
3086
- }
3131
+ body.text8('targetMeshName');
3132
+ body.text8('stableType');
3133
+ body.text8('targetDescriptorVersion');
3134
+ body.nonZeroU64('deadlineUnixMs');
3087
3135
  body.end('Instance route');
3088
3136
  }
3089
3137
 
@@ -1,3 +1,10 @@
1
+ import { ZLINK_MAX_IDENTITY_TEXT_BYTES } from '../../contracts/Common/CoreTypes';
2
+ import {
3
+ ZLINK_MAX_PUBLIC_WEIGHT,
4
+ isValidCapacity,
5
+ isValidPositiveCapacity,
6
+ isValidPublicWeight
7
+ } from '../../contracts/Configuration/RegistrationBuilderPolicy';
1
8
  import { descriptorConnectionNotRequired } from './route-mesh-connection-policy';
2
9
  import { SmoothWeightedSelection } from './service-weighted-selection';
3
10
  import { SERVICE_WIRE_REQUIRED_CAPABILITY } from './service-wire-constants.generated';
@@ -51,8 +58,6 @@ export type PeerAdmissionResult =
51
58
  export type ServiceObjectPlacementStatus = 'available' | 'unsupported' | 'capacity' | 'unavailable';
52
59
 
53
60
  const REQUIRED_CAPABILITY = SERVICE_WIRE_REQUIRED_CAPABILITY;
54
- const MAX_CAPACITY = 0x7fff_ffff;
55
- const MAX_PUBLIC_WEIGHT = 10_000;
56
61
 
57
62
  interface ServiceSelectionCacheEntry {
58
63
  readonly selection: SmoothWeightedSelection<unknown>;
@@ -207,21 +212,6 @@ export class ServiceTopologyRegistry {
207
212
  this.rebuildSelections();
208
213
  }
209
214
 
210
- markNotRequired(descriptor: ServiceNodeDescriptor): void {
211
- validateDescriptor(descriptor);
212
- if (
213
- descriptor.meshName !== this.local.meshName ||
214
- descriptor.nodeRoutingId === this.local.nodeRoutingId ||
215
- !descriptorConnectionNotRequired(this.local, descriptor)
216
- ) {
217
- return;
218
- }
219
- this.peersByRid.delete(descriptor.nodeRoutingId);
220
- this.remember(descriptor);
221
- this.notRequiredByRid.set(descriptor.nodeRoutingId, cloneDescriptor(descriptor));
222
- this.rebuildSelections();
223
- }
224
-
225
215
  forgetNotRequired(nodeRoutingId: string): void {
226
216
  if (this.notRequiredByRid.delete(nodeRoutingId)) this.rebuildSelections();
227
217
  }
@@ -235,8 +225,12 @@ export class ServiceTopologyRegistry {
235
225
 
236
226
  hasKnownChannelTarget(channelName: string): boolean {
237
227
  requireText(channelName, 'channelName');
238
- return [this.local, ...this.knownByRid.values()].some(
239
- (descriptor) => selectableChannel(descriptor, channelName) !== undefined
228
+ return [...this.knownByRid.values()].some(
229
+ (descriptor) =>
230
+ (descriptor.state === 'serving' ||
231
+ descriptor.state === 'retiring' ||
232
+ descriptor.state === 'draining') &&
233
+ findChannel(descriptor, channelName) !== undefined
240
234
  );
241
235
  }
242
236
 
@@ -259,12 +253,8 @@ export class ServiceTopologyRegistry {
259
253
  requireText(channelName, 'channelName');
260
254
  return this.selectWeightedCycle(
261
255
  `channel:${channelName}`,
262
- () => {
263
- const local: AdmittedServicePeer = {
264
- descriptor: cloneDescriptor(this.local),
265
- connectionId: 'local'
266
- };
267
- return [local, ...this.peersByRid.values()]
256
+ () =>
257
+ [...this.peersByRid.values()]
268
258
  .map((peer) => ({
269
259
  peer: clonePeer(peer),
270
260
  channel: selectableChannel(peer.descriptor, channelName)
@@ -276,8 +266,7 @@ export class ServiceTopologyRegistry {
276
266
  peer: AdmittedServicePeer;
277
267
  channel: ServiceChannelDescriptor;
278
268
  } => value.channel !== undefined
279
- );
280
- },
269
+ ),
281
270
  (value) => value.channel.weight,
282
271
  (value) => value.peer.descriptor.nodeRoutingId,
283
272
  (left, right) =>
@@ -427,8 +416,10 @@ export function validateDescriptor(descriptor: ServiceNodeDescriptor): void {
427
416
  }
428
417
  if (descriptor.maintenanceWave !== undefined) {
429
418
  requireText(descriptor.maintenanceWave, 'maintenanceWave');
430
- if (Buffer.byteLength(descriptor.maintenanceWave, 'utf8') > 255) {
431
- throw new RangeError('maintenanceWave must not exceed 255 UTF-8 bytes.');
419
+ if (Buffer.byteLength(descriptor.maintenanceWave, 'utf8') > ZLINK_MAX_IDENTITY_TEXT_BYTES) {
420
+ throw new RangeError(
421
+ `maintenanceWave must not exceed ${ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes.`
422
+ );
432
423
  }
433
424
  }
434
425
  validatePublicWeight(descriptor.placementWeight, 'placementWeight');
@@ -465,14 +456,14 @@ export function validateDescriptor(descriptor: ServiceNodeDescriptor): void {
465
456
  }
466
457
 
467
458
  function validateCapacity(value: number, allowZero: boolean, field: string): void {
468
- if (!Number.isInteger(value) || value < (allowZero ? 0 : 1) || value > MAX_CAPACITY) {
459
+ if (!(allowZero ? isValidCapacity(value) : isValidPositiveCapacity(value))) {
469
460
  throw new RangeError(`${field} is outside its supported range.`);
470
461
  }
471
462
  }
472
463
 
473
464
  function validatePublicWeight(value: number, field: string): void {
474
- if (!Number.isInteger(value) || value < 0 || value > MAX_PUBLIC_WEIGHT) {
475
- throw new RangeError(`${field} must be an integer in 0..10000.`);
465
+ if (!isValidPublicWeight(value)) {
466
+ throw new RangeError(`${field} must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`);
476
467
  }
477
468
  }
478
469
 
@@ -1,5 +1,11 @@
1
1
  import type { RoutingId } from '../../contracts';
2
2
  import { decodeRoutingId, encodeRoutingIdStorageHex } from '../routing-id';
3
+ export const SERVICE_WIRE_MAJOR_OFFSET = 2;
4
+ export const SERVICE_WIRE_COMMAND_OFFSET = SERVICE_WIRE_MAJOR_OFFSET + 1;
5
+ export const SERVICE_WIRE_FLAGS_OFFSET = SERVICE_WIRE_COMMAND_OFFSET + 1;
6
+ export const SERVICE_WIRE_PREFIX_SIZE = SERVICE_WIRE_FLAGS_OFFSET + 1;
7
+
8
+ export const SERVICE_WIRE_TEXT8_MAX_BYTES = 255;
3
9
 
4
10
  export type ServiceWireInvalid = (message: string) => never;
5
11
 
@@ -1,4 +1,11 @@
1
- const PREFIX_SIZE = 5;
1
+ import { UINT64_MAX } from '@zlink-systems/stream-wire';
2
+ import {
3
+ SERVICE_WIRE_COMMAND_OFFSET,
4
+ SERVICE_WIRE_FLAGS_OFFSET,
5
+ SERVICE_WIRE_MAJOR_OFFSET,
6
+ SERVICE_WIRE_PREFIX_SIZE
7
+ } from './service-wire-binary-primitives';
8
+ const PREFIX_SIZE = SERVICE_WIRE_PREFIX_SIZE;
2
9
  const LIVENESS_FRAME_SIZE = PREFIX_SIZE + 8;
3
10
 
4
11
  export interface ServiceWireDefinition {
@@ -46,16 +53,16 @@ export function createServiceWireCodec(definition: ServiceWireDefinition): Servi
46
53
  ) {
47
54
  throw new RangeError('command must be a liveness command.');
48
55
  }
49
- if (record.probeId <= 0n || record.probeId > 0xffff_ffff_ffff_ffffn) {
56
+ if (record.probeId <= 0n || record.probeId > UINT64_MAX) {
50
57
  throw new RangeError('probeId must be a non-zero unsigned 64-bit integer.');
51
58
  }
52
59
 
53
60
  const frame = Buffer.allocUnsafe(LIVENESS_FRAME_SIZE);
54
61
  frame[0] = definition.magic[0];
55
62
  frame[1] = definition.magic[1];
56
- frame[2] = definition.major;
57
- frame[3] = record.command;
58
- frame[4] = 0;
63
+ frame[SERVICE_WIRE_MAJOR_OFFSET] = definition.major;
64
+ frame[SERVICE_WIRE_COMMAND_OFFSET] = record.command;
65
+ frame[SERVICE_WIRE_FLAGS_OFFSET] = 0;
59
66
  frame.writeBigUInt64BE(record.probeId, PREFIX_SIZE);
60
67
  return frame;
61
68
  },
@@ -64,9 +71,9 @@ export function createServiceWireCodec(definition: ServiceWireDefinition): Servi
64
71
  if (frame[0] !== definition.magic[0] || frame[1] !== definition.magic[1]) {
65
72
  fail('invalid-magic');
66
73
  }
67
- if (frame[2] !== definition.major) fail('unsupported-major');
74
+ if (frame[SERVICE_WIRE_MAJOR_OFFSET] !== definition.major) fail('unsupported-major');
68
75
 
69
- const command = frame[3];
76
+ const command = frame[SERVICE_WIRE_COMMAND_OFFSET];
70
77
  if (!knownCommands.has(command)) fail('unknown-command');
71
78
  if (
72
79
  command !== definition.commands.livenessProbe &&
@@ -74,7 +81,7 @@ export function createServiceWireCodec(definition: ServiceWireDefinition): Servi
74
81
  ) {
75
82
  fail('unknown-command');
76
83
  }
77
- if (frame[4] !== 0) fail('forbidden-flag');
84
+ if (frame[SERVICE_WIRE_FLAGS_OFFSET] !== 0) fail('forbidden-flag');
78
85
  if (frame.byteLength < LIVENESS_FRAME_SIZE) fail('truncated-field');
79
86
  if (frame.byteLength > LIVENESS_FRAME_SIZE) fail('trailing-byte');
80
87
 
@@ -1,6 +1,7 @@
1
1
  // Generated from service-wire-v1.schema.json. Do not edit.
2
2
  export const SERVICE_WIRE_MAGIC = [90, 77] as const;
3
3
  export const SERVICE_WIRE_MAJOR = 1 as const;
4
+ export const SERVICE_WIRE_METADATA_BYTES = 1024 as const;
4
5
  export const SERVICE_WIRE_REQUIRED_CAPABILITY = "framework-service-v13" as const;
5
6
  export const SERVICE_FRAMEWORK_MULTIPART_PACKET_NAME = "ZLinkFrameworkMultipart" as const;
6
7
  export const SERVICE_FRAMEWORK_MULTIPART_CONTENT_TYPE = "application/x-zlink-multipart" as const;