@zlink-systems/framework 0.27.0 → 0.28.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 (121) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  5. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  6. package/dist/contracts/Configuration/RegistrationTypes.d.ts +0 -5
  7. package/dist/contracts/Configuration/RegistrationValidators.js +0 -2
  8. package/dist/contracts/Spots/Contracts.d.ts +1 -1
  9. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  10. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  11. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  12. package/dist/runtime/actors/actor-client.js +7 -10
  13. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -3
  14. package/dist/runtime/actors/actor-request-deadline.js +4 -29
  15. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  16. package/dist/runtime/backend/contracts/index.d.ts +1 -4
  17. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -0
  18. package/dist/runtime/backend/node/node-backend-adapter-support.js +35 -4
  19. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  20. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  21. package/dist/runtime/backend/node/node-raw-binding-port.js +10 -27
  22. package/dist/runtime/backend/node/node-socket-backend-adapter.js +1 -1
  23. package/dist/runtime/channels/channel-clients.js +8 -10
  24. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  25. package/dist/runtime/channels/channel-envelope.js +4 -10
  26. package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
  27. package/dist/runtime/channels/channel-outbound-operations.js +20 -36
  28. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  29. package/dist/runtime/channels/channel-runtime-manager.js +8 -8
  30. package/dist/runtime/channels/channel-socket-options.js +0 -10
  31. package/dist/runtime/channels/channel-socket-registry.d.ts +1 -1
  32. package/dist/runtime/channels/channel-socket-registry.js +3 -14
  33. package/dist/runtime/channels/channel-transports.d.ts +10 -14
  34. package/dist/runtime/channels/channel-transports.js +11 -14
  35. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  36. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  37. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  38. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  39. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  40. package/dist/runtime/channels/source-spot-router.js +2 -4
  41. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  42. package/dist/runtime/channels/spot-node-route-transport.js +2 -3
  43. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  44. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  45. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  46. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  47. package/dist/runtime/foundation/raw-service-mesh-runtime.js +17 -11
  48. package/dist/runtime/host/actor-packet-relay.d.ts +2 -2
  49. package/dist/runtime/host/actor-packet-relay.js +8 -10
  50. package/dist/runtime/host/index.js +1 -15
  51. package/dist/runtime/host/remote-bound-session-relay.js +8 -8
  52. package/dist/runtime/host/spot-address-transport.d.ts +1 -9
  53. package/dist/runtime/host/spot-address-transport.js +46 -86
  54. package/dist/runtime/locations/location-store-repository.js +6 -4
  55. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  56. package/dist/runtime/messaging/request-deadline.js +39 -0
  57. package/dist/runtime/messaging/submission-result.d.ts +2 -1
  58. package/dist/runtime/messaging/submission-result.js +11 -4
  59. package/dist/runtime/spots/spot-outbound.d.ts +3 -5
  60. package/dist/runtime/spots/spot-outbound.js +12 -15
  61. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -2
  62. package/dist/runtime/streams/bound-actor-relay-sender.js +14 -14
  63. package/dist/runtime/streams/bound-session-service.js +1 -1
  64. package/dist/runtime/streams/index.d.ts +2 -2
  65. package/dist/runtime/streams/index.js +2 -2
  66. package/dist/runtime/streams/managed-stream.d.ts +2 -2
  67. package/dist/runtime/streams/managed-stream.js +3 -5
  68. package/dist/runtime/streams/native-fallback-bound-session.js +13 -16
  69. package/dist/runtime/streams/session-calls.d.ts +5 -7
  70. package/dist/runtime/streams/session-calls.js +6 -23
  71. package/dist/runtime/streams/session-context.d.ts +4 -4
  72. package/dist/runtime/streams/session-context.js +3 -6
  73. package/package.json +3 -3
  74. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  75. package/src/contracts/Channels/Calls.ts +1 -1
  76. package/src/contracts/Configuration/Builders.ts +0 -1
  77. package/src/contracts/Configuration/Configs.ts +0 -1
  78. package/src/contracts/Configuration/RegistrationBuilders.ts +0 -3
  79. package/src/contracts/Configuration/RegistrationTypes.ts +0 -5
  80. package/src/contracts/Configuration/RegistrationValidators.ts +0 -4
  81. package/src/contracts/Spots/Contracts.ts +1 -1
  82. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  83. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  84. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  85. package/src/runtime/actors/actor-client.ts +9 -15
  86. package/src/runtime/actors/actor-request-deadline.ts +4 -49
  87. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  88. package/src/runtime/backend/contracts/index.ts +1 -8
  89. package/src/runtime/backend/node/node-backend-adapter-support.ts +45 -5
  90. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  91. package/src/runtime/backend/node/node-raw-binding-port.ts +15 -41
  92. package/src/runtime/backend/node/node-socket-backend-adapter.ts +1 -1
  93. package/src/runtime/channels/channel-clients.ts +9 -19
  94. package/src/runtime/channels/channel-envelope.ts +16 -28
  95. package/src/runtime/channels/channel-outbound-operations.ts +36 -38
  96. package/src/runtime/channels/channel-runtime-manager.ts +6 -28
  97. package/src/runtime/channels/channel-socket-options.ts +0 -13
  98. package/src/runtime/channels/channel-socket-registry.ts +3 -17
  99. package/src/runtime/channels/channel-transports.ts +7 -33
  100. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  101. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  102. package/src/runtime/channels/source-spot-router.ts +2 -9
  103. package/src/runtime/channels/spot-node-route-transport.ts +2 -7
  104. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  105. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  106. package/src/runtime/foundation/raw-service-mesh-runtime.ts +17 -14
  107. package/src/runtime/host/actor-packet-relay.ts +8 -15
  108. package/src/runtime/host/index.ts +2 -26
  109. package/src/runtime/host/remote-bound-session-relay.ts +8 -16
  110. package/src/runtime/host/spot-address-transport.ts +106 -165
  111. package/src/runtime/locations/location-store-repository.ts +7 -4
  112. package/src/runtime/messaging/request-deadline.ts +58 -0
  113. package/src/runtime/messaging/submission-result.ts +18 -4
  114. package/src/runtime/spots/spot-outbound.ts +14 -24
  115. package/src/runtime/streams/bound-actor-relay-sender.ts +12 -26
  116. package/src/runtime/streams/bound-session-service.ts +1 -1
  117. package/src/runtime/streams/index.ts +2 -4
  118. package/src/runtime/streams/managed-stream.ts +3 -13
  119. package/src/runtime/streams/native-fallback-bound-session.ts +13 -25
  120. package/src/runtime/streams/session-calls.ts +8 -34
  121. package/src/runtime/streams/session-context.ts +6 -15
@@ -5,7 +5,6 @@ import {
5
5
  ZLinkDispatchMessageKind,
6
6
  ZLinkRuntimeMessageFlowOutcome
7
7
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
8
- import { throwIfAborted } from '../abort';
9
8
  import type { ZLinkDispatchErrorReporter } from '../channels';
10
9
  import { flowIfEnabled } from '../diagnostics';
11
10
  import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
@@ -33,8 +32,7 @@ export interface ZLinkBoundActorRelaySenderOptions {
33
32
  readonly relay?: (
34
33
  actor: ZLinkSessionActor,
35
34
  header: ZLinkStreamFrameHeader,
36
- payload: Message,
37
- signal?: AbortSignal
35
+ payload: Message
38
36
  ) => Promise<boolean>;
39
37
  readonly notifyDisconnected?: (actor: ZLinkSessionActor, signal?: AbortSignal) => Promise<void>;
40
38
  }
@@ -53,7 +51,6 @@ export class ZLinkBoundActorRelaySender {
53
51
  async relay(
54
52
  actor: DefaultZLinkSessionActor,
55
53
  payload: ZLinkMessage,
56
- signal?: AbortSignal,
57
54
  dispatchHeader?: ZLinkStreamFrameHeader
58
55
  ): Promise<ZLinkSubmitResult> {
59
56
  const header =
@@ -64,18 +61,16 @@ export class ZLinkBoundActorRelaySender {
64
61
  const operation = async (): Promise<ZLinkSubmitResult> => {
65
62
  const admission = await this.routes.beginAcceptedRequestFrameWhenReady(
66
63
  actor.actorId,
67
- actor.bindingToken,
68
- signal
64
+ actor.bindingToken
69
65
  );
70
66
  try {
71
- return await this.relayAcceptedFrame(actor, payload, signal, header, admission);
67
+ return await this.relayAcceptedFrame(actor, payload, header, admission);
72
68
  } finally {
73
69
  await admission.complete();
74
70
  }
75
71
  };
76
72
  return await operation();
77
73
  }
78
- throwIfAborted(signal);
79
74
  const held = await this.routes.acceptOneWay(actor.actorId, actor.bindingToken, () => {
80
75
  let heldMessage: Message | undefined = encodeFrameworkPayloadMessage(
81
76
  payload,
@@ -87,8 +82,7 @@ export class ZLinkBoundActorRelaySender {
87
82
  const result = await this.routes.runAcceptedFrameWhenReady(
88
83
  actor.actorId,
89
84
  actor.bindingToken,
90
- () =>
91
- this.relayAcceptedFrame(actor, payload, undefined, header, undefined, heldMessage)
85
+ () => this.relayAcceptedFrame(actor, payload, header, undefined, heldMessage)
92
86
  );
93
87
  if (result.status !== ZLinkSubmitStatus.Submitted) {
94
88
  this.traceHeldDrop(
@@ -116,11 +110,8 @@ export class ZLinkBoundActorRelaySender {
116
110
  if (held) {
117
111
  return { status: ZLinkSubmitStatus.Submitted };
118
112
  }
119
- return this.routes.runAcceptedFrameWhenReady(
120
- actor.actorId,
121
- actor.bindingToken,
122
- () => this.relayAcceptedFrame(actor, payload, signal),
123
- signal
113
+ return this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () =>
114
+ this.relayAcceptedFrame(actor, payload)
124
115
  );
125
116
  }
126
117
 
@@ -150,7 +141,6 @@ export class ZLinkBoundActorRelaySender {
150
141
  private async relayAcceptedFrame(
151
142
  actor: DefaultZLinkSessionActor,
152
143
  payload: ZLinkMessage,
153
- signal?: AbortSignal,
154
144
  header?: ZLinkStreamFrameHeader,
155
145
  requestAdmission?: { beginSubmission(signal?: AbortSignal): Promise<void> | undefined },
156
146
  acceptedPayload?: Message
@@ -160,7 +150,6 @@ export class ZLinkBoundActorRelaySender {
160
150
  const completion = this.relayInsideLifecycle(
161
151
  actor,
162
152
  payload,
163
- signal,
164
153
  activeHeader,
165
154
  requestAdmission,
166
155
  acceptedPayload
@@ -207,20 +196,18 @@ export class ZLinkBoundActorRelaySender {
207
196
  private async relayInsideLifecycle(
208
197
  actor: DefaultZLinkSessionActor,
209
198
  payload: ZLinkMessage,
210
- signal: AbortSignal | undefined,
211
199
  currentHeader?: ZLinkStreamFrameHeader,
212
200
  requestAdmission?: { beginSubmission(signal?: AbortSignal): Promise<void> | undefined },
213
201
  acceptedPayload?: Message
214
202
  ): Promise<ZLinkSubmitResult> {
215
203
  const header = currentHeader ?? (await this.currentHeader(actor));
216
- const held = requestAdmission?.beginSubmission(signal);
204
+ const held = requestAdmission?.beginSubmission();
217
205
  if (held !== undefined) await held;
218
- throwIfAborted(signal);
219
206
  const payloadMessage =
220
207
  acceptedPayload ?? encodeFrameworkPayloadMessage(payload, this.options.messageSerializers);
221
208
  try {
222
209
  if (this.options.relay !== undefined) {
223
- const handled = await this.options.relay(actor, header, payloadMessage, signal);
210
+ const handled = await this.options.relay(actor, header, payloadMessage);
224
211
  if (handled) {
225
212
  return { status: ZLinkSubmitStatus.Submitted };
226
213
  }
@@ -234,11 +221,10 @@ export class ZLinkBoundActorRelaySender {
234
221
  messageToBytes(payloadMessage)
235
222
  );
236
223
  try {
237
- return await route.context.stream.submitBoundActor(
238
- actor.actorId,
239
- [headerMessage, framePayloadMessage],
240
- signal
241
- );
224
+ return await route.context.stream.submitBoundActor(actor.actorId, [
225
+ headerMessage,
226
+ framePayloadMessage
227
+ ]);
242
228
  } finally {
243
229
  headerMessage.close();
244
230
  framePayloadMessage.close();
@@ -129,7 +129,7 @@ export class ZLinkBoundSessionService {
129
129
  if ((await this.routes.route(actorId))?.bindingToken !== route.bindingToken) {
130
130
  return { status: ZLinkSubmitStatus.TargetNotFound };
131
131
  }
132
- return await route.context.stream.submitRaw(frame, signal);
132
+ return await route.context.stream.submitRaw(frame);
133
133
  } finally {
134
134
  frame.close();
135
135
  }
@@ -139,8 +139,7 @@ export interface ZLinkStreamBindingRuntimeOptions {
139
139
  readonly relay?: (
140
140
  actor: ZLinkSessionActor,
141
141
  header: ZLinkStreamFrameHeader,
142
- payload: Message,
143
- signal?: AbortSignal
142
+ payload: Message
144
143
  ) => Promise<boolean>;
145
144
  readonly notifyDisconnected?: (actor: ZLinkSessionActor, signal?: AbortSignal) => Promise<void>;
146
145
  readonly flowCreationEnabled?: () => boolean;
@@ -758,10 +757,9 @@ export class ZLinkStreamBindingRuntime {
758
757
  async relay(
759
758
  actor: DefaultZLinkSessionActor,
760
759
  payload: ZLinkMessage,
761
- signal?: AbortSignal,
762
760
  dispatchHeader?: ZLinkStreamFrameHeader
763
761
  ): Promise<ZLinkSubmitResult> {
764
- return await this.boundActorRelay.relay(actor, payload, signal, dispatchHeader);
762
+ return await this.boundActorRelay.relay(actor, payload, dispatchHeader);
765
763
  }
766
764
 
767
765
  async notifyDisconnected(actor: DefaultZLinkSessionActor, signal?: AbortSignal): Promise<void> {
@@ -130,14 +130,9 @@ export class ZLinkManagedStream implements ZLinkStream {
130
130
  return this.socket.send(this.backendRoutingId(), payload, flags ?? 0);
131
131
  }
132
132
 
133
- async submitRaw(
134
- payload: Message,
135
- signal?: AbortSignal,
136
- timeoutMs?: number
137
- ): Promise<ZLinkSubmitResult> {
133
+ async submitRaw(payload: Message): Promise<ZLinkSubmitResult> {
138
134
  try {
139
- throwIfAborted(signal);
140
- await this.socket.submit(this.backendRoutingId(), payload, timeoutMs);
135
+ await this.socket.submit(this.backendRoutingId(), payload);
141
136
  return { status: ZLinkSubmitStatus.Submitted };
142
137
  } catch (error) {
143
138
  if (isZLinkBackendResultError(error) && error.operation === 'submit') {
@@ -147,12 +142,7 @@ export class ZLinkManagedStream implements ZLinkStream {
147
142
  }
148
143
  }
149
144
 
150
- async submitBoundActor(
151
- actorId: string,
152
- parts: readonly Message[],
153
- signal?: AbortSignal
154
- ): Promise<ZLinkSubmitResult> {
155
- throwIfAborted(signal);
145
+ async submitBoundActor(actorId: string, parts: readonly Message[]): Promise<ZLinkSubmitResult> {
156
146
  return (await this.sendBoundActor(actorId, parts, ZLINK_SEND_DONT_WAIT))
157
147
  ? { status: ZLinkSubmitStatus.Submitted }
158
148
  : { status: ZLinkSubmitStatus.Backpressured };
@@ -32,7 +32,6 @@ import {
32
32
  type ZLinkStreamFrameHeader
33
33
  } from './protocol';
34
34
  import type { ZLinkNativeFallbackBoundSessionPort } from './stream-binding-runtime-ports';
35
- import { throwIfAborted } from '../abort';
36
35
  import type { ZLinkBackendActorSessionNode } from '../backend';
37
36
  import { resolveFrameworkPacketName } from '../messaging/packet-name';
38
37
  import { currentOrCreateFlow, runWithOutboundFlow } from '../diagnostics/flow-context';
@@ -87,8 +86,7 @@ export class ZLinkNativeFallbackBoundSession implements ZLinkBoundSession {
87
86
  return;
88
87
  }
89
88
  await this.options.routedTransport.sendToSpot(target, payload, {
90
- packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
91
- signal
89
+ packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
92
90
  });
93
91
  return;
94
92
  }
@@ -126,7 +124,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
126
124
  return this;
127
125
  }
128
126
 
129
- async submit(signal?: AbortSignal): Promise<void> {
127
+ async submit(): Promise<void> {
130
128
  if (this.executed) {
131
129
  throwAlreadySubmitted('Bound session send call');
132
130
  }
@@ -136,8 +134,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
136
134
  'Bound session'
137
135
  );
138
136
  this.executed = true;
139
- throwIfAborted(signal);
140
- const result = await this.execute(packetName, signal);
137
+ const result = await this.execute(packetName);
141
138
  requireOneWayCompletion(
142
139
  result,
143
140
  'Bound session send',
@@ -145,19 +142,16 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
145
142
  );
146
143
  }
147
144
 
148
- private execute(packetName: string, signal?: AbortSignal): Promise<ZLinkSubmitResult> {
145
+ private execute(packetName: string): Promise<ZLinkSubmitResult> {
149
146
  // Call-scoped flow (spec 27 §4): the relay JSON flow pair and any nested
150
147
  // routed-transport envelope share one ambient flow that does not outlive
151
148
  // this submit call.
152
149
  return runWithOutboundFlow(this.options.flowCreationEnabled?.() ?? true, () =>
153
- this.executeScoped(packetName, signal)
150
+ this.executeScoped(packetName)
154
151
  );
155
152
  }
156
153
 
157
- private async executeScoped(
158
- packetName: string,
159
- signal?: AbortSignal
160
- ): Promise<ZLinkSubmitResult> {
154
+ private async executeScoped(packetName: string): Promise<ZLinkSubmitResult> {
161
155
  const localActor = this.options.localActorProvider?.() === true;
162
156
  const remoteTarget = this.options.remoteBoundSessionTargetProvider();
163
157
  let nativeAttempted = false;
@@ -166,8 +160,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
166
160
  this.options.actorId,
167
161
  this.message,
168
162
  packetName,
169
- this.selectedMetadata,
170
- signal
163
+ this.selectedMetadata
171
164
  );
172
165
  if (result.status !== ZLinkSubmitStatus.TargetNotFound) {
173
166
  this.traceSubmitted(result, packetName);
@@ -188,8 +181,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
188
181
  actorRef,
189
182
  this.message,
190
183
  packetName,
191
- this.selectedMetadata,
192
- signal
184
+ this.selectedMetadata
193
185
  );
194
186
  if (result.status !== ZLinkSubmitStatus.TargetNotFound) {
195
187
  this.traceSubmitted(result, packetName);
@@ -234,15 +226,14 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
234
226
  spotKind: ZLinkSpotKind.Entry
235
227
  },
236
228
  payload,
237
- { packetName: ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET, signal }
229
+ { packetName: ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET }
238
230
  )
239
231
  : await submit.call(
240
232
  this.options.routedTransport,
241
233
  remoteTarget.routerChannelId,
242
234
  String(remoteTarget.targetNodeRid),
243
235
  ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET,
244
- payload,
245
- signal
236
+ payload
246
237
  );
247
238
  this.traceSubmitted(result, packetName);
248
239
  return result;
@@ -251,8 +242,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
251
242
  this.options.actorId,
252
243
  this.message,
253
244
  packetName,
254
- this.selectedMetadata,
255
- signal
245
+ this.selectedMetadata
256
246
  );
257
247
  if (localResult.status !== ZLinkSubmitStatus.TargetNotFound) {
258
248
  this.traceSubmitted(localResult, packetName);
@@ -272,8 +262,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
272
262
  actorRef,
273
263
  this.message,
274
264
  packetName,
275
- this.selectedMetadata,
276
- signal
265
+ this.selectedMetadata
277
266
  );
278
267
  this.traceSubmitted(result, packetName);
279
268
  return result;
@@ -289,8 +278,7 @@ class ZLinkNativeFallbackBoundSessionSendCall implements ZLinkBoundSessionSendCa
289
278
  this.options.actorId,
290
279
  this.message,
291
280
  packetName,
292
- this.selectedMetadata,
293
- signal
281
+ this.selectedMetadata
294
282
  );
295
283
  this.traceSubmitted(result, packetName);
296
284
  return result;
@@ -4,9 +4,6 @@ import type {
4
4
  ZLinkSessionSendCall
5
5
  } from '../../contracts';
6
6
  import type { Message } from '../../contracts/Common/Message';
7
- import { ZLINK_MAX_SEND_TIMEOUT_MS } from '../../contracts/Configuration/SendTimeoutValidation';
8
- import { throwIfAborted } from '../abort';
9
- import { ZLinkConfigurationException } from '../configuration';
10
7
  import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
11
8
  import { type ZLinkSubmitResult, requireOneWayCompletion } from '../messaging/submission-result';
12
9
 
@@ -23,19 +20,14 @@ export interface ZLinkBoundSessionSendRuntime {
23
20
  actorId: string,
24
21
  message: unknown,
25
22
  packetName: string | undefined,
26
- metadata: ReadonlyMap<string, string>,
27
- signal?: AbortSignal
23
+ metadata: ReadonlyMap<string, string>
28
24
  ): Promise<ZLinkSubmitResult>;
29
25
  }
30
26
 
31
27
  export interface ZLinkSessionCallContext {
32
28
  readonly stream: {
33
29
  writeRaw(payload: Message): boolean;
34
- submitRaw(
35
- payload: Message,
36
- signal?: AbortSignal,
37
- timeoutMs?: number
38
- ): Promise<ZLinkSubmitResult>;
30
+ submitRaw(payload: Message): Promise<ZLinkSubmitResult>;
39
31
  };
40
32
  readonly dispatchHeader: ZLinkStreamFrameHeader | undefined;
41
33
  createJsonFrameMessage(
@@ -88,17 +80,15 @@ export class DefaultZLinkBoundSessionSendCall implements ZLinkBoundSessionSendCa
88
80
  return this;
89
81
  }
90
82
 
91
- async submit(signal?: AbortSignal): Promise<void> {
83
+ async submit(): Promise<void> {
92
84
  ensureSingleSubmit(this.executed);
93
85
  const packetName = resolvePacketName(this.message, this.selectedPacketName);
94
86
  this.executed = true;
95
- throwIfAborted(signal);
96
87
  const result = await this.runtime.sendBoundSession(
97
88
  this.actorId,
98
89
  this.message,
99
90
  packetName,
100
- this.selectedMetadata,
101
- signal
91
+ this.selectedMetadata
102
92
  );
103
93
  requireOneWayCompletion(
104
94
  result,
@@ -112,7 +102,6 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
112
102
  private selectedPacketName: string | undefined;
113
103
  private readonly selectedMetadata = new Map<string, string>();
114
104
  private compressionEnabled = false;
115
- private selectedTimeoutMs: number | undefined;
116
105
  private executed = false;
117
106
 
118
107
  constructor(
@@ -135,21 +124,10 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
135
124
  return this;
136
125
  }
137
126
 
138
- timeout(timeoutMs: number): this {
139
- if (!Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > ZLINK_MAX_SEND_TIMEOUT_MS) {
140
- throw new ZLinkConfigurationException(
141
- `STREAM session send timeout must be an integer from 1 through ${ZLINK_MAX_SEND_TIMEOUT_MS} milliseconds.`
142
- );
143
- }
144
- this.selectedTimeoutMs = timeoutMs;
145
- return this;
146
- }
147
-
148
- async submit(signal?: AbortSignal): Promise<void> {
127
+ async submit(): Promise<void> {
149
128
  ensureSingleSubmit(this.executed);
150
129
  const packetName = resolvePacketName(this.message, this.selectedPacketName);
151
130
  this.executed = true;
152
- throwIfAborted(signal);
153
131
  const message = this.context.createJsonFrameMessage(
154
132
  ZLinkStreamMessageKind.Send,
155
133
  packetName,
@@ -159,7 +137,7 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
159
137
  this.message
160
138
  );
161
139
  try {
162
- const result = await this.context.stream.submitRaw(message, signal, this.selectedTimeoutMs);
140
+ const result = await this.context.stream.submitRaw(message);
163
141
  requireOneWayCompletion(result, 'STREAM session send');
164
142
  this.context.traceFrameWritten?.(ZLinkStreamMessageKind.Send, packetName, undefined);
165
143
  } finally {
@@ -182,7 +160,7 @@ export class DefaultZLinkSessionReplyCall implements ZLinkSessionReplyCall {
182
160
  return this;
183
161
  }
184
162
 
185
- async submit(signal?: AbortSignal): Promise<void> {
163
+ async submit(): Promise<void> {
186
164
  ensureSingleSubmit(this.executed);
187
165
  this.executed = true;
188
166
  const requestHeader = this.context.dispatchHeader;
@@ -190,10 +168,6 @@ export class DefaultZLinkSessionReplyCall implements ZLinkSessionReplyCall {
190
168
  throw new Error('Reply is only available while handling a request packet.');
191
169
  }
192
170
  this.context.claimReply(requestHeader);
193
- // Reply-token validity wins over caller cancellation. Claiming before the
194
- // pre-cancel check keeps duplicate calls deterministic while still making
195
- // a pre-cancelled first call perform no transport admission.
196
- throwIfAborted(signal);
197
171
  const message = this.context.createJsonReplyFrameMessage(
198
172
  requestHeader,
199
173
  ZLinkStreamMessageKind.Response,
@@ -202,7 +176,7 @@ export class DefaultZLinkSessionReplyCall implements ZLinkSessionReplyCall {
202
176
  this.message
203
177
  );
204
178
  try {
205
- const result = await this.context.stream.submitRaw(message, signal);
179
+ const result = await this.context.stream.submitRaw(message);
206
180
  requireOneWayCompletion(result, 'STREAM session reply');
207
181
  this.context.traceFrameWritten?.(
208
182
  ZLinkStreamMessageKind.Response,
@@ -49,7 +49,7 @@ import { ZLinkSessionRequestTracker, type ZLinkPendingSessionRequest } from './s
49
49
 
50
50
  export interface ZLinkSessionContextStream extends ZLinkStream {
51
51
  writeRaw(payload: Message, flags?: number): boolean;
52
- submitRaw(payload: Message, signal?: AbortSignal, timeoutMs?: number): Promise<ZLinkSubmitResult>;
52
+ submitRaw(payload: Message): Promise<ZLinkSubmitResult>;
53
53
  enqueueActorBound?(actorSlot: number, actorId: string): Promise<void>;
54
54
  enqueueActorUnbound?(actorSlot: number): Promise<void>;
55
55
  }
@@ -88,7 +88,6 @@ interface ZLinkSessionContextRuntime {
88
88
  relay(
89
89
  actor: DefaultZLinkSessionActor,
90
90
  payload: ZLinkMessage,
91
- signal?: AbortSignal,
92
91
  dispatchHeader?: ZLinkStreamFrameHeader
93
92
  ): Promise<ZLinkSubmitResult>;
94
93
  notifyDisconnected(actor: DefaultZLinkSessionActor, signal?: AbortSignal): Promise<void>;
@@ -538,30 +537,22 @@ export class DefaultZLinkSessionActor implements ZLinkSessionActor {
538
537
  this.currentRef = ref;
539
538
  }
540
539
 
541
- async relay(payload: ZLinkMessage, signal?: AbortSignal): Promise<void>;
542
- async relay(
543
- dispatch: ZLinkSessionDispatchContext,
544
- payload: ZLinkMessage,
545
- signal?: AbortSignal
546
- ): Promise<void>;
540
+ async relay(payload: ZLinkMessage): Promise<void>;
541
+ async relay(dispatch: ZLinkSessionDispatchContext, payload: ZLinkMessage): Promise<void>;
547
542
  async relay(
548
543
  dispatchOrPayload: ZLinkSessionDispatchContext | ZLinkMessage,
549
- payloadOrSignal?: ZLinkMessage | AbortSignal,
550
- signal?: AbortSignal
544
+ selectedPayload?: ZLinkMessage
551
545
  ): Promise<void> {
552
546
  const dispatch = isSessionDispatchContext(dispatchOrPayload) ? dispatchOrPayload : undefined;
553
547
  let payload: ZLinkMessage;
554
- let relaySignal: AbortSignal | undefined;
555
548
  let header: ZLinkStreamFrameHeader | undefined;
556
549
  if (dispatch === undefined) {
557
550
  payload = dispatchOrPayload as ZLinkMessage;
558
- relaySignal = payloadOrSignal as AbortSignal | undefined;
559
551
  } else {
560
- payload = payloadOrSignal as ZLinkMessage;
561
- relaySignal = signal;
552
+ payload = selectedPayload as ZLinkMessage;
562
553
  header = sessionDispatchHeader(dispatch);
563
554
  }
564
- const result = await this.runtime.relay(this, payload, relaySignal, header);
555
+ const result = await this.runtime.relay(this, payload, header);
565
556
  requireOneWayCompletion(
566
557
  result,
567
558
  'Session Actor relay',