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