@zlink-systems/framework 0.26.0 → 0.28.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 (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -2,24 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceStatefulRuntime = exports.ServiceInstanceActivationRedirectError = void 0;
4
4
  exports.statefulMailboxData = statefulMailboxData;
5
+ const stream_wire_1 = require("@zlink-systems/stream-wire");
5
6
  const node_async_hooks_1 = require("node:async_hooks");
7
+ const contracts_1 = require("../../contracts");
8
+ const service_authority_payload_codec_1 = require("./service-authority-payload-codec");
9
+ const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
6
10
  const abort_1 = require("../abort");
7
- const execution_1 = require("../execution");
8
- const framework_errors_internal_1 = require("../framework-errors-internal");
11
+ const admission_1 = require("../admission");
9
12
  const runtime_values_1 = require("../backend/runtime-values");
10
- const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
11
13
  const message_flow_1 = require("../diagnostics/message-flow");
12
- const service_runtime_contracts_1 = require("./service-runtime-contracts");
14
+ const execution_1 = require("../execution");
15
+ const framework_errors_internal_1 = require("../framework-errors-internal");
16
+ const service_wire_pilot_codec_generated_1 = require("../protocol/service_wire_pilot_codec.generated");
17
+ const actor_join_recovery_codec_1 = require("./actor-join-recovery-codec");
18
+ const operation_registry_1 = require("./operation-registry");
13
19
  const message_follow_suppression_registry_1 = require("./message-follow-suppression-registry");
20
+ const operation_identity_1 = require("./operation-identity");
21
+ const service_metadata_codec_1 = require("./service-metadata-codec");
22
+ const service_runtime_contracts_1 = require("./service-runtime-contracts");
14
23
  const service_stateful_registry_1 = require("./service-stateful-registry");
15
24
  const service_stateful_wire_codec_1 = require("./service-stateful-wire-codec");
16
- const service_wire_pilot_codec_generated_1 = require("../protocol/service_wire_pilot_codec.generated");
17
- const actor_join_recovery_codec_1 = require("./actor-join-recovery-codec");
25
+ const service_wire_binary_primitives_1 = require("./service-wire-binary-primitives");
26
+ const service_wire_constants_generated_1 = require("./service-wire-constants.generated");
18
27
  const service_wire_m6a_codec_1 = require("./service-wire-m6a-codec");
19
- const service_metadata_codec_1 = require("./service-metadata-codec");
20
- const contracts_1 = require("../../contracts");
21
- const Locations_1 = require("../../contracts/Locations");
22
- const ACTOR_ROUTE_STALE = 21;
28
+ const STATEFUL_OPERATION_RETRY_TICK_MS = 20;
29
+ const MAX_NODE_TIMER_DELAY_MS = 2_147_483_647;
23
30
  const SPOT_MOVING = 34;
24
31
  const USER_SPOT_OPERATION_CAPACITY = 65_536;
25
32
  const USER_SPOT_OPERATION_REPLAY_RETENTION_MS = 5 * 60_000;
@@ -47,7 +54,7 @@ class ServiceStatefulRuntime {
47
54
  // behaves exactly like a frame arriving from the receive pump.
48
55
  static detachedIngressScope = node_async_hooks_1.AsyncLocalStorage.snapshot();
49
56
  registry;
50
- operations = new service_stateful_registry_1.ServiceTerminalOperationRegistry();
57
+ operations;
51
58
  sessionDeliveries = new Map();
52
59
  /**
53
60
  * A local Actor owner can replace its own session binding before the
@@ -59,7 +66,6 @@ class ServiceStatefulRuntime {
59
66
  subscriptions = new Map();
60
67
  instanceIntents = new Map();
61
68
  admittedInstanceOperations = new Map();
62
- pendingInstanceTerminals = new Map();
63
69
  pendingInstanceAuthorityTerminals = new Map();
64
70
  instanceApplicationWaiters = new Map();
65
71
  canonicalActorJoinHandoffs = new Map();
@@ -84,22 +90,19 @@ class ServiceStatefulRuntime {
84
90
  messageFollowHandler;
85
91
  mailboxDropHandler;
86
92
  dispatchErrors;
87
- spotAdmissionProvider;
88
93
  dispatchErrorMeshName;
89
94
  admittedUserSpotOperations = new Map();
90
95
  pendingInstanceActivations = new Map();
91
96
  closed = false;
92
- constructor(raw, nodeRid, nodeGeneration) {
97
+ constructor(raw, nodeRid, nodeGeneration, onPendingOperationsChanged) {
93
98
  this.raw = raw;
94
99
  this.nodeRid = nodeRid;
95
100
  this.nodeGeneration = nodeGeneration;
101
+ this.operations = new service_stateful_registry_1.ServiceTerminalOperationRegistry(new operation_registry_1.OperationRegistry(undefined, onPendingOperationsChanged));
96
102
  this.registry = new service_stateful_registry_1.ServiceStatefulRegistry(nodeRid, nodeGeneration);
97
103
  this.registry.createEntrySpot(nodeRid);
98
104
  raw.setServiceIngress((record) => this.ingress(record));
99
105
  }
100
- setSpotAdmissionProvider(provider) {
101
- this.spotAdmissionProvider = provider;
102
- }
103
106
  setMailboxDropHandler(handler) {
104
107
  this.mailboxDropHandler = handler;
105
108
  }
@@ -361,6 +364,7 @@ class ServiceStatefulRuntime {
361
364
  ...(envelope.replyRouteId === undefined ? {} : { replyRouteId: envelope.replyRouteId })
362
365
  };
363
366
  const applicationJobOwner = await this.raw.reserveLocalIngress();
367
+ const terminal = this.activationTerminalCompletion(target, route);
364
368
  try {
365
369
  const admitted = this.enqueueActivatedInstanceSpot({
366
370
  command: service_stateful_wire_codec_1.M6bServiceWireCommand.instanceSpot,
@@ -370,9 +374,9 @@ class ServiceStatefulRuntime {
370
374
  (0, service_stateful_wire_codec_1.encodeInstanceSpotActivationHeader)(target, envelope.sourceNodeGeneration, envelope.sourceNodeRid, envelope.sourceSpotId, envelope.operationKind, envelope.operation, envelope.deadlineUnixMs, envelope.replyRouteId, envelope.metadataFrame !== undefined)
371
375
  ],
372
376
  applicationJobOwner
373
- }, record, Buffer.from(envelope.applicationPayloadFrame), spot, undefined, this.activationTerminalCompletion(target, route), envelope.metadataFrame === undefined
377
+ }, record, Buffer.from(envelope.applicationPayloadFrame), spot, undefined, terminal.onTerminalCompletion, envelope.metadataFrame === undefined
374
378
  ? undefined
375
- : (0, service_metadata_codec_1.validateServiceMetadataFrame)(envelope.metadataFrame), true, this.instanceApplicationTarget(record, route.objectGeneration));
379
+ : (0, service_metadata_codec_1.validateServiceMetadataFrame)(envelope.metadataFrame), terminal.onHandlerTurnStarted, this.instanceApplicationTarget(record, route.objectGeneration));
376
380
  if (admitted !== 'application') {
377
381
  throw new Error('Recovered Instance activation was not admitted to the local queue.');
378
382
  }
@@ -441,10 +445,10 @@ class ServiceStatefulRuntime {
441
445
  }
442
446
  return released;
443
447
  }
448
+ /** Resolves once every first terminal record of an activated Instance message is durable. */
444
449
  waitForInstanceApplicationQuiescence(spotId, signal) {
445
450
  const key = String(spotId);
446
- if ((this.pendingInstanceTerminals.get(key) ?? 0) === 0 &&
447
- (this.pendingInstanceAuthorityTerminals.get(key) ?? 0) === 0) {
451
+ if ((this.pendingInstanceAuthorityTerminals.get(key) ?? 0) === 0) {
448
452
  return Promise.resolve();
449
453
  }
450
454
  if (signal?.aborted === true) {
@@ -658,7 +662,11 @@ class ServiceStatefulRuntime {
658
662
  reporter.report({
659
663
  surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.SpotRoute,
660
664
  messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
661
- reason: serviceSpotPublishFailureReason(undefined, this.raw.isPeerRouteReady(target.descriptor.nodeRoutingId), this.closed),
665
+ reason: this.closed
666
+ ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Shutdown
667
+ : this.raw.isPeerRouteReady(target.descriptor.nodeRoutingId)
668
+ ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure
669
+ : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget,
662
670
  action: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
663
671
  meshName: this.dispatchErrorMeshName,
664
672
  channelName,
@@ -684,10 +692,7 @@ class ServiceStatefulRuntime {
684
692
  const pending = this.operations.register(timeoutMs);
685
693
  const target = this.acceptSpotAuthority(requested);
686
694
  if (target === undefined) {
687
- this.operations.reply(pending.id, {
688
- terminalResult: runtime_values_1.RequestResult.NotFound,
689
- failureCode: ACTOR_ROUTE_STALE
690
- });
695
+ this.operations.reply(pending.id, (0, framework_errors_internal_1.internalFrameworkWireReply)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale));
691
696
  return pending;
692
697
  }
693
698
  const header = (0, service_stateful_wire_codec_1.encodeSpotHeader)('spotRequest', sourceSpotId, target, pending.id, {
@@ -713,10 +718,7 @@ class ServiceStatefulRuntime {
713
718
  const pending = this.operations.register(timeoutMs);
714
719
  const route = this.tryActorFence(target);
715
720
  if (route === undefined) {
716
- this.operations.reply(pending.id, {
717
- terminalResult: runtime_values_1.RequestResult.NotFound,
718
- failureCode: ACTOR_ROUTE_STALE
719
- });
721
+ this.operations.reply(pending.id, (0, framework_errors_internal_1.internalFrameworkWireReply)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale));
720
722
  return pending;
721
723
  }
722
724
  const header = (0, service_stateful_wire_codec_1.encodeActorHeader)('actorRequest', route, pending.id, sourceActor, boundSession === undefined
@@ -728,9 +730,9 @@ class ServiceStatefulRuntime {
728
730
  this.submitRequest(pending, target.nodeRid, [header, (0, service_wire_m6a_codec_1.encodeApplicationPayload)(payload)], timeoutMs, 'actorRequest');
729
731
  return pending;
730
732
  }
731
- async sendToInstanceSpot(route, payload, sourceSpotId, metadataFrame) {
733
+ async sendToInstanceSpot(route, payload, sourceSpotId, metadataFrame, instanceIntent = false) {
732
734
  return this.submitOneWay(route.targetNodeRid, instanceOperationParts([
733
- (0, service_stateful_wire_codec_1.encodeInstanceSpotHeader)(route, this.nodeGeneration, this.nodeRid, sourceSpotId, 'send', { high: 0n, low: 0n }, undefined, metadataFrame !== undefined),
735
+ (0, service_stateful_wire_codec_1.encodeInstanceSpotHeader)(route, this.nodeGeneration, this.nodeRid, sourceSpotId, 'send', { high: 0n, low: 0n }, undefined, metadataFrame !== undefined, instanceIntent),
734
736
  (0, service_wire_m6a_codec_1.encodeApplicationPayload)(payload)
735
737
  ], metadataFrame));
736
738
  }
@@ -744,10 +746,10 @@ class ServiceStatefulRuntime {
744
746
  payloadFrame
745
747
  ], metadataFrame));
746
748
  }
747
- requestToInstanceSpot(route, payload, timeoutMs, sourceSpotId, metadataFrame) {
749
+ requestToInstanceSpot(route, payload, timeoutMs, sourceSpotId, metadataFrame, instanceIntent = false) {
748
750
  const pending = this.operations.register(timeoutMs);
749
751
  this.submitRequest(pending, route.targetNodeRid, instanceOperationParts([
750
- (0, service_stateful_wire_codec_1.encodeInstanceSpotHeader)(route, this.nodeGeneration, this.nodeRid, sourceSpotId, 'request', { high: 2n, low: pending.id }, pending.id, metadataFrame !== undefined),
752
+ (0, service_stateful_wire_codec_1.encodeInstanceSpotHeader)(route, this.nodeGeneration, this.nodeRid, sourceSpotId, 'request', { high: operation_identity_1.ZLINK_NATIVE_CORRELATION_OPERATION_NAMESPACE, low: pending.id }, pending.id, metadataFrame !== undefined, instanceIntent),
751
753
  (0, service_wire_m6a_codec_1.encodeApplicationPayload)(payload)
752
754
  ], metadataFrame), timeoutMs, 'instanceSpotRequest');
753
755
  return pending;
@@ -852,7 +854,7 @@ class ServiceStatefulRuntime {
852
854
  });
853
855
  return pending;
854
856
  }
855
- bindSession(sessionRid, actor, timeoutMs, deliver, onBindingReplaced, bindingIngress, actorAuthority) {
857
+ bindSession(sessionRid, actor, timeoutMs, deliver, onBindingReplaced, actorAuthority) {
856
858
  const deadlineMs = performance.now() + timeoutMs;
857
859
  const pending = this.operations.register(timeoutMs, 'sender');
858
860
  const generation = this.nextSessionSequence++;
@@ -869,7 +871,6 @@ class ServiceStatefulRuntime {
869
871
  const delivery = {
870
872
  binding: localBinding,
871
873
  deliver,
872
- ...(bindingIngress === undefined ? {} : { bindingIngress }),
873
874
  ...(onBindingReplaced === undefined ? {} : { onBindingReplaced })
874
875
  };
875
876
  const deliveryKey = actorKey(actor);
@@ -977,10 +978,7 @@ class ServiceStatefulRuntime {
977
978
  if (delivery === undefined ||
978
979
  delivery.binding.sessionRid !== sessionRid ||
979
980
  delivery.binding.bindingGeneration !== expectedBindingGeneration) {
980
- this.operations.reply(pending.id, {
981
- terminalResult: runtime_values_1.RequestResult.NotFound,
982
- failureCode: ACTOR_ROUTE_STALE
983
- });
981
+ this.operations.reply(pending.id, (0, framework_errors_internal_1.internalFrameworkWireReply)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale));
984
982
  return pending;
985
983
  }
986
984
  this.sessionDeliveries.delete(actorKey(actor));
@@ -1004,7 +1002,16 @@ class ServiceStatefulRuntime {
1004
1002
  sessionBindings(sessionRid) {
1005
1003
  return [...this.sessionDeliveries.values()]
1006
1004
  .map((value) => value.binding)
1007
- .filter((binding) => binding.sessionRid === sessionRid);
1005
+ .filter((binding) => binding.sessionRid === sessionRid)
1006
+ .map((binding) => {
1007
+ const owner = requireSessionOwnerIdentity(binding);
1008
+ return {
1009
+ ...binding,
1010
+ sessionOwnerNodeGeneration: owner.nodeGeneration,
1011
+ sessionOwnerId: owner.ownerId,
1012
+ sessionOwnerLeaseGeneration: owner.leaseGeneration
1013
+ };
1014
+ });
1008
1015
  }
1009
1016
  allSessionBindings() {
1010
1017
  return [...this.sessionDeliveries.values()].map((value) => value.binding);
@@ -1028,8 +1035,10 @@ class ServiceStatefulRuntime {
1028
1035
  try {
1029
1036
  binding = this.registry.validateBoundSession(actor, expectedBindingGeneration);
1030
1037
  }
1031
- catch {
1032
- return runtime_values_1.SubmitResult.InvalidState;
1038
+ catch (error) {
1039
+ if (error instanceof service_stateful_registry_1.ServiceStaleGenerationError)
1040
+ return runtime_values_1.SubmitResult.NotFound;
1041
+ throw error;
1033
1042
  }
1034
1043
  const actorFence = this.tryActorFence(actor);
1035
1044
  if (actorFence === undefined)
@@ -1040,26 +1049,21 @@ class ServiceStatefulRuntime {
1040
1049
  (0, service_wire_m6a_codec_1.encodeApplicationPayload)(payload)
1041
1050
  ]);
1042
1051
  }
1052
+ expireOperations(nowMs, turnDeadlineMs) {
1053
+ return this.operations.expire(nowMs, turnDeadlineMs);
1054
+ }
1055
+ get pendingOperationCount() {
1056
+ return this.operations.size;
1057
+ }
1043
1058
  close() {
1044
1059
  if (this.closed)
1045
1060
  return;
1046
1061
  this.closed = true;
1047
1062
  this.operations.close();
1048
- const clearedActors = new Set();
1049
- for (const deliveries of [this.sessionDeliveries, this.retiredSessionDeliveries]) {
1050
- for (const delivery of deliveries.values()) {
1051
- const actorId = delivery.binding.actor.actorId;
1052
- if (clearedActors.has(actorId))
1053
- continue;
1054
- clearedActors.add(actorId);
1055
- delivery.bindingIngress?.clearOutbound(actorId, new Error(`Actor '${actorId}' Session service closed with retained outbound delivery.`));
1056
- }
1057
- }
1058
1063
  this.sessionDeliveries.clear();
1059
1064
  this.retiredSessionDeliveries.clear();
1060
1065
  this.appliedReplacementNotices.clear();
1061
1066
  this.instanceIntents.clear();
1062
- this.pendingInstanceTerminals.clear();
1063
1067
  this.pendingInstanceAuthorityTerminals.clear();
1064
1068
  for (const waiters of this.instanceApplicationWaiters.values()) {
1065
1069
  for (const waiter of waiters)
@@ -1173,6 +1177,21 @@ class ServiceStatefulRuntime {
1173
1177
  if (kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound ||
1174
1178
  kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving ||
1175
1179
  kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotGenerationStale) {
1180
+ const reporter = this.dispatchErrors;
1181
+ if (decoded.kind === 'instanceSpot' && reporter?.captureEnabled() === true) {
1182
+ reporter.report({
1183
+ surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.InstanceSpot,
1184
+ messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
1185
+ reason: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget,
1186
+ action: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
1187
+ meshName: this.dispatchErrorMeshName,
1188
+ sourceRid: decoded.sourceNodeRid,
1189
+ spotId: decoded.activation === 'ready'
1190
+ ? decoded.route.targetSpotId
1191
+ : decoded.target.targetSpotId,
1192
+ error
1193
+ });
1194
+ }
1176
1195
  return 'protocolError';
1177
1196
  }
1178
1197
  }
@@ -1224,8 +1243,6 @@ class ServiceStatefulRuntime {
1224
1243
  }
1225
1244
  case 'spotSend':
1226
1245
  case 'spotRequest': {
1227
- await this.spotAdmissionProvider?.awaitCloseDecision?.(record.target.spot.spotId);
1228
- this.requireDirectSpotAdmission(record.target.spot.spotId);
1229
1246
  const followed = this.holdOrRelaySpotMessage(ingress, record);
1230
1247
  if (followed !== undefined)
1231
1248
  return followed;
@@ -1344,15 +1361,9 @@ class ServiceStatefulRuntime {
1344
1361
  targetSpotId: record.route.targetSpotId,
1345
1362
  stableType: intent.instanceType
1346
1363
  };
1347
- // A close seals execution only after the current application count reaches
1348
- // zero. A new Instance message must wait for that close even while the old
1349
- // activation is still materialized; otherwise it can be admitted after
1350
- // the close quiescence check and be removed with the old activation.
1351
- if (lifecycle.isClosing?.(applicationTarget) === true)
1352
- return true;
1353
1364
  return !lifecycle.isMaterialized(applicationTarget);
1354
1365
  }
1355
- enqueueActivatedInstanceSpot(ingress, record, payloadFrame, spot, localReply, onTerminalCompletion, metadataFrame, activationTerminal = false, applicationTargetOverride) {
1366
+ enqueueActivatedInstanceSpot(ingress, record, payloadFrame, spot, localReply, onTerminalCompletion, metadataFrame, onHandlerTurnStarted, applicationTargetOverride) {
1356
1367
  let operationKey;
1357
1368
  if (record.activation === 'missing') {
1358
1369
  const now = BigInt(Date.now());
@@ -1379,10 +1390,6 @@ class ServiceStatefulRuntime {
1379
1390
  const terminalCompletion = onTerminalCompletion === undefined
1380
1391
  ? undefined
1381
1392
  : async () => {
1382
- // The application turn has returned before authority cleanup starts.
1383
- // Mark it quiescent first so a close requested by that turn can finish
1384
- // its local cleanup and release the exact authority fence below.
1385
- this.completeInstanceApplicationOperation(applicationTarget.targetSpotId);
1386
1393
  try {
1387
1394
  await onTerminalCompletion();
1388
1395
  }
@@ -1398,8 +1405,11 @@ class ServiceStatefulRuntime {
1398
1405
  ...(record.operationKind === 'request' ? { correlation: record.replyRouteId } : {}),
1399
1406
  ...(record.sourceSpotId === undefined ? {} : { sourceSpotId: record.sourceSpotId }),
1400
1407
  targetSpot: spot.ref,
1408
+ activationRecord: record,
1409
+ ...(record.activation === 'missing' ? { deadlineUnixMs: record.deadlineUnixMs } : {}),
1401
1410
  ...(metadataFrame === undefined ? {} : { applicationMetadata: metadataFrame }),
1402
1411
  ...(terminalCompletion === undefined ? {} : { onTerminalCompletion: terminalCompletion }),
1412
+ ...(onHandlerTurnStarted === undefined ? {} : { onHandlerTurnStarted }),
1403
1413
  ...(record.operationKind === 'request'
1404
1414
  ? {
1405
1415
  reply: onTerminalCompletion === undefined
@@ -1415,10 +1425,6 @@ class ServiceStatefulRuntime {
1415
1425
  this.admittedInstanceOperations.set(operationKey, record.deadlineUnixMs);
1416
1426
  }
1417
1427
  if (onTerminalCompletion !== undefined && result === 'application') {
1418
- this.beginInstanceApplicationOperation(applicationTarget.targetSpotId);
1419
- if (activationTerminal) {
1420
- this.beginInstanceAuthorityOperation(applicationTarget.targetSpotId);
1421
- }
1422
1428
  this.instanceApplicationLifecycle?.beginTerminal(applicationTarget);
1423
1429
  }
1424
1430
  return result;
@@ -1429,7 +1435,8 @@ class ServiceStatefulRuntime {
1429
1435
  const activation = await this.activateMissingInstanceAsync(record, payloadFrame, metadataFrame);
1430
1436
  if (this.closed)
1431
1437
  return;
1432
- const admitted = this.enqueueActivatedInstanceSpot(ingress, record, payloadFrame, activation.spot, localReply, this.activationTerminalCompletion(record.target, activation.route), metadataFrame, true, this.instanceApplicationTarget(record, activation.route.objectGeneration));
1438
+ const terminal = this.activationTerminalCompletion(record.target, activation.route);
1439
+ const admitted = this.enqueueActivatedInstanceSpot(ingress, record, payloadFrame, activation.spot, localReply, terminal.onTerminalCompletion, metadataFrame, terminal.onHandlerTurnStarted, this.instanceApplicationTarget(record, activation.route.objectGeneration));
1433
1440
  if (admitted !== 'application') {
1434
1441
  throw new Error('Activated Instance message was not admitted to the local queue.');
1435
1442
  }
@@ -1479,7 +1486,7 @@ class ServiceStatefulRuntime {
1479
1486
  ? { ...record, route: latestRoute }
1480
1487
  : record;
1481
1488
  const spot = this.requireInstanceActivation(ingress, refreshedRecord);
1482
- const admitted = this.enqueueActivatedInstanceSpot(ingress, refreshedRecord, payloadFrame, spot, undefined, this.instanceApplicationTerminalCompletion(this.instanceApplicationTarget(refreshedRecord)), metadataFrame);
1489
+ const admitted = this.enqueueActivatedInstanceSpot(ingress, record, payloadFrame, spot, undefined, this.instanceApplicationTerminalCompletion(this.instanceApplicationTarget(refreshedRecord)), metadataFrame, undefined, this.instanceApplicationTarget(refreshedRecord));
1483
1490
  if (admitted !== 'application') {
1484
1491
  throw new Error('Rematerialized Instance message was not admitted to the local queue.');
1485
1492
  }
@@ -1491,19 +1498,33 @@ class ServiceStatefulRuntime {
1491
1498
  this.replyWire(ingress, record.replyRouteId, result.terminalResult, result.failureCode);
1492
1499
  }
1493
1500
  }
1501
+ /**
1502
+ * Spot messaging §4 step 12 with §7 step 1: a Close waits for the first terminal
1503
+ * record only of a message whose handler turn started before it; a message queued
1504
+ * behind that Close is not counted, so it cannot hold the Close it follows.
1505
+ */
1494
1506
  activationTerminalCompletion(target, route) {
1495
1507
  let completion;
1508
+ let started = false;
1496
1509
  const applicationTarget = {
1497
1510
  targetSpotId: target.targetSpotId,
1498
1511
  stableType: target.stableType,
1499
1512
  objectGeneration: route.objectGeneration
1500
1513
  };
1501
- return () => (completion ??= (async () => {
1502
- let authorityCompletionSignaled = false;
1514
+ const onHandlerTurnStarted = () => {
1515
+ if (started || completion !== undefined)
1516
+ return;
1517
+ started = true;
1518
+ this.beginInstanceAuthorityOperation(target.targetSpotId);
1519
+ };
1520
+ const onTerminalCompletion = () => (completion ??= (async () => {
1521
+ let authorityCompletionSignaled = !started;
1503
1522
  try {
1504
1523
  const released = await this.asyncInstanceAuthority?.complete(target, route);
1505
- this.completeInstanceAuthorityOperation(target.targetSpotId);
1506
- authorityCompletionSignaled = true;
1524
+ if (!authorityCompletionSignaled) {
1525
+ this.completeInstanceAuthorityOperation(target.targetSpotId);
1526
+ authorityCompletionSignaled = true;
1527
+ }
1507
1528
  if (released !== undefined) {
1508
1529
  const authorityReleased = (await this.instanceApplicationLifecycle?.completeTerminal(applicationTarget)) ??
1509
1530
  false;
@@ -1521,6 +1542,7 @@ class ServiceStatefulRuntime {
1521
1542
  }
1522
1543
  }
1523
1544
  })());
1545
+ return { onTerminalCompletion, onHandlerTurnStarted };
1524
1546
  }
1525
1547
  instanceApplicationTerminalCompletion(target) {
1526
1548
  return async () => {
@@ -1555,24 +1577,10 @@ class ServiceStatefulRuntime {
1555
1577
  objectGeneration: record.route.objectGeneration
1556
1578
  };
1557
1579
  }
1558
- beginInstanceApplicationOperation(spotId) {
1559
- const key = String(spotId);
1560
- this.pendingInstanceTerminals.set(key, (this.pendingInstanceTerminals.get(key) ?? 0) + 1);
1561
- }
1562
1580
  beginInstanceAuthorityOperation(spotId) {
1563
1581
  const key = String(spotId);
1564
1582
  this.pendingInstanceAuthorityTerminals.set(key, (this.pendingInstanceAuthorityTerminals.get(key) ?? 0) + 1);
1565
1583
  }
1566
- completeInstanceApplicationOperation(spotId) {
1567
- const key = String(spotId);
1568
- const pending = this.pendingInstanceTerminals.get(key);
1569
- if (pending === undefined || pending <= 1) {
1570
- this.pendingInstanceTerminals.delete(key);
1571
- this.completeInstanceApplicationWaitersIfQuiescent(key);
1572
- return;
1573
- }
1574
- this.pendingInstanceTerminals.set(key, pending - 1);
1575
- }
1576
1584
  completeInstanceAuthorityOperation(spotId) {
1577
1585
  const key = String(spotId);
1578
1586
  const pending = this.pendingInstanceAuthorityTerminals.get(key);
@@ -1584,8 +1592,7 @@ class ServiceStatefulRuntime {
1584
1592
  this.pendingInstanceAuthorityTerminals.set(key, pending - 1);
1585
1593
  }
1586
1594
  completeInstanceApplicationWaitersIfQuiescent(key) {
1587
- if ((this.pendingInstanceTerminals.get(key) ?? 0) !== 0 ||
1588
- (this.pendingInstanceAuthorityTerminals.get(key) ?? 0) !== 0)
1595
+ if ((this.pendingInstanceAuthorityTerminals.get(key) ?? 0) !== 0)
1589
1596
  return;
1590
1597
  const waiters = this.instanceApplicationWaiters.get(key);
1591
1598
  if (waiters === undefined)
@@ -1662,8 +1669,8 @@ class ServiceStatefulRuntime {
1662
1669
  // activation continuation can publish its in-memory intent. If the
1663
1670
  // local ready projection already carries the exact object and owner
1664
1671
  // fence from the received route, publish that validated projection
1665
- // instead of exposing a transient NotFound result to a following
1666
- // request. A mismatched or absent local projection remains NotFound.
1672
+ // instead of rejecting a following request while publication finishes.
1673
+ // An absent Ready projection cannot validate the received owner fence.
1667
1674
  const local = this.registry.spot(record.route.targetSpotId);
1668
1675
  if (local?.kind === 'instance' &&
1669
1676
  local.state === 'ready' &&
@@ -1673,7 +1680,7 @@ class ServiceStatefulRuntime {
1673
1680
  }
1674
1681
  }
1675
1682
  if (intent === undefined) {
1676
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `Instance Spot '${record.route.targetSpotId}' has no current Ready authority.`);
1683
+ throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving, `Instance Spot '${record.route.targetSpotId}' has no current Ready authority.`);
1677
1684
  }
1678
1685
  const current = intent.route;
1679
1686
  if (current.objectGeneration < record.route.objectGeneration) {
@@ -1779,6 +1786,40 @@ class ServiceStatefulRuntime {
1779
1786
  }
1780
1787
  const local = this.registry.spot(target.targetSpotId);
1781
1788
  const current = await authority.read(target);
1789
+ if (current.kind === 'creating' &&
1790
+ current.authority?.allocation.state === 'active' &&
1791
+ this.instanceApplicationLifecycle?.isMaterializing?.(target) === true) {
1792
+ return {
1793
+ spot: { ref: { spotId: target.targetSpotId, generation: current.objectGeneration } },
1794
+ route: {
1795
+ targetSpotId: target.targetSpotId,
1796
+ targetNodeRid: this.nodeRid,
1797
+ targetNodeGeneration: this.nodeGeneration,
1798
+ objectGeneration: current.objectGeneration,
1799
+ authorityOwnerGeneration: current.authorityOwnerGeneration,
1800
+ ownerId: current.authority.ownerId,
1801
+ leaseGeneration: current.authority.ownerLeaseGeneration,
1802
+ storeVersion: current.authority.storeVersion.value
1803
+ }
1804
+ };
1805
+ }
1806
+ if (current.kind === 'ready' &&
1807
+ current.authority !== undefined &&
1808
+ (0, service_authority_payload_codec_1.decodeServiceClosingSpotAuthority)(current.authority.payload) !== undefined) {
1809
+ if (current.route.targetNodeRid !== this.nodeRid) {
1810
+ throw new ServiceInstanceActivationRedirectError(current.route);
1811
+ }
1812
+ if (current.route.targetNodeGeneration !== this.nodeGeneration ||
1813
+ (local !== undefined &&
1814
+ !routeMatchesLocal(current.route, local, this.nodeRid, this.nodeGeneration)) ||
1815
+ (local === undefined && this.instanceApplicationLifecycle?.isMaterialized(target) !== true)) {
1816
+ throw new service_stateful_registry_1.ServiceStaleGenerationError('spot', target.targetSpotId);
1817
+ }
1818
+ return {
1819
+ spot: { ref: { spotId: target.targetSpotId, generation: current.route.objectGeneration } },
1820
+ route: current.route
1821
+ };
1822
+ }
1782
1823
  if (!this.acceptsLocalMissingInstancePlacement()) {
1783
1824
  if (current.kind === 'ready' && current.route.targetNodeRid !== this.nodeRid) {
1784
1825
  throw new ServiceInstanceActivationRedirectError(current.route);
@@ -1806,7 +1847,6 @@ class ServiceStatefulRuntime {
1806
1847
  }
1807
1848
  if (local !== undefined) {
1808
1849
  const lifecycle = this.instanceApplicationLifecycle;
1809
- const closing = lifecycle?.isClosing?.(target) === true;
1810
1850
  let materialized = lifecycle === undefined ? undefined : lifecycle.isMaterialized(target);
1811
1851
  const materializing = lifecycle?.isMaterializing?.(target) === true;
1812
1852
  if (local.kind !== 'instance' || local.stableType !== target.stableType) {
@@ -1815,9 +1855,7 @@ class ServiceStatefulRuntime {
1815
1855
  const joinsCreating = current.kind === 'creating' &&
1816
1856
  local.ref.generation === current.objectGeneration &&
1817
1857
  local.authorityOwnerGeneration === current.authorityOwnerGeneration;
1818
- const replacesClosingProjection = current.kind === 'creating' && closing;
1819
1858
  if (current.kind === 'missing' &&
1820
- !closing &&
1821
1859
  !materializing &&
1822
1860
  materialized === true &&
1823
1861
  lifecycle !== undefined) {
@@ -1839,23 +1877,30 @@ class ServiceStatefulRuntime {
1839
1877
  // failure.
1840
1878
  // If disposal did not remove an orphaned materialization, keep fencing
1841
1879
  // it instead of admitting work into two application generations.
1842
- if ((!joinsCreating && !replacesClosingProjection && current.kind !== 'missing') ||
1843
- (!joinsCreating && !closing && materialized !== false && !materializing)) {
1880
+ if ((!joinsCreating && current.kind !== 'missing') ||
1881
+ (!joinsCreating && materialized !== false && !materializing)) {
1844
1882
  throw new service_stateful_registry_1.ServiceStaleGenerationError('spot', target.targetSpotId);
1845
1883
  }
1846
1884
  }
1847
- const reserved = await authority.reserve({
1848
- target,
1849
- sourceNodeRid: record.sourceNodeRid,
1850
- sourceNodeGeneration: record.sourceNodeGeneration,
1851
- ...(record.sourceSpotId === undefined ? {} : { sourceSpotId: record.sourceSpotId }),
1852
- operationKind: record.operationKind,
1853
- operation: record.operation,
1854
- ...(record.replyRouteId === undefined ? {} : { replyRouteId: record.replyRouteId }),
1855
- deadlineUnixMs: record.deadlineUnixMs,
1856
- ...(metadataFrame === undefined ? {} : { metadataFrame }),
1857
- applicationPayloadFrame: payloadFrame
1858
- });
1885
+ const deadline = operationDeadline(record.deadlineUnixMs);
1886
+ let reserved;
1887
+ try {
1888
+ reserved = await authority.reserve({
1889
+ target,
1890
+ sourceNodeRid: record.sourceNodeRid,
1891
+ sourceNodeGeneration: record.sourceNodeGeneration,
1892
+ ...(record.sourceSpotId === undefined ? {} : { sourceSpotId: record.sourceSpotId }),
1893
+ operationKind: record.operationKind,
1894
+ operation: record.operation,
1895
+ ...(record.replyRouteId === undefined ? {} : { replyRouteId: record.replyRouteId }),
1896
+ deadlineUnixMs: record.deadlineUnixMs,
1897
+ ...(metadataFrame === undefined ? {} : { metadataFrame }),
1898
+ applicationPayloadFrame: payloadFrame
1899
+ }, deadline.signal);
1900
+ }
1901
+ finally {
1902
+ deadline.close();
1903
+ }
1859
1904
  if (reserved.kind === 'ready') {
1860
1905
  throw new ServiceInstanceActivationRedirectError(reserved.route);
1861
1906
  }
@@ -1875,7 +1920,7 @@ class ServiceStatefulRuntime {
1875
1920
  }
1876
1921
  let committed;
1877
1922
  try {
1878
- committed = await authority.commit(target, reserved.reservation, activation.spot);
1923
+ committed = await authority.commit(target, reserved.reservation, activation.spot, record.deadlineUnixMs);
1879
1924
  }
1880
1925
  catch (error) {
1881
1926
  if (activation.created)
@@ -2228,7 +2273,15 @@ class ServiceStatefulRuntime {
2228
2273
  const accepted = this.raw.mailbox.tryEnqueue({
2229
2274
  owner: `actor:${actor.actorId}\0${actor.generation}`,
2230
2275
  domain: 'infrastructure',
2231
- parts: [Buffer.from([0x5a, 0x4d, 1, service_stateful_wire_codec_1.M6bServiceWireCommand.boundSessionBind, 0])],
2276
+ parts: [
2277
+ Buffer.from([
2278
+ service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[0],
2279
+ service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[1],
2280
+ service_wire_constants_generated_1.SERVICE_WIRE_MAJOR,
2281
+ service_stateful_wire_codec_1.M6bServiceWireCommand.boundSessionBind,
2282
+ 0
2283
+ ])
2284
+ ],
2232
2285
  sourceRoutingId: binding.sessionOwnerNodeRid,
2233
2286
  stateful: {
2234
2287
  receiveKind: service_runtime_contracts_1.ReceiveKind.ActorBinding,
@@ -2271,42 +2324,12 @@ class ServiceStatefulRuntime {
2271
2324
  return 'protocolError';
2272
2325
  }
2273
2326
  const sessionRid = delivery.binding.sessionRid;
2274
- let retainedPayload = payloadFrame;
2275
- let settled = false;
2276
- const settle = () => {
2277
- if (settled)
2278
- return false;
2279
- settled = true;
2280
- retainedPayload = undefined;
2281
- return true;
2282
- };
2283
- const operation = {
2284
- deliver: async () => {
2285
- if (settled || retainedPayload === undefined)
2286
- return false;
2287
- const delivered = await delivery.deliver(sessionRid, retainedPayload);
2288
- if (delivered)
2289
- settle();
2290
- return delivered;
2291
- },
2292
- fail: (_error) => {
2293
- settle();
2294
- }
2295
- };
2296
- const decision = await delivery.bindingIngress?.retainOutbound(record.actor.actor.actorId, operation);
2297
- if (decision === 'retained')
2298
- return 'application';
2299
- if (decision === 'rejected') {
2300
- return 'protocolError';
2301
- }
2302
2327
  try {
2303
- const delivered = await delivery.deliver(sessionRid, retainedPayload);
2304
- settle();
2328
+ const delivered = await delivery.deliver(sessionRid, payloadFrame);
2305
2329
  if (!delivered)
2306
2330
  return 'protocolError';
2307
2331
  }
2308
2332
  catch (error) {
2309
- operation.fail(error);
2310
2333
  // Remote command 36 is one-way: its source transport admission has
2311
2334
  // already completed, so a later client delivery terminal is local to
2312
2335
  // this session owner. Local fast paths still preserve the typed result.
@@ -2425,7 +2448,13 @@ class ServiceStatefulRuntime {
2425
2448
  }
2426
2449
  }
2427
2450
  enqueueActorControl(spotId, control, onTerminalCompletion) {
2428
- const header = Buffer.from([0x5a, 0x4d, 1, service_stateful_wire_codec_1.M6bServiceWireCommand.actorJoined, 0]);
2451
+ const header = Buffer.from([
2452
+ service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[0],
2453
+ service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[1],
2454
+ service_wire_constants_generated_1.SERVICE_WIRE_MAJOR,
2455
+ service_stateful_wire_codec_1.M6bServiceWireCommand.actorJoined,
2456
+ 0
2457
+ ]);
2429
2458
  let terminalAttempted = false;
2430
2459
  void (async () => {
2431
2460
  const applicationJobOwner = await this.raw.reserveLocalIngress();
@@ -2468,7 +2497,13 @@ class ServiceStatefulRuntime {
2468
2497
  enqueueActorBindingControl(ingress, binding, actorAuthority, reply) {
2469
2498
  const actor = binding.actor;
2470
2499
  const sessionOwner = requireSessionOwnerIdentity(binding);
2471
- const header = Buffer.from([0x5a, 0x4d, 1, service_stateful_wire_codec_1.M6bServiceWireCommand.boundSessionBind, 0]);
2500
+ const header = Buffer.from([
2501
+ service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[0],
2502
+ service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[1],
2503
+ service_wire_constants_generated_1.SERVICE_WIRE_MAJOR,
2504
+ service_stateful_wire_codec_1.M6bServiceWireCommand.boundSessionBind,
2505
+ 0
2506
+ ]);
2472
2507
  const applicationJob = requireApplicationJobOwner(ingress).takeInitial('infrastructure');
2473
2508
  const accepted = this.raw.mailbox.tryEnqueue({
2474
2509
  owner: `actor:${actor.actorId}\0${actor.generation}`,
@@ -2608,7 +2643,7 @@ class ServiceStatefulRuntime {
2608
2643
  }
2609
2644
  }
2610
2645
  async executeUserSpotOperation(handler, record) {
2611
- const deadline = userSpotDeadline(record.deadlineUnixMs);
2646
+ const deadline = operationDeadline(record.deadlineUnixMs);
2612
2647
  try {
2613
2648
  const result = record.kind === 'userSpotCreate'
2614
2649
  ? await handler.create(record, deadline.signal)
@@ -2687,7 +2722,7 @@ class ServiceStatefulRuntime {
2687
2722
  throw error;
2688
2723
  if (durableRequestWasAdmitted(error))
2689
2724
  wasAdmitted = true;
2690
- const retryDelayMs = Math.min(20, deadlineMs - performance.now());
2725
+ const retryDelayMs = Math.min(STATEFUL_OPERATION_RETRY_TICK_MS, deadlineMs - performance.now());
2691
2726
  if (retryDelayMs <= 0) {
2692
2727
  throw durableOperationExhausted(operationKind, wasAdmitted, error);
2693
2728
  }
@@ -2736,8 +2771,8 @@ class ServiceStatefulRuntime {
2736
2771
  const applicationJobOwner = await this.raw.reserveLocalIngress();
2737
2772
  try {
2738
2773
  const result = await this.ingress({
2739
- command: header[3],
2740
- flags: header[4],
2774
+ command: header[service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET],
2775
+ flags: header[service_wire_binary_primitives_1.SERVICE_WIRE_FLAGS_OFFSET],
2741
2776
  sourceRoutingId: this.nodeRid,
2742
2777
  requestSequence,
2743
2778
  reply: finish,
@@ -2770,8 +2805,8 @@ class ServiceStatefulRuntime {
2770
2805
  void ServiceStatefulRuntime.detachedIngressScope(async () => {
2771
2806
  try {
2772
2807
  await this.ingress({
2773
- command: parts[0][3],
2774
- flags: parts[0][4],
2808
+ command: parts[0][service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET],
2809
+ flags: parts[0][service_wire_binary_primitives_1.SERVICE_WIRE_FLAGS_OFFSET],
2775
2810
  sourceRoutingId: this.nodeRid,
2776
2811
  sourceNodeGeneration: this.nodeGeneration,
2777
2812
  parts,
@@ -2791,8 +2826,8 @@ class ServiceStatefulRuntime {
2791
2826
  }
2792
2827
  try {
2793
2828
  const result = await this.ingress({
2794
- command: parts[0][3],
2795
- flags: parts[0][4],
2829
+ command: parts[0][service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET],
2830
+ flags: parts[0][service_wire_binary_primitives_1.SERVICE_WIRE_FLAGS_OFFSET],
2796
2831
  sourceRoutingId: this.nodeRid,
2797
2832
  sourceNodeGeneration: this.nodeGeneration,
2798
2833
  parts,
@@ -2819,17 +2854,21 @@ class ServiceStatefulRuntime {
2819
2854
  submitRequest(pending, targetNodeRid, parts, timeoutMs, operationKind, actor) {
2820
2855
  if (targetNodeRid === this.nodeRid) {
2821
2856
  const deadlineUnixMs = BigInt(Date.now() + Math.max(0, timeoutMs));
2857
+ const capacityStop = new AbortController();
2858
+ void pending.promise.then(() => capacityStop.abort(), () => capacityStop.abort());
2822
2859
  void (async () => {
2823
- const applicationJobOwner = await this.raw.reserveLocalIngress();
2824
- const localIngress = {
2825
- command: parts[0][3],
2826
- flags: parts[0][4],
2827
- sourceRoutingId: this.nodeRid,
2828
- requestSequence: pending.id,
2829
- parts,
2830
- applicationJobOwner
2831
- };
2860
+ const applicationJobOwner = await this.raw.reserveLocalIngress(capacityStop.signal);
2832
2861
  try {
2862
+ if (!this.operations.isPending(pending.id))
2863
+ return;
2864
+ const localIngress = {
2865
+ command: parts[0][service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET],
2866
+ flags: parts[0][service_wire_binary_primitives_1.SERVICE_WIRE_FLAGS_OFFSET],
2867
+ sourceRoutingId: this.nodeRid,
2868
+ requestSequence: pending.id,
2869
+ parts,
2870
+ applicationJobOwner
2871
+ };
2833
2872
  await this.submitLocalRequest(localIngress, pending, operationKind, actor, deadlineUnixMs);
2834
2873
  }
2835
2874
  catch (error) {
@@ -2848,10 +2887,7 @@ class ServiceStatefulRuntime {
2848
2887
  ? this.tryActorFence(actor)
2849
2888
  : this.acceptCanonicalActorFence(actor, canonical.actorFence);
2850
2889
  if (target === undefined || actorRoute === undefined) {
2851
- this.operations.reply(pending.id, {
2852
- terminalResult: runtime_values_1.RequestResult.NotFound,
2853
- failureCode: ACTOR_ROUTE_STALE
2854
- });
2890
+ this.operations.reply(pending.id, (0, framework_errors_internal_1.internalFrameworkWireReply)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale));
2855
2891
  return;
2856
2892
  }
2857
2893
  if (canonical !== undefined) {
@@ -2938,7 +2974,6 @@ class ServiceStatefulRuntime {
2938
2974
  }
2939
2975
  const localReply = (terminalResult, failureCode, replyPayload, tail) => this.operations.reply(pending.id, this.resultFromReply(terminalResult, failureCode, replyPayload, tail, this.nodeRid, actor));
2940
2976
  if (decoded.kind === 'spotRequest') {
2941
- await this.spotAdmissionProvider?.awaitCloseDecision?.(decoded.target.spot.spotId);
2942
2977
  this.validateDirectSpotFence(decoded.target);
2943
2978
  this.enqueueApplicationFrame(ingress, `spot:${decoded.target.spot.spotId}`, payloadFrame, {
2944
2979
  receiveKind: service_runtime_contracts_1.ReceiveKind.SpotRequest,
@@ -3201,7 +3236,6 @@ class ServiceStatefulRuntime {
3201
3236
  fence.targetNodeGeneration !== this.nodeGeneration) {
3202
3237
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving, `Spot '${fence.spot.spotId}' targets an unavailable owner route.`);
3203
3238
  }
3204
- this.requireDirectSpotAdmission(fence.spot.spotId);
3205
3239
  const spot = this.registry.spot(fence.spot.spotId);
3206
3240
  if (spot === undefined) {
3207
3241
  throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound, `Spot '${fence.spot.spotId}' has no current Ready authority.`);
@@ -3228,14 +3262,6 @@ class ServiceStatefulRuntime {
3228
3262
  }
3229
3263
  return spot;
3230
3264
  }
3231
- requireDirectSpotAdmission(spotId) {
3232
- if (this.spotAdmissionProvider?.runtimeState() === Locations_1.ZLinkFrameworkRuntimeState.Draining) {
3233
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown, `Spot '${spotId}' owner is Draining.`);
3234
- }
3235
- if (this.spotAdmissionProvider?.isClosing(spotId) === true) {
3236
- throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestRejected, `Spot '${spotId}' authority is Closing.`);
3237
- }
3238
- }
3239
3265
  holdOrRelaySpotMessage(ingress, wire) {
3240
3266
  const state = this.spotMessageFollow.get(spotKey(wire.target.spot));
3241
3267
  if (state === undefined || !sameDirectSpotRouteIdentity(state.source, wire.target)) {
@@ -3283,7 +3309,9 @@ class ServiceStatefulRuntime {
3283
3309
  }
3284
3310
  const current = this.peekSpotMessageFollow(state);
3285
3311
  try {
3286
- const metadata = (current.ingress.parts[0][4] & service_stateful_wire_codec_1.M6bServiceWireFlag.metadata) !== 0;
3312
+ const metadata = (current.ingress.parts[0][service_wire_binary_primitives_1.SERVICE_WIRE_FLAGS_OFFSET] &
3313
+ service_stateful_wire_codec_1.M6bServiceWireFlag.metadata) !==
3314
+ 0;
3287
3315
  const parts = [
3288
3316
  (0, service_stateful_wire_codec_1.encodeSpotHeader)(current.wire.kind, current.wire.sourceSpotId, state.target, current.wire.correlation, current.wire.operation, current.wire.messageFollowHopCount + 1, metadata ? current.ingress.parts[1] : undefined),
3289
3317
  ...(metadata ? [current.ingress.parts[1]] : []),
@@ -3391,7 +3419,7 @@ class ServiceStatefulRuntime {
3391
3419
  state.queued.length = 0;
3392
3420
  state.queuedHead = 0;
3393
3421
  }
3394
- else if (state.queuedHead >= 1024 && state.queuedHead * 2 >= state.queued.length) {
3422
+ else if ((0, admission_1.shouldCompactBackingArray)(state.queuedHead, state.queued.length)) {
3395
3423
  state.queued.splice(0, state.queuedHead);
3396
3424
  state.queuedHead = 0;
3397
3425
  }
@@ -3577,34 +3605,19 @@ class ServiceStatefulRuntime {
3577
3605
  }
3578
3606
  }
3579
3607
  exports.ServiceStatefulRuntime = ServiceStatefulRuntime;
3580
- function serviceSpotPublishFailureReason(result, routeReady, closed) {
3581
- if (closed || result === runtime_values_1.SubmitResult.Terminated)
3582
- return 'shutdown';
3583
- switch (result) {
3584
- case runtime_values_1.SubmitResult.Backpressured:
3585
- return 'backpressure';
3586
- case runtime_values_1.SubmitResult.NotAdmitted:
3587
- case runtime_values_1.SubmitResult.NotConnected:
3588
- case runtime_values_1.SubmitResult.NotFound:
3589
- case runtime_values_1.SubmitResult.InvalidHandle:
3590
- return 'stale_target';
3591
- default:
3592
- // RawServiceMeshRuntime exposes failed Core submissions as false. A
3593
- // ready route therefore identifies queue admission failure; a route
3594
- // that became unready after selection is a stale target.
3595
- return routeReady ? 'backpressure' : 'stale_target';
3596
- }
3597
- }
3598
3608
  function isEntrySpotFence(fence) {
3599
3609
  return (fence.spot.spotId === fence.targetNodeRid &&
3600
3610
  fence.spot.generation === fence.targetNodeGeneration &&
3601
3611
  fence.authorityOwnerGeneration === fence.targetNodeGeneration &&
3602
3612
  fence.ownerLeaseGeneration === fence.targetNodeGeneration);
3603
3613
  }
3604
- function userSpotDeadline(deadlineUnixMs) {
3614
+ function operationDeadline(deadlineUnixMs) {
3605
3615
  const controller = new AbortController();
3606
3616
  const delay = Number(deadlineUnixMs - BigInt(Date.now()));
3607
- const timeout = setTimeout(() => controller.abort(new Error('User Spot operation deadline exceeded.')), Math.max(0, Math.min(delay, 0x7fff_ffff)));
3617
+ const expire = () => controller.abort((0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, 'Operation deadline exceeded.'));
3618
+ const timeout = delay <= 0
3619
+ ? (expire(), undefined)
3620
+ : setTimeout(expire, Math.min(delay, MAX_NODE_TIMER_DELAY_MS));
3608
3621
  return {
3609
3622
  signal: controller.signal,
3610
3623
  close: () => clearTimeout(timeout)
@@ -3660,12 +3673,12 @@ function actorLocation(actor) {
3660
3673
  }
3661
3674
  function failure(error) {
3662
3675
  if (error instanceof service_stateful_registry_1.ServiceStaleGenerationError) {
3663
- return { terminalResult: runtime_values_1.RequestResult.NotFound, failureCode: ACTOR_ROUTE_STALE };
3676
+ return (0, framework_errors_internal_1.internalFrameworkWireReply)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
3664
3677
  }
3665
3678
  if (error instanceof contracts_1.ZLinkFrameworkException) {
3666
3679
  return (0, framework_errors_internal_1.internalFrameworkWireReply)(error);
3667
3680
  }
3668
- return { terminalResult: runtime_values_1.RequestResult.InternalError, failureCode: 17 };
3681
+ return (0, framework_errors_internal_1.internalFrameworkWireReply)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed);
3669
3682
  }
3670
3683
  function actorKey(actor) {
3671
3684
  return `${actor.actorId}\0${actor.generation}`;
@@ -3910,7 +3923,7 @@ function topicMatches(filter, topic) {
3910
3923
  function emptyPayload() {
3911
3924
  return {
3912
3925
  packetName: 'ZLinkFrameworkEmpty',
3913
- contentType: 'application/octet-stream',
3926
+ contentType: stream_wire_1.ZlinkStreamContentType.Raw,
3914
3927
  payload: Buffer.alloc(0)
3915
3928
  };
3916
3929
  }