@zlink-systems/framework 0.21.0 → 0.23.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 (516) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -1,4 +1,7 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import type {
3
6
  RoutingId,
4
7
  SpotId,
@@ -10,11 +13,7 @@ import type {
10
13
  ZLinkBoundSession,
11
14
  ZLinkBoundSessionSendCall
12
15
  } from '../../contracts';
13
- import {
14
- ZLinkEncodedPayload,
15
- ZLinkFrameworkException,
16
- ZLinkMessage
17
- } from '../../contracts';
16
+ import { ZLinkEncodedPayload, ZLinkFrameworkException, ZLinkMessage } from '../../contracts';
18
17
  import type { Message } from '../../contracts/Common/Message';
19
18
  import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
20
19
  import { type ZLinkMessageSerializer } from '../../contracts';
@@ -26,13 +25,8 @@ import {
26
25
  ZLinkDispatchErrorSurface,
27
26
  ZLinkDispatchMessageKind
28
27
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
29
- import {
30
- encodeFrameworkPayloadMessage
31
- } from '../messaging/payload-codec';
32
- import {
33
- ZLinkActorRuntimeState,
34
- toFrameworkActorRef
35
- } from './actor-runtime-state';
28
+ import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
29
+ import { ZLinkActorRuntimeState, toFrameworkActorRef } from './actor-runtime-state';
36
30
  import type {
37
31
  ZLinkActorBoundSessionFactory,
38
32
  ZLinkActorJoinCoordinator
@@ -45,6 +39,7 @@ import {
45
39
  import { createRandomOperationIdentity } from '../foundation/operation-identity';
46
40
  import { deferActorJoin } from './actor-join-deferred-scope';
47
41
  import { captureZLinkSpotSerialTurn } from '../execution';
42
+ import { dispatchErrorDetails } from '../diagnostics/dispatch-error-details';
48
43
 
49
44
  export const ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME = Symbol('zlink.actor.join-entry-spot-runtime');
50
45
 
@@ -140,14 +135,16 @@ export class DefaultZLinkActorContext implements ZLinkActorContext {
140
135
  ): Promise<boolean> {
141
136
  const requestMessage = encodeJoinRequest(request, this.messageSerializers);
142
137
  try {
143
- return (await this.requireJoinCoordinator().joinEntrySpot(
144
- this.requireActor(),
145
- this.state,
146
- nodeRid,
147
- requestMessage,
148
- undefined,
149
- signal
150
- )).accepted;
138
+ return (
139
+ await this.requireJoinCoordinator().joinEntrySpot(
140
+ this.requireActor(),
141
+ this.state,
142
+ nodeRid,
143
+ requestMessage,
144
+ undefined,
145
+ signal
146
+ )
147
+ ).accepted;
151
148
  } finally {
152
149
  requestMessage.close();
153
150
  }
@@ -180,8 +177,7 @@ class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
180
177
  private readonly spotId: SpotId,
181
178
  private readonly request: unknown,
182
179
  private readonly messageSerializers: ReadonlyMap<string, ZLinkMessageSerializer> | undefined
183
- ) {
184
- }
180
+ ) {}
185
181
 
186
182
  timeout(timeoutMs: number): this {
187
183
  this.timeoutMs = validateJoinTimeout(timeoutMs);
@@ -209,7 +205,8 @@ class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
209
205
  const operationId = createJoinOperationId();
210
206
  let discarded = false;
211
207
  let prepared = false;
212
- let pendingJoin: Promise<import('./actor-runtime-contracts').ZLinkActorJoinRuntimeResult<Message>> | undefined;
208
+ let pendingJoin:
209
+ Promise<import('./actor-runtime-contracts').ZLinkActorJoinRuntimeResult<Message>> | undefined;
213
210
  const discard = async (): Promise<void> => {
214
211
  if (discarded) return;
215
212
  discarded = true;
@@ -223,7 +220,6 @@ class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
223
220
  };
224
221
  try {
225
222
  deferActorJoin({
226
- requestBytes: requestMessage.data().byteLength,
227
223
  prepare: async () => {
228
224
  if (prepared) return;
229
225
  prepared = true;
@@ -252,50 +248,53 @@ class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
252
248
  },
253
249
  discard,
254
250
  execute: async () => {
255
- let result: import('./actor-runtime-contracts').ZLinkActorJoinRuntimeResult<Message>;
256
- try {
257
- const pending = pendingJoin ?? this.coordinator.joinSpot(
258
- this.actor,
259
- this.state,
260
- this.spotId,
261
- requestMessage,
262
- remainingJoinTimeout(deadline.atMs),
263
- deadline.signal,
264
- operationId
265
- );
266
- result = this.turn === undefined
267
- ? await pending
268
- : await this.turn.yieldFrameworkPromise(pending);
269
- } catch (error) {
270
- this.state.endDeferredJoin();
271
- await this.coordinator.abortDeferredJoin?.(this.actor, this.state, operationId)
272
- .catch(() => undefined);
273
- await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
274
- return;
275
- } finally {
276
- deadline.close();
277
- requestMessage.close();
278
- }
279
- if (
280
- !result.accepted
281
- || sourceNodeRid === undefined
282
- || result.actor === undefined
283
- || String(sourceNodeRid) === String(result.actor.nodeRid)
284
- ) {
285
- await notifyJoinCompletion(
286
- this.actor, operationId, result, this.messageSerializers);
287
- } else {
288
- result.reply?.close();
289
- }
290
- const finalization = result.finalizeDeferredJoin?.();
291
- if (finalization !== undefined) {
292
- // Releasing a rejected provisional handoff can enqueue source
293
- // backlog behind this same Spot turn. Yield the lifecycle boundary
294
- // so replay can run without overtaking the completion callback.
295
- await (this.turn === undefined
296
- ? finalization
297
- : this.turn.yieldFrameworkPromise(finalization));
298
- }
251
+ let result: import('./actor-runtime-contracts').ZLinkActorJoinRuntimeResult<Message>;
252
+ try {
253
+ const pending =
254
+ pendingJoin ??
255
+ this.coordinator.joinSpot(
256
+ this.actor,
257
+ this.state,
258
+ this.spotId,
259
+ requestMessage,
260
+ remainingJoinTimeout(deadline.atMs),
261
+ deadline.signal,
262
+ operationId
263
+ );
264
+ result =
265
+ this.turn === undefined
266
+ ? await pending
267
+ : await this.turn.yieldFrameworkPromise(pending);
268
+ } catch (error) {
269
+ this.state.endDeferredJoin();
270
+ await this.coordinator
271
+ .abortDeferredJoin?.(this.actor, this.state, operationId)
272
+ .catch(() => undefined);
273
+ await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
274
+ return;
275
+ } finally {
276
+ deadline.close();
277
+ requestMessage.close();
278
+ }
279
+ if (
280
+ !result.accepted ||
281
+ sourceNodeRid === undefined ||
282
+ result.actor === undefined ||
283
+ String(sourceNodeRid) === String(result.actor.nodeRid)
284
+ ) {
285
+ await notifyJoinCompletion(this.actor, operationId, result, this.messageSerializers);
286
+ } else {
287
+ result.reply?.close();
288
+ }
289
+ const finalization = result.finalizeDeferredJoin?.();
290
+ if (finalization !== undefined) {
291
+ // Releasing a rejected provisional handoff can enqueue source
292
+ // backlog behind this same Spot turn. Yield the lifecycle boundary
293
+ // so replay can run without overtaking the completion callback.
294
+ await (this.turn === undefined
295
+ ? finalization
296
+ : this.turn.yieldFrameworkPromise(finalization));
297
+ }
299
298
  }
300
299
  });
301
300
  } catch (error) {
@@ -316,8 +315,7 @@ class DefaultZLinkActorJoinEntrySpotCall implements ZLinkActorJoinEntrySpotCall
316
315
  private readonly coordinator: ZLinkActorJoinCoordinator,
317
316
  private readonly request: unknown,
318
317
  private readonly messageSerializers: ReadonlyMap<string, ZLinkMessageSerializer> | undefined
319
- ) {
320
- }
318
+ ) {}
321
319
 
322
320
  timeout(timeoutMs: number): this {
323
321
  this.timeoutMs = validateJoinTimeout(timeoutMs);
@@ -345,7 +343,8 @@ class DefaultZLinkActorJoinEntrySpotCall implements ZLinkActorJoinEntrySpotCall
345
343
  const operationId = createJoinOperationId();
346
344
  let discarded = false;
347
345
  let prepared = false;
348
- let pendingJoin: Promise<import('./actor-runtime-contracts').ZLinkActorJoinRuntimeResult<Message>> | undefined;
346
+ let pendingJoin:
347
+ Promise<import('./actor-runtime-contracts').ZLinkActorJoinRuntimeResult<Message>> | undefined;
349
348
  const discard = async (): Promise<void> => {
350
349
  if (discarded) return;
351
350
  discarded = true;
@@ -359,7 +358,6 @@ class DefaultZLinkActorJoinEntrySpotCall implements ZLinkActorJoinEntrySpotCall
359
358
  };
360
359
  try {
361
360
  deferActorJoin({
362
- requestBytes: requestMessage.data().byteLength,
363
361
  prepare: async () => {
364
362
  if (prepared) return;
365
363
  prepared = true;
@@ -385,47 +383,50 @@ class DefaultZLinkActorJoinEntrySpotCall implements ZLinkActorJoinEntrySpotCall
385
383
  },
386
384
  discard,
387
385
  execute: async () => {
388
- let result: import('./actor-runtime-contracts').ZLinkActorJoinRuntimeResult<Message>;
389
- try {
390
- const pending = pendingJoin ?? this.coordinator.joinEntrySpot(
391
- this.actor,
392
- this.state,
393
- undefined,
394
- requestMessage,
395
- remainingJoinTimeout(deadline.atMs),
396
- deadline.signal,
397
- operationId
398
- );
399
- result = this.turn === undefined
400
- ? await pending
401
- : await this.turn.yieldFrameworkPromise(pending);
402
- } catch (error) {
403
- this.state.endDeferredJoin();
404
- await this.coordinator.abortDeferredJoin?.(this.actor, this.state, operationId)
405
- .catch(() => undefined);
406
- await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
407
- return;
408
- } finally {
409
- deadline.close();
410
- requestMessage.close();
411
- }
412
- if (
413
- !result.accepted
414
- || sourceNodeRid === undefined
415
- || result.actor === undefined
416
- || String(sourceNodeRid) === String(result.actor.nodeRid)
417
- ) {
418
- await notifyJoinCompletion(
419
- this.actor, operationId, result, this.messageSerializers);
420
- } else {
421
- result.reply?.close();
422
- }
423
- const finalization = result.finalizeDeferredJoin?.();
424
- if (finalization !== undefined) {
425
- await (this.turn === undefined
426
- ? finalization
427
- : this.turn.yieldFrameworkPromise(finalization));
428
- }
386
+ let result: import('./actor-runtime-contracts').ZLinkActorJoinRuntimeResult<Message>;
387
+ try {
388
+ const pending =
389
+ pendingJoin ??
390
+ this.coordinator.joinEntrySpot(
391
+ this.actor,
392
+ this.state,
393
+ undefined,
394
+ requestMessage,
395
+ remainingJoinTimeout(deadline.atMs),
396
+ deadline.signal,
397
+ operationId
398
+ );
399
+ result =
400
+ this.turn === undefined
401
+ ? await pending
402
+ : await this.turn.yieldFrameworkPromise(pending);
403
+ } catch (error) {
404
+ this.state.endDeferredJoin();
405
+ await this.coordinator
406
+ .abortDeferredJoin?.(this.actor, this.state, operationId)
407
+ .catch(() => undefined);
408
+ await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
409
+ return;
410
+ } finally {
411
+ deadline.close();
412
+ requestMessage.close();
413
+ }
414
+ if (
415
+ !result.accepted ||
416
+ sourceNodeRid === undefined ||
417
+ result.actor === undefined ||
418
+ String(sourceNodeRid) === String(result.actor.nodeRid)
419
+ ) {
420
+ await notifyJoinCompletion(this.actor, operationId, result, this.messageSerializers);
421
+ } else {
422
+ result.reply?.close();
423
+ }
424
+ const finalization = result.finalizeDeferredJoin?.();
425
+ if (finalization !== undefined) {
426
+ await (this.turn === undefined
427
+ ? finalization
428
+ : this.turn.yieldFrameworkPromise(finalization));
429
+ }
429
430
  }
430
431
  });
431
432
  } catch (error) {
@@ -516,11 +517,17 @@ function createDeferredJoinDeadline(timeoutMs: number): {
516
517
  } {
517
518
  const controller = new AbortController();
518
519
  const atMs = performance.now() + timeoutMs;
519
- const timer = setTimeout(() => controller.abort(createInternalFrameworkException(
520
- ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
521
- 'Deferred Actor join exceeded its absolute deadline.',
522
- true
523
- )), timeoutMs);
520
+ const timer = setTimeout(
521
+ () =>
522
+ controller.abort(
523
+ createInternalFrameworkException(
524
+ ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
525
+ 'Deferred Actor join exceeded its absolute deadline.',
526
+ true
527
+ )
528
+ ),
529
+ timeoutMs
530
+ );
524
531
  return {
525
532
  atMs,
526
533
  signal: controller.signal,
@@ -539,11 +546,10 @@ async function notifyJoinCompletion(
539
546
  _messageSerializers: ReadonlyMap<string, ZLinkMessageSerializer> | undefined
540
547
  ): Promise<void> {
541
548
  // The completion preserves the encoded reply without exposing serializer selection.
542
- const reply = result.reply === undefined
543
- ? undefined
544
- : ZLinkMessage.fromEncoded(
545
- ZLinkEncodedPayload.from(result.reply.data())
546
- );
549
+ const reply =
550
+ result.reply === undefined
551
+ ? undefined
552
+ : ZLinkMessage.fromEncoded(ZLinkEncodedPayload.from(result.reply.data()));
547
553
  result.reply?.close();
548
554
  // `reply`는 계약상 선택 항목이라 없을 때는 key 자체를 만들지 않는다.
549
555
  const replyField = reply === undefined ? {} : { reply };
@@ -569,17 +575,19 @@ async function notifyJoinFailure(
569
575
  coordinator?: ZLinkActorJoinCoordinator
570
576
  ): Promise<void> {
571
577
  console.error(`actor join failure actor=${actor.context.actorId}`, error);
572
- const frameworkError = error instanceof ZLinkFrameworkException
573
- ? error
574
- : createInternalFrameworkException(
575
- ZLinkFrameworkInternalErrorKind.RequestFailed,
576
- 'Deferred actor join failed.',
577
- false,
578
- error
579
- );
578
+ const frameworkError =
579
+ error instanceof ZLinkFrameworkException
580
+ ? error
581
+ : createInternalFrameworkException(
582
+ ZLinkFrameworkInternalErrorKind.RequestFailed,
583
+ 'Deferred actor join failed.',
584
+ false,
585
+ error
586
+ );
580
587
  // The completion carries only an error kind, so trace the cause on the
581
588
  // message flow under the same flow id as the Join that produced it.
582
589
  const tracePoint = coordinator?.messageFlow?.()?.begin(ZLinkMessageFlowOutcome.Error);
590
+ const errorDetails = tracePoint === undefined ? undefined : dispatchErrorDetails(error);
583
591
  tracePoint?.trace({
584
592
  outcome: ZLinkMessageFlowOutcome.Error,
585
593
  surface: ZLinkDispatchErrorSurface.SpotActor,
@@ -588,8 +596,8 @@ async function notifyJoinFailure(
588
596
  actorId: actor.context.actorId,
589
597
  errorReason: ZLinkDispatchErrorReason.HandlerException,
590
598
  errorAction: ZLinkDispatchErrorAction.ReplyError,
591
- errorType: String(frameworkError.kind),
592
- errorMessage: String(error)
599
+ errorType: errorDetails?.errorType,
600
+ errorMessage: errorDetails?.errorMessage
593
601
  });
594
602
  await actor.onJoinCompleted?.({
595
603
  status: 'failed',
@@ -1,15 +1,16 @@
1
- import { ZLinkFrameworkInternalErrorKind, createInternalFrameworkException } from '../framework-errors-internal';
1
+ import {
2
+ ZLinkFrameworkInternalErrorKind,
3
+ createInternalFrameworkException
4
+ } from '../framework-errors-internal';
2
5
  import type {
3
6
  RoutingId,
4
7
  Type,
5
8
  ZLinkActor,
6
9
  ZLinkActorCreateResponse,
7
- ZLinkActorFactory,
10
+ ZLinkActorFactory
8
11
  } from '../../contracts';
9
12
  import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
10
- import {
11
- ZLinkMessage
12
- } from '../../contracts';
13
+ import { ZLinkMessage } from '../../contracts';
13
14
  import type { Message } from '../../contracts/Common/Message';
14
15
  import { ZLinkConfigurationException } from '../configuration';
15
16
  import { DefaultZLinkActorContext } from './actor-context';
@@ -54,14 +55,7 @@ export class ZLinkActorCreationCoordinator {
54
55
  this.options.actorDestroyedCleanup?.(actorId);
55
56
  state.clearAfterDestroy();
56
57
  },
57
- () => this.createActorAfterClaim(
58
- actorId,
59
- actorType,
60
- state,
61
- createRequest,
62
- true,
63
- signal
64
- )
58
+ () => this.createActorAfterClaim(actorId, actorType, state, createRequest, true, signal)
65
59
  );
66
60
  if (activation.activated !== undefined) {
67
61
  if (activation.activated.status !== 'created') {
@@ -102,18 +96,22 @@ export class ZLinkActorCreationCoordinator {
102
96
  restore: ((actor: ZLinkActor) => Promise<void>) | undefined
103
97
  ): Promise<ZLinkActorCreationAttemptResult> {
104
98
  void actorId;
105
- const context = state.ensureContext(() => new DefaultZLinkActorContext(
106
- state,
107
- this.options.joinCoordinator,
108
- this.options.boundSessionFactory,
109
- this.options.messageSerializers,
110
- this.options.actorMeshNameProvider
111
- ));
99
+ const context = state.ensureContext(
100
+ () =>
101
+ new DefaultZLinkActorContext(
102
+ state,
103
+ this.options.joinCoordinator,
104
+ this.options.boundSessionFactory,
105
+ this.options.messageSerializers,
106
+ this.options.actorMeshNameProvider
107
+ )
108
+ );
112
109
  const actor = await (await this.createFactory(actorType)).create(context);
113
110
  attachTransferredActorContext(actor, context);
114
111
  await restore?.(actor);
115
112
  state.bindActor(actor, context);
116
- const nativeActorNode = this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
113
+ const nativeActorNode =
114
+ this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
117
115
  if (nativeActorNode !== undefined) {
118
116
  state.ensureNativeActorRef(nativeActorNode);
119
117
  }
@@ -129,14 +127,18 @@ export class ZLinkActorCreationCoordinator {
129
127
  signal?: AbortSignal
130
128
  ): Promise<ZLinkActorCreationAttemptResult> {
131
129
  const factory = await this.createFactory(actorType);
132
- const context = state.ensureContext(() => new DefaultZLinkActorContext(
133
- state,
134
- this.options.joinCoordinator,
135
- this.options.boundSessionFactory,
136
- this.options.messageSerializers,
137
- this.options.actorMeshNameProvider
138
- ));
139
- const nativeActorNode = this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
130
+ const context = state.ensureContext(
131
+ () =>
132
+ new DefaultZLinkActorContext(
133
+ state,
134
+ this.options.joinCoordinator,
135
+ this.options.boundSessionFactory,
136
+ this.options.messageSerializers,
137
+ this.options.actorMeshNameProvider
138
+ )
139
+ );
140
+ const nativeActorNode =
141
+ this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
140
142
  let actor: ZLinkActor;
141
143
  try {
142
144
  actor = await factory.create(context, signal);
@@ -154,9 +156,7 @@ export class ZLinkActorCreationCoordinator {
154
156
  }
155
157
  meshName = state.meshName ?? '';
156
158
  if (meshName.length === 0 && state.nativeActorRef === undefined) {
157
- throw new ZLinkConfigurationException(
158
- `Actor '${actorId}' has no RouteMesh identity.`
159
- );
159
+ throw new ZLinkConfigurationException(`Actor '${actorId}' has no RouteMesh identity.`);
160
160
  }
161
161
  if (nativeActorNode !== undefined) {
162
162
  const actorRef = state.ensureNativeActorRef(nativeActorNode, createRequest.nativeRequest);
@@ -171,14 +171,15 @@ export class ZLinkActorCreationCoordinator {
171
171
 
172
172
  let response: ZLinkActorCreateResponse;
173
173
  try {
174
- response = nodeRid === undefined
175
- ? { accepted: true }
176
- : await this.options.actorCreatedNotifier?.(
177
- nodeRid,
178
- actor,
179
- createRequest.callbackRequest,
180
- signal
181
- ) ?? { accepted: true };
174
+ response =
175
+ nodeRid === undefined
176
+ ? { accepted: true }
177
+ : ((await this.options.actorCreatedNotifier?.(
178
+ nodeRid,
179
+ actor,
180
+ createRequest.callbackRequest,
181
+ signal
182
+ )) ?? { accepted: true });
182
183
  } catch (error) {
183
184
  await this.discardStagingActor(state, nativeActorNode);
184
185
  return { status: 'failed', error };
@@ -233,10 +234,12 @@ export class ZLinkActorCreationCoordinator {
233
234
  }
234
235
 
235
236
  private resolveLocationNodeRid(): RoutingId {
236
- const nativeActorNode = this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
237
- const nodeRid = nativeActorNode === undefined
238
- ? this.options.actorCreatedNodeRidProvider?.()
239
- : toFrameworkRoutingId(nativeActorNode.status().routingId as never);
237
+ const nativeActorNode =
238
+ this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
239
+ const nodeRid =
240
+ nativeActorNode === undefined
241
+ ? this.options.actorCreatedNodeRidProvider?.()
242
+ : toFrameworkRoutingId(nativeActorNode.status().routingId as never);
240
243
  if (nodeRid === undefined) {
241
244
  throw new ZLinkConfigurationException('Location actor claim requires a node routing id.');
242
245
  }
@@ -27,10 +27,12 @@ export async function runZLinkActorExecution<T>(
27
27
  });
28
28
  }
29
29
 
30
- export function currentZLinkActorExecution(): Readonly<{
31
- actorId: string;
32
- spotId?: unknown;
33
- }> | undefined {
30
+ export function currentZLinkActorExecution():
31
+ | Readonly<{
32
+ actorId: string;
33
+ spotId?: unknown;
34
+ }>
35
+ | undefined {
34
36
  const context = actorExecutionStorage.getStore();
35
37
  return context?.active === true
36
38
  ? { actorId: context.actorId, spotId: context.spotId }