@naylence/runtime 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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$1q = getLogger('naylence.fame.util.task_spawner');
727
+ const logger$1p = 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$1q.debug('starting_background_task', {
888
+ logger$1p.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$1q.debug('task_completed_successfully', {
905
+ logger$1p.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$1q.debug('task_cancelled', {
959
+ logger$1p.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$1q.warning('task_timed_out', {
967
+ logger$1p.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$1q.debug('task_shutdown_race_condition_handled', {
979
+ logger$1p.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$1q.debug('task_shutdown_completed_normally', {
989
+ logger$1p.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$1q.debug('background_task_redirecting', {
997
+ logger$1p.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$1q.warning('background_task_failed', {
1010
+ logger$1p.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$1q.error('background_task_failed', {
1017
+ logger$1p.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$1q.debug('shutdown_tasks_no_tasks_to_shutdown');
1036
+ logger$1p.debug('shutdown_tasks_no_tasks_to_shutdown');
1037
1037
  return;
1038
1038
  }
1039
1039
  this._suppressCompletionLogging = true;
1040
- logger$1q.debug('shutting_down_tasks', {
1040
+ logger$1p.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$1q.debug('tasks_did_not_complete_within_grace_period', {
1055
+ logger$1p.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$1q.warning('task_did_not_shutdown', {
1065
+ logger$1p.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$1q.error('task_raised_during_cancellation', {
1076
+ logger$1p.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$1p = getLogger('naylence.fame.flow.flow_controller');
1195
+ const logger$1o = 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$1p.debug('flow_controller_add_credits', {
1329
+ logger$1o.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$1p.debug('flow_controller_acquire_attempt', {
1349
+ logger$1o.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$1p.debug('flow_controller_waiting_for_credits', {
1354
+ logger$1o.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$1p.debug('flow_controller_acquire_success', {
1362
+ logger$1o.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$1p.debug('flow_controller_acquire_below_low_watermark', {
1367
+ logger$1o.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$1p.debug('flow_controller_consume', {
1391
+ logger$1o.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$1p.debug('flow_controller_flow_reset', {
1417
+ logger$1o.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$1o = getLogger('naylence.fame.connector.base_async_connector');
2049
+ const logger$1n = 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$1o.debug('connector_state_transition', {
2132
+ logger$1n.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$1o.debug('stopping_connector', {
2171
+ logger$1n.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$1o.debug('connector_stop_already_stopped', {
2176
+ logger$1n.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$1o.debug('connector_stopped', {
2187
+ logger$1n.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$1o.debug('pausing_connector', {
2196
+ logger$1n.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$1o.debug('connector_pause_invalid_state', {
2201
+ logger$1n.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$1o.debug('connector_paused', {
2208
+ logger$1n.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$1o.debug('resuming_connector', {
2217
+ logger$1n.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$1o.debug('connector_resume_invalid_state', {
2222
+ logger$1n.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$1o.debug('connector_resumed', {
2229
+ logger$1n.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$1o.warning('connector_close_invalid_state', {
2239
+ logger$1n.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$1o.debug('send_envelope_queued', {
2320
+ logger$1n.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$1o.debug('send_loop_processing_item', {
2369
+ logger$1n.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$1o.debug('send_loop_item_sent', {
2376
+ logger$1n.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$1o.debug('send loop cancelled', {
2389
+ logger$1n.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$1o.critical('unexpected exception in send loop', {
2396
+ logger$1n.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$1o.error('Invalid envelope', {
2437
+ logger$1n.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$1o.trace('connector_received_envelope', {
2461
+ logger$1n.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$1o.error('handler_failed', {
2490
+ logger$1n.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$1o.debug('receive loop cancelled', {
2511
+ logger$1n.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$1o.critical('unexpected_error_in recv_loop', {
2518
+ logger$1n.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$1o.debug('maybe_emit_credit_check', {
2534
+ logger$1n.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$1o.debug('maybe_emit_credit_emit', {
2550
+ logger$1n.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$1o.debug('maybe_emit_credit_sent', {
2570
+ logger$1n.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$1o.error('maybe_emit_credit_send_failed', {
2578
+ logger$1n.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$1o.debug('shutdown_already_closed', {
2603
+ logger$1n.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$1o.debug('connector_shutdown_starting', {
2609
+ logger$1n.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$1o.debug('connector_closing_transport', {
2639
+ logger$1n.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$1o.debug('connector_transport_closed', {
2645
+ logger$1n.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$1o.debug('connector_shutting_down_tasks', {
2651
+ logger$1n.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$1o.debug('connector_tasks_shutdown_complete', {
2663
+ logger$1n.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$1o.warning('task_shutdown_error', {
2670
+ logger$1n.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$1o.debug('connector_shutdown_complete', {
2683
+ logger$1n.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$1n = getLogger('naylence.fame.connector.websocket_connector');
2704
+ const logger$1m = 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$1n.debug('websocket_connector_created', {
2745
+ logger$1m.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$1n.debug('websocket_set_binary_type_failed', {
2760
+ logger$1m.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$1n.debug('websocket_message_pushed_to_queue', {
2816
+ logger$1m.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$1n.error('fastapi_receive_not_awaitable', {
2869
+ logger$1m.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$1n.debug('websocket_shutdown_race_condition_handled', {
2885
+ logger$1m.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$1n.debug('websocket_shutdown_race_condition_detected', {
2928
+ logger$1m.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$1n.debug('websocket_force_terminated', {
2974
+ logger$1m.debug('websocket_force_terminated', {
2975
2975
  ready_state: socketAny.readyState,
2976
2976
  });
2977
2977
  }
2978
2978
  catch (error) {
2979
- logger$1n.debug('websocket_force_terminate_failed', {
2979
+ logger$1m.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$1n.error('websocket_close_failed', {
2990
+ logger$1m.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$1n.debug('websocket_remove_handlers_failed', {
3211
+ logger$1m.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$1m = getLogger('naylence.fame.connector.connector_factory');
3265
+ const logger$1l = 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$1m.warning(`Failed to evaluate grant with factory ${factoryInfo.constructor.name}: ${error}`);
3301
+ logger$1l.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$1m.warning(`Failed to create connector config from grant: ${error}`);
3344
+ logger$1l.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$1m.warning(`Factory ${factoryInfo.constructor.name} is registered under ${CONNECTOR_FACTORY_BASE_TYPE} but is missing grant conversion APIs; skipping.`);
3411
+ logger$1l.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$1m.warning(`Factory ${factoryInfo.constructor.name} does not implement grant conversion APIs required by ${CONNECTOR_FACTORY_BASE_TYPE}; skipping.`);
3417
+ logger$1l.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$1m.warning(`Failed to instantiate factory ${factoryInfo.constructor.name} while resolving grant conversion APIs: ${error}`);
3424
+ logger$1l.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$1l = getLogger('naylence.fame.connector.websocket_connector_factory');
3583
+ const logger$1k = 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$1l.debug('websocket_connector_connecting', { url, subprotocols });
3867
+ logger$1k.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$1l.debug('ssl_certificate_loader_import_failed', {
3950
+ logger$1k.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$1l);
3959
+ return await loader(logger$1k);
3960
3960
  }
3961
3961
  }
3962
3962
 
@@ -4435,12 +4435,12 @@ async function ensureRuntimeFactoriesRegistered(registry = Registry) {
4435
4435
  }
4436
4436
 
4437
4437
  // This file is auto-generated during build - do not edit manually
4438
- // Generated from package.json version: 0.4.1
4438
+ // Generated from package.json version: 0.4.2
4439
4439
  /**
4440
4440
  * The package version, injected at build time.
4441
4441
  * @internal
4442
4442
  */
4443
- const VERSION = '0.4.1';
4443
+ const VERSION = '0.4.2';
4444
4444
 
4445
4445
  let initialized = false;
4446
4446
  const runtimePlugin = {
@@ -5647,7 +5647,7 @@ async function withLock(lock, operation) {
5647
5647
  return await lock.runExclusive(operation);
5648
5648
  }
5649
5649
 
5650
- const logger$1k = getLogger('naylence.fame.storage.sqlite_storage_provider');
5650
+ const logger$1j = getLogger('naylence.fame.storage.sqlite_storage_provider');
5651
5651
  let cachedSqliteCtor;
5652
5652
  async function loadSqliteConstructor() {
5653
5653
  if (cachedSqliteCtor !== undefined) {
@@ -5671,7 +5671,7 @@ async function loadSqliteConstructor() {
5671
5671
  }
5672
5672
  catch (error) {
5673
5673
  cachedSqliteCtor = null;
5674
- logger$1k.error('failed-to-load-better-sqlite3', {
5674
+ logger$1j.error('failed-to-load-better-sqlite3', {
5675
5675
  error: error instanceof Error ? error.message : String(error),
5676
5676
  });
5677
5677
  throw new Error('Failed to load better-sqlite3. Install it to enable SQLite storage support.');
@@ -5706,7 +5706,7 @@ class SQLiteKeyValueStore {
5706
5706
  }
5707
5707
  catch (error) {
5708
5708
  if (this.autoRecover && this.isCorruptionError(error)) {
5709
- logger$1k.warning('detected-corrupted-db', { path: this.dbPath });
5709
+ logger$1j.warning('detected-corrupted-db', { path: this.dbPath });
5710
5710
  await this.recoverCorruptedDb();
5711
5711
  if (!this.db) {
5712
5712
  throw new Error('Failed to recover SQLite database');
@@ -5761,7 +5761,7 @@ class SQLiteKeyValueStore {
5761
5761
  await this.closeDatabase();
5762
5762
  await this.quarantineCorruptedFiles();
5763
5763
  await this.openDatabase();
5764
- logger$1k.warning('quarantined-corrupted-db', { path: this.dbPath });
5764
+ logger$1j.warning('quarantined-corrupted-db', { path: this.dbPath });
5765
5765
  }
5766
5766
  async closeDatabase() {
5767
5767
  if (this.db) {
@@ -5769,7 +5769,7 @@ class SQLiteKeyValueStore {
5769
5769
  this.db.close();
5770
5770
  }
5771
5771
  catch (error) {
5772
- logger$1k.warning('failed-to-close-sqlite-db', {
5772
+ logger$1j.warning('failed-to-close-sqlite-db', {
5773
5773
  path: this.dbPath,
5774
5774
  error: error instanceof Error ? error.message : String(error),
5775
5775
  });
@@ -5792,7 +5792,7 @@ class SQLiteKeyValueStore {
5792
5792
  await fsPromises.rename(candidate, quarantinedName);
5793
5793
  }
5794
5794
  catch (error) {
5795
- logger$1k.error('failed-to-quarantine-sqlite-file', {
5795
+ logger$1j.error('failed-to-quarantine-sqlite-file', {
5796
5796
  file: candidate,
5797
5797
  error: error instanceof Error ? error.message : String(error),
5798
5798
  });
@@ -5893,7 +5893,7 @@ class SQLiteKeyValueStore {
5893
5893
  result[row.key] = this.deserialize(row.value);
5894
5894
  }
5895
5895
  catch (error) {
5896
- logger$1k.warning('skipping-corrupted-sqlite-entry', {
5896
+ logger$1j.warning('skipping-corrupted-sqlite-entry', {
5897
5897
  key: row.key,
5898
5898
  error: error instanceof Error ? error.message : String(error),
5899
5899
  });
@@ -6888,7 +6888,7 @@ class InMemoryBinding {
6888
6888
  * TypeScript port of Python's InMemoryFanoutBroker that extends TaskSpawner
6889
6889
  * to manage multiple WriteChannel subscribers with concurrent message distribution.
6890
6890
  */
6891
- const logger$1j = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');
6891
+ const logger$1i = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');
6892
6892
  // Sentinel object for shutdown signaling
6893
6893
  const SENTINEL = Symbol('fanout-broker-sentinel');
6894
6894
  function isCloseable(obj) {
@@ -6941,7 +6941,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6941
6941
  }
6942
6942
  catch (error) {
6943
6943
  // Ignore errors when sending sentinel (sink might be closed)
6944
- logger$1j.debug('error_sending_sentinel', {
6944
+ logger$1i.debug('error_sending_sentinel', {
6945
6945
  error: error.message,
6946
6946
  });
6947
6947
  }
@@ -6955,7 +6955,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6955
6955
  await sub.close();
6956
6956
  }
6957
6957
  catch (error) {
6958
- logger$1j.error('error_closing_subscriber', {
6958
+ logger$1i.error('error_closing_subscriber', {
6959
6959
  subscriber: sub.toString(),
6960
6960
  error: error.message,
6961
6961
  });
@@ -6995,7 +6995,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6995
6995
  [envelope, context] = extractEnvelopeAndContext(msg);
6996
6996
  }
6997
6997
  catch (error) {
6998
- logger$1j.debug('failed_to_extract_envelope', {
6998
+ logger$1i.debug('failed_to_extract_envelope', {
6999
6999
  error: error.message,
7000
7000
  });
7001
7001
  continue;
@@ -7017,7 +7017,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
7017
7017
  await sub.send(messageToSend);
7018
7018
  }
7019
7019
  catch (error) {
7020
- logger$1j.error('error_sending_to_subscriber', {
7020
+ logger$1i.error('error_sending_to_subscriber', {
7021
7021
  subscriber: sub.toString(),
7022
7022
  error: error.message,
7023
7023
  action: 'unsubscribing',
@@ -7033,7 +7033,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
7033
7033
  }
7034
7034
  catch (error) {
7035
7035
  // Critical broker-level error: log and back off, but keep the loop running
7036
- logger$1j.critical('receive_loop_failed_unexpectedly', {
7036
+ logger$1i.critical('receive_loop_failed_unexpectedly', {
7037
7037
  error: error.message,
7038
7038
  stack: error.stack,
7039
7039
  });
@@ -7742,7 +7742,7 @@ function normalizeResponseType(value) {
7742
7742
  return value;
7743
7743
  }
7744
7744
 
7745
- const logger$1i = getLogger('naylence.fame.node.binding_manager');
7745
+ const logger$1h = getLogger('naylence.fame.node.binding_manager');
7746
7746
  const SYSTEM_INBOX$3 = '__sys__';
7747
7747
  const DEFAULT_ACK_TIMEOUT_MS = 20000;
7748
7748
  class BindingStoreEntryRecord {
@@ -7828,7 +7828,7 @@ class BindingManager {
7828
7828
  if (!this.bindings.has(key)) {
7829
7829
  const binding = this.bindingFactory(new FameAddress(key));
7830
7830
  this.bindings.set(key, binding);
7831
- logger$1i.debug('restored_binding', { address: key });
7831
+ logger$1h.debug('restored_binding', { address: key });
7832
7832
  }
7833
7833
  }
7834
7834
  if (!this.hasUpstream) {
@@ -7838,13 +7838,13 @@ class BindingManager {
7838
7838
  await this.readvertiseCapabilitiesUpstream();
7839
7839
  }
7840
7840
  async bind(participant, capabilities) {
7841
- logger$1i.debug('binding_participant', { participant });
7841
+ logger$1h.debug('binding_participant', { participant });
7842
7842
  const { prefixAddress, addresses, propagateAddress, capabilityAddress } = this.computeBindingAddresses(participant);
7843
7843
  for (const address of addresses) {
7844
7844
  if (!this.bindings.has(address)) {
7845
7845
  const binding = this.bindingFactory(new FameAddress(address));
7846
7846
  this.bindings.set(address, binding);
7847
- logger$1i.debug('bound_address', { address, participant });
7847
+ logger$1h.debug('bound_address', { address, participant });
7848
7848
  }
7849
7849
  }
7850
7850
  let propagatedAddress = null;
@@ -7873,7 +7873,7 @@ class BindingManager {
7873
7873
  await this.unbindAddressUpstream(propagatedAddress);
7874
7874
  }
7875
7875
  catch (rollbackError) {
7876
- logger$1i.error('bind_rollback_failed', {
7876
+ logger$1h.error('bind_rollback_failed', {
7877
7877
  address: propagatedAddress.toString(),
7878
7878
  error: rollbackError.message,
7879
7879
  });
@@ -7892,7 +7892,7 @@ class BindingManager {
7892
7892
  physicalPath: null,
7893
7893
  });
7894
7894
  }
7895
- logger$1i.debug('bind_success', {
7895
+ logger$1h.debug('bind_success', {
7896
7896
  participant,
7897
7897
  address: prefixAddress.toString(),
7898
7898
  capabilities,
@@ -7928,7 +7928,7 @@ class BindingManager {
7928
7928
  await this.bindingStore.delete(address);
7929
7929
  }
7930
7930
  }
7931
- logger$1i.debug('unbind_success', {
7931
+ logger$1h.debug('unbind_success', {
7932
7932
  participant,
7933
7933
  address: prefixAddress.toString(),
7934
7934
  totalBindings: this.bindings.size,
@@ -7958,7 +7958,7 @@ class BindingManager {
7958
7958
  await this.bindAddressUpstream(new FameAddress(address));
7959
7959
  }
7960
7960
  catch (error) {
7961
- logger$1i.error('rebind_failed', {
7961
+ logger$1h.error('rebind_failed', {
7962
7962
  address,
7963
7963
  error: error.message,
7964
7964
  });
@@ -7977,7 +7977,7 @@ class BindingManager {
7977
7977
  await this.advertiseCapabilities(new FameAddress(address), Array.from(capabilities));
7978
7978
  }
7979
7979
  catch (error) {
7980
- logger$1i.error('capability_replay_failed', {
7980
+ logger$1h.error('capability_replay_failed', {
7981
7981
  address,
7982
7982
  error: error.message,
7983
7983
  });
@@ -8244,7 +8244,7 @@ class BindingManager {
8244
8244
  }
8245
8245
  }
8246
8246
 
8247
- const logger$1h = getLogger('naylence.fame.node.response_context_manager');
8247
+ const logger$1g = getLogger('naylence.fame.node.response_context_manager');
8248
8248
  function cloneSecurityContext(source) {
8249
8249
  if (!source) {
8250
8250
  return undefined;
@@ -8272,7 +8272,7 @@ class ResponseContextManager {
8272
8272
  security: responseSecurity,
8273
8273
  expectedResponseType: FameResponseType.NONE,
8274
8274
  };
8275
- logger$1h.debug('created_response_context', {
8275
+ logger$1g.debug('created_response_context', {
8276
8276
  request_id: requestEnvelope.id,
8277
8277
  inherited_crypto_level: responseSecurity?.inboundCryptoLevel ?? null,
8278
8278
  channel_id: responseSecurity?.cryptoChannelId ?? null,
@@ -8292,14 +8292,14 @@ class ResponseContextManager {
8292
8292
  responseContext.fromSystemId = this.getId();
8293
8293
  }
8294
8294
  // Envelope-level metadata is intentionally omitted to defer to context usage.
8295
- logger$1h.debug('ensured_response_metadata', {
8295
+ logger$1g.debug('ensured_response_metadata', {
8296
8296
  response_id: responseEnvelope.id,
8297
8297
  request_id: requestEnvelope.id,
8298
8298
  });
8299
8299
  }
8300
8300
  }
8301
8301
 
8302
- const logger$1g = getLogger('naylence.fame.node.streaming_response_handler');
8302
+ const logger$1f = getLogger('naylence.fame.node.streaming_response_handler');
8303
8303
  function isObject(value) {
8304
8304
  return typeof value === 'object' && value !== null;
8305
8305
  }
@@ -8418,12 +8418,12 @@ class StreamingResponseHandler {
8418
8418
  }
8419
8419
  async handleStreamingFameMessageResponses(responses, requestEnvelope, requestContext) {
8420
8420
  const asyncResponses = toAsyncIterable(responses);
8421
- logger$1g.debug('handling_streaming_fame_message_responses', {
8421
+ logger$1f.debug('handling_streaming_fame_message_responses', {
8422
8422
  request_id: requestEnvelope.id,
8423
8423
  });
8424
8424
  for await (const response of asyncResponses) {
8425
8425
  if (!response?.envelope) {
8426
- logger$1g.warning('invalid_streaming_response_type', {
8426
+ logger$1f.warning('invalid_streaming_response_type', {
8427
8427
  request_id: requestEnvelope.id,
8428
8428
  actual_type: typeof response,
8429
8429
  });
@@ -8437,7 +8437,7 @@ class StreamingResponseHandler {
8437
8437
  }
8438
8438
  async handleStreamingResponse(result, requestEnvelope, requestContext, replyTo, requestId) {
8439
8439
  const iterable = toAsyncIterable(result);
8440
- logger$1g.debug('handling_streaming_response', {
8440
+ logger$1f.debug('handling_streaming_response', {
8441
8441
  request_id: requestId,
8442
8442
  reply_to: replyTo,
8443
8443
  });
@@ -8448,7 +8448,7 @@ class StreamingResponseHandler {
8448
8448
  await this.sendRpcResponse(null, requestEnvelope, requestContext, replyTo, requestId);
8449
8449
  }
8450
8450
  catch (error) {
8451
- logger$1g.error('streaming_response_handler_error', {
8451
+ logger$1f.error('streaming_response_handler_error', {
8452
8452
  request_id: requestId,
8453
8453
  error: error instanceof Error ? error.message : String(error),
8454
8454
  });
@@ -8475,7 +8475,7 @@ class StreamingResponseHandler {
8475
8475
  });
8476
8476
  const responseContext = this.responseContextManager.createResponseContext(requestEnvelope, requestContext);
8477
8477
  this.responseContextManager.ensureResponseMetadata(responseEnvelope, requestEnvelope, responseContext);
8478
- logger$1g.debug('sending_streaming_rpc_response', {
8478
+ logger$1f.debug('sending_streaming_rpc_response', {
8479
8479
  request_id: requestId,
8480
8480
  response_envelope_id: responseEnvelope.id,
8481
8481
  reply_to: replyTo,
@@ -8488,7 +8488,7 @@ class StreamingResponseHandler {
8488
8488
  }
8489
8489
  }
8490
8490
 
8491
- const logger$1f = getLogger('naylence.fame.node.channel_polling_manager');
8491
+ const logger$1e = getLogger('naylence.fame.node.channel_polling_manager');
8492
8492
  class ChannelPollingManager {
8493
8493
  constructor(deliverWrapper, responseContextManager, streamingResponseHandler) {
8494
8494
  this.deliverWrapper = deliverWrapper;
@@ -8496,7 +8496,7 @@ class ChannelPollingManager {
8496
8496
  this.streamingResponseHandler = streamingResponseHandler;
8497
8497
  }
8498
8498
  async startPollingLoop(serviceName, channel, handler, stopState, pollTimeoutMs = DEFAULT_POLLING_TIMEOUT_MS) {
8499
- logger$1f.debug('poll_loop_started', {
8499
+ logger$1e.debug('poll_loop_started', {
8500
8500
  recipient: serviceName,
8501
8501
  });
8502
8502
  try {
@@ -8504,7 +8504,7 @@ class ChannelPollingManager {
8504
8504
  while (true) {
8505
8505
  if (this.isStopRequested(stopState) && !draining) {
8506
8506
  draining = true;
8507
- logger$1f.debug('poll_loop_draining_pending_messages', {
8507
+ logger$1e.debug('poll_loop_draining_pending_messages', {
8508
8508
  recipient: serviceName,
8509
8509
  });
8510
8510
  }
@@ -8514,7 +8514,7 @@ class ChannelPollingManager {
8514
8514
  }
8515
8515
  catch (error) {
8516
8516
  if (error instanceof FameTransportClose) {
8517
- logger$1f.debug('channel_closed', {
8517
+ logger$1e.debug('channel_closed', {
8518
8518
  recipient: serviceName,
8519
8519
  message: error.message,
8520
8520
  });
@@ -8527,7 +8527,7 @@ class ChannelPollingManager {
8527
8527
  continue;
8528
8528
  }
8529
8529
  if (error instanceof Error && error.name === 'AbortError') {
8530
- logger$1f.debug('listener_cancelled', {
8530
+ logger$1e.debug('listener_cancelled', {
8531
8531
  recipient: serviceName,
8532
8532
  });
8533
8533
  throw error;
@@ -8539,13 +8539,13 @@ class ChannelPollingManager {
8539
8539
  continue;
8540
8540
  }
8541
8541
  if (error instanceof Error && error.message === 'Channel is closed') {
8542
- logger$1f.debug('channel_closed', {
8542
+ logger$1e.debug('channel_closed', {
8543
8543
  recipient: serviceName,
8544
8544
  });
8545
8545
  break;
8546
8546
  }
8547
8547
  if (error instanceof Error && error.name === 'TaskCancelledError') {
8548
- logger$1f.debug('listener_cancelled', {
8548
+ logger$1e.debug('listener_cancelled', {
8549
8549
  recipient: serviceName,
8550
8550
  });
8551
8551
  throw error;
@@ -8557,12 +8557,12 @@ class ChannelPollingManager {
8557
8557
  continue;
8558
8558
  }
8559
8559
  if (error instanceof Error && error.message.includes('closed')) {
8560
- logger$1f.debug('channel_closed', {
8560
+ logger$1e.debug('channel_closed', {
8561
8561
  recipient: serviceName,
8562
8562
  });
8563
8563
  break;
8564
8564
  }
8565
- logger$1f.error('transport_error', {
8565
+ logger$1e.error('transport_error', {
8566
8566
  recipient: serviceName,
8567
8567
  error: error instanceof Error ? error.message : String(error),
8568
8568
  });
@@ -8578,7 +8578,7 @@ class ChannelPollingManager {
8578
8578
  }
8579
8579
  }
8580
8580
  finally {
8581
- logger$1f.debug('poll_loop_exiting', {
8581
+ logger$1e.debug('poll_loop_exiting', {
8582
8582
  recipient: serviceName,
8583
8583
  });
8584
8584
  }
@@ -8591,7 +8591,7 @@ class ChannelPollingManager {
8591
8591
  await this.processHandlerResult(result, envelope, deliveryContext, serviceName);
8592
8592
  }
8593
8593
  catch (error) {
8594
- logger$1f.error('handler_crashed', {
8594
+ logger$1e.error('handler_crashed', {
8595
8595
  recipient: serviceName,
8596
8596
  error: error instanceof Error ? error.message : String(error),
8597
8597
  });
@@ -8605,7 +8605,7 @@ class ChannelPollingManager {
8605
8605
  return;
8606
8606
  }
8607
8607
  if (this.streamingResponseHandler.isStreamingFameMessageResponse(result)) {
8608
- logger$1f.debug('handling_streaming_fame_message_responses', {
8608
+ logger$1e.debug('handling_streaming_fame_message_responses', {
8609
8609
  service_name: serviceName,
8610
8610
  envelope_id: envelope.id,
8611
8611
  });
@@ -8613,7 +8613,7 @@ class ChannelPollingManager {
8613
8613
  }
8614
8614
  }
8615
8615
  async handleMessageResponse(response, requestEnvelope, requestContext, serviceName) {
8616
- logger$1f.debug('delivering_envelope_response_message', {
8616
+ logger$1e.debug('delivering_envelope_response_message', {
8617
8617
  service_name: serviceName,
8618
8618
  response_envelope_id: response.envelope.id,
8619
8619
  });
@@ -8633,7 +8633,7 @@ class ChannelPollingManager {
8633
8633
  }
8634
8634
  }
8635
8635
 
8636
- const logger$1e = getLogger('naylence.fame.node.rpc_server_handler');
8636
+ const logger$1d = getLogger('naylence.fame.node.rpc_server_handler');
8637
8637
  function isPlainRecord$6(value) {
8638
8638
  if (typeof value !== 'object' || value === null) {
8639
8639
  return false;
@@ -8677,13 +8677,13 @@ class RPCServerHandler {
8677
8677
  }
8678
8678
  async handleRpcRequest(envelope, handlerContext, handler, serviceName) {
8679
8679
  if (!this.isDataFrame(envelope.frame)) {
8680
- logger$1e.warning('rpc_request_missing_data_frame', {
8680
+ logger$1d.warning('rpc_request_missing_data_frame', {
8681
8681
  service_name: serviceName,
8682
8682
  envelope_id: envelope.id,
8683
8683
  });
8684
8684
  return;
8685
8685
  }
8686
- logger$1e.debug('rpc_request_received', {
8686
+ logger$1d.debug('rpc_request_received', {
8687
8687
  service_name: serviceName,
8688
8688
  envelope_id: envelope.id,
8689
8689
  trace_id: envelope.traceId,
@@ -8695,7 +8695,7 @@ class RPCServerHandler {
8695
8695
  request = parseRequest(envelope.frame.payload);
8696
8696
  params = cloneParams(request.params);
8697
8697
  const paramKeys = Object.keys(params);
8698
- logger$1e.debug('parsed_rpc_request', {
8698
+ logger$1d.debug('parsed_rpc_request', {
8699
8699
  service_name: serviceName,
8700
8700
  method: request.method,
8701
8701
  request_id: request.id,
@@ -8704,7 +8704,7 @@ class RPCServerHandler {
8704
8704
  });
8705
8705
  }
8706
8706
  catch (error) {
8707
- logger$1e.warning('request_decode_error', {
8707
+ logger$1d.warning('request_decode_error', {
8708
8708
  service_name: serviceName,
8709
8709
  envelope_id: envelope.id,
8710
8710
  error: error instanceof Error ? error.message : String(error),
@@ -8712,7 +8712,7 @@ class RPCServerHandler {
8712
8712
  return;
8713
8713
  }
8714
8714
  if (request.id == null) {
8715
- logger$1e.warning('request_missing_id', {
8715
+ logger$1d.warning('request_missing_id', {
8716
8716
  service_name: serviceName,
8717
8717
  envelope_id: envelope.id,
8718
8718
  });
@@ -8720,7 +8720,7 @@ class RPCServerHandler {
8720
8720
  }
8721
8721
  const replyTo = this.resolveReplyTo(envelope, params);
8722
8722
  if (!replyTo) {
8723
- logger$1e.warning('missing_reply_to', {
8723
+ logger$1d.warning('missing_reply_to', {
8724
8724
  service_name: serviceName,
8725
8725
  envelope_id: envelope.id,
8726
8726
  request_id: request.id,
@@ -8729,13 +8729,13 @@ class RPCServerHandler {
8729
8729
  }
8730
8730
  let handlerResult;
8731
8731
  try {
8732
- logger$1e.debug('calling_rpc_handler', {
8732
+ logger$1d.debug('calling_rpc_handler', {
8733
8733
  service_name: serviceName,
8734
8734
  method: request.method,
8735
8735
  request_id: request.id,
8736
8736
  });
8737
8737
  handlerResult = await handler(request.method, params);
8738
- logger$1e.debug('rpc_handler_returned', {
8738
+ logger$1d.debug('rpc_handler_returned', {
8739
8739
  service_name: serviceName,
8740
8740
  method: request.method,
8741
8741
  request_id: request.id,
@@ -8744,7 +8744,7 @@ class RPCServerHandler {
8744
8744
  });
8745
8745
  }
8746
8746
  catch (error) {
8747
- logger$1e.error('rpc_handler_error', {
8747
+ logger$1d.error('rpc_handler_error', {
8748
8748
  service_name: serviceName,
8749
8749
  request_id: request.id,
8750
8750
  envelope_id: envelope.id,
@@ -8754,7 +8754,7 @@ class RPCServerHandler {
8754
8754
  return this.createTraditionalResponse(response, request.id, envelope, replyTo, handlerContext, serviceName);
8755
8755
  }
8756
8756
  if (isFameMessageResponse(handlerResult)) {
8757
- logger$1e.debug('returning_response_message', {
8757
+ logger$1d.debug('returning_response_message', {
8758
8758
  service_name: serviceName,
8759
8759
  request_id: request.id,
8760
8760
  response_envelope_id: handlerResult.envelope.id,
@@ -8762,7 +8762,7 @@ class RPCServerHandler {
8762
8762
  return handlerResult;
8763
8763
  }
8764
8764
  if (this.streamingResponseHandler.isStreamingResult(handlerResult)) {
8765
- logger$1e.debug('handling_streaming_response', {
8765
+ logger$1d.debug('handling_streaming_response', {
8766
8766
  service_name: serviceName,
8767
8767
  request_id: request.id,
8768
8768
  envelope_id: envelope.id,
@@ -8791,7 +8791,7 @@ class RPCServerHandler {
8791
8791
  return null;
8792
8792
  }
8793
8793
  async createTraditionalResponse(payload, requestId, requestEnvelope, replyTo, handlerContext, serviceName) {
8794
- logger$1e.debug('creating_traditional_response_envelope', {
8794
+ logger$1d.debug('creating_traditional_response_envelope', {
8795
8795
  service_name: serviceName,
8796
8796
  request_id: requestId,
8797
8797
  envelope_id: requestEnvelope.id,
@@ -8815,7 +8815,7 @@ class RPCServerHandler {
8815
8815
  if (requestEnvelope.id) {
8816
8816
  responseContext.meta['response-to-id'] = requestEnvelope.id;
8817
8817
  }
8818
- logger$1e.debug('returning_traditional_response', {
8818
+ logger$1d.debug('returning_traditional_response', {
8819
8819
  service_name: serviceName,
8820
8820
  request_id: requestId,
8821
8821
  envelope_id: requestEnvelope.id,
@@ -8880,7 +8880,7 @@ function normalizeErrorCode(code) {
8880
8880
  return code;
8881
8881
  }
8882
8882
 
8883
- const logger$1d = getLogger('naylence.fame.node.rpc_client_manager');
8883
+ const logger$1c = getLogger('naylence.fame.node.rpc_client_manager');
8884
8884
  function isPlainRecord$5(value) {
8885
8885
  if (typeof value !== 'object' || value === null) {
8886
8886
  return false;
@@ -9097,7 +9097,7 @@ class RPCClientManager {
9097
9097
  const metaReason = tracked.meta?.['nack_reason'];
9098
9098
  const formattedMessage = formatDeliveryErrorMessage(typeof metaCode === 'string' ? metaCode : 'DELIVERY_ERROR', reason ??
9099
9099
  (typeof metaReason === 'string' ? metaReason : undefined));
9100
- logger$1d.debug('pending_request_rejected_by_delivery_nack', {
9100
+ logger$1c.debug('pending_request_rejected_by_delivery_nack', {
9101
9101
  envelope_id: envelopeId,
9102
9102
  request_id: requestId,
9103
9103
  code: typeof metaCode === 'string' ? metaCode : 'DELIVERY_ERROR',
@@ -9120,7 +9120,7 @@ class RPCClientManager {
9120
9120
  this.trackerWithEvents.removeEventHandler?.(this.trackerEventHandler);
9121
9121
  }
9122
9122
  catch (error) {
9123
- logger$1d.debug('rpc_tracker_handler_remove_failed', {
9123
+ logger$1c.debug('rpc_tracker_handler_remove_failed', {
9124
9124
  error: error instanceof Error ? error.message : String(error),
9125
9125
  });
9126
9126
  }
@@ -9163,7 +9163,7 @@ class RPCClientManager {
9163
9163
  this.rpcListenerAddress = await this.listenCallback(recipient, handler);
9164
9164
  this.rpcBound = true;
9165
9165
  this.boundPhysicalPath = currentPhysicalPath;
9166
- logger$1d.debug('rpc_reply_listener_bound', {
9166
+ logger$1c.debug('rpc_reply_listener_bound', {
9167
9167
  reply_recipient: recipient,
9168
9168
  reply_address: this.rpcReplyAddress?.toString(),
9169
9169
  listener_address: this.rpcListenerAddress?.toString(),
@@ -9257,7 +9257,7 @@ class RPCClientManager {
9257
9257
  const finalizePromise = this.notifyStreamClosed(envelopeId);
9258
9258
  if (finalizePromise) {
9259
9259
  finalizePromise.catch((notifyError) => {
9260
- logger$1d.debug('stream_tracker_finalize_failed', {
9260
+ logger$1c.debug('stream_tracker_finalize_failed', {
9261
9261
  request_id: requestId,
9262
9262
  envelope_id: envelopeId,
9263
9263
  error: notifyError instanceof Error
@@ -9318,7 +9318,7 @@ class RPCClientManager {
9318
9318
  return iterator;
9319
9319
  }
9320
9320
  async sendRpcRequest(requestId, envelope, expectedResponseType, timeoutMs) {
9321
- logger$1d.debug('sending_rpc_request', {
9321
+ logger$1c.debug('sending_rpc_request', {
9322
9322
  envp_id: envelope.id,
9323
9323
  corr_id: envelope.corrId,
9324
9324
  request_id: requestId,
@@ -9334,7 +9334,7 @@ class RPCClientManager {
9334
9334
  }
9335
9335
  }
9336
9336
  catch (error) {
9337
- logger$1d.warning('delivery_tracker_track_failed', {
9337
+ logger$1c.warning('delivery_tracker_track_failed', {
9338
9338
  request_id: requestId,
9339
9339
  error: error instanceof Error ? error.message : String(error),
9340
9340
  });
@@ -9347,14 +9347,14 @@ class RPCClientManager {
9347
9347
  await this.deliverWrapper()(envelope, context);
9348
9348
  }
9349
9349
  async handleReplyEnvelope(envelope) {
9350
- logger$1d.debug('handle_reply_envelope_received', {
9350
+ logger$1c.debug('handle_reply_envelope_received', {
9351
9351
  envelope_id: envelope.id,
9352
9352
  corr_id: envelope.corrId,
9353
9353
  frame_type: envelope.frame?.['type'],
9354
9354
  });
9355
9355
  let requestId = envelope.corrId ?? envelope.id;
9356
9356
  if (!requestId) {
9357
- logger$1d.warning('reply_envelope_missing_corr_id', {
9357
+ logger$1c.warning('reply_envelope_missing_corr_id', {
9358
9358
  envelope_id: envelope.id,
9359
9359
  });
9360
9360
  return;
@@ -9372,12 +9372,12 @@ class RPCClientManager {
9372
9372
  }
9373
9373
  }
9374
9374
  if (!entry) {
9375
- logger$1d.debug('no_pending_request_for_reply', {
9375
+ logger$1c.debug('no_pending_request_for_reply', {
9376
9376
  request_id: requestId,
9377
9377
  });
9378
9378
  return;
9379
9379
  }
9380
- logger$1d.debug('handle_reply_envelope', {
9380
+ logger$1c.debug('handle_reply_envelope', {
9381
9381
  envelope_id: envelope.id,
9382
9382
  request_id: requestId,
9383
9383
  corr_id: envelope.corrId,
@@ -9390,7 +9390,7 @@ class RPCClientManager {
9390
9390
  const ackIndicatesSuccess = frame.ok === true ||
9391
9391
  (frame.ok === undefined && !frame.code && !frame.reason);
9392
9392
  if (ackIndicatesSuccess) {
9393
- logger$1d.debug('pending_request_delivery_acknowledged', {
9393
+ logger$1c.debug('pending_request_delivery_acknowledged', {
9394
9394
  request_id: requestId,
9395
9395
  envelope_id: envelope.id,
9396
9396
  ref_id: frame.refId ?? null,
@@ -9418,7 +9418,7 @@ class RPCClientManager {
9418
9418
  entry.timer = null;
9419
9419
  }
9420
9420
  if (!this.isDataFrame(envelope.frame)) {
9421
- logger$1d.warning('unexpected_reply_frame_type', {
9421
+ logger$1c.warning('unexpected_reply_frame_type', {
9422
9422
  request_id: requestId,
9423
9423
  frame_type: envelope.frame?.['type'],
9424
9424
  });
@@ -9484,7 +9484,7 @@ class RPCClientManager {
9484
9484
  return;
9485
9485
  }
9486
9486
  Promise.resolve(this.deliveryTracker.onStreamItem(envelopeId, envelope)).catch((error) => {
9487
- logger$1d.debug('stream_tracker_push_failed', {
9487
+ logger$1c.debug('stream_tracker_push_failed', {
9488
9488
  envelope_id: envelopeId,
9489
9489
  error: error instanceof Error ? error.message : String(error),
9490
9490
  });
@@ -9599,7 +9599,7 @@ function normalizeMailbox(mailbox) {
9599
9599
  return mailbox;
9600
9600
  }
9601
9601
 
9602
- const logger$1c = getLogger('naylence.fame.node.envelope_listener_manager');
9602
+ const logger$1b = getLogger('naylence.fame.node.envelope_listener_manager');
9603
9603
  const SYSTEM_INBOX$2 = '__sys__';
9604
9604
  class EnvelopeListener {
9605
9605
  constructor(stopFn, task) {
@@ -9607,7 +9607,7 @@ class EnvelopeListener {
9607
9607
  this.task = task;
9608
9608
  }
9609
9609
  stop() {
9610
- logger$1c.debug('stopping_listener', {
9610
+ logger$1b.debug('stopping_listener', {
9611
9611
  task_name: this.task.name,
9612
9612
  });
9613
9613
  try {
@@ -9615,7 +9615,7 @@ class EnvelopeListener {
9615
9615
  if (maybeCleanup &&
9616
9616
  typeof maybeCleanup.then === 'function') {
9617
9617
  void maybeCleanup.catch((error) => {
9618
- logger$1c.debug('listener_stop_cleanup_failed', {
9618
+ logger$1b.debug('listener_stop_cleanup_failed', {
9619
9619
  task_name: this.task.name,
9620
9620
  error: error instanceof Error ? error.message : String(error),
9621
9621
  });
@@ -9623,7 +9623,7 @@ class EnvelopeListener {
9623
9623
  }
9624
9624
  }
9625
9625
  catch (error) {
9626
- logger$1c.debug('listener_stop_cleanup_failed', {
9626
+ logger$1b.debug('listener_stop_cleanup_failed', {
9627
9627
  task_name: this.task.name,
9628
9628
  error: error instanceof Error ? error.message : String(error),
9629
9629
  });
@@ -9653,7 +9653,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9653
9653
  envelope.replyTo = formatAddress(SYSTEM_INBOX$2, this.nodeLike.physicalPath);
9654
9654
  }
9655
9655
  catch (error) {
9656
- logger$1c.warning('default_reply_to_assignment_failed', {
9656
+ logger$1b.warning('default_reply_to_assignment_failed', {
9657
9657
  envelope_id: envelope.id,
9658
9658
  service_name: envelope.capabilities?.[0] ?? null,
9659
9659
  error: error instanceof Error ? error.message : String(error),
@@ -9678,7 +9678,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9678
9678
  if (serviceName === SYSTEM_INBOX$2) {
9679
9679
  continue;
9680
9680
  }
9681
- logger$1c.debug('stopping_listener_for_service', {
9681
+ logger$1b.debug('stopping_listener_for_service', {
9682
9682
  service_name: serviceName,
9683
9683
  });
9684
9684
  entry.listener.stop();
@@ -9688,7 +9688,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9688
9688
  catch (error) {
9689
9689
  if (!(error instanceof Error) ||
9690
9690
  error.name !== 'TaskCancelledError') {
9691
- logger$1c.debug('listener_task_stopped', {
9691
+ logger$1b.debug('listener_task_stopped', {
9692
9692
  service_name: serviceName,
9693
9693
  error: error instanceof Error ? error.message : String(error),
9694
9694
  });
@@ -9696,7 +9696,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9696
9696
  }
9697
9697
  }
9698
9698
  if (systemEntry) {
9699
- logger$1c.debug('stopping_listener_for_service', {
9699
+ logger$1b.debug('stopping_listener_for_service', {
9700
9700
  service_name: SYSTEM_INBOX$2,
9701
9701
  });
9702
9702
  systemEntry.listener.stop();
@@ -9706,7 +9706,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9706
9706
  catch (error) {
9707
9707
  if (!(error instanceof Error) ||
9708
9708
  error.name !== 'TaskCancelledError') {
9709
- logger$1c.debug('listener_task_stopped', {
9709
+ logger$1b.debug('listener_task_stopped', {
9710
9710
  service_name: SYSTEM_INBOX$2,
9711
9711
  error: error instanceof Error ? error.message : String(error),
9712
9712
  });
@@ -9723,13 +9723,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9723
9723
  }
9724
9724
  async recoverUnhandledInboundEnvelopes() {
9725
9725
  if (typeof this.deliveryTracker.listInbound !== 'function') {
9726
- logger$1c.debug('delivery_tracker_missing_inbound_listing');
9726
+ logger$1b.debug('delivery_tracker_missing_inbound_listing');
9727
9727
  return;
9728
9728
  }
9729
9729
  const failedInbound = await this.deliveryTracker.listInbound((env) => env.status === EnvelopeStatus.RECEIVED ||
9730
9730
  env.status === EnvelopeStatus.FAILED_TO_HANDLE);
9731
9731
  if (!failedInbound.length) {
9732
- logger$1c.debug('no_failed_inbound_envelopes_to_recover');
9732
+ logger$1b.debug('no_failed_inbound_envelopes_to_recover');
9733
9733
  return;
9734
9734
  }
9735
9735
  const grouped = new Map();
@@ -9746,7 +9746,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9746
9746
  this.pendingRecoveryEnvelopes.set(serviceName, envelopes);
9747
9747
  }
9748
9748
  });
9749
- logger$1c.debug('discovered_failed_inbound_envelopes', {
9749
+ logger$1b.debug('discovered_failed_inbound_envelopes', {
9750
9750
  total: failedInbound.length,
9751
9751
  services: Array.from(grouped.keys()),
9752
9752
  });
@@ -9756,7 +9756,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9756
9756
  const pollTimeoutMs = options.pollTimeoutMs ??
9757
9757
  options.poll_timeout_ms ??
9758
9758
  DEFAULT_POLLING_TIMEOUT_MS;
9759
- logger$1c.debug('listen_start', {
9759
+ logger$1b.debug('listen_start', {
9760
9760
  recipient: serviceName,
9761
9761
  poll_timeout_ms: pollTimeoutMs ?? DEFAULT_POLLING_TIMEOUT_MS,
9762
9762
  });
@@ -9787,7 +9787,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9787
9787
  tracked?.mailboxType === MailboxType.OUTBOX ||
9788
9788
  envelope.frame?.['type'] === 'DeliveryAck';
9789
9789
  if (!shouldInvoke) {
9790
- logger$1c.debug('skipping_listener_handler', {
9790
+ logger$1b.debug('skipping_listener_handler', {
9791
9791
  recipient: serviceName,
9792
9792
  envelope_id: envelope.id,
9793
9793
  tracked_status: tracked?.status,
@@ -9801,13 +9801,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9801
9801
  ? undefined
9802
9802
  : (tracked ?? undefined);
9803
9803
  if (trackedForHandler && trackedForHandler.attempt > 0) {
9804
- logger$1c.info('resuming_handler_retry_after_restart', {
9804
+ logger$1b.info('resuming_handler_retry_after_restart', {
9805
9805
  envelope_id: envelope.id,
9806
9806
  current_attempts: trackedForHandler.attempt,
9807
9807
  service_name: serviceName,
9808
9808
  });
9809
9809
  }
9810
- logger$1c.debug('forwarding_to_listener_handler', {
9810
+ logger$1b.debug('forwarding_to_listener_handler', {
9811
9811
  recipient: serviceName,
9812
9812
  envelope_id: envelope.id,
9813
9813
  frame_type: envelope.frame?.['type'],
@@ -9826,7 +9826,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9826
9826
  await channel.send(null);
9827
9827
  }
9828
9828
  catch (error) {
9829
- logger$1c.debug('listener_stop_signal_failed', {
9829
+ logger$1b.debug('listener_stop_signal_failed', {
9830
9830
  service_name: serviceName,
9831
9831
  error: error instanceof Error ? error.message : String(error),
9832
9832
  });
@@ -9835,7 +9835,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9835
9835
  await this.listenersLock.runExclusive(async () => {
9836
9836
  const existing = this.listeners.get(serviceName);
9837
9837
  if (existing) {
9838
- logger$1c.debug('replacing_envelope_listener', { recipient: serviceName });
9838
+ logger$1b.debug('replacing_envelope_listener', { recipient: serviceName });
9839
9839
  existing.listener.stop();
9840
9840
  try {
9841
9841
  await existing.listener.task.promise;
@@ -9853,13 +9853,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9853
9853
  return binding.address;
9854
9854
  }
9855
9855
  async listenRpc(serviceName, handler, options = {}) {
9856
- logger$1c.debug('rpc_listen_start', { service_name: serviceName });
9856
+ logger$1b.debug('rpc_listen_start', { service_name: serviceName });
9857
9857
  const rpcHandler = async (envelope, context) => {
9858
9858
  const result = await this.rpcServerHandler.handleRpcRequest(envelope, context, handler, serviceName);
9859
9859
  return result ?? null;
9860
9860
  };
9861
9861
  const address = await this.listen(serviceName, rpcHandler, options);
9862
- logger$1c.debug('rpc_listen_bound', {
9862
+ logger$1b.debug('rpc_listen_bound', {
9863
9863
  service_name: serviceName,
9864
9864
  address: address.toString(),
9865
9865
  });
@@ -9928,12 +9928,12 @@ class EnvelopeListenerManager extends TaskSpawner {
9928
9928
  return cached;
9929
9929
  });
9930
9930
  if (!envelopes.length) {
9931
- logger$1c.debug('no_cached_recovery_for_service', {
9931
+ logger$1b.debug('no_cached_recovery_for_service', {
9932
9932
  service_name: serviceName,
9933
9933
  });
9934
9934
  return;
9935
9935
  }
9936
- logger$1c.debug('recovering_unhandled_envelopes_on_listen', {
9936
+ logger$1b.debug('recovering_unhandled_envelopes_on_listen', {
9937
9937
  service_name: serviceName,
9938
9938
  count: envelopes.length,
9939
9939
  envelope_ids: envelopes.map((trackedEnvelope) => trackedEnvelope.envelopeId),
@@ -9944,7 +9944,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9944
9944
  async recoverServiceEnvelopes(serviceName, envelopes, handler) {
9945
9945
  for (const tracked of envelopes) {
9946
9946
  try {
9947
- logger$1c.warning('recovering_unhandled_envelope', {
9947
+ logger$1b.warning('recovering_unhandled_envelope', {
9948
9948
  envelope_id: tracked.envelopeId,
9949
9949
  service_name: serviceName,
9950
9950
  current_attempts: tracked.attempt,
@@ -9953,13 +9953,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9953
9953
  const originalEnvelope = tracked.originalEnvelope;
9954
9954
  const receiverPolicy = this.nodeLike.deliveryPolicy?.receiverRetryPolicy ?? undefined;
9955
9955
  await this.executeHandlerWithRetries(handler, originalEnvelope, undefined, receiverPolicy, tracked, serviceName);
9956
- logger$1c.debug('envelope_recovery_completed', {
9956
+ logger$1b.debug('envelope_recovery_completed', {
9957
9957
  envelope_id: tracked.envelopeId,
9958
9958
  service_name: serviceName,
9959
9959
  });
9960
9960
  }
9961
9961
  catch (error) {
9962
- logger$1c.error('envelope_recovery_failed', {
9962
+ logger$1b.error('envelope_recovery_failed', {
9963
9963
  envelope_id: tracked.envelopeId,
9964
9964
  service_name: serviceName,
9965
9965
  error: error instanceof Error ? error.message : String(error),
@@ -10005,7 +10005,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10005
10005
  await this.deliveryTracker.onEnvelopeHandled(trackedEnvelope);
10006
10006
  }
10007
10007
  if (currentAttempt > 0) {
10008
- logger$1c.info('handler_retry_succeeded', {
10008
+ logger$1b.info('handler_retry_succeeded', {
10009
10009
  envelope_id: envelope.id,
10010
10010
  attempt: currentAttempt + 1,
10011
10011
  total_attempts: currentAttempt + 1,
@@ -10021,7 +10021,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10021
10021
  await this.deliveryTracker.onEnvelopeHandleFailed(inboxName, trackedEnvelope, context, error instanceof Error ? error : new Error(String(error)), isFinalAttempt);
10022
10022
  }
10023
10023
  if (isFinalAttempt) {
10024
- logger$1c.error('handler_execution_failed_exhausted_retries', {
10024
+ logger$1b.error('handler_execution_failed_exhausted_retries', {
10025
10025
  envelope_id: envelope.id,
10026
10026
  total_attempts: attemptNumber,
10027
10027
  max_retries: retryPolicy?.maxRetries ?? 0,
@@ -10030,7 +10030,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10030
10030
  break;
10031
10031
  }
10032
10032
  const delayMs = retryPolicy?.nextDelayMs(attemptNumber) ?? 0;
10033
- logger$1c.warning('handler_execution_failed_will_retry', {
10033
+ logger$1b.warning('handler_execution_failed_will_retry', {
10034
10034
  envelope_id: envelope.id,
10035
10035
  attempt: attemptNumber,
10036
10036
  max_retries: retryPolicy?.maxRetries ?? 0,
@@ -10060,7 +10060,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10060
10060
  }
10061
10061
  }
10062
10062
 
10063
- const logger$1b = getLogger('naylence.fame.delivery.default_delivery_tracker');
10063
+ const logger$1a = getLogger('naylence.fame.delivery.default_delivery_tracker');
10064
10064
  const STREAM_END = Symbol('stream-end');
10065
10065
  const SWEEPER_TICK = Symbol('tracker-sweeper-tick');
10066
10066
  function createDeferred$2() {
@@ -10292,7 +10292,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10292
10292
  const expectedResponseType = options.expectedResponseType;
10293
10293
  const tracked = await this.lock.runExclusive(async () => {
10294
10294
  if (this.ackFutures.has(envelope.id)) {
10295
- logger$1b.debug('tracker_envelope_already_tracked', {
10295
+ logger$1a.debug('tracker_envelope_already_tracked', {
10296
10296
  envp_id: envelope.id,
10297
10297
  });
10298
10298
  return null;
@@ -10302,7 +10302,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10302
10302
  if (expectedResponseType & FameResponseType.REPLY ||
10303
10303
  expectedResponseType & FameResponseType.STREAM) {
10304
10304
  if (existingEnvId && existingEnvId !== envelope.id) {
10305
- logger$1b.debug('envelope_already_tracked_for_replies', {
10305
+ logger$1a.debug('envelope_already_tracked_for_replies', {
10306
10306
  envp_id: envelope.id,
10307
10307
  corr_id: corrId,
10308
10308
  expected_response_type: expectedResponseType,
@@ -10351,7 +10351,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10351
10351
  return null;
10352
10352
  }
10353
10353
  await this.scheduleTimer(tracked, options.retryPolicy ?? null, options.retryHandler ?? null);
10354
- logger$1b.debug('tracker_registered_envelope', {
10354
+ logger$1a.debug('tracker_registered_envelope', {
10355
10355
  envp_id: envelope.id,
10356
10356
  corr_id: tracked.originalEnvelope.corrId,
10357
10357
  expected_response: tracked.expectedResponseType,
@@ -10375,21 +10375,21 @@ class DefaultDeliveryTracker extends TaskSpawner {
10375
10375
  return this.awaitEnvelopeFuture(envelopeId, FameResponseType.REPLY | FameResponseType.STREAM, future, timeoutMs);
10376
10376
  }
10377
10377
  async onEnvelopeDelivered(inboxName, envelope, context) {
10378
- logger$1b.debug('envelope_delivered', {
10378
+ logger$1a.debug('envelope_delivered', {
10379
10379
  envp_id: envelope.id,
10380
10380
  corr_id: envelope.corrId,
10381
10381
  rtype: envelope.rtype ?? FameResponseType.NONE,
10382
10382
  frame_type: envelope.frame?.type ?? 'unknown',
10383
10383
  });
10384
10384
  if (!envelope.corrId) {
10385
- logger$1b.debug('envelope_delivered_no_corr_id', {
10385
+ logger$1a.debug('envelope_delivered_no_corr_id', {
10386
10386
  envelope_id: envelope.id,
10387
10387
  });
10388
10388
  return null;
10389
10389
  }
10390
10390
  if (this.isDeliveryAckFrame(envelope.frame)) {
10391
10391
  if (!envelope.frame.refId) {
10392
- logger$1b.debug('envelope_delivered_no_ref_id', {
10392
+ logger$1a.debug('envelope_delivered_no_ref_id', {
10393
10393
  envelope_id: envelope.id,
10394
10394
  });
10395
10395
  return null;
@@ -10427,7 +10427,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10427
10427
  await inbox.set(envelope.id, tracked);
10428
10428
  }
10429
10429
  else {
10430
- logger$1b.debug('tracker_duplicate_envelope_already_handled', {
10430
+ logger$1a.debug('tracker_duplicate_envelope_already_handled', {
10431
10431
  envp_id: envelope.id,
10432
10432
  status: tracked.status,
10433
10433
  });
@@ -10470,7 +10470,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10470
10470
  }
10471
10471
  if (isFinalFailure) {
10472
10472
  envelope.status = EnvelopeStatus.FAILED_TO_HANDLE;
10473
- logger$1b.error('envelope_handle_failed_final', {
10473
+ logger$1a.error('envelope_handle_failed_final', {
10474
10474
  inbox_name: inboxName,
10475
10475
  envp_id: envelope.originalEnvelope.id,
10476
10476
  error: error?.message ?? 'unknown',
@@ -10481,7 +10481,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10481
10481
  await inbox.delete(envelope.originalEnvelope.id);
10482
10482
  return;
10483
10483
  }
10484
- logger$1b.warning('envelope_handle_failed_retry', {
10484
+ logger$1a.warning('envelope_handle_failed_retry', {
10485
10485
  inbox_name: inboxName,
10486
10486
  envp_id: envelope.originalEnvelope.id,
10487
10487
  error: error?.message ?? 'unknown',
@@ -10527,14 +10527,14 @@ class DefaultDeliveryTracker extends TaskSpawner {
10527
10527
  if (handledViaFuture) {
10528
10528
  await this.markDoneSince(this.ackFutures, refId, this.ackDoneSince);
10529
10529
  await this.clearTimer(refId);
10530
- logger$1b.debug('tracker_ack_resolved_without_tracked_envelope', {
10530
+ logger$1a.debug('tracker_ack_resolved_without_tracked_envelope', {
10531
10531
  envp_id: envelope.id,
10532
10532
  ref_id: refId,
10533
10533
  corr_id: envelope.corrId,
10534
10534
  });
10535
10535
  return;
10536
10536
  }
10537
- logger$1b.debug('tracker_ack_for_unknown_envelope', {
10537
+ logger$1a.debug('tracker_ack_for_unknown_envelope', {
10538
10538
  envp_id: envelope.id,
10539
10539
  ref_id: refId,
10540
10540
  corr_id: envelope.corrId,
@@ -10542,7 +10542,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10542
10542
  return;
10543
10543
  }
10544
10544
  if (tracked.originalEnvelope.corrId !== envelope.corrId) {
10545
- logger$1b.debug('tracker_ack_corr_id_mismatch', {
10545
+ logger$1a.debug('tracker_ack_corr_id_mismatch', {
10546
10546
  envp_id: envelope.id,
10547
10547
  expected_corr_id: tracked.originalEnvelope.corrId,
10548
10548
  actual_corr_id: envelope.corrId,
@@ -10567,7 +10567,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10567
10567
  for (const handler of this.eventHandlers) {
10568
10568
  await handler.onEnvelopeAcked?.(tracked);
10569
10569
  }
10570
- logger$1b.debug('tracker_envelope_acked', {
10570
+ logger$1a.debug('tracker_envelope_acked', {
10571
10571
  envp_id: tracked.originalEnvelope.id,
10572
10572
  });
10573
10573
  }
@@ -10585,13 +10585,13 @@ class DefaultDeliveryTracker extends TaskSpawner {
10585
10585
  const outbox = this.ensureOutbox();
10586
10586
  const tracked = await outbox.get(envelope.frame.refId);
10587
10587
  if (!tracked) {
10588
- logger$1b.debug('tracker_nack_for_unknown_envelope', {
10588
+ logger$1a.debug('tracker_nack_for_unknown_envelope', {
10589
10589
  envp_id: envelope.id,
10590
10590
  });
10591
10591
  return;
10592
10592
  }
10593
10593
  if (tracked.originalEnvelope.corrId !== envelope.corrId) {
10594
- logger$1b.debug('tracker_nack_corr_id_mismatch', {
10594
+ logger$1a.debug('tracker_nack_corr_id_mismatch', {
10595
10595
  envp_id: envelope.id,
10596
10596
  expected_corr_id: tracked.originalEnvelope.corrId,
10597
10597
  actual_corr_id: envelope.corrId,
@@ -10633,7 +10633,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10633
10633
  for (const handler of this.eventHandlers) {
10634
10634
  await handler.onEnvelopeNacked?.(tracked, ackFrame.reason ?? null);
10635
10635
  }
10636
- logger$1b.debug('tracker_envelope_nacked', {
10636
+ logger$1a.debug('tracker_envelope_nacked', {
10637
10637
  envp_id: tracked.originalEnvelope.id,
10638
10638
  reason: ackFrame.reason,
10639
10639
  });
@@ -10681,7 +10681,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10681
10681
  for (const handler of this.eventHandlers) {
10682
10682
  await handler.onEnvelopeReplied?.(trackedEnvelope, envelope);
10683
10683
  }
10684
- logger$1b.debug('tracked_envelope_replied', {
10684
+ logger$1a.debug('tracked_envelope_replied', {
10685
10685
  envp_id: trackedEnvelope.originalEnvelope.id,
10686
10686
  corr_id: envelope.corrId,
10687
10687
  });
@@ -10755,7 +10755,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10755
10755
  async addToInboxDlq(trackedEnvelope, reason = null) {
10756
10756
  const dlq = this.inboxDlq;
10757
10757
  if (!dlq) {
10758
- logger$1b.error('dlq_not_initialized', {
10758
+ logger$1a.error('dlq_not_initialized', {
10759
10759
  envp_id: trackedEnvelope.originalEnvelope.id,
10760
10760
  });
10761
10761
  return;
@@ -10770,7 +10770,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10770
10770
  const deadLetteredAt = Date.now();
10771
10771
  setMetaWithLegacy(trackedEnvelope.meta, 'deadLetteredAtMs', 'dead_lettered_at_ms', deadLetteredAt);
10772
10772
  await dlq.set(trackedEnvelope.originalEnvelope.id, trackedEnvelope);
10773
- logger$1b.warning('envelope_moved_to_dlq', {
10773
+ logger$1a.warning('envelope_moved_to_dlq', {
10774
10774
  envp_id: trackedEnvelope.originalEnvelope.id,
10775
10775
  service_name: trackedEnvelope.serviceName,
10776
10776
  });
@@ -10799,7 +10799,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10799
10799
  const toDelete = Object.entries(items).filter(([, value]) => predicate ? predicate(value) : true);
10800
10800
  await Promise.all(toDelete.map(([key]) => dlq.delete(key)));
10801
10801
  if (toDelete.length) {
10802
- logger$1b.debug('dlq_purged', { count: toDelete.length });
10802
+ logger$1a.debug('dlq_purged', { count: toDelete.length });
10803
10803
  }
10804
10804
  return toDelete.length;
10805
10805
  }
@@ -10852,11 +10852,11 @@ class DefaultDeliveryTracker extends TaskSpawner {
10852
10852
  }
10853
10853
  this.futuresSweeper = null;
10854
10854
  }
10855
- logger$1b.debug('tracker_cleanup_completed');
10855
+ logger$1a.debug('tracker_cleanup_completed');
10856
10856
  }
10857
10857
  async recoverPending() {
10858
10858
  const pending = await this.listPending();
10859
- logger$1b.debug('tracker_recovering_pending', { count: pending.length });
10859
+ logger$1a.debug('tracker_recovering_pending', { count: pending.length });
10860
10860
  await this.lock.runExclusive(async () => {
10861
10861
  for (const tracked of pending) {
10862
10862
  if (tracked.expectedResponseType & FameResponseType.ACK) {
@@ -10882,7 +10882,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10882
10882
  for (const tracked of pending) {
10883
10883
  await this.scheduleTimer(tracked, null, null);
10884
10884
  }
10885
- logger$1b.debug('tracker_recovery_completed', { count: pending.length });
10885
+ logger$1a.debug('tracker_recovery_completed', { count: pending.length });
10886
10886
  }
10887
10887
  ensureOutbox() {
10888
10888
  if (!this.outbox) {
@@ -10897,7 +10897,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10897
10897
  return this.inbox;
10898
10898
  }
10899
10899
  async waitForPendingAcks() {
10900
- logger$1b.debug('tracker_node_preparing_to_stop_waiting_for_pending_acks');
10900
+ logger$1a.debug('tracker_node_preparing_to_stop_waiting_for_pending_acks');
10901
10901
  const outbox = this.outbox;
10902
10902
  if (!outbox) {
10903
10903
  return;
@@ -10909,7 +10909,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10909
10909
  continue;
10910
10910
  }
10911
10911
  if (!future.done) {
10912
- logger$1b.debug('tracker_pending_ack_future_detected', {
10912
+ logger$1a.debug('tracker_pending_ack_future_detected', {
10913
10913
  envelope_id: envelopeId,
10914
10914
  });
10915
10915
  pending.push({ envelopeId, future });
@@ -10917,10 +10917,10 @@ class DefaultDeliveryTracker extends TaskSpawner {
10917
10917
  }
10918
10918
  });
10919
10919
  if (!pending.length) {
10920
- logger$1b.debug('tracker_no_pending_acks_to_wait_for');
10920
+ logger$1a.debug('tracker_no_pending_acks_to_wait_for');
10921
10921
  return;
10922
10922
  }
10923
- logger$1b.debug('tracker_waiting_for_pending_acks', { count: pending.length });
10923
+ logger$1a.debug('tracker_waiting_for_pending_acks', { count: pending.length });
10924
10924
  for (const entry of pending) {
10925
10925
  if (!entry) {
10926
10926
  continue;
@@ -10937,19 +10937,19 @@ class DefaultDeliveryTracker extends TaskSpawner {
10937
10937
  }
10938
10938
  try {
10939
10939
  await this.awaitWithTimeout(entry.future.promise, remainingMs);
10940
- logger$1b.debug('tracker_received_ack', {
10940
+ logger$1a.debug('tracker_received_ack', {
10941
10941
  envelope_id: entry.envelopeId,
10942
10942
  });
10943
10943
  await outbox.delete(entry.envelopeId);
10944
10944
  }
10945
10945
  catch (error) {
10946
10946
  if (error instanceof Error && error.name === 'TimeoutError') {
10947
- logger$1b.debug('tracker_ack_timeout_expired', {
10947
+ logger$1a.debug('tracker_ack_timeout_expired', {
10948
10948
  envelope_id: entry.envelopeId,
10949
10949
  });
10950
10950
  }
10951
10951
  else {
10952
- logger$1b.debug('tracker_ack_wait_error', {
10952
+ logger$1a.debug('tracker_ack_wait_error', {
10953
10953
  envelope_id: entry.envelopeId,
10954
10954
  error: error instanceof Error ? error.message : String(error),
10955
10955
  });
@@ -10957,13 +10957,13 @@ class DefaultDeliveryTracker extends TaskSpawner {
10957
10957
  }
10958
10958
  }
10959
10959
  catch (error) {
10960
- logger$1b.error('tracker_error_waiting_for_ack', {
10960
+ logger$1a.error('tracker_error_waiting_for_ack', {
10961
10961
  envelope_id: entry.envelopeId,
10962
10962
  error: error instanceof Error ? error.message : String(error),
10963
10963
  });
10964
10964
  }
10965
10965
  }
10966
- logger$1b.debug('tracker_finished_waiting_for_pending_acks');
10966
+ logger$1a.debug('tracker_finished_waiting_for_pending_acks');
10967
10967
  }
10968
10968
  async waitForPendingAckDispatches() {
10969
10969
  while (this.pendingAckDispatches.size > 0) {
@@ -11021,7 +11021,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11021
11021
  for (const handler of this.eventHandlers) {
11022
11022
  await handler.onEnvelopeTimeout?.(currentTracked);
11023
11023
  }
11024
- logger$1b.debug('tracker_envelope_timed_out', {
11024
+ logger$1a.debug('tracker_envelope_timed_out', {
11025
11025
  envp_id: tracked.originalEnvelope.id,
11026
11026
  });
11027
11027
  return;
@@ -11034,7 +11034,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11034
11034
  currentTracked.timeoutAtMs = nextTimeoutAt;
11035
11035
  await outbox.set(tracked.originalEnvelope.id, currentTracked);
11036
11036
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11037
- logger$1b.debug('tracker_retry_deferred_during_shutdown', {
11037
+ logger$1a.debug('tracker_retry_deferred_during_shutdown', {
11038
11038
  envp_id: tracked.originalEnvelope.id,
11039
11039
  defer_ms: shutdownDeferMs,
11040
11040
  });
@@ -11057,7 +11057,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11057
11057
  });
11058
11058
  }
11059
11059
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11060
- logger$1b.debug('envelope_delivery_retry_scheduled', {
11060
+ logger$1a.debug('envelope_delivery_retry_scheduled', {
11061
11061
  envp_id: tracked.originalEnvelope.id,
11062
11062
  attempt: currentTracked.attempt,
11063
11063
  max_retries: retryPolicy.maxRetries,
@@ -11069,7 +11069,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11069
11069
  currentTracked.timeoutAtMs = currentTracked.overallTimeoutAtMs;
11070
11070
  await outbox.set(tracked.originalEnvelope.id, currentTracked);
11071
11071
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11072
- logger$1b.debug('envelope_retries_exhausted_waiting_until_overall_timeout', {
11072
+ logger$1a.debug('envelope_retries_exhausted_waiting_until_overall_timeout', {
11073
11073
  envp_id: tracked.originalEnvelope.id,
11074
11074
  attempt: currentTracked.attempt,
11075
11075
  overall_timeout_at_ms: currentTracked.overallTimeoutAtMs,
@@ -11089,7 +11089,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11089
11089
  for (const handler of this.eventHandlers) {
11090
11090
  await handler.onEnvelopeTimeout?.(currentTracked);
11091
11091
  }
11092
- logger$1b.debug('tracker_envelope_timed_out', {
11092
+ logger$1a.debug('tracker_envelope_timed_out', {
11093
11093
  envp_id: tracked.originalEnvelope.id,
11094
11094
  });
11095
11095
  }
@@ -11097,7 +11097,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11097
11097
  if (error instanceof TaskCancelledError) {
11098
11098
  return;
11099
11099
  }
11100
- logger$1b.error('tracker_timer_error', {
11100
+ logger$1a.error('tracker_timer_error', {
11101
11101
  envp_id: tracked.originalEnvelope.id,
11102
11102
  error: error instanceof Error ? error.message : String(error),
11103
11103
  });
@@ -11152,7 +11152,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11152
11152
  if (timeoutSeconds !== null) {
11153
11153
  return await this.awaitWithTimeout(future.promise, timeoutSeconds);
11154
11154
  }
11155
- logger$1b.debug('await_envelope_no_timeout_wait', {
11155
+ logger$1a.debug('await_envelope_no_timeout_wait', {
11156
11156
  envelope_id: envelopeId,
11157
11157
  });
11158
11158
  return await future.promise;
@@ -11161,7 +11161,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11161
11161
  if (error instanceof Error && error.name !== 'TimeoutError') {
11162
11162
  throw error;
11163
11163
  }
11164
- logger$1b.error('await_envelope_timeout_error', {
11164
+ logger$1a.error('await_envelope_timeout_error', {
11165
11165
  envelope_id: envelopeId,
11166
11166
  timeout_ms: timeoutSeconds,
11167
11167
  future_done: false,
@@ -11322,7 +11322,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11322
11322
  this.replyDoneSince.delete(envId);
11323
11323
  }
11324
11324
  });
11325
- logger$1b.debug('tracker_swept_completed_futures', {
11325
+ logger$1a.debug('tracker_swept_completed_futures', {
11326
11326
  ack_removed: toRemoveAck.length,
11327
11327
  reply_removed: toRemoveReply.length,
11328
11328
  grace_secs: this.futGcGraceSecs,
@@ -11336,7 +11336,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11336
11336
  if (error instanceof Error && error.name === 'TimeoutError') {
11337
11337
  continue;
11338
11338
  }
11339
- logger$1b.error('tracker_sweeper_error', {
11339
+ logger$1a.error('tracker_sweeper_error', {
11340
11340
  error: error instanceof Error ? error.message : String(error),
11341
11341
  });
11342
11342
  }
@@ -11367,14 +11367,14 @@ class DefaultDeliveryTracker extends TaskSpawner {
11367
11367
  }
11368
11368
  const node = this.node;
11369
11369
  if (!envelope.replyTo) {
11370
- logger$1b.error('cannot_send_ack_no_reply_to', { envp_id: envelope.id });
11370
+ logger$1a.error('cannot_send_ack_no_reply_to', { envp_id: envelope.id });
11371
11371
  return;
11372
11372
  }
11373
11373
  if (!envelope.corrId) {
11374
- logger$1b.error('cannot_send_ack_no_corr_id', { envp_id: envelope.id });
11374
+ logger$1a.error('cannot_send_ack_no_corr_id', { envp_id: envelope.id });
11375
11375
  return;
11376
11376
  }
11377
- logger$1b.debug('tracker_sending_ack', {
11377
+ logger$1a.debug('tracker_sending_ack', {
11378
11378
  envp_id: envelope.id,
11379
11379
  ref_id: envelope.id,
11380
11380
  to: envelope.replyTo,
@@ -11394,7 +11394,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11394
11394
  .send(ackEnvelope)
11395
11395
  .then(() => undefined)
11396
11396
  .catch((error) => {
11397
- logger$1b.error('tracker_ack_dispatch_failed', {
11397
+ logger$1a.error('tracker_ack_dispatch_failed', {
11398
11398
  envp_id: envelope.id,
11399
11399
  error: error instanceof Error ? error.message : String(error),
11400
11400
  });
@@ -11480,7 +11480,7 @@ class AsyncEvent {
11480
11480
  }
11481
11481
  }
11482
11482
 
11483
- const logger$1a = getLogger('naylence.fame.node.root_session_manager');
11483
+ const logger$19 = getLogger('naylence.fame.node.root_session_manager');
11484
11484
  function resolveOption$1(options, primary, ...aliases) {
11485
11485
  const record = options;
11486
11486
  const primaryKey = primary;
@@ -11561,7 +11561,7 @@ class RootSessionManager extends TaskSpawner {
11561
11561
  this.onAdmissionFailed =
11562
11562
  typeof onAdmissionFailed === 'function' ? onAdmissionFailed : undefined;
11563
11563
  this.enableContinuousRefresh = enableContinuousRefresh ?? true;
11564
- logger$1a.debug('created_root_session_manager');
11564
+ logger$19.debug('created_root_session_manager');
11565
11565
  }
11566
11566
  get isReady() {
11567
11567
  return this.readyEvent.isSet();
@@ -11586,7 +11586,7 @@ class RootSessionManager extends TaskSpawner {
11586
11586
  if (this.admissionTask) {
11587
11587
  return;
11588
11588
  }
11589
- logger$1a.debug('root_session_manager_starting');
11589
+ logger$19.debug('root_session_manager_starting');
11590
11590
  this.stopEvent.clear();
11591
11591
  this.readyEvent.clear();
11592
11592
  const taskName = `root-admission-${this.admissionEpoch}`;
@@ -11606,10 +11606,10 @@ class RootSessionManager extends TaskSpawner {
11606
11606
  await this.admissionTask.promise;
11607
11607
  throw new FameConnectError('Root session manager failed to become ready');
11608
11608
  }
11609
- logger$1a.debug('root_session_manager_started');
11609
+ logger$19.debug('root_session_manager_started');
11610
11610
  }
11611
11611
  async stop() {
11612
- logger$1a.debug('root_session_manager_stopping');
11612
+ logger$19.debug('root_session_manager_stopping');
11613
11613
  this.stopEvent.set();
11614
11614
  if (this.admissionTask) {
11615
11615
  this.admissionTask.cancel();
@@ -11621,7 +11621,7 @@ class RootSessionManager extends TaskSpawner {
11621
11621
  await this.consumeTask(this.expiryGuardTask);
11622
11622
  this.expiryGuardTask = null;
11623
11623
  }
11624
- logger$1a.debug('root_session_manager_stopped');
11624
+ logger$19.debug('root_session_manager_stopped');
11625
11625
  }
11626
11626
  async awaitReady(timeoutMs) {
11627
11627
  if (this.isReady) {
@@ -11662,12 +11662,12 @@ class RootSessionManager extends TaskSpawner {
11662
11662
  await this.onEpochChange(epoch);
11663
11663
  }
11664
11664
  else {
11665
- logger$1a.debug('epoch_change_ignored_no_handler', { epoch });
11665
+ logger$19.debug('epoch_change_ignored_no_handler', { epoch });
11666
11666
  }
11667
11667
  }
11668
11668
  static createForRootSentinel(node, admissionClient, requestedLogicals = [], enableContinuousRefresh = true, onEpochChange) {
11669
11669
  const handleWelcome = async (frame) => {
11670
- logger$1a.info('root_admission_successful', {
11670
+ logger$19.info('root_admission_successful', {
11671
11671
  system_id: frame.systemId,
11672
11672
  assigned_path: frame.assignedPath ?? null,
11673
11673
  accepted_logicals: frame.acceptedLogicals ?? [],
@@ -11678,12 +11678,12 @@ class RootSessionManager extends TaskSpawner {
11678
11678
  ? grant.purpose
11679
11679
  : undefined;
11680
11680
  if (purpose) {
11681
- logger$1a.debug('received_admission_grant', { purpose });
11681
+ logger$19.debug('received_admission_grant', { purpose });
11682
11682
  }
11683
11683
  }
11684
11684
  };
11685
11685
  const handleFailure = async (error) => {
11686
- logger$1a.error('root_admission_failed_permanently', {
11686
+ logger$19.error('root_admission_failed_permanently', {
11687
11687
  error: error.message,
11688
11688
  });
11689
11689
  };
@@ -11712,10 +11712,10 @@ class RootSessionManager extends TaskSpawner {
11712
11712
  this.readyEvent.set();
11713
11713
  }
11714
11714
  if (this.hadSuccessfulAdmission) {
11715
- logger$1a.debug('root_admission_refreshed');
11715
+ logger$19.debug('root_admission_refreshed');
11716
11716
  }
11717
11717
  else {
11718
- logger$1a.debug('root_admission_completed');
11718
+ logger$19.debug('root_admission_completed');
11719
11719
  }
11720
11720
  this.hadSuccessfulAdmission = true;
11721
11721
  delay = RootSessionManager.BACKOFF_INITIAL;
@@ -11724,7 +11724,7 @@ class RootSessionManager extends TaskSpawner {
11724
11724
  await this.startExpiryGuard(welcomeFrame);
11725
11725
  const expiryTriggered = await this.waitForExpiryOrStop();
11726
11726
  if (expiryTriggered && !this.stopEvent.isSet()) {
11727
- logger$1a.debug('performing_scheduled_re_admission');
11727
+ logger$19.debug('performing_scheduled_re_admission');
11728
11728
  continue;
11729
11729
  }
11730
11730
  }
@@ -11736,7 +11736,7 @@ class RootSessionManager extends TaskSpawner {
11736
11736
  }
11737
11737
  const errorObject = error instanceof Error ? error : new Error(String(error));
11738
11738
  const willRetry = attempts < RootSessionManager.RETRY_MAX_ATTEMPTS;
11739
- logger$1a.warning('root_admission_failed', {
11739
+ logger$19.warning('root_admission_failed', {
11740
11740
  error: errorObject.message,
11741
11741
  attempt: attempts,
11742
11742
  will_retry: willRetry,
@@ -11754,7 +11754,7 @@ class RootSessionManager extends TaskSpawner {
11754
11754
  }
11755
11755
  }
11756
11756
  if (attempts >= RootSessionManager.RETRY_MAX_ATTEMPTS) {
11757
- logger$1a.error('root_admission_max_attempts_exceeded', {
11757
+ logger$19.error('root_admission_max_attempts_exceeded', {
11758
11758
  max_attempts: RootSessionManager.RETRY_MAX_ATTEMPTS,
11759
11759
  });
11760
11760
  }
@@ -11831,7 +11831,7 @@ class RootSessionManager extends TaskSpawner {
11831
11831
  }
11832
11832
  async expiryGuard(welcomeFrame, signal) {
11833
11833
  if (!welcomeFrame.expiresAt) {
11834
- logger$1a.debug('no_admission_expiry_configured');
11834
+ logger$19.debug('no_admission_expiry_configured');
11835
11835
  await Promise.race([this.stopEvent.wait(), this.waitForAbort(signal)]);
11836
11836
  return;
11837
11837
  }
@@ -11840,7 +11840,7 @@ class RootSessionManager extends TaskSpawner {
11840
11840
  let delaySeconds = (expiresAt.getTime() - now.getTime()) / 1000 -
11841
11841
  RootSessionManager.JWT_REFRESH_SAFETY;
11842
11842
  delaySeconds = Math.max(delaySeconds, 0);
11843
- logger$1a.debug('admission_expiry_guard_started', {
11843
+ logger$19.debug('admission_expiry_guard_started', {
11844
11844
  welcome_expires_at: expiresAt.toISOString(),
11845
11845
  delay_seconds: delaySeconds,
11846
11846
  refresh_safety_seconds: RootSessionManager.JWT_REFRESH_SAFETY,
@@ -11849,7 +11849,7 @@ class RootSessionManager extends TaskSpawner {
11849
11849
  if (this.stopEvent.isSet() || signal?.aborted) {
11850
11850
  return;
11851
11851
  }
11852
- logger$1a.debug('admission_expiry_triggered_refresh', {
11852
+ logger$19.debug('admission_expiry_triggered_refresh', {
11853
11853
  expires_at: expiresAt.toISOString(),
11854
11854
  current_time: new Date().toISOString(),
11855
11855
  seconds_before_expiry: RootSessionManager.JWT_REFRESH_SAFETY,
@@ -11864,7 +11864,7 @@ class RootSessionManager extends TaskSpawner {
11864
11864
  return;
11865
11865
  }
11866
11866
  const errorObject = error instanceof Error ? error : new Error(String(error));
11867
- logger$1a.debug('background_task_error', {
11867
+ logger$19.debug('background_task_error', {
11868
11868
  task_name: task.name,
11869
11869
  error: errorObject.message,
11870
11870
  });
@@ -11960,7 +11960,7 @@ class BoundedAsyncQueue {
11960
11960
  }
11961
11961
  }
11962
11962
 
11963
- const logger$19 = getLogger('naylence.fame.connector.broadcast_channel_connector');
11963
+ const logger$18 = getLogger('naylence.fame.connector.broadcast_channel_connector');
11964
11964
  const BROADCAST_CHANNEL_CONNECTOR_TYPE$1 = 'broadcast-channel-connector';
11965
11965
  const DEFAULT_CHANNEL$7 = 'naylence-fabric';
11966
11966
  const DEFAULT_INBOX_CAPACITY$7 = 2048;
@@ -12049,7 +12049,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12049
12049
  this.localNodeId = normalizedLocalNodeId;
12050
12050
  this.targetNodeId = BroadcastChannelConnector.normalizeTargetNodeId(config.initialTargetNodeId);
12051
12051
  this.channel = new BroadcastChannel(this.channelName);
12052
- logger$19.debug('broadcast_channel_connector_created', {
12052
+ logger$18.debug('broadcast_channel_connector_created', {
12053
12053
  channel: this.channelName,
12054
12054
  connector_id: this.connectorId,
12055
12055
  local_node_id: this.localNodeId,
@@ -12061,7 +12061,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12061
12061
  this.onMsg = (event) => {
12062
12062
  // Guard: Don't process if listener was unregistered
12063
12063
  if (!this.listenerRegistered) {
12064
- logger$19.warning('broadcast_channel_message_after_unregister', {
12064
+ logger$18.warning('broadcast_channel_message_after_unregister', {
12065
12065
  channel: this.channelName,
12066
12066
  connector_id: this.connectorId,
12067
12067
  timestamp: new Date().toISOString(),
@@ -12069,7 +12069,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12069
12069
  return;
12070
12070
  }
12071
12071
  const message = event.data;
12072
- logger$19.debug('broadcast_channel_raw_event', {
12072
+ logger$18.debug('broadcast_channel_raw_event', {
12073
12073
  channel: this.channelName,
12074
12074
  connector_id: this.connectorId,
12075
12075
  message_type: message && typeof message === 'object'
@@ -12085,7 +12085,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12085
12085
  const busMessage = message;
12086
12086
  const senderNodeId = BroadcastChannelConnector.normalizeNodeId(busMessage.senderNodeId);
12087
12087
  if (!senderNodeId) {
12088
- logger$19.debug('broadcast_channel_message_rejected', {
12088
+ logger$18.debug('broadcast_channel_message_rejected', {
12089
12089
  channel: this.channelName,
12090
12090
  connector_id: this.connectorId,
12091
12091
  reason: 'missing_sender_node_id',
@@ -12093,7 +12093,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12093
12093
  return;
12094
12094
  }
12095
12095
  if (senderNodeId === this.localNodeId) {
12096
- logger$19.debug('broadcast_channel_message_rejected', {
12096
+ logger$18.debug('broadcast_channel_message_rejected', {
12097
12097
  channel: this.channelName,
12098
12098
  connector_id: this.connectorId,
12099
12099
  reason: 'self_echo',
@@ -12107,14 +12107,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12107
12107
  }
12108
12108
  const payload = BroadcastChannelConnector.coercePayload(busMessage.payload);
12109
12109
  if (!payload) {
12110
- logger$19.debug('broadcast_channel_payload_rejected', {
12110
+ logger$18.debug('broadcast_channel_payload_rejected', {
12111
12111
  channel: this.channelName,
12112
12112
  connector_id: this.connectorId,
12113
12113
  reason: 'unrecognized_payload_type',
12114
12114
  });
12115
12115
  return;
12116
12116
  }
12117
- logger$19.debug('broadcast_channel_message_received', {
12117
+ logger$18.debug('broadcast_channel_message_received', {
12118
12118
  channel: this.channelName,
12119
12119
  sender_id: message?.senderId,
12120
12120
  sender_node_id: senderNodeId,
@@ -12143,14 +12143,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12143
12143
  }
12144
12144
  catch (error) {
12145
12145
  if (error instanceof QueueFullError) {
12146
- logger$19.warning('broadcast_channel_receive_queue_full', {
12146
+ logger$18.warning('broadcast_channel_receive_queue_full', {
12147
12147
  channel: this.channelName,
12148
12148
  inbox_capacity: this.inboxCapacity,
12149
12149
  inbox_remaining_capacity: this.inbox.remainingCapacity,
12150
12150
  });
12151
12151
  }
12152
12152
  else {
12153
- logger$19.error('broadcast_channel_receive_error', {
12153
+ logger$18.error('broadcast_channel_receive_error', {
12154
12154
  channel: this.channelName,
12155
12155
  error: error instanceof Error ? error.message : String(error),
12156
12156
  });
@@ -12164,7 +12164,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12164
12164
  // Setup visibility change monitoring
12165
12165
  this.visibilityChangeHandler = () => {
12166
12166
  const isHidden = document.hidden;
12167
- logger$19.debug('broadcast_channel_visibility_changed', {
12167
+ logger$18.debug('broadcast_channel_visibility_changed', {
12168
12168
  channel: this.channelName,
12169
12169
  connector_id: this.connectorId,
12170
12170
  visibility: isHidden ? 'hidden' : 'visible',
@@ -12173,7 +12173,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12173
12173
  // Pause/resume connector based on visibility
12174
12174
  if (isHidden && this.state === ConnectorState.STARTED) {
12175
12175
  this.pause().catch((err) => {
12176
- logger$19.warning('broadcast_channel_pause_failed', {
12176
+ logger$18.warning('broadcast_channel_pause_failed', {
12177
12177
  channel: this.channelName,
12178
12178
  connector_id: this.connectorId,
12179
12179
  error: err instanceof Error ? err.message : String(err),
@@ -12182,7 +12182,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12182
12182
  }
12183
12183
  else if (!isHidden && this.state === ConnectorState.PAUSED) {
12184
12184
  this.resume().catch((err) => {
12185
- logger$19.warning('broadcast_channel_resume_failed', {
12185
+ logger$18.warning('broadcast_channel_resume_failed', {
12186
12186
  channel: this.channelName,
12187
12187
  connector_id: this.connectorId,
12188
12188
  error: err instanceof Error ? err.message : String(err),
@@ -12196,7 +12196,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12196
12196
  // Track page lifecycle events to detect browser unload/discard
12197
12197
  if (typeof window !== 'undefined') {
12198
12198
  const lifecycleLogger = (event) => {
12199
- logger$19.debug('broadcast_channel_page_lifecycle', {
12199
+ logger$18.debug('broadcast_channel_page_lifecycle', {
12200
12200
  channel: this.channelName,
12201
12201
  connector_id: this.connectorId,
12202
12202
  event_type: event.type,
@@ -12212,7 +12212,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12212
12212
  document.addEventListener('resume', lifecycleLogger);
12213
12213
  }
12214
12214
  // Log initial state with detailed visibility info
12215
- logger$19.debug('broadcast_channel_initial_visibility', {
12215
+ logger$18.debug('broadcast_channel_initial_visibility', {
12216
12216
  channel: this.channelName,
12217
12217
  connector_id: this.connectorId,
12218
12218
  visibility: document.hidden ? 'hidden' : 'visible',
@@ -12244,14 +12244,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12244
12244
  }
12245
12245
  catch (error) {
12246
12246
  if (error instanceof QueueFullError) {
12247
- logger$19.warning('broadcast_channel_push_queue_full', {
12247
+ logger$18.warning('broadcast_channel_push_queue_full', {
12248
12248
  channel: this.channelName,
12249
12249
  inbox_capacity: this.inboxCapacity,
12250
12250
  inbox_remaining_capacity: this.inbox.remainingCapacity,
12251
12251
  });
12252
12252
  throw error;
12253
12253
  }
12254
- logger$19.error('broadcast_channel_push_failed', {
12254
+ logger$18.error('broadcast_channel_push_failed', {
12255
12255
  channel: this.channelName,
12256
12256
  error: error instanceof Error ? error.message : String(error),
12257
12257
  });
@@ -12261,7 +12261,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12261
12261
  async _transportSendBytes(data) {
12262
12262
  ensureBroadcastEnvironment();
12263
12263
  const targetNodeId = this.targetNodeId ?? '*';
12264
- logger$19.debug('broadcast_channel_message_sending', {
12264
+ logger$18.debug('broadcast_channel_message_sending', {
12265
12265
  channel: this.channelName,
12266
12266
  sender_id: this.connectorId,
12267
12267
  sender_node_id: this.localNodeId,
@@ -12282,7 +12282,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12282
12282
  return item;
12283
12283
  }
12284
12284
  async _transportClose(code, reason) {
12285
- logger$19.debug('broadcast_channel_transport_closing', {
12285
+ logger$18.debug('broadcast_channel_transport_closing', {
12286
12286
  channel: this.channelName,
12287
12287
  connector_id: this.connectorId,
12288
12288
  code,
@@ -12291,14 +12291,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12291
12291
  timestamp: new Date().toISOString(),
12292
12292
  });
12293
12293
  if (this.listenerRegistered) {
12294
- logger$19.debug('broadcast_channel_removing_listener', {
12294
+ logger$18.debug('broadcast_channel_removing_listener', {
12295
12295
  channel: this.channelName,
12296
12296
  connector_id: this.connectorId,
12297
12297
  timestamp: new Date().toISOString(),
12298
12298
  });
12299
12299
  this.channel.removeEventListener('message', this.onMsg);
12300
12300
  this.listenerRegistered = false;
12301
- logger$19.debug('broadcast_channel_listener_removed', {
12301
+ logger$18.debug('broadcast_channel_listener_removed', {
12302
12302
  channel: this.channelName,
12303
12303
  connector_id: this.connectorId,
12304
12304
  timestamp: new Date().toISOString(),
@@ -12311,13 +12311,13 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12311
12311
  this.visibilityChangeListenerRegistered = false;
12312
12312
  this.visibilityChangeHandler = undefined;
12313
12313
  }
12314
- logger$19.debug('broadcast_channel_closing', {
12314
+ logger$18.debug('broadcast_channel_closing', {
12315
12315
  channel: this.channelName,
12316
12316
  connector_id: this.connectorId,
12317
12317
  timestamp: new Date().toISOString(),
12318
12318
  });
12319
12319
  this.channel.close();
12320
- logger$19.debug('broadcast_channel_closed', {
12320
+ logger$18.debug('broadcast_channel_closed', {
12321
12321
  channel: this.channelName,
12322
12322
  connector_id: this.connectorId,
12323
12323
  timestamp: new Date().toISOString(),
@@ -12341,7 +12341,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12341
12341
  if (targetNodeId &&
12342
12342
  targetNodeId !== '*' &&
12343
12343
  targetNodeId !== this.localNodeId) {
12344
- logger$19.debug('broadcast_channel_message_rejected', {
12344
+ logger$18.debug('broadcast_channel_message_rejected', {
12345
12345
  channel: this.channelName,
12346
12346
  connector_id: this.connectorId,
12347
12347
  reason: 'wildcard_target_mismatch',
@@ -12357,7 +12357,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12357
12357
  if (expectedSender &&
12358
12358
  expectedSender !== '*' &&
12359
12359
  senderNodeId !== expectedSender) {
12360
- logger$19.debug('broadcast_channel_message_rejected', {
12360
+ logger$18.debug('broadcast_channel_message_rejected', {
12361
12361
  channel: this.channelName,
12362
12362
  connector_id: this.connectorId,
12363
12363
  reason: 'unexpected_sender',
@@ -12370,7 +12370,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12370
12370
  if (targetNodeId &&
12371
12371
  targetNodeId !== '*' &&
12372
12372
  targetNodeId !== this.localNodeId) {
12373
- logger$19.debug('broadcast_channel_message_rejected', {
12373
+ logger$18.debug('broadcast_channel_message_rejected', {
12374
12374
  channel: this.channelName,
12375
12375
  connector_id: this.connectorId,
12376
12376
  reason: 'unexpected_target',
@@ -12395,7 +12395,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12395
12395
  return 'unknown';
12396
12396
  }
12397
12397
  logInboxSnapshot(event, extra = {}) {
12398
- logger$19.debug(event, {
12398
+ logger$18.debug(event, {
12399
12399
  channel: this.channelName,
12400
12400
  connector_id: this.connectorId,
12401
12401
  connector_state: this.state,
@@ -12411,7 +12411,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12411
12411
  await super.start(inboundHandler);
12412
12412
  // After transitioning to STARTED, check if tab is already hidden
12413
12413
  if (typeof document !== 'undefined' && document.hidden) {
12414
- logger$19.debug('broadcast_channel_start_in_hidden_tab', {
12414
+ logger$18.debug('broadcast_channel_start_in_hidden_tab', {
12415
12415
  channel: this.channelName,
12416
12416
  connector_id: this.connectorId,
12417
12417
  document_hidden: document.hidden,
@@ -12421,7 +12421,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12421
12421
  });
12422
12422
  // Immediately pause if tab is hidden at start time
12423
12423
  await this.pause().catch((err) => {
12424
- logger$19.warning('broadcast_channel_initial_pause_failed', {
12424
+ logger$18.warning('broadcast_channel_initial_pause_failed', {
12425
12425
  channel: this.channelName,
12426
12426
  connector_id: this.connectorId,
12427
12427
  error: err instanceof Error ? err.message : String(err),
@@ -12439,7 +12439,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12439
12439
  return;
12440
12440
  }
12441
12441
  this.targetNodeId = normalized;
12442
- logger$19.debug('broadcast_channel_target_updated', {
12442
+ logger$18.debug('broadcast_channel_target_updated', {
12443
12443
  channel: this.channelName,
12444
12444
  connector_id: this.connectorId,
12445
12445
  local_node_id: this.localNodeId,
@@ -12449,7 +12449,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12449
12449
  }
12450
12450
  setWildcardTarget() {
12451
12451
  this.targetNodeId = '*';
12452
- logger$19.debug('broadcast_channel_target_updated', {
12452
+ logger$18.debug('broadcast_channel_target_updated', {
12453
12453
  channel: this.channelName,
12454
12454
  connector_id: this.connectorId,
12455
12455
  local_node_id: this.localNodeId,
@@ -12577,7 +12577,7 @@ function broadcastChannelGrantToConnectorConfig(grant) {
12577
12577
  return config;
12578
12578
  }
12579
12579
 
12580
- const logger$18 = getLogger('naylence.fame.node.upstream_session_manager');
12580
+ const logger$17 = getLogger('naylence.fame.node.upstream_session_manager');
12581
12581
  function isPlainRecord$4(value) {
12582
12582
  if (typeof value !== 'object' || value === null) {
12583
12583
  return false;
@@ -12698,7 +12698,7 @@ class UpstreamSessionManager extends TaskSpawner {
12698
12698
  this.wrappedHandler = this.makeHeartbeatEnabledHandler(options.inboundHandler);
12699
12699
  // Store the connection retry policy (can be null, in which case default behavior applies)
12700
12700
  this.connectionRetryPolicy = options.retryPolicy ?? null;
12701
- logger$18.debug('created_upstream_session_manager', {
12701
+ logger$17.debug('created_upstream_session_manager', {
12702
12702
  target_system_id: this.targetSystemId,
12703
12703
  has_retry_policy: this.connectionRetryPolicy !== null,
12704
12704
  });
@@ -12707,23 +12707,23 @@ class UpstreamSessionManager extends TaskSpawner {
12707
12707
  return this.targetSystemId;
12708
12708
  }
12709
12709
  setupVisibilityListener() {
12710
- logger$18.debug('setup_visibility_listener_called', {
12710
+ logger$17.debug('setup_visibility_listener_called', {
12711
12711
  has_document: typeof document !== 'undefined',
12712
12712
  });
12713
12713
  if (typeof document !== 'undefined' && document.addEventListener) {
12714
12714
  this._visibilityHandler = () => {
12715
- logger$18.debug('visibility_change_event_fired', {
12715
+ logger$17.debug('visibility_change_event_fired', {
12716
12716
  state: document.visibilityState,
12717
12717
  });
12718
12718
  if (document.visibilityState === 'visible') {
12719
- logger$18.debug('visibility_change_detected_waking_up');
12719
+ logger$17.debug('visibility_change_detected_waking_up');
12720
12720
  this.wakeEvent.set();
12721
12721
  }
12722
12722
  };
12723
12723
  document.addEventListener('visibilitychange', this._visibilityHandler);
12724
12724
  }
12725
12725
  else {
12726
- logger$18.debug('setup_visibility_listener_skipped_no_document');
12726
+ logger$17.debug('setup_visibility_listener_skipped_no_document');
12727
12727
  }
12728
12728
  }
12729
12729
  teardownVisibilityListener() {
@@ -12756,13 +12756,13 @@ class UpstreamSessionManager extends TaskSpawner {
12756
12756
  }
12757
12757
  throw new FameConnectError('Upstream session manager failed to attach');
12758
12758
  }
12759
- logger$18.debug('upstream_session_manager_started');
12759
+ logger$17.debug('upstream_session_manager_started');
12760
12760
  }
12761
12761
  getActiveConnector() {
12762
12762
  return this.connector;
12763
12763
  }
12764
12764
  async stop() {
12765
- logger$18.debug('upstream_session_manager_stopping');
12765
+ logger$17.debug('upstream_session_manager_stopping');
12766
12766
  this.teardownVisibilityListener();
12767
12767
  this.stopEvent.set();
12768
12768
  this.currentStopSubtasks?.set();
@@ -12773,7 +12773,7 @@ class UpstreamSessionManager extends TaskSpawner {
12773
12773
  }
12774
12774
  catch (error) {
12775
12775
  if (!(error instanceof TaskCancelledError)) {
12776
- logger$18.debug('fsm_task_stopped_with_error', {
12776
+ logger$17.debug('fsm_task_stopped_with_error', {
12777
12777
  error: error.message,
12778
12778
  });
12779
12779
  }
@@ -12782,13 +12782,13 @@ class UpstreamSessionManager extends TaskSpawner {
12782
12782
  }
12783
12783
  if (this.connector) {
12784
12784
  await this.connector.stop().catch((error) => {
12785
- logger$18.debug('connector_stop_error', {
12785
+ logger$17.debug('connector_stop_error', {
12786
12786
  error: error.message,
12787
12787
  });
12788
12788
  });
12789
12789
  this.connector = null;
12790
12790
  }
12791
- logger$18.debug('upstream_session_manager_stopped');
12791
+ logger$17.debug('upstream_session_manager_stopped');
12792
12792
  }
12793
12793
  async send(envelope) {
12794
12794
  if (this.messageQueue.length >= UpstreamSessionManager.TX_QUEUE_MAX) {
@@ -12837,7 +12837,7 @@ class UpstreamSessionManager extends TaskSpawner {
12837
12837
  const shouldFailFast = this.shouldFailFastOnError(error);
12838
12838
  if (error instanceof FameTransportClose ||
12839
12839
  error instanceof FameConnectError) {
12840
- logger$18.warning('upstream_link_closed', {
12840
+ logger$17.warning('upstream_link_closed', {
12841
12841
  error: error.message,
12842
12842
  will_retry: !shouldFailFast,
12843
12843
  attempt: this.initialAttempts,
@@ -12850,13 +12850,13 @@ class UpstreamSessionManager extends TaskSpawner {
12850
12850
  else {
12851
12851
  const err = error;
12852
12852
  if (err.name === 'OAuth2PkceRedirectInitiatedError') {
12853
- logger$18.info('upstream_link_redirecting', {
12853
+ logger$17.info('upstream_link_redirecting', {
12854
12854
  error: err.message,
12855
12855
  will_retry: true,
12856
12856
  });
12857
12857
  }
12858
12858
  else {
12859
- logger$18.warning('upstream_link_closed', {
12859
+ logger$17.warning('upstream_link_closed', {
12860
12860
  error: err.message,
12861
12861
  will_retry: !shouldFailFast,
12862
12862
  attempt: this.initialAttempts,
@@ -12900,7 +12900,7 @@ class UpstreamSessionManager extends TaskSpawner {
12900
12900
  // If sleep was interrupted by visibility change (user returned to tab),
12901
12901
  // reset backoff to initial delay for immediate retry with fresh backoff
12902
12902
  if (wasWoken) {
12903
- logger$18.debug('backoff_reset_on_visibility_change', {
12903
+ logger$17.debug('backoff_reset_on_visibility_change', {
12904
12904
  previous_delay: delay,
12905
12905
  new_delay: UpstreamSessionManager.BACKOFF_INITIAL,
12906
12906
  });
@@ -12919,7 +12919,7 @@ class UpstreamSessionManager extends TaskSpawner {
12919
12919
  // Check if wake event is already set (e.g., visibility just changed)
12920
12920
  if (this.wakeEvent.isSet()) {
12921
12921
  this.wakeEvent.clear();
12922
- logger$18.debug('sleep_skipped_wake_event_pending');
12922
+ logger$17.debug('sleep_skipped_wake_event_pending');
12923
12923
  return true;
12924
12924
  }
12925
12925
  let timeout;
@@ -12936,7 +12936,7 @@ class UpstreamSessionManager extends TaskSpawner {
12936
12936
  ]);
12937
12937
  const wasWoken = this.wakeEvent.isSet();
12938
12938
  if (wasWoken) {
12939
- logger$18.debug('sleep_interrupted_by_wake_event');
12939
+ logger$17.debug('sleep_interrupted_by_wake_event');
12940
12940
  this.wakeEvent.clear();
12941
12941
  }
12942
12942
  if (timeout !== undefined) {
@@ -12999,7 +12999,7 @@ class UpstreamSessionManager extends TaskSpawner {
12999
12999
  await connector.start(this.wrappedHandler);
13000
13000
  this.connector = connector;
13001
13001
  const callbackGrants = this.node.gatherSupportedCallbackGrants();
13002
- logger$18.debug('callback_grants_before_augmentation', {
13002
+ logger$17.debug('callback_grants_before_augmentation', {
13003
13003
  count: callbackGrants.length,
13004
13004
  types: callbackGrants.map((g) => g.type),
13005
13005
  });
@@ -13009,7 +13009,7 @@ class UpstreamSessionManager extends TaskSpawner {
13009
13009
  const broadcastCallbackGrant = shouldAddBroadcastGrant
13010
13010
  ? this.createBroadcastCallbackGrant(grant)
13011
13011
  : null;
13012
- logger$18.debug('broadcast_callback_grant_check', {
13012
+ logger$17.debug('broadcast_callback_grant_check', {
13013
13013
  should_add: shouldAddBroadcastGrant,
13014
13014
  grant_created: !!broadcastCallbackGrant,
13015
13015
  });
@@ -13028,12 +13028,12 @@ class UpstreamSessionManager extends TaskSpawner {
13028
13028
  const isDuplicate = callbackGrants.some((existing) => JSON.stringify(existing) === JSON.stringify(grant));
13029
13029
  if (!isDuplicate) {
13030
13030
  callbackGrants.push(grant);
13031
- logger$18.debug('added_connection_grant_as_callback', {
13031
+ logger$17.debug('added_connection_grant_as_callback', {
13032
13032
  type: grant.type,
13033
13033
  });
13034
13034
  }
13035
13035
  else {
13036
- logger$18.debug('skipped_duplicate_connection_grant', {
13036
+ logger$17.debug('skipped_duplicate_connection_grant', {
13037
13037
  type: grant.type,
13038
13038
  });
13039
13039
  }
@@ -13045,12 +13045,12 @@ class UpstreamSessionManager extends TaskSpawner {
13045
13045
  if (broadcastCallbackGrant &&
13046
13046
  this.shouldAdvertiseBroadcastGrant(grant, callbackGrants)) {
13047
13047
  callbackGrants.push(broadcastCallbackGrant);
13048
- logger$18.debug('added_broadcast_callback_grant');
13048
+ logger$17.debug('added_broadcast_callback_grant');
13049
13049
  }
13050
13050
  else if (broadcastCallbackGrant) {
13051
- logger$18.debug('skipped_duplicate_broadcast_callback_grant');
13051
+ logger$17.debug('skipped_duplicate_broadcast_callback_grant');
13052
13052
  }
13053
- logger$18.debug('callback_grants_after_augmentation', {
13053
+ logger$17.debug('callback_grants_after_augmentation', {
13054
13054
  count: callbackGrants.length,
13055
13055
  types: callbackGrants.map((g) => g.type),
13056
13056
  });
@@ -13063,7 +13063,7 @@ class UpstreamSessionManager extends TaskSpawner {
13063
13063
  targetAware.setTargetNodeId(this.targetSystemId);
13064
13064
  }
13065
13065
  catch (error) {
13066
- logger$18.warning('broadcast_channel_target_apply_failed', {
13066
+ logger$17.warning('broadcast_channel_target_apply_failed', {
13067
13067
  error: error instanceof Error ? error.message : String(error),
13068
13068
  target_node_id: this.targetSystemId,
13069
13069
  });
@@ -13085,14 +13085,14 @@ class UpstreamSessionManager extends TaskSpawner {
13085
13085
  });
13086
13086
  }
13087
13087
  else {
13088
- logger$18.warning('parent_epoch_changed', { epoch });
13088
+ logger$17.warning('parent_epoch_changed', { epoch });
13089
13089
  }
13090
13090
  }
13091
13091
  if (!this.readyEvent.isSet()) {
13092
13092
  this.readyEvent.set();
13093
13093
  }
13094
13094
  if (this.messageQueue.length > 0) {
13095
- logger$18.debug('flushing_buffered_frames', {
13095
+ logger$17.debug('flushing_buffered_frames', {
13096
13096
  queue_size: this.messageQueue.length,
13097
13097
  });
13098
13098
  this.queueEvent.set();
@@ -13109,12 +13109,12 @@ class UpstreamSessionManager extends TaskSpawner {
13109
13109
  name: `expiry-guard-${this.connectEpoch}`,
13110
13110
  });
13111
13111
  if (this.hadSuccessfulAttach) {
13112
- logger$18.debug('reconnected_to_upstream', {
13112
+ logger$17.debug('reconnected_to_upstream', {
13113
13113
  attach_expires_at: attachInfo.attachExpiresAt?.toISOString?.() ?? null,
13114
13114
  });
13115
13115
  }
13116
13116
  else {
13117
- logger$18.debug('connected_to_upstream', {
13117
+ logger$17.debug('connected_to_upstream', {
13118
13118
  attach_expires_at: attachInfo.attachExpiresAt?.toISOString?.() ?? null,
13119
13119
  });
13120
13120
  }
@@ -13132,18 +13132,18 @@ class UpstreamSessionManager extends TaskSpawner {
13132
13132
  this.currentStopSubtasks = null;
13133
13133
  await Promise.allSettled(tasks.map((task) => task.promise));
13134
13134
  if (this.connector) {
13135
- logger$18.debug('upstream_stopping_old_connector', {
13135
+ logger$17.debug('upstream_stopping_old_connector', {
13136
13136
  connect_epoch: this.connectEpoch,
13137
13137
  target_system_id: this.targetSystemId,
13138
13138
  timestamp: new Date().toISOString(),
13139
13139
  });
13140
13140
  await this.connector.stop().catch((err) => {
13141
- logger$18.warning('upstream_connector_stop_error', {
13141
+ logger$17.warning('upstream_connector_stop_error', {
13142
13142
  connect_epoch: this.connectEpoch,
13143
13143
  error: err instanceof Error ? err.message : String(err),
13144
13144
  });
13145
13145
  });
13146
- logger$18.debug('upstream_old_connector_stopped', {
13146
+ logger$17.debug('upstream_old_connector_stopped', {
13147
13147
  connect_epoch: this.connectEpoch,
13148
13148
  target_system_id: this.targetSystemId,
13149
13149
  timestamp: new Date().toISOString(),
@@ -13196,7 +13196,7 @@ class UpstreamSessionManager extends TaskSpawner {
13196
13196
  });
13197
13197
  }
13198
13198
  catch (error) {
13199
- logger$18.debug('broadcast_callback_grant_generation_failed', {
13199
+ logger$17.debug('broadcast_callback_grant_generation_failed', {
13200
13200
  error: error instanceof Error ? error.message : String(error),
13201
13201
  });
13202
13202
  return null;
@@ -13251,7 +13251,7 @@ class UpstreamSessionManager extends TaskSpawner {
13251
13251
  }
13252
13252
  }
13253
13253
  async heartbeatLoop(connector, stopEvt, signal) {
13254
- logger$18.debug('starting_heartbeat_loop');
13254
+ logger$17.debug('starting_heartbeat_loop');
13255
13255
  const intervalMs = UpstreamSessionManager.HEARTBEAT_INTERVAL * 1000;
13256
13256
  const graceMs = intervalMs * UpstreamSessionManager.HEARTBEAT_GRACE;
13257
13257
  this.lastHeartbeatAckTime = Date.now();
@@ -13287,7 +13287,7 @@ class UpstreamSessionManager extends TaskSpawner {
13287
13287
  // Skip heartbeat if connector is paused (e.g., tab is hidden)
13288
13288
  // Keep ack time current so we don't timeout immediately after resuming
13289
13289
  if (currentState === ConnectorState.PAUSED) {
13290
- logger$18.debug('skipping_heartbeat_connector_paused', {
13290
+ logger$17.debug('skipping_heartbeat_connector_paused', {
13291
13291
  connector_state: currentState,
13292
13292
  });
13293
13293
  this.lastHeartbeatAckTime = Date.now();
@@ -13296,14 +13296,14 @@ class UpstreamSessionManager extends TaskSpawner {
13296
13296
  // Reset ack time if just resumed from pause (prevents immediate timeout)
13297
13297
  if (previousState === ConnectorState.PAUSED &&
13298
13298
  currentState === ConnectorState.STARTED) {
13299
- logger$18.debug('connector_just_resumed_resetting_ack_time', {
13299
+ logger$17.debug('connector_just_resumed_resetting_ack_time', {
13300
13300
  previous_state: previousState,
13301
13301
  current_state: currentState,
13302
13302
  });
13303
13303
  this.lastHeartbeatAckTime = Date.now();
13304
13304
  }
13305
13305
  const envelope = await this.makeHeartbeatEnvelope();
13306
- logger$18.debug('sending_heartbeat', {
13306
+ logger$17.debug('sending_heartbeat', {
13307
13307
  hb_corr_id: envelope.corrId,
13308
13308
  hb_env_id: envelope.id,
13309
13309
  });
@@ -13329,7 +13329,7 @@ class UpstreamSessionManager extends TaskSpawner {
13329
13329
  throw new FameConnectError('missed heartbeat acknowledgement');
13330
13330
  }
13331
13331
  }
13332
- logger$18.debug('completed_heartbeat_loop');
13332
+ logger$17.debug('completed_heartbeat_loop');
13333
13333
  }
13334
13334
  async messagePumpLoop(connector, stopEvt, signal) {
13335
13335
  while (!stopEvt.isSet() && !signal?.aborted) {
@@ -13346,19 +13346,19 @@ class UpstreamSessionManager extends TaskSpawner {
13346
13346
  if (!envelope) {
13347
13347
  continue;
13348
13348
  }
13349
- logger$18.debug('upstream_pump_sending_envelope', {
13349
+ logger$17.debug('upstream_pump_sending_envelope', {
13350
13350
  envelopeId: envelope.id,
13351
13351
  type: envelope.frame?.type,
13352
13352
  });
13353
13353
  try {
13354
13354
  await connector.send(envelope);
13355
- logger$18.debug('upstream_pump_sent_envelope', {
13355
+ logger$17.debug('upstream_pump_sent_envelope', {
13356
13356
  envelopeId: envelope.id,
13357
13357
  });
13358
13358
  }
13359
13359
  catch (error) {
13360
13360
  if (error instanceof FameMessageTooLarge) {
13361
- logger$18.error('failed_to_send_message', { error: error.message });
13361
+ logger$17.error('failed_to_send_message', { error: error.message });
13362
13362
  await this.handleMessageTooLarge(envelope, error.message);
13363
13363
  }
13364
13364
  else if (error instanceof FameTransportClose) {
@@ -13420,7 +13420,7 @@ class UpstreamSessionManager extends TaskSpawner {
13420
13420
  await fabric.send(ackEnvelope);
13421
13421
  }
13422
13422
  catch (error) {
13423
- logger$18.warning('failed_to_send_nack', {
13423
+ logger$17.warning('failed_to_send_nack', {
13424
13424
  error: error.message,
13425
13425
  });
13426
13426
  }
@@ -13434,7 +13434,7 @@ class UpstreamSessionManager extends TaskSpawner {
13434
13434
  timestamps.push(info.attachExpiresAt);
13435
13435
  }
13436
13436
  if (!timestamps.length) {
13437
- logger$18.debug('no_ttl_expiry_configured');
13437
+ logger$17.debug('no_ttl_expiry_configured');
13438
13438
  await this.waitEvent(stopEvt, signal);
13439
13439
  return;
13440
13440
  }
@@ -13443,7 +13443,7 @@ class UpstreamSessionManager extends TaskSpawner {
13443
13443
  let delaySeconds = (earliest.getTime() - now.getTime()) / 1000 -
13444
13444
  UpstreamSessionManager.JWT_REFRESH_SAFETY;
13445
13445
  delaySeconds = Math.max(delaySeconds, UpstreamSessionManager.JWT_REFRESH_SAFETY);
13446
- logger$18.debug('ttl_expiry_guard_started', {
13446
+ logger$17.debug('ttl_expiry_guard_started', {
13447
13447
  welcome_expires_at: welcome.frame.expiresAt ?? null,
13448
13448
  attach_expires_at: info.attachExpiresAt?.toISOString?.() ?? null,
13449
13449
  earliest_expiry: earliest.toISOString(),
@@ -13471,7 +13471,7 @@ class UpstreamSessionManager extends TaskSpawner {
13471
13471
  }
13472
13472
  }
13473
13473
  if (!stopEvt.isSet()) {
13474
- logger$18.debug('ttl_expiry_triggered_reconnect', {
13474
+ logger$17.debug('ttl_expiry_triggered_reconnect', {
13475
13475
  expires_at: earliest.toISOString(),
13476
13476
  current_time: new Date().toISOString(),
13477
13477
  seconds_before_expiry: UpstreamSessionManager.JWT_REFRESH_SAFETY,
@@ -13516,7 +13516,7 @@ class UpstreamSessionManager extends TaskSpawner {
13516
13516
  }
13517
13517
  await this.node.dispatchEnvelopeEvent('onEnvelopeReceived', this.node, env, context);
13518
13518
  if (env.frame.type === 'NodeHeartbeatAck') {
13519
- logger$18.debug('received_heartbeat_ack', {
13519
+ logger$17.debug('received_heartbeat_ack', {
13520
13520
  hb_ack_env_id: env.id,
13521
13521
  hb_ack_corr_id: env.corrId,
13522
13522
  hb_routing_epoch: env.frame.routingEpoch,
@@ -13530,7 +13530,7 @@ class UpstreamSessionManager extends TaskSpawner {
13530
13530
  await this.onEpochChange(epoch);
13531
13531
  }
13532
13532
  else {
13533
- logger$18.warning('parent_epoch_changed', { epoch });
13533
+ logger$17.warning('parent_epoch_changed', { epoch });
13534
13534
  }
13535
13535
  }
13536
13536
  return;
@@ -13549,7 +13549,7 @@ UpstreamSessionManager.TX_QUEUE_MAX = 512;
13549
13549
  UpstreamSessionManager.BACKOFF_INITIAL = 1; // seconds
13550
13550
  UpstreamSessionManager.BACKOFF_CAP = 30; // seconds
13551
13551
 
13552
- const logger$17 = getLogger('naylence.fame.node.admission.noop_admission_client');
13552
+ const logger$16 = getLogger('naylence.fame.node.admission.noop_admission_client');
13553
13553
  class NoopAdmissionClient {
13554
13554
  constructor(options = {}) {
13555
13555
  this.hasUpstream = false;
@@ -13563,7 +13563,7 @@ class NoopAdmissionClient {
13563
13563
  const acceptedLogicals = this.autoAcceptLogicals
13564
13564
  ? [...(requestedLogicals ?? [])]
13565
13565
  : [];
13566
- logger$17.debug('noop_admission_hello', {
13566
+ logger$16.debug('noop_admission_hello', {
13567
13567
  systemId: effectiveSystemId,
13568
13568
  instanceId,
13569
13569
  requestedLogicals,
@@ -13581,7 +13581,7 @@ class NoopAdmissionClient {
13581
13581
  });
13582
13582
  }
13583
13583
  async close() {
13584
- logger$17.debug('noop_admission_close');
13584
+ logger$16.debug('noop_admission_close');
13585
13585
  }
13586
13586
  }
13587
13587
 
@@ -13787,7 +13787,7 @@ class DefaultServiceManager {
13787
13787
  }
13788
13788
 
13789
13789
  const SYSTEM_INBOX$1 = '__sys__';
13790
- const logger$16 = getLogger('naylence.fame.node.node');
13790
+ const logger$15 = getLogger('naylence.fame.node.node');
13791
13791
  function isSnakeCase(name) {
13792
13792
  return name.includes('_');
13793
13793
  }
@@ -14057,7 +14057,7 @@ class FameNode extends TaskSpawner {
14057
14057
  confirmIdentity(systemId, source) {
14058
14058
  if (this._confirmedId) {
14059
14059
  if (this._confirmedId !== systemId) {
14060
- logger$16.error('node_identity_mismatch', {
14060
+ logger$15.error('node_identity_mismatch', {
14061
14061
  current_id: this._confirmedId,
14062
14062
  new_id: systemId,
14063
14063
  source,
@@ -14069,14 +14069,14 @@ class FameNode extends TaskSpawner {
14069
14069
  const isReassignment = this._provisionalId !== systemId;
14070
14070
  this._confirmedId = systemId;
14071
14071
  if (isReassignment) {
14072
- logger$16.debug('node_identity_reassigned', {
14072
+ logger$15.debug('node_identity_reassigned', {
14073
14073
  system_id: systemId,
14074
14074
  previous_id: this._provisionalId,
14075
14075
  source,
14076
14076
  });
14077
14077
  }
14078
14078
  else {
14079
- logger$16.debug('node_identity_confirmed', {
14079
+ logger$15.debug('node_identity_confirmed', {
14080
14080
  system_id: systemId,
14081
14081
  source,
14082
14082
  });
@@ -14144,7 +14144,7 @@ class FameNode extends TaskSpawner {
14144
14144
  return;
14145
14145
  }
14146
14146
  if (frameType === 'NodeHeartbeat') {
14147
- logger$16.debug('received_heartbeat_frame', {
14147
+ logger$15.debug('received_heartbeat_frame', {
14148
14148
  envelopeId: envelope.id,
14149
14149
  corrId: envelope.corrId ?? null,
14150
14150
  });
@@ -14156,7 +14156,7 @@ class FameNode extends TaskSpawner {
14156
14156
  await this.handleDeliveryAck(envelope, context);
14157
14157
  return;
14158
14158
  }
14159
- logger$16.debug('unhandled_system_frame', {
14159
+ logger$15.debug('unhandled_system_frame', {
14160
14160
  envelopeId: envelope.id,
14161
14161
  frameType,
14162
14162
  });
@@ -14168,13 +14168,13 @@ class FameNode extends TaskSpawner {
14168
14168
  }
14169
14169
  await this._deliveryTracker.onEnvelopeDelivered(SYSTEM_INBOX$1, envelope, context);
14170
14170
  if (frame.ok !== false) {
14171
- logger$16.debug('delivery_ack_received', {
14171
+ logger$15.debug('delivery_ack_received', {
14172
14172
  envelopeId: envelope.id,
14173
14173
  corrId: envelope.corrId ?? null,
14174
14174
  });
14175
14175
  return;
14176
14176
  }
14177
- logger$16.warning('delivery_nack_received', {
14177
+ logger$15.warning('delivery_nack_received', {
14178
14178
  envelopeId: envelope.id,
14179
14179
  corrId: envelope.corrId ?? null,
14180
14180
  code: frame.code ?? null,
@@ -14184,7 +14184,7 @@ class FameNode extends TaskSpawner {
14184
14184
  await this.onDeliveryNack(frame, envelope, context);
14185
14185
  }
14186
14186
  async onDeliveryNack(frame, envelope, _context) {
14187
- logger$16.debug('delivery_nack_processed', {
14187
+ logger$15.debug('delivery_nack_processed', {
14188
14188
  envelopeId: envelope.id,
14189
14189
  code: frame.code ?? null,
14190
14190
  reason: frame.reason ?? null,
@@ -14299,7 +14299,7 @@ class FameNode extends TaskSpawner {
14299
14299
  await this._bindingManager.restore();
14300
14300
  await this._envelopeListenerManager.start();
14301
14301
  this._isStarted = true;
14302
- logger$16.debug('node_started', {
14302
+ logger$15.debug('node_started', {
14303
14303
  node_id: this.id,
14304
14304
  sid: this.sid,
14305
14305
  path: this.physicalPath,
@@ -14331,7 +14331,7 @@ class FameNode extends TaskSpawner {
14331
14331
  await this._serviceManager.stop();
14332
14332
  await this.dispatchEvent('onNodeStopped', this);
14333
14333
  this._isStarted = false;
14334
- logger$16.debug('node_stopped', {
14334
+ logger$15.debug('node_stopped', {
14335
14335
  node_id: this.id,
14336
14336
  });
14337
14337
  }
@@ -14521,20 +14521,20 @@ class FameNode extends TaskSpawner {
14521
14521
  await this.forwardUpstream(processedEnvelope, context);
14522
14522
  }
14523
14523
  else {
14524
- logger$16.error('attempted_upstream_loop', {
14524
+ logger$15.error('attempted_upstream_loop', {
14525
14525
  envelopeId: processedEnvelope.id,
14526
14526
  });
14527
14527
  }
14528
14528
  return;
14529
14529
  }
14530
14530
  if (!processedEnvelope.to) {
14531
- logger$16.error('dropping_envelope_without_destination', {
14531
+ logger$15.error('dropping_envelope_without_destination', {
14532
14532
  envelopeId: processedEnvelope.id,
14533
14533
  capabilities: processedEnvelope.capabilities ?? [],
14534
14534
  });
14535
14535
  return;
14536
14536
  }
14537
- logger$16.warning('no_local_handler_for_address', {
14537
+ logger$15.warning('no_local_handler_for_address', {
14538
14538
  address: processedEnvelope.to.toString?.() ?? String(processedEnvelope.to),
14539
14539
  originType: context?.originType ?? null,
14540
14540
  });
@@ -14658,7 +14658,7 @@ class FameNode extends TaskSpawner {
14658
14658
  }
14659
14659
  }
14660
14660
  catch (error) {
14661
- logger$16.warning('callback_grant_collection_failed', {
14661
+ logger$15.warning('callback_grant_collection_failed', {
14662
14662
  error: error instanceof Error ? error.message : String(error),
14663
14663
  });
14664
14664
  }
@@ -14721,7 +14721,7 @@ class FameNode extends TaskSpawner {
14721
14721
  await store.set('self', record);
14722
14722
  }
14723
14723
  catch (error) {
14724
- logger$16.warning('node_meta_persist_failed', {
14724
+ logger$15.warning('node_meta_persist_failed', {
14725
14725
  error: error instanceof Error ? error.message : String(error),
14726
14726
  });
14727
14727
  }
@@ -14859,44 +14859,12 @@ class ConnectionRetryPolicyFactory extends AbstractResourceFactory {
14859
14859
  }
14860
14860
  }
14861
14861
 
14862
- const TOKEN_PROVIDER_FACTORY_BASE_TYPE = 'TokenProviderFactory';
14863
- class TokenProviderFactory extends AbstractResourceFactory {
14864
- static async createTokenProvider(config, options = {}) {
14865
- if (config) {
14866
- const provider = await createResource$1(TOKEN_PROVIDER_FACTORY_BASE_TYPE, config, options);
14867
- if (!provider) {
14868
- throw new Error('Failed to create token provider from configuration');
14869
- }
14870
- return provider;
14871
- }
14872
- let provider = null;
14873
- try {
14874
- provider = await createDefaultResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, null, options);
14875
- }
14876
- catch (error) {
14877
- const message = 'Failed to create default token provider' +
14878
- (error instanceof Error && error.message ? `: ${error.message}` : '');
14879
- throw new Error(message);
14880
- }
14881
- if (!provider) {
14882
- throw new Error('Failed to create default token provider');
14883
- }
14884
- return provider;
14885
- }
14886
- }
14887
-
14888
- function isTokenProvider(candidate) {
14889
- return (typeof candidate === 'object' &&
14890
- candidate !== null &&
14891
- typeof candidate.getToken === 'function');
14892
- }
14893
- function isIdentityExposingTokenProvider(candidate) {
14894
- return (isTokenProvider(candidate) &&
14895
- typeof candidate.getIdentity ===
14896
- 'function');
14897
- }
14898
-
14899
- const logger$15 = getLogger('naylence.fame.node.default_node_identity_policy');
14862
+ /**
14863
+ * Default node identity policy that preserves the current node ID.
14864
+ *
14865
+ * This policy does NOT derive identity from tokens or grants.
14866
+ * For token-subject-based identity, use TokenSubjectNodeIdentityPolicy.
14867
+ */
14900
14868
  class DefaultNodeIdentityPolicy {
14901
14869
  async resolveInitialNodeId(context) {
14902
14870
  if (context.configuredId) {
@@ -14908,44 +14876,10 @@ class DefaultNodeIdentityPolicy {
14908
14876
  return await generateIdAsync({ mode: 'fingerprint' });
14909
14877
  }
14910
14878
  async resolveAdmissionNodeId(context) {
14911
- // Try to extract identity from grants first
14912
- if (context.grants && context.grants.length > 0) {
14913
- for (const grant of context.grants) {
14914
- try {
14915
- const auth = grant.auth;
14916
- if (!auth) {
14917
- continue;
14918
- }
14919
- const tokenProviderConfig = (auth.tokenProvider ??
14920
- auth.token_provider);
14921
- if (!tokenProviderConfig ||
14922
- typeof tokenProviderConfig.type !== 'string') {
14923
- continue;
14924
- }
14925
- const provider = await TokenProviderFactory.createTokenProvider(tokenProviderConfig);
14926
- if (isIdentityExposingTokenProvider(provider)) {
14927
- const identity = await provider.getIdentity();
14928
- if (identity && identity.subject) {
14929
- logger$15.debug('identity_extracted_from_grant', {
14930
- identity_id: identity.subject,
14931
- grant_type: grant.type,
14932
- });
14933
- return identity.subject;
14934
- }
14935
- }
14936
- }
14937
- catch (error) {
14938
- logger$15.warning('identity_extraction_failed', {
14939
- error: error instanceof Error ? error.message : String(error),
14940
- grant_type: grant.type,
14941
- });
14942
- }
14943
- }
14944
- }
14945
- if (!context.currentNodeId) {
14946
- return await generateIdAsync({ mode: 'fingerprint' });
14879
+ if (context.currentNodeId) {
14880
+ return context.currentNodeId;
14947
14881
  }
14948
- return context.currentNodeId;
14882
+ return await generateIdAsync({ mode: 'fingerprint' });
14949
14883
  }
14950
14884
  }
14951
14885
 
@@ -17717,6 +17651,43 @@ var defaultNodeIdentityPolicyFactory = /*#__PURE__*/Object.freeze({
17717
17651
  default: DefaultNodeIdentityPolicyFactory
17718
17652
  });
17719
17653
 
17654
+ const TOKEN_PROVIDER_FACTORY_BASE_TYPE = 'TokenProviderFactory';
17655
+ class TokenProviderFactory extends AbstractResourceFactory {
17656
+ static async createTokenProvider(config, options = {}) {
17657
+ if (config) {
17658
+ const provider = await createResource$1(TOKEN_PROVIDER_FACTORY_BASE_TYPE, config, options);
17659
+ if (!provider) {
17660
+ throw new Error('Failed to create token provider from configuration');
17661
+ }
17662
+ return provider;
17663
+ }
17664
+ let provider = null;
17665
+ try {
17666
+ provider = await createDefaultResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, null, options);
17667
+ }
17668
+ catch (error) {
17669
+ const message = 'Failed to create default token provider' +
17670
+ (error instanceof Error && error.message ? `: ${error.message}` : '');
17671
+ throw new Error(message);
17672
+ }
17673
+ if (!provider) {
17674
+ throw new Error('Failed to create default token provider');
17675
+ }
17676
+ return provider;
17677
+ }
17678
+ }
17679
+
17680
+ function isTokenProvider(candidate) {
17681
+ return (typeof candidate === 'object' &&
17682
+ candidate !== null &&
17683
+ typeof candidate.getToken === 'function');
17684
+ }
17685
+ function isIdentityExposingTokenProvider(candidate) {
17686
+ return (isTokenProvider(candidate) &&
17687
+ typeof candidate.getIdentity ===
17688
+ 'function');
17689
+ }
17690
+
17720
17691
  const logger$10 = getLogger('naylence.fame.node.token_subject_node_identity_policy');
17721
17692
  class TokenSubjectNodeIdentityPolicy {
17722
17693
  async resolveInitialNodeId(context) {