@zlink-systems/framework 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
  3. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  4. package/dist/contracts/Common/CoreTypes.js +7 -0
  5. package/dist/contracts/Common/index.d.ts +1 -1
  6. package/dist/contracts/Common/index.js +0 -1
  7. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  8. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  9. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  10. package/dist/contracts/Configuration/Registration.js +58 -36
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  14. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  15. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  16. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  17. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  18. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  19. package/dist/contracts/Handlers/JsonContract.js +10 -4
  20. package/dist/contracts/Locations/Authority.d.ts +1 -1
  21. package/dist/contracts/Locations/Authority.js +3 -2
  22. package/dist/contracts/Locations/Options.js +1 -1
  23. package/dist/contracts/Locations/Stores.d.ts +12 -0
  24. package/dist/contracts/Locations/Stores.js +9 -0
  25. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
  26. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  27. package/dist/internal.d.ts +5 -0
  28. package/dist/internal.js +16 -1
  29. package/dist/nest-integration.d.ts +4 -2
  30. package/dist/nest-integration.js +14 -4
  31. package/dist/runtime/abort.d.ts +1 -0
  32. package/dist/runtime/abort.js +8 -5
  33. package/dist/runtime/activation-admission.d.ts +28 -0
  34. package/dist/runtime/activation-admission.js +57 -0
  35. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  36. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  37. package/dist/runtime/actors/actor-client.d.ts +2 -2
  38. package/dist/runtime/actors/actor-client.js +42 -143
  39. package/dist/runtime/actors/actor-context.d.ts +3 -5
  40. package/dist/runtime/actors/actor-context.js +19 -17
  41. package/dist/runtime/actors/actor-handoff.d.ts +13 -7
  42. package/dist/runtime/actors/actor-handoff.js +36 -25
  43. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  44. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  45. package/dist/runtime/actors/actor-local-native-join.js +85 -123
  46. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  47. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  48. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  49. package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
  50. package/dist/runtime/actors/actor-remote-joiner.js +11 -17
  51. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  52. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  53. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  54. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  55. package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
  56. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  57. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  58. package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
  59. package/dist/runtime/actors/bound-session-wire.js +2 -7
  60. package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
  61. package/dist/runtime/actors/deferred-join-completion.js +21 -0
  62. package/dist/runtime/actors/index.d.ts +10 -8
  63. package/dist/runtime/actors/index.js +101 -73
  64. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  65. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  66. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  67. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  68. package/dist/runtime/admission.d.ts +7 -1
  69. package/dist/runtime/admission.js +11 -1
  70. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  71. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  72. package/dist/runtime/backend/contracts/index.d.ts +8 -33
  73. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
  74. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  75. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  76. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
  77. package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
  78. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
  79. package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
  80. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  81. package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
  82. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  83. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
  84. package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
  85. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
  86. package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
  87. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  88. package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
  89. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  90. package/dist/runtime/backend/runtime-values.js +2 -0
  91. package/dist/runtime/channels/channel-clients.d.ts +20 -9
  92. package/dist/runtime/channels/channel-clients.js +68 -60
  93. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  94. package/dist/runtime/channels/channel-envelope.js +47 -29
  95. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  96. package/dist/runtime/channels/channel-outbound-operations.js +9 -18
  97. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  98. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  99. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  100. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  101. package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
  102. package/dist/runtime/channels/channel-runtime-manager.js +4 -12
  103. package/dist/runtime/channels/channel-socket-options.js +3 -2
  104. package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
  105. package/dist/runtime/channels/channel-socket-registry.js +296 -235
  106. package/dist/runtime/channels/channel-transports.d.ts +11 -20
  107. package/dist/runtime/channels/channel-transports.js +68 -47
  108. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  109. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  110. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  111. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  112. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  113. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  114. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  115. package/dist/runtime/channels/fanout-location-runtime.js +133 -81
  116. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  117. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  118. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  119. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  120. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  121. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  122. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  123. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  124. package/dist/runtime/diagnostics/flow-context.js +16 -2
  125. package/dist/runtime/diagnostics/index.d.ts +4 -2
  126. package/dist/runtime/diagnostics/index.js +14 -4
  127. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  128. package/dist/runtime/diagnostics/message-flow.js +10 -19
  129. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  130. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  131. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  132. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  133. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  134. package/dist/runtime/disposal.d.ts +5 -0
  135. package/dist/runtime/disposal.js +22 -0
  136. package/dist/runtime/execution/index.d.ts +22 -9
  137. package/dist/runtime/execution/index.js +107 -37
  138. package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
  139. package/dist/runtime/execution/serial-execution-queue.js +99 -26
  140. package/dist/runtime/execution/state-lane.d.ts +8 -1
  141. package/dist/runtime/execution/state-lane.js +118 -3
  142. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  143. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  144. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  145. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  146. package/dist/runtime/foundation/listener-records.d.ts +11 -0
  147. package/dist/runtime/foundation/listener-records.js +20 -0
  148. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  149. package/dist/runtime/foundation/operation-identity.js +9 -5
  150. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  151. package/dist/runtime/foundation/operation-registry.js +34 -44
  152. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
  153. package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
  154. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  155. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  156. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
  157. package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
  158. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  159. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  160. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  161. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  162. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  163. package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
  164. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  165. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  166. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  167. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
  168. package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
  169. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
  170. package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
  171. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  172. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  173. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  174. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
  175. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  176. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  177. package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
  178. package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
  179. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
  180. package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
  181. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
  182. package/dist/runtime/foundation/service-topology-registry.js +22 -61
  183. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  184. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  185. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  186. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  187. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  188. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  189. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  190. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  191. package/dist/runtime/framework-errors-internal.js +343 -122
  192. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  193. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  194. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  195. package/dist/runtime/host/actor-packet-relay.js +48 -91
  196. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  197. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  198. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  199. package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
  200. package/dist/runtime/host/actor-transfer-runtime.js +210 -256
  201. package/dist/runtime/host/application-job-queue.js +16 -33
  202. package/dist/runtime/host/bound-session-relay.js +1 -1
  203. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  204. package/dist/runtime/host/index.d.ts +19 -14
  205. package/dist/runtime/host/index.js +234 -175
  206. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  207. package/dist/runtime/host/instance-activation-authority.js +17 -45
  208. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  209. package/dist/runtime/host/location-runtime-owner.js +2 -2
  210. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  211. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  212. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  213. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  214. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  215. package/dist/runtime/host/remote-bound-session-relay.js +11 -23
  216. package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
  217. package/dist/runtime/host/route-mesh-runtime.js +178 -257
  218. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  219. package/dist/runtime/host/runtime-shutdown.js +18 -21
  220. package/dist/runtime/host/service-relocation-control.js +6 -1
  221. package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
  222. package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
  223. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  224. package/dist/runtime/host/spot-address-transport.js +34 -136
  225. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  226. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  227. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
  228. package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
  229. package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
  230. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
  231. package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
  232. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  233. package/dist/runtime/locations/authority-key-codec.js +4 -3
  234. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  235. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  236. package/dist/runtime/locations/creation-operation-id.js +6 -4
  237. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  238. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  239. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  240. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  241. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  242. package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
  243. package/dist/runtime/locations/key-codec.js +3 -2
  244. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  245. package/dist/runtime/locations/lease-tracker.js +7 -11
  246. package/dist/runtime/locations/lifecycle.d.ts +5 -10
  247. package/dist/runtime/locations/lifecycle.js +4 -33
  248. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  249. package/dist/runtime/locations/location-store-failure.js +7 -0
  250. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  251. package/dist/runtime/locations/location-store-pages.js +13 -0
  252. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  253. package/dist/runtime/locations/location-store-repository.js +303 -332
  254. package/dist/runtime/locations/relocation-blob.js +18 -5
  255. package/dist/runtime/locations/resolvers.d.ts +5 -5
  256. package/dist/runtime/locations/resolvers.js +44 -30
  257. package/dist/runtime/locations/runtime.d.ts +5 -4
  258. package/dist/runtime/locations/runtime.js +123 -92
  259. package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
  260. package/dist/runtime/locations/spot-location-claims.js +40 -23
  261. package/dist/runtime/messaging/payload-codec.js +26 -20
  262. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  263. package/dist/runtime/messaging/submission-result.js +48 -0
  264. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
  265. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
  266. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
  267. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
  268. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
  269. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
  270. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
  271. package/dist/runtime/spots/index.d.ts +29 -29
  272. package/dist/runtime/spots/index.js +441 -313
  273. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
  274. package/dist/runtime/spots/spot-activation-registry.js +27 -60
  275. package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
  276. package/dist/runtime/spots/spot-activation-state.js +4 -17
  277. package/dist/runtime/spots/spot-activation.d.ts +10 -9
  278. package/dist/runtime/spots/spot-activation.js +103 -81
  279. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  280. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  281. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  282. package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
  283. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
  284. package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
  285. package/dist/runtime/spots/spot-actor-membership.js +44 -53
  286. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  287. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  288. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  289. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  290. package/dist/runtime/spots/spot-context.d.ts +2 -2
  291. package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
  292. package/dist/runtime/spots/spot-entry-activation.js +9 -21
  293. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  294. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  295. package/dist/runtime/spots/spot-manager-public.js +6 -5
  296. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  297. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
  298. package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
  299. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  300. package/dist/runtime/spots/spot-outbound.js +10 -37
  301. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  302. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  303. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  304. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  305. package/dist/runtime/spots/spot-route-replies.js +3 -1
  306. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
  307. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
  308. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
  309. package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
  310. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  311. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  312. package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
  313. package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
  314. package/dist/runtime/spots/spot-serial-executor.js +9 -2
  315. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
  316. package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
  317. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  318. package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
  319. package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
  320. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
  321. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  322. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  323. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  324. package/dist/runtime/streams/bound-session-service.js +12 -19
  325. package/dist/runtime/streams/index.d.ts +15 -14
  326. package/dist/runtime/streams/index.js +38 -39
  327. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  328. package/dist/runtime/streams/managed-stream.js +17 -8
  329. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  330. package/dist/runtime/streams/protocol.d.ts +6 -33
  331. package/dist/runtime/streams/protocol.js +38 -110
  332. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  333. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  334. package/dist/runtime/streams/session-calls.d.ts +1 -1
  335. package/dist/runtime/streams/session-calls.js +5 -4
  336. package/dist/runtime/streams/session-context.d.ts +6 -6
  337. package/dist/runtime/streams/session-context.js +22 -4
  338. package/dist/runtime/streams/session-requests.js +2 -1
  339. package/dist/runtime/streams/session-serial-executor.js +2 -2
  340. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  341. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  342. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  343. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  344. package/dist/runtime/workers/index.d.ts +2 -2
  345. package/dist/runtime/workers/index.js +5 -4
  346. package/package.json +3 -3
  347. package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
  348. package/src/contracts/Common/CoreTypes.ts +7 -0
  349. package/src/contracts/Common/index.ts +1 -1
  350. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  351. package/src/contracts/Configuration/Registration.ts +92 -48
  352. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  353. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  354. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  355. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  356. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  357. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  358. package/src/contracts/Handlers/JsonContract.ts +14 -4
  359. package/src/contracts/Locations/Authority.ts +7 -3
  360. package/src/contracts/Locations/Options.ts +1 -1
  361. package/src/contracts/Locations/Stores.ts +14 -0
  362. package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
  363. package/src/contracts/Spots/Contracts.ts +1 -1
  364. package/src/internal.ts +15 -0
  365. package/src/nest-integration.ts +28 -10
  366. package/src/runtime/abort.ts +6 -5
  367. package/src/runtime/activation-admission.ts +72 -0
  368. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  369. package/src/runtime/actors/actor-client.ts +77 -204
  370. package/src/runtime/actors/actor-context.ts +45 -39
  371. package/src/runtime/actors/actor-handoff.ts +55 -45
  372. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  373. package/src/runtime/actors/actor-local-native-join.ts +174 -215
  374. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  375. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  376. package/src/runtime/actors/actor-remote-joiner.ts +15 -36
  377. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  378. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  379. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  380. package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
  381. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  382. package/src/runtime/actors/actor-source-transfer.ts +5 -18
  383. package/src/runtime/actors/bound-session-wire.ts +2 -8
  384. package/src/runtime/actors/deferred-join-completion.ts +44 -0
  385. package/src/runtime/actors/index.ts +122 -88
  386. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  387. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  388. package/src/runtime/admission.ts +13 -2
  389. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  390. package/src/runtime/backend/contracts/index.ts +15 -42
  391. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
  392. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  393. package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
  394. package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
  395. package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
  396. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  397. package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
  398. package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
  399. package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
  400. package/src/runtime/backend/raw-binding-port.ts +14 -1
  401. package/src/runtime/backend/runtime-values.ts +4 -1
  402. package/src/runtime/channels/channel-clients.ts +132 -96
  403. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  404. package/src/runtime/channels/channel-envelope.ts +58 -29
  405. package/src/runtime/channels/channel-outbound-operations.ts +10 -31
  406. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  407. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  408. package/src/runtime/channels/channel-runtime-manager.ts +8 -15
  409. package/src/runtime/channels/channel-socket-options.ts +8 -2
  410. package/src/runtime/channels/channel-socket-registry.ts +369 -262
  411. package/src/runtime/channels/channel-transports.ts +161 -115
  412. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  413. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  414. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  415. package/src/runtime/channels/fanout-location-runtime.ts +175 -106
  416. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  417. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  418. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  419. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  420. package/src/runtime/diagnostics/flow-context.ts +16 -2
  421. package/src/runtime/diagnostics/index.ts +27 -17
  422. package/src/runtime/diagnostics/message-flow.ts +15 -25
  423. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  424. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  425. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  426. package/src/runtime/disposal.ts +19 -0
  427. package/src/runtime/execution/index.ts +116 -38
  428. package/src/runtime/execution/serial-execution-queue.ts +179 -34
  429. package/src/runtime/execution/state-lane.ts +142 -4
  430. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  431. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  432. package/src/runtime/foundation/listener-records.ts +21 -0
  433. package/src/runtime/foundation/operation-identity.ts +11 -5
  434. package/src/runtime/foundation/operation-registry.ts +33 -50
  435. package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
  436. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  437. package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
  438. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  439. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  440. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  441. package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
  442. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  443. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  444. package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
  445. package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
  446. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  447. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  448. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
  449. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  450. package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
  451. package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
  452. package/src/runtime/foundation/service-topology-registry.ts +30 -79
  453. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  454. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  455. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  456. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  457. package/src/runtime/framework-errors-internal.ts +380 -134
  458. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  459. package/src/runtime/host/actor-packet-relay.ts +57 -147
  460. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  461. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  462. package/src/runtime/host/actor-transfer-runtime.ts +266 -418
  463. package/src/runtime/host/application-job-queue.ts +28 -34
  464. package/src/runtime/host/bound-session-relay.ts +1 -2
  465. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  466. package/src/runtime/host/index.ts +408 -312
  467. package/src/runtime/host/instance-activation-authority.ts +89 -109
  468. package/src/runtime/host/location-runtime-owner.ts +4 -2
  469. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  470. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  471. package/src/runtime/host/remote-bound-session-relay.ts +12 -44
  472. package/src/runtime/host/route-mesh-runtime.ts +236 -275
  473. package/src/runtime/host/runtime-shutdown.ts +17 -21
  474. package/src/runtime/host/service-relocation-control.ts +14 -1
  475. package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
  476. package/src/runtime/host/spot-address-transport.ts +73 -195
  477. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  478. package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
  479. package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
  480. package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
  481. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  482. package/src/runtime/locations/authority-key-codec.ts +7 -3
  483. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  484. package/src/runtime/locations/creation-operation-id.ts +6 -3
  485. package/src/runtime/locations/domain-store-contract.ts +12 -3
  486. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  487. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  488. package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
  489. package/src/runtime/locations/key-codec.ts +3 -2
  490. package/src/runtime/locations/lease-tracker.ts +8 -14
  491. package/src/runtime/locations/lifecycle.ts +16 -45
  492. package/src/runtime/locations/location-store-failure.ts +4 -0
  493. package/src/runtime/locations/location-store-pages.ts +18 -0
  494. package/src/runtime/locations/location-store-repository.ts +450 -478
  495. package/src/runtime/locations/relocation-blob.ts +17 -6
  496. package/src/runtime/locations/resolvers.ts +90 -58
  497. package/src/runtime/locations/runtime.ts +220 -110
  498. package/src/runtime/locations/spot-location-claims.ts +54 -26
  499. package/src/runtime/messaging/payload-codec.ts +35 -24
  500. package/src/runtime/messaging/submission-result.ts +57 -1
  501. package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
  502. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
  503. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
  504. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
  505. package/src/runtime/spots/index.ts +687 -437
  506. package/src/runtime/spots/spot-activation-registry.ts +42 -71
  507. package/src/runtime/spots/spot-activation-state.ts +4 -16
  508. package/src/runtime/spots/spot-activation.ts +167 -115
  509. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  510. package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
  511. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
  512. package/src/runtime/spots/spot-actor-membership.ts +107 -75
  513. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  514. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  515. package/src/runtime/spots/spot-context.ts +3 -3
  516. package/src/runtime/spots/spot-entry-activation.ts +13 -33
  517. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  518. package/src/runtime/spots/spot-manager-public.ts +29 -21
  519. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  520. package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
  521. package/src/runtime/spots/spot-outbound.ts +47 -68
  522. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  523. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  524. package/src/runtime/spots/spot-route-replies.ts +6 -4
  525. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
  526. package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
  527. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  528. package/src/runtime/spots/spot-runtime-ports.ts +10 -43
  529. package/src/runtime/spots/spot-serial-executor.ts +10 -2
  530. package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
  531. package/src/runtime/spots/spot-timer.ts +3 -2
  532. package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
  533. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
  534. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  535. package/src/runtime/streams/bound-session-service.ts +23 -37
  536. package/src/runtime/streams/index.ts +102 -88
  537. package/src/runtime/streams/managed-stream.ts +29 -10
  538. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  539. package/src/runtime/streams/protocol.ts +34 -88
  540. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  541. package/src/runtime/streams/session-calls.ts +6 -5
  542. package/src/runtime/streams/session-context.ts +54 -10
  543. package/src/runtime/streams/session-requests.ts +2 -1
  544. package/src/runtime/streams/session-serial-executor.ts +2 -2
  545. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  546. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  547. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  548. package/src/runtime/workers/index.ts +13 -12
  549. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
  550. package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
  551. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  552. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  553. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  554. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  555. package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
  556. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  557. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,27 +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
4
  import {
17
- decodeCanonicalServiceWireText,
18
- decodeServiceWireRoutingId,
19
- encodeCanonicalServiceWireText,
20
- encodeServiceWireRoutingId
21
- } from './service-wire-binary-primitives';
5
+ decodeActorRequestCommand,
6
+ decodeActorSendCommand,
7
+ decodeMetadataFrame,
8
+ decodeInstanceRouteV1,
9
+ decodeSpotRequestCommand,
10
+ decodeSpotSendCommand,
11
+ encodeActorRequestCommand,
12
+ encodeActorSendCommand,
13
+ encodeApplicationPayloadEnvelopeV1,
14
+ encodeInstanceRouteV1,
15
+ encodeSpotRequestCommand,
16
+ encodeSpotSendCommand,
17
+ type ServiceWireDecoderContext
18
+ } from '../protocol/service_wire_codec.generated';
22
19
  import {
23
- decodeActorCreate49 as decodeGeneratedActorCreate49,
24
20
  decodeActorJoin28,
21
+ decodeActorCreate49 as decodeGeneratedActorCreate49,
25
22
  decodeRelocationCutover34 as decodeGeneratedRelocationCutover34,
26
23
  decodeRelocationData31 as decodeGeneratedRelocationData31,
27
24
  decodeRelocationFailed53 as decodeGeneratedRelocationFailed53,
@@ -50,20 +47,45 @@ import {
50
47
  encodeUserSpotClose48 as encodeGeneratedUserSpotClose48,
51
48
  encodeUserSpotCreate47 as encodeGeneratedUserSpotCreate47,
52
49
  type ActorCreate49 as GeneratedActorCreate49,
50
+ type ServiceWireCoordinatorFence as GeneratedCoordinatorFence,
53
51
  type RelocationObjectIdentity as GeneratedRelocationObjectIdentity,
54
52
  type ReplyRelay33 as GeneratedReplyRelay33,
55
- type ServiceWireCoordinatorFence as GeneratedCoordinatorFence,
56
53
  type ServiceWireRequestSourceFence as GeneratedRequestSourceFence,
57
54
  type ServiceWireRouteFence as GeneratedRouteFence,
58
- type ServiceWireTargetFence as GeneratedTargetFence,
59
55
  type SessionRelocationRoute44 as GeneratedSessionRelocationRoute44,
60
56
  type SessionRelocationSeal42 as GeneratedSessionRelocationSeal42,
61
57
  type SessionRelocationSealed43 as GeneratedSessionRelocationSealed43,
58
+ type ServiceWireTargetFence as GeneratedTargetFence,
62
59
  type UserSpotClose48 as GeneratedUserSpotClose48,
63
60
  type UserSpotCreate47 as GeneratedUserSpotCreate47
64
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;
65
87
 
66
- const PREFIX_SIZE = 5;
88
+ const PREFIX_SIZE = SERVICE_WIRE_PREFIX_SIZE;
67
89
  const MAGIC_0 = SERVICE_WIRE_MAGIC[0];
68
90
  const MAGIC_1 = SERVICE_WIRE_MAGIC[1];
69
91
  const MAJOR = SERVICE_WIRE_MAJOR;
@@ -148,7 +170,7 @@ export type ServiceWireRelocationObject =
148
170
  /** Shared CRC-32C wire bounds for the direct relocation payload transfer. */
149
171
  export const RELOCATION_PAYLOAD_TOTAL_LENGTH_MAX = 274_877_906_944n;
150
172
  export const RELOCATION_PAYLOAD_CHUNK_COUNT_MAX = 4096;
151
- export const RELOCATION_STATE_CHUNK_DATA_MAX_BYTES = 67_108_864;
173
+ export { RELOCATION_STATE_CHUNK_DATA_MAX_BYTES } from '../../contracts/Configuration/InternalDefaults';
152
174
 
153
175
  interface ServiceWireRelocationBase {
154
176
  readonly relocation: ServiceWireOperationId;
@@ -337,6 +359,7 @@ export type ServiceSessionRelocationRoute =
337
359
  readonly targetAuthorityOwnerGeneration: bigint;
338
360
  readonly targetNodeRid: string;
339
361
  readonly targetNodeGeneration: bigint;
362
+ readonly targetOwnerLeaseGeneration: bigint;
340
363
  };
341
364
  }
342
365
  | {
@@ -1015,8 +1038,10 @@ export type ServiceStatefulWireRecord =
1015
1038
  | {
1016
1039
  readonly kind: 'spotSend' | 'spotRequest';
1017
1040
  readonly correlation?: bigint;
1041
+ readonly operation: ServiceWireOperationId;
1042
+ readonly messageFollowHopCount: number;
1018
1043
  readonly sourceSpotId: string;
1019
- readonly target: ServiceDirectSpotRouteFence;
1044
+ readonly target: ServiceSpotRouteFence;
1020
1045
  }
1021
1046
  | {
1022
1047
  readonly kind: 'logicalMulticast';
@@ -1027,6 +1052,8 @@ export type ServiceStatefulWireRecord =
1027
1052
  | {
1028
1053
  readonly kind: 'actorSend' | 'actorRequest';
1029
1054
  readonly correlation?: bigint;
1055
+ readonly operation: ServiceWireOperationId;
1056
+ readonly messageFollowHopCount: number;
1030
1057
  readonly sourceActor?: ServiceActorRef;
1031
1058
  readonly target: ServiceActorRouteFence;
1032
1059
  readonly boundSession?: ServiceBoundSessionSource;
@@ -1068,6 +1095,7 @@ export type ServiceStatefulWireRecord =
1068
1095
  | {
1069
1096
  readonly kind: 'instanceSpot';
1070
1097
  readonly activation: 'ready';
1098
+ readonly instanceIntent: boolean;
1071
1099
  readonly route: ServiceInstanceRouteFence;
1072
1100
  readonly sourceNodeGeneration: bigint;
1073
1101
  readonly sourceNodeRid: string;
@@ -1137,20 +1165,68 @@ export interface ServiceStatefulReply {
1137
1165
  readonly tail?: ServiceStatefulReplyTail;
1138
1166
  }
1139
1167
 
1168
+ const STATEFUL_MESSAGE_CONTEXT: ServiceWireDecoderContext = {
1169
+ effectiveCompleteMessageBytesMinusActualEnvelopeOverhead: 0xffff_fdf6,
1170
+ effectiveCompleteMessageBytes: 0xffff_ffff
1171
+ };
1172
+ const STATEFUL_HEADER_PAYLOAD = {
1173
+ packetName: 'wire',
1174
+ contentType: ZlinkStreamContentType.Json,
1175
+ payload: Buffer.from('{}')
1176
+ };
1177
+
1178
+ function generatedSpotFence(target: ServiceSpotRouteFence) {
1179
+ return {
1180
+ spot: { spotId: target.spot.spotId, objectGeneration: target.spot.generation },
1181
+ targetNodeRid: toGeneratedRoutingId(target.targetNodeRid, 'targetNodeRid'),
1182
+ targetNodeGeneration: target.targetNodeGeneration,
1183
+ expectedAuthorityOwnerGeneration: target.authorityOwnerGeneration,
1184
+ expectedOwnerLeaseGeneration: target.ownerLeaseGeneration
1185
+ };
1186
+ }
1187
+
1188
+ function generatedActorFence(target: ServiceActorRouteFence) {
1189
+ return {
1190
+ actor: { actorId: target.actor.actorId, objectGeneration: target.actor.generation },
1191
+ targetNodeRid: toGeneratedRoutingId(target.actor.nodeRid, 'targetNodeRid'),
1192
+ targetNodeGeneration: target.targetNodeGeneration,
1193
+ expectedAuthorityOwnerGeneration: target.authorityOwnerGeneration,
1194
+ expectedOwnerLeaseGeneration: target.ownerLeaseGeneration
1195
+ };
1196
+ }
1197
+
1140
1198
  export function encodeSpotHeader(
1141
1199
  kind: 'spotSend' | 'spotRequest',
1142
1200
  sourceSpotId: string,
1143
1201
  target: ServiceDirectSpotRouteFence,
1144
- correlation?: bigint
1202
+ correlation?: bigint,
1203
+ operation: ServiceWireOperationId = { high: 0n, low: 1n },
1204
+ messageFollowHopCount = 0,
1205
+ metadataFrame?: Uint8Array
1145
1206
  ): Buffer {
1146
- return concat(
1147
- prefix(
1148
- kind === 'spotSend' ? M6bServiceWireCommand.spotSend : M6bServiceWireCommand.spotRequest
1149
- ),
1150
- ...(kind === 'spotRequest' ? [u64(requirePositive(correlation, 'correlation'))] : []),
1151
- rid(sourceSpotId, 'sourceSpotId'),
1152
- directSpotFence(target)
1153
- );
1207
+ const common = {
1208
+ flags: metadataFrame === undefined ? 0 : M6bServiceWireFlag.metadata,
1209
+ operation,
1210
+ messageFollowHopCount,
1211
+ sourceSpotId,
1212
+ targetSpot: generatedSpotFence(target),
1213
+ payload: STATEFUL_HEADER_PAYLOAD,
1214
+ ...(metadataFrame === undefined
1215
+ ? {}
1216
+ : { metadata: decodeMetadataFrame(metadataFrame, STATEFUL_MESSAGE_CONTEXT) })
1217
+ };
1218
+ const frames =
1219
+ kind === 'spotSend'
1220
+ ? encodeSpotSendCommand({ command: kind, ...common }, STATEFUL_MESSAGE_CONTEXT)
1221
+ : encodeSpotRequestCommand(
1222
+ {
1223
+ command: kind,
1224
+ ...common,
1225
+ correlation: requirePositive(correlation, 'correlation')
1226
+ },
1227
+ STATEFUL_MESSAGE_CONTEXT
1228
+ );
1229
+ return Buffer.from(frames[0]!);
1154
1230
  }
1155
1231
 
1156
1232
  export function encodeActorHeader(
@@ -1158,28 +1234,46 @@ export function encodeActorHeader(
1158
1234
  target: ServiceActorRouteFence,
1159
1235
  correlation?: bigint,
1160
1236
  sourceActor?: ServiceActorRef,
1161
- boundSession?: ServiceBoundSessionSource
1237
+ boundSession?: ServiceBoundSessionSource,
1238
+ operation: ServiceWireOperationId = { high: 0n, low: 1n },
1239
+ messageFollowHopCount = 0
1162
1240
  ): Buffer {
1163
1241
  const flags =
1164
1242
  boundSession === undefined
1165
1243
  ? 0
1166
1244
  : M6bServiceWireFlag.boundSession | M6bServiceWireFlag.sourceSpotId;
1167
- return concat(
1168
- prefix(
1169
- kind === 'actorSend' ? M6bServiceWireCommand.actorSend : M6bServiceWireCommand.actorRequest,
1170
- flags
1171
- ),
1172
- ...(kind === 'actorRequest' ? [u64(requirePositive(correlation, 'correlation'))] : []),
1173
- optionalActor(sourceActor),
1174
- actorFence(target),
1245
+ const common = {
1246
+ flags,
1247
+ operation,
1248
+ messageFollowHopCount,
1249
+ sourceActor:
1250
+ sourceActor === undefined
1251
+ ? { actorId: null }
1252
+ : { actorId: sourceActor.actorId, generation: sourceActor.generation },
1253
+ targetActor: generatedActorFence(target),
1175
1254
  ...(boundSession === undefined
1176
- ? []
1177
- : [
1178
- rid(boundSession.sessionRid, 'sourceSessionRid'),
1179
- u64(boundSession.bindingGeneration),
1180
- u64(boundSession.sequence)
1181
- ])
1182
- );
1255
+ ? {}
1256
+ : {
1257
+ boundSessionTail: {
1258
+ sourceSessionRid: toGeneratedRoutingId(boundSession.sessionRid, 'sourceSessionRid'),
1259
+ sourceBindingGeneration: boundSession.bindingGeneration,
1260
+ sourceSessionSequence: boundSession.sequence
1261
+ }
1262
+ }),
1263
+ payload: STATEFUL_HEADER_PAYLOAD
1264
+ };
1265
+ const frames =
1266
+ kind === 'actorSend'
1267
+ ? encodeActorSendCommand({ command: kind, ...common }, STATEFUL_MESSAGE_CONTEXT)
1268
+ : encodeActorRequestCommand(
1269
+ {
1270
+ command: kind,
1271
+ ...common,
1272
+ correlation: requirePositive(correlation, 'correlation')
1273
+ },
1274
+ STATEFUL_MESSAGE_CONTEXT
1275
+ );
1276
+ return Buffer.from(frames[0]!);
1183
1277
  }
1184
1278
 
1185
1279
  export function encodeLogicalMulticastHeader(
@@ -1300,17 +1394,25 @@ export function encodeInstanceSpotHeader(
1300
1394
  operationKind: 'send' | 'request',
1301
1395
  operation: { readonly high: bigint; readonly low: bigint },
1302
1396
  replyRouteId?: bigint,
1303
- hasMetadata = false
1397
+ hasMetadata = false,
1398
+ instanceIntent = false
1304
1399
  ): Buffer {
1305
- const routeBody = concat(
1306
- rid(route.targetNodeRid, 'targetNodeRid'),
1307
- u64(route.targetNodeGeneration),
1308
- rid(route.targetSpotId, 'targetSpotId'),
1309
- u64(route.objectGeneration),
1310
- text8(route.ownerId, 'ownerId'),
1311
- u64(route.authorityOwnerGeneration),
1312
- u64(route.leaseGeneration),
1313
- 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
1314
1416
  );
1315
1417
  if (
1316
1418
  operationKind === 'send' &&
@@ -1323,9 +1425,7 @@ export function encodeInstanceSpotHeader(
1323
1425
  }
1324
1426
  return concat(
1325
1427
  prefix(M6bServiceWireCommand.instanceSpot, hasMetadata ? M6bServiceWireFlag.metadata : 0),
1326
- Buffer.of(1),
1327
- u16(routeBody.byteLength),
1328
- routeBody,
1428
+ encodedRoute,
1329
1429
  u64Any(sourceNodeGeneration),
1330
1430
  rid(sourceNodeRid, 'sourceNodeRid'),
1331
1431
  optionalRid(sourceSpotId),
@@ -1365,7 +1465,7 @@ export function encodeInstanceSpotActivationHeader(
1365
1465
  );
1366
1466
  return concat(
1367
1467
  prefix(M6bServiceWireCommand.instanceSpot, hasMetadata ? M6bServiceWireFlag.metadata : 0),
1368
- Buffer.of(2),
1468
+ Buffer.of(INSTANCE_ACTIVATION_VERSION),
1369
1469
  u16(targetBody.byteLength),
1370
1470
  targetBody,
1371
1471
  u64Any(sourceNodeGeneration),
@@ -1409,18 +1509,24 @@ export function encodeMessageFollowHeader(
1409
1509
  u64Any(record.originalOperation.low),
1410
1510
  u64Any(record.originalReplyRouteId)
1411
1511
  );
1412
- if (body.byteLength > 16 * 1024 * 1024) {
1413
- 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
+ );
1414
1516
  }
1415
1517
  return concat(
1416
1518
  prefix(M6bServiceWireCommand.messageFollow),
1417
- Buffer.of(1),
1519
+ Buffer.of(MESSAGE_FOLLOW_VERSION),
1418
1520
  u32(body.byteLength, 'messageFollow.length'),
1419
1521
  body
1420
1522
  );
1421
1523
  }
1422
1524
 
1423
- export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireRecord {
1525
+ export function decodeStatefulHeader(
1526
+ frame: Uint8Array,
1527
+ payloadFrame?: Uint8Array,
1528
+ metadataFrame?: Uint8Array
1529
+ ): ServiceStatefulWireRecord {
1424
1530
  switch (frame[3]) {
1425
1531
  case M6bServiceWireCommand.userSpotCreate:
1426
1532
  return fromGeneratedUserSpotCreate(decodeGeneratedUserSpotCreate47(frame));
@@ -1428,52 +1534,98 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
1428
1534
  return fromGeneratedUserSpotClose(decodeGeneratedUserSpotClose48(frame));
1429
1535
  case M6bServiceWireCommand.actorCreate:
1430
1536
  return fromGeneratedActorCreate(decodeGeneratedActorCreate49(frame));
1431
- }
1432
- const reader = new Reader(frame);
1433
- const command = reader.prefix();
1434
- switch (command.command) {
1435
1537
  case M6bServiceWireCommand.spotSend:
1436
- case M6bServiceWireCommand.spotRequest: {
1437
- requireFlags(command.flags, 0);
1438
- const request = command.command === M6bServiceWireCommand.spotRequest;
1439
- const correlation = request ? reader.nonZeroU64('correlation') : undefined;
1440
- const sourceSpotId = reader.rid('sourceSpotId');
1441
- const target = reader.directSpotFence();
1442
- reader.end();
1443
- return {
1444
- kind: request ? 'spotRequest' : 'spotSend',
1445
- ...(correlation === undefined ? {} : { correlation }),
1446
- sourceSpotId,
1447
- target
1448
- };
1449
- }
1538
+ case M6bServiceWireCommand.spotRequest:
1450
1539
  case M6bServiceWireCommand.actorSend:
1451
1540
  case M6bServiceWireCommand.actorRequest: {
1452
- const request = command.command === M6bServiceWireCommand.actorRequest;
1453
- const hasBinding = command.flags !== 0;
1454
- requireFlags(
1455
- command.flags,
1456
- hasBinding ? M6bServiceWireFlag.boundSession | M6bServiceWireFlag.sourceSpotId : 0
1457
- );
1458
- const correlation = request ? reader.nonZeroU64('correlation') : undefined;
1459
- const sourceActor = reader.optionalActor();
1460
- const target = reader.actorFence();
1461
- const boundSession = hasBinding
1462
- ? {
1463
- sessionRid: reader.rid('sourceSessionRid'),
1464
- bindingGeneration: reader.nonZeroU64('sourceBindingGeneration'),
1465
- sequence: reader.nonZeroU64('sourceSessionSequence')
1466
- }
1467
- : undefined;
1468
- reader.end();
1469
- return {
1470
- kind: request ? 'actorRequest' : 'actorSend',
1471
- ...(correlation === undefined ? {} : { correlation }),
1472
- ...(sourceActor === undefined ? {} : { sourceActor }),
1473
- target,
1474
- ...(boundSession === undefined ? {} : { boundSession })
1475
- };
1541
+ const frames = [
1542
+ frame,
1543
+ ...(metadataFrame === undefined ? [] : [metadataFrame]),
1544
+ payloadFrame ??
1545
+ encodeApplicationPayloadEnvelopeV1(STATEFUL_HEADER_PAYLOAD, STATEFUL_MESSAGE_CONTEXT)
1546
+ ];
1547
+ try {
1548
+ if (
1549
+ frame[3] === M6bServiceWireCommand.spotSend ||
1550
+ frame[3] === M6bServiceWireCommand.spotRequest
1551
+ ) {
1552
+ const decoded =
1553
+ frame[3] === M6bServiceWireCommand.spotSend
1554
+ ? decodeSpotSendCommand(frames, STATEFUL_MESSAGE_CONTEXT)
1555
+ : decodeSpotRequestCommand(frames, STATEFUL_MESSAGE_CONTEXT);
1556
+ return {
1557
+ kind: decoded.command,
1558
+ ...(decoded.command === 'spotRequest' ? { correlation: decoded.correlation } : {}),
1559
+ operation: decoded.operation,
1560
+ messageFollowHopCount: decoded.messageFollowHopCount,
1561
+ sourceSpotId: decoded.sourceSpotId,
1562
+ target: {
1563
+ spot: {
1564
+ spotId: decoded.targetSpot.spot.spotId,
1565
+ generation: decoded.targetSpot.spot.objectGeneration
1566
+ },
1567
+ targetNodeRid: fromGeneratedRoutingId(
1568
+ decoded.targetSpot.targetNodeRid,
1569
+ 'targetNodeRid'
1570
+ ),
1571
+ targetNodeGeneration: decoded.targetSpot.targetNodeGeneration,
1572
+ authorityOwnerGeneration: decoded.targetSpot.expectedAuthorityOwnerGeneration,
1573
+ ownerLeaseGeneration: decoded.targetSpot.expectedOwnerLeaseGeneration
1574
+ }
1575
+ };
1576
+ }
1577
+ const decoded =
1578
+ frame[3] === M6bServiceWireCommand.actorSend
1579
+ ? decodeActorSendCommand(frames, STATEFUL_MESSAGE_CONTEXT)
1580
+ : decodeActorRequestCommand(frames, STATEFUL_MESSAGE_CONTEXT);
1581
+ const source = decoded.sourceActor;
1582
+ return {
1583
+ kind: decoded.command,
1584
+ ...(decoded.command === 'actorRequest' ? { correlation: decoded.correlation } : {}),
1585
+ operation: decoded.operation,
1586
+ messageFollowHopCount: decoded.messageFollowHopCount,
1587
+ ...(source.actorId === null
1588
+ ? {}
1589
+ : {
1590
+ sourceActor: {
1591
+ nodeRid: '',
1592
+ actorId: source.actorId,
1593
+ generation: source.generation!
1594
+ }
1595
+ }),
1596
+ target: {
1597
+ actor: {
1598
+ nodeRid: fromGeneratedRoutingId(decoded.targetActor.targetNodeRid, 'targetNodeRid'),
1599
+ actorId: decoded.targetActor.actor.actorId,
1600
+ generation: decoded.targetActor.actor.objectGeneration
1601
+ },
1602
+ targetNodeGeneration: decoded.targetActor.targetNodeGeneration,
1603
+ authorityOwnerGeneration: decoded.targetActor.expectedAuthorityOwnerGeneration,
1604
+ ownerLeaseGeneration: decoded.targetActor.expectedOwnerLeaseGeneration
1605
+ },
1606
+ ...(decoded.boundSessionTail === undefined
1607
+ ? {}
1608
+ : {
1609
+ boundSession: {
1610
+ sessionRid: fromGeneratedRoutingId(
1611
+ decoded.boundSessionTail.sourceSessionRid,
1612
+ 'sourceSessionRid'
1613
+ ),
1614
+ bindingGeneration: decoded.boundSessionTail.sourceBindingGeneration,
1615
+ sequence: decoded.boundSessionTail.sourceSessionSequence
1616
+ }
1617
+ })
1618
+ };
1619
+ } catch (error) {
1620
+ throw new ServiceWireProtocolError(
1621
+ error instanceof Error ? error.message : 'Invalid stateful message.'
1622
+ );
1623
+ }
1476
1624
  }
1625
+ }
1626
+ const reader = new Reader(frame);
1627
+ const command = reader.prefix();
1628
+ switch (command.command) {
1477
1629
  case M6bServiceWireCommand.logicalMulticast: {
1478
1630
  requireFlags(command.flags, 0);
1479
1631
  const result = {
@@ -1590,34 +1742,53 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
1590
1742
  if ((command.flags & ~M6bServiceWireFlag.metadata) !== 0) {
1591
1743
  fail(`Invalid command flags '${command.flags}'.`);
1592
1744
  }
1745
+ const routeStart = reader.offset;
1593
1746
  const version = reader.u8('instanceRoute.version');
1594
- 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.');
1595
1749
  const routeLength = reader.u16('instanceRoute.length');
1596
1750
  const routeEnd = reader.offset + routeLength;
1597
- const commonTarget = {
1598
- targetNodeRid: reader.rid('targetNodeRid'),
1599
- targetNodeGeneration: reader.nonZeroU64('targetNodeGeneration'),
1600
- targetSpotId: reader.rid('targetSpotId')
1601
- };
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
+ };
1602
1776
  const route: ServiceInstanceRouteFence | undefined =
1603
- version === 1
1777
+ generatedReadyRoute?.routeKind === 'ready'
1604
1778
  ? {
1605
1779
  ...commonTarget,
1606
- objectGeneration: reader.nonZeroU64('objectGeneration'),
1607
- ownerId: reader.text8('ownerId'),
1608
- authorityOwnerGeneration: reader.nonZeroU64('authorityOwnerGeneration'),
1609
- leaseGeneration: reader.nonZeroU64('leaseGeneration'),
1610
- storeVersion: reader.text16('storeVersion')
1780
+ ...generatedReadyRoute.authority
1611
1781
  }
1612
1782
  : undefined;
1613
1783
  const target: ServiceInstanceActivationTarget | undefined =
1614
- version === 2
1784
+ version === INSTANCE_ACTIVATION_VERSION
1615
1785
  ? {
1616
1786
  ...commonTarget,
1617
1787
  stableType: reader.text16('stableType'),
1618
1788
  descriptorVersion: reader.text16('descriptorVersion')
1619
1789
  }
1620
1790
  : undefined;
1791
+ if (generatedReadyRoute !== undefined) reader.offset = routeEnd;
1621
1792
  if (reader.offset !== routeEnd) fail('Invalid Instance route body length.');
1622
1793
  const sourceNodeGeneration = reader.nonZeroU64('sourceNodeGeneration');
1623
1794
  const sourceNodeRid = reader.rid('sourceNodeRid');
@@ -1630,16 +1801,21 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
1630
1801
  };
1631
1802
  const operationKind = operationValue === 1 ? ('send' as const) : ('request' as const);
1632
1803
  if (
1633
- version === 1 &&
1804
+ version === INSTANCE_ROUTE_VERSION &&
1634
1805
  ((operationKind === 'send' && (operation.high !== 0n || operation.low !== 0n)) ||
1635
1806
  (operationKind === 'request' && operation.high === 0n && operation.low === 0n))
1636
1807
  ) {
1637
1808
  fail('Invalid Instance operation identity.');
1638
1809
  }
1639
- 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
+ ) {
1640
1815
  fail('Instance activation requires a non-zero operation identity.');
1641
1816
  }
1642
- const deadlineUnixMs = version === 2 ? reader.nonZeroU64('deadlineUnixMs') : undefined;
1817
+ const deadlineUnixMs =
1818
+ version === INSTANCE_ACTIVATION_VERSION ? reader.nonZeroU64('deadlineUnixMs') : undefined;
1643
1819
  const replyRouteId =
1644
1820
  operationKind === 'request' ? reader.nonZeroU64('replyRouteId') : undefined;
1645
1821
  reader.end();
@@ -1652,8 +1828,13 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
1652
1828
  operation,
1653
1829
  ...(replyRouteId === undefined ? {} : { replyRouteId })
1654
1830
  };
1655
- return version === 1
1656
- ? { ...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
+ }
1657
1838
  : {
1658
1839
  ...common,
1659
1840
  activation: 'missing',
@@ -1663,12 +1844,12 @@ export function decodeStatefulHeader(frame: Uint8Array): ServiceStatefulWireReco
1663
1844
  }
1664
1845
  case M6bServiceWireCommand.messageFollow: {
1665
1846
  requireFlags(command.flags, 0);
1666
- if (reader.u8('messageFollow.version') !== 1) {
1847
+ if (reader.u8('messageFollow.version') !== MESSAGE_FOLLOW_VERSION) {
1667
1848
  fail('Unsupported Message Follow version.');
1668
1849
  }
1669
1850
  const length = reader.u32('messageFollow.length');
1670
1851
  const end = reader.offset + length;
1671
- if (length > 16 * 1024 * 1024 || end > reader.bytes.byteLength) {
1852
+ if (length > MESSAGE_FOLLOW_MAX_BODY_BYTES || end > reader.bytes.byteLength) {
1672
1853
  fail('Invalid Message Follow body length.');
1673
1854
  }
1674
1855
  const record: ServiceMessageFollowRecord = {
@@ -2097,7 +2278,11 @@ function applicationPayload(value: NonNullable<ServiceMaintenanceReplyRelay['pay
2097
2278
  u32(value.bytes.byteLength, 'payload.length'),
2098
2279
  value.bytes
2099
2280
  );
2100
- 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
+ );
2101
2286
  }
2102
2287
 
2103
2288
  function prefix(command: number, flags = 0): Buffer {
@@ -2124,20 +2309,6 @@ function actorAuthorityFence(value: ServiceBoundSessionActorAuthority): Buffer {
2124
2309
  );
2125
2310
  }
2126
2311
 
2127
- function spotFence(value: ServiceSpotRouteFence): Buffer {
2128
- return concat(
2129
- spotRef(value.spot),
2130
- rid(value.targetNodeRid, 'targetNodeRid'),
2131
- u64(value.targetNodeGeneration),
2132
- u64(value.authorityOwnerGeneration),
2133
- u64(value.ownerLeaseGeneration)
2134
- );
2135
- }
2136
-
2137
- function directSpotFence(value: ServiceDirectSpotRouteFence): Buffer {
2138
- return concat(spotFence(value), text16(value.storeVersion, 'storeVersion'));
2139
- }
2140
-
2141
2312
  function messageFollowRoute(value: ServiceMessageFollowRoute): Buffer {
2142
2313
  const body =
2143
2314
  value.kind === 'actor'
@@ -2196,7 +2367,7 @@ function validateMessageFollowRecord(
2196
2367
  if (value.originalOperation.high === 0n && value.originalOperation.low === 0n) {
2197
2368
  invalid('Message Follow originalOperation must not be zero.');
2198
2369
  }
2199
- if (value.originalReplyRouteId < 0n || value.originalReplyRouteId > 0xffff_ffff_ffff_ffffn) {
2370
+ if (value.originalReplyRouteId < 0n || value.originalReplyRouteId > UINT64_MAX) {
2200
2371
  invalid('Message Follow originalReplyRouteId must be a u64.');
2201
2372
  }
2202
2373
  }
@@ -2205,12 +2376,6 @@ function actorRef(value: ServiceActorRef): Buffer {
2205
2376
  return concat(text8(value.actorId, 'actorId'), u64(value.generation));
2206
2377
  }
2207
2378
 
2208
- function optionalActor(value: ServiceActorRef | undefined): Buffer {
2209
- return value === undefined
2210
- ? Buffer.of(0)
2211
- : concat(text8(value.actorId, 'sourceActorId'), u64(value.generation));
2212
- }
2213
-
2214
2379
  function spotRef(value: ServiceSpotRef): Buffer {
2215
2380
  return concat(rid(value.spotId, 'spotId'), u64(value.generation));
2216
2381
  }
@@ -2262,7 +2427,7 @@ function u64(value: bigint): Buffer {
2262
2427
  }
2263
2428
 
2264
2429
  function u64Any(value: bigint): Buffer {
2265
- if (value < 0n || value > 0xffff_ffff_ffff_ffffn) {
2430
+ if (value < 0n || value > UINT64_MAX) {
2266
2431
  throw new RangeError('u64 value is out of range.');
2267
2432
  }
2268
2433
  const result = Buffer.alloc(8);
@@ -2271,7 +2436,7 @@ function u64Any(value: bigint): Buffer {
2271
2436
  }
2272
2437
 
2273
2438
  function requirePositive(value: bigint | undefined, name: string): bigint {
2274
- if (value === undefined || value < 1n || value > 0xffff_ffff_ffff_ffffn) {
2439
+ if (value === undefined || value < 1n || value > UINT64_MAX) {
2275
2440
  throw new RangeError(`${name} must be a non-zero u64.`);
2276
2441
  }
2277
2442
  return value;
@@ -2409,20 +2574,6 @@ class Reader {
2409
2574
  };
2410
2575
  }
2411
2576
 
2412
- optionalActor(): ServiceActorRef | undefined {
2413
- const length = this.u8('sourceActorId.length');
2414
- if (length === 0) return undefined;
2415
- this.need(length, 'sourceActorId');
2416
- const bytes = this.bytes.subarray(this.offset, this.offset + length);
2417
- this.offset += length;
2418
- const actorId = decodeCanonicalServiceWireText(bytes, 'sourceActorId', fail);
2419
- return {
2420
- nodeRid: '',
2421
- actorId,
2422
- generation: this.nonZeroU64('sourceActorGeneration')
2423
- };
2424
- }
2425
-
2426
2577
  spotRef(): ServiceSpotRef {
2427
2578
  return {
2428
2579
  spotId: this.rid('spotId'),
@@ -2441,24 +2592,6 @@ class Reader {
2441
2592
  };
2442
2593
  }
2443
2594
 
2444
- spotFence(): ServiceSpotRouteFence {
2445
- const spot = this.spotRef();
2446
- return {
2447
- spot,
2448
- targetNodeRid: this.rid('targetNodeRid'),
2449
- targetNodeGeneration: this.nonZeroU64('targetNodeGeneration'),
2450
- authorityOwnerGeneration: this.nonZeroU64('authorityOwnerGeneration'),
2451
- ownerLeaseGeneration: this.nonZeroU64('ownerLeaseGeneration')
2452
- };
2453
- }
2454
-
2455
- directSpotFence(): ServiceDirectSpotRouteFence {
2456
- return {
2457
- ...this.spotFence(),
2458
- storeVersion: this.text16('storeVersion')
2459
- };
2460
- }
2461
-
2462
2595
  messageFollowRoute(name: string): ServiceMessageFollowRoute {
2463
2596
  const kind = this.u8(`${name}.objectKind`);
2464
2597
  const length = this.u16(`${name}.length`);
@@ -2827,7 +2960,7 @@ class FrozenReader {
2827
2960
  }
2828
2961
 
2829
2962
  applicationPayload(): NonNullable<ServiceMaintenanceReplyRelay['payload']> {
2830
- if (this.u8('applicationPayload.version') !== 1) {
2963
+ if (this.u8('applicationPayload.version') !== APPLICATION_PAYLOAD_VERSION) {
2831
2964
  fail('Application payload envelope version must be one.');
2832
2965
  }
2833
2966
  const body = this.body32('application payload');
@@ -2984,24 +3117,21 @@ class FrozenReader {
2984
3117
  }
2985
3118
 
2986
3119
  private instanceRoute(): void {
3120
+ const start = this.offset;
2987
3121
  const kind = this.u8('instanceRouteKind');
2988
3122
  if (kind < 1 || kind > 2) fail('Invalid Instance route kind.');
2989
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
+ }
2990
3128
  body.rid8('targetNodeRid');
2991
3129
  body.nonZeroU64('targetNodeGeneration');
2992
3130
  body.text8('targetSpotId');
2993
- if (kind === 1) {
2994
- body.nonZeroU64('objectGeneration');
2995
- body.text8('ownerId');
2996
- body.nonZeroU64('authorityOwnerGeneration');
2997
- body.nonZeroU64('leaseGeneration');
2998
- body.text16('storeVersion');
2999
- } else {
3000
- body.text8('targetMeshName');
3001
- body.text8('stableType');
3002
- body.text8('targetDescriptorVersion');
3003
- body.nonZeroU64('deadlineUnixMs');
3004
- }
3131
+ body.text8('targetMeshName');
3132
+ body.text8('stableType');
3133
+ body.text8('targetDescriptorVersion');
3134
+ body.nonZeroU64('deadlineUnixMs');
3005
3135
  body.end('Instance route');
3006
3136
  }
3007
3137