@zlink-systems/framework 0.30.3 → 0.32.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 (398) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActor.d.ts +2 -0
  3. package/dist/contracts/Actors/ZLinkSessionBindingIdentity.d.ts +6 -0
  4. package/dist/contracts/Actors/ZLinkSessionBindingIdentity.js +2 -0
  5. package/dist/contracts/Actors/index.d.ts +1 -0
  6. package/dist/contracts/Actors/index.js +1 -0
  7. package/dist/contracts/Common/CoreTypes.d.ts +1 -0
  8. package/dist/contracts/Common/HandlerMessageType.d.ts +8 -0
  9. package/dist/contracts/Common/HandlerMessageType.js +41 -0
  10. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +1 -1
  11. package/dist/contracts/Common/ZLinkEncodedPayload.js +12 -20
  12. package/dist/contracts/Common/ZLinkMessage.js +11 -7
  13. package/dist/contracts/Common/encoded-payload-storage.d.ts +0 -2
  14. package/dist/contracts/Common/encoded-payload-storage.js +4 -16
  15. package/dist/contracts/Common/index.d.ts +1 -1
  16. package/dist/contracts/Common/payload-slab.d.ts +4 -0
  17. package/dist/contracts/Common/payload-slab.js +30 -0
  18. package/dist/contracts/Configuration/RegistrationBuilders.js +15 -9
  19. package/dist/contracts/Configuration/RegistrationTypes.d.ts +19 -0
  20. package/dist/contracts/Handlers/Contexts.d.ts +1 -0
  21. package/dist/contracts/Locations/Authority.d.ts +2 -0
  22. package/dist/internal.d.ts +9 -0
  23. package/dist/internal.js +23 -1
  24. package/dist/nest-integration.d.ts +1 -0
  25. package/dist/nest-integration.js +3 -1
  26. package/dist/runtime/actors/actor-client.d.ts +6 -2
  27. package/dist/runtime/actors/actor-client.js +120 -82
  28. package/dist/runtime/actors/actor-context.js +16 -5
  29. package/dist/runtime/actors/actor-execution-context.js +2 -2
  30. package/dist/runtime/actors/actor-handoff.d.ts +12 -1
  31. package/dist/runtime/actors/actor-handoff.js +79 -34
  32. package/dist/runtime/actors/actor-join-deferred-scope.js +6 -6
  33. package/dist/runtime/actors/actor-local-native-join.d.ts +2 -2
  34. package/dist/runtime/actors/actor-local-native-join.js +19 -17
  35. package/dist/runtime/actors/actor-mailbox.d.ts +1 -1
  36. package/dist/runtime/actors/actor-remote-joiner.d.ts +2 -2
  37. package/dist/runtime/actors/actor-remote-joiner.js +4 -4
  38. package/dist/runtime/actors/actor-routed-join-transport.d.ts +9 -3
  39. package/dist/runtime/actors/actor-routed-json-request.d.ts +3 -0
  40. package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -2
  41. package/dist/runtime/actors/actor-runtime-state.d.ts +1 -1
  42. package/dist/runtime/actors/spot-actor-dispatch.d.ts +9 -5
  43. package/dist/runtime/actors/spot-actor-dispatch.js +60 -38
  44. package/dist/runtime/admission.d.ts +6 -4
  45. package/dist/runtime/admission.js +21 -10
  46. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +1 -0
  47. package/dist/runtime/application-jobs/application-ingress-record-owner.js +3 -0
  48. package/dist/runtime/backend/contracts/index.d.ts +26 -10
  49. package/dist/runtime/backend/mesh-completion-table.d.ts +7 -1
  50. package/dist/runtime/backend/mesh-completion-table.js +84 -20
  51. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +19 -6
  52. package/dist/runtime/backend/mesh-dispatch-pump.js +246 -147
  53. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -2
  54. package/dist/runtime/backend/node/node-backend-adapter-support.js +27 -19
  55. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +5 -2
  56. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +70 -13
  57. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  58. package/dist/runtime/backend/node/node-event-loop-poller.js +4 -3
  59. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +5 -1
  60. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +7 -2
  61. package/dist/runtime/backend/node/node-raw-binding-port.js +99 -63
  62. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +34 -16
  63. package/dist/runtime/backend/node/node-raw-mesh-backend.js +210 -106
  64. package/dist/runtime/backend/node/node-socket-backend-adapter.js +20 -6
  65. package/dist/runtime/backend/raw-binding-port.d.ts +6 -3
  66. package/dist/runtime/channels/channel-clients.js +3 -3
  67. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +11 -7
  68. package/dist/runtime/channels/channel-dispatch-pipeline.js +40 -22
  69. package/dist/runtime/channels/channel-dispatch-services.d.ts +3 -1
  70. package/dist/runtime/channels/channel-dispatch-services.js +7 -6
  71. package/dist/runtime/channels/channel-dispatchers.d.ts +13 -6
  72. package/dist/runtime/channels/channel-dispatchers.js +57 -36
  73. package/dist/runtime/channels/channel-envelope.d.ts +2 -2
  74. package/dist/runtime/channels/channel-envelope.js +609 -83
  75. package/dist/runtime/channels/channel-multipart.d.ts +1 -0
  76. package/dist/runtime/channels/channel-multipart.js +10 -6
  77. package/dist/runtime/channels/channel-outbound-operations.d.ts +6 -9
  78. package/dist/runtime/channels/channel-outbound-operations.js +107 -105
  79. package/dist/runtime/channels/channel-receive-loops.d.ts +9 -7
  80. package/dist/runtime/channels/channel-receive-loops.js +126 -90
  81. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +23 -6
  82. package/dist/runtime/channels/channel-runtime-lifecycle.js +47 -38
  83. package/dist/runtime/channels/channel-runtime-manager.d.ts +13 -6
  84. package/dist/runtime/channels/channel-runtime-manager.js +32 -14
  85. package/dist/runtime/channels/channel-socket-registry.d.ts +28 -4
  86. package/dist/runtime/channels/channel-socket-registry.js +9 -1
  87. package/dist/runtime/channels/channel-transports.d.ts +23 -16
  88. package/dist/runtime/channels/channel-transports.js +139 -119
  89. package/dist/runtime/channels/dispatch-error-reporter.d.ts +4 -4
  90. package/dist/runtime/channels/dispatch-error-reporter.js +5 -5
  91. package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
  92. package/dist/runtime/channels/local-spot-route-transport.d.ts +5 -2
  93. package/dist/runtime/channels/local-spot-route-transport.js +15 -18
  94. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +6 -3
  95. package/dist/runtime/channels/router-socket-spot-route-transport.js +33 -19
  96. package/dist/runtime/channels/source-spot-router.d.ts +6 -3
  97. package/dist/runtime/channels/source-spot-router.js +34 -23
  98. package/dist/runtime/channels/spot-node-route-transport.d.ts +6 -3
  99. package/dist/runtime/channels/spot-node-route-transport.js +23 -17
  100. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +6 -3
  101. package/dist/runtime/channels/spot-route-bridge-transport.js +38 -24
  102. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +8 -4
  103. package/dist/runtime/channels/spot-route-dispatch-strategy.js +36 -23
  104. package/dist/runtime/diagnostics/dispatch-error-details.js +9 -3
  105. package/dist/runtime/diagnostics/message-flow-bootstrap.d.ts +1 -0
  106. package/dist/runtime/diagnostics/message-flow-bootstrap.js +8 -0
  107. package/dist/runtime/diagnostics/message-flow-delivery.d.ts +47 -0
  108. package/dist/runtime/diagnostics/message-flow-delivery.js +149 -0
  109. package/dist/runtime/diagnostics/message-flow-record.d.ts +50 -0
  110. package/dist/runtime/diagnostics/message-flow-record.js +228 -0
  111. package/dist/runtime/diagnostics/message-flow-worker.d.ts +1 -0
  112. package/dist/runtime/diagnostics/message-flow-worker.js +118 -0
  113. package/dist/runtime/diagnostics/message-flow.d.ts +7 -19
  114. package/dist/runtime/diagnostics/message-flow.js +42 -290
  115. package/dist/runtime/diagnostics/runtime-metrics.d.ts +4 -3
  116. package/dist/runtime/diagnostics/runtime-metrics.js +8 -4
  117. package/dist/runtime/execution/index.d.ts +1 -0
  118. package/dist/runtime/execution/index.js +6 -3
  119. package/dist/runtime/execution/serial-execution-queue.d.ts +26 -13
  120. package/dist/runtime/execution/serial-execution-queue.js +75 -71
  121. package/dist/runtime/foundation/durable-service-request.d.ts +12 -3
  122. package/dist/runtime/foundation/durable-service-request.js +158 -73
  123. package/dist/runtime/foundation/operation-registry.d.ts +33 -3
  124. package/dist/runtime/foundation/operation-registry.js +272 -33
  125. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +62 -23
  126. package/dist/runtime/foundation/raw-service-mesh-runtime.js +373 -194
  127. package/dist/runtime/foundation/request-runtime.d.ts +17 -0
  128. package/dist/runtime/foundation/request-runtime.js +163 -0
  129. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  130. package/dist/runtime/foundation/service-discovery-registry.js +6 -0
  131. package/dist/runtime/foundation/service-liveness-registry.d.ts +1 -1
  132. package/dist/runtime/foundation/service-mailbox.d.ts +4 -2
  133. package/dist/runtime/foundation/service-mailbox.js +4 -1
  134. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +2 -2
  135. package/dist/runtime/foundation/service-relocation-object-owner.js +12 -5
  136. package/dist/runtime/foundation/service-runtime-contracts.d.ts +7 -2
  137. package/dist/runtime/foundation/service-stateful-registry.d.ts +6 -2
  138. package/dist/runtime/foundation/service-stateful-registry.js +38 -17
  139. package/dist/runtime/foundation/service-stateful-runtime.d.ts +91 -26
  140. package/dist/runtime/foundation/service-stateful-runtime.js +245 -120
  141. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -0
  142. package/dist/runtime/foundation/service-stateful-wire-codec.js +15 -0
  143. package/dist/runtime/foundation/service-topology-registry.d.ts +2 -0
  144. package/dist/runtime/foundation/service-topology-registry.js +13 -3
  145. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  146. package/dist/runtime/foundation/service-wire-constants.generated.js +12 -0
  147. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +5 -1
  148. package/dist/runtime/foundation/service-wire-m6a-codec.js +50 -15
  149. package/dist/runtime/host/actor-packet-relay.d.ts +5 -6
  150. package/dist/runtime/host/actor-packet-relay.js +58 -57
  151. package/dist/runtime/host/actor-placement-coordinator.d.ts +1 -1
  152. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  153. package/dist/runtime/host/actor-runtime-options-factory.js +3 -2
  154. package/dist/runtime/host/actor-transfer-runtime.d.ts +3 -3
  155. package/dist/runtime/host/application-job-queue.d.ts +7 -5
  156. package/dist/runtime/host/application-job-queue.js +33 -21
  157. package/dist/runtime/host/bound-session-relay.js +0 -1
  158. package/dist/runtime/host/channel-runtime-options-factory.d.ts +2 -0
  159. package/dist/runtime/host/channel-runtime-options-factory.js +1 -0
  160. package/dist/runtime/host/entry-actor-runtime.d.ts +5 -2
  161. package/dist/runtime/host/entry-actor-runtime.js +2 -2
  162. package/dist/runtime/host/index.d.ts +106 -37
  163. package/dist/runtime/host/index.js +303 -151
  164. package/dist/runtime/host/location-runtime-owner.d.ts +2 -2
  165. package/dist/runtime/host/location-runtime-owner.js +1 -1
  166. package/dist/runtime/host/service-relocation-host-runtime.d.ts +195 -45
  167. package/dist/runtime/host/service-relocation-host-runtime.js +257 -144
  168. package/dist/runtime/host/spot-address-transport.d.ts +3 -0
  169. package/dist/runtime/host/spot-address-transport.js +73 -76
  170. package/dist/runtime/host/spot-runtime-options-factory.js +2 -0
  171. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -1
  172. package/dist/runtime/host/user-spot-creation-coordinator.js +49 -21
  173. package/dist/runtime/internal-observation.d.ts +1 -0
  174. package/dist/runtime/internal-observation.js +5 -0
  175. package/dist/runtime/locations/actor-location-claims.d.ts +1 -1
  176. package/dist/runtime/locations/actor-location-claims.js +15 -6
  177. package/dist/runtime/locations/auto-connect-loop.d.ts +0 -1
  178. package/dist/runtime/locations/auto-connect-loop.js +25 -19
  179. package/dist/runtime/locations/auto-connect-planner.js +2 -5
  180. package/dist/runtime/locations/auto-connect-reconciler.d.ts +1 -0
  181. package/dist/runtime/locations/auto-connect-reconciler.js +35 -23
  182. package/dist/runtime/locations/in-memory-authority-store.d.ts +1 -0
  183. package/dist/runtime/locations/in-memory-authority-store.js +15 -5
  184. package/dist/runtime/locations/in-memory-location-store.d.ts +0 -2
  185. package/dist/runtime/locations/in-memory-location-store.js +1 -38
  186. package/dist/runtime/locations/lifecycle.d.ts +1 -1
  187. package/dist/runtime/locations/lifecycle.js +2 -2
  188. package/dist/runtime/locations/location-store-repository.d.ts +0 -1
  189. package/dist/runtime/locations/location-store-repository.js +163 -246
  190. package/dist/runtime/locations/resolvers.d.ts +8 -1
  191. package/dist/runtime/locations/resolvers.js +16 -2
  192. package/dist/runtime/locations/runtime.d.ts +3 -3
  193. package/dist/runtime/locations/runtime.js +12 -16
  194. package/dist/runtime/messaging/creation-payload-codec.js +8 -7
  195. package/dist/runtime/messaging/framework-json-v1.d.ts +1 -1
  196. package/dist/runtime/messaging/framework-json-v1.js +6 -2
  197. package/dist/runtime/messaging/payload-codec.js +21 -35
  198. package/dist/runtime/messaging/request-deadline.d.ts +4 -2
  199. package/dist/runtime/messaging/request-deadline.js +40 -25
  200. package/dist/runtime/messaging/request-result.d.ts +14 -1
  201. package/dist/runtime/messaging/request-result.js +74 -13
  202. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +4 -0
  203. package/dist/runtime/protocol/service_wire_codec.generated.js +17 -7
  204. package/dist/runtime/spots/index.d.ts +28 -7
  205. package/dist/runtime/spots/index.js +31 -6
  206. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -2
  207. package/dist/runtime/spots/spot-activation-registry.js +13 -8
  208. package/dist/runtime/spots/spot-activation-state.d.ts +2 -0
  209. package/dist/runtime/spots/spot-activation-state.js +1 -0
  210. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +9 -4
  211. package/dist/runtime/spots/spot-actor-admission-coordinator.js +33 -12
  212. package/dist/runtime/spots/spot-actor-ingress-admission.d.ts +40 -0
  213. package/dist/runtime/spots/spot-actor-ingress-admission.js +78 -0
  214. package/dist/runtime/spots/spot-actor-membership.js +3 -3
  215. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +16 -43
  216. package/dist/runtime/spots/spot-actor-packet-dispatch.js +56 -113
  217. package/dist/runtime/spots/spot-actor-packet-drain.d.ts +1 -0
  218. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -5
  219. package/dist/runtime/spots/spot-entry-activation.d.ts +4 -3
  220. package/dist/runtime/spots/spot-entry-activation.js +7 -12
  221. package/dist/runtime/spots/spot-handler-registry.d.ts +5 -1
  222. package/dist/runtime/spots/spot-handler-registry.js +31 -15
  223. package/dist/runtime/spots/spot-manager-public.js +3 -2
  224. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +11 -6
  225. package/dist/runtime/spots/spot-node-runtime-manager.js +6 -1
  226. package/dist/runtime/spots/spot-outbound.d.ts +8 -2
  227. package/dist/runtime/spots/spot-outbound.js +5 -5
  228. package/dist/runtime/spots/spot-route-packet-dispatch.js +13 -8
  229. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +3 -3
  230. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +9 -5
  231. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -2
  232. package/dist/runtime/spots/spot-serial-executor.d.ts +2 -1
  233. package/dist/runtime/spots/spot-serial-turn-executor.js +20 -26
  234. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -2
  235. package/dist/runtime/spots/spot-timer.d.ts +1 -1
  236. package/dist/runtime/streams/actor-session-binding-registry.d.ts +11 -3
  237. package/dist/runtime/streams/actor-session-binding-registry.js +28 -0
  238. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -2
  239. package/dist/runtime/streams/bound-actor-relay-sender.js +3 -4
  240. package/dist/runtime/streams/bound-session-service.js +6 -7
  241. package/dist/runtime/streams/index.d.ts +3 -3
  242. package/dist/runtime/streams/index.js +22 -2
  243. package/dist/runtime/streams/managed-stream.js +2 -1
  244. package/dist/runtime/streams/session-calls.d.ts +1 -1
  245. package/dist/runtime/streams/session-calls.js +3 -9
  246. package/dist/runtime/streams/session-context.d.ts +2 -2
  247. package/dist/runtime/streams/session-context.js +2 -2
  248. package/dist/runtime/streams/stream-session-runtime.d.ts +1 -0
  249. package/dist/runtime/streams/stream-session-runtime.js +64 -33
  250. package/package.json +3 -3
  251. package/src/contracts/Actors/ZLinkActor.ts +6 -0
  252. package/src/contracts/Actors/ZLinkSessionBindingIdentity.ts +7 -0
  253. package/src/contracts/Actors/index.ts +1 -0
  254. package/src/contracts/Common/CoreTypes.ts +1 -0
  255. package/src/contracts/Common/HandlerMessageType.ts +50 -0
  256. package/src/contracts/Common/ZLinkEncodedPayload.ts +13 -25
  257. package/src/contracts/Common/ZLinkMessage.ts +11 -7
  258. package/src/contracts/Common/encoded-payload-storage.ts +4 -16
  259. package/src/contracts/Common/index.ts +1 -1
  260. package/src/contracts/Common/payload-slab.ts +29 -0
  261. package/src/contracts/Configuration/RegistrationBuilders.ts +29 -15
  262. package/src/contracts/Configuration/RegistrationTypes.ts +19 -0
  263. package/src/contracts/Handlers/Contexts.ts +1 -0
  264. package/src/contracts/Locations/Authority.ts +7 -1
  265. package/src/internal.ts +17 -0
  266. package/src/nest-integration.ts +1 -0
  267. package/src/runtime/actors/actor-client.ts +257 -163
  268. package/src/runtime/actors/actor-context.ts +26 -14
  269. package/src/runtime/actors/actor-execution-context.ts +2 -2
  270. package/src/runtime/actors/actor-handoff.ts +86 -51
  271. package/src/runtime/actors/actor-join-deferred-scope.ts +6 -6
  272. package/src/runtime/actors/actor-local-native-join.ts +38 -17
  273. package/src/runtime/actors/actor-mailbox.ts +1 -1
  274. package/src/runtime/actors/actor-remote-joiner.ts +8 -4
  275. package/src/runtime/actors/actor-routed-join-transport.ts +13 -5
  276. package/src/runtime/actors/actor-routed-json-request.ts +3 -0
  277. package/src/runtime/actors/actor-runtime-contracts.ts +4 -2
  278. package/src/runtime/actors/actor-runtime-state.ts +1 -1
  279. package/src/runtime/actors/spot-actor-dispatch.ts +70 -68
  280. package/src/runtime/admission.ts +42 -15
  281. package/src/runtime/application-jobs/application-ingress-record-owner.ts +4 -0
  282. package/src/runtime/backend/contracts/index.ts +77 -10
  283. package/src/runtime/backend/mesh-completion-table.ts +106 -15
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +294 -146
  285. package/src/runtime/backend/node/node-backend-adapter-support.ts +42 -32
  286. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +91 -34
  287. package/src/runtime/backend/node/node-event-loop-poller.ts +14 -5
  288. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +5 -1
  289. package/src/runtime/backend/node/node-raw-binding-port.ts +180 -69
  290. package/src/runtime/backend/node/node-raw-mesh-backend.ts +386 -157
  291. package/src/runtime/backend/node/node-socket-backend-adapter.ts +56 -11
  292. package/src/runtime/backend/raw-binding-port.ts +13 -5
  293. package/src/runtime/channels/channel-clients.ts +26 -11
  294. package/src/runtime/channels/channel-dispatch-pipeline.ts +77 -65
  295. package/src/runtime/channels/channel-dispatch-services.ts +7 -12
  296. package/src/runtime/channels/channel-dispatchers.ts +93 -39
  297. package/src/runtime/channels/channel-envelope.ts +680 -144
  298. package/src/runtime/channels/channel-multipart.ts +17 -13
  299. package/src/runtime/channels/channel-outbound-operations.ts +204 -178
  300. package/src/runtime/channels/channel-receive-loops.ts +160 -107
  301. package/src/runtime/channels/channel-runtime-lifecycle.ts +64 -59
  302. package/src/runtime/channels/channel-runtime-manager.ts +74 -27
  303. package/src/runtime/channels/channel-socket-registry.ts +20 -5
  304. package/src/runtime/channels/channel-transports.ts +414 -287
  305. package/src/runtime/channels/dispatch-error-reporter.ts +4 -9
  306. package/src/runtime/channels/local-spot-route-transport.ts +27 -29
  307. package/src/runtime/channels/router-socket-spot-route-transport.ts +63 -32
  308. package/src/runtime/channels/source-spot-router.ts +75 -38
  309. package/src/runtime/channels/spot-node-route-transport.ts +67 -37
  310. package/src/runtime/channels/spot-route-bridge-transport.ts +62 -30
  311. package/src/runtime/channels/spot-route-dispatch-strategy.ts +105 -34
  312. package/src/runtime/diagnostics/dispatch-error-details.ts +10 -2
  313. package/src/runtime/diagnostics/message-flow-bootstrap.ts +6 -0
  314. package/src/runtime/diagnostics/message-flow-delivery.ts +171 -0
  315. package/src/runtime/diagnostics/message-flow-record.ts +295 -0
  316. package/src/runtime/diagnostics/message-flow-worker.ts +146 -0
  317. package/src/runtime/diagnostics/message-flow.ts +49 -362
  318. package/src/runtime/diagnostics/runtime-metrics.ts +10 -4
  319. package/src/runtime/execution/index.ts +6 -0
  320. package/src/runtime/execution/serial-execution-queue.ts +94 -96
  321. package/src/runtime/foundation/durable-service-request.ts +212 -89
  322. package/src/runtime/foundation/operation-registry.ts +287 -38
  323. package/src/runtime/foundation/raw-service-mesh-runtime.ts +617 -292
  324. package/src/runtime/foundation/request-runtime.ts +227 -0
  325. package/src/runtime/foundation/service-discovery-registry.ts +7 -0
  326. package/src/runtime/foundation/service-liveness-registry.ts +1 -1
  327. package/src/runtime/foundation/service-mailbox.ts +7 -2
  328. package/src/runtime/foundation/service-relocation-object-owner.ts +21 -6
  329. package/src/runtime/foundation/service-runtime-contracts.ts +12 -2
  330. package/src/runtime/foundation/service-stateful-registry.ts +52 -19
  331. package/src/runtime/foundation/service-stateful-runtime.ts +365 -198
  332. package/src/runtime/foundation/service-stateful-wire-codec.ts +18 -0
  333. package/src/runtime/foundation/service-topology-registry.ts +21 -3
  334. package/src/runtime/foundation/service-wire-constants.generated.ts +10 -0
  335. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -17
  336. package/src/runtime/host/actor-packet-relay.ts +160 -156
  337. package/src/runtime/host/actor-placement-coordinator.ts +1 -1
  338. package/src/runtime/host/actor-runtime-options-factory.ts +7 -2
  339. package/src/runtime/host/actor-transfer-runtime.ts +3 -3
  340. package/src/runtime/host/application-job-queue.ts +56 -27
  341. package/src/runtime/host/bound-session-relay.ts +0 -1
  342. package/src/runtime/host/channel-runtime-options-factory.ts +3 -0
  343. package/src/runtime/host/entry-actor-runtime.ts +14 -6
  344. package/src/runtime/host/index.ts +388 -113
  345. package/src/runtime/host/location-runtime-owner.ts +3 -3
  346. package/src/runtime/host/service-relocation-host-runtime.ts +380 -252
  347. package/src/runtime/host/spot-address-transport.ts +110 -95
  348. package/src/runtime/host/spot-runtime-options-factory.ts +3 -0
  349. package/src/runtime/host/user-spot-creation-coordinator.ts +69 -22
  350. package/src/runtime/internal-observation.ts +2 -0
  351. package/src/runtime/locations/actor-location-claims.ts +42 -16
  352. package/src/runtime/locations/auto-connect-loop.ts +24 -16
  353. package/src/runtime/locations/auto-connect-planner.ts +2 -5
  354. package/src/runtime/locations/auto-connect-reconciler.ts +37 -24
  355. package/src/runtime/locations/in-memory-authority-store.ts +27 -7
  356. package/src/runtime/locations/in-memory-location-store.ts +1 -74
  357. package/src/runtime/locations/lifecycle.ts +4 -2
  358. package/src/runtime/locations/location-store-repository.ts +228 -308
  359. package/src/runtime/locations/resolvers.ts +20 -8
  360. package/src/runtime/locations/runtime.ts +16 -28
  361. package/src/runtime/messaging/creation-payload-codec.ts +12 -10
  362. package/src/runtime/messaging/framework-json-v1.ts +10 -1
  363. package/src/runtime/messaging/payload-codec.ts +50 -75
  364. package/src/runtime/messaging/request-deadline.ts +47 -39
  365. package/src/runtime/messaging/request-result.ts +88 -17
  366. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  367. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  368. package/src/runtime/spots/index.ts +57 -10
  369. package/src/runtime/spots/spot-activation-registry.ts +12 -8
  370. package/src/runtime/spots/spot-activation-state.ts +2 -0
  371. package/src/runtime/spots/spot-actor-admission-coordinator.ts +62 -37
  372. package/src/runtime/spots/spot-actor-ingress-admission.ts +157 -0
  373. package/src/runtime/spots/spot-actor-membership.ts +8 -5
  374. package/src/runtime/spots/spot-actor-packet-dispatch.ts +122 -206
  375. package/src/runtime/spots/spot-actor-packet-drain.ts +21 -6
  376. package/src/runtime/spots/spot-entry-activation.ts +25 -35
  377. package/src/runtime/spots/spot-handler-registry.ts +72 -15
  378. package/src/runtime/spots/spot-manager-public.ts +4 -2
  379. package/src/runtime/spots/spot-node-runtime-manager.ts +16 -7
  380. package/src/runtime/spots/spot-outbound.ts +26 -10
  381. package/src/runtime/spots/spot-route-packet-dispatch.ts +18 -8
  382. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +14 -8
  383. package/src/runtime/spots/spot-runtime-ports.ts +5 -2
  384. package/src/runtime/spots/spot-serial-executor.ts +1 -1
  385. package/src/runtime/spots/spot-serial-turn-executor.ts +25 -40
  386. package/src/runtime/spots/spot-subscription-dispatch.ts +9 -2
  387. package/src/runtime/spots/spot-timer.ts +1 -1
  388. package/src/runtime/streams/actor-session-binding-registry.ts +46 -3
  389. package/src/runtime/streams/bound-actor-relay-sender.ts +16 -5
  390. package/src/runtime/streams/bound-session-service.ts +10 -7
  391. package/src/runtime/streams/index.ts +30 -4
  392. package/src/runtime/streams/managed-stream.ts +2 -1
  393. package/src/runtime/streams/session-calls.ts +9 -14
  394. package/src/runtime/streams/session-context.ts +6 -11
  395. package/src/runtime/streams/stream-session-runtime.ts +79 -40
  396. package/dist/runtime/spots/spot-lifecycle-metrics.d.ts +0 -8
  397. package/dist/runtime/spots/spot-lifecycle-metrics.js +0 -17
  398. package/src/runtime/spots/spot-lifecycle-metrics.ts +0 -16
@@ -72,9 +72,9 @@ interface ZLinkSerialAdmissionLane {
72
72
  * Application work carries the host permit through the queue until the handler starts.
73
73
  */
74
74
  export class ZLinkSerialExecutionQueue {
75
- private readonly application: ZLinkSerialAdmissionLane;
76
- private readonly lifecycle: ZLinkSerialAdmissionLane;
77
- private activeLifecycle?: ZLinkSerialWorkRecord<unknown>;
75
+ readonly application: ZLinkSerialAdmissionLane;
76
+ readonly lifecycle: ZLinkSerialAdmissionLane;
77
+ activeLifecycle?: ZLinkSerialWorkRecord<unknown>;
78
78
  private activeRecord?: ZLinkSerialWorkRecord<unknown>;
79
79
  /** The admitted node itself owns ready membership; no second readiness flag. */
80
80
  private ownerMembership?: SerialWorkRecord<unknown>;
@@ -86,10 +86,10 @@ export class ZLinkSerialExecutionQueue {
86
86
  private lifecycleDebt = false;
87
87
  private claimStartedAt?: number;
88
88
  private closed = false;
89
- private readonly idleWaiters: Array<() => void> = [];
89
+ readonly idleWaiters: Array<() => void> = [];
90
90
 
91
91
  constructor(
92
- private readonly executeRecord: (record: ZLinkSerialWorkRecord<unknown>) => Promise<void>,
92
+ readonly executeRecord: (record: ZLinkSerialWorkRecord<unknown>) => Promise<void>,
93
93
  options: ZLinkSerialSchedulerOptions = {},
94
94
  private readonly sharedOwner?: ZLinkSerialExecutionQueue
95
95
  ) {
@@ -105,7 +105,7 @@ export class ZLinkSerialExecutionQueue {
105
105
 
106
106
  submit<T>(
107
107
  operation: () => Promise<T> | T,
108
- options: ZLinkSerialWorkOptions = {},
108
+ options?: ZLinkSerialWorkOptions,
109
109
  context?: unknown
110
110
  ): Promise<T> {
111
111
  try {
@@ -118,7 +118,7 @@ export class ZLinkSerialExecutionQueue {
118
118
  submitDetached<T>(
119
119
  operation: () => Promise<T> | T,
120
120
  onError: (error: unknown) => void,
121
- options: ZLinkSerialWorkOptions = {},
121
+ options?: ZLinkSerialWorkOptions,
122
122
  context?: unknown
123
123
  ): void {
124
124
  void this.submit(operation, options, context).catch(onError);
@@ -129,7 +129,7 @@ export class ZLinkSerialExecutionQueue {
129
129
  */
130
130
  submitContinuation<T>(operation: () => Promise<T> | T, context?: unknown): Promise<T> {
131
131
  try {
132
- return this.admit(operation, { lane: 'application' }, context);
132
+ return this.admit(operation, undefined, context);
133
133
  } catch (error) {
134
134
  return Promise.reject(error);
135
135
  }
@@ -143,7 +143,7 @@ export class ZLinkSerialExecutionQueue {
143
143
  */
144
144
  admitDurablePrefix<T>(
145
145
  operation: () => Promise<T> | T,
146
- options: ZLinkSerialWorkOptions = {},
146
+ options?: ZLinkSerialWorkOptions,
147
147
  context?: unknown,
148
148
  preparation?: ZLinkSerialWorkPreparation
149
149
  ): Promise<T> {
@@ -156,7 +156,7 @@ export class ZLinkSerialExecutionQueue {
156
156
  */
157
157
  submitPreAdmitted<T>(
158
158
  operation: () => Promise<T> | T,
159
- options: ZLinkSerialWorkOptions = {},
159
+ options?: ZLinkSerialWorkOptions,
160
160
  context?: unknown
161
161
  ): Promise<T> {
162
162
  return this.admit(operation, options, context);
@@ -175,7 +175,8 @@ export class ZLinkSerialExecutionQueue {
175
175
  }
176
176
 
177
177
  visitPendingApplication(visitor: (record: ZLinkSerialWorkRecord<unknown>) => void): void {
178
- for (const record of this.application.records) {
178
+ for (let index = 0; index < this.application.records.length; index++) {
179
+ const record = this.application.records[index]!;
179
180
  if (record.mailbox === undefined) visitor(record);
180
181
  }
181
182
  }
@@ -216,17 +217,16 @@ export class ZLinkSerialExecutionQueue {
216
217
  return this.closed;
217
218
  }
218
219
 
219
- private admit<T>(
220
+ admit<T>(
220
221
  operation: () => Promise<T> | T,
221
- options: ZLinkSerialWorkOptions,
222
+ options: ZLinkSerialWorkOptions | undefined,
222
223
  context?: unknown,
223
224
  preparation?: ZLinkSerialWorkPreparation,
224
225
  operationEnvelope = false
225
226
  ): Promise<T> {
226
227
  if (this.closed) throw new Error('The serial execution queue is closed.');
227
- const lane = options.lane ?? 'application';
228
+ const lane = options?.lane ?? 'application';
228
229
  const target = lane === 'application' ? this.application : this.lifecycle;
229
- let settled = false;
230
230
  let released = false;
231
231
  let resolveResult!: (value: T | PromiseLike<T>) => void;
232
232
  let rejectResult!: (reason?: unknown) => void;
@@ -246,16 +246,6 @@ export class ZLinkSerialExecutionQueue {
246
246
  }
247
247
  }
248
248
  };
249
- const resolve = (value: T): void => {
250
- if (settled) return;
251
- settled = true;
252
- resolveResult(value);
253
- };
254
- const reject = (reason: unknown): void => {
255
- if (settled) return;
256
- settled = true;
257
- rejectResult(reason);
258
- };
259
249
  const record: SerialWorkRecord<T> = {
260
250
  acceptedSequence: 0n,
261
251
  lane,
@@ -264,11 +254,11 @@ export class ZLinkSerialExecutionQueue {
264
254
  context,
265
255
  preparation,
266
256
  preparationState: preparation === undefined ? 'ready' : 'idle',
267
- resolve,
268
- reject,
257
+ resolve: resolveResult,
258
+ reject: rejectResult,
269
259
  release,
270
260
  fail: (reason) => {
271
- reject(reason);
261
+ rejectResult(reason);
272
262
  release();
273
263
  }
274
264
  };
@@ -283,16 +273,17 @@ export class ZLinkSerialExecutionQueue {
283
273
  release();
284
274
  throw error;
285
275
  }
286
- options.onAdmitted?.();
287
- options.onWithdrawable?.(() => {
276
+ options?.onAdmitted?.();
277
+ options?.onWithdrawable?.(() => {
288
278
  const index = target.records.indexOf(record as SerialWorkRecord<unknown>);
289
279
  if (index < 0) return false;
290
- target.records.splice(index, 1);
280
+ target.records.copyWithin(index, index + 1);
281
+ target.records.length -= 1;
291
282
  record.preparationController?.abort(
292
283
  new Error('Durable record transferred to another handoff.')
293
284
  );
294
285
  record.preparation?.cancel();
295
- resolve(undefined as T);
286
+ resolveResult(undefined as T);
296
287
  release();
297
288
  return true;
298
289
  });
@@ -300,27 +291,36 @@ export class ZLinkSerialExecutionQueue {
300
291
  return result;
301
292
  }
302
293
 
303
- private scheduleDrain(): void {
294
+ scheduleDrain(): void {
304
295
  if (this.sharedOwner !== undefined) {
305
296
  if (this.activeRecord !== undefined) return;
306
297
  // Ready membership in the existing owner queue is the only notification state.
307
298
  if (this.ownerMembership !== undefined) return;
308
- this.enqueueMailboxTurn(() => this.consumeMailbox());
299
+ {
300
+ // Block-scoped captures keep early returns free of a V8 function context.
301
+ const mailbox = this;
302
+ mailbox.enqueueMailboxTurn(() => mailbox.consumeMailbox());
303
+ }
309
304
  return;
310
305
  }
311
306
  const consumer = this.consumer!;
312
307
  if (consumer.scheduled || consumer.running) return;
313
- consumer.scheduled = true;
314
- startOutsideStateLane(() =>
315
- queueMicrotask(() => {
316
- consumer.scheduled = false;
317
- void this.drain();
318
- })
319
- );
308
+ {
309
+ // Same block-scoped capture as the mailbox branch above.
310
+ const queue = this;
311
+ const scheduledConsumer = consumer;
312
+ scheduledConsumer.scheduled = true;
313
+ startOutsideStateLane(() =>
314
+ queueMicrotask(() => {
315
+ scheduledConsumer.scheduled = false;
316
+ void queue.drain();
317
+ })
318
+ );
319
+ }
320
320
  }
321
321
 
322
322
  /** Notifications carry no payload, admission sequence, result Promise, or host permit. */
323
- private enqueueMailboxTurn(operation: () => void): void {
323
+ enqueueMailboxTurn(operation: () => void): void {
324
324
  const entry: SerialWorkRecord<unknown> = {
325
325
  acceptedSequence: 0n,
326
326
  lane: 'application',
@@ -341,14 +341,13 @@ export class ZLinkSerialExecutionQueue {
341
341
 
342
342
  /** Called only by the shared scheduler's consumer, never by a producer. */
343
343
  private consumeMailbox(): void {
344
- const selection = this.selectNext();
345
- if (selection === undefined) {
344
+ const record = this.selectNext();
345
+ if (record === undefined) {
346
346
  if (!this.hasPendingWork) this.resolveIdleWaiters();
347
347
  return;
348
348
  }
349
- const record = selection.record;
350
- if (!this.prepareSelected(selection)) return;
351
- this.takeSelected(selection);
349
+ if (!this.prepareSelected(record)) return;
350
+ this.takeSelected(record);
352
351
  if (record.preparationState === 'failed') {
353
352
  record.preparation?.cancel();
354
353
  record.fail(record.preparationError);
@@ -365,14 +364,18 @@ export class ZLinkSerialExecutionQueue {
365
364
  terminal = Promise.reject(error);
366
365
  }
367
366
  void terminal.then(
368
- (value) => this.finishMailbox(record, () => record.resolve(value)),
369
- (error) => this.finishMailbox(record, () => record.reject(error))
367
+ (value) => this.finishMailbox(record, record.resolve, value),
368
+ (error) => this.finishMailbox(record, record.reject, error)
370
369
  );
371
370
  }
372
371
 
373
- private finishMailbox(record: SerialWorkRecord<unknown>, settle: () => void): void {
372
+ private finishMailbox(
373
+ record: SerialWorkRecord<unknown>,
374
+ settle: (value: unknown) => void,
375
+ value: unknown
376
+ ): void {
374
377
  this.enqueueMailboxTurn(() => {
375
- settle();
378
+ settle(value);
376
379
  record.release();
377
380
  record.preparation?.cancel();
378
381
  this.activeRecord = undefined;
@@ -381,21 +384,20 @@ export class ZLinkSerialExecutionQueue {
381
384
  });
382
385
  }
383
386
 
384
- private async drain(): Promise<void> {
387
+ async drain(): Promise<void> {
385
388
  const consumer = this.consumer!;
386
389
  if (consumer.running) return;
387
390
  consumer.running = true;
388
391
  let waitingForPreparation = false;
389
392
  try {
390
393
  for (;;) {
391
- const selection = this.selectNext();
392
- if (selection === undefined) break;
393
- const record = selection.record;
394
- if (!this.prepareSelected(selection)) {
394
+ const record = this.selectNext();
395
+ if (record === undefined) break;
396
+ if (!this.prepareSelected(record)) {
395
397
  waitingForPreparation = true;
396
398
  break;
397
399
  }
398
- this.takeSelected(selection);
400
+ this.takeSelected(record);
399
401
  if (record.preparationState === 'failed') {
400
402
  record.preparation?.cancel();
401
403
  record.fail(record.preparationError);
@@ -448,60 +450,51 @@ export class ZLinkSerialExecutionQueue {
448
450
  }
449
451
  }
450
452
 
451
- private prepareSelected(selection: {
452
- readonly lane: ZLinkSerialWorkLane;
453
- readonly record: SerialWorkRecord<unknown>;
454
- }): boolean {
453
+ private prepareSelected(record: SerialWorkRecord<unknown>): boolean {
455
454
  if (
456
- selection.lane === 'lifecycle' &&
455
+ record.lane === 'lifecycle' &&
457
456
  this.application.records.length > 0 &&
458
457
  !this.cancelPreparationForRearbitration(this.application.records[0]!)
459
458
  )
460
459
  return false;
461
- const record = selection.record;
462
460
  if (record.preparationState === 'idle') this.startPreparation(record);
463
461
  return record.preparationState !== 'pending' && record.preparationState !== 'canceling';
464
462
  }
465
463
 
466
- private selectNext():
467
- | {
468
- readonly lane: ZLinkSerialWorkLane;
469
- readonly record: SerialWorkRecord<unknown>;
470
- }
471
- | undefined {
464
+ selectNext(): SerialWorkRecord<unknown> | undefined {
472
465
  const lifecycleOwner = this.activeLifecycle?.context as ZLinkSerialLifecycleContext | undefined;
473
- const applicationRecord =
474
- lifecycleOwner === undefined
475
- ? this.application.records[0]
476
- : this.application.records.find((record) => lifecycleOwner.canExecuteApplication(record));
466
+ let applicationRecord: SerialWorkRecord<unknown> | undefined;
467
+ if (lifecycleOwner === undefined) {
468
+ applicationRecord = this.application.records[0];
469
+ } else {
470
+ // Capture only inside the lifecycle branch; the common path allocates no context.
471
+ const owner = lifecycleOwner;
472
+ applicationRecord = this.application.records.find((record) =>
473
+ owner.canExecuteApplication(record)
474
+ );
475
+ }
477
476
  const applicationReady = applicationRecord !== undefined;
478
477
  const lifecycleReady = this.activeLifecycle === undefined && this.lifecycle.records.length > 0;
479
478
  if (!applicationReady && !lifecycleReady) return undefined;
480
479
  if (!applicationReady) {
481
- return { lane: 'lifecycle', record: this.lifecycle.records[0]! };
480
+ return this.lifecycle.records[0]!;
482
481
  }
483
482
  if (!lifecycleReady) {
484
- return { lane: 'application', record: applicationRecord! };
483
+ return applicationRecord!;
485
484
  }
486
485
  if (!this.lifecycleDebt && this.lifecycleStreak < this.lifecycleBurstLimit) {
487
- return { lane: 'lifecycle', record: this.lifecycle.records[0]! };
486
+ return this.lifecycle.records[0]!;
488
487
  }
489
- return { lane: 'application', record: applicationRecord! };
488
+ return applicationRecord!;
490
489
  }
491
490
 
492
- private takeSelected(selection: {
493
- readonly lane: ZLinkSerialWorkLane;
494
- readonly record: SerialWorkRecord<unknown>;
495
- }): ZLinkSerialWorkRecord<unknown> {
491
+ takeSelected(selected: SerialWorkRecord<unknown>): ZLinkSerialWorkRecord<unknown> {
496
492
  const record =
497
- selection.lane === 'lifecycle'
498
- ? this.takeLifecycle()
499
- : this.takeApplication(selection.record);
500
- if (record !== selection.record) {
493
+ selected.lane === 'lifecycle' ? this.takeLifecycle() : this.takeApplication(selected);
494
+ if (record !== selected) {
501
495
  throw new Error('The selected serial work record changed before owner claim.');
502
496
  }
503
- if (selection.record.mailbox !== undefined)
504
- selection.record.mailbox.ownerMembership = undefined;
497
+ if (selected.mailbox !== undefined) selected.mailbox.ownerMembership = undefined;
505
498
  return record;
506
499
  }
507
500
 
@@ -515,12 +508,16 @@ export class ZLinkSerialExecutionQueue {
515
508
  return record;
516
509
  }
517
510
 
518
- private takeApplication(selected: SerialWorkRecord<unknown>): ZLinkSerialWorkRecord<unknown> {
511
+ takeApplication(selected: SerialWorkRecord<unknown>): ZLinkSerialWorkRecord<unknown> {
519
512
  this.lifecycleStreak = 0;
520
513
  this.lifecycleDebt = false;
521
514
  if (this.application.records[0] === selected) return this.application.records.shift()!;
522
515
  const index = this.application.records.indexOf(selected);
523
- return this.application.records.splice(index, 1)[0]!;
516
+ // A missing record (index -1) still reaches the owner-claim fence in takeSelected.
517
+ const record = this.application.records.at(index)!;
518
+ this.application.records.copyWithin(index, index + 1);
519
+ this.application.records.length = Math.max(0, this.application.records.length - 1);
520
+ return record;
524
521
  }
525
522
 
526
523
  private startPreparation(record: SerialWorkRecord<unknown>): void {
@@ -580,8 +577,9 @@ export class ZLinkSerialExecutionQueue {
580
577
  return performance.now() - (this.claimStartedAt ?? performance.now()) >= this.ownerTimeBudget;
581
578
  }
582
579
 
583
- private resolveIdleWaiters(): void {
584
- for (const resolve of this.idleWaiters.splice(0)) resolve();
580
+ resolveIdleWaiters(): void {
581
+ for (let index = 0; index < this.idleWaiters.length; index++) this.idleWaiters[index]!();
582
+ this.idleWaiters.length = 0;
585
583
  }
586
584
  }
587
585
 
@@ -590,13 +588,13 @@ if (isStructuralGuardEnabled()) {
590
588
  ZLinkSerialExecutionQueue.prototype.submit = function <T>(
591
589
  this: ZLinkSerialExecutionQueue,
592
590
  operation: () => Promise<T> | T,
593
- options: ZLinkSerialWorkOptions = {},
591
+ options?: ZLinkSerialWorkOptions,
594
592
  context?: unknown
595
593
  ): Promise<T> {
596
594
  return guardStateLaneCompletion(
597
595
  trackDiagnosticCompletion(
598
596
  submit.call(this, operation, options, context) as Promise<T>,
599
- `serial ${options.lane ?? 'application'} ${diagnosticWorkName(operation)}`
597
+ `serial ${options?.lane ?? 'application'} ${diagnosticWorkName(operation)}`
600
598
  ),
601
599
  'serial completion'
602
600
  );
@@ -606,13 +604,13 @@ if (isStructuralGuardEnabled()) {
606
604
  ZLinkSerialExecutionQueue.prototype.submitPreAdmitted = function <T>(
607
605
  this: ZLinkSerialExecutionQueue,
608
606
  operation: () => Promise<T> | T,
609
- options: ZLinkSerialWorkOptions = {},
607
+ options?: ZLinkSerialWorkOptions,
610
608
  context?: unknown
611
609
  ): Promise<T> {
612
610
  return guardStateLaneCompletion(
613
611
  trackDiagnosticCompletion(
614
612
  submitPreAdmitted.call(this, operation, options, context) as Promise<T>,
615
- `serial ${options.lane ?? 'application'} ${diagnosticWorkName(operation)}`
613
+ `serial ${options?.lane ?? 'application'} ${diagnosticWorkName(operation)}`
616
614
  ),
617
615
  'serial completion'
618
616
  );
@@ -637,7 +635,7 @@ if (isStructuralGuardEnabled()) {
637
635
  ZLinkSerialExecutionQueue.prototype.admitDurablePrefix = function <T>(
638
636
  this: ZLinkSerialExecutionQueue,
639
637
  operation: () => Promise<T> | T,
640
- options: ZLinkSerialWorkOptions = {},
638
+ options?: ZLinkSerialWorkOptions,
641
639
  context?: unknown,
642
640
  preparation?: ZLinkSerialWorkPreparation
643
641
  ): Promise<T> {