@naylence/runtime 0.3.21 → 0.3.22

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.
@@ -725,7 +725,7 @@ class TaskCancelledError extends Error {
725
725
  * Provides functionality similar to Python's asyncio TaskSpawner with proper
726
726
  * error handling, cancellation, and graceful shutdown capabilities.
727
727
  */
728
- const logger$1m = getLogger('naylence.fame.util.task_spawner');
728
+ const logger$1l = getLogger('naylence.fame.util.task_spawner');
729
729
  function firstDefined(source, keys) {
730
730
  for (const key of keys) {
731
731
  if (Object.prototype.hasOwnProperty.call(source, key)) {
@@ -886,7 +886,7 @@ class TaskSpawner {
886
886
  const taskId = `task-${++this._taskCounter}`;
887
887
  const taskName = normalizedOptions.name || `unnamed-${taskId}`;
888
888
  const timeout = normalizedOptions.timeout ?? this._config.defaultTimeout;
889
- logger$1m.debug('starting_background_task', {
889
+ logger$1l.debug('starting_background_task', {
890
890
  task_name: taskName,
891
891
  task_id: taskId,
892
892
  });
@@ -903,7 +903,7 @@ class TaskSpawner {
903
903
  task.promise
904
904
  .then(() => {
905
905
  if (!this._suppressCompletionLogging) {
906
- logger$1m.debug('task_completed_successfully', {
906
+ logger$1l.debug('task_completed_successfully', {
907
907
  task_name: taskName,
908
908
  task_id: taskId,
909
909
  duration_ms: Date.now() - task.startTime,
@@ -957,7 +957,7 @@ class TaskSpawner {
957
957
  error.name === 'AbortError' ||
958
958
  error.message === 'Task cancelled' ||
959
959
  error.message === 'Aborted') {
960
- logger$1m.debug('task_cancelled', {
960
+ logger$1l.debug('task_cancelled', {
961
961
  task_name: taskName,
962
962
  note: 'Task cancelled as requested',
963
963
  });
@@ -965,7 +965,7 @@ class TaskSpawner {
965
965
  }
966
966
  // Handle timeout
967
967
  if (error instanceof TaskTimeoutError) {
968
- logger$1m.warning('task_timed_out', {
968
+ logger$1l.warning('task_timed_out', {
969
969
  task_name: taskName,
970
970
  error: error.message,
971
971
  });
@@ -977,7 +977,7 @@ class TaskSpawner {
977
977
  // Handle known WebSocket shutdown race condition (similar to Python version)
978
978
  if (error.message.includes("await wasn't used with future") ||
979
979
  error.message.includes('WebSocket closed during receive')) {
980
- logger$1m.debug('task_shutdown_race_condition_handled', {
980
+ logger$1l.debug('task_shutdown_race_condition_handled', {
981
981
  task_name: taskName,
982
982
  note: 'Normal WebSocket close timing during shutdown - not an error',
983
983
  });
@@ -987,7 +987,7 @@ class TaskSpawner {
987
987
  if (error.name === 'FameTransportClose' ||
988
988
  error.message.includes('normal closure') ||
989
989
  error.message.includes('Connection closed')) {
990
- logger$1m.debug('task_shutdown_completed_normally', {
990
+ logger$1l.debug('task_shutdown_completed_normally', {
991
991
  task_name: taskName,
992
992
  note: 'Task closed normally during shutdown',
993
993
  });
@@ -995,7 +995,7 @@ class TaskSpawner {
995
995
  }
996
996
  // Handle PKCE redirect "errors" as info
997
997
  if (error.name === 'OAuth2PkceRedirectInitiatedError') {
998
- logger$1m.debug('background_task_redirecting', {
998
+ logger$1l.debug('background_task_redirecting', {
999
999
  task_name: taskName,
1000
1000
  note: 'Task interrupted for PKCE redirect',
1001
1001
  });
@@ -1008,14 +1008,14 @@ class TaskSpawner {
1008
1008
  // Log retriable errors as warnings (they'll be retried by upstream logic)
1009
1009
  // Log non-retriable errors as errors (fatal failures)
1010
1010
  if (isRetriableError) {
1011
- logger$1m.warning('background_task_failed', {
1011
+ logger$1l.warning('background_task_failed', {
1012
1012
  task_name: taskName,
1013
1013
  error: error.message,
1014
1014
  retriable: true,
1015
1015
  });
1016
1016
  }
1017
1017
  else {
1018
- logger$1m.error('background_task_failed', {
1018
+ logger$1l.error('background_task_failed', {
1019
1019
  task_name: taskName,
1020
1020
  error: error.message,
1021
1021
  stack: error.stack,
@@ -1034,11 +1034,11 @@ class TaskSpawner {
1034
1034
  async shutdownTasks(options = {}) {
1035
1035
  const { gracePeriod, cancelHanging, joinTimeout } = normalizeShutdownOptions(options);
1036
1036
  if (this._tasks.size === 0) {
1037
- logger$1m.debug('shutdown_tasks_no_tasks_to_shutdown');
1037
+ logger$1l.debug('shutdown_tasks_no_tasks_to_shutdown');
1038
1038
  return;
1039
1039
  }
1040
1040
  this._suppressCompletionLogging = true;
1041
- logger$1m.debug('shutting_down_tasks', {
1041
+ logger$1l.debug('shutting_down_tasks', {
1042
1042
  task_count: this._tasks.size,
1043
1043
  task_names: Array.from(this._tasks.values()).map((t) => t.name),
1044
1044
  grace_period_ms: gracePeriod,
@@ -1053,7 +1053,7 @@ class TaskSpawner {
1053
1053
  if (cancelHanging) {
1054
1054
  const stillRunning = tasks.filter((task) => task.getState() === TaskState.RUNNING && !completed.has(task));
1055
1055
  if (stillRunning.length > 0) {
1056
- logger$1m.debug('tasks_did_not_complete_within_grace_period', {
1056
+ logger$1l.debug('tasks_did_not_complete_within_grace_period', {
1057
1057
  hanging_count: stillRunning.length,
1058
1058
  });
1059
1059
  // Wait for them to finish with individual timeouts
@@ -1063,7 +1063,7 @@ class TaskSpawner {
1063
1063
  }
1064
1064
  catch (error) {
1065
1065
  if (error instanceof TaskTimeoutError) {
1066
- logger$1m.warning('task_did_not_shutdown', {
1066
+ logger$1l.warning('task_did_not_shutdown', {
1067
1067
  task_name: task.name || task.id,
1068
1068
  join_timeout_ms: joinTimeout,
1069
1069
  });
@@ -1074,7 +1074,7 @@ class TaskSpawner {
1074
1074
  }
1075
1075
  else if (!(error instanceof TaskCancelledError)) {
1076
1076
  /* istanbul ignore next - unreachable defensive branch */
1077
- logger$1m.error('task_raised_during_cancellation', {
1077
+ logger$1l.error('task_raised_during_cancellation', {
1078
1078
  task_name: task.name || task.id,
1079
1079
  error: error instanceof Error ? error.message : String(error),
1080
1080
  });
@@ -1193,7 +1193,7 @@ class TaskSpawner {
1193
1193
  * condition/promise and ensure at most one notifier coroutine exists for a
1194
1194
  * flow at any time.
1195
1195
  */
1196
- const logger$1l = getLogger('naylence.fame.flow.flow_controller');
1196
+ const logger$1k = getLogger('naylence.fame.flow.flow_controller');
1197
1197
  /**
1198
1198
  * Simple condition variable implementation for TypeScript/Node.js
1199
1199
  * Similar to Python's asyncio.Condition
@@ -1327,7 +1327,7 @@ class FlowController {
1327
1327
  const newBalance = Math.max(0, Math.min(this.initialWindow, prev + delta));
1328
1328
  this.credits.set(flowId, newBalance);
1329
1329
  const crossedZero = prev <= 0 && newBalance > 0;
1330
- logger$1l.debug('flow_controller_add_credits', {
1330
+ logger$1k.debug('flow_controller_add_credits', {
1331
1331
  flow_id: flowId,
1332
1332
  delta,
1333
1333
  prev_balance: prev,
@@ -1347,12 +1347,12 @@ class FlowController {
1347
1347
  async acquire(flowId) {
1348
1348
  this.ensureFlow(flowId);
1349
1349
  const condition = this.conditions.get(flowId);
1350
- logger$1l.debug('flow_controller_acquire_attempt', {
1350
+ logger$1k.debug('flow_controller_acquire_attempt', {
1351
1351
  flow_id: flowId,
1352
1352
  current_balance: this.credits.get(flowId),
1353
1353
  });
1354
1354
  while (this.credits.get(flowId) <= 0) {
1355
- logger$1l.debug('flow_controller_waiting_for_credits', {
1355
+ logger$1k.debug('flow_controller_waiting_for_credits', {
1356
1356
  flow_id: flowId,
1357
1357
  current_balance: this.credits.get(flowId),
1358
1358
  });
@@ -1360,12 +1360,12 @@ class FlowController {
1360
1360
  }
1361
1361
  const newBalance = this.credits.get(flowId) - 1;
1362
1362
  this.credits.set(flowId, newBalance);
1363
- logger$1l.debug('flow_controller_acquire_success', {
1363
+ logger$1k.debug('flow_controller_acquire_success', {
1364
1364
  flow_id: flowId,
1365
1365
  new_balance: newBalance,
1366
1366
  });
1367
1367
  if (newBalance <= this.lowWatermark) {
1368
- logger$1l.debug('flow_controller_acquire_below_low_watermark', {
1368
+ logger$1k.debug('flow_controller_acquire_below_low_watermark', {
1369
1369
  flow_id: flowId,
1370
1370
  low_watermark: this.lowWatermark,
1371
1371
  });
@@ -1389,7 +1389,7 @@ class FlowController {
1389
1389
  const current = this.credits.get(flowId);
1390
1390
  const remaining = Math.max(current - credits, 0);
1391
1391
  this.credits.set(flowId, remaining);
1392
- logger$1l.debug('flow_controller_consume', {
1392
+ logger$1k.debug('flow_controller_consume', {
1393
1393
  flow_id: flowId,
1394
1394
  requested: credits,
1395
1395
  prev_balance: current,
@@ -1415,7 +1415,7 @@ class FlowController {
1415
1415
  this.windowIds.delete(flowId);
1416
1416
  this.credits.set(flowId, this.initialWindow);
1417
1417
  this.wakeWaiters(flowId);
1418
- logger$1l.debug('flow_controller_flow_reset', {
1418
+ logger$1k.debug('flow_controller_flow_reset', {
1419
1419
  flow_id: flowId,
1420
1420
  reset_balance: this.initialWindow,
1421
1421
  });
@@ -2047,7 +2047,7 @@ class TaskCancellationError extends Error {
2047
2047
  this.name = 'TaskCancellationError';
2048
2048
  }
2049
2049
  }
2050
- const logger$1k = getLogger('naylence.fame.connector.base_async_connector');
2050
+ const logger$1j = getLogger('naylence.fame.connector.base_async_connector');
2051
2051
  // Environment variables
2052
2052
  const ENV_VAR_FAME_FLOW_CONTROL = 'FAME_FLOW_CONTROL';
2053
2053
  const FLOW_CONTROL_ENABLED = typeof process !== 'undefined' && process?.env
@@ -2130,7 +2130,7 @@ class BaseAsyncConnector extends TaskSpawner {
2130
2130
  if (this._state !== newState) {
2131
2131
  const oldState = this._state;
2132
2132
  this._state = newState;
2133
- logger$1k.debug('connector_state_transition', {
2133
+ logger$1j.debug('connector_state_transition', {
2134
2134
  connector_id: this._connectorFlowId,
2135
2135
  old_state: oldState,
2136
2136
  new_state: newState,
@@ -2169,12 +2169,12 @@ class BaseAsyncConnector extends TaskSpawner {
2169
2169
  * Stop the connector gracefully
2170
2170
  */
2171
2171
  async stop() {
2172
- logger$1k.debug('stopping_connector', {
2172
+ logger$1j.debug('stopping_connector', {
2173
2173
  current_state: this._state,
2174
2174
  connector_id: this._connectorFlowId,
2175
2175
  });
2176
2176
  if (!core.ConnectorStateUtils.canStop(this._state)) {
2177
- logger$1k.debug('connector_stop_already_stopped', {
2177
+ logger$1j.debug('connector_stop_already_stopped', {
2178
2178
  current_state: this._state,
2179
2179
  connector_id: this._connectorFlowId,
2180
2180
  });
@@ -2185,7 +2185,7 @@ class BaseAsyncConnector extends TaskSpawner {
2185
2185
  if (this._lastError) {
2186
2186
  throw this._lastError;
2187
2187
  }
2188
- logger$1k.debug('connector_stopped', {
2188
+ logger$1j.debug('connector_stopped', {
2189
2189
  current_state: this._state,
2190
2190
  connector_id: this._connectorFlowId,
2191
2191
  });
@@ -2194,19 +2194,19 @@ class BaseAsyncConnector extends TaskSpawner {
2194
2194
  * Pause the connector (suspends heartbeat and housekeeping, but keeps connection alive)
2195
2195
  */
2196
2196
  async pause() {
2197
- logger$1k.debug('pausing_connector', {
2197
+ logger$1j.debug('pausing_connector', {
2198
2198
  current_state: this._state,
2199
2199
  connector_id: this._connectorFlowId,
2200
2200
  });
2201
2201
  if (this._state !== core.ConnectorState.STARTED) {
2202
- logger$1k.debug('connector_pause_invalid_state', {
2202
+ logger$1j.debug('connector_pause_invalid_state', {
2203
2203
  current_state: this._state,
2204
2204
  connector_id: this._connectorFlowId,
2205
2205
  });
2206
2206
  return;
2207
2207
  }
2208
2208
  this._setState(core.ConnectorState.PAUSED);
2209
- logger$1k.debug('connector_paused', {
2209
+ logger$1j.debug('connector_paused', {
2210
2210
  current_state: this._state,
2211
2211
  connector_id: this._connectorFlowId,
2212
2212
  });
@@ -2215,19 +2215,19 @@ class BaseAsyncConnector extends TaskSpawner {
2215
2215
  * Resume the connector from paused state
2216
2216
  */
2217
2217
  async resume() {
2218
- logger$1k.debug('resuming_connector', {
2218
+ logger$1j.debug('resuming_connector', {
2219
2219
  current_state: this._state,
2220
2220
  connector_id: this._connectorFlowId,
2221
2221
  });
2222
2222
  if (this._state !== core.ConnectorState.PAUSED) {
2223
- logger$1k.debug('connector_resume_invalid_state', {
2223
+ logger$1j.debug('connector_resume_invalid_state', {
2224
2224
  current_state: this._state,
2225
2225
  connector_id: this._connectorFlowId,
2226
2226
  });
2227
2227
  return;
2228
2228
  }
2229
2229
  this._setState(core.ConnectorState.STARTED);
2230
- logger$1k.debug('connector_resumed', {
2230
+ logger$1j.debug('connector_resumed', {
2231
2231
  current_state: this._state,
2232
2232
  connector_id: this._connectorFlowId,
2233
2233
  });
@@ -2237,7 +2237,7 @@ class BaseAsyncConnector extends TaskSpawner {
2237
2237
  */
2238
2238
  async close(code = 1000, reason = 'normal closure') {
2239
2239
  if (!core.ConnectorStateUtils.canClose(this._state)) {
2240
- logger$1k.warning('connector_close_invalid_state', {
2240
+ logger$1j.warning('connector_close_invalid_state', {
2241
2241
  current_state: this._state,
2242
2242
  connector_id: this._connectorFlowId,
2243
2243
  });
@@ -2318,7 +2318,7 @@ class BaseAsyncConnector extends TaskSpawner {
2318
2318
  // Add to queue and notify send loop
2319
2319
  this._sendQueue.push(raw);
2320
2320
  // Log for debugging
2321
- logger$1k.debug('send_envelope_queued', {
2321
+ logger$1j.debug('send_envelope_queued', {
2322
2322
  queue_length: this._sendQueue.length,
2323
2323
  max_queue_size: this._maxQueueSize,
2324
2324
  });
@@ -2367,14 +2367,14 @@ class BaseAsyncConnector extends TaskSpawner {
2367
2367
  const item = this._sendQueue[0];
2368
2368
  if (!item)
2369
2369
  continue;
2370
- logger$1k.debug('send_loop_processing_item', {
2370
+ logger$1j.debug('send_loop_processing_item', {
2371
2371
  queue_length_before_send: this._sendQueue.length,
2372
2372
  });
2373
2373
  // Send through transport (this may block)
2374
2374
  await this._transportSendBytes(item);
2375
2375
  // Only remove from queue after successful send
2376
2376
  this._sendQueue.shift();
2377
- logger$1k.debug('send_loop_item_sent', {
2377
+ logger$1j.debug('send_loop_item_sent', {
2378
2378
  queue_length_after_send: this._sendQueue.length,
2379
2379
  });
2380
2380
  }
@@ -2387,14 +2387,14 @@ class BaseAsyncConnector extends TaskSpawner {
2387
2387
  }
2388
2388
  else if (error instanceof TaskCancellationError) {
2389
2389
  // Task cancellation is expected during shutdown - log as debug, not critical
2390
- logger$1k.debug('send loop cancelled', {
2390
+ logger$1j.debug('send loop cancelled', {
2391
2391
  connector: this.constructor.name,
2392
2392
  reason: error.message,
2393
2393
  });
2394
2394
  // Don't re-throw - this is normal during shutdown
2395
2395
  }
2396
2396
  else {
2397
- logger$1k.critical('unexpected exception in send loop', {
2397
+ logger$1j.critical('unexpected exception in send loop', {
2398
2398
  connector: this.constructor.name,
2399
2399
  error: error instanceof Error ? error.message : String(error),
2400
2400
  });
@@ -2435,7 +2435,7 @@ class BaseAsyncConnector extends TaskSpawner {
2435
2435
  env = JSON.parse(jsonStr);
2436
2436
  }
2437
2437
  catch (error) {
2438
- logger$1k.error('Invalid envelope', {
2438
+ logger$1j.error('Invalid envelope', {
2439
2439
  message: message.toString(),
2440
2440
  error: error instanceof Error ? error.message : String(error),
2441
2441
  });
@@ -2459,7 +2459,7 @@ class BaseAsyncConnector extends TaskSpawner {
2459
2459
  };
2460
2460
  await withEnvelopeContextAsync(envelopeContext, async () => {
2461
2461
  const prettyEnvelope = prettyModel$1(env);
2462
- logger$1k.trace('connector_received_envelope', {
2462
+ logger$1j.trace('connector_received_envelope', {
2463
2463
  envelope: env,
2464
2464
  pretty: prettyEnvelope,
2465
2465
  });
@@ -2488,7 +2488,7 @@ class BaseAsyncConnector extends TaskSpawner {
2488
2488
  if (error instanceof TaskCancellationError) {
2489
2489
  throw error;
2490
2490
  }
2491
- logger$1k.error('handler_failed', {
2491
+ logger$1j.error('handler_failed', {
2492
2492
  error: error instanceof Error ? error.message : String(error),
2493
2493
  envelope_id: env.id ?? null,
2494
2494
  trace_id: env.traceId ?? null,
@@ -2509,14 +2509,14 @@ class BaseAsyncConnector extends TaskSpawner {
2509
2509
  }
2510
2510
  else if (error instanceof TaskCancellationError) {
2511
2511
  // Task cancellation is expected during shutdown - log as debug, not critical
2512
- logger$1k.debug('receive loop cancelled', {
2512
+ logger$1j.debug('receive loop cancelled', {
2513
2513
  connector: this.constructor.name,
2514
2514
  reason: error.message,
2515
2515
  });
2516
2516
  // Don't re-throw - this is normal during shutdown
2517
2517
  }
2518
2518
  else {
2519
- logger$1k.critical('unexpected_error_in recv_loop', {
2519
+ logger$1j.critical('unexpected_error_in recv_loop', {
2520
2520
  error: error instanceof Error ? error.message : String(error),
2521
2521
  });
2522
2522
  throw error;
@@ -2532,7 +2532,7 @@ class BaseAsyncConnector extends TaskSpawner {
2532
2532
  async _maybeEmitCredit(flowId, traceId) {
2533
2533
  const remainingCredits = this._flowCtrl.getCredits(flowId);
2534
2534
  const needsRefill = this._flowCtrl.needsRefill(flowId);
2535
- logger$1k.debug('maybe_emit_credit_check', {
2535
+ logger$1j.debug('maybe_emit_credit_check', {
2536
2536
  connector_id: this._connectorFlowId,
2537
2537
  flow_id: flowId,
2538
2538
  trace_id: traceId ?? null,
@@ -2548,7 +2548,7 @@ class BaseAsyncConnector extends TaskSpawner {
2548
2548
  }
2549
2549
  const delta = this._initialWindow;
2550
2550
  this._flowCtrl.addCredits(flowId, delta);
2551
- logger$1k.debug('maybe_emit_credit_emit', {
2551
+ logger$1j.debug('maybe_emit_credit_emit', {
2552
2552
  connector_id: this._connectorFlowId,
2553
2553
  flow_id: flowId,
2554
2554
  trace_id: traceId ?? null,
@@ -2568,7 +2568,7 @@ class BaseAsyncConnector extends TaskSpawner {
2568
2568
  });
2569
2569
  try {
2570
2570
  await this.send(ackEnv);
2571
- logger$1k.debug('maybe_emit_credit_sent', {
2571
+ logger$1j.debug('maybe_emit_credit_sent', {
2572
2572
  connector_id: this._connectorFlowId,
2573
2573
  flow_id: flowId,
2574
2574
  trace_id: traceId ?? null,
@@ -2576,7 +2576,7 @@ class BaseAsyncConnector extends TaskSpawner {
2576
2576
  });
2577
2577
  }
2578
2578
  catch (error) {
2579
- logger$1k.error('maybe_emit_credit_send_failed', {
2579
+ logger$1j.error('maybe_emit_credit_send_failed', {
2580
2580
  connector_id: this._connectorFlowId,
2581
2581
  flow_id: flowId,
2582
2582
  trace_id: traceId ?? null,
@@ -2601,13 +2601,13 @@ class BaseAsyncConnector extends TaskSpawner {
2601
2601
  */
2602
2602
  async _shutdown(code, reason, gracePeriod, exc) {
2603
2603
  if (this._closed) {
2604
- logger$1k.debug('shutdown_already_closed', {
2604
+ logger$1j.debug('shutdown_already_closed', {
2605
2605
  connector_id: this._connectorFlowId,
2606
2606
  current_state: this._state,
2607
2607
  });
2608
2608
  return;
2609
2609
  }
2610
- logger$1k.debug('connector_shutdown_starting', {
2610
+ logger$1j.debug('connector_shutdown_starting', {
2611
2611
  connector_id: this._connectorFlowId,
2612
2612
  connector_type: this.constructor.name,
2613
2613
  code,
@@ -2637,19 +2637,19 @@ class BaseAsyncConnector extends TaskSpawner {
2637
2637
  this._sendPromiseResolve = undefined;
2638
2638
  }
2639
2639
  // Close transport
2640
- logger$1k.debug('connector_closing_transport', {
2640
+ logger$1j.debug('connector_closing_transport', {
2641
2641
  connector_id: this._connectorFlowId,
2642
2642
  connector_type: this.constructor.name,
2643
2643
  timestamp: new Date().toISOString(),
2644
2644
  });
2645
2645
  await this._transportClose(code, reason);
2646
- logger$1k.debug('connector_transport_closed', {
2646
+ logger$1j.debug('connector_transport_closed', {
2647
2647
  connector_id: this._connectorFlowId,
2648
2648
  connector_type: this.constructor.name,
2649
2649
  timestamp: new Date().toISOString(),
2650
2650
  });
2651
2651
  // Shutdown spawned tasks
2652
- logger$1k.debug('connector_shutting_down_tasks', {
2652
+ logger$1j.debug('connector_shutting_down_tasks', {
2653
2653
  connector_id: this._connectorFlowId,
2654
2654
  connector_type: this.constructor.name,
2655
2655
  grace_period_ms: effectiveGracePeriod * 1000,
@@ -2661,14 +2661,14 @@ class BaseAsyncConnector extends TaskSpawner {
2661
2661
  gracePeriod: effectiveGracePeriod * 1000, // Convert to milliseconds
2662
2662
  joinTimeout: this._shutdownJoinTimeout,
2663
2663
  });
2664
- logger$1k.debug('connector_tasks_shutdown_complete', {
2664
+ logger$1j.debug('connector_tasks_shutdown_complete', {
2665
2665
  connector_id: this._connectorFlowId,
2666
2666
  connector_type: this.constructor.name,
2667
2667
  timestamp: new Date().toISOString(),
2668
2668
  });
2669
2669
  }
2670
2670
  catch (error) {
2671
- logger$1k.warning('task_shutdown_error', {
2671
+ logger$1j.warning('task_shutdown_error', {
2672
2672
  connector_id: this._connectorFlowId,
2673
2673
  error: error instanceof Error ? error.message : String(error),
2674
2674
  });
@@ -2681,7 +2681,7 @@ class BaseAsyncConnector extends TaskSpawner {
2681
2681
  if (this._closeResolver) {
2682
2682
  this._closeResolver();
2683
2683
  }
2684
- logger$1k.debug('connector_shutdown_complete', {
2684
+ logger$1j.debug('connector_shutdown_complete', {
2685
2685
  connector_id: this._connectorFlowId,
2686
2686
  connector_type: this.constructor.name,
2687
2687
  final_state: this._state,
@@ -2702,7 +2702,7 @@ class BaseAsyncConnector extends TaskSpawner {
2702
2702
  * A transport adapter that works with both Node.js and browser WebSocket APIs.
2703
2703
  * Supports both native WebSocket clients and server-side WebSocket connections.
2704
2704
  */
2705
- const logger$1j = getLogger('naylence.fame.connector.websocket_connector');
2705
+ const logger$1i = getLogger('naylence.fame.connector.websocket_connector');
2706
2706
  /**
2707
2707
  * WebSocket state constants (mirrors standard WebSocket states)
2708
2708
  */
@@ -2743,7 +2743,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2743
2743
  websocket.send_bytes &&
2744
2744
  typeof websocket.receive_bytes === 'function' &&
2745
2745
  typeof websocket.send_bytes === 'function');
2746
- logger$1j.debug('websocket_connector_created', {
2746
+ logger$1i.debug('websocket_connector_created', {
2747
2747
  is_fastapi_like: this._isFastApiLike,
2748
2748
  ready_state: websocket.readyState,
2749
2749
  url: websocket.url,
@@ -2758,7 +2758,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2758
2758
  socketAny.binaryType = 'arraybuffer';
2759
2759
  }
2760
2760
  catch (error) {
2761
- logger$1j.debug('websocket_set_binary_type_failed', {
2761
+ logger$1i.debug('websocket_set_binary_type_failed', {
2762
2762
  error: error instanceof Error ? error.message : String(error),
2763
2763
  current_type: socketAny.binaryType,
2764
2764
  });
@@ -2814,7 +2814,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2814
2814
  else {
2815
2815
  this._receiveQueue.push(data);
2816
2816
  }
2817
- logger$1j.debug('websocket_message_pushed_to_queue', {
2817
+ logger$1i.debug('websocket_message_pushed_to_queue', {
2818
2818
  queueLength: this._receiveQueue.length,
2819
2819
  waitersLength: this._receiveWaiters.length,
2820
2820
  });
@@ -2867,7 +2867,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2867
2867
  const result = receiveMethod.call(this._websocket);
2868
2868
  // Ensure we have a Promise
2869
2869
  if (!result || typeof result.then !== 'function') {
2870
- logger$1j.error('fastapi_receive_not_awaitable', {
2870
+ logger$1i.error('fastapi_receive_not_awaitable', {
2871
2871
  result_type: typeof result,
2872
2872
  result_str: String(result).substring(0, 100),
2873
2873
  });
@@ -2883,7 +2883,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2883
2883
  }
2884
2884
  // Handle known WebSocket shutdown race condition
2885
2885
  if (this._isAwaitFutureError(error)) {
2886
- logger$1j.debug('websocket_shutdown_race_condition_handled', {
2886
+ logger$1i.debug('websocket_shutdown_race_condition_handled', {
2887
2887
  note: 'Normal WebSocket close timing - converting to cancellation',
2888
2888
  websocket_state: this._websocket.client_state || 'unknown',
2889
2889
  });
@@ -2926,7 +2926,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2926
2926
  }
2927
2927
  catch (error) {
2928
2928
  if (this._isAwaitFutureError(error)) {
2929
- logger$1j.debug('websocket_shutdown_race_condition_detected', {
2929
+ logger$1i.debug('websocket_shutdown_race_condition_detected', {
2930
2930
  websocket_type: this._websocket.constructor.name,
2931
2931
  is_fastapi: this._isFastApiLike,
2932
2932
  note: 'Normal WebSocket close timing during shutdown',
@@ -2972,12 +2972,12 @@ class WebSocketConnector extends BaseAsyncConnector {
2972
2972
  if (socketAny.readyState !== WebSocketState.CLOSED) {
2973
2973
  try {
2974
2974
  socketAny.terminate();
2975
- logger$1j.debug('websocket_force_terminated', {
2975
+ logger$1i.debug('websocket_force_terminated', {
2976
2976
  ready_state: socketAny.readyState,
2977
2977
  });
2978
2978
  }
2979
2979
  catch (error) {
2980
- logger$1j.debug('websocket_force_terminate_failed', {
2980
+ logger$1i.debug('websocket_force_terminate_failed', {
2981
2981
  error: error instanceof Error ? error.message : String(error),
2982
2982
  });
2983
2983
  }
@@ -2988,7 +2988,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2988
2988
  }
2989
2989
  }
2990
2990
  catch (error) {
2991
- logger$1j.error('websocket_close_failed', {
2991
+ logger$1i.error('websocket_close_failed', {
2992
2992
  error: error instanceof Error ? error.message : String(error),
2993
2993
  });
2994
2994
  // Don't re-throw - close errors are not critical during shutdown
@@ -3209,7 +3209,7 @@ class WebSocketConnector extends BaseAsyncConnector {
3209
3209
  this._removeReceiveHandlers();
3210
3210
  }
3211
3211
  catch (error) {
3212
- logger$1j.debug('websocket_remove_handlers_failed', {
3212
+ logger$1i.debug('websocket_remove_handlers_failed', {
3213
3213
  error: error instanceof Error ? error.message : String(error),
3214
3214
  });
3215
3215
  }
@@ -3263,7 +3263,7 @@ class WebSocketConnector extends BaseAsyncConnector {
3263
3263
  * Concrete implementations must define supported grant types and provide grant-to-connector
3264
3264
  * conversion logic.
3265
3265
  */
3266
- const logger$1i = getLogger('naylence.fame.connector.connector_factory');
3266
+ const logger$1h = getLogger('naylence.fame.connector.connector_factory');
3267
3267
  const CONNECTOR_FACTORY_BASE_TYPE = 'ConnectorFactory';
3268
3268
  /**
3269
3269
  * Abstract base class for connector factories
@@ -3299,7 +3299,7 @@ class ConnectorFactory {
3299
3299
  }
3300
3300
  }
3301
3301
  catch (error) {
3302
- logger$1i.warning(`Failed to evaluate grant with factory ${factoryInfo.constructor.name}: ${error}`);
3302
+ logger$1h.warning(`Failed to evaluate grant with factory ${factoryInfo.constructor.name}: ${error}`);
3303
3303
  continue;
3304
3304
  }
3305
3305
  }
@@ -3342,7 +3342,7 @@ class ConnectorFactory {
3342
3342
  }
3343
3343
  }
3344
3344
  catch (error) {
3345
- logger$1i.warning(`Failed to create connector config from grant: ${error}`);
3345
+ logger$1h.warning(`Failed to create connector config from grant: ${error}`);
3346
3346
  continue;
3347
3347
  }
3348
3348
  }
@@ -3409,20 +3409,20 @@ class ConnectorFactory {
3409
3409
  return existing;
3410
3410
  }
3411
3411
  if (existing && !this.isGrantAware(existing)) {
3412
- logger$1i.warning(`Factory ${factoryInfo.constructor.name} is registered under ${CONNECTOR_FACTORY_BASE_TYPE} but is missing grant conversion APIs; skipping.`);
3412
+ logger$1h.warning(`Factory ${factoryInfo.constructor.name} is registered under ${CONNECTOR_FACTORY_BASE_TYPE} but is missing grant conversion APIs; skipping.`);
3413
3413
  return null;
3414
3414
  }
3415
3415
  try {
3416
3416
  const instance = new factoryInfo.constructor();
3417
3417
  if (!this.isGrantAware(instance)) {
3418
- logger$1i.warning(`Factory ${factoryInfo.constructor.name} does not implement grant conversion APIs required by ${CONNECTOR_FACTORY_BASE_TYPE}; skipping.`);
3418
+ logger$1h.warning(`Factory ${factoryInfo.constructor.name} does not implement grant conversion APIs required by ${CONNECTOR_FACTORY_BASE_TYPE}; skipping.`);
3419
3419
  return null;
3420
3420
  }
3421
3421
  factoryInfo.instance = instance;
3422
3422
  return instance;
3423
3423
  }
3424
3424
  catch (error) {
3425
- logger$1i.warning(`Failed to instantiate factory ${factoryInfo.constructor.name} while resolving grant conversion APIs: ${error}`);
3425
+ logger$1h.warning(`Failed to instantiate factory ${factoryInfo.constructor.name} while resolving grant conversion APIs: ${error}`);
3426
3426
  return null;
3427
3427
  }
3428
3428
  }
@@ -3581,7 +3581,7 @@ class AuthInjectionStrategyFactory extends factory.AbstractResourceFactory {
3581
3581
  }
3582
3582
  }
3583
3583
 
3584
- const logger$1h = getLogger('naylence.fame.connector.websocket_connector_factory');
3584
+ const logger$1g = getLogger('naylence.fame.connector.websocket_connector_factory');
3585
3585
  let sslLoader = null;
3586
3586
  function setWebSocketConnectorSslLoader(loader) {
3587
3587
  sslLoader = loader;
@@ -3865,7 +3865,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
3865
3865
  }
3866
3866
  async _defaultWebSocketClient(url, subprotocols, headers) {
3867
3867
  try {
3868
- logger$1h.debug('websocket_connector_connecting', { url, subprotocols });
3868
+ logger$1g.debug('websocket_connector_connecting', { url, subprotocols });
3869
3869
  if (typeof window !== 'undefined' &&
3870
3870
  typeof window.WebSocket !== 'undefined') {
3871
3871
  return await this._createBrowserWebSocket(url, subprotocols);
@@ -3948,7 +3948,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
3948
3948
  await Promise.resolve().then(function () { return websocketConnectorNodeSsl; });
3949
3949
  }
3950
3950
  catch (error) {
3951
- logger$1h.debug('ssl_certificate_loader_import_failed', {
3951
+ logger$1g.debug('ssl_certificate_loader_import_failed', {
3952
3952
  error: error instanceof Error ? error.message : String(error),
3953
3953
  });
3954
3954
  }
@@ -3957,7 +3957,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
3957
3957
  if (!loader) {
3958
3958
  return undefined;
3959
3959
  }
3960
- return await loader(logger$1h);
3960
+ return await loader(logger$1g);
3961
3961
  }
3962
3962
  }
3963
3963
 
@@ -4426,12 +4426,12 @@ async function ensureRuntimeFactoriesRegistered(registry = factory.Registry) {
4426
4426
  }
4427
4427
 
4428
4428
  // This file is auto-generated during build - do not edit manually
4429
- // Generated from package.json version: 0.3.21
4429
+ // Generated from package.json version: 0.3.22
4430
4430
  /**
4431
4431
  * The package version, injected at build time.
4432
4432
  * @internal
4433
4433
  */
4434
- const VERSION = '0.3.21';
4434
+ const VERSION = '0.3.22';
4435
4435
 
4436
4436
  let initialized = false;
4437
4437
  const runtimePlugin = {
@@ -5638,7 +5638,7 @@ async function withLock(lock, operation) {
5638
5638
  return await lock.runExclusive(operation);
5639
5639
  }
5640
5640
 
5641
- const logger$1g = getLogger('naylence.fame.storage.sqlite_storage_provider');
5641
+ const logger$1f = getLogger('naylence.fame.storage.sqlite_storage_provider');
5642
5642
  let cachedSqliteCtor;
5643
5643
  async function loadSqliteConstructor() {
5644
5644
  if (cachedSqliteCtor !== undefined) {
@@ -5662,7 +5662,7 @@ async function loadSqliteConstructor() {
5662
5662
  }
5663
5663
  catch (error) {
5664
5664
  cachedSqliteCtor = null;
5665
- logger$1g.error('failed-to-load-better-sqlite3', {
5665
+ logger$1f.error('failed-to-load-better-sqlite3', {
5666
5666
  error: error instanceof Error ? error.message : String(error),
5667
5667
  });
5668
5668
  throw new Error('Failed to load better-sqlite3. Install it to enable SQLite storage support.');
@@ -5697,7 +5697,7 @@ class SQLiteKeyValueStore {
5697
5697
  }
5698
5698
  catch (error) {
5699
5699
  if (this.autoRecover && this.isCorruptionError(error)) {
5700
- logger$1g.warning('detected-corrupted-db', { path: this.dbPath });
5700
+ logger$1f.warning('detected-corrupted-db', { path: this.dbPath });
5701
5701
  await this.recoverCorruptedDb();
5702
5702
  if (!this.db) {
5703
5703
  throw new Error('Failed to recover SQLite database');
@@ -5752,7 +5752,7 @@ class SQLiteKeyValueStore {
5752
5752
  await this.closeDatabase();
5753
5753
  await this.quarantineCorruptedFiles();
5754
5754
  await this.openDatabase();
5755
- logger$1g.warning('quarantined-corrupted-db', { path: this.dbPath });
5755
+ logger$1f.warning('quarantined-corrupted-db', { path: this.dbPath });
5756
5756
  }
5757
5757
  async closeDatabase() {
5758
5758
  if (this.db) {
@@ -5760,7 +5760,7 @@ class SQLiteKeyValueStore {
5760
5760
  this.db.close();
5761
5761
  }
5762
5762
  catch (error) {
5763
- logger$1g.warning('failed-to-close-sqlite-db', {
5763
+ logger$1f.warning('failed-to-close-sqlite-db', {
5764
5764
  path: this.dbPath,
5765
5765
  error: error instanceof Error ? error.message : String(error),
5766
5766
  });
@@ -5783,7 +5783,7 @@ class SQLiteKeyValueStore {
5783
5783
  await fsPromises.rename(candidate, quarantinedName);
5784
5784
  }
5785
5785
  catch (error) {
5786
- logger$1g.error('failed-to-quarantine-sqlite-file', {
5786
+ logger$1f.error('failed-to-quarantine-sqlite-file', {
5787
5787
  file: candidate,
5788
5788
  error: error instanceof Error ? error.message : String(error),
5789
5789
  });
@@ -5884,7 +5884,7 @@ class SQLiteKeyValueStore {
5884
5884
  result[row.key] = this.deserialize(row.value);
5885
5885
  }
5886
5886
  catch (error) {
5887
- logger$1g.warning('skipping-corrupted-sqlite-entry', {
5887
+ logger$1f.warning('skipping-corrupted-sqlite-entry', {
5888
5888
  key: row.key,
5889
5889
  error: error instanceof Error ? error.message : String(error),
5890
5890
  });
@@ -6879,7 +6879,7 @@ class InMemoryBinding {
6879
6879
  * TypeScript port of Python's InMemoryFanoutBroker that extends TaskSpawner
6880
6880
  * to manage multiple WriteChannel subscribers with concurrent message distribution.
6881
6881
  */
6882
- const logger$1f = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');
6882
+ const logger$1e = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');
6883
6883
  // Sentinel object for shutdown signaling
6884
6884
  const SENTINEL = Symbol('fanout-broker-sentinel');
6885
6885
  function isCloseable(obj) {
@@ -6932,7 +6932,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6932
6932
  }
6933
6933
  catch (error) {
6934
6934
  // Ignore errors when sending sentinel (sink might be closed)
6935
- logger$1f.debug('error_sending_sentinel', {
6935
+ logger$1e.debug('error_sending_sentinel', {
6936
6936
  error: error.message,
6937
6937
  });
6938
6938
  }
@@ -6946,7 +6946,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6946
6946
  await sub.close();
6947
6947
  }
6948
6948
  catch (error) {
6949
- logger$1f.error('error_closing_subscriber', {
6949
+ logger$1e.error('error_closing_subscriber', {
6950
6950
  subscriber: sub.toString(),
6951
6951
  error: error.message,
6952
6952
  });
@@ -6986,7 +6986,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6986
6986
  [envelope, context] = core.extractEnvelopeAndContext(msg);
6987
6987
  }
6988
6988
  catch (error) {
6989
- logger$1f.debug('failed_to_extract_envelope', {
6989
+ logger$1e.debug('failed_to_extract_envelope', {
6990
6990
  error: error.message,
6991
6991
  });
6992
6992
  continue;
@@ -7008,7 +7008,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
7008
7008
  await sub.send(messageToSend);
7009
7009
  }
7010
7010
  catch (error) {
7011
- logger$1f.error('error_sending_to_subscriber', {
7011
+ logger$1e.error('error_sending_to_subscriber', {
7012
7012
  subscriber: sub.toString(),
7013
7013
  error: error.message,
7014
7014
  action: 'unsubscribing',
@@ -7024,7 +7024,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
7024
7024
  }
7025
7025
  catch (error) {
7026
7026
  // Critical broker-level error: log and back off, but keep the loop running
7027
- logger$1f.critical('receive_loop_failed_unexpectedly', {
7027
+ logger$1e.critical('receive_loop_failed_unexpectedly', {
7028
7028
  error: error.message,
7029
7029
  stack: error.stack,
7030
7030
  });
@@ -7733,7 +7733,7 @@ function normalizeResponseType(value) {
7733
7733
  return value;
7734
7734
  }
7735
7735
 
7736
- const logger$1e = getLogger('naylence.fame.node.binding_manager');
7736
+ const logger$1d = getLogger('naylence.fame.node.binding_manager');
7737
7737
  const SYSTEM_INBOX$3 = '__sys__';
7738
7738
  const DEFAULT_ACK_TIMEOUT_MS = 20000;
7739
7739
  class BindingStoreEntryRecord {
@@ -7819,7 +7819,7 @@ class BindingManager {
7819
7819
  if (!this.bindings.has(key)) {
7820
7820
  const binding = this.bindingFactory(new core.FameAddress(key));
7821
7821
  this.bindings.set(key, binding);
7822
- logger$1e.debug('restored_binding', { address: key });
7822
+ logger$1d.debug('restored_binding', { address: key });
7823
7823
  }
7824
7824
  }
7825
7825
  if (!this.hasUpstream) {
@@ -7829,13 +7829,13 @@ class BindingManager {
7829
7829
  await this.readvertiseCapabilitiesUpstream();
7830
7830
  }
7831
7831
  async bind(participant, capabilities) {
7832
- logger$1e.debug('binding_participant', { participant });
7832
+ logger$1d.debug('binding_participant', { participant });
7833
7833
  const { prefixAddress, addresses, propagateAddress, capabilityAddress } = this.computeBindingAddresses(participant);
7834
7834
  for (const address of addresses) {
7835
7835
  if (!this.bindings.has(address)) {
7836
7836
  const binding = this.bindingFactory(new core.FameAddress(address));
7837
7837
  this.bindings.set(address, binding);
7838
- logger$1e.debug('bound_address', { address, participant });
7838
+ logger$1d.debug('bound_address', { address, participant });
7839
7839
  }
7840
7840
  }
7841
7841
  let propagatedAddress = null;
@@ -7864,7 +7864,7 @@ class BindingManager {
7864
7864
  await this.unbindAddressUpstream(propagatedAddress);
7865
7865
  }
7866
7866
  catch (rollbackError) {
7867
- logger$1e.error('bind_rollback_failed', {
7867
+ logger$1d.error('bind_rollback_failed', {
7868
7868
  address: propagatedAddress.toString(),
7869
7869
  error: rollbackError.message,
7870
7870
  });
@@ -7883,7 +7883,7 @@ class BindingManager {
7883
7883
  physicalPath: null,
7884
7884
  });
7885
7885
  }
7886
- logger$1e.debug('bind_success', {
7886
+ logger$1d.debug('bind_success', {
7887
7887
  participant,
7888
7888
  address: prefixAddress.toString(),
7889
7889
  capabilities,
@@ -7919,7 +7919,7 @@ class BindingManager {
7919
7919
  await this.bindingStore.delete(address);
7920
7920
  }
7921
7921
  }
7922
- logger$1e.debug('unbind_success', {
7922
+ logger$1d.debug('unbind_success', {
7923
7923
  participant,
7924
7924
  address: prefixAddress.toString(),
7925
7925
  totalBindings: this.bindings.size,
@@ -7949,7 +7949,7 @@ class BindingManager {
7949
7949
  await this.bindAddressUpstream(new core.FameAddress(address));
7950
7950
  }
7951
7951
  catch (error) {
7952
- logger$1e.error('rebind_failed', {
7952
+ logger$1d.error('rebind_failed', {
7953
7953
  address,
7954
7954
  error: error.message,
7955
7955
  });
@@ -7968,7 +7968,7 @@ class BindingManager {
7968
7968
  await this.advertiseCapabilities(new core.FameAddress(address), Array.from(capabilities));
7969
7969
  }
7970
7970
  catch (error) {
7971
- logger$1e.error('capability_replay_failed', {
7971
+ logger$1d.error('capability_replay_failed', {
7972
7972
  address,
7973
7973
  error: error.message,
7974
7974
  });
@@ -8235,7 +8235,7 @@ class BindingManager {
8235
8235
  }
8236
8236
  }
8237
8237
 
8238
- const logger$1d = getLogger('naylence.fame.node.response_context_manager');
8238
+ const logger$1c = getLogger('naylence.fame.node.response_context_manager');
8239
8239
  function cloneSecurityContext(source) {
8240
8240
  if (!source) {
8241
8241
  return undefined;
@@ -8263,7 +8263,7 @@ class ResponseContextManager {
8263
8263
  security: responseSecurity,
8264
8264
  expectedResponseType: core.FameResponseType.NONE,
8265
8265
  };
8266
- logger$1d.debug('created_response_context', {
8266
+ logger$1c.debug('created_response_context', {
8267
8267
  request_id: requestEnvelope.id,
8268
8268
  inherited_crypto_level: responseSecurity?.inboundCryptoLevel ?? null,
8269
8269
  channel_id: responseSecurity?.cryptoChannelId ?? null,
@@ -8283,14 +8283,14 @@ class ResponseContextManager {
8283
8283
  responseContext.fromSystemId = this.getId();
8284
8284
  }
8285
8285
  // Envelope-level metadata is intentionally omitted to defer to context usage.
8286
- logger$1d.debug('ensured_response_metadata', {
8286
+ logger$1c.debug('ensured_response_metadata', {
8287
8287
  response_id: responseEnvelope.id,
8288
8288
  request_id: requestEnvelope.id,
8289
8289
  });
8290
8290
  }
8291
8291
  }
8292
8292
 
8293
- const logger$1c = getLogger('naylence.fame.node.streaming_response_handler');
8293
+ const logger$1b = getLogger('naylence.fame.node.streaming_response_handler');
8294
8294
  function isObject(value) {
8295
8295
  return typeof value === 'object' && value !== null;
8296
8296
  }
@@ -8409,12 +8409,12 @@ class StreamingResponseHandler {
8409
8409
  }
8410
8410
  async handleStreamingFameMessageResponses(responses, requestEnvelope, requestContext) {
8411
8411
  const asyncResponses = toAsyncIterable(responses);
8412
- logger$1c.debug('handling_streaming_fame_message_responses', {
8412
+ logger$1b.debug('handling_streaming_fame_message_responses', {
8413
8413
  request_id: requestEnvelope.id,
8414
8414
  });
8415
8415
  for await (const response of asyncResponses) {
8416
8416
  if (!response?.envelope) {
8417
- logger$1c.warning('invalid_streaming_response_type', {
8417
+ logger$1b.warning('invalid_streaming_response_type', {
8418
8418
  request_id: requestEnvelope.id,
8419
8419
  actual_type: typeof response,
8420
8420
  });
@@ -8428,7 +8428,7 @@ class StreamingResponseHandler {
8428
8428
  }
8429
8429
  async handleStreamingResponse(result, requestEnvelope, requestContext, replyTo, requestId) {
8430
8430
  const iterable = toAsyncIterable(result);
8431
- logger$1c.debug('handling_streaming_response', {
8431
+ logger$1b.debug('handling_streaming_response', {
8432
8432
  request_id: requestId,
8433
8433
  reply_to: replyTo,
8434
8434
  });
@@ -8439,7 +8439,7 @@ class StreamingResponseHandler {
8439
8439
  await this.sendRpcResponse(null, requestEnvelope, requestContext, replyTo, requestId);
8440
8440
  }
8441
8441
  catch (error) {
8442
- logger$1c.error('streaming_response_handler_error', {
8442
+ logger$1b.error('streaming_response_handler_error', {
8443
8443
  request_id: requestId,
8444
8444
  error: error instanceof Error ? error.message : String(error),
8445
8445
  });
@@ -8466,7 +8466,7 @@ class StreamingResponseHandler {
8466
8466
  });
8467
8467
  const responseContext = this.responseContextManager.createResponseContext(requestEnvelope, requestContext);
8468
8468
  this.responseContextManager.ensureResponseMetadata(responseEnvelope, requestEnvelope, responseContext);
8469
- logger$1c.debug('sending_streaming_rpc_response', {
8469
+ logger$1b.debug('sending_streaming_rpc_response', {
8470
8470
  request_id: requestId,
8471
8471
  response_envelope_id: responseEnvelope.id,
8472
8472
  reply_to: replyTo,
@@ -8479,7 +8479,7 @@ class StreamingResponseHandler {
8479
8479
  }
8480
8480
  }
8481
8481
 
8482
- const logger$1b = getLogger('naylence.fame.node.channel_polling_manager');
8482
+ const logger$1a = getLogger('naylence.fame.node.channel_polling_manager');
8483
8483
  class ChannelPollingManager {
8484
8484
  constructor(deliverWrapper, responseContextManager, streamingResponseHandler) {
8485
8485
  this.deliverWrapper = deliverWrapper;
@@ -8487,7 +8487,7 @@ class ChannelPollingManager {
8487
8487
  this.streamingResponseHandler = streamingResponseHandler;
8488
8488
  }
8489
8489
  async startPollingLoop(serviceName, channel, handler, stopState, pollTimeoutMs = core.DEFAULT_POLLING_TIMEOUT_MS) {
8490
- logger$1b.debug('poll_loop_started', {
8490
+ logger$1a.debug('poll_loop_started', {
8491
8491
  recipient: serviceName,
8492
8492
  });
8493
8493
  try {
@@ -8495,7 +8495,7 @@ class ChannelPollingManager {
8495
8495
  while (true) {
8496
8496
  if (this.isStopRequested(stopState) && !draining) {
8497
8497
  draining = true;
8498
- logger$1b.debug('poll_loop_draining_pending_messages', {
8498
+ logger$1a.debug('poll_loop_draining_pending_messages', {
8499
8499
  recipient: serviceName,
8500
8500
  });
8501
8501
  }
@@ -8505,7 +8505,7 @@ class ChannelPollingManager {
8505
8505
  }
8506
8506
  catch (error) {
8507
8507
  if (error instanceof FameTransportClose) {
8508
- logger$1b.debug('channel_closed', {
8508
+ logger$1a.debug('channel_closed', {
8509
8509
  recipient: serviceName,
8510
8510
  message: error.message,
8511
8511
  });
@@ -8518,7 +8518,7 @@ class ChannelPollingManager {
8518
8518
  continue;
8519
8519
  }
8520
8520
  if (error instanceof Error && error.name === 'AbortError') {
8521
- logger$1b.debug('listener_cancelled', {
8521
+ logger$1a.debug('listener_cancelled', {
8522
8522
  recipient: serviceName,
8523
8523
  });
8524
8524
  throw error;
@@ -8530,13 +8530,13 @@ class ChannelPollingManager {
8530
8530
  continue;
8531
8531
  }
8532
8532
  if (error instanceof Error && error.message === 'Channel is closed') {
8533
- logger$1b.debug('channel_closed', {
8533
+ logger$1a.debug('channel_closed', {
8534
8534
  recipient: serviceName,
8535
8535
  });
8536
8536
  break;
8537
8537
  }
8538
8538
  if (error instanceof Error && error.name === 'TaskCancelledError') {
8539
- logger$1b.debug('listener_cancelled', {
8539
+ logger$1a.debug('listener_cancelled', {
8540
8540
  recipient: serviceName,
8541
8541
  });
8542
8542
  throw error;
@@ -8548,12 +8548,12 @@ class ChannelPollingManager {
8548
8548
  continue;
8549
8549
  }
8550
8550
  if (error instanceof Error && error.message.includes('closed')) {
8551
- logger$1b.debug('channel_closed', {
8551
+ logger$1a.debug('channel_closed', {
8552
8552
  recipient: serviceName,
8553
8553
  });
8554
8554
  break;
8555
8555
  }
8556
- logger$1b.error('transport_error', {
8556
+ logger$1a.error('transport_error', {
8557
8557
  recipient: serviceName,
8558
8558
  error: error instanceof Error ? error.message : String(error),
8559
8559
  });
@@ -8569,7 +8569,7 @@ class ChannelPollingManager {
8569
8569
  }
8570
8570
  }
8571
8571
  finally {
8572
- logger$1b.debug('poll_loop_exiting', {
8572
+ logger$1a.debug('poll_loop_exiting', {
8573
8573
  recipient: serviceName,
8574
8574
  });
8575
8575
  }
@@ -8582,7 +8582,7 @@ class ChannelPollingManager {
8582
8582
  await this.processHandlerResult(result, envelope, deliveryContext, serviceName);
8583
8583
  }
8584
8584
  catch (error) {
8585
- logger$1b.error('handler_crashed', {
8585
+ logger$1a.error('handler_crashed', {
8586
8586
  recipient: serviceName,
8587
8587
  error: error instanceof Error ? error.message : String(error),
8588
8588
  });
@@ -8596,7 +8596,7 @@ class ChannelPollingManager {
8596
8596
  return;
8597
8597
  }
8598
8598
  if (this.streamingResponseHandler.isStreamingFameMessageResponse(result)) {
8599
- logger$1b.debug('handling_streaming_fame_message_responses', {
8599
+ logger$1a.debug('handling_streaming_fame_message_responses', {
8600
8600
  service_name: serviceName,
8601
8601
  envelope_id: envelope.id,
8602
8602
  });
@@ -8604,7 +8604,7 @@ class ChannelPollingManager {
8604
8604
  }
8605
8605
  }
8606
8606
  async handleMessageResponse(response, requestEnvelope, requestContext, serviceName) {
8607
- logger$1b.debug('delivering_envelope_response_message', {
8607
+ logger$1a.debug('delivering_envelope_response_message', {
8608
8608
  service_name: serviceName,
8609
8609
  response_envelope_id: response.envelope.id,
8610
8610
  });
@@ -8624,7 +8624,7 @@ class ChannelPollingManager {
8624
8624
  }
8625
8625
  }
8626
8626
 
8627
- const logger$1a = getLogger('naylence.fame.node.rpc_server_handler');
8627
+ const logger$19 = getLogger('naylence.fame.node.rpc_server_handler');
8628
8628
  function isPlainRecord$6(value) {
8629
8629
  if (typeof value !== 'object' || value === null) {
8630
8630
  return false;
@@ -8668,13 +8668,13 @@ class RPCServerHandler {
8668
8668
  }
8669
8669
  async handleRpcRequest(envelope, handlerContext, handler, serviceName) {
8670
8670
  if (!this.isDataFrame(envelope.frame)) {
8671
- logger$1a.warning('rpc_request_missing_data_frame', {
8671
+ logger$19.warning('rpc_request_missing_data_frame', {
8672
8672
  service_name: serviceName,
8673
8673
  envelope_id: envelope.id,
8674
8674
  });
8675
8675
  return;
8676
8676
  }
8677
- logger$1a.debug('rpc_request_received', {
8677
+ logger$19.debug('rpc_request_received', {
8678
8678
  service_name: serviceName,
8679
8679
  envelope_id: envelope.id,
8680
8680
  trace_id: envelope.traceId,
@@ -8686,7 +8686,7 @@ class RPCServerHandler {
8686
8686
  request = core.parseRequest(envelope.frame.payload);
8687
8687
  params = cloneParams(request.params);
8688
8688
  const paramKeys = Object.keys(params);
8689
- logger$1a.debug('parsed_rpc_request', {
8689
+ logger$19.debug('parsed_rpc_request', {
8690
8690
  service_name: serviceName,
8691
8691
  method: request.method,
8692
8692
  request_id: request.id,
@@ -8695,7 +8695,7 @@ class RPCServerHandler {
8695
8695
  });
8696
8696
  }
8697
8697
  catch (error) {
8698
- logger$1a.warning('request_decode_error', {
8698
+ logger$19.warning('request_decode_error', {
8699
8699
  service_name: serviceName,
8700
8700
  envelope_id: envelope.id,
8701
8701
  error: error instanceof Error ? error.message : String(error),
@@ -8703,7 +8703,7 @@ class RPCServerHandler {
8703
8703
  return;
8704
8704
  }
8705
8705
  if (request.id == null) {
8706
- logger$1a.warning('request_missing_id', {
8706
+ logger$19.warning('request_missing_id', {
8707
8707
  service_name: serviceName,
8708
8708
  envelope_id: envelope.id,
8709
8709
  });
@@ -8711,7 +8711,7 @@ class RPCServerHandler {
8711
8711
  }
8712
8712
  const replyTo = this.resolveReplyTo(envelope, params);
8713
8713
  if (!replyTo) {
8714
- logger$1a.warning('missing_reply_to', {
8714
+ logger$19.warning('missing_reply_to', {
8715
8715
  service_name: serviceName,
8716
8716
  envelope_id: envelope.id,
8717
8717
  request_id: request.id,
@@ -8720,13 +8720,13 @@ class RPCServerHandler {
8720
8720
  }
8721
8721
  let handlerResult;
8722
8722
  try {
8723
- logger$1a.debug('calling_rpc_handler', {
8723
+ logger$19.debug('calling_rpc_handler', {
8724
8724
  service_name: serviceName,
8725
8725
  method: request.method,
8726
8726
  request_id: request.id,
8727
8727
  });
8728
8728
  handlerResult = await handler(request.method, params);
8729
- logger$1a.debug('rpc_handler_returned', {
8729
+ logger$19.debug('rpc_handler_returned', {
8730
8730
  service_name: serviceName,
8731
8731
  method: request.method,
8732
8732
  request_id: request.id,
@@ -8735,7 +8735,7 @@ class RPCServerHandler {
8735
8735
  });
8736
8736
  }
8737
8737
  catch (error) {
8738
- logger$1a.error('rpc_handler_error', {
8738
+ logger$19.error('rpc_handler_error', {
8739
8739
  service_name: serviceName,
8740
8740
  request_id: request.id,
8741
8741
  envelope_id: envelope.id,
@@ -8745,7 +8745,7 @@ class RPCServerHandler {
8745
8745
  return this.createTraditionalResponse(response, request.id, envelope, replyTo, handlerContext, serviceName);
8746
8746
  }
8747
8747
  if (core.isFameMessageResponse(handlerResult)) {
8748
- logger$1a.debug('returning_response_message', {
8748
+ logger$19.debug('returning_response_message', {
8749
8749
  service_name: serviceName,
8750
8750
  request_id: request.id,
8751
8751
  response_envelope_id: handlerResult.envelope.id,
@@ -8753,7 +8753,7 @@ class RPCServerHandler {
8753
8753
  return handlerResult;
8754
8754
  }
8755
8755
  if (this.streamingResponseHandler.isStreamingResult(handlerResult)) {
8756
- logger$1a.debug('handling_streaming_response', {
8756
+ logger$19.debug('handling_streaming_response', {
8757
8757
  service_name: serviceName,
8758
8758
  request_id: request.id,
8759
8759
  envelope_id: envelope.id,
@@ -8782,7 +8782,7 @@ class RPCServerHandler {
8782
8782
  return null;
8783
8783
  }
8784
8784
  async createTraditionalResponse(payload, requestId, requestEnvelope, replyTo, handlerContext, serviceName) {
8785
- logger$1a.debug('creating_traditional_response_envelope', {
8785
+ logger$19.debug('creating_traditional_response_envelope', {
8786
8786
  service_name: serviceName,
8787
8787
  request_id: requestId,
8788
8788
  envelope_id: requestEnvelope.id,
@@ -8806,7 +8806,7 @@ class RPCServerHandler {
8806
8806
  if (requestEnvelope.id) {
8807
8807
  responseContext.meta['response-to-id'] = requestEnvelope.id;
8808
8808
  }
8809
- logger$1a.debug('returning_traditional_response', {
8809
+ logger$19.debug('returning_traditional_response', {
8810
8810
  service_name: serviceName,
8811
8811
  request_id: requestId,
8812
8812
  envelope_id: requestEnvelope.id,
@@ -8871,7 +8871,7 @@ function normalizeErrorCode(code) {
8871
8871
  return code;
8872
8872
  }
8873
8873
 
8874
- const logger$19 = getLogger('naylence.fame.node.rpc_client_manager');
8874
+ const logger$18 = getLogger('naylence.fame.node.rpc_client_manager');
8875
8875
  function isPlainRecord$5(value) {
8876
8876
  if (typeof value !== 'object' || value === null) {
8877
8877
  return false;
@@ -9088,7 +9088,7 @@ class RPCClientManager {
9088
9088
  const metaReason = tracked.meta?.['nack_reason'];
9089
9089
  const formattedMessage = formatDeliveryErrorMessage(typeof metaCode === 'string' ? metaCode : 'DELIVERY_ERROR', reason ??
9090
9090
  (typeof metaReason === 'string' ? metaReason : undefined));
9091
- logger$19.debug('pending_request_rejected_by_delivery_nack', {
9091
+ logger$18.debug('pending_request_rejected_by_delivery_nack', {
9092
9092
  envelope_id: envelopeId,
9093
9093
  request_id: requestId,
9094
9094
  code: typeof metaCode === 'string' ? metaCode : 'DELIVERY_ERROR',
@@ -9111,7 +9111,7 @@ class RPCClientManager {
9111
9111
  this.trackerWithEvents.removeEventHandler?.(this.trackerEventHandler);
9112
9112
  }
9113
9113
  catch (error) {
9114
- logger$19.debug('rpc_tracker_handler_remove_failed', {
9114
+ logger$18.debug('rpc_tracker_handler_remove_failed', {
9115
9115
  error: error instanceof Error ? error.message : String(error),
9116
9116
  });
9117
9117
  }
@@ -9154,7 +9154,7 @@ class RPCClientManager {
9154
9154
  this.rpcListenerAddress = await this.listenCallback(recipient, handler);
9155
9155
  this.rpcBound = true;
9156
9156
  this.boundPhysicalPath = currentPhysicalPath;
9157
- logger$19.debug('rpc_reply_listener_bound', {
9157
+ logger$18.debug('rpc_reply_listener_bound', {
9158
9158
  reply_recipient: recipient,
9159
9159
  reply_address: this.rpcReplyAddress?.toString(),
9160
9160
  listener_address: this.rpcListenerAddress?.toString(),
@@ -9248,7 +9248,7 @@ class RPCClientManager {
9248
9248
  const finalizePromise = this.notifyStreamClosed(envelopeId);
9249
9249
  if (finalizePromise) {
9250
9250
  finalizePromise.catch((notifyError) => {
9251
- logger$19.debug('stream_tracker_finalize_failed', {
9251
+ logger$18.debug('stream_tracker_finalize_failed', {
9252
9252
  request_id: requestId,
9253
9253
  envelope_id: envelopeId,
9254
9254
  error: notifyError instanceof Error
@@ -9309,7 +9309,7 @@ class RPCClientManager {
9309
9309
  return iterator;
9310
9310
  }
9311
9311
  async sendRpcRequest(requestId, envelope, expectedResponseType, timeoutMs) {
9312
- logger$19.debug('sending_rpc_request', {
9312
+ logger$18.debug('sending_rpc_request', {
9313
9313
  envp_id: envelope.id,
9314
9314
  corr_id: envelope.corrId,
9315
9315
  request_id: requestId,
@@ -9325,7 +9325,7 @@ class RPCClientManager {
9325
9325
  }
9326
9326
  }
9327
9327
  catch (error) {
9328
- logger$19.warning('delivery_tracker_track_failed', {
9328
+ logger$18.warning('delivery_tracker_track_failed', {
9329
9329
  request_id: requestId,
9330
9330
  error: error instanceof Error ? error.message : String(error),
9331
9331
  });
@@ -9338,14 +9338,14 @@ class RPCClientManager {
9338
9338
  await this.deliverWrapper()(envelope, context);
9339
9339
  }
9340
9340
  async handleReplyEnvelope(envelope) {
9341
- logger$19.debug('handle_reply_envelope_received', {
9341
+ logger$18.debug('handle_reply_envelope_received', {
9342
9342
  envelope_id: envelope.id,
9343
9343
  corr_id: envelope.corrId,
9344
9344
  frame_type: envelope.frame?.['type'],
9345
9345
  });
9346
9346
  let requestId = envelope.corrId ?? envelope.id;
9347
9347
  if (!requestId) {
9348
- logger$19.warning('reply_envelope_missing_corr_id', {
9348
+ logger$18.warning('reply_envelope_missing_corr_id', {
9349
9349
  envelope_id: envelope.id,
9350
9350
  });
9351
9351
  return;
@@ -9363,12 +9363,12 @@ class RPCClientManager {
9363
9363
  }
9364
9364
  }
9365
9365
  if (!entry) {
9366
- logger$19.debug('no_pending_request_for_reply', {
9366
+ logger$18.debug('no_pending_request_for_reply', {
9367
9367
  request_id: requestId,
9368
9368
  });
9369
9369
  return;
9370
9370
  }
9371
- logger$19.debug('handle_reply_envelope', {
9371
+ logger$18.debug('handle_reply_envelope', {
9372
9372
  envelope_id: envelope.id,
9373
9373
  request_id: requestId,
9374
9374
  corr_id: envelope.corrId,
@@ -9381,7 +9381,7 @@ class RPCClientManager {
9381
9381
  const ackIndicatesSuccess = frame.ok === true ||
9382
9382
  (frame.ok === undefined && !frame.code && !frame.reason);
9383
9383
  if (ackIndicatesSuccess) {
9384
- logger$19.debug('pending_request_delivery_acknowledged', {
9384
+ logger$18.debug('pending_request_delivery_acknowledged', {
9385
9385
  request_id: requestId,
9386
9386
  envelope_id: envelope.id,
9387
9387
  ref_id: frame.refId ?? null,
@@ -9409,7 +9409,7 @@ class RPCClientManager {
9409
9409
  entry.timer = null;
9410
9410
  }
9411
9411
  if (!this.isDataFrame(envelope.frame)) {
9412
- logger$19.warning('unexpected_reply_frame_type', {
9412
+ logger$18.warning('unexpected_reply_frame_type', {
9413
9413
  request_id: requestId,
9414
9414
  frame_type: envelope.frame?.['type'],
9415
9415
  });
@@ -9475,7 +9475,7 @@ class RPCClientManager {
9475
9475
  return;
9476
9476
  }
9477
9477
  Promise.resolve(this.deliveryTracker.onStreamItem(envelopeId, envelope)).catch((error) => {
9478
- logger$19.debug('stream_tracker_push_failed', {
9478
+ logger$18.debug('stream_tracker_push_failed', {
9479
9479
  envelope_id: envelopeId,
9480
9480
  error: error instanceof Error ? error.message : String(error),
9481
9481
  });
@@ -9590,7 +9590,7 @@ function normalizeMailbox(mailbox) {
9590
9590
  return mailbox;
9591
9591
  }
9592
9592
 
9593
- const logger$18 = getLogger('naylence.fame.node.envelope_listener_manager');
9593
+ const logger$17 = getLogger('naylence.fame.node.envelope_listener_manager');
9594
9594
  const SYSTEM_INBOX$2 = '__sys__';
9595
9595
  class EnvelopeListener {
9596
9596
  constructor(stopFn, task) {
@@ -9598,7 +9598,7 @@ class EnvelopeListener {
9598
9598
  this.task = task;
9599
9599
  }
9600
9600
  stop() {
9601
- logger$18.debug('stopping_listener', {
9601
+ logger$17.debug('stopping_listener', {
9602
9602
  task_name: this.task.name,
9603
9603
  });
9604
9604
  try {
@@ -9606,7 +9606,7 @@ class EnvelopeListener {
9606
9606
  if (maybeCleanup &&
9607
9607
  typeof maybeCleanup.then === 'function') {
9608
9608
  void maybeCleanup.catch((error) => {
9609
- logger$18.debug('listener_stop_cleanup_failed', {
9609
+ logger$17.debug('listener_stop_cleanup_failed', {
9610
9610
  task_name: this.task.name,
9611
9611
  error: error instanceof Error ? error.message : String(error),
9612
9612
  });
@@ -9614,7 +9614,7 @@ class EnvelopeListener {
9614
9614
  }
9615
9615
  }
9616
9616
  catch (error) {
9617
- logger$18.debug('listener_stop_cleanup_failed', {
9617
+ logger$17.debug('listener_stop_cleanup_failed', {
9618
9618
  task_name: this.task.name,
9619
9619
  error: error instanceof Error ? error.message : String(error),
9620
9620
  });
@@ -9644,7 +9644,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9644
9644
  envelope.replyTo = core.formatAddress(SYSTEM_INBOX$2, this.nodeLike.physicalPath);
9645
9645
  }
9646
9646
  catch (error) {
9647
- logger$18.warning('default_reply_to_assignment_failed', {
9647
+ logger$17.warning('default_reply_to_assignment_failed', {
9648
9648
  envelope_id: envelope.id,
9649
9649
  service_name: envelope.capabilities?.[0] ?? null,
9650
9650
  error: error instanceof Error ? error.message : String(error),
@@ -9669,7 +9669,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9669
9669
  if (serviceName === SYSTEM_INBOX$2) {
9670
9670
  continue;
9671
9671
  }
9672
- logger$18.debug('stopping_listener_for_service', {
9672
+ logger$17.debug('stopping_listener_for_service', {
9673
9673
  service_name: serviceName,
9674
9674
  });
9675
9675
  entry.listener.stop();
@@ -9679,7 +9679,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9679
9679
  catch (error) {
9680
9680
  if (!(error instanceof Error) ||
9681
9681
  error.name !== 'TaskCancelledError') {
9682
- logger$18.debug('listener_task_stopped', {
9682
+ logger$17.debug('listener_task_stopped', {
9683
9683
  service_name: serviceName,
9684
9684
  error: error instanceof Error ? error.message : String(error),
9685
9685
  });
@@ -9687,7 +9687,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9687
9687
  }
9688
9688
  }
9689
9689
  if (systemEntry) {
9690
- logger$18.debug('stopping_listener_for_service', {
9690
+ logger$17.debug('stopping_listener_for_service', {
9691
9691
  service_name: SYSTEM_INBOX$2,
9692
9692
  });
9693
9693
  systemEntry.listener.stop();
@@ -9697,7 +9697,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9697
9697
  catch (error) {
9698
9698
  if (!(error instanceof Error) ||
9699
9699
  error.name !== 'TaskCancelledError') {
9700
- logger$18.debug('listener_task_stopped', {
9700
+ logger$17.debug('listener_task_stopped', {
9701
9701
  service_name: SYSTEM_INBOX$2,
9702
9702
  error: error instanceof Error ? error.message : String(error),
9703
9703
  });
@@ -9714,13 +9714,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9714
9714
  }
9715
9715
  async recoverUnhandledInboundEnvelopes() {
9716
9716
  if (typeof this.deliveryTracker.listInbound !== 'function') {
9717
- logger$18.debug('delivery_tracker_missing_inbound_listing');
9717
+ logger$17.debug('delivery_tracker_missing_inbound_listing');
9718
9718
  return;
9719
9719
  }
9720
9720
  const failedInbound = await this.deliveryTracker.listInbound((env) => env.status === EnvelopeStatus.RECEIVED ||
9721
9721
  env.status === EnvelopeStatus.FAILED_TO_HANDLE);
9722
9722
  if (!failedInbound.length) {
9723
- logger$18.debug('no_failed_inbound_envelopes_to_recover');
9723
+ logger$17.debug('no_failed_inbound_envelopes_to_recover');
9724
9724
  return;
9725
9725
  }
9726
9726
  const grouped = new Map();
@@ -9737,7 +9737,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9737
9737
  this.pendingRecoveryEnvelopes.set(serviceName, envelopes);
9738
9738
  }
9739
9739
  });
9740
- logger$18.debug('discovered_failed_inbound_envelopes', {
9740
+ logger$17.debug('discovered_failed_inbound_envelopes', {
9741
9741
  total: failedInbound.length,
9742
9742
  services: Array.from(grouped.keys()),
9743
9743
  });
@@ -9747,7 +9747,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9747
9747
  const pollTimeoutMs = options.pollTimeoutMs ??
9748
9748
  options.poll_timeout_ms ??
9749
9749
  core.DEFAULT_POLLING_TIMEOUT_MS;
9750
- logger$18.debug('listen_start', {
9750
+ logger$17.debug('listen_start', {
9751
9751
  recipient: serviceName,
9752
9752
  poll_timeout_ms: pollTimeoutMs ?? core.DEFAULT_POLLING_TIMEOUT_MS,
9753
9753
  });
@@ -9778,7 +9778,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9778
9778
  tracked?.mailboxType === MailboxType.OUTBOX ||
9779
9779
  envelope.frame?.['type'] === 'DeliveryAck';
9780
9780
  if (!shouldInvoke) {
9781
- logger$18.debug('skipping_listener_handler', {
9781
+ logger$17.debug('skipping_listener_handler', {
9782
9782
  recipient: serviceName,
9783
9783
  envelope_id: envelope.id,
9784
9784
  tracked_status: tracked?.status,
@@ -9792,13 +9792,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9792
9792
  ? undefined
9793
9793
  : (tracked ?? undefined);
9794
9794
  if (trackedForHandler && trackedForHandler.attempt > 0) {
9795
- logger$18.info('resuming_handler_retry_after_restart', {
9795
+ logger$17.info('resuming_handler_retry_after_restart', {
9796
9796
  envelope_id: envelope.id,
9797
9797
  current_attempts: trackedForHandler.attempt,
9798
9798
  service_name: serviceName,
9799
9799
  });
9800
9800
  }
9801
- logger$18.debug('forwarding_to_listener_handler', {
9801
+ logger$17.debug('forwarding_to_listener_handler', {
9802
9802
  recipient: serviceName,
9803
9803
  envelope_id: envelope.id,
9804
9804
  frame_type: envelope.frame?.['type'],
@@ -9817,7 +9817,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9817
9817
  await channel.send(null);
9818
9818
  }
9819
9819
  catch (error) {
9820
- logger$18.debug('listener_stop_signal_failed', {
9820
+ logger$17.debug('listener_stop_signal_failed', {
9821
9821
  service_name: serviceName,
9822
9822
  error: error instanceof Error ? error.message : String(error),
9823
9823
  });
@@ -9826,7 +9826,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9826
9826
  await this.listenersLock.runExclusive(async () => {
9827
9827
  const existing = this.listeners.get(serviceName);
9828
9828
  if (existing) {
9829
- logger$18.debug('replacing_envelope_listener', { recipient: serviceName });
9829
+ logger$17.debug('replacing_envelope_listener', { recipient: serviceName });
9830
9830
  existing.listener.stop();
9831
9831
  try {
9832
9832
  await existing.listener.task.promise;
@@ -9844,13 +9844,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9844
9844
  return binding.address;
9845
9845
  }
9846
9846
  async listenRpc(serviceName, handler, options = {}) {
9847
- logger$18.debug('rpc_listen_start', { service_name: serviceName });
9847
+ logger$17.debug('rpc_listen_start', { service_name: serviceName });
9848
9848
  const rpcHandler = async (envelope, context) => {
9849
9849
  const result = await this.rpcServerHandler.handleRpcRequest(envelope, context, handler, serviceName);
9850
9850
  return result ?? null;
9851
9851
  };
9852
9852
  const address = await this.listen(serviceName, rpcHandler, options);
9853
- logger$18.debug('rpc_listen_bound', {
9853
+ logger$17.debug('rpc_listen_bound', {
9854
9854
  service_name: serviceName,
9855
9855
  address: address.toString(),
9856
9856
  });
@@ -9919,12 +9919,12 @@ class EnvelopeListenerManager extends TaskSpawner {
9919
9919
  return cached;
9920
9920
  });
9921
9921
  if (!envelopes.length) {
9922
- logger$18.debug('no_cached_recovery_for_service', {
9922
+ logger$17.debug('no_cached_recovery_for_service', {
9923
9923
  service_name: serviceName,
9924
9924
  });
9925
9925
  return;
9926
9926
  }
9927
- logger$18.debug('recovering_unhandled_envelopes_on_listen', {
9927
+ logger$17.debug('recovering_unhandled_envelopes_on_listen', {
9928
9928
  service_name: serviceName,
9929
9929
  count: envelopes.length,
9930
9930
  envelope_ids: envelopes.map((trackedEnvelope) => trackedEnvelope.envelopeId),
@@ -9935,7 +9935,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9935
9935
  async recoverServiceEnvelopes(serviceName, envelopes, handler) {
9936
9936
  for (const tracked of envelopes) {
9937
9937
  try {
9938
- logger$18.warning('recovering_unhandled_envelope', {
9938
+ logger$17.warning('recovering_unhandled_envelope', {
9939
9939
  envelope_id: tracked.envelopeId,
9940
9940
  service_name: serviceName,
9941
9941
  current_attempts: tracked.attempt,
@@ -9944,13 +9944,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9944
9944
  const originalEnvelope = tracked.originalEnvelope;
9945
9945
  const receiverPolicy = this.nodeLike.deliveryPolicy?.receiverRetryPolicy ?? undefined;
9946
9946
  await this.executeHandlerWithRetries(handler, originalEnvelope, undefined, receiverPolicy, tracked, serviceName);
9947
- logger$18.debug('envelope_recovery_completed', {
9947
+ logger$17.debug('envelope_recovery_completed', {
9948
9948
  envelope_id: tracked.envelopeId,
9949
9949
  service_name: serviceName,
9950
9950
  });
9951
9951
  }
9952
9952
  catch (error) {
9953
- logger$18.error('envelope_recovery_failed', {
9953
+ logger$17.error('envelope_recovery_failed', {
9954
9954
  envelope_id: tracked.envelopeId,
9955
9955
  service_name: serviceName,
9956
9956
  error: error instanceof Error ? error.message : String(error),
@@ -9996,7 +9996,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9996
9996
  await this.deliveryTracker.onEnvelopeHandled(trackedEnvelope);
9997
9997
  }
9998
9998
  if (currentAttempt > 0) {
9999
- logger$18.info('handler_retry_succeeded', {
9999
+ logger$17.info('handler_retry_succeeded', {
10000
10000
  envelope_id: envelope.id,
10001
10001
  attempt: currentAttempt + 1,
10002
10002
  total_attempts: currentAttempt + 1,
@@ -10012,7 +10012,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10012
10012
  await this.deliveryTracker.onEnvelopeHandleFailed(inboxName, trackedEnvelope, context, error instanceof Error ? error : new Error(String(error)), isFinalAttempt);
10013
10013
  }
10014
10014
  if (isFinalAttempt) {
10015
- logger$18.error('handler_execution_failed_exhausted_retries', {
10015
+ logger$17.error('handler_execution_failed_exhausted_retries', {
10016
10016
  envelope_id: envelope.id,
10017
10017
  total_attempts: attemptNumber,
10018
10018
  max_retries: retryPolicy?.maxRetries ?? 0,
@@ -10021,7 +10021,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10021
10021
  break;
10022
10022
  }
10023
10023
  const delayMs = retryPolicy?.nextDelayMs(attemptNumber) ?? 0;
10024
- logger$18.warning('handler_execution_failed_will_retry', {
10024
+ logger$17.warning('handler_execution_failed_will_retry', {
10025
10025
  envelope_id: envelope.id,
10026
10026
  attempt: attemptNumber,
10027
10027
  max_retries: retryPolicy?.maxRetries ?? 0,
@@ -10051,7 +10051,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10051
10051
  }
10052
10052
  }
10053
10053
 
10054
- const logger$17 = getLogger('naylence.fame.delivery.default_delivery_tracker');
10054
+ const logger$16 = getLogger('naylence.fame.delivery.default_delivery_tracker');
10055
10055
  const STREAM_END = Symbol('stream-end');
10056
10056
  const SWEEPER_TICK = Symbol('tracker-sweeper-tick');
10057
10057
  function createDeferred$2() {
@@ -10283,7 +10283,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10283
10283
  const expectedResponseType = options.expectedResponseType;
10284
10284
  const tracked = await this.lock.runExclusive(async () => {
10285
10285
  if (this.ackFutures.has(envelope.id)) {
10286
- logger$17.debug('tracker_envelope_already_tracked', {
10286
+ logger$16.debug('tracker_envelope_already_tracked', {
10287
10287
  envp_id: envelope.id,
10288
10288
  });
10289
10289
  return null;
@@ -10293,7 +10293,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10293
10293
  if (expectedResponseType & core.FameResponseType.REPLY ||
10294
10294
  expectedResponseType & core.FameResponseType.STREAM) {
10295
10295
  if (existingEnvId && existingEnvId !== envelope.id) {
10296
- logger$17.debug('envelope_already_tracked_for_replies', {
10296
+ logger$16.debug('envelope_already_tracked_for_replies', {
10297
10297
  envp_id: envelope.id,
10298
10298
  corr_id: corrId,
10299
10299
  expected_response_type: expectedResponseType,
@@ -10342,7 +10342,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10342
10342
  return null;
10343
10343
  }
10344
10344
  await this.scheduleTimer(tracked, options.retryPolicy ?? null, options.retryHandler ?? null);
10345
- logger$17.debug('tracker_registered_envelope', {
10345
+ logger$16.debug('tracker_registered_envelope', {
10346
10346
  envp_id: envelope.id,
10347
10347
  corr_id: tracked.originalEnvelope.corrId,
10348
10348
  expected_response: tracked.expectedResponseType,
@@ -10366,21 +10366,21 @@ class DefaultDeliveryTracker extends TaskSpawner {
10366
10366
  return this.awaitEnvelopeFuture(envelopeId, core.FameResponseType.REPLY | core.FameResponseType.STREAM, future, timeoutMs);
10367
10367
  }
10368
10368
  async onEnvelopeDelivered(inboxName, envelope, context) {
10369
- logger$17.debug('envelope_delivered', {
10369
+ logger$16.debug('envelope_delivered', {
10370
10370
  envp_id: envelope.id,
10371
10371
  corr_id: envelope.corrId,
10372
10372
  rtype: envelope.rtype ?? core.FameResponseType.NONE,
10373
10373
  frame_type: envelope.frame?.type ?? 'unknown',
10374
10374
  });
10375
10375
  if (!envelope.corrId) {
10376
- logger$17.debug('envelope_delivered_no_corr_id', {
10376
+ logger$16.debug('envelope_delivered_no_corr_id', {
10377
10377
  envelope_id: envelope.id,
10378
10378
  });
10379
10379
  return null;
10380
10380
  }
10381
10381
  if (this.isDeliveryAckFrame(envelope.frame)) {
10382
10382
  if (!envelope.frame.refId) {
10383
- logger$17.debug('envelope_delivered_no_ref_id', {
10383
+ logger$16.debug('envelope_delivered_no_ref_id', {
10384
10384
  envelope_id: envelope.id,
10385
10385
  });
10386
10386
  return null;
@@ -10418,7 +10418,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10418
10418
  await inbox.set(envelope.id, tracked);
10419
10419
  }
10420
10420
  else {
10421
- logger$17.debug('tracker_duplicate_envelope_already_handled', {
10421
+ logger$16.debug('tracker_duplicate_envelope_already_handled', {
10422
10422
  envp_id: envelope.id,
10423
10423
  status: tracked.status,
10424
10424
  });
@@ -10461,7 +10461,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10461
10461
  }
10462
10462
  if (isFinalFailure) {
10463
10463
  envelope.status = EnvelopeStatus.FAILED_TO_HANDLE;
10464
- logger$17.error('envelope_handle_failed_final', {
10464
+ logger$16.error('envelope_handle_failed_final', {
10465
10465
  inbox_name: inboxName,
10466
10466
  envp_id: envelope.originalEnvelope.id,
10467
10467
  error: error?.message ?? 'unknown',
@@ -10472,7 +10472,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10472
10472
  await inbox.delete(envelope.originalEnvelope.id);
10473
10473
  return;
10474
10474
  }
10475
- logger$17.warning('envelope_handle_failed_retry', {
10475
+ logger$16.warning('envelope_handle_failed_retry', {
10476
10476
  inbox_name: inboxName,
10477
10477
  envp_id: envelope.originalEnvelope.id,
10478
10478
  error: error?.message ?? 'unknown',
@@ -10518,14 +10518,14 @@ class DefaultDeliveryTracker extends TaskSpawner {
10518
10518
  if (handledViaFuture) {
10519
10519
  await this.markDoneSince(this.ackFutures, refId, this.ackDoneSince);
10520
10520
  await this.clearTimer(refId);
10521
- logger$17.debug('tracker_ack_resolved_without_tracked_envelope', {
10521
+ logger$16.debug('tracker_ack_resolved_without_tracked_envelope', {
10522
10522
  envp_id: envelope.id,
10523
10523
  ref_id: refId,
10524
10524
  corr_id: envelope.corrId,
10525
10525
  });
10526
10526
  return;
10527
10527
  }
10528
- logger$17.debug('tracker_ack_for_unknown_envelope', {
10528
+ logger$16.debug('tracker_ack_for_unknown_envelope', {
10529
10529
  envp_id: envelope.id,
10530
10530
  ref_id: refId,
10531
10531
  corr_id: envelope.corrId,
@@ -10533,7 +10533,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10533
10533
  return;
10534
10534
  }
10535
10535
  if (tracked.originalEnvelope.corrId !== envelope.corrId) {
10536
- logger$17.debug('tracker_ack_corr_id_mismatch', {
10536
+ logger$16.debug('tracker_ack_corr_id_mismatch', {
10537
10537
  envp_id: envelope.id,
10538
10538
  expected_corr_id: tracked.originalEnvelope.corrId,
10539
10539
  actual_corr_id: envelope.corrId,
@@ -10558,7 +10558,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10558
10558
  for (const handler of this.eventHandlers) {
10559
10559
  await handler.onEnvelopeAcked?.(tracked);
10560
10560
  }
10561
- logger$17.debug('tracker_envelope_acked', {
10561
+ logger$16.debug('tracker_envelope_acked', {
10562
10562
  envp_id: tracked.originalEnvelope.id,
10563
10563
  });
10564
10564
  }
@@ -10576,13 +10576,13 @@ class DefaultDeliveryTracker extends TaskSpawner {
10576
10576
  const outbox = this.ensureOutbox();
10577
10577
  const tracked = await outbox.get(envelope.frame.refId);
10578
10578
  if (!tracked) {
10579
- logger$17.debug('tracker_nack_for_unknown_envelope', {
10579
+ logger$16.debug('tracker_nack_for_unknown_envelope', {
10580
10580
  envp_id: envelope.id,
10581
10581
  });
10582
10582
  return;
10583
10583
  }
10584
10584
  if (tracked.originalEnvelope.corrId !== envelope.corrId) {
10585
- logger$17.debug('tracker_nack_corr_id_mismatch', {
10585
+ logger$16.debug('tracker_nack_corr_id_mismatch', {
10586
10586
  envp_id: envelope.id,
10587
10587
  expected_corr_id: tracked.originalEnvelope.corrId,
10588
10588
  actual_corr_id: envelope.corrId,
@@ -10624,7 +10624,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10624
10624
  for (const handler of this.eventHandlers) {
10625
10625
  await handler.onEnvelopeNacked?.(tracked, ackFrame.reason ?? null);
10626
10626
  }
10627
- logger$17.debug('tracker_envelope_nacked', {
10627
+ logger$16.debug('tracker_envelope_nacked', {
10628
10628
  envp_id: tracked.originalEnvelope.id,
10629
10629
  reason: ackFrame.reason,
10630
10630
  });
@@ -10672,7 +10672,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10672
10672
  for (const handler of this.eventHandlers) {
10673
10673
  await handler.onEnvelopeReplied?.(trackedEnvelope, envelope);
10674
10674
  }
10675
- logger$17.debug('tracked_envelope_replied', {
10675
+ logger$16.debug('tracked_envelope_replied', {
10676
10676
  envp_id: trackedEnvelope.originalEnvelope.id,
10677
10677
  corr_id: envelope.corrId,
10678
10678
  });
@@ -10746,7 +10746,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10746
10746
  async addToInboxDlq(trackedEnvelope, reason = null) {
10747
10747
  const dlq = this.inboxDlq;
10748
10748
  if (!dlq) {
10749
- logger$17.error('dlq_not_initialized', {
10749
+ logger$16.error('dlq_not_initialized', {
10750
10750
  envp_id: trackedEnvelope.originalEnvelope.id,
10751
10751
  });
10752
10752
  return;
@@ -10761,7 +10761,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10761
10761
  const deadLetteredAt = Date.now();
10762
10762
  setMetaWithLegacy(trackedEnvelope.meta, 'deadLetteredAtMs', 'dead_lettered_at_ms', deadLetteredAt);
10763
10763
  await dlq.set(trackedEnvelope.originalEnvelope.id, trackedEnvelope);
10764
- logger$17.warning('envelope_moved_to_dlq', {
10764
+ logger$16.warning('envelope_moved_to_dlq', {
10765
10765
  envp_id: trackedEnvelope.originalEnvelope.id,
10766
10766
  service_name: trackedEnvelope.serviceName,
10767
10767
  });
@@ -10790,7 +10790,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10790
10790
  const toDelete = Object.entries(items).filter(([, value]) => predicate ? predicate(value) : true);
10791
10791
  await Promise.all(toDelete.map(([key]) => dlq.delete(key)));
10792
10792
  if (toDelete.length) {
10793
- logger$17.debug('dlq_purged', { count: toDelete.length });
10793
+ logger$16.debug('dlq_purged', { count: toDelete.length });
10794
10794
  }
10795
10795
  return toDelete.length;
10796
10796
  }
@@ -10843,11 +10843,11 @@ class DefaultDeliveryTracker extends TaskSpawner {
10843
10843
  }
10844
10844
  this.futuresSweeper = null;
10845
10845
  }
10846
- logger$17.debug('tracker_cleanup_completed');
10846
+ logger$16.debug('tracker_cleanup_completed');
10847
10847
  }
10848
10848
  async recoverPending() {
10849
10849
  const pending = await this.listPending();
10850
- logger$17.debug('tracker_recovering_pending', { count: pending.length });
10850
+ logger$16.debug('tracker_recovering_pending', { count: pending.length });
10851
10851
  await this.lock.runExclusive(async () => {
10852
10852
  for (const tracked of pending) {
10853
10853
  if (tracked.expectedResponseType & core.FameResponseType.ACK) {
@@ -10873,7 +10873,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10873
10873
  for (const tracked of pending) {
10874
10874
  await this.scheduleTimer(tracked, null, null);
10875
10875
  }
10876
- logger$17.debug('tracker_recovery_completed', { count: pending.length });
10876
+ logger$16.debug('tracker_recovery_completed', { count: pending.length });
10877
10877
  }
10878
10878
  ensureOutbox() {
10879
10879
  if (!this.outbox) {
@@ -10888,7 +10888,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10888
10888
  return this.inbox;
10889
10889
  }
10890
10890
  async waitForPendingAcks() {
10891
- logger$17.debug('tracker_node_preparing_to_stop_waiting_for_pending_acks');
10891
+ logger$16.debug('tracker_node_preparing_to_stop_waiting_for_pending_acks');
10892
10892
  const outbox = this.outbox;
10893
10893
  if (!outbox) {
10894
10894
  return;
@@ -10900,7 +10900,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10900
10900
  continue;
10901
10901
  }
10902
10902
  if (!future.done) {
10903
- logger$17.debug('tracker_pending_ack_future_detected', {
10903
+ logger$16.debug('tracker_pending_ack_future_detected', {
10904
10904
  envelope_id: envelopeId,
10905
10905
  });
10906
10906
  pending.push({ envelopeId, future });
@@ -10908,10 +10908,10 @@ class DefaultDeliveryTracker extends TaskSpawner {
10908
10908
  }
10909
10909
  });
10910
10910
  if (!pending.length) {
10911
- logger$17.debug('tracker_no_pending_acks_to_wait_for');
10911
+ logger$16.debug('tracker_no_pending_acks_to_wait_for');
10912
10912
  return;
10913
10913
  }
10914
- logger$17.debug('tracker_waiting_for_pending_acks', { count: pending.length });
10914
+ logger$16.debug('tracker_waiting_for_pending_acks', { count: pending.length });
10915
10915
  for (const entry of pending) {
10916
10916
  if (!entry) {
10917
10917
  continue;
@@ -10928,19 +10928,19 @@ class DefaultDeliveryTracker extends TaskSpawner {
10928
10928
  }
10929
10929
  try {
10930
10930
  await this.awaitWithTimeout(entry.future.promise, remainingMs);
10931
- logger$17.debug('tracker_received_ack', {
10931
+ logger$16.debug('tracker_received_ack', {
10932
10932
  envelope_id: entry.envelopeId,
10933
10933
  });
10934
10934
  await outbox.delete(entry.envelopeId);
10935
10935
  }
10936
10936
  catch (error) {
10937
10937
  if (error instanceof Error && error.name === 'TimeoutError') {
10938
- logger$17.debug('tracker_ack_timeout_expired', {
10938
+ logger$16.debug('tracker_ack_timeout_expired', {
10939
10939
  envelope_id: entry.envelopeId,
10940
10940
  });
10941
10941
  }
10942
10942
  else {
10943
- logger$17.debug('tracker_ack_wait_error', {
10943
+ logger$16.debug('tracker_ack_wait_error', {
10944
10944
  envelope_id: entry.envelopeId,
10945
10945
  error: error instanceof Error ? error.message : String(error),
10946
10946
  });
@@ -10948,13 +10948,13 @@ class DefaultDeliveryTracker extends TaskSpawner {
10948
10948
  }
10949
10949
  }
10950
10950
  catch (error) {
10951
- logger$17.error('tracker_error_waiting_for_ack', {
10951
+ logger$16.error('tracker_error_waiting_for_ack', {
10952
10952
  envelope_id: entry.envelopeId,
10953
10953
  error: error instanceof Error ? error.message : String(error),
10954
10954
  });
10955
10955
  }
10956
10956
  }
10957
- logger$17.debug('tracker_finished_waiting_for_pending_acks');
10957
+ logger$16.debug('tracker_finished_waiting_for_pending_acks');
10958
10958
  }
10959
10959
  async waitForPendingAckDispatches() {
10960
10960
  while (this.pendingAckDispatches.size > 0) {
@@ -11012,7 +11012,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11012
11012
  for (const handler of this.eventHandlers) {
11013
11013
  await handler.onEnvelopeTimeout?.(currentTracked);
11014
11014
  }
11015
- logger$17.debug('tracker_envelope_timed_out', {
11015
+ logger$16.debug('tracker_envelope_timed_out', {
11016
11016
  envp_id: tracked.originalEnvelope.id,
11017
11017
  });
11018
11018
  return;
@@ -11025,7 +11025,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11025
11025
  currentTracked.timeoutAtMs = nextTimeoutAt;
11026
11026
  await outbox.set(tracked.originalEnvelope.id, currentTracked);
11027
11027
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11028
- logger$17.debug('tracker_retry_deferred_during_shutdown', {
11028
+ logger$16.debug('tracker_retry_deferred_during_shutdown', {
11029
11029
  envp_id: tracked.originalEnvelope.id,
11030
11030
  defer_ms: shutdownDeferMs,
11031
11031
  });
@@ -11048,7 +11048,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11048
11048
  });
11049
11049
  }
11050
11050
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11051
- logger$17.debug('envelope_delivery_retry_scheduled', {
11051
+ logger$16.debug('envelope_delivery_retry_scheduled', {
11052
11052
  envp_id: tracked.originalEnvelope.id,
11053
11053
  attempt: currentTracked.attempt,
11054
11054
  max_retries: retryPolicy.maxRetries,
@@ -11060,7 +11060,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11060
11060
  currentTracked.timeoutAtMs = currentTracked.overallTimeoutAtMs;
11061
11061
  await outbox.set(tracked.originalEnvelope.id, currentTracked);
11062
11062
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11063
- logger$17.debug('envelope_retries_exhausted_waiting_until_overall_timeout', {
11063
+ logger$16.debug('envelope_retries_exhausted_waiting_until_overall_timeout', {
11064
11064
  envp_id: tracked.originalEnvelope.id,
11065
11065
  attempt: currentTracked.attempt,
11066
11066
  overall_timeout_at_ms: currentTracked.overallTimeoutAtMs,
@@ -11080,7 +11080,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11080
11080
  for (const handler of this.eventHandlers) {
11081
11081
  await handler.onEnvelopeTimeout?.(currentTracked);
11082
11082
  }
11083
- logger$17.debug('tracker_envelope_timed_out', {
11083
+ logger$16.debug('tracker_envelope_timed_out', {
11084
11084
  envp_id: tracked.originalEnvelope.id,
11085
11085
  });
11086
11086
  }
@@ -11088,7 +11088,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11088
11088
  if (error instanceof TaskCancelledError) {
11089
11089
  return;
11090
11090
  }
11091
- logger$17.error('tracker_timer_error', {
11091
+ logger$16.error('tracker_timer_error', {
11092
11092
  envp_id: tracked.originalEnvelope.id,
11093
11093
  error: error instanceof Error ? error.message : String(error),
11094
11094
  });
@@ -11143,7 +11143,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11143
11143
  if (timeoutSeconds !== null) {
11144
11144
  return await this.awaitWithTimeout(future.promise, timeoutSeconds);
11145
11145
  }
11146
- logger$17.debug('await_envelope_no_timeout_wait', {
11146
+ logger$16.debug('await_envelope_no_timeout_wait', {
11147
11147
  envelope_id: envelopeId,
11148
11148
  });
11149
11149
  return await future.promise;
@@ -11152,7 +11152,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11152
11152
  if (error instanceof Error && error.name !== 'TimeoutError') {
11153
11153
  throw error;
11154
11154
  }
11155
- logger$17.error('await_envelope_timeout_error', {
11155
+ logger$16.error('await_envelope_timeout_error', {
11156
11156
  envelope_id: envelopeId,
11157
11157
  timeout_ms: timeoutSeconds,
11158
11158
  future_done: false,
@@ -11313,7 +11313,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11313
11313
  this.replyDoneSince.delete(envId);
11314
11314
  }
11315
11315
  });
11316
- logger$17.debug('tracker_swept_completed_futures', {
11316
+ logger$16.debug('tracker_swept_completed_futures', {
11317
11317
  ack_removed: toRemoveAck.length,
11318
11318
  reply_removed: toRemoveReply.length,
11319
11319
  grace_secs: this.futGcGraceSecs,
@@ -11327,7 +11327,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11327
11327
  if (error instanceof Error && error.name === 'TimeoutError') {
11328
11328
  continue;
11329
11329
  }
11330
- logger$17.error('tracker_sweeper_error', {
11330
+ logger$16.error('tracker_sweeper_error', {
11331
11331
  error: error instanceof Error ? error.message : String(error),
11332
11332
  });
11333
11333
  }
@@ -11358,14 +11358,14 @@ class DefaultDeliveryTracker extends TaskSpawner {
11358
11358
  }
11359
11359
  const node = this.node;
11360
11360
  if (!envelope.replyTo) {
11361
- logger$17.error('cannot_send_ack_no_reply_to', { envp_id: envelope.id });
11361
+ logger$16.error('cannot_send_ack_no_reply_to', { envp_id: envelope.id });
11362
11362
  return;
11363
11363
  }
11364
11364
  if (!envelope.corrId) {
11365
- logger$17.error('cannot_send_ack_no_corr_id', { envp_id: envelope.id });
11365
+ logger$16.error('cannot_send_ack_no_corr_id', { envp_id: envelope.id });
11366
11366
  return;
11367
11367
  }
11368
- logger$17.debug('tracker_sending_ack', {
11368
+ logger$16.debug('tracker_sending_ack', {
11369
11369
  envp_id: envelope.id,
11370
11370
  ref_id: envelope.id,
11371
11371
  to: envelope.replyTo,
@@ -11385,7 +11385,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11385
11385
  .send(ackEnvelope)
11386
11386
  .then(() => undefined)
11387
11387
  .catch((error) => {
11388
- logger$17.error('tracker_ack_dispatch_failed', {
11388
+ logger$16.error('tracker_ack_dispatch_failed', {
11389
11389
  envp_id: envelope.id,
11390
11390
  error: error instanceof Error ? error.message : String(error),
11391
11391
  });
@@ -11471,7 +11471,7 @@ class AsyncEvent {
11471
11471
  }
11472
11472
  }
11473
11473
 
11474
- const logger$16 = getLogger('naylence.fame.node.root_session_manager');
11474
+ const logger$15 = getLogger('naylence.fame.node.root_session_manager');
11475
11475
  function resolveOption$1(options, primary, ...aliases) {
11476
11476
  const record = options;
11477
11477
  const primaryKey = primary;
@@ -11552,7 +11552,7 @@ class RootSessionManager extends TaskSpawner {
11552
11552
  this.onAdmissionFailed =
11553
11553
  typeof onAdmissionFailed === 'function' ? onAdmissionFailed : undefined;
11554
11554
  this.enableContinuousRefresh = enableContinuousRefresh ?? true;
11555
- logger$16.debug('created_root_session_manager');
11555
+ logger$15.debug('created_root_session_manager');
11556
11556
  }
11557
11557
  get isReady() {
11558
11558
  return this.readyEvent.isSet();
@@ -11577,7 +11577,7 @@ class RootSessionManager extends TaskSpawner {
11577
11577
  if (this.admissionTask) {
11578
11578
  return;
11579
11579
  }
11580
- logger$16.debug('root_session_manager_starting');
11580
+ logger$15.debug('root_session_manager_starting');
11581
11581
  this.stopEvent.clear();
11582
11582
  this.readyEvent.clear();
11583
11583
  const taskName = `root-admission-${this.admissionEpoch}`;
@@ -11597,10 +11597,10 @@ class RootSessionManager extends TaskSpawner {
11597
11597
  await this.admissionTask.promise;
11598
11598
  throw new FameConnectError('Root session manager failed to become ready');
11599
11599
  }
11600
- logger$16.debug('root_session_manager_started');
11600
+ logger$15.debug('root_session_manager_started');
11601
11601
  }
11602
11602
  async stop() {
11603
- logger$16.debug('root_session_manager_stopping');
11603
+ logger$15.debug('root_session_manager_stopping');
11604
11604
  this.stopEvent.set();
11605
11605
  if (this.admissionTask) {
11606
11606
  this.admissionTask.cancel();
@@ -11612,7 +11612,7 @@ class RootSessionManager extends TaskSpawner {
11612
11612
  await this.consumeTask(this.expiryGuardTask);
11613
11613
  this.expiryGuardTask = null;
11614
11614
  }
11615
- logger$16.debug('root_session_manager_stopped');
11615
+ logger$15.debug('root_session_manager_stopped');
11616
11616
  }
11617
11617
  async awaitReady(timeoutMs) {
11618
11618
  if (this.isReady) {
@@ -11653,12 +11653,12 @@ class RootSessionManager extends TaskSpawner {
11653
11653
  await this.onEpochChange(epoch);
11654
11654
  }
11655
11655
  else {
11656
- logger$16.debug('epoch_change_ignored_no_handler', { epoch });
11656
+ logger$15.debug('epoch_change_ignored_no_handler', { epoch });
11657
11657
  }
11658
11658
  }
11659
11659
  static createForRootSentinel(node, admissionClient, requestedLogicals = [], enableContinuousRefresh = true, onEpochChange) {
11660
11660
  const handleWelcome = async (frame) => {
11661
- logger$16.info('root_admission_successful', {
11661
+ logger$15.info('root_admission_successful', {
11662
11662
  system_id: frame.systemId,
11663
11663
  assigned_path: frame.assignedPath ?? null,
11664
11664
  accepted_logicals: frame.acceptedLogicals ?? [],
@@ -11669,12 +11669,12 @@ class RootSessionManager extends TaskSpawner {
11669
11669
  ? grant.purpose
11670
11670
  : undefined;
11671
11671
  if (purpose) {
11672
- logger$16.debug('received_admission_grant', { purpose });
11672
+ logger$15.debug('received_admission_grant', { purpose });
11673
11673
  }
11674
11674
  }
11675
11675
  };
11676
11676
  const handleFailure = async (error) => {
11677
- logger$16.error('root_admission_failed_permanently', {
11677
+ logger$15.error('root_admission_failed_permanently', {
11678
11678
  error: error.message,
11679
11679
  });
11680
11680
  };
@@ -11703,10 +11703,10 @@ class RootSessionManager extends TaskSpawner {
11703
11703
  this.readyEvent.set();
11704
11704
  }
11705
11705
  if (this.hadSuccessfulAdmission) {
11706
- logger$16.debug('root_admission_refreshed');
11706
+ logger$15.debug('root_admission_refreshed');
11707
11707
  }
11708
11708
  else {
11709
- logger$16.debug('root_admission_completed');
11709
+ logger$15.debug('root_admission_completed');
11710
11710
  }
11711
11711
  this.hadSuccessfulAdmission = true;
11712
11712
  delay = RootSessionManager.BACKOFF_INITIAL;
@@ -11715,7 +11715,7 @@ class RootSessionManager extends TaskSpawner {
11715
11715
  await this.startExpiryGuard(welcomeFrame);
11716
11716
  const expiryTriggered = await this.waitForExpiryOrStop();
11717
11717
  if (expiryTriggered && !this.stopEvent.isSet()) {
11718
- logger$16.debug('performing_scheduled_re_admission');
11718
+ logger$15.debug('performing_scheduled_re_admission');
11719
11719
  continue;
11720
11720
  }
11721
11721
  }
@@ -11727,7 +11727,7 @@ class RootSessionManager extends TaskSpawner {
11727
11727
  }
11728
11728
  const errorObject = error instanceof Error ? error : new Error(String(error));
11729
11729
  const willRetry = attempts < RootSessionManager.RETRY_MAX_ATTEMPTS;
11730
- logger$16.warning('root_admission_failed', {
11730
+ logger$15.warning('root_admission_failed', {
11731
11731
  error: errorObject.message,
11732
11732
  attempt: attempts,
11733
11733
  will_retry: willRetry,
@@ -11745,7 +11745,7 @@ class RootSessionManager extends TaskSpawner {
11745
11745
  }
11746
11746
  }
11747
11747
  if (attempts >= RootSessionManager.RETRY_MAX_ATTEMPTS) {
11748
- logger$16.error('root_admission_max_attempts_exceeded', {
11748
+ logger$15.error('root_admission_max_attempts_exceeded', {
11749
11749
  max_attempts: RootSessionManager.RETRY_MAX_ATTEMPTS,
11750
11750
  });
11751
11751
  }
@@ -11822,7 +11822,7 @@ class RootSessionManager extends TaskSpawner {
11822
11822
  }
11823
11823
  async expiryGuard(welcomeFrame, signal) {
11824
11824
  if (!welcomeFrame.expiresAt) {
11825
- logger$16.debug('no_admission_expiry_configured');
11825
+ logger$15.debug('no_admission_expiry_configured');
11826
11826
  await Promise.race([this.stopEvent.wait(), this.waitForAbort(signal)]);
11827
11827
  return;
11828
11828
  }
@@ -11831,7 +11831,7 @@ class RootSessionManager extends TaskSpawner {
11831
11831
  let delaySeconds = (expiresAt.getTime() - now.getTime()) / 1000 -
11832
11832
  RootSessionManager.JWT_REFRESH_SAFETY;
11833
11833
  delaySeconds = Math.max(delaySeconds, 0);
11834
- logger$16.debug('admission_expiry_guard_started', {
11834
+ logger$15.debug('admission_expiry_guard_started', {
11835
11835
  welcome_expires_at: expiresAt.toISOString(),
11836
11836
  delay_seconds: delaySeconds,
11837
11837
  refresh_safety_seconds: RootSessionManager.JWT_REFRESH_SAFETY,
@@ -11840,7 +11840,7 @@ class RootSessionManager extends TaskSpawner {
11840
11840
  if (this.stopEvent.isSet() || signal?.aborted) {
11841
11841
  return;
11842
11842
  }
11843
- logger$16.debug('admission_expiry_triggered_refresh', {
11843
+ logger$15.debug('admission_expiry_triggered_refresh', {
11844
11844
  expires_at: expiresAt.toISOString(),
11845
11845
  current_time: new Date().toISOString(),
11846
11846
  seconds_before_expiry: RootSessionManager.JWT_REFRESH_SAFETY,
@@ -11855,7 +11855,7 @@ class RootSessionManager extends TaskSpawner {
11855
11855
  return;
11856
11856
  }
11857
11857
  const errorObject = error instanceof Error ? error : new Error(String(error));
11858
- logger$16.debug('background_task_error', {
11858
+ logger$15.debug('background_task_error', {
11859
11859
  task_name: task.name,
11860
11860
  error: errorObject.message,
11861
11861
  });
@@ -11951,7 +11951,7 @@ class BoundedAsyncQueue {
11951
11951
  }
11952
11952
  }
11953
11953
 
11954
- const logger$15 = getLogger('naylence.fame.connector.broadcast_channel_connector');
11954
+ const logger$14 = getLogger('naylence.fame.connector.broadcast_channel_connector');
11955
11955
  const BROADCAST_CHANNEL_CONNECTOR_TYPE$1 = 'broadcast-channel-connector';
11956
11956
  const DEFAULT_CHANNEL$7 = 'naylence-fabric';
11957
11957
  const DEFAULT_INBOX_CAPACITY$7 = 2048;
@@ -12040,7 +12040,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12040
12040
  this.localNodeId = normalizedLocalNodeId;
12041
12041
  this.targetNodeId = BroadcastChannelConnector.normalizeTargetNodeId(config.initialTargetNodeId);
12042
12042
  this.channel = new BroadcastChannel(this.channelName);
12043
- logger$15.debug('broadcast_channel_connector_created', {
12043
+ logger$14.debug('broadcast_channel_connector_created', {
12044
12044
  channel: this.channelName,
12045
12045
  connector_id: this.connectorId,
12046
12046
  local_node_id: this.localNodeId,
@@ -12052,7 +12052,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12052
12052
  this.onMsg = (event) => {
12053
12053
  // Guard: Don't process if listener was unregistered
12054
12054
  if (!this.listenerRegistered) {
12055
- logger$15.warning('broadcast_channel_message_after_unregister', {
12055
+ logger$14.warning('broadcast_channel_message_after_unregister', {
12056
12056
  channel: this.channelName,
12057
12057
  connector_id: this.connectorId,
12058
12058
  timestamp: new Date().toISOString(),
@@ -12060,7 +12060,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12060
12060
  return;
12061
12061
  }
12062
12062
  const message = event.data;
12063
- logger$15.debug('broadcast_channel_raw_event', {
12063
+ logger$14.debug('broadcast_channel_raw_event', {
12064
12064
  channel: this.channelName,
12065
12065
  connector_id: this.connectorId,
12066
12066
  message_type: message && typeof message === 'object'
@@ -12076,7 +12076,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12076
12076
  const busMessage = message;
12077
12077
  const senderNodeId = BroadcastChannelConnector.normalizeNodeId(busMessage.senderNodeId);
12078
12078
  if (!senderNodeId) {
12079
- logger$15.debug('broadcast_channel_message_rejected', {
12079
+ logger$14.debug('broadcast_channel_message_rejected', {
12080
12080
  channel: this.channelName,
12081
12081
  connector_id: this.connectorId,
12082
12082
  reason: 'missing_sender_node_id',
@@ -12084,7 +12084,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12084
12084
  return;
12085
12085
  }
12086
12086
  if (senderNodeId === this.localNodeId) {
12087
- logger$15.debug('broadcast_channel_message_rejected', {
12087
+ logger$14.debug('broadcast_channel_message_rejected', {
12088
12088
  channel: this.channelName,
12089
12089
  connector_id: this.connectorId,
12090
12090
  reason: 'self_echo',
@@ -12098,14 +12098,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12098
12098
  }
12099
12099
  const payload = BroadcastChannelConnector.coercePayload(busMessage.payload);
12100
12100
  if (!payload) {
12101
- logger$15.debug('broadcast_channel_payload_rejected', {
12101
+ logger$14.debug('broadcast_channel_payload_rejected', {
12102
12102
  channel: this.channelName,
12103
12103
  connector_id: this.connectorId,
12104
12104
  reason: 'unrecognized_payload_type',
12105
12105
  });
12106
12106
  return;
12107
12107
  }
12108
- logger$15.debug('broadcast_channel_message_received', {
12108
+ logger$14.debug('broadcast_channel_message_received', {
12109
12109
  channel: this.channelName,
12110
12110
  sender_id: message?.senderId,
12111
12111
  sender_node_id: senderNodeId,
@@ -12134,14 +12134,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12134
12134
  }
12135
12135
  catch (error) {
12136
12136
  if (error instanceof QueueFullError) {
12137
- logger$15.warning('broadcast_channel_receive_queue_full', {
12137
+ logger$14.warning('broadcast_channel_receive_queue_full', {
12138
12138
  channel: this.channelName,
12139
12139
  inbox_capacity: this.inboxCapacity,
12140
12140
  inbox_remaining_capacity: this.inbox.remainingCapacity,
12141
12141
  });
12142
12142
  }
12143
12143
  else {
12144
- logger$15.error('broadcast_channel_receive_error', {
12144
+ logger$14.error('broadcast_channel_receive_error', {
12145
12145
  channel: this.channelName,
12146
12146
  error: error instanceof Error ? error.message : String(error),
12147
12147
  });
@@ -12155,7 +12155,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12155
12155
  // Setup visibility change monitoring
12156
12156
  this.visibilityChangeHandler = () => {
12157
12157
  const isHidden = document.hidden;
12158
- logger$15.debug('broadcast_channel_visibility_changed', {
12158
+ logger$14.debug('broadcast_channel_visibility_changed', {
12159
12159
  channel: this.channelName,
12160
12160
  connector_id: this.connectorId,
12161
12161
  visibility: isHidden ? 'hidden' : 'visible',
@@ -12164,7 +12164,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12164
12164
  // Pause/resume connector based on visibility
12165
12165
  if (isHidden && this.state === core.ConnectorState.STARTED) {
12166
12166
  this.pause().catch((err) => {
12167
- logger$15.warning('broadcast_channel_pause_failed', {
12167
+ logger$14.warning('broadcast_channel_pause_failed', {
12168
12168
  channel: this.channelName,
12169
12169
  connector_id: this.connectorId,
12170
12170
  error: err instanceof Error ? err.message : String(err),
@@ -12173,7 +12173,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12173
12173
  }
12174
12174
  else if (!isHidden && this.state === core.ConnectorState.PAUSED) {
12175
12175
  this.resume().catch((err) => {
12176
- logger$15.warning('broadcast_channel_resume_failed', {
12176
+ logger$14.warning('broadcast_channel_resume_failed', {
12177
12177
  channel: this.channelName,
12178
12178
  connector_id: this.connectorId,
12179
12179
  error: err instanceof Error ? err.message : String(err),
@@ -12187,7 +12187,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12187
12187
  // Track page lifecycle events to detect browser unload/discard
12188
12188
  if (typeof window !== 'undefined') {
12189
12189
  const lifecycleLogger = (event) => {
12190
- logger$15.debug('broadcast_channel_page_lifecycle', {
12190
+ logger$14.debug('broadcast_channel_page_lifecycle', {
12191
12191
  channel: this.channelName,
12192
12192
  connector_id: this.connectorId,
12193
12193
  event_type: event.type,
@@ -12203,7 +12203,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12203
12203
  document.addEventListener('resume', lifecycleLogger);
12204
12204
  }
12205
12205
  // Log initial state with detailed visibility info
12206
- logger$15.debug('broadcast_channel_initial_visibility', {
12206
+ logger$14.debug('broadcast_channel_initial_visibility', {
12207
12207
  channel: this.channelName,
12208
12208
  connector_id: this.connectorId,
12209
12209
  visibility: document.hidden ? 'hidden' : 'visible',
@@ -12235,14 +12235,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12235
12235
  }
12236
12236
  catch (error) {
12237
12237
  if (error instanceof QueueFullError) {
12238
- logger$15.warning('broadcast_channel_push_queue_full', {
12238
+ logger$14.warning('broadcast_channel_push_queue_full', {
12239
12239
  channel: this.channelName,
12240
12240
  inbox_capacity: this.inboxCapacity,
12241
12241
  inbox_remaining_capacity: this.inbox.remainingCapacity,
12242
12242
  });
12243
12243
  throw error;
12244
12244
  }
12245
- logger$15.error('broadcast_channel_push_failed', {
12245
+ logger$14.error('broadcast_channel_push_failed', {
12246
12246
  channel: this.channelName,
12247
12247
  error: error instanceof Error ? error.message : String(error),
12248
12248
  });
@@ -12252,7 +12252,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12252
12252
  async _transportSendBytes(data) {
12253
12253
  ensureBroadcastEnvironment();
12254
12254
  const targetNodeId = this.targetNodeId ?? '*';
12255
- logger$15.debug('broadcast_channel_message_sending', {
12255
+ logger$14.debug('broadcast_channel_message_sending', {
12256
12256
  channel: this.channelName,
12257
12257
  sender_id: this.connectorId,
12258
12258
  sender_node_id: this.localNodeId,
@@ -12273,7 +12273,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12273
12273
  return item;
12274
12274
  }
12275
12275
  async _transportClose(code, reason) {
12276
- logger$15.debug('broadcast_channel_transport_closing', {
12276
+ logger$14.debug('broadcast_channel_transport_closing', {
12277
12277
  channel: this.channelName,
12278
12278
  connector_id: this.connectorId,
12279
12279
  code,
@@ -12282,14 +12282,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12282
12282
  timestamp: new Date().toISOString(),
12283
12283
  });
12284
12284
  if (this.listenerRegistered) {
12285
- logger$15.debug('broadcast_channel_removing_listener', {
12285
+ logger$14.debug('broadcast_channel_removing_listener', {
12286
12286
  channel: this.channelName,
12287
12287
  connector_id: this.connectorId,
12288
12288
  timestamp: new Date().toISOString(),
12289
12289
  });
12290
12290
  this.channel.removeEventListener('message', this.onMsg);
12291
12291
  this.listenerRegistered = false;
12292
- logger$15.debug('broadcast_channel_listener_removed', {
12292
+ logger$14.debug('broadcast_channel_listener_removed', {
12293
12293
  channel: this.channelName,
12294
12294
  connector_id: this.connectorId,
12295
12295
  timestamp: new Date().toISOString(),
@@ -12302,13 +12302,13 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12302
12302
  this.visibilityChangeListenerRegistered = false;
12303
12303
  this.visibilityChangeHandler = undefined;
12304
12304
  }
12305
- logger$15.debug('broadcast_channel_closing', {
12305
+ logger$14.debug('broadcast_channel_closing', {
12306
12306
  channel: this.channelName,
12307
12307
  connector_id: this.connectorId,
12308
12308
  timestamp: new Date().toISOString(),
12309
12309
  });
12310
12310
  this.channel.close();
12311
- logger$15.debug('broadcast_channel_closed', {
12311
+ logger$14.debug('broadcast_channel_closed', {
12312
12312
  channel: this.channelName,
12313
12313
  connector_id: this.connectorId,
12314
12314
  timestamp: new Date().toISOString(),
@@ -12332,7 +12332,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12332
12332
  if (targetNodeId &&
12333
12333
  targetNodeId !== '*' &&
12334
12334
  targetNodeId !== this.localNodeId) {
12335
- logger$15.debug('broadcast_channel_message_rejected', {
12335
+ logger$14.debug('broadcast_channel_message_rejected', {
12336
12336
  channel: this.channelName,
12337
12337
  connector_id: this.connectorId,
12338
12338
  reason: 'wildcard_target_mismatch',
@@ -12348,7 +12348,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12348
12348
  if (expectedSender &&
12349
12349
  expectedSender !== '*' &&
12350
12350
  senderNodeId !== expectedSender) {
12351
- logger$15.debug('broadcast_channel_message_rejected', {
12351
+ logger$14.debug('broadcast_channel_message_rejected', {
12352
12352
  channel: this.channelName,
12353
12353
  connector_id: this.connectorId,
12354
12354
  reason: 'unexpected_sender',
@@ -12361,7 +12361,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12361
12361
  if (targetNodeId &&
12362
12362
  targetNodeId !== '*' &&
12363
12363
  targetNodeId !== this.localNodeId) {
12364
- logger$15.debug('broadcast_channel_message_rejected', {
12364
+ logger$14.debug('broadcast_channel_message_rejected', {
12365
12365
  channel: this.channelName,
12366
12366
  connector_id: this.connectorId,
12367
12367
  reason: 'unexpected_target',
@@ -12386,7 +12386,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12386
12386
  return 'unknown';
12387
12387
  }
12388
12388
  logInboxSnapshot(event, extra = {}) {
12389
- logger$15.debug(event, {
12389
+ logger$14.debug(event, {
12390
12390
  channel: this.channelName,
12391
12391
  connector_id: this.connectorId,
12392
12392
  connector_state: this.state,
@@ -12402,7 +12402,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12402
12402
  await super.start(inboundHandler);
12403
12403
  // After transitioning to STARTED, check if tab is already hidden
12404
12404
  if (typeof document !== 'undefined' && document.hidden) {
12405
- logger$15.debug('broadcast_channel_start_in_hidden_tab', {
12405
+ logger$14.debug('broadcast_channel_start_in_hidden_tab', {
12406
12406
  channel: this.channelName,
12407
12407
  connector_id: this.connectorId,
12408
12408
  document_hidden: document.hidden,
@@ -12412,7 +12412,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12412
12412
  });
12413
12413
  // Immediately pause if tab is hidden at start time
12414
12414
  await this.pause().catch((err) => {
12415
- logger$15.warning('broadcast_channel_initial_pause_failed', {
12415
+ logger$14.warning('broadcast_channel_initial_pause_failed', {
12416
12416
  channel: this.channelName,
12417
12417
  connector_id: this.connectorId,
12418
12418
  error: err instanceof Error ? err.message : String(err),
@@ -12430,7 +12430,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12430
12430
  return;
12431
12431
  }
12432
12432
  this.targetNodeId = normalized;
12433
- logger$15.debug('broadcast_channel_target_updated', {
12433
+ logger$14.debug('broadcast_channel_target_updated', {
12434
12434
  channel: this.channelName,
12435
12435
  connector_id: this.connectorId,
12436
12436
  local_node_id: this.localNodeId,
@@ -12440,7 +12440,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12440
12440
  }
12441
12441
  setWildcardTarget() {
12442
12442
  this.targetNodeId = '*';
12443
- logger$15.debug('broadcast_channel_target_updated', {
12443
+ logger$14.debug('broadcast_channel_target_updated', {
12444
12444
  channel: this.channelName,
12445
12445
  connector_id: this.connectorId,
12446
12446
  local_node_id: this.localNodeId,
@@ -12568,7 +12568,7 @@ function broadcastChannelGrantToConnectorConfig(grant) {
12568
12568
  return config;
12569
12569
  }
12570
12570
 
12571
- const logger$14 = getLogger('naylence.fame.node.upstream_session_manager');
12571
+ const logger$13 = getLogger('naylence.fame.node.upstream_session_manager');
12572
12572
  function isPlainRecord$4(value) {
12573
12573
  if (typeof value !== 'object' || value === null) {
12574
12574
  return false;
@@ -12689,7 +12689,7 @@ class UpstreamSessionManager extends TaskSpawner {
12689
12689
  this.wrappedHandler = this.makeHeartbeatEnabledHandler(options.inboundHandler);
12690
12690
  // Store the connection retry policy (can be null, in which case default behavior applies)
12691
12691
  this.connectionRetryPolicy = options.retryPolicy ?? null;
12692
- logger$14.debug('created_upstream_session_manager', {
12692
+ logger$13.debug('created_upstream_session_manager', {
12693
12693
  target_system_id: this.targetSystemId,
12694
12694
  has_retry_policy: this.connectionRetryPolicy !== null,
12695
12695
  });
@@ -12698,23 +12698,23 @@ class UpstreamSessionManager extends TaskSpawner {
12698
12698
  return this.targetSystemId;
12699
12699
  }
12700
12700
  setupVisibilityListener() {
12701
- logger$14.debug('setup_visibility_listener_called', {
12701
+ logger$13.debug('setup_visibility_listener_called', {
12702
12702
  has_document: typeof document !== 'undefined',
12703
12703
  });
12704
12704
  if (typeof document !== 'undefined' && document.addEventListener) {
12705
12705
  this._visibilityHandler = () => {
12706
- logger$14.debug('visibility_change_event_fired', {
12706
+ logger$13.debug('visibility_change_event_fired', {
12707
12707
  state: document.visibilityState,
12708
12708
  });
12709
12709
  if (document.visibilityState === 'visible') {
12710
- logger$14.debug('visibility_change_detected_waking_up');
12710
+ logger$13.debug('visibility_change_detected_waking_up');
12711
12711
  this.wakeEvent.set();
12712
12712
  }
12713
12713
  };
12714
12714
  document.addEventListener('visibilitychange', this._visibilityHandler);
12715
12715
  }
12716
12716
  else {
12717
- logger$14.debug('setup_visibility_listener_skipped_no_document');
12717
+ logger$13.debug('setup_visibility_listener_skipped_no_document');
12718
12718
  }
12719
12719
  }
12720
12720
  teardownVisibilityListener() {
@@ -12747,13 +12747,13 @@ class UpstreamSessionManager extends TaskSpawner {
12747
12747
  }
12748
12748
  throw new FameConnectError('Upstream session manager failed to attach');
12749
12749
  }
12750
- logger$14.debug('upstream_session_manager_started');
12750
+ logger$13.debug('upstream_session_manager_started');
12751
12751
  }
12752
12752
  getActiveConnector() {
12753
12753
  return this.connector;
12754
12754
  }
12755
12755
  async stop() {
12756
- logger$14.debug('upstream_session_manager_stopping');
12756
+ logger$13.debug('upstream_session_manager_stopping');
12757
12757
  this.teardownVisibilityListener();
12758
12758
  this.stopEvent.set();
12759
12759
  this.currentStopSubtasks?.set();
@@ -12764,7 +12764,7 @@ class UpstreamSessionManager extends TaskSpawner {
12764
12764
  }
12765
12765
  catch (error) {
12766
12766
  if (!(error instanceof TaskCancelledError)) {
12767
- logger$14.debug('fsm_task_stopped_with_error', {
12767
+ logger$13.debug('fsm_task_stopped_with_error', {
12768
12768
  error: error.message,
12769
12769
  });
12770
12770
  }
@@ -12773,13 +12773,13 @@ class UpstreamSessionManager extends TaskSpawner {
12773
12773
  }
12774
12774
  if (this.connector) {
12775
12775
  await this.connector.stop().catch((error) => {
12776
- logger$14.debug('connector_stop_error', {
12776
+ logger$13.debug('connector_stop_error', {
12777
12777
  error: error.message,
12778
12778
  });
12779
12779
  });
12780
12780
  this.connector = null;
12781
12781
  }
12782
- logger$14.debug('upstream_session_manager_stopped');
12782
+ logger$13.debug('upstream_session_manager_stopped');
12783
12783
  }
12784
12784
  async send(envelope) {
12785
12785
  if (this.messageQueue.length >= UpstreamSessionManager.TX_QUEUE_MAX) {
@@ -12828,7 +12828,7 @@ class UpstreamSessionManager extends TaskSpawner {
12828
12828
  const shouldFailFast = this.shouldFailFastOnError(error);
12829
12829
  if (error instanceof FameTransportClose ||
12830
12830
  error instanceof FameConnectError) {
12831
- logger$14.warning('upstream_link_closed', {
12831
+ logger$13.warning('upstream_link_closed', {
12832
12832
  error: error.message,
12833
12833
  will_retry: !shouldFailFast,
12834
12834
  attempt: this.initialAttempts,
@@ -12841,13 +12841,13 @@ class UpstreamSessionManager extends TaskSpawner {
12841
12841
  else {
12842
12842
  const err = error;
12843
12843
  if (err.name === 'OAuth2PkceRedirectInitiatedError') {
12844
- logger$14.info('upstream_link_redirecting', {
12844
+ logger$13.info('upstream_link_redirecting', {
12845
12845
  error: err.message,
12846
12846
  will_retry: true,
12847
12847
  });
12848
12848
  }
12849
12849
  else {
12850
- logger$14.warning('upstream_link_closed', {
12850
+ logger$13.warning('upstream_link_closed', {
12851
12851
  error: err.message,
12852
12852
  will_retry: !shouldFailFast,
12853
12853
  attempt: this.initialAttempts,
@@ -12891,7 +12891,7 @@ class UpstreamSessionManager extends TaskSpawner {
12891
12891
  // If sleep was interrupted by visibility change (user returned to tab),
12892
12892
  // reset backoff to initial delay for immediate retry with fresh backoff
12893
12893
  if (wasWoken) {
12894
- logger$14.debug('backoff_reset_on_visibility_change', {
12894
+ logger$13.debug('backoff_reset_on_visibility_change', {
12895
12895
  previous_delay: delay,
12896
12896
  new_delay: UpstreamSessionManager.BACKOFF_INITIAL,
12897
12897
  });
@@ -12910,7 +12910,7 @@ class UpstreamSessionManager extends TaskSpawner {
12910
12910
  // Check if wake event is already set (e.g., visibility just changed)
12911
12911
  if (this.wakeEvent.isSet()) {
12912
12912
  this.wakeEvent.clear();
12913
- logger$14.debug('sleep_skipped_wake_event_pending');
12913
+ logger$13.debug('sleep_skipped_wake_event_pending');
12914
12914
  return true;
12915
12915
  }
12916
12916
  let timeout;
@@ -12927,7 +12927,7 @@ class UpstreamSessionManager extends TaskSpawner {
12927
12927
  ]);
12928
12928
  const wasWoken = this.wakeEvent.isSet();
12929
12929
  if (wasWoken) {
12930
- logger$14.debug('sleep_interrupted_by_wake_event');
12930
+ logger$13.debug('sleep_interrupted_by_wake_event');
12931
12931
  this.wakeEvent.clear();
12932
12932
  }
12933
12933
  if (timeout !== undefined) {
@@ -12990,7 +12990,7 @@ class UpstreamSessionManager extends TaskSpawner {
12990
12990
  await connector.start(this.wrappedHandler);
12991
12991
  this.connector = connector;
12992
12992
  const callbackGrants = this.node.gatherSupportedCallbackGrants();
12993
- logger$14.debug('callback_grants_before_augmentation', {
12993
+ logger$13.debug('callback_grants_before_augmentation', {
12994
12994
  count: callbackGrants.length,
12995
12995
  types: callbackGrants.map((g) => g.type),
12996
12996
  });
@@ -13000,7 +13000,7 @@ class UpstreamSessionManager extends TaskSpawner {
13000
13000
  const broadcastCallbackGrant = shouldAddBroadcastGrant
13001
13001
  ? this.createBroadcastCallbackGrant(grant)
13002
13002
  : null;
13003
- logger$14.debug('broadcast_callback_grant_check', {
13003
+ logger$13.debug('broadcast_callback_grant_check', {
13004
13004
  should_add: shouldAddBroadcastGrant,
13005
13005
  grant_created: !!broadcastCallbackGrant,
13006
13006
  });
@@ -13019,12 +13019,12 @@ class UpstreamSessionManager extends TaskSpawner {
13019
13019
  const isDuplicate = callbackGrants.some((existing) => JSON.stringify(existing) === JSON.stringify(grant));
13020
13020
  if (!isDuplicate) {
13021
13021
  callbackGrants.push(grant);
13022
- logger$14.debug('added_connection_grant_as_callback', {
13022
+ logger$13.debug('added_connection_grant_as_callback', {
13023
13023
  type: grant.type,
13024
13024
  });
13025
13025
  }
13026
13026
  else {
13027
- logger$14.debug('skipped_duplicate_connection_grant', {
13027
+ logger$13.debug('skipped_duplicate_connection_grant', {
13028
13028
  type: grant.type,
13029
13029
  });
13030
13030
  }
@@ -13036,12 +13036,12 @@ class UpstreamSessionManager extends TaskSpawner {
13036
13036
  if (broadcastCallbackGrant &&
13037
13037
  this.shouldAdvertiseBroadcastGrant(grant, callbackGrants)) {
13038
13038
  callbackGrants.push(broadcastCallbackGrant);
13039
- logger$14.debug('added_broadcast_callback_grant');
13039
+ logger$13.debug('added_broadcast_callback_grant');
13040
13040
  }
13041
13041
  else if (broadcastCallbackGrant) {
13042
- logger$14.debug('skipped_duplicate_broadcast_callback_grant');
13042
+ logger$13.debug('skipped_duplicate_broadcast_callback_grant');
13043
13043
  }
13044
- logger$14.debug('callback_grants_after_augmentation', {
13044
+ logger$13.debug('callback_grants_after_augmentation', {
13045
13045
  count: callbackGrants.length,
13046
13046
  types: callbackGrants.map((g) => g.type),
13047
13047
  });
@@ -13054,7 +13054,7 @@ class UpstreamSessionManager extends TaskSpawner {
13054
13054
  targetAware.setTargetNodeId(this.targetSystemId);
13055
13055
  }
13056
13056
  catch (error) {
13057
- logger$14.warning('broadcast_channel_target_apply_failed', {
13057
+ logger$13.warning('broadcast_channel_target_apply_failed', {
13058
13058
  error: error instanceof Error ? error.message : String(error),
13059
13059
  target_node_id: this.targetSystemId,
13060
13060
  });
@@ -13076,14 +13076,14 @@ class UpstreamSessionManager extends TaskSpawner {
13076
13076
  });
13077
13077
  }
13078
13078
  else {
13079
- logger$14.warning('parent_epoch_changed', { epoch });
13079
+ logger$13.warning('parent_epoch_changed', { epoch });
13080
13080
  }
13081
13081
  }
13082
13082
  if (!this.readyEvent.isSet()) {
13083
13083
  this.readyEvent.set();
13084
13084
  }
13085
13085
  if (this.messageQueue.length > 0) {
13086
- logger$14.debug('flushing_buffered_frames', {
13086
+ logger$13.debug('flushing_buffered_frames', {
13087
13087
  queue_size: this.messageQueue.length,
13088
13088
  });
13089
13089
  this.queueEvent.set();
@@ -13100,12 +13100,12 @@ class UpstreamSessionManager extends TaskSpawner {
13100
13100
  name: `expiry-guard-${this.connectEpoch}`,
13101
13101
  });
13102
13102
  if (this.hadSuccessfulAttach) {
13103
- logger$14.debug('reconnected_to_upstream', {
13103
+ logger$13.debug('reconnected_to_upstream', {
13104
13104
  attach_expires_at: attachInfo.attachExpiresAt?.toISOString?.() ?? null,
13105
13105
  });
13106
13106
  }
13107
13107
  else {
13108
- logger$14.debug('connected_to_upstream', {
13108
+ logger$13.debug('connected_to_upstream', {
13109
13109
  attach_expires_at: attachInfo.attachExpiresAt?.toISOString?.() ?? null,
13110
13110
  });
13111
13111
  }
@@ -13123,18 +13123,18 @@ class UpstreamSessionManager extends TaskSpawner {
13123
13123
  this.currentStopSubtasks = null;
13124
13124
  await Promise.allSettled(tasks.map((task) => task.promise));
13125
13125
  if (this.connector) {
13126
- logger$14.debug('upstream_stopping_old_connector', {
13126
+ logger$13.debug('upstream_stopping_old_connector', {
13127
13127
  connect_epoch: this.connectEpoch,
13128
13128
  target_system_id: this.targetSystemId,
13129
13129
  timestamp: new Date().toISOString(),
13130
13130
  });
13131
13131
  await this.connector.stop().catch((err) => {
13132
- logger$14.warning('upstream_connector_stop_error', {
13132
+ logger$13.warning('upstream_connector_stop_error', {
13133
13133
  connect_epoch: this.connectEpoch,
13134
13134
  error: err instanceof Error ? err.message : String(err),
13135
13135
  });
13136
13136
  });
13137
- logger$14.debug('upstream_old_connector_stopped', {
13137
+ logger$13.debug('upstream_old_connector_stopped', {
13138
13138
  connect_epoch: this.connectEpoch,
13139
13139
  target_system_id: this.targetSystemId,
13140
13140
  timestamp: new Date().toISOString(),
@@ -13187,7 +13187,7 @@ class UpstreamSessionManager extends TaskSpawner {
13187
13187
  });
13188
13188
  }
13189
13189
  catch (error) {
13190
- logger$14.debug('broadcast_callback_grant_generation_failed', {
13190
+ logger$13.debug('broadcast_callback_grant_generation_failed', {
13191
13191
  error: error instanceof Error ? error.message : String(error),
13192
13192
  });
13193
13193
  return null;
@@ -13242,7 +13242,7 @@ class UpstreamSessionManager extends TaskSpawner {
13242
13242
  }
13243
13243
  }
13244
13244
  async heartbeatLoop(connector, stopEvt, signal) {
13245
- logger$14.debug('starting_heartbeat_loop');
13245
+ logger$13.debug('starting_heartbeat_loop');
13246
13246
  const intervalMs = UpstreamSessionManager.HEARTBEAT_INTERVAL * 1000;
13247
13247
  const graceMs = intervalMs * UpstreamSessionManager.HEARTBEAT_GRACE;
13248
13248
  this.lastHeartbeatAckTime = Date.now();
@@ -13278,7 +13278,7 @@ class UpstreamSessionManager extends TaskSpawner {
13278
13278
  // Skip heartbeat if connector is paused (e.g., tab is hidden)
13279
13279
  // Keep ack time current so we don't timeout immediately after resuming
13280
13280
  if (currentState === core.ConnectorState.PAUSED) {
13281
- logger$14.debug('skipping_heartbeat_connector_paused', {
13281
+ logger$13.debug('skipping_heartbeat_connector_paused', {
13282
13282
  connector_state: currentState,
13283
13283
  });
13284
13284
  this.lastHeartbeatAckTime = Date.now();
@@ -13287,14 +13287,14 @@ class UpstreamSessionManager extends TaskSpawner {
13287
13287
  // Reset ack time if just resumed from pause (prevents immediate timeout)
13288
13288
  if (previousState === core.ConnectorState.PAUSED &&
13289
13289
  currentState === core.ConnectorState.STARTED) {
13290
- logger$14.debug('connector_just_resumed_resetting_ack_time', {
13290
+ logger$13.debug('connector_just_resumed_resetting_ack_time', {
13291
13291
  previous_state: previousState,
13292
13292
  current_state: currentState,
13293
13293
  });
13294
13294
  this.lastHeartbeatAckTime = Date.now();
13295
13295
  }
13296
13296
  const envelope = await this.makeHeartbeatEnvelope();
13297
- logger$14.debug('sending_heartbeat', {
13297
+ logger$13.debug('sending_heartbeat', {
13298
13298
  hb_corr_id: envelope.corrId,
13299
13299
  hb_env_id: envelope.id,
13300
13300
  });
@@ -13320,7 +13320,7 @@ class UpstreamSessionManager extends TaskSpawner {
13320
13320
  throw new FameConnectError('missed heartbeat acknowledgement');
13321
13321
  }
13322
13322
  }
13323
- logger$14.debug('completed_heartbeat_loop');
13323
+ logger$13.debug('completed_heartbeat_loop');
13324
13324
  }
13325
13325
  async messagePumpLoop(connector, stopEvt, signal) {
13326
13326
  while (!stopEvt.isSet() && !signal?.aborted) {
@@ -13337,19 +13337,19 @@ class UpstreamSessionManager extends TaskSpawner {
13337
13337
  if (!envelope) {
13338
13338
  continue;
13339
13339
  }
13340
- logger$14.debug('upstream_pump_sending_envelope', {
13340
+ logger$13.debug('upstream_pump_sending_envelope', {
13341
13341
  envelopeId: envelope.id,
13342
13342
  type: envelope.frame?.type,
13343
13343
  });
13344
13344
  try {
13345
13345
  await connector.send(envelope);
13346
- logger$14.debug('upstream_pump_sent_envelope', {
13346
+ logger$13.debug('upstream_pump_sent_envelope', {
13347
13347
  envelopeId: envelope.id,
13348
13348
  });
13349
13349
  }
13350
13350
  catch (error) {
13351
13351
  if (error instanceof FameMessageTooLarge) {
13352
- logger$14.error('failed_to_send_message', { error: error.message });
13352
+ logger$13.error('failed_to_send_message', { error: error.message });
13353
13353
  await this.handleMessageTooLarge(envelope, error.message);
13354
13354
  }
13355
13355
  else if (error instanceof FameTransportClose) {
@@ -13411,7 +13411,7 @@ class UpstreamSessionManager extends TaskSpawner {
13411
13411
  await fabric.send(ackEnvelope);
13412
13412
  }
13413
13413
  catch (error) {
13414
- logger$14.warning('failed_to_send_nack', {
13414
+ logger$13.warning('failed_to_send_nack', {
13415
13415
  error: error.message,
13416
13416
  });
13417
13417
  }
@@ -13425,7 +13425,7 @@ class UpstreamSessionManager extends TaskSpawner {
13425
13425
  timestamps.push(info.attachExpiresAt);
13426
13426
  }
13427
13427
  if (!timestamps.length) {
13428
- logger$14.debug('no_ttl_expiry_configured');
13428
+ logger$13.debug('no_ttl_expiry_configured');
13429
13429
  await this.waitEvent(stopEvt, signal);
13430
13430
  return;
13431
13431
  }
@@ -13434,7 +13434,7 @@ class UpstreamSessionManager extends TaskSpawner {
13434
13434
  let delaySeconds = (earliest.getTime() - now.getTime()) / 1000 -
13435
13435
  UpstreamSessionManager.JWT_REFRESH_SAFETY;
13436
13436
  delaySeconds = Math.max(delaySeconds, UpstreamSessionManager.JWT_REFRESH_SAFETY);
13437
- logger$14.debug('ttl_expiry_guard_started', {
13437
+ logger$13.debug('ttl_expiry_guard_started', {
13438
13438
  welcome_expires_at: welcome.frame.expiresAt ?? null,
13439
13439
  attach_expires_at: info.attachExpiresAt?.toISOString?.() ?? null,
13440
13440
  earliest_expiry: earliest.toISOString(),
@@ -13462,7 +13462,7 @@ class UpstreamSessionManager extends TaskSpawner {
13462
13462
  }
13463
13463
  }
13464
13464
  if (!stopEvt.isSet()) {
13465
- logger$14.debug('ttl_expiry_triggered_reconnect', {
13465
+ logger$13.debug('ttl_expiry_triggered_reconnect', {
13466
13466
  expires_at: earliest.toISOString(),
13467
13467
  current_time: new Date().toISOString(),
13468
13468
  seconds_before_expiry: UpstreamSessionManager.JWT_REFRESH_SAFETY,
@@ -13507,7 +13507,7 @@ class UpstreamSessionManager extends TaskSpawner {
13507
13507
  }
13508
13508
  await this.node.dispatchEnvelopeEvent('onEnvelopeReceived', this.node, env, context);
13509
13509
  if (env.frame.type === 'NodeHeartbeatAck') {
13510
- logger$14.debug('received_heartbeat_ack', {
13510
+ logger$13.debug('received_heartbeat_ack', {
13511
13511
  hb_ack_env_id: env.id,
13512
13512
  hb_ack_corr_id: env.corrId,
13513
13513
  hb_routing_epoch: env.frame.routingEpoch,
@@ -13521,7 +13521,7 @@ class UpstreamSessionManager extends TaskSpawner {
13521
13521
  await this.onEpochChange(epoch);
13522
13522
  }
13523
13523
  else {
13524
- logger$14.warning('parent_epoch_changed', { epoch });
13524
+ logger$13.warning('parent_epoch_changed', { epoch });
13525
13525
  }
13526
13526
  }
13527
13527
  return;
@@ -13540,7 +13540,7 @@ UpstreamSessionManager.TX_QUEUE_MAX = 512;
13540
13540
  UpstreamSessionManager.BACKOFF_INITIAL = 1; // seconds
13541
13541
  UpstreamSessionManager.BACKOFF_CAP = 30; // seconds
13542
13542
 
13543
- const logger$13 = getLogger('naylence.fame.node.admission.noop_admission_client');
13543
+ const logger$12 = getLogger('naylence.fame.node.admission.noop_admission_client');
13544
13544
  class NoopAdmissionClient {
13545
13545
  constructor(options = {}) {
13546
13546
  this.hasUpstream = false;
@@ -13554,7 +13554,7 @@ class NoopAdmissionClient {
13554
13554
  const acceptedLogicals = this.autoAcceptLogicals
13555
13555
  ? [...(requestedLogicals ?? [])]
13556
13556
  : [];
13557
- logger$13.debug('noop_admission_hello', {
13557
+ logger$12.debug('noop_admission_hello', {
13558
13558
  systemId: effectiveSystemId,
13559
13559
  instanceId,
13560
13560
  requestedLogicals,
@@ -13572,7 +13572,7 @@ class NoopAdmissionClient {
13572
13572
  });
13573
13573
  }
13574
13574
  async close() {
13575
- logger$13.debug('noop_admission_close');
13575
+ logger$12.debug('noop_admission_close');
13576
13576
  }
13577
13577
  }
13578
13578
 
@@ -13778,7 +13778,7 @@ class DefaultServiceManager {
13778
13778
  }
13779
13779
 
13780
13780
  const SYSTEM_INBOX$1 = '__sys__';
13781
- const logger$12 = getLogger('naylence.fame.node.node');
13781
+ const logger$11 = getLogger('naylence.fame.node.node');
13782
13782
  function isSnakeCase(name) {
13783
13783
  return name.includes('_');
13784
13784
  }
@@ -14048,7 +14048,7 @@ class FameNode extends TaskSpawner {
14048
14048
  confirmIdentity(systemId, source) {
14049
14049
  if (this._confirmedId) {
14050
14050
  if (this._confirmedId !== systemId) {
14051
- logger$12.error('node_identity_mismatch', {
14051
+ logger$11.error('node_identity_mismatch', {
14052
14052
  current_id: this._confirmedId,
14053
14053
  new_id: systemId,
14054
14054
  source,
@@ -14060,14 +14060,14 @@ class FameNode extends TaskSpawner {
14060
14060
  const isReassignment = this._provisionalId !== systemId;
14061
14061
  this._confirmedId = systemId;
14062
14062
  if (isReassignment) {
14063
- logger$12.debug('node_identity_reassigned', {
14063
+ logger$11.debug('node_identity_reassigned', {
14064
14064
  system_id: systemId,
14065
14065
  previous_id: this._provisionalId,
14066
14066
  source,
14067
14067
  });
14068
14068
  }
14069
14069
  else {
14070
- logger$12.debug('node_identity_confirmed', {
14070
+ logger$11.debug('node_identity_confirmed', {
14071
14071
  system_id: systemId,
14072
14072
  source,
14073
14073
  });
@@ -14135,7 +14135,7 @@ class FameNode extends TaskSpawner {
14135
14135
  return;
14136
14136
  }
14137
14137
  if (frameType === 'NodeHeartbeat') {
14138
- logger$12.debug('received_heartbeat_frame', {
14138
+ logger$11.debug('received_heartbeat_frame', {
14139
14139
  envelopeId: envelope.id,
14140
14140
  corrId: envelope.corrId ?? null,
14141
14141
  });
@@ -14147,7 +14147,7 @@ class FameNode extends TaskSpawner {
14147
14147
  await this.handleDeliveryAck(envelope, context);
14148
14148
  return;
14149
14149
  }
14150
- logger$12.debug('unhandled_system_frame', {
14150
+ logger$11.debug('unhandled_system_frame', {
14151
14151
  envelopeId: envelope.id,
14152
14152
  frameType,
14153
14153
  });
@@ -14159,13 +14159,13 @@ class FameNode extends TaskSpawner {
14159
14159
  }
14160
14160
  await this._deliveryTracker.onEnvelopeDelivered(SYSTEM_INBOX$1, envelope, context);
14161
14161
  if (frame.ok !== false) {
14162
- logger$12.debug('delivery_ack_received', {
14162
+ logger$11.debug('delivery_ack_received', {
14163
14163
  envelopeId: envelope.id,
14164
14164
  corrId: envelope.corrId ?? null,
14165
14165
  });
14166
14166
  return;
14167
14167
  }
14168
- logger$12.warning('delivery_nack_received', {
14168
+ logger$11.warning('delivery_nack_received', {
14169
14169
  envelopeId: envelope.id,
14170
14170
  corrId: envelope.corrId ?? null,
14171
14171
  code: frame.code ?? null,
@@ -14175,7 +14175,7 @@ class FameNode extends TaskSpawner {
14175
14175
  await this.onDeliveryNack(frame, envelope, context);
14176
14176
  }
14177
14177
  async onDeliveryNack(frame, envelope, _context) {
14178
- logger$12.debug('delivery_nack_processed', {
14178
+ logger$11.debug('delivery_nack_processed', {
14179
14179
  envelopeId: envelope.id,
14180
14180
  code: frame.code ?? null,
14181
14181
  reason: frame.reason ?? null,
@@ -14290,7 +14290,7 @@ class FameNode extends TaskSpawner {
14290
14290
  await this._bindingManager.restore();
14291
14291
  await this._envelopeListenerManager.start();
14292
14292
  this._isStarted = true;
14293
- logger$12.debug('node_started', {
14293
+ logger$11.debug('node_started', {
14294
14294
  node_id: this.id,
14295
14295
  sid: this.sid,
14296
14296
  path: this.physicalPath,
@@ -14322,7 +14322,7 @@ class FameNode extends TaskSpawner {
14322
14322
  await this._serviceManager.stop();
14323
14323
  await this.dispatchEvent('onNodeStopped', this);
14324
14324
  this._isStarted = false;
14325
- logger$12.debug('node_stopped', {
14325
+ logger$11.debug('node_stopped', {
14326
14326
  node_id: this.id,
14327
14327
  });
14328
14328
  }
@@ -14512,20 +14512,20 @@ class FameNode extends TaskSpawner {
14512
14512
  await this.forwardUpstream(processedEnvelope, context);
14513
14513
  }
14514
14514
  else {
14515
- logger$12.error('attempted_upstream_loop', {
14515
+ logger$11.error('attempted_upstream_loop', {
14516
14516
  envelopeId: processedEnvelope.id,
14517
14517
  });
14518
14518
  }
14519
14519
  return;
14520
14520
  }
14521
14521
  if (!processedEnvelope.to) {
14522
- logger$12.error('dropping_envelope_without_destination', {
14522
+ logger$11.error('dropping_envelope_without_destination', {
14523
14523
  envelopeId: processedEnvelope.id,
14524
14524
  capabilities: processedEnvelope.capabilities ?? [],
14525
14525
  });
14526
14526
  return;
14527
14527
  }
14528
- logger$12.warning('no_local_handler_for_address', {
14528
+ logger$11.warning('no_local_handler_for_address', {
14529
14529
  address: processedEnvelope.to.toString?.() ?? String(processedEnvelope.to),
14530
14530
  originType: context?.originType ?? null,
14531
14531
  });
@@ -14649,7 +14649,7 @@ class FameNode extends TaskSpawner {
14649
14649
  }
14650
14650
  }
14651
14651
  catch (error) {
14652
- logger$12.warning('callback_grant_collection_failed', {
14652
+ logger$11.warning('callback_grant_collection_failed', {
14653
14653
  error: error instanceof Error ? error.message : String(error),
14654
14654
  });
14655
14655
  }
@@ -14712,7 +14712,7 @@ class FameNode extends TaskSpawner {
14712
14712
  await store.set('self', record);
14713
14713
  }
14714
14714
  catch (error) {
14715
- logger$12.warning('node_meta_persist_failed', {
14715
+ logger$11.warning('node_meta_persist_failed', {
14716
14716
  error: error instanceof Error ? error.message : String(error),
14717
14717
  });
14718
14718
  }
@@ -14850,44 +14850,12 @@ class ConnectionRetryPolicyFactory extends factory.AbstractResourceFactory {
14850
14850
  }
14851
14851
  }
14852
14852
 
14853
- const TOKEN_PROVIDER_FACTORY_BASE_TYPE = 'TokenProviderFactory';
14854
- class TokenProviderFactory extends factory.AbstractResourceFactory {
14855
- static async createTokenProvider(config, options = {}) {
14856
- if (config) {
14857
- const provider = await factory.createResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, config, options);
14858
- if (!provider) {
14859
- throw new Error('Failed to create token provider from configuration');
14860
- }
14861
- return provider;
14862
- }
14863
- let provider = null;
14864
- try {
14865
- provider = await factory.createDefaultResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, null, options);
14866
- }
14867
- catch (error) {
14868
- const message = 'Failed to create default token provider' +
14869
- (error instanceof Error && error.message ? `: ${error.message}` : '');
14870
- throw new Error(message);
14871
- }
14872
- if (!provider) {
14873
- throw new Error('Failed to create default token provider');
14874
- }
14875
- return provider;
14876
- }
14877
- }
14878
-
14879
- function isTokenProvider(candidate) {
14880
- return (typeof candidate === 'object' &&
14881
- candidate !== null &&
14882
- typeof candidate.getToken === 'function');
14883
- }
14884
- function isIdentityExposingTokenProvider(candidate) {
14885
- return (isTokenProvider(candidate) &&
14886
- typeof candidate.getIdentity ===
14887
- 'function');
14888
- }
14889
-
14890
- const logger$11 = getLogger('naylence.fame.node.default_node_identity_policy');
14853
+ /**
14854
+ * Default node identity policy that preserves the current node ID.
14855
+ *
14856
+ * This policy does NOT derive identity from tokens or grants.
14857
+ * For token-subject-based identity, use TokenSubjectNodeIdentityPolicy.
14858
+ */
14891
14859
  class DefaultNodeIdentityPolicy {
14892
14860
  async resolveInitialNodeId(context) {
14893
14861
  if (context.configuredId) {
@@ -14899,44 +14867,10 @@ class DefaultNodeIdentityPolicy {
14899
14867
  return await core.generateIdAsync({ mode: 'fingerprint' });
14900
14868
  }
14901
14869
  async resolveAdmissionNodeId(context) {
14902
- // Try to extract identity from grants first
14903
- if (context.grants && context.grants.length > 0) {
14904
- for (const grant of context.grants) {
14905
- try {
14906
- const auth = grant.auth;
14907
- if (!auth) {
14908
- continue;
14909
- }
14910
- const tokenProviderConfig = (auth.tokenProvider ??
14911
- auth.token_provider);
14912
- if (!tokenProviderConfig ||
14913
- typeof tokenProviderConfig.type !== 'string') {
14914
- continue;
14915
- }
14916
- const provider = await TokenProviderFactory.createTokenProvider(tokenProviderConfig);
14917
- if (isIdentityExposingTokenProvider(provider)) {
14918
- const identity = await provider.getIdentity();
14919
- if (identity && identity.subject) {
14920
- logger$11.debug('identity_extracted_from_grant', {
14921
- identity_id: identity.subject,
14922
- grant_type: grant.type,
14923
- });
14924
- return identity.subject;
14925
- }
14926
- }
14927
- }
14928
- catch (error) {
14929
- logger$11.warning('identity_extraction_failed', {
14930
- error: error instanceof Error ? error.message : String(error),
14931
- grant_type: grant.type,
14932
- });
14933
- }
14934
- }
14935
- }
14936
- if (!context.currentNodeId) {
14937
- return await core.generateIdAsync({ mode: 'fingerprint' });
14870
+ if (context.currentNodeId) {
14871
+ return context.currentNodeId;
14938
14872
  }
14939
- return context.currentNodeId;
14873
+ return await core.generateIdAsync({ mode: 'fingerprint' });
14940
14874
  }
14941
14875
  }
14942
14876
 
@@ -17704,6 +17638,43 @@ var defaultNodeIdentityPolicyFactory = /*#__PURE__*/Object.freeze({
17704
17638
  default: DefaultNodeIdentityPolicyFactory
17705
17639
  });
17706
17640
 
17641
+ const TOKEN_PROVIDER_FACTORY_BASE_TYPE = 'TokenProviderFactory';
17642
+ class TokenProviderFactory extends factory.AbstractResourceFactory {
17643
+ static async createTokenProvider(config, options = {}) {
17644
+ if (config) {
17645
+ const provider = await factory.createResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, config, options);
17646
+ if (!provider) {
17647
+ throw new Error('Failed to create token provider from configuration');
17648
+ }
17649
+ return provider;
17650
+ }
17651
+ let provider = null;
17652
+ try {
17653
+ provider = await factory.createDefaultResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, null, options);
17654
+ }
17655
+ catch (error) {
17656
+ const message = 'Failed to create default token provider' +
17657
+ (error instanceof Error && error.message ? `: ${error.message}` : '');
17658
+ throw new Error(message);
17659
+ }
17660
+ if (!provider) {
17661
+ throw new Error('Failed to create default token provider');
17662
+ }
17663
+ return provider;
17664
+ }
17665
+ }
17666
+
17667
+ function isTokenProvider(candidate) {
17668
+ return (typeof candidate === 'object' &&
17669
+ candidate !== null &&
17670
+ typeof candidate.getToken === 'function');
17671
+ }
17672
+ function isIdentityExposingTokenProvider(candidate) {
17673
+ return (isTokenProvider(candidate) &&
17674
+ typeof candidate.getIdentity ===
17675
+ 'function');
17676
+ }
17677
+
17707
17678
  const logger$Y = getLogger('naylence.fame.node.token_subject_node_identity_policy');
17708
17679
  class TokenSubjectNodeIdentityPolicy {
17709
17680
  async resolveInitialNodeId(context) {