@zlink-systems/framework 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  3. package/dist/contracts/Common/CoreTypes.js +7 -0
  4. package/dist/contracts/Common/index.d.ts +1 -1
  5. package/dist/contracts/Common/index.js +0 -1
  6. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  7. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  8. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  9. package/dist/contracts/Configuration/Registration.js +58 -36
  10. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  12. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
  16. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  17. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  18. package/dist/contracts/Handlers/JsonContract.js +10 -4
  19. package/dist/contracts/Locations/Authority.d.ts +1 -1
  20. package/dist/contracts/Locations/Authority.js +3 -2
  21. package/dist/contracts/Locations/Options.js +1 -1
  22. package/dist/contracts/Locations/Stores.d.ts +12 -0
  23. package/dist/contracts/Locations/Stores.js +9 -0
  24. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  25. package/dist/internal.d.ts +4 -0
  26. package/dist/internal.js +15 -1
  27. package/dist/nest-integration.d.ts +4 -2
  28. package/dist/nest-integration.js +14 -4
  29. package/dist/runtime/abort.d.ts +1 -0
  30. package/dist/runtime/abort.js +8 -5
  31. package/dist/runtime/activation-admission.d.ts +1 -2
  32. package/dist/runtime/activation-admission.js +2 -6
  33. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  34. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  35. package/dist/runtime/actors/actor-client.d.ts +2 -2
  36. package/dist/runtime/actors/actor-client.js +42 -143
  37. package/dist/runtime/actors/actor-context.d.ts +3 -5
  38. package/dist/runtime/actors/actor-context.js +13 -11
  39. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  40. package/dist/runtime/actors/actor-handoff.js +8 -8
  41. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  42. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  43. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  44. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  45. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  46. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  47. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  48. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  49. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  50. package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
  51. package/dist/runtime/actors/actor-request-deadline.js +31 -0
  52. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  53. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  54. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  55. package/dist/runtime/actors/bound-session-wire.js +2 -7
  56. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  57. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  58. package/dist/runtime/actors/index.d.ts +9 -7
  59. package/dist/runtime/actors/index.js +87 -69
  60. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  61. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  62. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  63. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  64. package/dist/runtime/admission.d.ts +2 -0
  65. package/dist/runtime/admission.js +7 -1
  66. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  67. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  68. package/dist/runtime/backend/contracts/index.d.ts +6 -23
  69. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  70. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  71. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  72. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
  73. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
  74. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  75. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  76. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  77. package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
  78. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  79. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  80. package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
  81. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  82. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  83. package/dist/runtime/backend/runtime-values.js +2 -0
  84. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  85. package/dist/runtime/channels/channel-clients.js +68 -52
  86. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  87. package/dist/runtime/channels/channel-envelope.js +47 -29
  88. package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
  89. package/dist/runtime/channels/channel-outbound-operations.js +9 -10
  90. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  91. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  94. package/dist/runtime/channels/channel-runtime-manager.js +5 -2
  95. package/dist/runtime/channels/channel-socket-options.js +3 -2
  96. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  97. package/dist/runtime/channels/channel-socket-registry.js +248 -174
  98. package/dist/runtime/channels/channel-transports.d.ts +11 -17
  99. package/dist/runtime/channels/channel-transports.js +68 -47
  100. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  101. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  102. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  103. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  104. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  105. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  106. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  107. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  108. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  109. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  110. package/dist/runtime/channels/spot-node-route-transport.js +3 -2
  111. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  112. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  113. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  114. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  115. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  116. package/dist/runtime/diagnostics/flow-context.js +16 -2
  117. package/dist/runtime/diagnostics/index.d.ts +4 -2
  118. package/dist/runtime/diagnostics/index.js +14 -4
  119. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  120. package/dist/runtime/diagnostics/message-flow.js +10 -19
  121. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  122. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  123. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  124. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  125. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  126. package/dist/runtime/disposal.d.ts +5 -0
  127. package/dist/runtime/disposal.js +22 -0
  128. package/dist/runtime/execution/index.d.ts +12 -9
  129. package/dist/runtime/execution/index.js +58 -14
  130. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  131. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  132. package/dist/runtime/execution/state-lane.d.ts +8 -1
  133. package/dist/runtime/execution/state-lane.js +118 -3
  134. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  135. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  136. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  137. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  138. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  139. package/dist/runtime/foundation/operation-identity.js +9 -5
  140. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  141. package/dist/runtime/foundation/operation-registry.js +34 -44
  142. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  143. package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
  144. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  145. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  146. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  147. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  148. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  149. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  150. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  151. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  152. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  153. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  154. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  155. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  156. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  157. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  158. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  159. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  160. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  161. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  162. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  163. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  164. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  165. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  166. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  167. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  168. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  169. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  170. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  171. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  172. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  173. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  174. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  175. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  176. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  177. package/dist/runtime/framework-errors-internal.js +343 -122
  178. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  179. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  180. package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
  181. package/dist/runtime/host/actor-packet-relay.js +48 -91
  182. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  183. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  184. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  185. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  186. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  187. package/dist/runtime/host/application-job-queue.js +16 -33
  188. package/dist/runtime/host/bound-session-relay.js +1 -1
  189. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  190. package/dist/runtime/host/index.d.ts +14 -13
  191. package/dist/runtime/host/index.js +190 -157
  192. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  193. package/dist/runtime/host/instance-activation-authority.js +17 -45
  194. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  195. package/dist/runtime/host/location-runtime-owner.js +2 -2
  196. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  197. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  198. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  199. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  200. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  201. package/dist/runtime/host/remote-bound-session-relay.js +7 -20
  202. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  203. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  204. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  205. package/dist/runtime/host/runtime-shutdown.js +18 -21
  206. package/dist/runtime/host/service-relocation-control.js +6 -1
  207. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  208. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  209. package/dist/runtime/host/spot-address-transport.d.ts +2 -3
  210. package/dist/runtime/host/spot-address-transport.js +34 -136
  211. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  212. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  213. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  214. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  215. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  216. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  217. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  218. package/dist/runtime/locations/authority-key-codec.js +4 -3
  219. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  220. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  221. package/dist/runtime/locations/creation-operation-id.js +6 -4
  222. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  223. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  224. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  225. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  226. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  227. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  228. package/dist/runtime/locations/key-codec.js +3 -2
  229. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  230. package/dist/runtime/locations/lease-tracker.js +7 -11
  231. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  232. package/dist/runtime/locations/lifecycle.js +2 -31
  233. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  234. package/dist/runtime/locations/location-store-failure.js +7 -0
  235. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  236. package/dist/runtime/locations/location-store-pages.js +13 -0
  237. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  238. package/dist/runtime/locations/location-store-repository.js +303 -332
  239. package/dist/runtime/locations/relocation-blob.js +18 -5
  240. package/dist/runtime/locations/resolvers.d.ts +5 -5
  241. package/dist/runtime/locations/resolvers.js +37 -28
  242. package/dist/runtime/locations/runtime.d.ts +5 -4
  243. package/dist/runtime/locations/runtime.js +123 -92
  244. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  245. package/dist/runtime/locations/spot-location-claims.js +42 -1
  246. package/dist/runtime/messaging/payload-codec.js +26 -20
  247. package/dist/runtime/messaging/submission-result.d.ts +3 -0
  248. package/dist/runtime/messaging/submission-result.js +48 -0
  249. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  250. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  251. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  252. package/dist/runtime/spots/index.d.ts +14 -20
  253. package/dist/runtime/spots/index.js +302 -176
  254. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  255. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  256. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  257. package/dist/runtime/spots/spot-activation-state.js +2 -2
  258. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  259. package/dist/runtime/spots/spot-activation.js +49 -32
  260. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  261. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  262. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  263. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  264. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  265. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  266. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  267. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  268. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  269. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  270. package/dist/runtime/spots/spot-context.d.ts +2 -2
  271. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  272. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  273. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  274. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  275. package/dist/runtime/spots/spot-manager-public.js +5 -4
  276. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  277. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  278. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  279. package/dist/runtime/spots/spot-outbound.d.ts +4 -3
  280. package/dist/runtime/spots/spot-outbound.js +9 -8
  281. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  282. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  283. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  284. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  285. package/dist/runtime/spots/spot-route-replies.js +3 -1
  286. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  287. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  288. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  289. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  290. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  291. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  292. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  293. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  294. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  295. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  296. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  297. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  298. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  299. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  300. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
  301. package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
  302. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  303. package/dist/runtime/streams/bound-session-service.js +11 -1
  304. package/dist/runtime/streams/index.d.ts +14 -15
  305. package/dist/runtime/streams/index.js +20 -21
  306. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  307. package/dist/runtime/streams/managed-stream.js +17 -8
  308. package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
  309. package/dist/runtime/streams/protocol.d.ts +6 -33
  310. package/dist/runtime/streams/protocol.js +38 -110
  311. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  312. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  313. package/dist/runtime/streams/session-calls.d.ts +1 -1
  314. package/dist/runtime/streams/session-calls.js +5 -4
  315. package/dist/runtime/streams/session-context.d.ts +6 -6
  316. package/dist/runtime/streams/session-context.js +22 -4
  317. package/dist/runtime/streams/session-requests.js +2 -1
  318. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  319. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  320. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  321. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  322. package/dist/runtime/workers/index.d.ts +2 -2
  323. package/dist/runtime/workers/index.js +5 -4
  324. package/package.json +3 -3
  325. package/src/contracts/Common/CoreTypes.ts +7 -0
  326. package/src/contracts/Common/index.ts +1 -1
  327. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  328. package/src/contracts/Configuration/Registration.ts +92 -48
  329. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  330. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
  331. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  332. package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
  333. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  334. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  335. package/src/contracts/Handlers/JsonContract.ts +14 -4
  336. package/src/contracts/Locations/Authority.ts +7 -3
  337. package/src/contracts/Locations/Options.ts +1 -1
  338. package/src/contracts/Locations/Stores.ts +14 -0
  339. package/src/contracts/Spots/Contracts.ts +1 -1
  340. package/src/internal.ts +14 -0
  341. package/src/nest-integration.ts +28 -10
  342. package/src/runtime/abort.ts +6 -5
  343. package/src/runtime/activation-admission.ts +2 -8
  344. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  345. package/src/runtime/actors/actor-client.ts +77 -204
  346. package/src/runtime/actors/actor-context.ts +39 -33
  347. package/src/runtime/actors/actor-handoff.ts +24 -22
  348. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  349. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  350. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  351. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  352. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  353. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  354. package/src/runtime/actors/actor-request-deadline.ts +49 -0
  355. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  356. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  357. package/src/runtime/actors/bound-session-wire.ts +2 -8
  358. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  359. package/src/runtime/actors/index.ts +100 -79
  360. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  361. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  362. package/src/runtime/admission.ts +8 -1
  363. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  364. package/src/runtime/backend/contracts/index.ts +13 -29
  365. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  366. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  367. package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
  368. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  369. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  370. package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
  371. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  372. package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
  373. package/src/runtime/backend/raw-binding-port.ts +1 -1
  374. package/src/runtime/backend/runtime-values.ts +4 -1
  375. package/src/runtime/channels/channel-clients.ts +132 -85
  376. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  377. package/src/runtime/channels/channel-envelope.ts +58 -29
  378. package/src/runtime/channels/channel-outbound-operations.ts +10 -23
  379. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  380. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  381. package/src/runtime/channels/channel-runtime-manager.ts +6 -2
  382. package/src/runtime/channels/channel-socket-options.ts +8 -2
  383. package/src/runtime/channels/channel-socket-registry.ts +301 -192
  384. package/src/runtime/channels/channel-transports.ts +161 -112
  385. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  386. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  387. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  388. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  389. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  390. package/src/runtime/channels/spot-node-route-transport.ts +5 -2
  391. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  392. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  393. package/src/runtime/diagnostics/flow-context.ts +16 -2
  394. package/src/runtime/diagnostics/index.ts +27 -17
  395. package/src/runtime/diagnostics/message-flow.ts +15 -25
  396. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  397. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  398. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  399. package/src/runtime/disposal.ts +19 -0
  400. package/src/runtime/execution/index.ts +60 -20
  401. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  402. package/src/runtime/execution/state-lane.ts +142 -4
  403. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  404. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  405. package/src/runtime/foundation/operation-identity.ts +11 -5
  406. package/src/runtime/foundation/operation-registry.ts +33 -50
  407. package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
  408. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  409. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  410. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  411. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  412. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  413. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  414. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  415. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  416. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  417. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  418. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  419. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  420. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  421. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  422. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  423. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  424. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  425. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  426. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  427. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  428. package/src/runtime/framework-errors-internal.ts +380 -134
  429. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  430. package/src/runtime/host/actor-packet-relay.ts +57 -147
  431. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  432. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  433. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  434. package/src/runtime/host/application-job-queue.ts +28 -34
  435. package/src/runtime/host/bound-session-relay.ts +1 -2
  436. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  437. package/src/runtime/host/index.ts +327 -296
  438. package/src/runtime/host/instance-activation-authority.ts +89 -109
  439. package/src/runtime/host/location-runtime-owner.ts +4 -2
  440. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  441. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  442. package/src/runtime/host/remote-bound-session-relay.ts +8 -41
  443. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  444. package/src/runtime/host/runtime-shutdown.ts +17 -21
  445. package/src/runtime/host/service-relocation-control.ts +14 -1
  446. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  447. package/src/runtime/host/spot-address-transport.ts +73 -195
  448. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  449. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  450. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  451. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  452. package/src/runtime/locations/authority-key-codec.ts +7 -3
  453. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  454. package/src/runtime/locations/creation-operation-id.ts +6 -3
  455. package/src/runtime/locations/domain-store-contract.ts +12 -3
  456. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  457. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  458. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  459. package/src/runtime/locations/key-codec.ts +3 -2
  460. package/src/runtime/locations/lease-tracker.ts +8 -14
  461. package/src/runtime/locations/lifecycle.ts +13 -43
  462. package/src/runtime/locations/location-store-failure.ts +4 -0
  463. package/src/runtime/locations/location-store-pages.ts +18 -0
  464. package/src/runtime/locations/location-store-repository.ts +450 -478
  465. package/src/runtime/locations/relocation-blob.ts +17 -6
  466. package/src/runtime/locations/resolvers.ts +75 -49
  467. package/src/runtime/locations/runtime.ts +220 -110
  468. package/src/runtime/locations/spot-location-claims.ts +58 -1
  469. package/src/runtime/messaging/payload-codec.ts +35 -24
  470. package/src/runtime/messaging/submission-result.ts +57 -1
  471. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  472. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  473. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  474. package/src/runtime/spots/index.ts +433 -229
  475. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  476. package/src/runtime/spots/spot-activation-state.ts +2 -2
  477. package/src/runtime/spots/spot-activation.ts +67 -37
  478. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  479. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  480. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  481. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  482. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  483. package/src/runtime/spots/spot-context.ts +3 -3
  484. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  485. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  486. package/src/runtime/spots/spot-manager-public.ts +21 -17
  487. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  488. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  489. package/src/runtime/spots/spot-outbound.ts +45 -23
  490. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  491. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  492. package/src/runtime/spots/spot-route-replies.ts +6 -4
  493. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  494. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  495. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  496. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  497. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  498. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  499. package/src/runtime/spots/spot-timer.ts +3 -2
  500. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  501. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  502. package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
  503. package/src/runtime/streams/bound-session-service.ts +21 -1
  504. package/src/runtime/streams/index.ts +76 -64
  505. package/src/runtime/streams/managed-stream.ts +29 -10
  506. package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
  507. package/src/runtime/streams/protocol.ts +34 -88
  508. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  509. package/src/runtime/streams/session-calls.ts +6 -5
  510. package/src/runtime/streams/session-context.ts +54 -10
  511. package/src/runtime/streams/session-requests.ts +2 -1
  512. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  513. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  514. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  515. package/src/runtime/workers/index.ts +13 -12
  516. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  517. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  518. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  519. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  520. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  521. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -4,8 +4,11 @@ exports.ZLinkFanoutLocationRuntime = void 0;
4
4
  const node_crypto_1 = require("node:crypto");
5
5
  const Locations_1 = require("../../contracts/Locations");
6
6
  const Options_1 = require("../../contracts/Locations/Options");
7
+ const Stores_1 = require("../../contracts/Locations/Stores");
7
8
  const configuration_1 = require("../configuration");
8
9
  const state_lane_1 = require("../execution/state-lane");
10
+ const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
11
+ const event_loop_resources_1 = require("../foundation/event-loop-resources");
9
12
  class ZLinkFanoutLocationRuntime {
10
13
  registration;
11
14
  sockets;
@@ -17,7 +20,7 @@ class ZLinkFanoutLocationRuntime {
17
20
  store;
18
21
  localDescriptors = new Map();
19
22
  publisherIdentities = new Map();
20
- connections = new Map();
23
+ targets = new Map();
21
24
  controller;
22
25
  timer;
23
26
  constructor(registration, sockets, locationRuntime, stores, options, onSubscriberOpened) {
@@ -64,16 +67,39 @@ class ZLinkFanoutLocationRuntime {
64
67
  });
65
68
  if (timer !== undefined)
66
69
  clearTimeout(timer);
67
- const connectionIds = await this.lane.run(() => [...this.connections.keys()]);
68
- await Promise.allSettled(connectionIds.map((id) => this.closeConnection(id)));
69
- await this.removeLocalPublishers(signal);
70
+ const targets = await this.lane.run(() => [...this.targets]);
71
+ const targetResults = await Promise.allSettled(targets.map(([id, target]) => this.removeTarget(id, target)));
72
+ const publisherResults = await Promise.allSettled([this.removeLocalPublishers(signal)]);
73
+ (0, event_loop_resources_1.finishResourceCleanup)([...targetResults, ...publisherResults].flatMap((result) => result.status === 'rejected' ? [result.reason] : []));
70
74
  }
71
75
  activeTargets(channelName) {
72
- return [...this.connections.values()]
73
- .filter((target) => target.state === 'ready')
76
+ return [...this.targets.values()]
77
+ .filter((target) => target.connection?.state === 'ready')
74
78
  .map((target) => target.descriptor)
75
79
  .filter((descriptor) => descriptor.channelName === channelName);
76
80
  }
81
+ topologyTargets(channelName) {
82
+ if (!this.isAutomaticSubscriber(channelName))
83
+ return undefined;
84
+ return [...this.targets.values()]
85
+ .filter((target) => target.descriptor.channelName === channelName)
86
+ .map((target) => ({
87
+ channelName,
88
+ publisherRoutingId: String(target.descriptor.publisherRid),
89
+ lifecycleGeneration: target.descriptor.lifecycleGeneration,
90
+ descriptorRevision: target.descriptor.descriptorRevision,
91
+ advertisedEndpoint: target.descriptor.endpoint,
92
+ state: target.descriptor.state === Locations_1.ZLinkFrameworkRuntimeState.Serving
93
+ ? target.connection?.state === 'ready'
94
+ ? 'serving'
95
+ : 'preparing'
96
+ : (0, runtime_state_projections_1.discoveryAvailabilityForRuntimeState)(target.descriptor.state)
97
+ }));
98
+ }
99
+ isAutomaticSubscriber(channelName) {
100
+ const subscriber = this.registration.channels.get(channelName)?.subscriber;
101
+ return subscriber !== undefined && (subscriber.manualConnections?.length ?? 0) === 0;
102
+ }
77
103
  async reclaimOwnerRows(signal) {
78
104
  const owner = this.requireOwnerToken();
79
105
  const descriptors = await this.lane.run(() => [...this.localDescriptors]);
@@ -154,124 +180,150 @@ class ZLinkFanoutLocationRuntime {
154
180
  }
155
181
  }
156
182
  async reconcileSubscribers(signal) {
157
- for (const [channelName, channel] of this.registration.channels) {
158
- if (channel.subscriber === undefined ||
159
- (channel.subscriber.manualConnections?.length ?? 0) > 0) {
183
+ for (const channelName of this.registration.channels.keys()) {
184
+ if (!this.isAutomaticSubscriber(channelName))
160
185
  continue;
161
- }
186
+ const previous = this.topologyTargets(channelName);
162
187
  const rows = await this.listLivePublishers(channelName, signal);
163
188
  const desired = new Map(rows.map((row) => [fanoutConnectionId(row), row]));
164
189
  for (const [connectionId, descriptor] of desired) {
165
- const current = await this.lane.run(() => this.connections.get(connectionId));
190
+ let current = await this.lane.run(() => this.targets.get(connectionId));
166
191
  if (current === undefined) {
167
- await this.openConnection(connectionId, descriptor);
168
- continue;
192
+ const created = { descriptor };
193
+ current = created;
194
+ await this.lane.run(() => this.targets.set(connectionId, created));
169
195
  }
170
- if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
196
+ else if (descriptor.descriptorRevision < current.descriptor.descriptorRevision) {
171
197
  continue;
172
198
  }
173
- if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
199
+ else if (descriptor.descriptorRevision === current.descriptor.descriptorRevision) {
174
200
  if (!sameFanoutDescriptor(descriptor, current.descriptor)) {
175
- await this.closeConnection(connectionId);
201
+ await this.removeTarget(connectionId, current);
202
+ continue;
176
203
  }
177
- continue;
178
204
  }
179
- if (!sameFanoutImmutableIdentity(descriptor, current.descriptor)) {
180
- await this.closeConnection(connectionId);
205
+ else if (!sameFanoutImmutableIdentity(descriptor, current.descriptor)) {
206
+ await this.removeTarget(connectionId, current);
181
207
  continue;
182
208
  }
183
- await this.lane.run(() => {
184
- if (this.connections.get(connectionId) === current)
185
- current.descriptor = descriptor;
186
- });
187
- if (current.state === 'ready') {
188
- this.sockets.admitFanoutPublisher(descriptor, connectionId);
209
+ else {
210
+ const target = current;
211
+ await this.lane.run(() => {
212
+ if (this.targets.get(connectionId) === target)
213
+ target.descriptor = descriptor;
214
+ });
215
+ if (current.connection?.state === 'ready') {
216
+ this.sockets.admitFanoutPublisher(current.descriptor, connectionId);
217
+ }
189
218
  }
219
+ await this.reconcileConnection(connectionId, current);
190
220
  }
191
- const connections = await this.lane.run(() => [...this.connections]);
192
- for (const [connectionId, current] of connections) {
221
+ const targets = await this.lane.run(() => [...this.targets]);
222
+ for (const [connectionId, current] of targets) {
193
223
  if (current.descriptor.channelName === channelName && !desired.has(connectionId)) {
194
- await this.closeConnection(connectionId);
224
+ await this.removeTarget(connectionId, current);
195
225
  }
196
226
  }
227
+ const next = this.topologyTargets(channelName);
228
+ if (previous.length !== next.length ||
229
+ previous.some((publisher, index) => publisher.publisherRoutingId !== next[index].publisherRoutingId ||
230
+ publisher.state !== next[index].state)) {
231
+ this.sockets.notifyFanoutTopology(channelName);
232
+ }
233
+ }
234
+ }
235
+ async reconcileConnection(connectionId, target) {
236
+ if (target.descriptor.state !== Locations_1.ZLinkFrameworkRuntimeState.Serving) {
237
+ await this.closeConnection(target);
238
+ }
239
+ else if (target.connection === undefined) {
240
+ await this.openConnection(connectionId, target);
197
241
  }
198
242
  }
199
- async openConnection(connectionId, descriptor) {
200
- let target;
243
+ async openConnection(connectionId, target) {
244
+ const descriptor = target.descriptor;
245
+ let connection;
201
246
  const subscriber = this.sockets.openFanoutSubscriberConnection(descriptor.channelName, connectionId, descriptor.endpoint, {
202
247
  onReady: () => {
203
- const current = this.connections.get(connectionId);
204
- if (target !== undefined && current === target) {
205
- current.state = 'ready';
206
- this.sockets.admitFanoutPublisher(descriptor, connectionId);
248
+ if (connection !== undefined && target.connection === connection) {
249
+ connection.state = 'ready';
250
+ this.sockets.admitFanoutPublisher(target.descriptor, connectionId);
207
251
  }
208
252
  },
209
253
  onTerminated: () => {
210
- const current = this.connections.get(connectionId);
211
- if (target !== undefined && current === target && current.reconnectEligible) {
212
- this.sockets.removeFanoutPublisher(descriptor, connectionId);
213
- current.state = 'connecting';
254
+ if (connection !== undefined && target.connection === connection) {
255
+ this.sockets.removeFanoutPublisher(target.descriptor, connectionId);
256
+ connection.state = 'connecting';
257
+ const terminated = connection;
214
258
  setImmediate(() => {
215
- void this.replaceConnection(current).catch((error) => this.locationRuntime.reportDiscoveryFailure(error));
259
+ void this.replaceConnection(target, terminated).catch((error) => this.locationRuntime.reportDiscoveryFailure(error));
216
260
  });
217
261
  }
218
262
  }
219
263
  });
220
- target = {
221
- descriptor,
264
+ connection = {
222
265
  connectionId,
223
- subscriber,
224
- reconnectEligible: true,
225
266
  stopReceiver: async () => { },
226
267
  state: 'connecting'
227
268
  };
228
- await this.lane.run(() => this.connections.set(connectionId, target));
229
- target.stopReceiver = this.onSubscriberOpened(descriptor.channelName, connectionId, subscriber);
269
+ const opened = connection;
270
+ await this.lane.run(() => (target.connection = opened));
271
+ connection.stopReceiver = this.onSubscriberOpened(descriptor.channelName, connectionId, subscriber);
230
272
  }
231
- async closeConnection(connectionId) {
232
- const current = await this.lane.run(() => {
233
- const target = this.connections.get(connectionId);
234
- if (target !== undefined) {
235
- target.reconnectEligible = false;
236
- this.connections.delete(connectionId);
237
- }
238
- return target;
273
+ async removeTarget(connectionId, target) {
274
+ const detached = await this.lane.run(() => {
275
+ if (this.targets.get(connectionId) !== target)
276
+ return undefined;
277
+ this.targets.delete(connectionId);
278
+ return this.detachConnection(target);
239
279
  });
280
+ await this.closeDetachedConnection(target.descriptor, detached);
281
+ }
282
+ async closeConnection(target) {
283
+ const detached = await this.lane.run(() => this.detachConnection(target));
284
+ await this.closeDetachedConnection(target.descriptor, detached);
285
+ }
286
+ detachConnection(target) {
287
+ const connection = target.connection;
288
+ target.connection = undefined;
289
+ return connection;
290
+ }
291
+ async closeDetachedConnection(descriptor, current) {
240
292
  if (current === undefined)
241
293
  return;
242
- this.sockets.removeFanoutPublisher(current.descriptor, connectionId);
243
- await current.stopReceiver();
244
- await this.sockets.closeFanoutSubscriberConnection(connectionId);
294
+ this.sockets.removeFanoutPublisher(descriptor, current.connectionId);
295
+ await (0, event_loop_resources_1.closeResources)([
296
+ { close: () => current.stopReceiver() },
297
+ { close: () => this.sockets.closeFanoutSubscriberConnection(current.connectionId) }
298
+ ]);
245
299
  }
246
- async replaceConnection(expected) {
300
+ async replaceConnection(target, expected) {
247
301
  const prepared = await this.lane.run(() => {
248
302
  const controller = this.controller;
249
- if (this.connections.get(expected.connectionId) !== expected ||
250
- !expected.reconnectEligible ||
303
+ if (this.targets.get(expected.connectionId) !== target ||
304
+ target.connection !== expected ||
251
305
  controller === undefined)
252
306
  return undefined;
253
- return { controller, descriptor: expected.descriptor };
307
+ return controller;
254
308
  });
255
309
  if (prepared === undefined) {
256
310
  return;
257
311
  }
258
- await this.closeConnection(expected.connectionId);
259
- if (await this.lane.run(() => this.controller === prepared.controller)) {
260
- await this.openConnection(expected.connectionId, prepared.descriptor);
312
+ await this.closeConnection(target);
313
+ if (await this.lane.run(() => this.controller === prepared && this.targets.get(expected.connectionId) === target)) {
314
+ await this.reconcileConnection(expected.connectionId, target);
261
315
  }
262
316
  }
263
317
  async listLivePublishers(channelName, signal) {
264
318
  const rows = [];
265
319
  let continuationToken;
266
320
  do {
267
- const page = await this.store.listFanoutPublishers(channelName, { pageSize: 1000, continuationToken }, signal);
321
+ const page = await this.store.listFanoutPublishers(channelName, { pageSize: Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE, continuationToken }, signal);
268
322
  rows.push(...page.items);
269
323
  continuationToken = page.continuationToken;
270
324
  } while (continuationToken !== undefined);
271
325
  const live = [];
272
326
  for (const descriptor of rows) {
273
- if (descriptor.state !== Locations_1.ZLinkFrameworkRuntimeState.Serving)
274
- continue;
275
327
  const lease = await this.storeOwnerLease(descriptor.ownerId, signal);
276
328
  if (lease.kind === 'found' &&
277
329
  lease.token.leaseGeneration === descriptor.leaseGeneration &&
@@ -289,13 +341,19 @@ class ZLinkFanoutLocationRuntime {
289
341
  if (owner === undefined)
290
342
  return;
291
343
  const descriptors = await this.lane.run(() => [...this.localDescriptors.values()]);
292
- for (const descriptor of descriptors) {
293
- await this.store.removeFanoutPublisher({
294
- channelName: descriptor.channelName,
295
- publisherRid: descriptor.publisherRid
296
- }, owner, signal);
344
+ try {
345
+ await (0, event_loop_resources_1.closeResources)(descriptors.map((descriptor) => ({
346
+ close: async () => {
347
+ await this.store.removeFanoutPublisher({
348
+ channelName: descriptor.channelName,
349
+ publisherRid: descriptor.publisherRid
350
+ }, owner, signal);
351
+ }
352
+ })));
353
+ }
354
+ finally {
355
+ await this.lane.run(() => this.localDescriptors.clear());
297
356
  }
298
- await this.lane.run(() => this.localDescriptors.clear());
299
357
  }
300
358
  requireOwnerToken() {
301
359
  const token = this.locationRuntime.currentOwnerToken;
@@ -1,5 +1,6 @@
1
1
  import type { Message } from '../../contracts/Common/Message';
2
2
  import type { ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
3
3
  import { ZLinkChannelMessageKind } from './channel-envelope';
4
+ export declare const SPOT_DIRECT_ENVELOPE = "zlink.framework.spot-direct.v1";
4
5
  export declare function encodeSpotDirectEnvelope(kind: ZLinkChannelMessageKind.Request | ZLinkChannelMessageKind.Command, channelName: string, packetName: string | undefined, payload: unknown, metadata?: ReadonlyMap<string, string>): MessageLike;
5
6
  export declare function decodeSpotDirectReply<TReply>(parts: readonly Message[]): TReply;
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SPOT_DIRECT_ENVELOPE = void 0;
3
4
  exports.encodeSpotDirectEnvelope = encodeSpotDirectEnvelope;
4
5
  exports.decodeSpotDirectReply = decodeSpotDirectReply;
5
6
  const configuration_1 = require("../configuration");
6
- const SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
7
+ exports.SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
7
8
  function encodeSpotDirectEnvelope(kind, channelName, packetName, payload, metadata) {
8
9
  return Buffer.from(JSON.stringify({
9
- marker: SPOT_DIRECT_ENVELOPE,
10
+ marker: exports.SPOT_DIRECT_ENVELOPE,
10
11
  kind,
11
12
  channelName,
12
13
  packetName,
@@ -19,7 +20,7 @@ function decodeSpotDirectReply(parts) {
19
20
  throw new configuration_1.ZLinkConfigurationException('Spot direct reply is missing.');
20
21
  }
21
22
  const reply = JSON.parse(parts[0].data().toString());
22
- if (reply.marker !== SPOT_DIRECT_ENVELOPE) {
23
+ if (reply.marker !== exports.SPOT_DIRECT_ENVELOPE) {
23
24
  throw new configuration_1.ZLinkConfigurationException('Spot direct reply marker is invalid.');
24
25
  }
25
26
  if (reply.ok !== true) {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkSpotNodeRouteTransport = void 0;
4
+ const Registration_1 = require("../../contracts/Configuration/Registration");
4
5
  const abort_1 = require("../abort");
5
6
  const channel_envelope_1 = require("./channel-envelope");
6
7
  class ZLinkSpotNodeRouteTransport {
@@ -29,7 +30,7 @@ class ZLinkSpotNodeRouteTransport {
29
30
  if (router === undefined) {
30
31
  return undefined;
31
32
  }
32
- const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
33
+ const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
33
34
  (0, abort_1.throwIfAborted)(signal);
34
35
  const operation = router.requestToSpot(target.targetNodeRid, target.spotId, parts, effectiveTimeoutMs);
35
36
  return (0, abort_1.awaitWithAbort)(operation, signal, () => {
@@ -49,7 +50,7 @@ class ZLinkSpotNodeRouteTransport {
49
50
  if (router === undefined) {
50
51
  return undefined;
51
52
  }
52
- const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? 30_000;
53
+ const effectiveTimeoutMs = timeoutMs ?? this.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
53
54
  (0, abort_1.throwIfAborted)(signal);
54
55
  const operation = router.requestToSpot(target.targetNodeRid, target.spotId, request, effectiveTimeoutMs);
55
56
  return (0, abort_1.awaitWithAbort)(operation, signal, () => {
@@ -0,0 +1,2 @@
1
+ /** Formats absent diagnostic text consistently across the Node runtime. */
2
+ export declare function diagnosticTextOrAbsent(value: string | null | undefined): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.diagnosticTextOrAbsent = diagnosticTextOrAbsent;
4
+ /** Formats absent diagnostic text consistently across the Node runtime. */
5
+ function diagnosticTextOrAbsent(value) {
6
+ return value ?? '<none>';
7
+ }
@@ -1,3 +1,6 @@
1
+ import { ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason } from '../../contracts/Dispatch/ZLinkDispatchOptions';
2
+ export declare function dispatchReasonFromError(error: unknown): ZLinkDispatchErrorReason;
3
+ export declare const ERROR_MESSAGE_MAX_LENGTH = 512;
1
4
  export declare function dispatchErrorDetails(error: unknown): {
2
5
  readonly errorType?: string;
3
6
  readonly errorMessage?: string;
@@ -1,7 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ERROR_MESSAGE_MAX_LENGTH = void 0;
4
+ exports.dispatchReasonFromError = dispatchReasonFromError;
3
5
  exports.dispatchErrorDetails = dispatchErrorDetails;
4
- const ERROR_MESSAGE_MAX_LENGTH = 512;
6
+ const ZLinkFrameworkException_1 = require("../../contracts/Errors/ZLinkFrameworkException");
7
+ const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
8
+ const framework_errors_internal_1 = require("../framework-errors-internal");
9
+ function dispatchReasonFromError(error) {
10
+ if (!(error instanceof ZLinkFrameworkException_1.ZLinkFrameworkException))
11
+ return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException;
12
+ const origin = (0, framework_errors_internal_1.internalFrameworkErrorKind)(error);
13
+ if (origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PayloadDecodeFailed)
14
+ return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.PayloadDecodeFailed;
15
+ if (origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotGenerationStale ||
16
+ origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale ||
17
+ origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving ||
18
+ origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorMoving ||
19
+ origin === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale)
20
+ return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget;
21
+ switch (error.kind) {
22
+ case ZLinkFrameworkException_1.ZLinkFrameworkErrorKind.NotFound:
23
+ return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerMissing;
24
+ case ZLinkFrameworkException_1.ZLinkFrameworkErrorKind.ProtocolError:
25
+ return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.InvalidFrame;
26
+ case ZLinkFrameworkException_1.ZLinkFrameworkErrorKind.ShuttingDown:
27
+ return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Shutdown;
28
+ default:
29
+ return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException;
30
+ }
31
+ }
32
+ exports.ERROR_MESSAGE_MAX_LENGTH = 512;
5
33
  const CREDENTIAL_PATTERNS = [
6
34
  [/Authorization\s*:\s*(?:(?:Bearer|Basic)\s+)?[^\s,;]+/gi, 'Authorization: <redacted>'],
7
35
  [/Bearer\s+[^\s,;]+/gi, 'Bearer <redacted>'],
@@ -51,5 +79,5 @@ function sanitizeErrorMessage(message) {
51
79
  pattern.lastIndex = 0;
52
80
  sanitized = sanitized.replace(pattern, replacement);
53
81
  }
54
- return sanitized.slice(0, ERROR_MESSAGE_MAX_LENGTH);
82
+ return sanitized.slice(0, exports.ERROR_MESSAGE_MAX_LENGTH);
55
83
  }
@@ -1,4 +1,10 @@
1
1
  import type { ZLinkFlowOrigin } from '../../contracts';
2
+ /**
3
+ * Spec 27 §3 defines the flow_origin value set as lowercase
4
+ * (`inbound|timer|application|lifecycle`); every language emits these exact
5
+ * strings so records remain comparable across runtimes (spec 26 §3.1).
6
+ */
7
+ export declare const FLOW_ORIGIN_VALUES: Readonly<Record<ZLinkFlowOrigin, string>>;
2
8
  export interface ZLinkFlowContextValue {
3
9
  readonly flowId: string;
4
10
  readonly flowOrigin: ZLinkFlowOrigin;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FLOW_ORIGIN_VALUES = void 0;
3
4
  exports.currentFlowContext = currentFlowContext;
4
5
  exports.currentOrCreateFlow = currentOrCreateFlow;
5
6
  exports.runWithFlow = runWithFlow;
@@ -7,6 +8,19 @@ exports.runWithOutboundFlow = runWithOutboundFlow;
7
8
  exports.createInboundFlow = createInboundFlow;
8
9
  const node_async_hooks_1 = require("node:async_hooks");
9
10
  const node_crypto_1 = require("node:crypto");
11
+ const FLOW_UUID_BYTES = 16;
12
+ const FLOW_UUID_VARIANT_BYTE = 8;
13
+ /**
14
+ * Spec 27 §3 defines the flow_origin value set as lowercase
15
+ * (`inbound|timer|application|lifecycle`); every language emits these exact
16
+ * strings so records remain comparable across runtimes (spec 26 §3.1).
17
+ */
18
+ exports.FLOW_ORIGIN_VALUES = Object.freeze({
19
+ Inbound: 'inbound',
20
+ Timer: 'timer',
21
+ Application: 'application',
22
+ Lifecycle: 'lifecycle'
23
+ });
10
24
  const flowStorage = new node_async_hooks_1.AsyncLocalStorage();
11
25
  function currentFlowContext() {
12
26
  return flowStorage.getStore();
@@ -57,12 +71,12 @@ function createInboundFlow(flowId, flowOrigin, createIfAbsent, streamSessionId)
57
71
  return { flowId: flowId ?? createFlowId(), flowOrigin: flowOrigin ?? 'Inbound', streamSessionId };
58
72
  }
59
73
  function createFlowId() {
60
- const bytes = (0, node_crypto_1.randomBytes)(16);
74
+ const bytes = (0, node_crypto_1.randomBytes)(FLOW_UUID_BYTES);
61
75
  // Date.now() is always within 48 bits, which is exactly the UUIDv7
62
76
  // timestamp field.
63
77
  bytes.writeUIntBE(Date.now(), 0, 6);
64
78
  bytes[6] = 0x70 | (bytes[6] & 0x0f);
65
- bytes[8] = 0x80 | (bytes[8] & 0x3f);
79
+ bytes[FLOW_UUID_VARIANT_BYTE] = 0x80 | (bytes[FLOW_UUID_VARIANT_BYTE] & 0x3f);
66
80
  const hex = bytes.toString('hex');
67
81
  return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
68
82
  }
@@ -1,15 +1,17 @@
1
1
  import type { ZLinkLocationRuntimeQuery } from '../../contracts';
2
- import type { ZLinkActorLocation, ZLinkPeerLocation, ZLinkRouteLocation, ZLinkSpotLocation } from '../../contracts/Locations/Rows';
3
2
  import type { ZLinkActorLocationKey, ZLinkLocationKey, ZLinkRouteLocationKey, ZLinkSpotLocationKey } from '../../contracts/Locations/Keys';
3
+ import type { ZLinkActorLocation, ZLinkPeerLocation, ZLinkRouteLocation, ZLinkSpotLocation } from '../../contracts/Locations/Rows';
4
+ import type { ZLinkBackendSocketMonitor, ZLinkBackendSocketMonitorEvent } from '../backend';
4
5
  import { type ZLinkAutoConnectDesiredSetChange, type ZLinkLocationMonitoringRegistration, type ZLinkPollingMonitoringRegistration, type ZLinkRuntimeEvent, type ZLinkRuntimeEventHandler, type ZLinkSocketMonitoringRegistration } from './internal-event-contracts';
5
6
  export { ZLinkLocationActorEventKind, ZLinkLocationPeerEventKind, ZLinkLocationRouteEventKind, ZLinkLocationSpotEventKind, ZLinkSocketNativeEventType } from './internal-event-contracts';
6
- import type { ZLinkBackendSocketMonitor, ZLinkBackendSocketMonitorEvent } from '../backend';
7
7
  export interface ZLinkActorOwnerLeaseObservation {
8
8
  readonly actorId: string;
9
9
  readonly authorityGeneration: bigint;
10
10
  readonly remainingLeaseMs: number;
11
11
  readonly decision: 'owner_unavailable';
12
12
  }
13
+ export declare function isRelocationDebugEnabled(): boolean;
14
+ export declare function relocationDebug(marker: string, detail: Record<string, unknown>): void;
13
15
  /** Emits high-cardinality resolver detail only on the existing relocation debug path. */
14
16
  export declare function emitActorOwnerLeaseObservation(observation: ZLinkActorOwnerLeaseObservation): void;
15
17
  /** Runtime composition port. It is intentionally absent from the public contract barrel. */
@@ -15,7 +15,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.ZLinkLocationMonitoringEventEmitter = exports.ZLinkLocationRuntimeMonitoringSource = exports.ZLinkSocketMonitoringSource = exports.DefaultZLinkRuntimeEventPublisher = exports.ZLinkSocketNativeEventType = exports.ZLinkLocationSpotEventKind = exports.ZLinkLocationRouteEventKind = exports.ZLinkLocationPeerEventKind = exports.ZLinkLocationActorEventKind = void 0;
18
+ exports.isRelocationDebugEnabled = isRelocationDebugEnabled;
19
+ exports.relocationDebug = relocationDebug;
18
20
  exports.emitActorOwnerLeaseObservation = emitActorOwnerLeaseObservation;
21
+ const node_async_hooks_1 = require("node:async_hooks");
22
+ const state_lane_1 = require("../execution/state-lane");
23
+ const routing_id_1 = require("../routing-id");
19
24
  const internal_event_contracts_1 = require("./internal-event-contracts");
20
25
  var internal_event_contracts_2 = require("./internal-event-contracts");
21
26
  Object.defineProperty(exports, "ZLinkLocationActorEventKind", { enumerable: true, get: function () { return internal_event_contracts_2.ZLinkLocationActorEventKind; } });
@@ -23,14 +28,19 @@ Object.defineProperty(exports, "ZLinkLocationPeerEventKind", { enumerable: true,
23
28
  Object.defineProperty(exports, "ZLinkLocationRouteEventKind", { enumerable: true, get: function () { return internal_event_contracts_2.ZLinkLocationRouteEventKind; } });
24
29
  Object.defineProperty(exports, "ZLinkLocationSpotEventKind", { enumerable: true, get: function () { return internal_event_contracts_2.ZLinkLocationSpotEventKind; } });
25
30
  Object.defineProperty(exports, "ZLinkSocketNativeEventType", { enumerable: true, get: function () { return internal_event_contracts_2.ZLinkSocketNativeEventType; } });
26
- const node_async_hooks_1 = require("node:async_hooks");
27
- const state_lane_1 = require("../execution/state-lane");
28
- const routing_id_1 = require("../routing-id");
29
31
  const ZLINK_DISCONNECT_REASON_HANDSHAKE_FAILED = 3;
30
32
  const detachedStateLaneResource = new node_async_hooks_1.AsyncResource('zlink:location-runtime-monitoring-source');
33
+ function isRelocationDebugEnabled() {
34
+ return process.env.ZLINK_DEBUG_FRAMEWORK_RELOCATION === '1';
35
+ }
36
+ function relocationDebug(marker, detail) {
37
+ if (!isRelocationDebugEnabled())
38
+ return;
39
+ console.error('[zlink.runtime.relocation]', marker, detail);
40
+ }
31
41
  /** Emits high-cardinality resolver detail only on the existing relocation debug path. */
32
42
  function emitActorOwnerLeaseObservation(observation) {
33
- if (process.env.ZLINK_DEBUG_FRAMEWORK_RELOCATION !== '1')
43
+ if (!isRelocationDebugEnabled())
34
44
  return;
35
45
  console.error('[zlink.runtime.relocation]', 'actor_route.owner_lease_observed', observation);
36
46
  }
@@ -1,5 +1,5 @@
1
1
  import { type ZLinkDiagnosticsOptions, type ZLinkMessageFlowLogMode } from '../../contracts';
2
- import { ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome, type ZLinkRuntimeMessageFlowResult, type ZLinkRuntimeMessageFlowEvent } from '../../contracts/Dispatch/ZLinkDispatchOptions';
2
+ import { ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome, type ZLinkRuntimeMessageFlowEvent, type ZLinkRuntimeMessageFlowResult } from '../../contracts/Dispatch/ZLinkDispatchOptions';
3
3
  import type { ZLinkDispatchErrorSink } from './dispatch-error-port';
4
4
  export interface ZLinkMessageFlowModeCell {
5
5
  mode: ZLinkMessageFlowLogMode;
@@ -9,7 +9,10 @@ const api_1 = require("@opentelemetry/api");
9
9
  const api_logs_1 = require("@opentelemetry/api-logs");
10
10
  const contracts_1 = require("../../contracts");
11
11
  const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
12
+ const dispatch_error_details_1 = require("./dispatch-error-details");
12
13
  const flow_context_1 = require("./flow-context");
14
+ const MESSAGE_FLOW_EVENT_ID = 'zlink.message_flow';
15
+ const DISPATCH_ERROR_EVENT_ID = 'zlink.dispatch_error';
13
16
  exports.DEFAULT_ZLINK_DIAGNOSTICS = {
14
17
  messageFlow: 'errors',
15
18
  sampleRate: 1,
@@ -17,7 +20,6 @@ exports.DEFAULT_ZLINK_DIAGNOSTICS = {
17
20
  };
18
21
  const telemetryLogger = api_logs_1.logs.getLogger('@zlink-systems/framework');
19
22
  const telemetryTracer = api_1.trace.getTracer('@zlink-systems/framework');
20
- const ERROR_MESSAGE_MAX_LENGTH = 512;
21
23
  let diagnosticsGeneration = 0n;
22
24
  function effectiveMessageFlow(ctx) {
23
25
  return ctx.liveMode.mode;
@@ -162,12 +164,12 @@ class ZLinkMessageFlowTracer {
162
164
  }
163
165
  publishToLogger(record) {
164
166
  try {
165
- const severityNumber = record.eventId === 'zlink.dispatch_error' ? api_logs_1.SeverityNumber.ERROR : api_logs_1.SeverityNumber.INFO;
167
+ const severityNumber = record.eventId === DISPATCH_ERROR_EVENT_ID ? api_logs_1.SeverityNumber.ERROR : api_logs_1.SeverityNumber.INFO;
166
168
  telemetryLogger.emit({
167
169
  eventName: record.eventId,
168
170
  timestamp: record.timestamp,
169
171
  severityNumber,
170
- severityText: record.eventId === 'zlink.dispatch_error' ? 'ERROR' : 'INFO',
172
+ severityText: record.eventId === DISPATCH_ERROR_EVENT_ID ? 'ERROR' : 'INFO',
171
173
  body: structuredLogBody(record),
172
174
  attributes: structuredLogAttributes(record)
173
175
  });
@@ -181,7 +183,7 @@ class ZLinkMessageFlowTracer {
181
183
  const span = telemetryTracer.startSpan(record.eventId, {
182
184
  attributes: traceAttributes(record)
183
185
  });
184
- if (record.eventId === 'zlink.dispatch_error') {
186
+ if (record.eventId === DISPATCH_ERROR_EVENT_ID) {
185
187
  span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: record.reason });
186
188
  }
187
189
  span.end();
@@ -201,22 +203,11 @@ class ZLinkMessageFlowTracer {
201
203
  }
202
204
  }
203
205
  exports.ZLinkMessageFlowTracer = ZLinkMessageFlowTracer;
204
- /**
205
- * Spec 27 §3 defines the flow_origin value set as lowercase
206
- * (`inbound|timer|application|lifecycle`); every language emits these exact
207
- * strings so records remain comparable across runtimes (spec 26 §3.1).
208
- */
209
- const FLOW_ORIGIN_TELEMETRY_VALUES = {
210
- Inbound: 'inbound',
211
- Timer: 'timer',
212
- Application: 'application',
213
- Lifecycle: 'lifecycle'
214
- };
215
206
  function toTelemetryRecord(flow, messageSizeBytes, durationSeconds) {
216
207
  return {
217
208
  eventId: flow.outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Error
218
- ? 'zlink.dispatch_error'
219
- : 'zlink.message_flow',
209
+ ? DISPATCH_ERROR_EVENT_ID
210
+ : MESSAGE_FLOW_EVENT_ID,
220
211
  timestamp: new Date(),
221
212
  phase: messageFlowPhase(flow.outcome),
222
213
  outcome: flow.result ?? messageFlowOutcome(flow.outcome),
@@ -234,7 +225,7 @@ function toTelemetryRecord(flow, messageSizeBytes, durationSeconds) {
234
225
  targetRid: flow.targetRid,
235
226
  serverRid: flow.serverRid,
236
227
  flowId: flow.flowId,
237
- flowOrigin: flow.flowOrigin === undefined ? undefined : FLOW_ORIGIN_TELEMETRY_VALUES[flow.flowOrigin],
228
+ flowOrigin: flow.flowOrigin === undefined ? undefined : flow_context_1.FLOW_ORIGIN_VALUES[flow.flowOrigin],
238
229
  spotId: flow.spotId,
239
230
  instanceSpotType: flow.instanceSpotType,
240
231
  activationState: flow.activationState,
@@ -429,7 +420,7 @@ function hashFlowId(flowId) {
429
420
  return hash >>> 0;
430
421
  }
431
422
  function boundedText(value) {
432
- return value === undefined ? undefined : value.slice(0, ERROR_MESSAGE_MAX_LENGTH);
423
+ return value === undefined ? undefined : value.slice(0, dispatch_error_details_1.ERROR_MESSAGE_MAX_LENGTH);
433
424
  }
434
425
  function toSnakeCase(value) {
435
426
  return value.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);