@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
@@ -126,7 +126,8 @@ export class ZLinkSpotLocationClaims {
126
126
 
127
127
  async beginInstanceClosing(
128
128
  meshName: string,
129
- spotId: RoutingId
129
+ spotId: RoutingId,
130
+ onCommitted: () => void
130
131
  ): Promise<ZLinkInstanceClosingAuthority | undefined> {
131
132
  const canonical = ZLinkLocationKeyCodec.encodeSpotKey({ meshName, spotId });
132
133
  const tracked = this.spots.get(canonical);
@@ -166,38 +167,60 @@ export class ZLinkSpotLocationClaims {
166
167
  return undefined;
167
168
  }
168
169
  tracked.storeVersion = result.storeVersion.value;
169
- this.invalidateSpotRoute?.(tracked.spotId);
170
- let restored = false;
170
+ onCommitted();
171
171
  return {
172
- restoreReady: async () => {
173
- if (restored) return;
174
- const restore = await store.compareExchangeAuthority(key, result.storeVersion, {
172
+ release: () => this.release(meshName, spotId),
173
+ reincarnate: async (initialize) => {
174
+ const reincarnated = await store.compareExchangeAuthority(key, result.storeVersion, {
175
175
  kind: 'put',
176
- generationTransition: 'preserve',
176
+ generationTransition: 'reincarnate',
177
177
  payload: replaceServiceRelocationAuthorityApplicationPayload(
178
- current.payload,
179
- encodeServiceInstanceAuthorityPayload({
180
- state: 'ready',
181
- stableType: decoded.stableType,
182
- spotId: decoded.spotId,
183
- ownerId: decoded.ownerId,
184
- ownerLeaseGeneration: decoded.ownerLeaseGeneration,
185
- ownerMeshName: decoded.ownerMeshName,
186
- ownerNodeRid: decoded.ownerNodeRid,
187
- ownerNodeGeneration: decoded.ownerNodeGeneration
188
- })
178
+ result.payload,
179
+ encodeServiceInstanceAuthorityPayload({ ...decoded, state: 'coldActivating' })
189
180
  )
190
181
  });
191
- if (restore.kind !== 'stored') {
182
+ if (reincarnated.kind !== 'stored') {
192
183
  throw createInternalFrameworkException(
193
- ZLinkFrameworkInternalErrorKind.SpotMoving,
194
- `Instance Spot '${String(spotId)}' Ready authority could not be restored after idle eviction was declined.`,
195
- true
184
+ reincarnated.kind === 'generationExhausted'
185
+ ? ZLinkFrameworkInternalErrorKind.InvalidOperation
186
+ : ZLinkFrameworkInternalErrorKind.SpotMoving,
187
+ `Instance Spot '${String(spotId)}' Closing authority changed before reincarnation.`
196
188
  );
197
189
  }
198
- restored = true;
199
- tracked.storeVersion = restore.storeVersion.value;
200
- this.invalidateSpotRoute?.(tracked.spotId);
190
+ this.trackInstanceAuthority({
191
+ ...tracked,
192
+ objectGeneration: reincarnated.objectGeneration,
193
+ authorityOwnerGeneration: reincarnated.authorityOwnerGeneration,
194
+ storeVersion: reincarnated.storeVersion.value
195
+ });
196
+ this.invalidateSpotRoute?.(spotId);
197
+ try {
198
+ await initialize({ ...reincarnated, kind: 'snapshot', stableType: tracked.stableType });
199
+ const ready = await store.compareExchangeAuthority(key, reincarnated.storeVersion, {
200
+ kind: 'put',
201
+ generationTransition: 'preserve',
202
+ payload: replaceServiceRelocationAuthorityApplicationPayload(
203
+ reincarnated.payload,
204
+ encodeServiceInstanceAuthorityPayload({ ...decoded, state: 'ready' })
205
+ )
206
+ });
207
+ if (ready.kind !== 'stored') {
208
+ throw createInternalFrameworkException(
209
+ ready.kind === 'generationExhausted'
210
+ ? ZLinkFrameworkInternalErrorKind.InvalidOperation
211
+ : ZLinkFrameworkInternalErrorKind.SpotMoving,
212
+ `Instance Spot '${String(spotId)}' reincarnation authority changed before initialization completed.`
213
+ );
214
+ }
215
+ const latest = this.spots.get(canonical);
216
+ if (latest?.kind === 'authority' && latest.objectGeneration === ready.objectGeneration) {
217
+ latest.storeVersion = ready.storeVersion.value;
218
+ }
219
+ return { ...ready, kind: 'snapshot', stableType: tracked.stableType };
220
+ } catch (error) {
221
+ await this.release(meshName, spotId, reincarnated.objectGeneration);
222
+ throw error;
223
+ }
201
224
  }
202
225
  };
203
226
  }
@@ -382,7 +405,12 @@ export interface ZLinkTrackedInstanceAuthority {
382
405
  }
383
406
 
384
407
  export interface ZLinkInstanceClosingAuthority {
385
- restoreReady(): Promise<void>;
408
+ release(): Promise<void>;
409
+ reincarnate?(
410
+ initialize: (
411
+ authority: ZLinkAuthoritySnapshot & { readonly stableType: string }
412
+ ) => Promise<void>
413
+ ): Promise<ZLinkAuthoritySnapshot & { readonly stableType: string }>;
386
414
  }
387
415
 
388
416
  interface TrackedLegacySpot {
@@ -1,3 +1,4 @@
1
+ import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
1
2
  import {
2
3
  ZLinkFrameworkInternalErrorKind,
3
4
  createInternalFrameworkException
@@ -31,6 +32,8 @@ import {
31
32
  matchEveryDeclaredMessageType
32
33
  } from '../../contracts/Configuration/CodecSerializerSelection';
33
34
 
35
+ const MAX_DECLARED_TYPE_SELECTIONS = 1024;
36
+
34
37
  export interface ZLinkSerializerRegistryLike {
35
38
  readonly serializers: ReadonlyMap<string, ZLinkMessageSerializer>;
36
39
  }
@@ -49,7 +52,12 @@ interface ZLinkSerializerSelectionPlan {
49
52
  }
50
53
 
51
54
  const noSerializer = Symbol('noSerializer');
52
- const JSON_CONTENT_TYPE = 'application/json';
55
+ const JSON_CONTENT_TYPE = ZlinkStreamContentType.Json;
56
+ const frameworkJsonReceiveCodec = Symbol('frameworkJsonReceiveCodec');
57
+ const defaultReceiveCodecs: ReadonlyMap<string, typeof frameworkJsonReceiveCodec> = new Map<
58
+ string,
59
+ typeof frameworkJsonReceiveCodec
60
+ >([[JSON_CONTENT_TYPE, frameworkJsonReceiveCodec]]);
53
61
 
54
62
  // Registration maps are created during host configuration and are immutable
55
63
  // for the runtime lifetime. Compile the candidate list and reverse content
@@ -84,9 +92,9 @@ export function encodeFrameworkPayload(
84
92
  return {
85
93
  message: rememberContentType(
86
94
  toRuntimeMessage(payload.toEncodedPayload()),
87
- 'application/octet-stream'
95
+ ZlinkStreamContentType.Raw
88
96
  ),
89
- contentType: 'application/octet-stream'
97
+ contentType: ZlinkStreamContentType.Raw
90
98
  };
91
99
  }
92
100
  declaredType = readZLinkMessageDeclaredType(payload);
@@ -141,7 +149,7 @@ export function decodeFrameworkPayloadMessage<T>(
141
149
  message: Message,
142
150
  registry?: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer>,
143
151
  type?: Type<T>,
144
- contentType = JSON_CONTENT_TYPE,
152
+ contentType: string = JSON_CONTENT_TYPE,
145
153
  packetName?: string,
146
154
  contractPart: 'payload' | 'reply' = 'payload'
147
155
  ): T {
@@ -152,7 +160,7 @@ export function decodeFrameworkTypedPayloadMessage<T>(
152
160
  message: Message,
153
161
  registry?: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer>,
154
162
  type?: Type<T>,
155
- contentType = JSON_CONTENT_TYPE,
163
+ contentType: string = JSON_CONTENT_TYPE,
156
164
  packetName?: string,
157
165
  contractPart: 'payload' | 'reply' = 'payload'
158
166
  ): T {
@@ -167,17 +175,10 @@ function decodeFrameworkPayload<T>(
167
175
  packetName: string | undefined,
168
176
  contractPart: 'payload' | 'reply'
169
177
  ): T {
170
- if (!isCanonicalCodecContentType(contentType)) {
171
- throw unsupportedContentType(contentType);
172
- }
173
- if (contentType !== JSON_CONTENT_TYPE) {
174
- const serializer = serializerMapOf(registry)?.get(contentType);
175
- if (serializer === undefined) throw unsupportedContentType(contentType);
178
+ const codec = receiveCodecFor(contentType, registry);
179
+ if (codec !== frameworkJsonReceiveCodec) {
176
180
  if (message.isEmpty()) return undefined as T;
177
- return serializer.deserialize(
178
- encodedPayloadFromOwned(message.data()),
179
- (type ?? Object) as Type<T>
180
- );
181
+ return codec.deserialize(encodedPayloadFromOwned(message.data()), (type ?? Object) as Type<T>);
181
182
  }
182
183
 
183
184
  if (message.isEmpty()) return undefined as T;
@@ -197,7 +198,7 @@ function decodeFrameworkPayload<T>(
197
198
  export function wrapFrameworkPayloadMessage(
198
199
  message: Message,
199
200
  registry?: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer>,
200
- contentType = JSON_CONTENT_TYPE,
201
+ contentType: string = JSON_CONTENT_TYPE,
201
202
  packetName?: string,
202
203
  contractPart: 'payload' | 'reply' = 'payload'
203
204
  ): ZLinkMessage {
@@ -215,14 +216,10 @@ function decodeFrameworkEncodedPayload<T>(
215
216
  packetName: string | undefined,
216
217
  contractPart: 'payload' | 'reply'
217
218
  ): T {
218
- if (!isCanonicalCodecContentType(contentType)) {
219
- throw unsupportedContentType(contentType);
220
- }
221
- if (contentType !== JSON_CONTENT_TYPE) {
222
- const serializer = serializerMapOf(registry)?.get(contentType);
223
- if (serializer === undefined) throw unsupportedContentType(contentType);
219
+ const codec = receiveCodecFor(contentType, registry);
220
+ if (codec !== frameworkJsonReceiveCodec) {
224
221
  if (payload.isEmpty()) return undefined as T;
225
- return serializer.deserialize(payload, (type ?? Object) as Type<T>);
222
+ return codec.deserialize(payload, (type ?? Object) as Type<T>);
226
223
  }
227
224
  if (payload.isEmpty()) return undefined as T;
228
225
  const text = payload.getString('utf8');
@@ -241,6 +238,20 @@ function decodeFrameworkEncodedPayload<T>(
241
238
  }
242
239
  }
243
240
 
241
+ function receiveCodecFor(
242
+ contentType: string,
243
+ registry: ZLinkSerializerRegistryLike | ReadonlyMap<string, ZLinkMessageSerializer> | undefined
244
+ ): ZLinkMessageSerializer | typeof frameworkJsonReceiveCodec {
245
+ if (!isCanonicalCodecContentType(contentType)) {
246
+ throw unsupportedContentType(contentType);
247
+ }
248
+ const registeredCodec = serializerMapOf(registry)?.get(contentType);
249
+ if (registeredCodec !== undefined) return registeredCodec;
250
+ const defaultCodec = defaultReceiveCodecs.get(contentType);
251
+ if (defaultCodec !== undefined) return defaultCodec;
252
+ throw unsupportedContentType(contentType);
253
+ }
254
+
244
255
  function schemaForDecode(
245
256
  type: Type<unknown> | undefined,
246
257
  packetName: string | undefined,
@@ -316,7 +327,7 @@ function serializerSelectionPlanOf(
316
327
  return cached === noSerializer ? undefined : cached;
317
328
  }
318
329
  const selected = selectSerializerFromEntries(frozenEntries, declaredType);
319
- if (cachedBusinessTypeCount < 1024) {
330
+ if (cachedBusinessTypeCount < MAX_DECLARED_TYPE_SELECTIONS) {
320
331
  outboundByBusinessType.set(declaredType, selected ?? noSerializer);
321
332
  cachedBusinessTypeCount += 1;
322
333
  }
@@ -1,7 +1,10 @@
1
1
  import {
2
2
  ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException
3
+ createInternalFrameworkException,
4
+ requestResultToPublicErrorKind
4
5
  } from '../framework-errors-internal';
6
+ import { ZLinkFrameworkException } from '../../contracts';
7
+ import { RequestResult, SubmitResult } from '../backend/runtime-values';
5
8
  export enum ZLinkSubmitStatus {
6
9
  Submitted = 'submitted',
7
10
  Backpressured = 'backpressured',
@@ -15,6 +18,59 @@ export interface ZLinkSubmitResult {
15
18
  readonly status: ZLinkSubmitStatus;
16
19
  }
17
20
 
21
+ /** Projects the Core submit result once; phase only determines capacity refusal meaning. */
22
+ export function submitToRequestResult(result: number, phase: 'submit' | 'completion'): number {
23
+ switch (result) {
24
+ case SubmitResult.Ok:
25
+ return RequestResult.Ok;
26
+ case SubmitResult.Backpressured:
27
+ return phase === 'submit' ? RequestResult.NotConnected : RequestResult.TimedOut;
28
+ case SubmitResult.NotConnected:
29
+ return RequestResult.NotConnected;
30
+ case SubmitResult.NotFound:
31
+ return RequestResult.NotFound;
32
+ case SubmitResult.NotAdmitted:
33
+ return RequestResult.Rejected;
34
+ case SubmitResult.InvalidHandle:
35
+ case SubmitResult.InvalidArgument:
36
+ case SubmitResult.ThreadViolation:
37
+ return RequestResult.InvalidArgument;
38
+ case SubmitResult.InvalidState:
39
+ return RequestResult.InvalidState;
40
+ case SubmitResult.NotSupported:
41
+ return RequestResult.NotSupported;
42
+ case SubmitResult.Terminated:
43
+ return RequestResult.Terminated;
44
+ default:
45
+ return RequestResult.InternalError;
46
+ }
47
+ }
48
+
49
+ export function classifySubmitResult(
50
+ result: number,
51
+ operation: string,
52
+ phase: 'submit' | 'completion' = 'completion'
53
+ ): ZLinkSubmitResult {
54
+ const terminal = submitToRequestResult(result, phase);
55
+ switch (terminal) {
56
+ case RequestResult.Ok:
57
+ return { status: ZLinkSubmitStatus.Submitted };
58
+ case RequestResult.TimedOut:
59
+ return { status: ZLinkSubmitStatus.TimedOut };
60
+ case RequestResult.NotFound:
61
+ return { status: ZLinkSubmitStatus.TargetNotFound };
62
+ case RequestResult.NotConnected:
63
+ return { status: ZLinkSubmitStatus.RouteNotConnected };
64
+ case RequestResult.Terminated:
65
+ return { status: ZLinkSubmitStatus.Shutdown };
66
+ default:
67
+ throw new ZLinkFrameworkException(
68
+ requestResultToPublicErrorKind(terminal),
69
+ `${operation} failed with submit result ${result}.`
70
+ );
71
+ }
72
+ }
73
+
18
74
  export function requireOneWayCompletion(
19
75
  result: ZLinkSubmitResult,
20
76
  operation: string,
@@ -2260,7 +2260,7 @@ function writeRetiredBoundSessionRouteFence(input: RetiredBoundSessionRouteFence
2260
2260
  export function decodeRetiredBoundSessionRouteFence(bytes: Uint8Array, context: ServiceWireDecoderContext): RetiredBoundSessionRouteFence { const reader = new Reader(bytes); const value = readRetiredBoundSessionRouteFence(reader, context, {}, 0); reader.done("retired-bound-session-route-fence"); return value; }
2261
2261
  export function encodeRetiredBoundSessionRouteFence(value: RetiredBoundSessionRouteFence, context: ServiceWireDecoderContext): Uint8Array { const writer = new Writer(); writeRetiredBoundSessionRouteFence(value, writer, context, {}, 0); return writer.result(); }
2262
2262
 
2263
- export type SessionRelocationRouteUpdate = { readonly action: "commit"; readonly previousAuthorityOwnerGeneration: NonzeroU64; readonly targetAuthorityOwnerGeneration: NonzeroU64; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64 } | { readonly action: "abort"; readonly currentAuthorityOwnerGeneration: NonzeroU64 };
2263
+ export type SessionRelocationRouteUpdate = { readonly action: "commit"; readonly previousAuthorityOwnerGeneration: NonzeroU64; readonly targetAuthorityOwnerGeneration: NonzeroU64; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetOwnerLeaseGeneration: NonzeroU64 } | { readonly action: "abort"; readonly currentAuthorityOwnerGeneration: NonzeroU64 };
2264
2264
 
2265
2265
  function readSessionRelocationRouteUpdate(reader: Reader, context: ServiceWireDecoderContext, enclosing: any, flags: number): SessionRelocationRouteUpdate {
2266
2266
  void context; void enclosing; void flags;
@@ -2280,6 +2280,9 @@ function readSessionRelocationRouteUpdate(reader: Reader, context: ServiceWireDe
2280
2280
  value["targetNodeGeneration"] = readNonzeroU64(body, context, value, flags);
2281
2281
 
2282
2282
 
2283
+ value["targetOwnerLeaseGeneration"] = readNonzeroU64(body, context, value, flags);
2284
+
2285
+
2283
2286
  } else if (same(value["action"], "abort")) {
2284
2287
  value["currentAuthorityOwnerGeneration"] = readNonzeroU64(body, context, value, flags);
2285
2288
 
@@ -2313,8 +2316,12 @@ function writeSessionRelocationRouteUpdate(input: SessionRelocationRouteUpdate,
2313
2316
 
2314
2317
 
2315
2318
  writeNonzeroU64(numeric(value["targetNodeGeneration"]), body, context, value, flags);
2319
+ if (value["targetOwnerLeaseGeneration"] === undefined) fail("targetOwnerLeaseGeneration required");
2320
+
2321
+
2322
+ writeNonzeroU64(numeric(value["targetOwnerLeaseGeneration"]), body, context, value, flags);
2316
2323
  } else if (same(value["action"], "abort")) {
2317
- if (value["previousAuthorityOwnerGeneration"] !== undefined || value["targetAuthorityOwnerGeneration"] !== undefined || value["targetNodeRid"] !== undefined || value["targetNodeGeneration"] !== undefined) fail("session-relocation-route-update discriminator agreement");
2324
+ if (value["previousAuthorityOwnerGeneration"] !== undefined || value["targetAuthorityOwnerGeneration"] !== undefined || value["targetNodeRid"] !== undefined || value["targetNodeGeneration"] !== undefined || value["targetOwnerLeaseGeneration"] !== undefined) fail("session-relocation-route-update discriminator agreement");
2318
2325
  if (value["currentAuthorityOwnerGeneration"] === undefined) fail("currentAuthorityOwnerGeneration required");
2319
2326
 
2320
2327
 
@@ -4250,7 +4257,7 @@ function readChannelEntry(reader: Reader, context: ServiceWireDecoderContext, en
4250
4257
 
4251
4258
 
4252
4259
  value["weight"] = readU32(reader, context, value, flags);
4253
- if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 100n) fail("weight constraint");
4260
+ if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 10000n) fail("weight constraint");
4254
4261
 
4255
4262
 
4256
4263
 
@@ -4266,7 +4273,7 @@ function writeChannelEntry(input: ChannelEntry, writer: Writer, context: Service
4266
4273
 
4267
4274
  writeText8(value["channelName"], writer, context, value, flags);
4268
4275
  if (value["weight"] === undefined) fail("weight required");
4269
- if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 100n) fail("weight constraint");
4276
+ if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 10000n) fail("weight constraint");
4270
4277
 
4271
4278
  writeU32(value["weight"], writer, context, value, flags);
4272
4279
  }
@@ -4444,7 +4451,7 @@ function readDescriptorExtension(reader: Reader, context: ServiceWireDecoderCont
4444
4451
  item.done("objectRole"); break;
4445
4452
  case 8:
4446
4453
  if (value["placementWeight"] !== undefined) fail("descriptor-extension duplicate"); value["placementWeight"] = readU32(item, context, value, flags);
4447
- if (numeric(value["placementWeight"]) < 0n || numeric(value["placementWeight"]) > 100n) fail("placementWeight constraint");
4454
+ if (numeric(value["placementWeight"]) < 0n || numeric(value["placementWeight"]) > 10000n) fail("placementWeight constraint");
4448
4455
 
4449
4456
  item.done("placementWeight"); break;
4450
4457
  case 9:
@@ -4519,7 +4526,7 @@ function writeDescriptorExtension(input: DescriptorExtension, writer: Writer, co
4519
4526
  const item = new Writer(); writeObjectRole(value["objectRole"], item, context, value, flags); const itemBytes = item.result(); writeU8(7, body, context, value, flags); writeU32(itemBytes.length, body, context, value, flags); body.put(itemBytes);
4520
4527
  }
4521
4528
  if (value["placementWeight"] !== undefined) {
4522
- if (numeric(value["placementWeight"]) < 0n || numeric(value["placementWeight"]) > 100n) fail("placementWeight constraint");
4529
+ if (numeric(value["placementWeight"]) < 0n || numeric(value["placementWeight"]) > 10000n) fail("placementWeight constraint");
4523
4530
 
4524
4531
  const item = new Writer(); writeU32(value["placementWeight"], item, context, value, flags); const itemBytes = item.result(); writeU8(8, body, context, value, flags); writeU32(itemBytes.length, body, context, value, flags); body.put(itemBytes);
4525
4532
  }
@@ -4653,7 +4660,7 @@ function readClientServerAdmission(reader: Reader, context: ServiceWireDecoderCo
4653
4660
 
4654
4661
 
4655
4662
  value["weight"] = readU32(body, context, value, flags);
4656
- if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 100n) fail("weight constraint");
4663
+ if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 10000n) fail("weight constraint");
4657
4664
 
4658
4665
  value["runtimeState"] = readRuntimeState(body, context, value, flags);
4659
4666
 
@@ -4719,7 +4726,7 @@ function writeClientServerAdmission(input: ClientServerAdmission, writer: Writer
4719
4726
 
4720
4727
  writeNonzeroU64(numeric(value["descriptorRevision"]), body, context, value, flags);
4721
4728
  if (value["weight"] === undefined) fail("weight required");
4722
- if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 100n) fail("weight constraint");
4729
+ if (numeric(value["weight"]) < 0n || numeric(value["weight"]) > 10000n) fail("weight constraint");
4723
4730
 
4724
4731
  writeU32(value["weight"], body, context, value, flags);
4725
4732
  if (value["runtimeState"] === undefined) fail("runtimeState required");
@@ -6369,7 +6376,7 @@ function writeFrozenRecord(input: FrozenRecord, writer: Writer, context: Service
6369
6376
  export function decodeFrozenRecord(bytes: Uint8Array, context: ServiceWireDecoderContext): FrozenRecord { const reader = new Reader(bytes); const value = readFrozenRecord(reader, context, {}, 0); reader.done("frozen-record"); return value; }
6370
6377
  export function encodeFrozenRecord(value: FrozenRecord, context: ServiceWireDecoderContext): Uint8Array { const writer = new Writer(); writeFrozenRecord(value, writer, context, {}, 0); return writer.result(); }
6371
6378
 
6372
- export type InstanceRouteV1 = { readonly routeKind: "ready"; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetSpotId: Text8; readonly authority: AuthorityGenerationFence } | { readonly routeKind: "coldActivation"; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetSpotId: Text8; readonly targetMeshName: Text8; readonly stableType: Text8; readonly targetDescriptorVersion: Text8; readonly deadlineUnixMs: NonzeroU64 };
6379
+ export type InstanceRouteV1 = { readonly routeKind: "ready"; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetSpotId: Text8; readonly authority: AuthorityGenerationFence; readonly instanceIntent: Bool8 } | { readonly routeKind: "coldActivation"; readonly targetNodeRid: Rid; readonly targetNodeGeneration: NonzeroU64; readonly targetSpotId: Text8; readonly targetMeshName: Text8; readonly stableType: Text8; readonly targetDescriptorVersion: Text8; readonly deadlineUnixMs: NonzeroU64 };
6373
6380
 
6374
6381
  function readInstanceRouteV1(reader: Reader, context: ServiceWireDecoderContext, enclosing: any, flags: number): InstanceRouteV1 {
6375
6382
  void context; void enclosing; void flags;
@@ -6389,6 +6396,9 @@ function readInstanceRouteV1(reader: Reader, context: ServiceWireDecoderContext,
6389
6396
  value["authority"] = readAuthorityGenerationFence(body, context, value, flags);
6390
6397
 
6391
6398
 
6399
+ value["instanceIntent"] = readBool8(body, context, value, flags);
6400
+
6401
+
6392
6402
  } else if (same(value["routeKind"], "coldActivation")) {
6393
6403
  value["targetNodeRid"] = readRid(body, context, value, flags);
6394
6404
 
@@ -6434,6 +6444,9 @@ function* readIncrementalInstanceRouteV1(reader: IncrementalInput, context: Serv
6434
6444
  value["authority"] = yield* readIncrementalAuthorityGenerationFence(body, context, value, flags);
6435
6445
 
6436
6446
 
6447
+ value["instanceIntent"] = yield* readIncrementalBool8(body, context, value, flags);
6448
+
6449
+
6437
6450
  } else if (same(value["routeKind"], "coldActivation")) {
6438
6451
  value["targetNodeRid"] = yield* readIncrementalRid(body, context, value, flags);
6439
6452
 
@@ -6484,8 +6497,12 @@ function writeInstanceRouteV1(input: InstanceRouteV1, writer: Writer, context: S
6484
6497
 
6485
6498
 
6486
6499
  writeAuthorityGenerationFence(value["authority"], body, context, value, flags);
6500
+ if (value["instanceIntent"] === undefined) fail("instanceIntent required");
6501
+
6502
+
6503
+ writeBool8(value["instanceIntent"], body, context, value, flags);
6487
6504
  } else if (same(value["routeKind"], "coldActivation")) {
6488
- if (value["authority"] !== undefined) fail("instance-route-v1 discriminator agreement");
6505
+ if (value["authority"] !== undefined || value["instanceIntent"] !== undefined) fail("instance-route-v1 discriminator agreement");
6489
6506
  if (value["targetNodeRid"] === undefined) fail("targetNodeRid required");
6490
6507
 
6491
6508
 
@@ -1,4 +1,4 @@
1
- // <auto-generated> DO NOT EDIT. schema-sha256: 5099b874cd4e2fbff7fea9b821dd8fd670e0de676c6e409ba6e30455dc457e44
1
+ // <auto-generated> DO NOT EDIT. schema-sha256: 77748ba8f585cb70ad337fa3203b5f9b9aa7a89e7f95f7fdc20159c30987be0f
2
2
  export interface ServiceWireRouteFence { readonly id: string; readonly generation: bigint; readonly targetNodeRid: Uint8Array; readonly targetNodeGeneration: bigint; readonly expectedAuthorityOwnerGeneration: bigint; readonly expectedOwnerLeaseGeneration: bigint; }
3
3
  export interface ApplicationPayloadEnvelopeV1 { readonly packetName: string; readonly contentType: string; readonly payload: Uint8Array; }
4
4
  export interface ActorJoin28 { readonly correlation: bigint; readonly actor: ServiceWireRouteFence; readonly entry: boolean; readonly targetSpot: ServiceWireRouteFence; readonly payload?: ApplicationPayloadEnvelopeV1; }
@@ -96,7 +96,7 @@ export interface ServiceWireRequestSourceFence { readonly sourceOwnerId:string;r
96
96
  export interface ServiceWireAuthorityFence { readonly objectGeneration:bigint;readonly ownerId:string;readonly authorityOwnerGeneration:bigint;readonly leaseGeneration:bigint;readonly storeVersion:string; }
97
97
  export type ServiceWireRelocationRole="source"|"target"|"coordinator";
98
98
  export type ServiceWireReplyRelayContext={readonly contextKind:"coldActivation";readonly completionKind:"readyBarrier"|"activationFailure";readonly authority:ServiceWireAuthorityFence}|{readonly contextKind:"maintenanceRelocation";readonly relocation:ServiceWireRelocationId;readonly targetAttemptGeneration:bigint;readonly coordinator:ServiceWireCoordinatorFence;readonly participantId:bigint;readonly sequence:bigint};
99
- export type ServiceWireSessionRouteUpdate={readonly action:"commit";readonly previousAuthorityOwnerGeneration:bigint;readonly targetAuthorityOwnerGeneration:bigint;readonly targetNodeRid:Uint8Array;readonly targetNodeGeneration:bigint}|{readonly action:"abort";readonly currentAuthorityOwnerGeneration:bigint};
99
+ export type ServiceWireSessionRouteUpdate={readonly action:"commit";readonly previousAuthorityOwnerGeneration:bigint;readonly targetAuthorityOwnerGeneration:bigint;readonly targetNodeRid:Uint8Array;readonly targetNodeGeneration:bigint;readonly targetOwnerLeaseGeneration:bigint}|{readonly action:"abort";readonly currentAuthorityOwnerGeneration:bigint};
100
100
  export interface ReplyRelay33 {readonly operation:ServiceWireOperationId;readonly replyRouteId:bigint;readonly context:ServiceWireReplyRelayContext;readonly terminalResult:number;readonly failureCode:number;readonly payload?:ApplicationPayloadEnvelopeV1;}
101
101
  export interface ReplyRelayAck46 {readonly relocation:ServiceWireRelocationId;readonly coordinator:ServiceWireCoordinatorFence;readonly operation:ServiceWireOperationId;readonly replyRouteId:bigint;readonly requestSource:ServiceWireRequestSourceFence;readonly status:"terminalReceived"|"alreadyTerminal";}
102
102
  export interface RelocationReady30 {readonly relocation:ServiceWireRelocationId;readonly targetAttemptGeneration:bigint;readonly coordinator:ServiceWireCoordinatorFence;readonly target:ServiceWireTargetFence;readonly object:RelocationObjectIdentity;readonly senderRole:ServiceWireRelocationRole;}
@@ -128,8 +128,8 @@ function b3WriteContext(out:number[],v:ServiceWireReplyRelayContext):void{out.pu
128
128
  function b3ReadContext(bytes:Uint8Array,at:{value:number}):ServiceWireReplyRelayContext{const kind=read8(bytes,at),end=boundedEnd(bytes,at,read16(bytes,at),"reply context");let value:ServiceWireReplyRelayContext;if(kind===1){const completion=read8(bytes,at),inner=boundedEnd(bytes,at,read16(bytes,at),"cold activation");if(completion<1||completion>2)throw new RangeError("completion kind");const authority=b3ReadAuthority(bytes,at);exactEnd(at,inner,"cold activation");value={contextKind:"coldActivation",completionKind:completion===1?"readyBarrier":"activationFailure",authority};}else if(kind===2)value={contextKind:"maintenanceRelocation",relocation:b3ReadId(bytes,at,"relocation"),targetAttemptGeneration:nonzero64(bytes,at,"target attempt"),coordinator:b3ReadCoordinator(bytes,at),participantId:nonzero64(bytes,at,"participant"),sequence:nonzero64(bytes,at,"sequence")};else throw new RangeError("reply context kind");exactEnd(at,end,"reply context");return value;}
129
129
  const b3FailureResults=new Map<number,number>([[1,102],[2,105],[3,107],[4,107],[5,105],[6,102],[7,107],[8,102],[9,102],[10,102],[11,102],[12,104],[13,105],[14,102],[15,106],[16,104],[17,105],[18,106],[19,105],[20,105],[21,107],[22,106],[33,107],[34,107],[35,105]]);
130
130
  function b3ValidTerminal(result:number,failure:number,payload:boolean):void{const boundary=[101,103,108,109,110,111,112,113];if(result===0){if(failure!==0)throw new RangeError("terminal failure");return;}if(payload)throw new RangeError("failure payload");if(boundary.includes(result)){if(failure!==0)throw new RangeError("boundary failure");return;}if(b3FailureResults.get(failure)!==result)throw new RangeError("typed failure");}
131
- function b3WriteRoute(out:number[],v:ServiceWireSessionRouteUpdate):void{out.push(v.action==="commit"?1:2);body16(out,b=>{if(v.action==="commit"){if(v.previousAuthorityOwnerGeneration===0n||v.targetAuthorityOwnerGeneration===0n||v.targetNodeGeneration===0n)throw new RangeError("route commit");u64(b,v.previousAuthorityOwnerGeneration);u64(b,v.targetAuthorityOwnerGeneration);rid(b,v.targetNodeRid);u64(b,v.targetNodeGeneration);}else{if(v.currentAuthorityOwnerGeneration===0n)throw new RangeError("route abort");u64(b,v.currentAuthorityOwnerGeneration);}});}
132
- function b3ReadRoute(bytes:Uint8Array,at:{value:number}):ServiceWireSessionRouteUpdate{const action=read8(bytes,at),end=boundedEnd(bytes,at,read16(bytes,at),"session route");let value:ServiceWireSessionRouteUpdate;if(action===1)value={action:"commit",previousAuthorityOwnerGeneration:nonzero64(bytes,at,"previous authority"),targetAuthorityOwnerGeneration:nonzero64(bytes,at,"target authority"),targetNodeRid:readRid(bytes,at),targetNodeGeneration:nonzero64(bytes,at,"target node")};else if(action===2)value={action:"abort",currentAuthorityOwnerGeneration:nonzero64(bytes,at,"current authority")};else throw new RangeError("route action");exactEnd(at,end,"session route");return value;}
131
+ function b3WriteRoute(out:number[],v:ServiceWireSessionRouteUpdate):void{out.push(v.action==="commit"?1:2);body16(out,b=>{if(v.action==="commit"){if(v.previousAuthorityOwnerGeneration===0n||v.targetAuthorityOwnerGeneration===0n||v.targetNodeGeneration===0n||v.targetOwnerLeaseGeneration===0n)throw new RangeError("route commit");u64(b,v.previousAuthorityOwnerGeneration);u64(b,v.targetAuthorityOwnerGeneration);rid(b,v.targetNodeRid);u64(b,v.targetNodeGeneration);u64(b,v.targetOwnerLeaseGeneration);}else{if(v.currentAuthorityOwnerGeneration===0n)throw new RangeError("route abort");u64(b,v.currentAuthorityOwnerGeneration);}});}
132
+ function b3ReadRoute(bytes:Uint8Array,at:{value:number}):ServiceWireSessionRouteUpdate{const action=read8(bytes,at),end=boundedEnd(bytes,at,read16(bytes,at),"session route");let value:ServiceWireSessionRouteUpdate;if(action===1)value={action:"commit",previousAuthorityOwnerGeneration:nonzero64(bytes,at,"previous authority"),targetAuthorityOwnerGeneration:nonzero64(bytes,at,"target authority"),targetNodeRid:readRid(bytes,at),targetNodeGeneration:nonzero64(bytes,at,"target node"),targetOwnerLeaseGeneration:nonzero64(bytes,at,"target lease")};else if(action===2)value={action:"abort",currentAuthorityOwnerGeneration:nonzero64(bytes,at,"current authority")};else throw new RangeError("route action");exactEnd(at,end,"session route");return value;}
133
133
  function b3WriteSession(out:number[],v:{readonly sessionOwnerNodeRid:Uint8Array;readonly sessionOwnerNodeGeneration:bigint;readonly sessionOwnerId:string;readonly sessionOwnerLeaseGeneration:bigint;readonly sessionRid:Uint8Array;readonly bindingGeneration:bigint}):void{rid(out,v.sessionOwnerNodeRid);if(v.sessionOwnerNodeGeneration===0n||v.sessionOwnerLeaseGeneration===0n||v.bindingGeneration===0n)throw new RangeError("session");u64(out,v.sessionOwnerNodeGeneration);text8(out,v.sessionOwnerId);u64(out,v.sessionOwnerLeaseGeneration);rid(out,v.sessionRid);u64(out,v.bindingGeneration);}
134
134
  function b3ReadSession(bytes:Uint8Array,at:{value:number}){return{sessionOwnerNodeRid:readRid(bytes,at),sessionOwnerNodeGeneration:nonzero64(bytes,at,"session owner node"),sessionOwnerId:readText8(bytes,at),sessionOwnerLeaseGeneration:nonzero64(bytes,at,"session owner lease"),sessionRid:readRid(bytes,at),bindingGeneration:nonzero64(bytes,at,"binding generation")};}
135
135
  function b3Finish(at:{value:number},bytes:Uint8Array,name:string):void{exactEnd(at,bytes.length,name);}
@@ -1,6 +1,6 @@
1
1
  import type { ActorRef, RoutingId, ZLinkActor, ZLinkActorJoinOperationId } from '../../contracts';
2
2
  import type { ZLinkRemoteBoundSessionTarget } from '../actors/actor-runtime-state';
3
- import type { ZLinkDeferredJoinAcceptedRoot } from '../actors/deferred-join-accepted-journal';
3
+ import type { ZLinkDeferredJoinCompletion } from '../actors/deferred-join-completion';
4
4
  import type { ZLinkActorRequestTerminal } from './spot-actor-packet-dispatch';
5
5
 
6
6
  const ADMISSION_RETENTION_MS = 30_000;
@@ -57,7 +57,7 @@ export interface ZLinkFormalRemoteActorAdmissionOutcome {
57
57
  readonly actorRef: ActorRef;
58
58
  readonly reply?: Buffer;
59
59
  readonly replyContentType?: string;
60
- readonly deferredJoinRoot?: ZLinkDeferredJoinAcceptedRoot;
60
+ readonly deferredJoinCompletion?: ZLinkDeferredJoinCompletion;
61
61
  }
62
62
 
63
63
  export interface ZLinkFormalRemoteActorAdmissionFailure {
@@ -282,9 +282,9 @@ export class ZLinkFormalRemoteActorAdmissionRegistry {
282
282
  ...(outcome.replyContentType === undefined
283
283
  ? {}
284
284
  : { replyContentType: outcome.replyContentType }),
285
- ...(outcome.deferredJoinRoot === undefined
285
+ ...(outcome.deferredJoinCompletion === undefined
286
286
  ? {}
287
- : { deferredJoinRoot: outcome.deferredJoinRoot })
287
+ : { deferredJoinCompletion: outcome.deferredJoinCompletion })
288
288
  };
289
289
  entry.resolveResult(entry.result);
290
290
  if (!outcome.accepted) {
@@ -314,7 +314,7 @@ export class ZLinkFormalRemoteActorAdmissionRegistry {
314
314
  entry.actor = actor;
315
315
  }
316
316
 
317
- attachDeferredJoinRoot(transferId: string, root: ZLinkDeferredJoinAcceptedRoot): void {
317
+ attachDeferredJoinCompletion(transferId: string, root: ZLinkDeferredJoinCompletion): void {
318
318
  const entry = this.admissions.get(transferId);
319
319
  if (
320
320
  entry === undefined ||
@@ -325,7 +325,7 @@ export class ZLinkFormalRemoteActorAdmissionRegistry {
325
325
  ) {
326
326
  throw new Error(`Remote actor admission '${transferId}' cannot attach deferred recovery.`);
327
327
  }
328
- entry.result = { ...entry.result, deferredJoinRoot: root };
328
+ entry.result = { ...entry.result, deferredJoinCompletion: root };
329
329
  }
330
330
 
331
331
  abort(transferId: string): void {
@@ -1,5 +1,5 @@
1
1
  import type { RoutingId, ZLinkActor } from '../../contracts';
2
- import type { ZLinkDeferredJoinAcceptedRoot } from '../actors';
2
+ import type { ZLinkDeferredJoinCompletion, ZLinkRemoteBoundSessionTarget } from '../actors';
3
3
  import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
4
4
  import { ZLinkStateLane } from '../execution/state-lane';
5
5
 
@@ -8,7 +8,9 @@ export interface ZLinkFormalRemoteActorTransfer {
8
8
  readonly spotId: RoutingId;
9
9
  readonly transferId: string;
10
10
  readonly handoffBacklog: readonly ZLinkActorHandoffPacket[];
11
- readonly deferredJoinRoot?: ZLinkDeferredJoinAcceptedRoot;
11
+ readonly deferredJoinCompletion?: ZLinkDeferredJoinCompletion;
12
+ /** The Session seal this relocation carries until it publishes command 44. */
13
+ readonly sealedSession?: ZLinkRemoteBoundSessionTarget;
12
14
  readonly targetLifecycleCompleted: Promise<void>;
13
15
  readonly sourceLeaveSubmitted: Promise<boolean>;
14
16
  }
@@ -43,7 +45,8 @@ export class ZLinkFormalRemoteActorTransferRegistry {
43
45
  readonly spotId: RoutingId;
44
46
  readonly transferId: string;
45
47
  readonly handoffBacklog: readonly ZLinkActorHandoffPacket[];
46
- readonly deferredJoinRoot?: ZLinkDeferredJoinAcceptedRoot;
48
+ readonly deferredJoinCompletion?: ZLinkDeferredJoinCompletion;
49
+ readonly sealedSession?: ZLinkRemoteBoundSessionTarget;
47
50
  }): ZLinkFormalRemoteActorTransfer {
48
51
  const existingByActor = this.transfers.get(input.actor.context.actorId)?.transfer;
49
52
  if (existingByActor !== undefined) {