@zlink-systems/framework 0.20.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
@@ -9,24 +9,16 @@ import {
9
9
  type ZLinkFlowOrigin
10
10
  } from '../../contracts';
11
11
  import { borrowEncodedPayload } from '../../contracts/Common/encoded-payload-storage';
12
- import {
13
- isZLinkMessage,
14
- readZLinkMessageDeclaredType
15
- } from '../../contracts/Common/ZLinkMessage';
12
+ import { isZLinkMessage, readZLinkMessageDeclaredType } from '../../contracts/Common/ZLinkMessage';
16
13
  import { ZLinkConfigurationException } from '../configuration';
17
14
  import {
18
15
  ZLinkFrameworkInternalErrorKind,
19
16
  createInternalFrameworkException
20
17
  } from '../framework-errors-internal';
21
18
  import { resolveFrameworkPacketName } from '../messaging/packet-name';
22
- import {
23
- selectSerializerWithContentType
24
- } from '../messaging/payload-codec';
19
+ import { selectSerializerWithContentType } from '../messaging/payload-codec';
25
20
  import { isCanonicalCodecContentType } from '../../contracts/Configuration/CodecContentType';
26
- import {
27
- parseFrameworkJsonV1,
28
- stringifyFrameworkJsonV1
29
- } from '../messaging/framework-json-v1';
21
+ import { parseFrameworkJsonV1, stringifyFrameworkJsonV1 } from '../messaging/framework-json-v1';
30
22
  import { currentOrCreateFlow } from '../diagnostics/flow-context';
31
23
  import { codecsForFrameworkPacket } from './channel-framework-packets';
32
24
  import { readZLinkPacketJsonContract } from '../../contracts/Handlers/Attributes';
@@ -93,24 +85,32 @@ export function encodeChannelEnvelopeParts(
93
85
  metadata: ReadonlyMap<string, string> = EMPTY_OUTBOUND_METADATA
94
86
  ): readonly MessageLike[] {
95
87
  const messageName = resolveFrameworkPacketName(payload, packetName, 'Channel');
96
- const encoded = encodePayload(payload, codecsForFrameworkPacket(messageName, codecs), messageName, 'payload');
88
+ const encoded = encodePayload(
89
+ payload,
90
+ codecsForFrameworkPacket(messageName, codecs),
91
+ messageName,
92
+ 'payload'
93
+ );
97
94
  const flow = createFlow ? currentOrCreateFlow('Application') : undefined;
98
95
  const envelopeCorrelationId = correlationIdForOutboundKind(kind, correlationId);
99
- return [encodeChannelHeader(
100
- kind,
101
- channelName,
102
- messageName,
103
- encoded.contentType,
104
- envelopeCorrelationId,
105
- timeoutMs === undefined ? null : new Date(Date.now() + timeoutMs).toISOString(),
106
- topic ?? null,
107
- null,
108
- null,
109
- undefined,
110
- applicationMetadataRecord(metadata),
111
- flow?.flowId,
112
- flow?.flowOrigin
113
- ), encoded.message];
96
+ return [
97
+ encodeChannelHeader(
98
+ kind,
99
+ channelName,
100
+ messageName,
101
+ encoded.contentType,
102
+ envelopeCorrelationId,
103
+ timeoutMs === undefined ? null : new Date(Date.now() + timeoutMs).toISOString(),
104
+ topic ?? null,
105
+ null,
106
+ null,
107
+ undefined,
108
+ applicationMetadataRecord(metadata),
109
+ flow?.flowId,
110
+ flow?.flowOrigin
111
+ ),
112
+ encoded.message
113
+ ];
114
114
  }
115
115
 
116
116
  /**
@@ -135,24 +135,32 @@ export function encodeChannelEnvelopePartsAtDeadline(
135
135
  throw new RangeError('deadlineUnixMs must be a positive safe integer.');
136
136
  }
137
137
  const messageName = resolveFrameworkPacketName(payload, packetName, 'Channel');
138
- const encoded = encodePayload(payload, codecsForFrameworkPacket(messageName, codecs), messageName, 'payload');
138
+ const encoded = encodePayload(
139
+ payload,
140
+ codecsForFrameworkPacket(messageName, codecs),
141
+ messageName,
142
+ 'payload'
143
+ );
139
144
  const flow = createFlow ? currentOrCreateFlow('Application') : undefined;
140
145
  const envelopeCorrelationId = correlationIdForOutboundKind(kind, correlationId);
141
- return [encodeChannelHeader(
142
- kind,
143
- channelName,
144
- messageName,
145
- encoded.contentType,
146
- envelopeCorrelationId,
147
- new Date(deadlineUnixMs).toISOString(),
148
- topic ?? null,
149
- null,
150
- null,
151
- undefined,
152
- applicationMetadataRecord(metadata),
153
- flow?.flowId,
154
- flow?.flowOrigin
155
- ), encoded.message];
146
+ return [
147
+ encodeChannelHeader(
148
+ kind,
149
+ channelName,
150
+ messageName,
151
+ encoded.contentType,
152
+ envelopeCorrelationId,
153
+ new Date(deadlineUnixMs).toISOString(),
154
+ topic ?? null,
155
+ null,
156
+ null,
157
+ undefined,
158
+ applicationMetadataRecord(metadata),
159
+ flow?.flowId,
160
+ flow?.flowOrigin
161
+ ),
162
+ encoded.message
163
+ ];
156
164
  }
157
165
 
158
166
  export function encodeChannelPublishEnvelopeParts(
@@ -165,23 +173,31 @@ export function encodeChannelPublishEnvelopeParts(
165
173
  metadata: ReadonlyMap<string, string> = EMPTY_OUTBOUND_METADATA
166
174
  ): readonly MessageLike[] {
167
175
  const messageName = resolveFrameworkPacketName(payload, packetName, 'Channel');
168
- const encoded = encodePayload(payload, codecsForFrameworkPacket(messageName, codecs), messageName, 'payload');
169
- const flow = createFlow ? currentOrCreateFlow('Application') : undefined;
170
- return [encodeChannelHeader(
171
- ZLinkChannelMessageKind.Publish,
172
- channelName,
176
+ const encoded = encodePayload(
177
+ payload,
178
+ codecsForFrameworkPacket(messageName, codecs),
173
179
  messageName,
174
- encoded.contentType,
175
- null,
176
- null,
177
- topic,
178
- null,
179
- null,
180
- undefined,
181
- applicationMetadataRecord(metadata),
182
- flow?.flowId,
183
- flow?.flowOrigin
184
- ), encoded.message];
180
+ 'payload'
181
+ );
182
+ const flow = createFlow ? currentOrCreateFlow('Application') : undefined;
183
+ return [
184
+ encodeChannelHeader(
185
+ ZLinkChannelMessageKind.Publish,
186
+ channelName,
187
+ messageName,
188
+ encoded.contentType,
189
+ null,
190
+ null,
191
+ topic,
192
+ null,
193
+ null,
194
+ undefined,
195
+ applicationMetadataRecord(metadata),
196
+ flow?.flowId,
197
+ flow?.flowOrigin
198
+ ),
199
+ encoded.message
200
+ ];
185
201
  }
186
202
 
187
203
  export function encodeChannelReplyParts(
@@ -195,21 +211,24 @@ export function encodeChannelReplyParts(
195
211
  request.messageName,
196
212
  'reply'
197
213
  );
198
- return [encodeChannelHeader(
199
- ZLinkChannelMessageKind.Response,
200
- request.channelName,
201
- request.messageName,
202
- encoded.contentType,
203
- request.correlationId,
204
- null,
205
- null,
206
- undefined,
207
- undefined,
208
- undefined,
209
- EMPTY_APPLICATION_METADATA,
210
- request.flowId,
211
- request.flowOrigin
212
- ), encoded.message];
214
+ return [
215
+ encodeChannelHeader(
216
+ ZLinkChannelMessageKind.Response,
217
+ request.channelName,
218
+ request.messageName,
219
+ encoded.contentType,
220
+ request.correlationId,
221
+ null,
222
+ null,
223
+ undefined,
224
+ undefined,
225
+ undefined,
226
+ EMPTY_APPLICATION_METADATA,
227
+ request.flowId,
228
+ request.flowOrigin
229
+ ),
230
+ encoded.message
231
+ ];
213
232
  }
214
233
 
215
234
  /**
@@ -267,26 +286,27 @@ export function encodeChannelErrorReplyParts(
267
286
  metadata: Readonly<Record<string, string>> = {}
268
287
  ): readonly MessageLike[] {
269
288
  const errorCode = channelErrorCodeName(
270
- error instanceof ZLinkFrameworkException
271
- ? error.kind
272
- : ZLinkFrameworkErrorKind.InternalFailure
289
+ error instanceof ZLinkFrameworkException ? error.kind : ZLinkFrameworkErrorKind.InternalFailure
273
290
  );
274
291
  const errorMessage = error instanceof Error ? error.message : String(error);
275
- return [encodeChannelHeader(
276
- ZLinkChannelMessageKind.Error,
277
- request.channelName,
278
- request.messageName,
279
- JSON_CONTENT_TYPE,
280
- request.correlationId,
281
- null,
282
- null,
283
- errorCode,
284
- errorMessage,
285
- undefined,
286
- metadata,
287
- request.flowId,
288
- request.flowOrigin
289
- ), encodeJsonBytes(null)];
292
+ return [
293
+ encodeChannelHeader(
294
+ ZLinkChannelMessageKind.Error,
295
+ request.channelName,
296
+ request.messageName,
297
+ JSON_CONTENT_TYPE,
298
+ request.correlationId,
299
+ null,
300
+ null,
301
+ errorCode,
302
+ errorMessage,
303
+ undefined,
304
+ metadata,
305
+ request.flowId,
306
+ request.flowOrigin
307
+ ),
308
+ encodeJsonBytes(null)
309
+ ];
290
310
  }
291
311
 
292
312
  export function decodeChannelReply<TReply>(
@@ -305,9 +325,9 @@ export function decodeChannelReply<TReply>(
305
325
  }
306
326
  const serializer = codecs?.serializers.get(header.contentType);
307
327
  if (
308
- serializer === undefined
309
- && header.contentType !== BINARY_CONTENT_TYPE
310
- && header.contentType !== JSON_CONTENT_TYPE
328
+ serializer === undefined &&
329
+ header.contentType !== BINARY_CONTENT_TYPE &&
330
+ header.contentType !== JSON_CONTENT_TYPE
311
331
  ) {
312
332
  throw unsupportedChannelContentType(header.contentType);
313
333
  }
@@ -318,7 +338,10 @@ export function decodeChannelReply<TReply>(
318
338
  return Buffer.from(parts[1].data()) as TReply;
319
339
  }
320
340
  if (serializer !== undefined) {
321
- return serializer.deserialize<TReply>(ZLinkEncodedPayload.from(parts[1].data()), Object as never);
341
+ return serializer.deserialize<TReply>(
342
+ ZLinkEncodedPayload.from(parts[1].data()),
343
+ Object as never
344
+ );
322
345
  }
323
346
  return parseWireJson(
324
347
  parts[1].data().toString(),
@@ -339,8 +362,7 @@ function decodeChannelError(header: ZLinkChannelEnvelopeHeader): ZLinkChannelDec
339
362
  // Cross-language contract: errorCode carries the snake_case wire name.
340
363
  // An unknown name degrades to InternalFailure, matching the C++
341
364
  // request_failure_mapper fallback for unrecognized codes.
342
- const publicKind = ERROR_KIND_BY_WIRE_NAME.get(code)
343
- ?? ZLinkFrameworkErrorKind.InternalFailure;
365
+ const publicKind = ERROR_KIND_BY_WIRE_NAME.get(code) ?? ZLinkFrameworkErrorKind.InternalFailure;
344
366
  failure = new ZLinkFrameworkException(publicKind, message);
345
367
  }
346
368
  // Cross-language contract (.NET ZLinkErrorOriginWire.RemoteReplyOrigin /
@@ -353,10 +375,10 @@ function decodeChannelError(header: ZLinkChannelEnvelopeHeader): ZLinkChannelDec
353
375
  // reached for bytes that DID come back over the wire) are unaffected and
354
376
  // stay unclassified (`origin: undefined`, i.e. "unspecified") because
355
377
  // they never call this function at all.
356
- failure.origin = header.metadata[ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY]
357
- === ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
358
- ? ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
359
- : 'application';
378
+ failure.origin =
379
+ header.metadata[ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY] === ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
380
+ ? ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
381
+ : 'application';
360
382
  return failure;
361
383
  }
362
384
 
@@ -448,12 +470,13 @@ function encodePayload(
448
470
  message: borrowEncodedPayload(payload) ?? payload.data()
449
471
  };
450
472
  }
451
- const declaredType = isZLinkMessage(value)
452
- ? readZLinkMessageDeclaredType(value)
453
- : undefined;
473
+ const declaredType = isZLinkMessage(value) ? readZLinkMessageDeclaredType(value) : undefined;
454
474
  if (isZLinkMessage(value)) value = value.decode();
455
475
  const selected = selectSerializerWithContentType(value, codecs, declaredType);
456
- if (selected !== undefined && !(Buffer.isBuffer(value) || value instanceof Uint8Array || isMessage(value))) {
476
+ if (
477
+ selected !== undefined &&
478
+ !(Buffer.isBuffer(value) || value instanceof Uint8Array || isMessage(value))
479
+ ) {
457
480
  const payload = selected.serializer.serialize(value);
458
481
  return {
459
482
  contentType: selected.contentType,
@@ -480,7 +503,11 @@ function contentTypeOf(value: unknown): string {
480
503
  }
481
504
 
482
505
  function isMessage(value: unknown): value is Message {
483
- return typeof value === 'object' && value !== null && typeof (value as { data?: unknown }).data === 'function';
506
+ return (
507
+ typeof value === 'object' &&
508
+ value !== null &&
509
+ typeof (value as { data?: unknown }).data === 'function'
510
+ );
484
511
  }
485
512
 
486
513
  function encodeJsonBytes(value: unknown, schema?: ZLinkJsonSchema): Buffer {
@@ -507,14 +534,38 @@ function encodeChannelHeader(
507
534
  // string, or post-encode byte copy exists on the outbound path.
508
535
  const measure = new ChannelHeaderWriter();
509
536
  writeChannelHeader(
510
- measure, kind, channelName, messageName, contentType, correlationId,
511
- deadline, topic, errorCode, errorMessage, source, metadata, flowId, flowOrigin
537
+ measure,
538
+ kind,
539
+ channelName,
540
+ messageName,
541
+ contentType,
542
+ correlationId,
543
+ deadline,
544
+ topic,
545
+ errorCode,
546
+ errorMessage,
547
+ source,
548
+ metadata,
549
+ flowId,
550
+ flowOrigin
512
551
  );
513
552
  const result = Buffer.alloc(measure.byteLength);
514
553
  const writer = new ChannelHeaderWriter(result);
515
554
  writeChannelHeader(
516
- writer, kind, channelName, messageName, contentType, correlationId,
517
- deadline, topic, errorCode, errorMessage, source, metadata, flowId, flowOrigin
555
+ writer,
556
+ kind,
557
+ channelName,
558
+ messageName,
559
+ contentType,
560
+ correlationId,
561
+ deadline,
562
+ topic,
563
+ errorCode,
564
+ errorMessage,
565
+ source,
566
+ metadata,
567
+ flowId,
568
+ flowOrigin
518
569
  );
519
570
  return result;
520
571
  }
@@ -614,13 +665,27 @@ class ChannelHeaderWriter {
614
665
  const code = value.charCodeAt(index);
615
666
  let escaped: string | undefined;
616
667
  switch (code) {
617
- case 0x08: escaped = '\\b'; break;
618
- case 0x09: escaped = '\\t'; break;
619
- case 0x0a: escaped = '\\n'; break;
620
- case 0x0c: escaped = '\\f'; break;
621
- case 0x0d: escaped = '\\r'; break;
622
- case 0x22: escaped = '\\"'; break;
623
- case 0x5c: escaped = '\\\\'; break;
668
+ case 0x08:
669
+ escaped = '\\b';
670
+ break;
671
+ case 0x09:
672
+ escaped = '\\t';
673
+ break;
674
+ case 0x0a:
675
+ escaped = '\\n';
676
+ break;
677
+ case 0x0c:
678
+ escaped = '\\f';
679
+ break;
680
+ case 0x0d:
681
+ escaped = '\\r';
682
+ break;
683
+ case 0x22:
684
+ escaped = '\\"';
685
+ break;
686
+ case 0x5c:
687
+ escaped = '\\\\';
688
+ break;
624
689
  default:
625
690
  if (code < 0x20) {
626
691
  escaped = `\\u00${code.toString(16).padStart(2, '0')}`;
@@ -647,10 +712,14 @@ class ChannelHeaderWriter {
647
712
 
648
713
  function encodeFlowOrigin(origin: ZLinkFlowOrigin): number {
649
714
  switch (origin) {
650
- case 'Inbound': return 1;
651
- case 'Timer': return 2;
652
- case 'Application': return 3;
653
- case 'Lifecycle': return 4;
715
+ case 'Inbound':
716
+ return 1;
717
+ case 'Timer':
718
+ return 2;
719
+ case 'Application':
720
+ return 3;
721
+ case 'Lifecycle':
722
+ return 4;
654
723
  }
655
724
  }
656
725
 
@@ -665,9 +734,13 @@ export function decodeChannelHeader(
665
734
  }
666
735
 
667
736
  function parseWireJson(payload: string, schema?: ZLinkJsonSchema): unknown {
668
- return parseFrameworkJsonV1(payload, {
669
- rejectPropertyName: isPrototypeKey
670
- }, schema);
737
+ return parseFrameworkJsonV1(
738
+ payload,
739
+ {
740
+ rejectPropertyName: isPrototypeKey
741
+ },
742
+ schema
743
+ );
671
744
  }
672
745
 
673
746
  function parseChannelHeaderBytes(payload: Buffer): unknown {
@@ -765,9 +838,16 @@ class CanonicalChannelHeaderReader {
765
838
  const digit = this.bytes[this.index++];
766
839
  if (!isHexDigit(digit)) return undefined;
767
840
  }
768
- } else if (escaped !== 0x22 && escaped !== 0x5c && escaped !== 0x2f
769
- && escaped !== 0x62 && escaped !== 0x66 && escaped !== 0x6e
770
- && escaped !== 0x72 && escaped !== 0x74) {
841
+ } else if (
842
+ escaped !== 0x22 &&
843
+ escaped !== 0x5c &&
844
+ escaped !== 0x2f &&
845
+ escaped !== 0x62 &&
846
+ escaped !== 0x66 &&
847
+ escaped !== 0x6e &&
848
+ escaped !== 0x72 &&
849
+ escaped !== 0x74
850
+ ) {
771
851
  return undefined;
772
852
  }
773
853
  }
@@ -805,12 +885,16 @@ class CanonicalChannelHeaderReader {
805
885
  }
806
886
 
807
887
  function isHexDigit(value: number): boolean {
808
- return (value >= 0x30 && value <= 0x39)
809
- || (value >= 0x41 && value <= 0x46)
810
- || (value >= 0x61 && value <= 0x66);
888
+ return (
889
+ (value >= 0x30 && value <= 0x39) ||
890
+ (value >= 0x41 && value <= 0x46) ||
891
+ (value >= 0x61 && value <= 0x66)
892
+ );
811
893
  }
812
894
 
813
- function schemaForInboundChannelEnvelope(header: ZLinkChannelEnvelopeHeader): ZLinkJsonSchema | undefined {
895
+ function schemaForInboundChannelEnvelope(
896
+ header: ZLinkChannelEnvelopeHeader
897
+ ): ZLinkJsonSchema | undefined {
814
898
  const contract = readZLinkPacketJsonContract(header.messageName);
815
899
  return header.kind === ZLinkChannelMessageKind.Response ? contract?.reply : contract?.payload;
816
900
  }
@@ -834,7 +918,9 @@ function validateChannelHeader(value: unknown, flowEnabled = true): ZLinkChannel
834
918
  const flowId = flowEnabled ? optionalFlowId(header.flowId) : undefined;
835
919
  const flowOrigin = flowEnabled ? optionalFlowOrigin(header.flowOrigin) : undefined;
836
920
  if ((flowId === undefined) !== (flowOrigin === undefined)) {
837
- throw new ZLinkConfigurationException('Channel envelope flowId and flowOrigin must both be present or absent.');
921
+ throw new ZLinkConfigurationException(
922
+ 'Channel envelope flowId and flowOrigin must both be present or absent.'
923
+ );
838
924
  }
839
925
  const correlationId = requireNullableString(header.correlationId, 'correlationId');
840
926
  validateCorrelationForKind(kind, correlationId);
@@ -844,9 +930,14 @@ function validateChannelHeader(value: unknown, flowEnabled = true): ZLinkChannel
844
930
  requireNullableString(header.topic, 'topic');
845
931
  // Parsing already gives this receive operation an owned object. Validate
846
932
  // and normalize it here instead of allocating a second header per record.
847
- header.errorCode = header.errorCode === undefined ? null : requireNullableString(header.errorCode, 'errorCode');
848
- header.errorMessage = header.errorMessage === undefined ? null : requireNullableString(header.errorMessage, 'errorMessage');
849
- header.source = header.source === undefined ? undefined : requireNullableString(header.source, 'source');
933
+ header.errorCode =
934
+ header.errorCode === undefined ? null : requireNullableString(header.errorCode, 'errorCode');
935
+ header.errorMessage =
936
+ header.errorMessage === undefined
937
+ ? null
938
+ : requireNullableString(header.errorMessage, 'errorMessage');
939
+ header.source =
940
+ header.source === undefined ? undefined : requireNullableString(header.source, 'source');
850
941
  header.metadata = requireApplicationMetadata(header.metadata);
851
942
  header.flowId = flowId;
852
943
  header.flowOrigin = flowOrigin;
@@ -879,9 +970,11 @@ function validateCorrelationForKind(
879
970
  kind: ZLinkChannelMessageKind,
880
971
  correlationId: string | null
881
972
  ): void {
882
- if (kind === ZLinkChannelMessageKind.Request
883
- || kind === ZLinkChannelMessageKind.Response
884
- || kind === ZLinkChannelMessageKind.Error) {
973
+ if (
974
+ kind === ZLinkChannelMessageKind.Request ||
975
+ kind === ZLinkChannelMessageKind.Response ||
976
+ kind === ZLinkChannelMessageKind.Error
977
+ ) {
885
978
  if (correlationId === null) {
886
979
  throw new ZLinkConfigurationException(
887
980
  `Channel ${channelKindName(kind)} requires correlationId.`
@@ -908,17 +1001,24 @@ function validateCorrelationValue(correlationId: string): void {
908
1001
 
909
1002
  function channelKindName(kind: ZLinkChannelMessageKind): string {
910
1003
  switch (kind) {
911
- case ZLinkChannelMessageKind.Request: return 'request';
912
- case ZLinkChannelMessageKind.Response: return 'response';
913
- case ZLinkChannelMessageKind.Command: return 'send';
914
- case ZLinkChannelMessageKind.Publish: return 'publish';
915
- case ZLinkChannelMessageKind.Error: return 'error';
1004
+ case ZLinkChannelMessageKind.Request:
1005
+ return 'request';
1006
+ case ZLinkChannelMessageKind.Response:
1007
+ return 'response';
1008
+ case ZLinkChannelMessageKind.Command:
1009
+ return 'send';
1010
+ case ZLinkChannelMessageKind.Publish:
1011
+ return 'publish';
1012
+ case ZLinkChannelMessageKind.Error:
1013
+ return 'error';
916
1014
  }
917
1015
  }
918
1016
 
919
1017
  const EMPTY_APPLICATION_METADATA: Readonly<Record<string, string>> = Object.freeze({});
920
1018
 
921
- function applicationMetadataRecord(metadata: ReadonlyMap<string, string>): Readonly<Record<string, string>> {
1019
+ function applicationMetadataRecord(
1020
+ metadata: ReadonlyMap<string, string>
1021
+ ): Readonly<Record<string, string>> {
922
1022
  // The common case carries no metadata; skip the record + JSON.stringify
923
1023
  // byte-limit walk entirely.
924
1024
  if (metadata.size === 0) return EMPTY_APPLICATION_METADATA;
@@ -932,7 +1032,9 @@ function applicationMetadataRecord(metadata: ReadonlyMap<string, string>): Reado
932
1032
  record[key] = value;
933
1033
  }
934
1034
  if (Buffer.byteLength(JSON.stringify(record), 'utf8') > 1024) {
935
- throw new ZLinkConfigurationException('Channel application metadata exceeds the 1024-byte limit.');
1035
+ throw new ZLinkConfigurationException(
1036
+ 'Channel application metadata exceeds the 1024-byte limit.'
1037
+ );
936
1038
  }
937
1039
  return Object.freeze(record);
938
1040
  }
@@ -969,10 +1071,14 @@ function requireFlowId(value: unknown): string {
969
1071
 
970
1072
  function requireFlowOrigin(value: unknown): ZLinkFlowOrigin {
971
1073
  switch (value) {
972
- case 1: return 'Inbound';
973
- case 2: return 'Timer';
974
- case 3: return 'Application';
975
- case 4: return 'Lifecycle';
1074
+ case 1:
1075
+ return 'Inbound';
1076
+ case 2:
1077
+ return 'Timer';
1078
+ case 3:
1079
+ return 'Application';
1080
+ case 4:
1081
+ return 'Lifecycle';
976
1082
  }
977
1083
  throw new ZLinkConfigurationException('Channel envelope flowOrigin is invalid.');
978
1084
  }
@@ -4,7 +4,10 @@ import {
4
4
  requestResultToPublicErrorKind
5
5
  } from '../framework-errors-internal';
6
6
  import type { Message } from '../../contracts/Common/Message';
7
- import { type ZLinkBackendMessageLike as MessageLike, isZLinkBackendResultError } from '../backend/runtime-values';
7
+ import {
8
+ type ZLinkBackendMessageLike as MessageLike,
9
+ isZLinkBackendResultError
10
+ } from '../backend/runtime-values';
8
11
  import { ZLinkConfigurationException } from '../configuration';
9
12
  import { ZLinkFrameworkException } from '../../contracts';
10
13
 
@@ -35,7 +38,9 @@ export function appendParts<TNext extends ZLinkMultipartOperation<TNext>>(
35
38
  parts: readonly MessageLike[]
36
39
  ): TNext {
37
40
  if (parts.length === 0) {
38
- throw new ZLinkConfigurationException('Channel multipart envelope must contain at least one part.');
41
+ throw new ZLinkConfigurationException(
42
+ 'Channel multipart envelope must contain at least one part.'
43
+ );
39
44
  }
40
45
  let current: TNext = operation.message(parts[0]);
41
46
  for (let index = 1; index < parts.length; index++) {
@@ -44,9 +49,12 @@ export function appendParts<TNext extends ZLinkMultipartOperation<TNext>>(
44
49
  return current;
45
50
  }
46
51
 
47
- export async function submitRequestOperation(operation: {
48
- submit(): Promise<readonly Message[]>;
49
- }, label: string): Promise<readonly Message[]> {
52
+ export async function submitRequestOperation(
53
+ operation: {
54
+ submit(): Promise<readonly Message[]>;
55
+ },
56
+ label: string
57
+ ): Promise<readonly Message[]> {
50
58
  try {
51
59
  return await operation.submit();
52
60
  } catch (error) {