@zlink-systems/framework 0.21.0 → 0.22.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 (487) 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/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -74,8 +74,10 @@ export {
74
74
  type ZLinkHandlerFilterScopeRunner
75
75
  } from './runtime/channels/handler-filter-scope';
76
76
 
77
- export interface ZLinkNestIntegrationRuntimeHost
78
- extends Pick<import('./contracts').ZLinkFrameworkRuntime, 'shutdown'> {
77
+ export interface ZLinkNestIntegrationRuntimeHost extends Pick<
78
+ import('./contracts').ZLinkFrameworkRuntime,
79
+ 'shutdown'
80
+ > {
79
81
  readonly channelRuntimeOptions: unknown;
80
82
  readonly routeMeshRuntimeOptions: ZLinkRouteMeshRuntimeOptions;
81
83
  readonly boundSessionFactory: ZLinkBoundSessionFactory;
@@ -107,18 +109,17 @@ export function createIntegrationLocationOptionsBuilder(
107
109
  return new DefaultLocationOptionsBuilder(options);
108
110
  }
109
111
 
110
- export function createIntegrationStreamCompressionBuilder(
111
- options: { disabled?: boolean; codec?: ZLinkStreamCompressionCodec }
112
- ): ZLinkStreamCompressionBuilder {
112
+ export function createIntegrationStreamCompressionBuilder(options: {
113
+ disabled?: boolean;
114
+ codec?: ZLinkStreamCompressionCodec;
115
+ }): ZLinkStreamCompressionBuilder {
113
116
  return new DefaultStreamCompressionBuilder(options);
114
117
  }
115
118
 
116
- export function createIntegrationCodecRegistryBuilder(
117
- options: {
118
- serializers: ZLinkCodecSerializerRegistration[];
119
- streamCodecs: ZLinkStreamCodecRegistration[];
120
- }
121
- ): ZLinkCodecRegistryBuilder & ZLinkCodecRegistrar {
119
+ export function createIntegrationCodecRegistryBuilder(options: {
120
+ serializers: ZLinkCodecSerializerRegistration[];
121
+ streamCodecs: ZLinkStreamCodecRegistration[];
122
+ }): ZLinkCodecRegistryBuilder & ZLinkCodecRegistrar {
122
123
  return new RegistrationCodecRegistryBuilder(options);
123
124
  }
124
125
 
@@ -159,10 +160,15 @@ export function createIntegrationSpotPublisherClient(
159
160
  registration: ZLinkFrameworkRegistration,
160
161
  runtime: ZLinkNestIntegrationRuntimeHost
161
162
  ): ZLinkSpotPublisherClient {
162
- return new DefaultZLinkSpotPublisherClient(registration, runtimeHost(runtime).spotPublisherTransport);
163
+ return new DefaultZLinkSpotPublisherClient(
164
+ registration,
165
+ runtimeHost(runtime).spotPublisherTransport
166
+ );
163
167
  }
164
168
 
165
- export function createIntegrationActorClient(runtime: ZLinkNestIntegrationRuntimeHost): ZLinkActorClient {
169
+ export function createIntegrationActorClient(
170
+ runtime: ZLinkNestIntegrationRuntimeHost
171
+ ): ZLinkActorClient {
166
172
  const host = runtimeHost(runtime);
167
173
  return new DefaultZLinkActorClient(host.createActorClientOptions());
168
174
  }
@@ -177,7 +183,9 @@ export function createIntegrationActorManager(
177
183
  const manager = new DefaultZLinkActorManager({
178
184
  actorFactories: registration.actorFactories,
179
185
  ...runtimeOptions,
180
- boundSessionFactory: runtimeOptions.boundSessionFactory ?? host.boundSessionFactory.create.bind(host.boundSessionFactory),
186
+ boundSessionFactory:
187
+ runtimeOptions.boundSessionFactory ??
188
+ host.boundSessionFactory.create.bind(host.boundSessionFactory),
181
189
  providerResolver
182
190
  });
183
191
  host.setActorManager(manager);
@@ -205,16 +213,21 @@ export function createIntegrationSpotManager(
205
213
  spotNode.instanceSpotIdleTimeoutMs ?? 0
206
214
  ])
207
215
  ),
208
- spotTimerHandlers: [...registration.spotNodes.values()]
209
- .flatMap((spotNode) => [...(spotNode.spotTimerHandlers ?? [])]),
210
- spotPacketHandlers: [...registration.spotNodes.values()]
211
- .flatMap((spotNode) => [...(spotNode.spotPacketHandlers ?? [])]),
212
- spotSubscriptionHandlers: [...registration.spotNodes.values()]
213
- .flatMap((spotNode) => [...(spotNode.spotSubscriptionHandlers ?? [])]),
214
- spotActorSendHandlers: [...registration.spotNodes.values()]
215
- .flatMap((spotNode) => [...(spotNode.spotActorSendHandlers ?? [])]),
216
- spotActorRequestHandlers: [...registration.spotNodes.values()]
217
- .flatMap((spotNode) => [...(spotNode.spotActorRequestHandlers ?? [])]),
216
+ spotTimerHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
217
+ ...(spotNode.spotTimerHandlers ?? [])
218
+ ]),
219
+ spotPacketHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
220
+ ...(spotNode.spotPacketHandlers ?? [])
221
+ ]),
222
+ spotSubscriptionHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
223
+ ...(spotNode.spotSubscriptionHandlers ?? [])
224
+ ]),
225
+ spotActorSendHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
226
+ ...(spotNode.spotActorSendHandlers ?? [])
227
+ ]),
228
+ spotActorRequestHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
229
+ ...(spotNode.spotActorRequestHandlers ?? [])
230
+ ]),
218
231
  ...runtimeOptions,
219
232
  spotRouteResolver: runtimeOptions.spotRouteResolver,
220
233
  routedTransport: host.routeTransport,
@@ -225,7 +238,9 @@ export function createIntegrationSpotManager(
225
238
  return host.createPublicSpotManager(manager);
226
239
  }
227
240
 
228
- export function createIntegrationSpotOutbound(runtime: ZLinkNestIntegrationRuntimeHost): ZLinkSpotOutbound {
241
+ export function createIntegrationSpotOutbound(
242
+ runtime: ZLinkNestIntegrationRuntimeHost
243
+ ): ZLinkSpotOutbound {
229
244
  const host = runtimeHost(runtime);
230
245
  const runtimeOptions = host.createSpotManagerOptions();
231
246
  return new DefaultZLinkSpotOutbound({
@@ -18,8 +18,10 @@ export function createAbortError(): ZLinkAbortError {
18
18
  }
19
19
 
20
20
  export function isAbortError(error: unknown): boolean {
21
- return error instanceof ZLinkAbortError
22
- || (error instanceof DOMException && error.name === 'AbortError');
21
+ return (
22
+ error instanceof ZLinkAbortError ||
23
+ (error instanceof DOMException && error.name === 'AbortError')
24
+ );
23
25
  }
24
26
 
25
27
  export function createDeadlineExceededError(message?: string): ZLinkDeadlineExceededError {
@@ -63,8 +65,12 @@ export function awaitWithAbort<T>(
63
65
  };
64
66
  signal.addEventListener('abort', abort, { once: true });
65
67
  operation.then(
66
- (value) => { if (settle()) resolve(value); },
67
- (error) => { if (settle()) reject(error); }
68
+ (value) => {
69
+ if (settle()) resolve(value);
70
+ },
71
+ (error) => {
72
+ if (settle()) reject(error);
73
+ }
68
74
  );
69
75
  });
70
76
  }
@@ -37,9 +37,7 @@ interface ActorRelocationEnvelope {
37
37
  }
38
38
 
39
39
  /** Encodes the durable authority-payload-v1 envelope around one schema body. */
40
- export function encodeCanonicalAuthorityPayload(
41
- value: ZLinkCanonicalAuthorityPayload
42
- ): Buffer {
40
+ export function encodeCanonicalAuthorityPayload(value: ZLinkCanonicalAuthorityPayload): Buffer {
43
41
  const body = Buffer.from(value.body);
44
42
  const envelope = concat(
45
43
  AUTHORITY_MAGIC,
@@ -129,15 +127,16 @@ export function decodeActorAuthorityPayload(
129
127
  const currentSpotId = actor.text8();
130
128
  const currentSpotGeneration = actor.nonzeroU64();
131
129
  const currentSpotKind = zlinkSpotKindFromWire(actor.u8());
132
- const state: ZLinkActorAuthorityState | undefined = stateValue === 0 && operation === 1
133
- ? 'creating'
134
- : stateValue === 1 && operation === 0
135
- ? 'ready'
136
- : undefined;
130
+ const state: ZLinkActorAuthorityState | undefined =
131
+ stateValue === 0 && operation === 1
132
+ ? 'creating'
133
+ : stateValue === 1 && operation === 0
134
+ ? 'ready'
135
+ : undefined;
137
136
  if (
138
- !actor.done
139
- || state === undefined
140
- || currentSpotKind !== ZLinkSpotKind.Entry && currentSpotKind !== ZLinkSpotKind.User
137
+ !actor.done ||
138
+ state === undefined ||
139
+ (currentSpotKind !== ZLinkSpotKind.Entry && currentSpotKind !== ZLinkSpotKind.User)
141
140
  ) {
142
141
  return undefined;
143
142
  }
@@ -146,13 +145,7 @@ export function decodeActorAuthorityPayload(
146
145
  const meshName = body.text8();
147
146
  const nodeRid = body.rid();
148
147
  const nodeGeneration = body.nonzeroU64();
149
- if (
150
- body.u8() !== 0
151
- || body.u32() !== 0
152
- || body.u8() !== 0
153
- || body.u32() !== 0
154
- || !body.done
155
- ) {
148
+ if (body.u8() !== 0 || body.u32() !== 0 || body.u8() !== 0 || body.u32() !== 0 || !body.done) {
156
149
  return undefined;
157
150
  }
158
151
  return {
@@ -209,9 +202,7 @@ export function replaceActorRelocationAuthorityApplicationPayload(
209
202
  return encoded;
210
203
  }
211
204
 
212
- function decodeActorRelocationEnvelope(
213
- payload: Uint8Array
214
- ): ActorRelocationEnvelope | undefined {
205
+ function decodeActorRelocationEnvelope(payload: Uint8Array): ActorRelocationEnvelope | undefined {
215
206
  try {
216
207
  const bytes = Buffer.from(payload);
217
208
  if (bytes.byteLength < 32 || bytes.byteLength > MAXIMUM_BYTES) return undefined;
@@ -223,7 +214,7 @@ function decodeActorRelocationEnvelope(
223
214
  reader.expect(ACTOR_RELOCATION_MAGIC);
224
215
  const version = reader.u16();
225
216
  if (version !== 5 && version !== 6) return undefined;
226
- if (reader.take(16).every(byte => byte === 0)) return undefined;
217
+ if (reader.take(16).every((byte) => byte === 0)) return undefined;
227
218
  const phase = reader.u8();
228
219
  if (phase < 1 || phase > 4) return undefined;
229
220
  const isBound = reader.bool();
@@ -244,12 +235,12 @@ function decodeActorRelocationEnvelope(
244
235
  reader.u64();
245
236
  }
246
237
  if (
247
- bindingGeneration === 0n
248
- || objectGeneration === 0n
249
- || authorityOwnerGeneration === 0n
250
- || targetNodeGeneration === 0n
251
- || ownerLeaseGeneration === 0n
252
- || sessionOwnerNodeGeneration === 0n
238
+ bindingGeneration === 0n ||
239
+ objectGeneration === 0n ||
240
+ authorityOwnerGeneration === 0n ||
241
+ targetNodeGeneration === 0n ||
242
+ ownerLeaseGeneration === 0n ||
243
+ sessionOwnerNodeGeneration === 0n
253
244
  ) {
254
245
  return undefined;
255
246
  }
@@ -315,7 +306,7 @@ function i32le(value: number): Buffer {
315
306
  }
316
307
 
317
308
  function concat(...parts: readonly Uint8Array[]): Buffer {
318
- return Buffer.concat(parts.map(part => Buffer.from(part)));
309
+ return Buffer.concat(parts.map((part) => Buffer.from(part)));
319
310
  }
320
311
 
321
312
  class BigEndianReader {
@@ -1,7 +1,5 @@
1
1
  import { createHash } from 'node:crypto';
2
- import type {
3
- ActorRef
4
- } from '../../contracts';
2
+ import type { ActorRef } from '../../contracts';
5
3
  import { ZLinkSpotKind } from '../../contracts';
6
4
  import type { ZLinkLocationOwnerToken } from '../../contracts/Locations';
7
5
  import type { ZLinkAuthoritySnapshot } from '../locations/internal-location-contracts';
@@ -53,18 +51,21 @@ export async function publishInitialActorAuthority(
53
51
  nodeLifecycleGeneration: identity.ownerNodeGeneration,
54
52
  owner: identity.owner
55
53
  };
56
- const reserved = await store.reserve({
57
- key: { kind: 'actor', globalId: identity.actor.actorId },
58
- intent: {
59
- stableType: identity.actorType,
60
- requestContentReference: `sha256:${digest.toString('hex')}`,
61
- requestSha256: digest,
62
- requestEncodedSize: BigInt(readyPayload.byteLength)
54
+ const reserved = await store.reserve(
55
+ {
56
+ key: { kind: 'actor', globalId: identity.actor.actorId },
57
+ intent: {
58
+ stableType: identity.actorType,
59
+ requestContentReference: `sha256:${digest.toString('hex')}`,
60
+ requestSha256: digest,
61
+ requestEncodedSize: BigInt(readyPayload.byteLength)
62
+ },
63
+ target,
64
+ creatingPayload,
65
+ capacity: { actors: 1, spots: 0 }
63
66
  },
64
- target,
65
- creatingPayload,
66
- capacity: { actors: 1, spots: 0 }
67
- }, signal);
67
+ signal
68
+ );
68
69
  if (reserved.kind === 'alreadyExists') {
69
70
  requireActorAuthority(reserved.current, identity);
70
71
  return reserved.current;
@@ -76,39 +77,47 @@ export async function publishInitialActorAuthority(
76
77
  }
77
78
 
78
79
  try {
79
- const terminalEnvelope = Buffer.from(encodeCreationOperationTerminalV1({
80
- terminalResult: 'ok',
81
- failureCode: 'none',
82
- hasCreation: 'true',
83
- creation: {
84
- createResult: 'created',
85
- actor: {
86
- actorId: identity.actor.actorId,
87
- objectGeneration: identity.actor.objectGeneration
88
- }
89
- },
90
- hasApplicationPayload: 'false'
91
- }, { runtimePredicates: {} }));
92
- const operationId = randomOperationId();
93
- const completed = await store.completeCreation({
94
- key: { kind: 'actor', globalId: identity.actor.actorId },
95
- reservationId: reserved.reservationId,
96
- expectedStoreVersion: reserved.creating.storeVersion.value,
97
- target,
98
- completion: {
99
- kind: 'created',
100
- readyPayload,
101
- terminal: {
102
- operation: {
103
- sourceNodeRid: identity.actor.nodeRid,
104
- sourceNodeGeneration: identity.ownerNodeGeneration,
105
- operationId
80
+ const terminalEnvelope = Buffer.from(
81
+ encodeCreationOperationTerminalV1(
82
+ {
83
+ terminalResult: 'ok',
84
+ failureCode: 'none',
85
+ hasCreation: 'true',
86
+ creation: {
87
+ createResult: 'created',
88
+ actor: {
89
+ actorId: identity.actor.actorId,
90
+ objectGeneration: identity.actor.objectGeneration
91
+ }
106
92
  },
107
- terminalEnvelope,
108
- operationDeadline: new Date(Date.now() + CREATION_OPERATION_TIMEOUT_MS)
93
+ hasApplicationPayload: 'false'
94
+ },
95
+ {}
96
+ )
97
+ );
98
+ const operationId = randomOperationId();
99
+ const completed = await store.completeCreation(
100
+ {
101
+ key: { kind: 'actor', globalId: identity.actor.actorId },
102
+ reservationId: reserved.reservationId,
103
+ expectedStoreVersion: reserved.creating.storeVersion.value,
104
+ target,
105
+ completion: {
106
+ kind: 'created',
107
+ readyPayload,
108
+ terminal: {
109
+ operation: {
110
+ sourceNodeRid: identity.actor.nodeRid,
111
+ sourceNodeGeneration: identity.ownerNodeGeneration,
112
+ operationId
113
+ },
114
+ terminalEnvelope,
115
+ operationDeadline: new Date(Date.now() + CREATION_OPERATION_TIMEOUT_MS)
116
+ }
109
117
  }
110
- }
111
- }, signal);
118
+ },
119
+ signal
120
+ );
112
121
  if (completed.kind !== 'created') {
113
122
  throw new Error(
114
123
  `Actor '${identity.actor.actorId}' authority completion failed with '${completed.kind}'.`
@@ -117,20 +126,21 @@ export async function publishInitialActorAuthority(
117
126
  requireActorAuthority(completed.ready, identity);
118
127
  return completed.ready;
119
128
  } catch (error) {
120
- const aborted = await store.abort({
121
- key: { kind: 'actor', globalId: identity.actor.actorId },
122
- reservationId: reserved.reservationId,
123
- expectedStoreVersion: reserved.creating.storeVersion.value,
124
- target
125
- }, signal);
129
+ const aborted = await store.abort(
130
+ {
131
+ key: { kind: 'actor', globalId: identity.actor.actorId },
132
+ reservationId: reserved.reservationId,
133
+ expectedStoreVersion: reserved.creating.storeVersion.value,
134
+ target
135
+ },
136
+ signal
137
+ );
126
138
  if (aborted.kind === 'stale') throw error;
127
139
  throw error;
128
140
  }
129
141
  }
130
142
 
131
- export function encodeActorAuthorityIdentity(
132
- identity: ZLinkActorAuthorityIdentity
133
- ): Buffer {
143
+ export function encodeActorAuthorityIdentity(identity: ZLinkActorAuthorityIdentity): Buffer {
134
144
  return encodeActorAuthorityPayload({
135
145
  state: identity.state ?? 'ready',
136
146
  stableType: identity.actorType,
@@ -203,7 +213,7 @@ export function rewriteActorAuthorityRoute(
203
213
  ownerNodeGeneration?: bigint,
204
214
  owner?: ZLinkLocationOwnerToken
205
215
  ): Buffer {
206
- return rewriteActorAuthorityPayload(payload, value => {
216
+ return rewriteActorAuthorityPayload(payload, (value) => {
207
217
  if (value.actorId !== actor.actorId) {
208
218
  throw new Error(`Actor '${actor.actorId}' authority identity is invalid.`);
209
219
  }
@@ -225,18 +235,21 @@ export function rewriteActorAuthorityOwner(
225
235
  payload: Uint8Array,
226
236
  owner: ZLinkLocationOwnerToken
227
237
  ): Buffer {
228
- return rewriteActorAuthorityPayload(payload, value => encodeActorAuthorityPayload({
229
- ...value,
230
- ownerId: owner.ownerId,
231
- ownerLeaseGeneration: owner.leaseGeneration
232
- }));
238
+ return rewriteActorAuthorityPayload(payload, (value) =>
239
+ encodeActorAuthorityPayload({
240
+ ...value,
241
+ ownerId: owner.ownerId,
242
+ ownerLeaseGeneration: owner.leaseGeneration
243
+ })
244
+ );
233
245
  }
234
246
 
235
247
  export function isActorAuthorityPayload(payload: Uint8Array): boolean {
236
248
  const outerApplication = serviceRelocationAuthorityApplicationPayload(payload);
237
- return decodeActorAuthorityPayload(
238
- relocatingActorAuthorityApplicationPayload(outerApplication)
239
- ) !== undefined;
249
+ return (
250
+ decodeActorAuthorityPayload(relocatingActorAuthorityApplicationPayload(outerApplication)) !==
251
+ undefined
252
+ );
240
253
  }
241
254
 
242
255
  function rewriteActorAuthorityPayload(
@@ -261,20 +274,22 @@ function requireActorAuthority(
261
274
  ): void {
262
275
  const actual = decodeActorAuthorityIdentity(snapshot.payload, snapshot.objectGeneration);
263
276
  if (
264
- snapshot.allocation.state !== 'active'
265
- || snapshot.allocation.objectKind !== 'actor'
266
- || snapshot.allocation.stableType !== expected.actorType
267
- || snapshot.allocation.descriptor.meshName !== expected.meshName
268
- || String(snapshot.allocation.descriptor.rid) !== String(expected.actor.nodeRid)
269
- || snapshot.allocation.descriptorLifecycleGeneration !== expected.ownerNodeGeneration
270
- || snapshot.ownerId !== expected.owner.ownerId
271
- || snapshot.ownerLeaseGeneration !== expected.owner.leaseGeneration
272
- || actual === undefined
273
- || actual.actorType !== expected.actorType
274
- || actual.actor.actorId !== expected.actor.actorId
275
- || actual.actor.objectGeneration !== expected.actor.objectGeneration
276
- || String(actual.actor.nodeRid) !== String(expected.actor.nodeRid)
277
+ snapshot.allocation.state !== 'active' ||
278
+ snapshot.allocation.objectKind !== 'actor' ||
279
+ snapshot.allocation.stableType !== expected.actorType ||
280
+ snapshot.allocation.descriptor.meshName !== expected.meshName ||
281
+ String(snapshot.allocation.descriptor.rid) !== String(expected.actor.nodeRid) ||
282
+ snapshot.allocation.descriptorLifecycleGeneration !== expected.ownerNodeGeneration ||
283
+ snapshot.ownerId !== expected.owner.ownerId ||
284
+ snapshot.ownerLeaseGeneration !== expected.owner.leaseGeneration ||
285
+ actual === undefined ||
286
+ actual.actorType !== expected.actorType ||
287
+ actual.actor.actorId !== expected.actor.actorId ||
288
+ actual.actor.objectGeneration !== expected.actor.objectGeneration ||
289
+ String(actual.actor.nodeRid) !== String(expected.actor.nodeRid)
277
290
  ) {
278
- throw new Error(`Actor '${expected.actor.actorId}' authority fence does not match its ActorRef.`);
291
+ throw new Error(
292
+ `Actor '${expected.actor.actorId}' authority fence does not match its ActorRef.`
293
+ );
279
294
  }
280
295
  }