@zlink-systems/framework 0.30.0 → 0.30.2

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 (456) hide show
  1. package/LICENSE +150 -68
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
  4. package/dist/contracts/Channels/Calls.d.ts +2 -1
  5. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
  6. package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
  7. package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
  8. package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
  9. package/dist/contracts/Common/encoded-payload-storage.js +5 -2
  10. package/dist/contracts/Configuration/Builders.d.ts +1 -1
  11. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
  12. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
  13. package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
  14. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
  15. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
  16. package/dist/contracts/Handlers/Attributes.d.ts +5 -13
  17. package/dist/contracts/Handlers/Attributes.js +7 -11
  18. package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
  19. package/dist/contracts/Handlers/JsonContract.js +4 -153
  20. package/dist/contracts/Locations/Rows.d.ts +2 -0
  21. package/dist/contracts/Spots/Contracts.d.ts +6 -1
  22. package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
  23. package/dist/nest-integration.d.ts +1 -1
  24. package/dist/nest-integration.js +2 -1
  25. package/dist/runtime/abort.d.ts +5 -0
  26. package/dist/runtime/abort.js +10 -0
  27. package/dist/runtime/actors/actor-authority-publication.js +3 -2
  28. package/dist/runtime/actors/actor-client.d.ts +1 -2
  29. package/dist/runtime/actors/actor-client.js +52 -57
  30. package/dist/runtime/actors/actor-context.d.ts +2 -0
  31. package/dist/runtime/actors/actor-context.js +46 -9
  32. package/dist/runtime/actors/actor-handoff.d.ts +8 -4
  33. package/dist/runtime/actors/actor-handoff.js +219 -92
  34. package/dist/runtime/actors/actor-join-relocation.d.ts +3 -0
  35. package/dist/runtime/actors/actor-local-native-join.js +13 -12
  36. package/dist/runtime/actors/actor-mailbox.js +27 -1
  37. package/dist/runtime/actors/actor-remote-joiner.js +3 -1
  38. package/dist/runtime/actors/actor-remote-wire.js +15 -0
  39. package/dist/runtime/actors/actor-reply.d.ts +4 -0
  40. package/dist/runtime/actors/actor-reply.js +29 -0
  41. package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
  42. package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
  43. package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
  44. package/dist/runtime/actors/actor-runtime-state.js +2 -20
  45. package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
  46. package/dist/runtime/actors/index.d.ts +8 -3
  47. package/dist/runtime/actors/index.js +55 -27
  48. package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
  49. package/dist/runtime/actors/session-disconnected-wire.js +48 -0
  50. package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
  51. package/dist/runtime/admission.d.ts +9 -1
  52. package/dist/runtime/admission.js +56 -23
  53. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +6 -8
  54. package/dist/runtime/application-jobs/application-ingress-record-owner.js +39 -22
  55. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +15 -1
  56. package/dist/runtime/application-jobs/application-job-queue-scope.js +61 -20
  57. package/dist/runtime/application-jobs/contracts.d.ts +12 -1
  58. package/dist/runtime/backend/contracts/index.d.ts +37 -12
  59. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
  60. package/dist/runtime/backend/mesh-completion-table.d.ts +9 -1
  61. package/dist/runtime/backend/mesh-completion-table.js +154 -49
  62. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +28 -1
  63. package/dist/runtime/backend/mesh-dispatch-pump.js +208 -101
  64. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -2
  65. package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -9
  66. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  67. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
  68. package/dist/runtime/backend/node/node-raw-binding-port.js +124 -72
  69. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +46 -13
  70. package/dist/runtime/backend/node/node-raw-mesh-backend.js +181 -164
  71. package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
  72. package/dist/runtime/backend/node/node-socket-backend-adapter.js +11 -11
  73. package/dist/runtime/backend/raw-binding-port.d.ts +2 -2
  74. package/dist/runtime/backend/runtime-message.d.ts +1 -0
  75. package/dist/runtime/backend/runtime-message.js +5 -0
  76. package/dist/runtime/backend/runtime-values.d.ts +1 -0
  77. package/dist/runtime/backend/runtime-values.js +2 -1
  78. package/dist/runtime/channels/channel-clients.d.ts +2 -0
  79. package/dist/runtime/channels/channel-clients.js +75 -23
  80. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +25 -5
  81. package/dist/runtime/channels/channel-dispatch-pipeline.js +111 -56
  82. package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
  83. package/dist/runtime/channels/channel-dispatch-services.js +45 -0
  84. package/dist/runtime/channels/channel-dispatchers.d.ts +4 -3
  85. package/dist/runtime/channels/channel-dispatchers.js +62 -54
  86. package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
  87. package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
  88. package/dist/runtime/channels/channel-envelope.d.ts +2 -0
  89. package/dist/runtime/channels/channel-envelope.js +146 -28
  90. package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
  91. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  92. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
  93. package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
  94. package/dist/runtime/channels/channel-runtime-manager.d.ts +9 -8
  95. package/dist/runtime/channels/channel-runtime-manager.js +16 -16
  96. package/dist/runtime/channels/channel-transports.d.ts +18 -16
  97. package/dist/runtime/channels/channel-transports.js +77 -58
  98. package/dist/runtime/channels/client-server-location-runtime.js +5 -4
  99. package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
  100. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  101. package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
  102. package/dist/runtime/channels/fanout-location-runtime.js +3 -3
  103. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  104. package/dist/runtime/channels/local-spot-route-transport.js +2 -1
  105. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
  106. package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
  107. package/dist/runtime/channels/source-spot-router.d.ts +2 -2
  108. package/dist/runtime/channels/source-spot-router.js +4 -4
  109. package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
  110. package/dist/runtime/channels/spot-node-route-transport.js +4 -4
  111. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
  112. package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
  113. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
  114. package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
  115. package/dist/runtime/diagnostics/flow-context.js +19 -7
  116. package/dist/runtime/diagnostics/index.js +4 -9
  117. package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
  118. package/dist/runtime/diagnostics/message-flow.js +35 -5
  119. package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
  120. package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
  121. package/dist/runtime/execution/index.d.ts +4 -2
  122. package/dist/runtime/execution/index.js +33 -10
  123. package/dist/runtime/execution/serial-execution-queue.d.ts +5 -0
  124. package/dist/runtime/execution/serial-execution-queue.js +22 -2
  125. package/dist/runtime/execution/state-lane.d.ts +2 -0
  126. package/dist/runtime/execution/state-lane.js +5 -0
  127. package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
  128. package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
  129. package/dist/runtime/foundation/durable-service-request.js +98 -0
  130. package/dist/runtime/foundation/operation-identity.d.ts +1 -0
  131. package/dist/runtime/foundation/operation-identity.js +5 -1
  132. package/dist/runtime/foundation/operation-registry.d.ts +25 -1
  133. package/dist/runtime/foundation/operation-registry.js +86 -18
  134. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +61 -8
  135. package/dist/runtime/foundation/raw-service-mesh-runtime.js +486 -266
  136. package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
  137. package/dist/runtime/foundation/service-liveness-registry.js +38 -0
  138. package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
  139. package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
  140. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +3 -3
  141. package/dist/runtime/foundation/service-relocation-object-owner.js +48 -34
  142. package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
  143. package/dist/runtime/foundation/service-relocation-runtime.js +20 -4
  144. package/dist/runtime/foundation/service-runtime-contracts.d.ts +10 -1
  145. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
  146. package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
  147. package/dist/runtime/foundation/service-stateful-registry.js +24 -26
  148. package/dist/runtime/foundation/service-stateful-runtime.d.ts +75 -9
  149. package/dist/runtime/foundation/service-stateful-runtime.js +486 -218
  150. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -6
  151. package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
  152. package/dist/runtime/foundation/service-topology-registry.d.ts +12 -2
  153. package/dist/runtime/foundation/service-topology-registry.js +61 -27
  154. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
  155. package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
  156. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  157. package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
  158. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +13 -3
  159. package/dist/runtime/foundation/service-wire-m6a-codec.js +189 -78
  160. package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
  161. package/dist/runtime/handlers/handler-instance-scope.js +54 -11
  162. package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
  163. package/dist/runtime/host/actor-packet-relay.js +59 -72
  164. package/dist/runtime/host/actor-placement-coordinator.js +25 -8
  165. package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
  166. package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
  167. package/dist/runtime/host/actor-transfer-runtime.js +85 -331
  168. package/dist/runtime/host/application-job-queue.d.ts +40 -7
  169. package/dist/runtime/host/application-job-queue.js +137 -42
  170. package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
  171. package/dist/runtime/host/entry-actor-runtime.js +3 -0
  172. package/dist/runtime/host/index.d.ts +12 -2
  173. package/dist/runtime/host/index.js +300 -202
  174. package/dist/runtime/host/location-runtime-owner.js +2 -6
  175. package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
  176. package/dist/runtime/host/mesh-router-resolver.js +14 -6
  177. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
  178. package/dist/runtime/host/remote-bound-session-relay.js +73 -208
  179. package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
  180. package/dist/runtime/host/route-mesh-runtime.js +6 -4
  181. package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
  182. package/dist/runtime/host/runtime-shutdown.js +3 -2
  183. package/dist/runtime/host/service-relocation-control.d.ts +1 -0
  184. package/dist/runtime/host/service-relocation-control.js +10 -4
  185. package/dist/runtime/host/service-relocation-host-runtime.d.ts +22 -14
  186. package/dist/runtime/host/service-relocation-host-runtime.js +754 -599
  187. package/dist/runtime/host/spot-address-transport.js +3 -2
  188. package/dist/runtime/host/spot-runtime-options-factory.js +16 -7
  189. package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
  190. package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
  191. package/dist/runtime/locations/actor-location-claims.js +34 -19
  192. package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
  193. package/dist/runtime/locations/auto-connect-loop.js +22 -14
  194. package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
  195. package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
  196. package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
  197. package/dist/runtime/locations/descriptor-publication.js +11 -0
  198. package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
  199. package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
  200. package/dist/runtime/locations/in-memory-authority-store.js +56 -19
  201. package/dist/runtime/locations/in-memory-location-store.js +1 -10
  202. package/dist/runtime/locations/index.d.ts +1 -0
  203. package/dist/runtime/locations/index.js +1 -0
  204. package/dist/runtime/locations/lease-tracker.js +1 -6
  205. package/dist/runtime/locations/lifecycle.d.ts +1 -2
  206. package/dist/runtime/locations/lifecycle.js +2 -5
  207. package/dist/runtime/locations/location-store-repository.d.ts +51 -1
  208. package/dist/runtime/locations/location-store-repository.js +363 -139
  209. package/dist/runtime/locations/relocation-blob.d.ts +18 -1
  210. package/dist/runtime/locations/relocation-blob.js +52 -1
  211. package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
  212. package/dist/runtime/locations/request-source-resolver.js +80 -0
  213. package/dist/runtime/locations/resolvers.js +1 -1
  214. package/dist/runtime/locations/runtime.d.ts +7 -3
  215. package/dist/runtime/locations/runtime.js +61 -53
  216. package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
  217. package/dist/runtime/messaging/framework-json-v1.js +38 -294
  218. package/dist/runtime/messaging/packet-name.d.ts +1 -1
  219. package/dist/runtime/messaging/packet-name.js +8 -24
  220. package/dist/runtime/messaging/payload-codec.d.ts +7 -1
  221. package/dist/runtime/messaging/payload-codec.js +7 -6
  222. package/dist/runtime/messaging/request-result.d.ts +2 -0
  223. package/dist/runtime/messaging/request-result.js +57 -0
  224. package/dist/runtime/messaging/submission-result.d.ts +1 -0
  225. package/dist/runtime/messaging/submission-result.js +5 -2
  226. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +34 -1
  227. package/dist/runtime/protocol/service_wire_codec.generated.js +229 -0
  228. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +16 -1
  229. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +37 -8
  230. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +7 -2
  231. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +36 -21
  232. package/dist/runtime/spots/index.d.ts +21 -11
  233. package/dist/runtime/spots/index.js +243 -178
  234. package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
  235. package/dist/runtime/spots/spot-activation-registry.js +21 -11
  236. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  237. package/dist/runtime/spots/spot-activation-state.js +7 -7
  238. package/dist/runtime/spots/spot-activation.d.ts +7 -3
  239. package/dist/runtime/spots/spot-activation.js +140 -52
  240. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
  241. package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
  242. package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
  243. package/dist/runtime/spots/spot-actor-membership.js +0 -8
  244. package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
  245. package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
  246. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
  247. package/dist/runtime/spots/spot-entry-activation.js +20 -11
  248. package/dist/runtime/spots/spot-handler-registry.d.ts +7 -4
  249. package/dist/runtime/spots/spot-handler-registry.js +24 -10
  250. package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
  251. package/dist/runtime/spots/spot-manager-public.js +2 -2
  252. package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
  253. package/dist/runtime/spots/spot-node-autoconnect.js +22 -42
  254. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
  255. package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
  256. package/dist/runtime/spots/spot-outbound.d.ts +3 -0
  257. package/dist/runtime/spots/spot-outbound.js +27 -18
  258. package/dist/runtime/spots/spot-remote-codec.js +5 -1
  259. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
  260. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
  261. package/dist/runtime/spots/spot-runtime-ports.d.ts +1 -1
  262. package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
  263. package/dist/runtime/spots/spot-serial-executor.js +61 -8
  264. package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
  265. package/dist/runtime/spots/spot-subscription-dispatch.js +1 -4
  266. package/dist/runtime/spots/spot-timer.d.ts +57 -5
  267. package/dist/runtime/spots/spot-timer.js +288 -103
  268. package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
  269. package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
  270. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
  271. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
  272. package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
  273. package/dist/runtime/streams/bound-session-service.d.ts +1 -1
  274. package/dist/runtime/streams/bound-session-service.js +6 -11
  275. package/dist/runtime/streams/index.d.ts +3 -2
  276. package/dist/runtime/streams/index.js +6 -4
  277. package/dist/runtime/streams/managed-stream.js +3 -2
  278. package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
  279. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
  280. package/dist/runtime/streams/session-actor-coordinator.js +15 -32
  281. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
  282. package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
  283. package/dist/runtime/streams/stream-session-runtime.js +14 -31
  284. package/dist/runtime/workers/index.js +1 -1
  285. package/package.json +3 -3
  286. package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
  287. package/src/contracts/Channels/Calls.ts +2 -1
  288. package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
  289. package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
  290. package/src/contracts/Common/encoded-payload-storage.ts +6 -3
  291. package/src/contracts/Configuration/Builders.ts +4 -1
  292. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
  293. package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
  294. package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
  295. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
  296. package/src/contracts/Handlers/Attributes.ts +14 -21
  297. package/src/contracts/Handlers/JsonContract.ts +8 -216
  298. package/src/contracts/Locations/Rows.ts +2 -0
  299. package/src/contracts/Spots/Contracts.ts +10 -1
  300. package/src/contracts/Spots/ZLinkSpot.ts +3 -3
  301. package/src/nest-integration.ts +1 -0
  302. package/src/runtime/abort.ts +12 -0
  303. package/src/runtime/actors/actor-authority-publication.ts +3 -2
  304. package/src/runtime/actors/actor-client.ts +100 -85
  305. package/src/runtime/actors/actor-context.ts +49 -9
  306. package/src/runtime/actors/actor-handoff.ts +291 -110
  307. package/src/runtime/actors/actor-join-relocation.ts +3 -0
  308. package/src/runtime/actors/actor-local-native-join.ts +21 -26
  309. package/src/runtime/actors/actor-mailbox.ts +40 -2
  310. package/src/runtime/actors/actor-remote-joiner.ts +6 -1
  311. package/src/runtime/actors/actor-remote-wire.ts +17 -0
  312. package/src/runtime/actors/actor-reply.ts +42 -0
  313. package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
  314. package/src/runtime/actors/actor-routed-json-request.ts +10 -2
  315. package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
  316. package/src/runtime/actors/actor-runtime-state.ts +2 -20
  317. package/src/runtime/actors/actor-source-transfer.ts +1 -34
  318. package/src/runtime/actors/index.ts +60 -32
  319. package/src/runtime/actors/session-disconnected-wire.ts +66 -0
  320. package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
  321. package/src/runtime/admission.ts +69 -21
  322. package/src/runtime/application-jobs/application-ingress-record-owner.ts +41 -25
  323. package/src/runtime/application-jobs/application-job-queue-scope.ts +83 -22
  324. package/src/runtime/application-jobs/contracts.ts +16 -1
  325. package/src/runtime/backend/contracts/index.ts +92 -18
  326. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
  327. package/src/runtime/backend/mesh-completion-table.ts +160 -57
  328. package/src/runtime/backend/mesh-dispatch-pump.ts +237 -108
  329. package/src/runtime/backend/node/node-backend-adapter-support.ts +17 -8
  330. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
  331. package/src/runtime/backend/node/node-raw-binding-port.ts +148 -85
  332. package/src/runtime/backend/node/node-raw-mesh-backend.ts +315 -201
  333. package/src/runtime/backend/node/node-socket-backend-adapter.ts +26 -11
  334. package/src/runtime/backend/raw-binding-port.ts +7 -2
  335. package/src/runtime/backend/runtime-message.ts +6 -0
  336. package/src/runtime/backend/runtime-values.ts +1 -0
  337. package/src/runtime/channels/channel-clients.ts +132 -58
  338. package/src/runtime/channels/channel-dispatch-pipeline.ts +198 -114
  339. package/src/runtime/channels/channel-dispatch-services.ts +69 -1
  340. package/src/runtime/channels/channel-dispatchers.ts +136 -90
  341. package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
  342. package/src/runtime/channels/channel-envelope.ts +225 -31
  343. package/src/runtime/channels/channel-outbound-operations.ts +22 -8
  344. package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
  345. package/src/runtime/channels/channel-runtime-manager.ts +41 -17
  346. package/src/runtime/channels/channel-transports.ts +171 -112
  347. package/src/runtime/channels/client-server-location-runtime.ts +11 -10
  348. package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
  349. package/src/runtime/channels/fanout-location-runtime.ts +17 -9
  350. package/src/runtime/channels/local-spot-route-transport.ts +3 -1
  351. package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
  352. package/src/runtime/channels/source-spot-router.ts +8 -4
  353. package/src/runtime/channels/spot-node-route-transport.ts +8 -4
  354. package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
  355. package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
  356. package/src/runtime/diagnostics/flow-context.ts +20 -7
  357. package/src/runtime/diagnostics/index.ts +1 -7
  358. package/src/runtime/diagnostics/message-flow.ts +47 -9
  359. package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
  360. package/src/runtime/execution/index.ts +40 -14
  361. package/src/runtime/execution/serial-execution-queue.ts +33 -4
  362. package/src/runtime/execution/state-lane.ts +7 -0
  363. package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
  364. package/src/runtime/foundation/durable-service-request.ts +137 -0
  365. package/src/runtime/foundation/operation-identity.ts +5 -1
  366. package/src/runtime/foundation/operation-registry.ts +98 -20
  367. package/src/runtime/foundation/raw-service-mesh-runtime.ts +704 -336
  368. package/src/runtime/foundation/service-liveness-registry.ts +39 -0
  369. package/src/runtime/foundation/service-mailbox.ts +8 -0
  370. package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
  371. package/src/runtime/foundation/service-relocation-object-owner.ts +55 -36
  372. package/src/runtime/foundation/service-relocation-runtime.ts +25 -4
  373. package/src/runtime/foundation/service-runtime-contracts.ts +19 -2
  374. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
  375. package/src/runtime/foundation/service-stateful-registry.ts +38 -35
  376. package/src/runtime/foundation/service-stateful-runtime.ts +732 -275
  377. package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -16
  378. package/src/runtime/foundation/service-topology-registry.ts +91 -36
  379. package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
  380. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  381. package/src/runtime/foundation/service-wire-m6a-codec.ts +231 -76
  382. package/src/runtime/handlers/handler-instance-scope.ts +67 -16
  383. package/src/runtime/host/actor-packet-relay.ts +113 -94
  384. package/src/runtime/host/actor-placement-coordinator.ts +31 -8
  385. package/src/runtime/host/actor-runtime-options-factory.ts +13 -2
  386. package/src/runtime/host/actor-transfer-runtime.ts +104 -430
  387. package/src/runtime/host/application-job-queue.ts +160 -41
  388. package/src/runtime/host/entry-actor-runtime.ts +4 -0
  389. package/src/runtime/host/index.ts +473 -271
  390. package/src/runtime/host/location-runtime-owner.ts +2 -6
  391. package/src/runtime/host/mesh-router-resolver.ts +13 -5
  392. package/src/runtime/host/remote-bound-session-relay.ts +88 -271
  393. package/src/runtime/host/route-mesh-runtime.ts +12 -6
  394. package/src/runtime/host/runtime-shutdown.ts +15 -4
  395. package/src/runtime/host/service-relocation-control.ts +11 -5
  396. package/src/runtime/host/service-relocation-host-runtime.ts +1092 -759
  397. package/src/runtime/host/spot-address-transport.ts +4 -2
  398. package/src/runtime/host/spot-runtime-options-factory.ts +20 -7
  399. package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
  400. package/src/runtime/locations/actor-location-claims.ts +52 -30
  401. package/src/runtime/locations/auto-connect-loop.ts +22 -14
  402. package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
  403. package/src/runtime/locations/auto-connect-types.ts +0 -1
  404. package/src/runtime/locations/descriptor-publication.ts +7 -0
  405. package/src/runtime/locations/domain-store-contract.ts +5 -0
  406. package/src/runtime/locations/in-memory-authority-store.ts +85 -23
  407. package/src/runtime/locations/in-memory-location-store.ts +1 -12
  408. package/src/runtime/locations/index.ts +1 -0
  409. package/src/runtime/locations/lease-tracker.ts +2 -9
  410. package/src/runtime/locations/lifecycle.ts +8 -26
  411. package/src/runtime/locations/location-store-repository.ts +628 -152
  412. package/src/runtime/locations/relocation-blob.ts +75 -1
  413. package/src/runtime/locations/request-source-resolver.ts +138 -0
  414. package/src/runtime/locations/resolvers.ts +2 -2
  415. package/src/runtime/locations/runtime.ts +98 -64
  416. package/src/runtime/messaging/framework-json-v1.ts +5 -325
  417. package/src/runtime/messaging/packet-name.ts +5 -25
  418. package/src/runtime/messaging/payload-codec.ts +8 -11
  419. package/src/runtime/messaging/request-result.ts +62 -0
  420. package/src/runtime/messaging/submission-result.ts +5 -1
  421. package/src/runtime/protocol/service_wire_codec.generated.ts +218 -5
  422. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +16 -13
  423. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +46 -25
  424. package/src/runtime/spots/index.ts +389 -283
  425. package/src/runtime/spots/spot-activation-registry.ts +25 -13
  426. package/src/runtime/spots/spot-activation-state.ts +12 -19
  427. package/src/runtime/spots/spot-activation.ts +198 -96
  428. package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
  429. package/src/runtime/spots/spot-actor-membership.ts +0 -15
  430. package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
  431. package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
  432. package/src/runtime/spots/spot-entry-activation.ts +33 -21
  433. package/src/runtime/spots/spot-handler-registry.ts +56 -12
  434. package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
  435. package/src/runtime/spots/spot-manager-public.ts +2 -2
  436. package/src/runtime/spots/spot-node-autoconnect.ts +28 -47
  437. package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
  438. package/src/runtime/spots/spot-outbound.ts +39 -19
  439. package/src/runtime/spots/spot-remote-codec.ts +9 -2
  440. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
  441. package/src/runtime/spots/spot-runtime-ports.ts +1 -1
  442. package/src/runtime/spots/spot-serial-executor.ts +97 -25
  443. package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
  444. package/src/runtime/spots/spot-subscription-dispatch.ts +1 -4
  445. package/src/runtime/spots/spot-timer.ts +418 -158
  446. package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
  447. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
  448. package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
  449. package/src/runtime/streams/bound-session-service.ts +7 -10
  450. package/src/runtime/streams/index.ts +12 -6
  451. package/src/runtime/streams/managed-stream.ts +4 -2
  452. package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
  453. package/src/runtime/streams/session-actor-coordinator.ts +39 -88
  454. package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
  455. package/src/runtime/streams/stream-session-runtime.ts +13 -34
  456. package/src/runtime/workers/index.ts +1 -1
@@ -1,4 +1,5 @@
1
1
  import type { ActorId } from '../Common';
2
+ import type { ZLinkRequest } from '../Handlers/Attributes';
2
3
  export interface ZLinkActorClient {
3
4
  sendToActor(actorId: ActorId, message: unknown): ZLinkActorSendCall;
4
5
  requestToActor(actorId: ActorId, request: unknown): ZLinkActorRequestCall;
@@ -10,6 +11,6 @@ export interface ZLinkActorSendCall {
10
11
  export interface ZLinkActorRequestCall {
11
12
  metadata(key: string, value: string): this;
12
13
  timeout(timeoutMs: number): this;
13
- submit<TReply>(signal?: AbortSignal): Promise<TReply>;
14
+ submit<TReply>(signal?: AbortSignal): ZLinkRequest<TReply>;
14
15
  yield<TReply>(signal?: AbortSignal): Promise<TReply>;
15
16
  }
@@ -1,4 +1,5 @@
1
1
  import type { ZLinkMessageMetadata } from '../Common';
2
+ import type { ZLinkRequest } from '../Handlers/Attributes';
2
3
  export interface ZLinkSendCall {
3
4
  metadata(key: string, value: string): this;
4
5
  metadata(metadata: ZLinkMessageMetadata): this;
@@ -8,7 +9,7 @@ export interface ZLinkRequestCall {
8
9
  metadata(key: string, value: string): this;
9
10
  metadata(metadata: ZLinkMessageMetadata): this;
10
11
  timeout(timeoutMs: number): this;
11
- submit<TReply>(signal?: AbortSignal): Promise<TReply>;
12
+ submit<TReply>(signal?: AbortSignal): ZLinkRequest<TReply>;
12
13
  }
13
14
  export interface ZLinkChannelRequestCall extends ZLinkRequestCall {
14
15
  yield<TReply>(signal?: AbortSignal): Promise<TReply>;
@@ -1,7 +1,13 @@
1
1
  export declare class ZLinkEncodedPayload {
2
2
  private constructor();
3
+ /** Copies the supplied bytes. */
3
4
  static from(bytes: Uint8Array): ZLinkEncodedPayload;
5
+ /** Retains the supplied bytes without copying. Do not modify them afterward; mutation changes the payload. */
6
+ static fromOwned(bytes: Uint8Array): ZLinkEncodedPayload;
7
+ /** Returns a copy of the stored bytes. */
4
8
  data(): Uint8Array;
9
+ /** Returns the stored bytes without copying. Do not modify this view or its backing buffer. */
10
+ view(): Readonly<Uint8Array>;
5
11
  toBytes(): Uint8Array;
6
12
  copy(): ZLinkEncodedPayload;
7
13
  size(): number;
@@ -3,15 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZLinkEncodedPayload = void 0;
4
4
  const encoded_payload_storage_1 = require("./encoded-payload-storage");
5
5
  class ZLinkEncodedPayload {
6
- constructor(bytes) {
7
- (0, encoded_payload_storage_1.storeEncodedPayload)(this, bytes);
6
+ constructor(bytes, owned) {
7
+ if (owned) {
8
+ (0, encoded_payload_storage_1.adoptEncodedPayload)(this, bytes);
9
+ }
10
+ else {
11
+ (0, encoded_payload_storage_1.storeEncodedPayload)(this, bytes);
12
+ }
8
13
  }
14
+ /** Copies the supplied bytes. */
9
15
  static from(bytes) {
10
- return new ZLinkEncodedPayload(bytes);
16
+ return new ZLinkEncodedPayload(bytes, false);
11
17
  }
18
+ /** Retains the supplied bytes without copying. Do not modify them afterward; mutation changes the payload. */
19
+ static fromOwned(bytes) {
20
+ return new ZLinkEncodedPayload(bytes, true);
21
+ }
22
+ /** Returns a copy of the stored bytes. */
12
23
  data() {
13
24
  return new Uint8Array(this.stored());
14
25
  }
26
+ /** Returns the stored bytes without copying. Do not modify this view or its backing buffer. */
27
+ view() {
28
+ return this.stored();
29
+ }
15
30
  toBytes() {
16
31
  return this.data();
17
32
  }
@@ -4,7 +4,7 @@ exports.ZLinkMessageMetadataEmpty = void 0;
4
4
  exports.zlinkMessageMetadata = zlinkMessageMetadata;
5
5
  class ImmutableZLinkMessageMetadata {
6
6
  values;
7
- constructor(values = new Map()) {
7
+ constructor(values = []) {
8
8
  this.values = Object.freeze(new ImmutableMetadataMap(values));
9
9
  }
10
10
  find(key) {
@@ -14,9 +14,7 @@ class ImmutableZLinkMessageMetadata {
14
14
  class ImmutableMetadataMap {
15
15
  #values;
16
16
  constructor(values) {
17
- this.#values = new Map(typeof values[Symbol.iterator] === 'function'
18
- ? values
19
- : Object.entries(values));
17
+ this.#values = new Map(values);
20
18
  }
21
19
  get size() {
22
20
  return this.#values.size;
@@ -45,5 +43,13 @@ class ImmutableMetadataMap {
45
43
  }
46
44
  exports.ZLinkMessageMetadataEmpty = Object.freeze(new ImmutableZLinkMessageMetadata());
47
45
  function zlinkMessageMetadata(values) {
48
- return Object.freeze(new ImmutableZLinkMessageMetadata(values));
46
+ const entries = typeof values[Symbol.iterator] === 'function'
47
+ ? values
48
+ : Object.entries(values);
49
+ const size = Array.isArray(entries)
50
+ ? entries.length
51
+ : entries.size;
52
+ return size === 0
53
+ ? exports.ZLinkMessageMetadataEmpty
54
+ : Object.freeze(new ImmutableZLinkMessageMetadata(entries));
49
55
  }
@@ -1,3 +1,3 @@
1
1
  export declare function storeEncodedPayload(owner: object, bytes: Uint8Array): Buffer;
2
- export declare function adoptEncodedPayload(owner: object, bytes: Buffer): Buffer;
2
+ export declare function adoptEncodedPayload(owner: object, bytes: Uint8Array): Buffer;
3
3
  export declare function borrowEncodedPayload(owner: object): Buffer | undefined;
@@ -10,8 +10,11 @@ function storeEncodedPayload(owner, bytes) {
10
10
  return stored;
11
11
  }
12
12
  function adoptEncodedPayload(owner, bytes) {
13
- encodedPayloadStorage.set(owner, bytes);
14
- return bytes;
13
+ const stored = Buffer.isBuffer(bytes)
14
+ ? bytes
15
+ : Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
16
+ encodedPayloadStorage.set(owner, stored);
17
+ return stored;
15
18
  }
16
19
  function borrowEncodedPayload(owner) {
17
20
  return encodedPayloadStorage.get(owner);
@@ -112,7 +112,7 @@ export interface ZLinkMeshObjectRoleBuilder {
112
112
  export interface ZLinkMeshObjectClientBuilder {
113
113
  }
114
114
  export interface ZLinkMeshObjectServerBuilder {
115
- addEntrySpot<TEntrySpot extends ZLinkEntrySpot>(entrySpotType: Type<TEntrySpot>): this;
115
+ addEntrySpot<TEntrySpot extends ZLinkEntrySpot>(entrySpotType: Type<TEntrySpot>, actorType: string): this;
116
116
  addSpotFactory<TSpot extends ZLinkSpot>(spotType: string, implementation: Type<TSpot>, configure: (builder: ZLinkUserSpotFactoryBuilder<TSpot>) => void): this;
117
117
  addInstanceSpotFactory<TSpot extends ZLinkInstanceSpot>(instanceSpotType: string, implementation: Type<TSpot>, configure: (builder: ZLinkInstanceSpotFactoryBuilder<TSpot>) => void): this;
118
118
  addActorFactory<TActor extends ZLinkActor>(actorType: string, implementation: Type<ZLinkActorFactory<TActor>>, configure: (builder: ZLinkActorFactoryBuilder<TActor>) => void): this;
@@ -16,7 +16,8 @@ export declare function validateActorTransferTimeout(timeoutMs: number): number;
16
16
  export declare function validateSessionReplacementCallbackTimeout(timeoutMs: number): number;
17
17
  export declare function registerEntrySpot(options: {
18
18
  entrySpotType?: Type<ZLinkEntrySpot>;
19
- }, entrySpotType: Type<ZLinkEntrySpot>): void;
19
+ entrySpotActorType?: string;
20
+ }, entrySpotType: Type<ZLinkEntrySpot>, actorType: string): void;
20
21
  export declare function registerSpotFactory(options: {
21
22
  spotFactories?: Type<ZLinkSpot>[];
22
23
  }, spotType: Type<ZLinkSpot>): void;
@@ -62,11 +62,15 @@ function validateSessionReplacementCallbackTimeout(timeoutMs) {
62
62
  }
63
63
  return timeoutMs;
64
64
  }
65
- function registerEntrySpot(options, entrySpotType) {
65
+ function registerEntrySpot(options, entrySpotType, actorType) {
66
66
  if (options.entrySpotType !== undefined) {
67
67
  throw new ConfigurationException_1.ZLinkConfigurationException('Duplicate Entry Spot registration on SpotNode.');
68
68
  }
69
+ if (typeof actorType !== 'string' || actorType.length === 0) {
70
+ throw new ConfigurationException_1.ZLinkConfigurationException('Entry Spot Actor type must be a non-empty string.');
71
+ }
69
72
  options.entrySpotType = entrySpotType;
73
+ options.entrySpotActorType = actorType;
70
74
  }
71
75
  function registerSpotFactory(options, spotType) {
72
76
  options.spotFactories ??= [];
@@ -942,8 +942,8 @@ class DefaultMeshObjectServerBuilder {
942
942
  this.meshName = meshName;
943
943
  this.node = node;
944
944
  }
945
- addEntrySpot(entrySpotType) {
946
- (0, RegistrationBuilderPolicy_1.registerEntrySpot)(this.node, entrySpotType);
945
+ addEntrySpot(entrySpotType, actorType) {
946
+ (0, RegistrationBuilderPolicy_1.registerEntrySpot)(this.node, entrySpotType, actorType);
947
947
  return this;
948
948
  }
949
949
  addSpotFactory(spotType, implementation, configure) {
@@ -233,6 +233,7 @@ export interface ZLinkSpotNodeOptions {
233
233
  readonly router?: ZLinkSpotRouterCapabilityOptions;
234
234
  readonly pubSub?: ZLinkSpotPubSubCapabilityOptions;
235
235
  readonly entrySpotType?: Type<ZLinkEntrySpot>;
236
+ readonly entrySpotActorType?: string;
236
237
  readonly spotFactories?: readonly Type<ZLinkSpot>[];
237
238
  readonly spotFactoryRegistrations?: Readonly<Record<string, ZLinkObjectFactoryRegistration<ZLinkSpot, ZLinkSpot, ZLinkUserSpotFactoryConfiguration>>>;
238
239
  readonly instanceSpotFactories?: Readonly<Record<string, Type<ZLinkInstanceSpot>>>;
@@ -76,7 +76,7 @@ export interface ZLinkRuntimeMessageFlowEvent {
76
76
  readonly commandId?: number;
77
77
  readonly messageSize?: number;
78
78
  readonly durationSeconds?: number;
79
- readonly errorReason?: ZLinkDispatchErrorReason;
79
+ readonly errorReason?: ZLinkDispatchErrorReason | 'activation_timeout' | 'activation_rejected';
80
80
  readonly errorAction?: ZLinkDispatchErrorAction;
81
81
  readonly errorType?: string;
82
82
  readonly errorMessage?: string;
@@ -162,7 +162,7 @@ export declare enum ZLinkDispatchMessageKind {
162
162
  ActorRequest = "actorRequest",
163
163
  ActorSend = "actorSend"
164
164
  }
165
- export type ZLinkDispatchErrorReason = 'no_handler' | 'decode_error' | 'handler_exception' | 'invalid_frame' | 'reply_path_missing' | 'unexpected_reply' | 'backpressure' | 'target_closed' | 'stale_target' | 'shutdown';
165
+ export type ZLinkDispatchErrorReason = 'no_handler' | 'decode_error' | 'handler_exception' | 'invalid_frame' | 'reply_path_missing' | 'unexpected_reply' | 'backpressure' | 'target_closed' | 'location_unavailable' | 'stale_target' | 'shutdown';
166
166
  export type ZLinkDispatchErrorAction = 'reply_error' | 'fail_caller' | 'drop';
167
167
  export declare enum ZLinkRuntimeDispatchErrorReason {
168
168
  HandlerMissing = "no_handler",
@@ -1,16 +1,9 @@
1
- import { type ZLinkPacketJsonContract } from './JsonContract';
2
- export declare const ZLINK_DECORATOR_METADATA: unique symbol;
3
- export interface ZLinkDecoratorMetadata {
4
- readonly kind: string;
5
- readonly packetName?: string;
6
- readonly groupName?: string;
7
- readonly methodName?: string;
8
- readonly meshName?: string;
9
- readonly channelName?: string;
10
- readonly topic?: string;
11
- readonly jsonContract?: ZLinkPacketJsonContract;
12
- }
1
+ export { ZLINK_DECORATOR_METADATA, readZLinkDecoratorMetadata } from '@zlink-systems/stream-wire/internal/json';
2
+ export type { ZLinkDecoratorMetadata } from '@zlink-systems/stream-wire/internal/json';
13
3
  export declare function ZLinkHandlerGroup(groupName: string): ClassDecorator;
4
+ export interface ZLinkRequest<TReply> extends Promise<TReply> {
5
+ readonly admitted: Promise<void>;
6
+ }
14
7
  export declare function ZLinkRequest(packetName?: string): MethodDecorator;
15
8
  export declare function ZLinkSend(packetName?: string): MethodDecorator;
16
9
  export declare function ZLinkPublish(packetName?: string): MethodDecorator;
@@ -21,4 +14,3 @@ export declare function ZLinkSpotActorSend(packetName?: string): MethodDecorator
21
14
  export declare function ZLinkSpotActorRequest(packetName?: string): MethodDecorator;
22
15
  export declare function ZLinkStreamPacket(): MethodDecorator;
23
16
  export declare function ZLinkStreamRaw(): MethodDecorator;
24
- export declare function readZLinkDecoratorMetadata(target: object): readonly ZLinkDecoratorMetadata[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZLINK_DECORATOR_METADATA = void 0;
3
+ exports.readZLinkDecoratorMetadata = exports.ZLINK_DECORATOR_METADATA = void 0;
4
4
  exports.ZLinkHandlerGroup = ZLinkHandlerGroup;
5
5
  exports.ZLinkRequest = ZLinkRequest;
6
6
  exports.ZLinkSend = ZLinkSend;
@@ -13,9 +13,11 @@ exports.ZLinkSpotActorSend = ZLinkSpotActorSend;
13
13
  exports.ZLinkSpotActorRequest = ZLinkSpotActorRequest;
14
14
  exports.ZLinkStreamPacket = ZLinkStreamPacket;
15
15
  exports.ZLinkStreamRaw = ZLinkStreamRaw;
16
- exports.readZLinkDecoratorMetadata = readZLinkDecoratorMetadata;
17
16
  const JsonContract_1 = require("./JsonContract");
18
- exports.ZLINK_DECORATOR_METADATA = Symbol.for('@zlink-systems/framework:decorator');
17
+ const json_1 = require("@zlink-systems/stream-wire/internal/json");
18
+ var json_2 = require("@zlink-systems/stream-wire/internal/json");
19
+ Object.defineProperty(exports, "ZLINK_DECORATOR_METADATA", { enumerable: true, get: function () { return json_2.ZLINK_DECORATOR_METADATA; } });
20
+ Object.defineProperty(exports, "readZLinkDecoratorMetadata", { enumerable: true, get: function () { return json_2.readZLinkDecoratorMetadata; } });
19
21
  function ZLinkHandlerGroup(groupName) {
20
22
  return classDecorator({ kind: 'handlerGroup', groupName });
21
23
  }
@@ -68,17 +70,11 @@ function methodDecorator(metadata) {
68
70
  });
69
71
  }
70
72
  function appendMetadata(target, metadata) {
71
- const current = readZLinkDecoratorMetadata(target);
72
- Object.defineProperty(target, exports.ZLINK_DECORATOR_METADATA, {
73
+ const current = (0, json_1.readZLinkDecoratorMetadata)(target);
74
+ Object.defineProperty(target, json_1.ZLINK_DECORATOR_METADATA, {
73
75
  configurable: true,
74
76
  enumerable: false,
75
77
  value: [...current, metadata],
76
78
  writable: false
77
79
  });
78
80
  }
79
- function readZLinkDecoratorMetadata(target) {
80
- if (!Object.prototype.hasOwnProperty.call(target, exports.ZLINK_DECORATOR_METADATA)) {
81
- return [];
82
- }
83
- return target[exports.ZLINK_DECORATOR_METADATA];
84
- }
@@ -1,46 +1,2 @@
1
- /** Describes the fields accepted by the default framework-json-v1 serializer. */
2
- export type ZLinkJsonSchema = {
3
- readonly type: 'boolean';
4
- } | {
5
- readonly type: 'string';
6
- } | {
7
- readonly type: 'number';
8
- } | {
9
- readonly type: 'int32';
10
- } | {
11
- readonly type: 'uint32';
12
- } | {
13
- readonly type: 'int64';
14
- } | {
15
- readonly type: 'uint64';
16
- } | {
17
- readonly type: 'bytes';
18
- } | {
19
- readonly type: 'enum';
20
- readonly names: readonly string[];
21
- } | {
22
- readonly type: 'nullable';
23
- readonly value: ZLinkJsonSchema;
24
- } | {
25
- readonly type: 'array';
26
- readonly items: ZLinkJsonSchema;
27
- } | {
28
- readonly type: 'record';
29
- readonly values: ZLinkJsonSchema;
30
- } | {
31
- readonly type: 'object';
32
- readonly properties: Readonly<Record<string, ZLinkJsonSchema>>;
33
- readonly required: readonly string[];
34
- /** Unknown properties are ignored during decoding unless this is false. */
35
- readonly additionalProperties?: boolean;
36
- };
37
- /**
38
- * Describes the request and optional reply fields carried under one packet
39
- * name by the default JSON serializer.
40
- */
41
- export interface ZLinkPacketJsonContract {
42
- readonly payload: ZLinkJsonSchema;
43
- readonly reply?: ZLinkJsonSchema;
44
- }
45
- export declare function defineZLinkPacketJsonContract(packetName: string, contract: ZLinkPacketJsonContract): ZLinkPacketJsonContract;
46
- export declare function readZLinkPacketJsonContract(packetName: string): ZLinkPacketJsonContract | undefined;
1
+ export { defineZLinkPacketJsonContract, readZLinkPacketJsonContract } from '@zlink-systems/stream-wire/internal/json';
2
+ export type { ZLinkJsonSchema, ZLinkPacketJsonContract } from '@zlink-systems/stream-wire/internal/json';
@@ -1,155 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineZLinkPacketJsonContract = defineZLinkPacketJsonContract;
4
- exports.readZLinkPacketJsonContract = readZLinkPacketJsonContract;
5
- const MAX_CONTRACT_SCHEMA_DEPTH = 64;
6
- const ZLINK_PACKET_JSON_CONTRACTS = Symbol.for('@zlink-systems/framework:packet-json-contracts');
7
- function defineZLinkPacketJsonContract(packetName, contract) {
8
- if (packetName.trim().length === 0) {
9
- throw new TypeError('ZLink packet name must not be empty.');
10
- }
11
- const runtimeContract = contract;
12
- if (typeof runtimeContract !== 'object' || runtimeContract === null) {
13
- throw new TypeError('ZLink packet JSON contract must be an object.');
14
- }
15
- const normalizedContract = runtimeContract;
16
- const normalized = Object.freeze({
17
- payload: normalizeJsonSchema(normalizedContract.payload, new Set(), 0),
18
- ...(normalizedContract.reply === undefined
19
- ? {}
20
- : { reply: normalizeJsonSchema(normalizedContract.reply, new Set(), 0) })
21
- });
22
- const contracts = packetJsonContracts();
23
- const current = contracts.get(packetName);
24
- if (current !== undefined && canonicalContract(current) !== canonicalContract(normalized)) {
25
- throw new TypeError(`ZLink packet '${packetName}' has conflicting JSON contracts in one process.`);
26
- }
27
- if (current !== undefined)
28
- return current;
29
- contracts.set(packetName, normalized);
30
- return normalized;
31
- }
32
- function readZLinkPacketJsonContract(packetName) {
33
- return packetJsonContracts().get(packetName);
34
- }
35
- function normalizeJsonSchema(schema, parents, depth) {
36
- // Keep the runtime boundary defensive for JavaScript callers even though
37
- // the TypeScript signature describes the accepted shape.
38
- const runtimeSchema = schema;
39
- if (typeof runtimeSchema !== 'object' ||
40
- runtimeSchema === null ||
41
- depth > MAX_CONTRACT_SCHEMA_DEPTH) {
42
- throw new TypeError(`ZLink packet JSON schema must be an acyclic object with at most ${MAX_CONTRACT_SCHEMA_DEPTH} levels.`);
43
- }
44
- const normalizedSchema = runtimeSchema;
45
- if (parents.has(normalizedSchema))
46
- throw new TypeError('ZLink packet JSON schema must not contain a cycle.');
47
- const nextParents = new Set(parents).add(normalizedSchema);
48
- switch (normalizedSchema.type) {
49
- case 'boolean':
50
- case 'string':
51
- case 'number':
52
- case 'int32':
53
- case 'uint32':
54
- case 'int64':
55
- case 'uint64':
56
- case 'bytes':
57
- return Object.freeze({ type: normalizedSchema.type });
58
- case 'enum': {
59
- if (!Array.isArray(normalizedSchema.names) ||
60
- normalizedSchema.names.length === 0 ||
61
- normalizedSchema.names.some((name) => typeof name !== 'string' || name.length === 0)) {
62
- throw new TypeError('ZLink packet enum schema requires non-empty string names.');
63
- }
64
- if (new Set(normalizedSchema.names).size !== normalizedSchema.names.length) {
65
- throw new TypeError('ZLink packet enum schema names must be unique.');
66
- }
67
- return Object.freeze({ type: 'enum', names: Object.freeze([...normalizedSchema.names]) });
68
- }
69
- case 'nullable':
70
- return Object.freeze({
71
- type: 'nullable',
72
- value: normalizeJsonSchema(normalizedSchema.value, nextParents, depth + 1)
73
- });
74
- case 'array':
75
- return Object.freeze({
76
- type: 'array',
77
- items: normalizeJsonSchema(normalizedSchema.items, nextParents, depth + 1)
78
- });
79
- case 'record':
80
- return Object.freeze({
81
- type: 'record',
82
- values: normalizeJsonSchema(normalizedSchema.values, nextParents, depth + 1)
83
- });
84
- case 'object': {
85
- const runtimeProperties = normalizedSchema.properties;
86
- if (typeof runtimeProperties !== 'object' ||
87
- runtimeProperties === null ||
88
- Array.isArray(runtimeProperties)) {
89
- throw new TypeError('ZLink packet object schema properties must be an object.');
90
- }
91
- if (!Array.isArray(normalizedSchema.required) ||
92
- normalizedSchema.required.some((name) => typeof name !== 'string' || name.length === 0)) {
93
- throw new TypeError('ZLink packet object schema required must contain property names.');
94
- }
95
- if (normalizedSchema.additionalProperties !== undefined &&
96
- typeof normalizedSchema.additionalProperties !== 'boolean') {
97
- throw new TypeError('ZLink packet object schema additionalProperties must be boolean.');
98
- }
99
- const properties = {};
100
- for (const [name, property] of Object.entries(runtimeProperties)) {
101
- if (isPrototypeKey(name)) {
102
- throw new TypeError(`ZLink packet JSON property '${name}' is not allowed.`);
103
- }
104
- properties[name] = normalizeJsonSchema(property, nextParents, depth + 1);
105
- }
106
- if (new Set(normalizedSchema.required).size !== normalizedSchema.required.length) {
107
- throw new TypeError('ZLink packet JSON required properties must be unique.');
108
- }
109
- for (const name of normalizedSchema.required) {
110
- if (isPrototypeKey(name)) {
111
- throw new TypeError(`ZLink packet JSON property '${name}' is not allowed.`);
112
- }
113
- if (!Object.prototype.hasOwnProperty.call(properties, name)) {
114
- throw new TypeError(`ZLink packet JSON required property '${name}' has no property schema.`);
115
- }
116
- }
117
- return Object.freeze({
118
- type: 'object',
119
- properties: Object.freeze(properties),
120
- required: Object.freeze([...normalizedSchema.required]),
121
- ...(normalizedSchema.additionalProperties === undefined
122
- ? {}
123
- : { additionalProperties: normalizedSchema.additionalProperties })
124
- });
125
- }
126
- }
127
- throw new TypeError(`ZLink packet JSON schema type '${String(normalizedSchema.type)}' is not supported.`);
128
- }
129
- function packetJsonContracts() {
130
- const root = globalThis;
131
- let contracts = root[ZLINK_PACKET_JSON_CONTRACTS];
132
- if (contracts === undefined) {
133
- contracts = new Map();
134
- Object.defineProperty(root, ZLINK_PACKET_JSON_CONTRACTS, {
135
- configurable: false,
136
- enumerable: false,
137
- value: contracts,
138
- writable: false
139
- });
140
- }
141
- return contracts;
142
- }
143
- function canonicalContract(value) {
144
- if (Array.isArray(value))
145
- return `[${value.map(canonicalContract).join(',')}]`;
146
- if (typeof value !== 'object' || value === null)
147
- return JSON.stringify(value);
148
- return `{${Object.entries(value)
149
- .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
150
- .map(([key, item]) => `${JSON.stringify(key)}:${canonicalContract(item)}`)
151
- .join(',')}}`;
152
- }
153
- function isPrototypeKey(name) {
154
- return name === '__proto__' || name === 'prototype' || name === 'constructor';
155
- }
3
+ exports.readZLinkPacketJsonContract = exports.defineZLinkPacketJsonContract = void 0;
4
+ var json_1 = require("@zlink-systems/stream-wire/internal/json");
5
+ Object.defineProperty(exports, "defineZLinkPacketJsonContract", { enumerable: true, get: function () { return json_1.defineZLinkPacketJsonContract; } });
6
+ Object.defineProperty(exports, "readZLinkPacketJsonContract", { enumerable: true, get: function () { return json_1.readZLinkPacketJsonContract; } });
@@ -22,6 +22,8 @@ export interface ZLinkObjectCapability {
22
22
  readonly policy: ZLinkObjectMaintenancePolicyKind;
23
23
  readonly hasSnapshotAdapter: boolean;
24
24
  readonly limit: number;
25
+ /** True only for an Actor capability whose node registered an Entry Spot type accepting it. */
26
+ readonly entryAccepted: boolean;
25
27
  }
26
28
  export interface ZLinkPopulationCapacity {
27
29
  readonly active: number;
@@ -2,17 +2,22 @@ import type { ZLinkActor } from '../Actors';
2
2
  import type { ZLinkChannelRequestCall, ZLinkPublishCall, ZLinkSendCall } from '../Channels';
3
3
  import type { RoutingId, SpotId, Type, ZLinkMessageMetadata } from '../Common';
4
4
  import type { ZLinkSpotTimerHandler } from '../Handlers';
5
+ import type { ZLinkRequest } from '../Handlers/Attributes';
5
6
  import type { ZLinkTimer, ZLinkTimerOptions } from '../Timers';
6
7
  import type { ZLinkEntrySpot, ZLinkInstanceSpot, ZLinkSpot, ZLinkSpotRelocationReadyCall } from './ZLinkSpot';
7
8
  export interface ZLinkActorHandlerRegistry {
8
9
  addHandler<THandler>(handlerType: Type<THandler>, packetName?: string): this;
9
10
  }
10
11
  export interface ZLinkSpotHandlerRegistry extends ZLinkActorHandlerRegistry {
12
+ /** Declares a timer handler constructor for relocation without registering an endpoint. */
13
+ addTimerHandler<THandler extends ZLinkSpotTimerHandler<ZLinkSpot>>(handlerType: Type<THandler>): this;
11
14
  addPacket<THandler>(handlerType: Type<THandler>): this;
12
15
  addSubscribe<THandler>(handlerType: Type<THandler>, channelName: string, topic: string): this;
13
16
  }
14
17
  export interface ZLinkInstanceSpotHandlerRegistry {
15
18
  addPacket<THandler>(handlerType: Type<THandler>): this;
19
+ /** Declares a timer handler constructor for relocation without registering an endpoint. */
20
+ addTimerHandler<THandler extends ZLinkSpotTimerHandler<ZLinkInstanceSpot>>(handlerType: Type<THandler>): this;
16
21
  }
17
22
  export interface ZLinkWorkerCall<T> {
18
23
  timeoutMs(durationMs: number): ZLinkWorkerCall<T>;
@@ -77,7 +82,7 @@ export interface ZLinkSpotRequestCall {
77
82
  instanceSpot(instanceSpotType: string): this;
78
83
  inMesh(meshName: string): this;
79
84
  timeout(timeoutMs: number): this;
80
- submit<TReply>(signal?: AbortSignal): Promise<TReply>;
85
+ submit<TReply>(signal?: AbortSignal): ZLinkRequest<TReply>;
81
86
  yield<TReply>(signal?: AbortSignal): Promise<TReply>;
82
87
  }
83
88
  export declare enum ZLinkSpotCreateState {
@@ -42,15 +42,15 @@ export interface ZLinkUserSpotActorLifecycle<TActor extends ZLinkActor = ZLinkAc
42
42
  export interface ZLinkSpot<TActor extends ZLinkActor = ZLinkActor> extends ZLinkUserSpotActorLifecycle<TActor> {
43
43
  readonly context: ZLinkSpotContext<TActor>;
44
44
  configure?(): void;
45
- onCreate?(request: ZLinkMessage): Promise<ZLinkSpotCreateResponse>;
46
- onInitialize?(): Promise<void>;
45
+ onCreate?(request: ZLinkMessage, signal?: AbortSignal): Promise<ZLinkSpotCreateResponse>;
46
+ onInitialize?(signal?: AbortSignal): Promise<void>;
47
47
  onClosing?(context: ZLinkSpotClosingContext, cleanupSignal: AbortSignal): Promise<void>;
48
48
  onRelocationReadyCompleted?(completion: ZLinkSpotRelocationReadyCompletion): Promise<void>;
49
49
  }
50
50
  export interface ZLinkInstanceSpot {
51
51
  readonly context: ZLinkInstanceSpotContext;
52
52
  configure?(): void;
53
- onInitialize?(): Promise<void>;
53
+ onInitialize?(signal?: AbortSignal): Promise<void>;
54
54
  onClosing?(context: ZLinkSpotClosingContext, cleanupSignal: AbortSignal): Promise<void>;
55
55
  }
56
56
  export interface ZLinkEntrySpot<TActor extends ZLinkActor = ZLinkActor> extends ZLinkSpotActorMembershipLifecycle<TActor> {
@@ -11,7 +11,7 @@ import type { ZLinkFrameworkRegistration } from './contracts/Configuration/Regis
11
11
  import type { ZLinkCodecSerializerRegistration, ZLinkFrameworkRegistrationOptions, ZLinkStreamCodecRegistration } from './contracts/Configuration/RegistrationTypes';
12
12
  import { captureZLinkExecutionTurn } from './runtime/execution';
13
13
  export { registerHandlerFilterScope as registerIntegrationHandlerFilterScope, type ZLinkHandlerFilterScopeRunner } from './runtime/channels/handler-filter-scope';
14
- export { disposeOwnedInstance as disposeIntegrationHandler, disposeOwnedInstances as disposeIntegrationHandlers } from './runtime/handlers/handler-instance-scope';
14
+ export { registerHandlerInstanceScopeFactory as registerIntegrationHandlerInstanceScopeFactory, disposeOwnedInstance as disposeIntegrationHandler, disposeOwnedInstances as disposeIntegrationHandlers } from './runtime/handlers/handler-instance-scope';
15
15
  export interface ZLinkNestIntegrationRuntimeHost extends Pick<import('./contracts').ZLinkFrameworkRuntime, 'shutdown'> {
16
16
  readonly channelRuntimeOptions: unknown;
17
17
  readonly routeMeshRuntimeOptions: ZLinkRouteMeshRuntimeOptions;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.disposeIntegrationHandlers = exports.disposeIntegrationHandler = exports.registerIntegrationHandlerFilterScope = exports.validateSessionReplacementCallbackTimeout = exports.validateMessageFollowDuration = exports.validateActorTransferTimeout = exports.registerSpotFactory = exports.registerEntrySpot = exports.validateRoutingIdPrefix = exports.registerRelocationStore = exports.registerActorFactory = exports.ZLinkSpotActorRequest = exports.ZLinkSpotActorSend = exports.hasSpotPublisherClient = exports.hasSpotNode = exports.hasActorManager = exports.normalizeFrameworkRegistration = exports.createFrameworkRegistration = exports.ZLinkConfigurationException = void 0;
3
+ exports.disposeIntegrationHandlers = exports.disposeIntegrationHandler = exports.registerIntegrationHandlerInstanceScopeFactory = exports.registerIntegrationHandlerFilterScope = exports.validateSessionReplacementCallbackTimeout = exports.validateMessageFollowDuration = exports.validateActorTransferTimeout = exports.registerSpotFactory = exports.registerEntrySpot = exports.validateRoutingIdPrefix = exports.registerRelocationStore = exports.registerActorFactory = exports.ZLinkSpotActorRequest = exports.ZLinkSpotActorSend = exports.hasSpotPublisherClient = exports.hasSpotNode = exports.hasActorManager = exports.normalizeFrameworkRegistration = exports.createFrameworkRegistration = exports.ZLinkConfigurationException = void 0;
4
4
  exports.createIntegrationDispatchOptionsBuilder = createIntegrationDispatchOptionsBuilder;
5
5
  exports.createIntegrationInboundDispatchOptionsBuilder = createIntegrationInboundDispatchOptionsBuilder;
6
6
  exports.createIntegrationLocationOptionsBuilder = createIntegrationLocationOptionsBuilder;
@@ -46,6 +46,7 @@ const execution_1 = require("./runtime/execution");
46
46
  var handler_filter_scope_1 = require("./runtime/channels/handler-filter-scope");
47
47
  Object.defineProperty(exports, "registerIntegrationHandlerFilterScope", { enumerable: true, get: function () { return handler_filter_scope_1.registerHandlerFilterScope; } });
48
48
  var handler_instance_scope_1 = require("./runtime/handlers/handler-instance-scope");
49
+ Object.defineProperty(exports, "registerIntegrationHandlerInstanceScopeFactory", { enumerable: true, get: function () { return handler_instance_scope_1.registerHandlerInstanceScopeFactory; } });
49
50
  Object.defineProperty(exports, "disposeIntegrationHandler", { enumerable: true, get: function () { return handler_instance_scope_1.disposeOwnedInstance; } });
50
51
  Object.defineProperty(exports, "disposeIntegrationHandlers", { enumerable: true, get: function () { return handler_instance_scope_1.disposeOwnedInstances; } });
51
52
  function createIntegrationDispatchOptionsBuilder(dispatch) {
@@ -10,5 +10,10 @@ export declare function isAbortError(error: unknown): boolean;
10
10
  export declare function createDeadlineExceededError(message?: string): ZLinkDeadlineExceededError;
11
11
  export declare function isDeadlineExceededError(error: unknown): boolean;
12
12
  export declare function throwIfAborted(signal: AbortSignal | undefined): void;
13
+ /**
14
+ * Whether a handler or dispatch result is a thenable the caller must wait
15
+ * for. Synchronous results, including null and undefined, are not.
16
+ */
17
+ export declare function isPromiseLike<T>(value: T | PromiseLike<T>): value is PromiseLike<T>;
13
18
  export declare function macrotaskBoundary(): Promise<void>;
14
19
  export declare function awaitWithAbort<T>(operation: Promise<T>, signal: AbortSignal | undefined, abortOperation?: () => void): Promise<T>;
@@ -6,6 +6,7 @@ exports.isAbortError = isAbortError;
6
6
  exports.createDeadlineExceededError = createDeadlineExceededError;
7
7
  exports.isDeadlineExceededError = isDeadlineExceededError;
8
8
  exports.throwIfAborted = throwIfAborted;
9
+ exports.isPromiseLike = isPromiseLike;
9
10
  exports.macrotaskBoundary = macrotaskBoundary;
10
11
  exports.awaitWithAbort = awaitWithAbort;
11
12
  /** The typed cancellation error produced by Framework admission helpers. */
@@ -41,6 +42,15 @@ function throwIfAborted(signal) {
41
42
  throw createAbortError();
42
43
  }
43
44
  }
45
+ /**
46
+ * Whether a handler or dispatch result is a thenable the caller must wait
47
+ * for. Synchronous results, including null and undefined, are not.
48
+ */
49
+ function isPromiseLike(value) {
50
+ return (value !== null &&
51
+ (typeof value === 'object' || typeof value === 'function') &&
52
+ typeof value.then === 'function');
53
+ }
44
54
  function macrotaskBoundary() {
45
55
  return new Promise((resolve) => setImmediate(resolve));
46
56
  }