@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.
@@ -725,7 +725,7 @@ class TaskCancelledError extends Error {
725
725
  * Provides functionality similar to Python's asyncio TaskSpawner with proper
726
726
  * error handling, cancellation, and graceful shutdown capabilities.
727
727
  */
728
- const logger$1q = getLogger('naylence.fame.util.task_spawner');
728
+ const logger$1p = getLogger('naylence.fame.util.task_spawner');
729
729
  function firstDefined(source, keys) {
730
730
  for (const key of keys) {
731
731
  if (Object.prototype.hasOwnProperty.call(source, key)) {
@@ -886,7 +886,7 @@ class TaskSpawner {
886
886
  const taskId = `task-${++this._taskCounter}`;
887
887
  const taskName = normalizedOptions.name || `unnamed-${taskId}`;
888
888
  const timeout = normalizedOptions.timeout ?? this._config.defaultTimeout;
889
- logger$1q.debug('starting_background_task', {
889
+ logger$1p.debug('starting_background_task', {
890
890
  task_name: taskName,
891
891
  task_id: taskId,
892
892
  });
@@ -903,7 +903,7 @@ class TaskSpawner {
903
903
  task.promise
904
904
  .then(() => {
905
905
  if (!this._suppressCompletionLogging) {
906
- logger$1q.debug('task_completed_successfully', {
906
+ logger$1p.debug('task_completed_successfully', {
907
907
  task_name: taskName,
908
908
  task_id: taskId,
909
909
  duration_ms: Date.now() - task.startTime,
@@ -957,7 +957,7 @@ class TaskSpawner {
957
957
  error.name === 'AbortError' ||
958
958
  error.message === 'Task cancelled' ||
959
959
  error.message === 'Aborted') {
960
- logger$1q.debug('task_cancelled', {
960
+ logger$1p.debug('task_cancelled', {
961
961
  task_name: taskName,
962
962
  note: 'Task cancelled as requested',
963
963
  });
@@ -965,7 +965,7 @@ class TaskSpawner {
965
965
  }
966
966
  // Handle timeout
967
967
  if (error instanceof TaskTimeoutError) {
968
- logger$1q.warning('task_timed_out', {
968
+ logger$1p.warning('task_timed_out', {
969
969
  task_name: taskName,
970
970
  error: error.message,
971
971
  });
@@ -977,7 +977,7 @@ class TaskSpawner {
977
977
  // Handle known WebSocket shutdown race condition (similar to Python version)
978
978
  if (error.message.includes("await wasn't used with future") ||
979
979
  error.message.includes('WebSocket closed during receive')) {
980
- logger$1q.debug('task_shutdown_race_condition_handled', {
980
+ logger$1p.debug('task_shutdown_race_condition_handled', {
981
981
  task_name: taskName,
982
982
  note: 'Normal WebSocket close timing during shutdown - not an error',
983
983
  });
@@ -987,7 +987,7 @@ class TaskSpawner {
987
987
  if (error.name === 'FameTransportClose' ||
988
988
  error.message.includes('normal closure') ||
989
989
  error.message.includes('Connection closed')) {
990
- logger$1q.debug('task_shutdown_completed_normally', {
990
+ logger$1p.debug('task_shutdown_completed_normally', {
991
991
  task_name: taskName,
992
992
  note: 'Task closed normally during shutdown',
993
993
  });
@@ -995,7 +995,7 @@ class TaskSpawner {
995
995
  }
996
996
  // Handle PKCE redirect "errors" as info
997
997
  if (error.name === 'OAuth2PkceRedirectInitiatedError') {
998
- logger$1q.debug('background_task_redirecting', {
998
+ logger$1p.debug('background_task_redirecting', {
999
999
  task_name: taskName,
1000
1000
  note: 'Task interrupted for PKCE redirect',
1001
1001
  });
@@ -1008,14 +1008,14 @@ class TaskSpawner {
1008
1008
  // Log retriable errors as warnings (they'll be retried by upstream logic)
1009
1009
  // Log non-retriable errors as errors (fatal failures)
1010
1010
  if (isRetriableError) {
1011
- logger$1q.warning('background_task_failed', {
1011
+ logger$1p.warning('background_task_failed', {
1012
1012
  task_name: taskName,
1013
1013
  error: error.message,
1014
1014
  retriable: true,
1015
1015
  });
1016
1016
  }
1017
1017
  else {
1018
- logger$1q.error('background_task_failed', {
1018
+ logger$1p.error('background_task_failed', {
1019
1019
  task_name: taskName,
1020
1020
  error: error.message,
1021
1021
  stack: error.stack,
@@ -1034,11 +1034,11 @@ class TaskSpawner {
1034
1034
  async shutdownTasks(options = {}) {
1035
1035
  const { gracePeriod, cancelHanging, joinTimeout } = normalizeShutdownOptions(options);
1036
1036
  if (this._tasks.size === 0) {
1037
- logger$1q.debug('shutdown_tasks_no_tasks_to_shutdown');
1037
+ logger$1p.debug('shutdown_tasks_no_tasks_to_shutdown');
1038
1038
  return;
1039
1039
  }
1040
1040
  this._suppressCompletionLogging = true;
1041
- logger$1q.debug('shutting_down_tasks', {
1041
+ logger$1p.debug('shutting_down_tasks', {
1042
1042
  task_count: this._tasks.size,
1043
1043
  task_names: Array.from(this._tasks.values()).map((t) => t.name),
1044
1044
  grace_period_ms: gracePeriod,
@@ -1053,7 +1053,7 @@ class TaskSpawner {
1053
1053
  if (cancelHanging) {
1054
1054
  const stillRunning = tasks.filter((task) => task.getState() === TaskState.RUNNING && !completed.has(task));
1055
1055
  if (stillRunning.length > 0) {
1056
- logger$1q.debug('tasks_did_not_complete_within_grace_period', {
1056
+ logger$1p.debug('tasks_did_not_complete_within_grace_period', {
1057
1057
  hanging_count: stillRunning.length,
1058
1058
  });
1059
1059
  // Wait for them to finish with individual timeouts
@@ -1063,7 +1063,7 @@ class TaskSpawner {
1063
1063
  }
1064
1064
  catch (error) {
1065
1065
  if (error instanceof TaskTimeoutError) {
1066
- logger$1q.warning('task_did_not_shutdown', {
1066
+ logger$1p.warning('task_did_not_shutdown', {
1067
1067
  task_name: task.name || task.id,
1068
1068
  join_timeout_ms: joinTimeout,
1069
1069
  });
@@ -1074,7 +1074,7 @@ class TaskSpawner {
1074
1074
  }
1075
1075
  else if (!(error instanceof TaskCancelledError)) {
1076
1076
  /* istanbul ignore next - unreachable defensive branch */
1077
- logger$1q.error('task_raised_during_cancellation', {
1077
+ logger$1p.error('task_raised_during_cancellation', {
1078
1078
  task_name: task.name || task.id,
1079
1079
  error: error instanceof Error ? error.message : String(error),
1080
1080
  });
@@ -1193,7 +1193,7 @@ class TaskSpawner {
1193
1193
  * condition/promise and ensure at most one notifier coroutine exists for a
1194
1194
  * flow at any time.
1195
1195
  */
1196
- const logger$1p = getLogger('naylence.fame.flow.flow_controller');
1196
+ const logger$1o = getLogger('naylence.fame.flow.flow_controller');
1197
1197
  /**
1198
1198
  * Simple condition variable implementation for TypeScript/Node.js
1199
1199
  * Similar to Python's asyncio.Condition
@@ -1327,7 +1327,7 @@ class FlowController {
1327
1327
  const newBalance = Math.max(0, Math.min(this.initialWindow, prev + delta));
1328
1328
  this.credits.set(flowId, newBalance);
1329
1329
  const crossedZero = prev <= 0 && newBalance > 0;
1330
- logger$1p.debug('flow_controller_add_credits', {
1330
+ logger$1o.debug('flow_controller_add_credits', {
1331
1331
  flow_id: flowId,
1332
1332
  delta,
1333
1333
  prev_balance: prev,
@@ -1347,12 +1347,12 @@ class FlowController {
1347
1347
  async acquire(flowId) {
1348
1348
  this.ensureFlow(flowId);
1349
1349
  const condition = this.conditions.get(flowId);
1350
- logger$1p.debug('flow_controller_acquire_attempt', {
1350
+ logger$1o.debug('flow_controller_acquire_attempt', {
1351
1351
  flow_id: flowId,
1352
1352
  current_balance: this.credits.get(flowId),
1353
1353
  });
1354
1354
  while (this.credits.get(flowId) <= 0) {
1355
- logger$1p.debug('flow_controller_waiting_for_credits', {
1355
+ logger$1o.debug('flow_controller_waiting_for_credits', {
1356
1356
  flow_id: flowId,
1357
1357
  current_balance: this.credits.get(flowId),
1358
1358
  });
@@ -1360,12 +1360,12 @@ class FlowController {
1360
1360
  }
1361
1361
  const newBalance = this.credits.get(flowId) - 1;
1362
1362
  this.credits.set(flowId, newBalance);
1363
- logger$1p.debug('flow_controller_acquire_success', {
1363
+ logger$1o.debug('flow_controller_acquire_success', {
1364
1364
  flow_id: flowId,
1365
1365
  new_balance: newBalance,
1366
1366
  });
1367
1367
  if (newBalance <= this.lowWatermark) {
1368
- logger$1p.debug('flow_controller_acquire_below_low_watermark', {
1368
+ logger$1o.debug('flow_controller_acquire_below_low_watermark', {
1369
1369
  flow_id: flowId,
1370
1370
  low_watermark: this.lowWatermark,
1371
1371
  });
@@ -1389,7 +1389,7 @@ class FlowController {
1389
1389
  const current = this.credits.get(flowId);
1390
1390
  const remaining = Math.max(current - credits, 0);
1391
1391
  this.credits.set(flowId, remaining);
1392
- logger$1p.debug('flow_controller_consume', {
1392
+ logger$1o.debug('flow_controller_consume', {
1393
1393
  flow_id: flowId,
1394
1394
  requested: credits,
1395
1395
  prev_balance: current,
@@ -1415,7 +1415,7 @@ class FlowController {
1415
1415
  this.windowIds.delete(flowId);
1416
1416
  this.credits.set(flowId, this.initialWindow);
1417
1417
  this.wakeWaiters(flowId);
1418
- logger$1p.debug('flow_controller_flow_reset', {
1418
+ logger$1o.debug('flow_controller_flow_reset', {
1419
1419
  flow_id: flowId,
1420
1420
  reset_balance: this.initialWindow,
1421
1421
  });
@@ -2047,7 +2047,7 @@ class TaskCancellationError extends Error {
2047
2047
  this.name = 'TaskCancellationError';
2048
2048
  }
2049
2049
  }
2050
- const logger$1o = getLogger('naylence.fame.connector.base_async_connector');
2050
+ const logger$1n = getLogger('naylence.fame.connector.base_async_connector');
2051
2051
  // Environment variables
2052
2052
  const ENV_VAR_FAME_FLOW_CONTROL = 'FAME_FLOW_CONTROL';
2053
2053
  const FLOW_CONTROL_ENABLED = typeof process !== 'undefined' && process?.env
@@ -2130,7 +2130,7 @@ class BaseAsyncConnector extends TaskSpawner {
2130
2130
  if (this._state !== newState) {
2131
2131
  const oldState = this._state;
2132
2132
  this._state = newState;
2133
- logger$1o.debug('connector_state_transition', {
2133
+ logger$1n.debug('connector_state_transition', {
2134
2134
  connector_id: this._connectorFlowId,
2135
2135
  old_state: oldState,
2136
2136
  new_state: newState,
@@ -2169,12 +2169,12 @@ class BaseAsyncConnector extends TaskSpawner {
2169
2169
  * Stop the connector gracefully
2170
2170
  */
2171
2171
  async stop() {
2172
- logger$1o.debug('stopping_connector', {
2172
+ logger$1n.debug('stopping_connector', {
2173
2173
  current_state: this._state,
2174
2174
  connector_id: this._connectorFlowId,
2175
2175
  });
2176
2176
  if (!core.ConnectorStateUtils.canStop(this._state)) {
2177
- logger$1o.debug('connector_stop_already_stopped', {
2177
+ logger$1n.debug('connector_stop_already_stopped', {
2178
2178
  current_state: this._state,
2179
2179
  connector_id: this._connectorFlowId,
2180
2180
  });
@@ -2185,7 +2185,7 @@ class BaseAsyncConnector extends TaskSpawner {
2185
2185
  if (this._lastError) {
2186
2186
  throw this._lastError;
2187
2187
  }
2188
- logger$1o.debug('connector_stopped', {
2188
+ logger$1n.debug('connector_stopped', {
2189
2189
  current_state: this._state,
2190
2190
  connector_id: this._connectorFlowId,
2191
2191
  });
@@ -2194,19 +2194,19 @@ class BaseAsyncConnector extends TaskSpawner {
2194
2194
  * Pause the connector (suspends heartbeat and housekeeping, but keeps connection alive)
2195
2195
  */
2196
2196
  async pause() {
2197
- logger$1o.debug('pausing_connector', {
2197
+ logger$1n.debug('pausing_connector', {
2198
2198
  current_state: this._state,
2199
2199
  connector_id: this._connectorFlowId,
2200
2200
  });
2201
2201
  if (this._state !== core.ConnectorState.STARTED) {
2202
- logger$1o.debug('connector_pause_invalid_state', {
2202
+ logger$1n.debug('connector_pause_invalid_state', {
2203
2203
  current_state: this._state,
2204
2204
  connector_id: this._connectorFlowId,
2205
2205
  });
2206
2206
  return;
2207
2207
  }
2208
2208
  this._setState(core.ConnectorState.PAUSED);
2209
- logger$1o.debug('connector_paused', {
2209
+ logger$1n.debug('connector_paused', {
2210
2210
  current_state: this._state,
2211
2211
  connector_id: this._connectorFlowId,
2212
2212
  });
@@ -2215,19 +2215,19 @@ class BaseAsyncConnector extends TaskSpawner {
2215
2215
  * Resume the connector from paused state
2216
2216
  */
2217
2217
  async resume() {
2218
- logger$1o.debug('resuming_connector', {
2218
+ logger$1n.debug('resuming_connector', {
2219
2219
  current_state: this._state,
2220
2220
  connector_id: this._connectorFlowId,
2221
2221
  });
2222
2222
  if (this._state !== core.ConnectorState.PAUSED) {
2223
- logger$1o.debug('connector_resume_invalid_state', {
2223
+ logger$1n.debug('connector_resume_invalid_state', {
2224
2224
  current_state: this._state,
2225
2225
  connector_id: this._connectorFlowId,
2226
2226
  });
2227
2227
  return;
2228
2228
  }
2229
2229
  this._setState(core.ConnectorState.STARTED);
2230
- logger$1o.debug('connector_resumed', {
2230
+ logger$1n.debug('connector_resumed', {
2231
2231
  current_state: this._state,
2232
2232
  connector_id: this._connectorFlowId,
2233
2233
  });
@@ -2237,7 +2237,7 @@ class BaseAsyncConnector extends TaskSpawner {
2237
2237
  */
2238
2238
  async close(code = 1000, reason = 'normal closure') {
2239
2239
  if (!core.ConnectorStateUtils.canClose(this._state)) {
2240
- logger$1o.warning('connector_close_invalid_state', {
2240
+ logger$1n.warning('connector_close_invalid_state', {
2241
2241
  current_state: this._state,
2242
2242
  connector_id: this._connectorFlowId,
2243
2243
  });
@@ -2318,7 +2318,7 @@ class BaseAsyncConnector extends TaskSpawner {
2318
2318
  // Add to queue and notify send loop
2319
2319
  this._sendQueue.push(raw);
2320
2320
  // Log for debugging
2321
- logger$1o.debug('send_envelope_queued', {
2321
+ logger$1n.debug('send_envelope_queued', {
2322
2322
  queue_length: this._sendQueue.length,
2323
2323
  max_queue_size: this._maxQueueSize,
2324
2324
  });
@@ -2367,14 +2367,14 @@ class BaseAsyncConnector extends TaskSpawner {
2367
2367
  const item = this._sendQueue[0];
2368
2368
  if (!item)
2369
2369
  continue;
2370
- logger$1o.debug('send_loop_processing_item', {
2370
+ logger$1n.debug('send_loop_processing_item', {
2371
2371
  queue_length_before_send: this._sendQueue.length,
2372
2372
  });
2373
2373
  // Send through transport (this may block)
2374
2374
  await this._transportSendBytes(item);
2375
2375
  // Only remove from queue after successful send
2376
2376
  this._sendQueue.shift();
2377
- logger$1o.debug('send_loop_item_sent', {
2377
+ logger$1n.debug('send_loop_item_sent', {
2378
2378
  queue_length_after_send: this._sendQueue.length,
2379
2379
  });
2380
2380
  }
@@ -2387,14 +2387,14 @@ class BaseAsyncConnector extends TaskSpawner {
2387
2387
  }
2388
2388
  else if (error instanceof TaskCancellationError) {
2389
2389
  // Task cancellation is expected during shutdown - log as debug, not critical
2390
- logger$1o.debug('send loop cancelled', {
2390
+ logger$1n.debug('send loop cancelled', {
2391
2391
  connector: this.constructor.name,
2392
2392
  reason: error.message,
2393
2393
  });
2394
2394
  // Don't re-throw - this is normal during shutdown
2395
2395
  }
2396
2396
  else {
2397
- logger$1o.critical('unexpected exception in send loop', {
2397
+ logger$1n.critical('unexpected exception in send loop', {
2398
2398
  connector: this.constructor.name,
2399
2399
  error: error instanceof Error ? error.message : String(error),
2400
2400
  });
@@ -2435,7 +2435,7 @@ class BaseAsyncConnector extends TaskSpawner {
2435
2435
  env = JSON.parse(jsonStr);
2436
2436
  }
2437
2437
  catch (error) {
2438
- logger$1o.error('Invalid envelope', {
2438
+ logger$1n.error('Invalid envelope', {
2439
2439
  message: message.toString(),
2440
2440
  error: error instanceof Error ? error.message : String(error),
2441
2441
  });
@@ -2459,7 +2459,7 @@ class BaseAsyncConnector extends TaskSpawner {
2459
2459
  };
2460
2460
  await withEnvelopeContextAsync(envelopeContext, async () => {
2461
2461
  const prettyEnvelope = prettyModel$1(env);
2462
- logger$1o.trace('connector_received_envelope', {
2462
+ logger$1n.trace('connector_received_envelope', {
2463
2463
  envelope: env,
2464
2464
  pretty: prettyEnvelope,
2465
2465
  });
@@ -2488,7 +2488,7 @@ class BaseAsyncConnector extends TaskSpawner {
2488
2488
  if (error instanceof TaskCancellationError) {
2489
2489
  throw error;
2490
2490
  }
2491
- logger$1o.error('handler_failed', {
2491
+ logger$1n.error('handler_failed', {
2492
2492
  error: error instanceof Error ? error.message : String(error),
2493
2493
  envelope_id: env.id ?? null,
2494
2494
  trace_id: env.traceId ?? null,
@@ -2509,14 +2509,14 @@ class BaseAsyncConnector extends TaskSpawner {
2509
2509
  }
2510
2510
  else if (error instanceof TaskCancellationError) {
2511
2511
  // Task cancellation is expected during shutdown - log as debug, not critical
2512
- logger$1o.debug('receive loop cancelled', {
2512
+ logger$1n.debug('receive loop cancelled', {
2513
2513
  connector: this.constructor.name,
2514
2514
  reason: error.message,
2515
2515
  });
2516
2516
  // Don't re-throw - this is normal during shutdown
2517
2517
  }
2518
2518
  else {
2519
- logger$1o.critical('unexpected_error_in recv_loop', {
2519
+ logger$1n.critical('unexpected_error_in recv_loop', {
2520
2520
  error: error instanceof Error ? error.message : String(error),
2521
2521
  });
2522
2522
  throw error;
@@ -2532,7 +2532,7 @@ class BaseAsyncConnector extends TaskSpawner {
2532
2532
  async _maybeEmitCredit(flowId, traceId) {
2533
2533
  const remainingCredits = this._flowCtrl.getCredits(flowId);
2534
2534
  const needsRefill = this._flowCtrl.needsRefill(flowId);
2535
- logger$1o.debug('maybe_emit_credit_check', {
2535
+ logger$1n.debug('maybe_emit_credit_check', {
2536
2536
  connector_id: this._connectorFlowId,
2537
2537
  flow_id: flowId,
2538
2538
  trace_id: traceId ?? null,
@@ -2548,7 +2548,7 @@ class BaseAsyncConnector extends TaskSpawner {
2548
2548
  }
2549
2549
  const delta = this._initialWindow;
2550
2550
  this._flowCtrl.addCredits(flowId, delta);
2551
- logger$1o.debug('maybe_emit_credit_emit', {
2551
+ logger$1n.debug('maybe_emit_credit_emit', {
2552
2552
  connector_id: this._connectorFlowId,
2553
2553
  flow_id: flowId,
2554
2554
  trace_id: traceId ?? null,
@@ -2568,7 +2568,7 @@ class BaseAsyncConnector extends TaskSpawner {
2568
2568
  });
2569
2569
  try {
2570
2570
  await this.send(ackEnv);
2571
- logger$1o.debug('maybe_emit_credit_sent', {
2571
+ logger$1n.debug('maybe_emit_credit_sent', {
2572
2572
  connector_id: this._connectorFlowId,
2573
2573
  flow_id: flowId,
2574
2574
  trace_id: traceId ?? null,
@@ -2576,7 +2576,7 @@ class BaseAsyncConnector extends TaskSpawner {
2576
2576
  });
2577
2577
  }
2578
2578
  catch (error) {
2579
- logger$1o.error('maybe_emit_credit_send_failed', {
2579
+ logger$1n.error('maybe_emit_credit_send_failed', {
2580
2580
  connector_id: this._connectorFlowId,
2581
2581
  flow_id: flowId,
2582
2582
  trace_id: traceId ?? null,
@@ -2601,13 +2601,13 @@ class BaseAsyncConnector extends TaskSpawner {
2601
2601
  */
2602
2602
  async _shutdown(code, reason, gracePeriod, exc) {
2603
2603
  if (this._closed) {
2604
- logger$1o.debug('shutdown_already_closed', {
2604
+ logger$1n.debug('shutdown_already_closed', {
2605
2605
  connector_id: this._connectorFlowId,
2606
2606
  current_state: this._state,
2607
2607
  });
2608
2608
  return;
2609
2609
  }
2610
- logger$1o.debug('connector_shutdown_starting', {
2610
+ logger$1n.debug('connector_shutdown_starting', {
2611
2611
  connector_id: this._connectorFlowId,
2612
2612
  connector_type: this.constructor.name,
2613
2613
  code,
@@ -2637,19 +2637,19 @@ class BaseAsyncConnector extends TaskSpawner {
2637
2637
  this._sendPromiseResolve = undefined;
2638
2638
  }
2639
2639
  // Close transport
2640
- logger$1o.debug('connector_closing_transport', {
2640
+ logger$1n.debug('connector_closing_transport', {
2641
2641
  connector_id: this._connectorFlowId,
2642
2642
  connector_type: this.constructor.name,
2643
2643
  timestamp: new Date().toISOString(),
2644
2644
  });
2645
2645
  await this._transportClose(code, reason);
2646
- logger$1o.debug('connector_transport_closed', {
2646
+ logger$1n.debug('connector_transport_closed', {
2647
2647
  connector_id: this._connectorFlowId,
2648
2648
  connector_type: this.constructor.name,
2649
2649
  timestamp: new Date().toISOString(),
2650
2650
  });
2651
2651
  // Shutdown spawned tasks
2652
- logger$1o.debug('connector_shutting_down_tasks', {
2652
+ logger$1n.debug('connector_shutting_down_tasks', {
2653
2653
  connector_id: this._connectorFlowId,
2654
2654
  connector_type: this.constructor.name,
2655
2655
  grace_period_ms: effectiveGracePeriod * 1000,
@@ -2661,14 +2661,14 @@ class BaseAsyncConnector extends TaskSpawner {
2661
2661
  gracePeriod: effectiveGracePeriod * 1000, // Convert to milliseconds
2662
2662
  joinTimeout: this._shutdownJoinTimeout,
2663
2663
  });
2664
- logger$1o.debug('connector_tasks_shutdown_complete', {
2664
+ logger$1n.debug('connector_tasks_shutdown_complete', {
2665
2665
  connector_id: this._connectorFlowId,
2666
2666
  connector_type: this.constructor.name,
2667
2667
  timestamp: new Date().toISOString(),
2668
2668
  });
2669
2669
  }
2670
2670
  catch (error) {
2671
- logger$1o.warning('task_shutdown_error', {
2671
+ logger$1n.warning('task_shutdown_error', {
2672
2672
  connector_id: this._connectorFlowId,
2673
2673
  error: error instanceof Error ? error.message : String(error),
2674
2674
  });
@@ -2681,7 +2681,7 @@ class BaseAsyncConnector extends TaskSpawner {
2681
2681
  if (this._closeResolver) {
2682
2682
  this._closeResolver();
2683
2683
  }
2684
- logger$1o.debug('connector_shutdown_complete', {
2684
+ logger$1n.debug('connector_shutdown_complete', {
2685
2685
  connector_id: this._connectorFlowId,
2686
2686
  connector_type: this.constructor.name,
2687
2687
  final_state: this._state,
@@ -2702,7 +2702,7 @@ class BaseAsyncConnector extends TaskSpawner {
2702
2702
  * A transport adapter that works with both Node.js and browser WebSocket APIs.
2703
2703
  * Supports both native WebSocket clients and server-side WebSocket connections.
2704
2704
  */
2705
- const logger$1n = getLogger('naylence.fame.connector.websocket_connector');
2705
+ const logger$1m = getLogger('naylence.fame.connector.websocket_connector');
2706
2706
  /**
2707
2707
  * WebSocket state constants (mirrors standard WebSocket states)
2708
2708
  */
@@ -2743,7 +2743,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2743
2743
  websocket.send_bytes &&
2744
2744
  typeof websocket.receive_bytes === 'function' &&
2745
2745
  typeof websocket.send_bytes === 'function');
2746
- logger$1n.debug('websocket_connector_created', {
2746
+ logger$1m.debug('websocket_connector_created', {
2747
2747
  is_fastapi_like: this._isFastApiLike,
2748
2748
  ready_state: websocket.readyState,
2749
2749
  url: websocket.url,
@@ -2758,7 +2758,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2758
2758
  socketAny.binaryType = 'arraybuffer';
2759
2759
  }
2760
2760
  catch (error) {
2761
- logger$1n.debug('websocket_set_binary_type_failed', {
2761
+ logger$1m.debug('websocket_set_binary_type_failed', {
2762
2762
  error: error instanceof Error ? error.message : String(error),
2763
2763
  current_type: socketAny.binaryType,
2764
2764
  });
@@ -2814,7 +2814,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2814
2814
  else {
2815
2815
  this._receiveQueue.push(data);
2816
2816
  }
2817
- logger$1n.debug('websocket_message_pushed_to_queue', {
2817
+ logger$1m.debug('websocket_message_pushed_to_queue', {
2818
2818
  queueLength: this._receiveQueue.length,
2819
2819
  waitersLength: this._receiveWaiters.length,
2820
2820
  });
@@ -2867,7 +2867,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2867
2867
  const result = receiveMethod.call(this._websocket);
2868
2868
  // Ensure we have a Promise
2869
2869
  if (!result || typeof result.then !== 'function') {
2870
- logger$1n.error('fastapi_receive_not_awaitable', {
2870
+ logger$1m.error('fastapi_receive_not_awaitable', {
2871
2871
  result_type: typeof result,
2872
2872
  result_str: String(result).substring(0, 100),
2873
2873
  });
@@ -2883,7 +2883,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2883
2883
  }
2884
2884
  // Handle known WebSocket shutdown race condition
2885
2885
  if (this._isAwaitFutureError(error)) {
2886
- logger$1n.debug('websocket_shutdown_race_condition_handled', {
2886
+ logger$1m.debug('websocket_shutdown_race_condition_handled', {
2887
2887
  note: 'Normal WebSocket close timing - converting to cancellation',
2888
2888
  websocket_state: this._websocket.client_state || 'unknown',
2889
2889
  });
@@ -2926,7 +2926,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2926
2926
  }
2927
2927
  catch (error) {
2928
2928
  if (this._isAwaitFutureError(error)) {
2929
- logger$1n.debug('websocket_shutdown_race_condition_detected', {
2929
+ logger$1m.debug('websocket_shutdown_race_condition_detected', {
2930
2930
  websocket_type: this._websocket.constructor.name,
2931
2931
  is_fastapi: this._isFastApiLike,
2932
2932
  note: 'Normal WebSocket close timing during shutdown',
@@ -2972,12 +2972,12 @@ class WebSocketConnector extends BaseAsyncConnector {
2972
2972
  if (socketAny.readyState !== WebSocketState.CLOSED) {
2973
2973
  try {
2974
2974
  socketAny.terminate();
2975
- logger$1n.debug('websocket_force_terminated', {
2975
+ logger$1m.debug('websocket_force_terminated', {
2976
2976
  ready_state: socketAny.readyState,
2977
2977
  });
2978
2978
  }
2979
2979
  catch (error) {
2980
- logger$1n.debug('websocket_force_terminate_failed', {
2980
+ logger$1m.debug('websocket_force_terminate_failed', {
2981
2981
  error: error instanceof Error ? error.message : String(error),
2982
2982
  });
2983
2983
  }
@@ -2988,7 +2988,7 @@ class WebSocketConnector extends BaseAsyncConnector {
2988
2988
  }
2989
2989
  }
2990
2990
  catch (error) {
2991
- logger$1n.error('websocket_close_failed', {
2991
+ logger$1m.error('websocket_close_failed', {
2992
2992
  error: error instanceof Error ? error.message : String(error),
2993
2993
  });
2994
2994
  // Don't re-throw - close errors are not critical during shutdown
@@ -3209,7 +3209,7 @@ class WebSocketConnector extends BaseAsyncConnector {
3209
3209
  this._removeReceiveHandlers();
3210
3210
  }
3211
3211
  catch (error) {
3212
- logger$1n.debug('websocket_remove_handlers_failed', {
3212
+ logger$1m.debug('websocket_remove_handlers_failed', {
3213
3213
  error: error instanceof Error ? error.message : String(error),
3214
3214
  });
3215
3215
  }
@@ -3263,7 +3263,7 @@ class WebSocketConnector extends BaseAsyncConnector {
3263
3263
  * Concrete implementations must define supported grant types and provide grant-to-connector
3264
3264
  * conversion logic.
3265
3265
  */
3266
- const logger$1m = getLogger('naylence.fame.connector.connector_factory');
3266
+ const logger$1l = getLogger('naylence.fame.connector.connector_factory');
3267
3267
  const CONNECTOR_FACTORY_BASE_TYPE = 'ConnectorFactory';
3268
3268
  /**
3269
3269
  * Abstract base class for connector factories
@@ -3299,7 +3299,7 @@ class ConnectorFactory {
3299
3299
  }
3300
3300
  }
3301
3301
  catch (error) {
3302
- logger$1m.warning(`Failed to evaluate grant with factory ${factoryInfo.constructor.name}: ${error}`);
3302
+ logger$1l.warning(`Failed to evaluate grant with factory ${factoryInfo.constructor.name}: ${error}`);
3303
3303
  continue;
3304
3304
  }
3305
3305
  }
@@ -3342,7 +3342,7 @@ class ConnectorFactory {
3342
3342
  }
3343
3343
  }
3344
3344
  catch (error) {
3345
- logger$1m.warning(`Failed to create connector config from grant: ${error}`);
3345
+ logger$1l.warning(`Failed to create connector config from grant: ${error}`);
3346
3346
  continue;
3347
3347
  }
3348
3348
  }
@@ -3409,20 +3409,20 @@ class ConnectorFactory {
3409
3409
  return existing;
3410
3410
  }
3411
3411
  if (existing && !this.isGrantAware(existing)) {
3412
- logger$1m.warning(`Factory ${factoryInfo.constructor.name} is registered under ${CONNECTOR_FACTORY_BASE_TYPE} but is missing grant conversion APIs; skipping.`);
3412
+ logger$1l.warning(`Factory ${factoryInfo.constructor.name} is registered under ${CONNECTOR_FACTORY_BASE_TYPE} but is missing grant conversion APIs; skipping.`);
3413
3413
  return null;
3414
3414
  }
3415
3415
  try {
3416
3416
  const instance = new factoryInfo.constructor();
3417
3417
  if (!this.isGrantAware(instance)) {
3418
- logger$1m.warning(`Factory ${factoryInfo.constructor.name} does not implement grant conversion APIs required by ${CONNECTOR_FACTORY_BASE_TYPE}; skipping.`);
3418
+ logger$1l.warning(`Factory ${factoryInfo.constructor.name} does not implement grant conversion APIs required by ${CONNECTOR_FACTORY_BASE_TYPE}; skipping.`);
3419
3419
  return null;
3420
3420
  }
3421
3421
  factoryInfo.instance = instance;
3422
3422
  return instance;
3423
3423
  }
3424
3424
  catch (error) {
3425
- logger$1m.warning(`Failed to instantiate factory ${factoryInfo.constructor.name} while resolving grant conversion APIs: ${error}`);
3425
+ logger$1l.warning(`Failed to instantiate factory ${factoryInfo.constructor.name} while resolving grant conversion APIs: ${error}`);
3426
3426
  return null;
3427
3427
  }
3428
3428
  }
@@ -3581,7 +3581,7 @@ class AuthInjectionStrategyFactory extends factory.AbstractResourceFactory {
3581
3581
  }
3582
3582
  }
3583
3583
 
3584
- const logger$1l = getLogger('naylence.fame.connector.websocket_connector_factory');
3584
+ const logger$1k = getLogger('naylence.fame.connector.websocket_connector_factory');
3585
3585
  let sslLoader = null;
3586
3586
  function setWebSocketConnectorSslLoader(loader) {
3587
3587
  sslLoader = loader;
@@ -3865,7 +3865,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
3865
3865
  }
3866
3866
  async _defaultWebSocketClient(url, subprotocols, headers) {
3867
3867
  try {
3868
- logger$1l.debug('websocket_connector_connecting', { url, subprotocols });
3868
+ logger$1k.debug('websocket_connector_connecting', { url, subprotocols });
3869
3869
  if (typeof window !== 'undefined' &&
3870
3870
  typeof window.WebSocket !== 'undefined') {
3871
3871
  return await this._createBrowserWebSocket(url, subprotocols);
@@ -3948,7 +3948,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
3948
3948
  await Promise.resolve().then(function () { return websocketConnectorNodeSsl; });
3949
3949
  }
3950
3950
  catch (error) {
3951
- logger$1l.debug('ssl_certificate_loader_import_failed', {
3951
+ logger$1k.debug('ssl_certificate_loader_import_failed', {
3952
3952
  error: error instanceof Error ? error.message : String(error),
3953
3953
  });
3954
3954
  }
@@ -3957,7 +3957,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
3957
3957
  if (!loader) {
3958
3958
  return undefined;
3959
3959
  }
3960
- return await loader(logger$1l);
3960
+ return await loader(logger$1k);
3961
3961
  }
3962
3962
  }
3963
3963
 
@@ -4436,12 +4436,12 @@ async function ensureRuntimeFactoriesRegistered(registry = factory.Registry) {
4436
4436
  }
4437
4437
 
4438
4438
  // This file is auto-generated during build - do not edit manually
4439
- // Generated from package.json version: 0.4.1
4439
+ // Generated from package.json version: 0.4.2
4440
4440
  /**
4441
4441
  * The package version, injected at build time.
4442
4442
  * @internal
4443
4443
  */
4444
- const VERSION = '0.4.1';
4444
+ const VERSION = '0.4.2';
4445
4445
 
4446
4446
  let initialized = false;
4447
4447
  const runtimePlugin = {
@@ -5648,7 +5648,7 @@ async function withLock(lock, operation) {
5648
5648
  return await lock.runExclusive(operation);
5649
5649
  }
5650
5650
 
5651
- const logger$1k = getLogger('naylence.fame.storage.sqlite_storage_provider');
5651
+ const logger$1j = getLogger('naylence.fame.storage.sqlite_storage_provider');
5652
5652
  let cachedSqliteCtor;
5653
5653
  async function loadSqliteConstructor() {
5654
5654
  if (cachedSqliteCtor !== undefined) {
@@ -5672,7 +5672,7 @@ async function loadSqliteConstructor() {
5672
5672
  }
5673
5673
  catch (error) {
5674
5674
  cachedSqliteCtor = null;
5675
- logger$1k.error('failed-to-load-better-sqlite3', {
5675
+ logger$1j.error('failed-to-load-better-sqlite3', {
5676
5676
  error: error instanceof Error ? error.message : String(error),
5677
5677
  });
5678
5678
  throw new Error('Failed to load better-sqlite3. Install it to enable SQLite storage support.');
@@ -5707,7 +5707,7 @@ class SQLiteKeyValueStore {
5707
5707
  }
5708
5708
  catch (error) {
5709
5709
  if (this.autoRecover && this.isCorruptionError(error)) {
5710
- logger$1k.warning('detected-corrupted-db', { path: this.dbPath });
5710
+ logger$1j.warning('detected-corrupted-db', { path: this.dbPath });
5711
5711
  await this.recoverCorruptedDb();
5712
5712
  if (!this.db) {
5713
5713
  throw new Error('Failed to recover SQLite database');
@@ -5762,7 +5762,7 @@ class SQLiteKeyValueStore {
5762
5762
  await this.closeDatabase();
5763
5763
  await this.quarantineCorruptedFiles();
5764
5764
  await this.openDatabase();
5765
- logger$1k.warning('quarantined-corrupted-db', { path: this.dbPath });
5765
+ logger$1j.warning('quarantined-corrupted-db', { path: this.dbPath });
5766
5766
  }
5767
5767
  async closeDatabase() {
5768
5768
  if (this.db) {
@@ -5770,7 +5770,7 @@ class SQLiteKeyValueStore {
5770
5770
  this.db.close();
5771
5771
  }
5772
5772
  catch (error) {
5773
- logger$1k.warning('failed-to-close-sqlite-db', {
5773
+ logger$1j.warning('failed-to-close-sqlite-db', {
5774
5774
  path: this.dbPath,
5775
5775
  error: error instanceof Error ? error.message : String(error),
5776
5776
  });
@@ -5793,7 +5793,7 @@ class SQLiteKeyValueStore {
5793
5793
  await fsPromises.rename(candidate, quarantinedName);
5794
5794
  }
5795
5795
  catch (error) {
5796
- logger$1k.error('failed-to-quarantine-sqlite-file', {
5796
+ logger$1j.error('failed-to-quarantine-sqlite-file', {
5797
5797
  file: candidate,
5798
5798
  error: error instanceof Error ? error.message : String(error),
5799
5799
  });
@@ -5894,7 +5894,7 @@ class SQLiteKeyValueStore {
5894
5894
  result[row.key] = this.deserialize(row.value);
5895
5895
  }
5896
5896
  catch (error) {
5897
- logger$1k.warning('skipping-corrupted-sqlite-entry', {
5897
+ logger$1j.warning('skipping-corrupted-sqlite-entry', {
5898
5898
  key: row.key,
5899
5899
  error: error instanceof Error ? error.message : String(error),
5900
5900
  });
@@ -6889,7 +6889,7 @@ class InMemoryBinding {
6889
6889
  * TypeScript port of Python's InMemoryFanoutBroker that extends TaskSpawner
6890
6890
  * to manage multiple WriteChannel subscribers with concurrent message distribution.
6891
6891
  */
6892
- const logger$1j = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');
6892
+ const logger$1i = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');
6893
6893
  // Sentinel object for shutdown signaling
6894
6894
  const SENTINEL = Symbol('fanout-broker-sentinel');
6895
6895
  function isCloseable(obj) {
@@ -6942,7 +6942,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6942
6942
  }
6943
6943
  catch (error) {
6944
6944
  // Ignore errors when sending sentinel (sink might be closed)
6945
- logger$1j.debug('error_sending_sentinel', {
6945
+ logger$1i.debug('error_sending_sentinel', {
6946
6946
  error: error.message,
6947
6947
  });
6948
6948
  }
@@ -6956,7 +6956,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6956
6956
  await sub.close();
6957
6957
  }
6958
6958
  catch (error) {
6959
- logger$1j.error('error_closing_subscriber', {
6959
+ logger$1i.error('error_closing_subscriber', {
6960
6960
  subscriber: sub.toString(),
6961
6961
  error: error.message,
6962
6962
  });
@@ -6996,7 +6996,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
6996
6996
  [envelope, context] = core.extractEnvelopeAndContext(msg);
6997
6997
  }
6998
6998
  catch (error) {
6999
- logger$1j.debug('failed_to_extract_envelope', {
6999
+ logger$1i.debug('failed_to_extract_envelope', {
7000
7000
  error: error.message,
7001
7001
  });
7002
7002
  continue;
@@ -7018,7 +7018,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
7018
7018
  await sub.send(messageToSend);
7019
7019
  }
7020
7020
  catch (error) {
7021
- logger$1j.error('error_sending_to_subscriber', {
7021
+ logger$1i.error('error_sending_to_subscriber', {
7022
7022
  subscriber: sub.toString(),
7023
7023
  error: error.message,
7024
7024
  action: 'unsubscribing',
@@ -7034,7 +7034,7 @@ class InMemoryFanoutBroker extends TaskSpawner {
7034
7034
  }
7035
7035
  catch (error) {
7036
7036
  // Critical broker-level error: log and back off, but keep the loop running
7037
- logger$1j.critical('receive_loop_failed_unexpectedly', {
7037
+ logger$1i.critical('receive_loop_failed_unexpectedly', {
7038
7038
  error: error.message,
7039
7039
  stack: error.stack,
7040
7040
  });
@@ -7743,7 +7743,7 @@ function normalizeResponseType(value) {
7743
7743
  return value;
7744
7744
  }
7745
7745
 
7746
- const logger$1i = getLogger('naylence.fame.node.binding_manager');
7746
+ const logger$1h = getLogger('naylence.fame.node.binding_manager');
7747
7747
  const SYSTEM_INBOX$3 = '__sys__';
7748
7748
  const DEFAULT_ACK_TIMEOUT_MS = 20000;
7749
7749
  class BindingStoreEntryRecord {
@@ -7829,7 +7829,7 @@ class BindingManager {
7829
7829
  if (!this.bindings.has(key)) {
7830
7830
  const binding = this.bindingFactory(new core.FameAddress(key));
7831
7831
  this.bindings.set(key, binding);
7832
- logger$1i.debug('restored_binding', { address: key });
7832
+ logger$1h.debug('restored_binding', { address: key });
7833
7833
  }
7834
7834
  }
7835
7835
  if (!this.hasUpstream) {
@@ -7839,13 +7839,13 @@ class BindingManager {
7839
7839
  await this.readvertiseCapabilitiesUpstream();
7840
7840
  }
7841
7841
  async bind(participant, capabilities) {
7842
- logger$1i.debug('binding_participant', { participant });
7842
+ logger$1h.debug('binding_participant', { participant });
7843
7843
  const { prefixAddress, addresses, propagateAddress, capabilityAddress } = this.computeBindingAddresses(participant);
7844
7844
  for (const address of addresses) {
7845
7845
  if (!this.bindings.has(address)) {
7846
7846
  const binding = this.bindingFactory(new core.FameAddress(address));
7847
7847
  this.bindings.set(address, binding);
7848
- logger$1i.debug('bound_address', { address, participant });
7848
+ logger$1h.debug('bound_address', { address, participant });
7849
7849
  }
7850
7850
  }
7851
7851
  let propagatedAddress = null;
@@ -7874,7 +7874,7 @@ class BindingManager {
7874
7874
  await this.unbindAddressUpstream(propagatedAddress);
7875
7875
  }
7876
7876
  catch (rollbackError) {
7877
- logger$1i.error('bind_rollback_failed', {
7877
+ logger$1h.error('bind_rollback_failed', {
7878
7878
  address: propagatedAddress.toString(),
7879
7879
  error: rollbackError.message,
7880
7880
  });
@@ -7893,7 +7893,7 @@ class BindingManager {
7893
7893
  physicalPath: null,
7894
7894
  });
7895
7895
  }
7896
- logger$1i.debug('bind_success', {
7896
+ logger$1h.debug('bind_success', {
7897
7897
  participant,
7898
7898
  address: prefixAddress.toString(),
7899
7899
  capabilities,
@@ -7929,7 +7929,7 @@ class BindingManager {
7929
7929
  await this.bindingStore.delete(address);
7930
7930
  }
7931
7931
  }
7932
- logger$1i.debug('unbind_success', {
7932
+ logger$1h.debug('unbind_success', {
7933
7933
  participant,
7934
7934
  address: prefixAddress.toString(),
7935
7935
  totalBindings: this.bindings.size,
@@ -7959,7 +7959,7 @@ class BindingManager {
7959
7959
  await this.bindAddressUpstream(new core.FameAddress(address));
7960
7960
  }
7961
7961
  catch (error) {
7962
- logger$1i.error('rebind_failed', {
7962
+ logger$1h.error('rebind_failed', {
7963
7963
  address,
7964
7964
  error: error.message,
7965
7965
  });
@@ -7978,7 +7978,7 @@ class BindingManager {
7978
7978
  await this.advertiseCapabilities(new core.FameAddress(address), Array.from(capabilities));
7979
7979
  }
7980
7980
  catch (error) {
7981
- logger$1i.error('capability_replay_failed', {
7981
+ logger$1h.error('capability_replay_failed', {
7982
7982
  address,
7983
7983
  error: error.message,
7984
7984
  });
@@ -8245,7 +8245,7 @@ class BindingManager {
8245
8245
  }
8246
8246
  }
8247
8247
 
8248
- const logger$1h = getLogger('naylence.fame.node.response_context_manager');
8248
+ const logger$1g = getLogger('naylence.fame.node.response_context_manager');
8249
8249
  function cloneSecurityContext(source) {
8250
8250
  if (!source) {
8251
8251
  return undefined;
@@ -8273,7 +8273,7 @@ class ResponseContextManager {
8273
8273
  security: responseSecurity,
8274
8274
  expectedResponseType: core.FameResponseType.NONE,
8275
8275
  };
8276
- logger$1h.debug('created_response_context', {
8276
+ logger$1g.debug('created_response_context', {
8277
8277
  request_id: requestEnvelope.id,
8278
8278
  inherited_crypto_level: responseSecurity?.inboundCryptoLevel ?? null,
8279
8279
  channel_id: responseSecurity?.cryptoChannelId ?? null,
@@ -8293,14 +8293,14 @@ class ResponseContextManager {
8293
8293
  responseContext.fromSystemId = this.getId();
8294
8294
  }
8295
8295
  // Envelope-level metadata is intentionally omitted to defer to context usage.
8296
- logger$1h.debug('ensured_response_metadata', {
8296
+ logger$1g.debug('ensured_response_metadata', {
8297
8297
  response_id: responseEnvelope.id,
8298
8298
  request_id: requestEnvelope.id,
8299
8299
  });
8300
8300
  }
8301
8301
  }
8302
8302
 
8303
- const logger$1g = getLogger('naylence.fame.node.streaming_response_handler');
8303
+ const logger$1f = getLogger('naylence.fame.node.streaming_response_handler');
8304
8304
  function isObject(value) {
8305
8305
  return typeof value === 'object' && value !== null;
8306
8306
  }
@@ -8419,12 +8419,12 @@ class StreamingResponseHandler {
8419
8419
  }
8420
8420
  async handleStreamingFameMessageResponses(responses, requestEnvelope, requestContext) {
8421
8421
  const asyncResponses = toAsyncIterable(responses);
8422
- logger$1g.debug('handling_streaming_fame_message_responses', {
8422
+ logger$1f.debug('handling_streaming_fame_message_responses', {
8423
8423
  request_id: requestEnvelope.id,
8424
8424
  });
8425
8425
  for await (const response of asyncResponses) {
8426
8426
  if (!response?.envelope) {
8427
- logger$1g.warning('invalid_streaming_response_type', {
8427
+ logger$1f.warning('invalid_streaming_response_type', {
8428
8428
  request_id: requestEnvelope.id,
8429
8429
  actual_type: typeof response,
8430
8430
  });
@@ -8438,7 +8438,7 @@ class StreamingResponseHandler {
8438
8438
  }
8439
8439
  async handleStreamingResponse(result, requestEnvelope, requestContext, replyTo, requestId) {
8440
8440
  const iterable = toAsyncIterable(result);
8441
- logger$1g.debug('handling_streaming_response', {
8441
+ logger$1f.debug('handling_streaming_response', {
8442
8442
  request_id: requestId,
8443
8443
  reply_to: replyTo,
8444
8444
  });
@@ -8449,7 +8449,7 @@ class StreamingResponseHandler {
8449
8449
  await this.sendRpcResponse(null, requestEnvelope, requestContext, replyTo, requestId);
8450
8450
  }
8451
8451
  catch (error) {
8452
- logger$1g.error('streaming_response_handler_error', {
8452
+ logger$1f.error('streaming_response_handler_error', {
8453
8453
  request_id: requestId,
8454
8454
  error: error instanceof Error ? error.message : String(error),
8455
8455
  });
@@ -8476,7 +8476,7 @@ class StreamingResponseHandler {
8476
8476
  });
8477
8477
  const responseContext = this.responseContextManager.createResponseContext(requestEnvelope, requestContext);
8478
8478
  this.responseContextManager.ensureResponseMetadata(responseEnvelope, requestEnvelope, responseContext);
8479
- logger$1g.debug('sending_streaming_rpc_response', {
8479
+ logger$1f.debug('sending_streaming_rpc_response', {
8480
8480
  request_id: requestId,
8481
8481
  response_envelope_id: responseEnvelope.id,
8482
8482
  reply_to: replyTo,
@@ -8489,7 +8489,7 @@ class StreamingResponseHandler {
8489
8489
  }
8490
8490
  }
8491
8491
 
8492
- const logger$1f = getLogger('naylence.fame.node.channel_polling_manager');
8492
+ const logger$1e = getLogger('naylence.fame.node.channel_polling_manager');
8493
8493
  class ChannelPollingManager {
8494
8494
  constructor(deliverWrapper, responseContextManager, streamingResponseHandler) {
8495
8495
  this.deliverWrapper = deliverWrapper;
@@ -8497,7 +8497,7 @@ class ChannelPollingManager {
8497
8497
  this.streamingResponseHandler = streamingResponseHandler;
8498
8498
  }
8499
8499
  async startPollingLoop(serviceName, channel, handler, stopState, pollTimeoutMs = core.DEFAULT_POLLING_TIMEOUT_MS) {
8500
- logger$1f.debug('poll_loop_started', {
8500
+ logger$1e.debug('poll_loop_started', {
8501
8501
  recipient: serviceName,
8502
8502
  });
8503
8503
  try {
@@ -8505,7 +8505,7 @@ class ChannelPollingManager {
8505
8505
  while (true) {
8506
8506
  if (this.isStopRequested(stopState) && !draining) {
8507
8507
  draining = true;
8508
- logger$1f.debug('poll_loop_draining_pending_messages', {
8508
+ logger$1e.debug('poll_loop_draining_pending_messages', {
8509
8509
  recipient: serviceName,
8510
8510
  });
8511
8511
  }
@@ -8515,7 +8515,7 @@ class ChannelPollingManager {
8515
8515
  }
8516
8516
  catch (error) {
8517
8517
  if (error instanceof FameTransportClose) {
8518
- logger$1f.debug('channel_closed', {
8518
+ logger$1e.debug('channel_closed', {
8519
8519
  recipient: serviceName,
8520
8520
  message: error.message,
8521
8521
  });
@@ -8528,7 +8528,7 @@ class ChannelPollingManager {
8528
8528
  continue;
8529
8529
  }
8530
8530
  if (error instanceof Error && error.name === 'AbortError') {
8531
- logger$1f.debug('listener_cancelled', {
8531
+ logger$1e.debug('listener_cancelled', {
8532
8532
  recipient: serviceName,
8533
8533
  });
8534
8534
  throw error;
@@ -8540,13 +8540,13 @@ class ChannelPollingManager {
8540
8540
  continue;
8541
8541
  }
8542
8542
  if (error instanceof Error && error.message === 'Channel is closed') {
8543
- logger$1f.debug('channel_closed', {
8543
+ logger$1e.debug('channel_closed', {
8544
8544
  recipient: serviceName,
8545
8545
  });
8546
8546
  break;
8547
8547
  }
8548
8548
  if (error instanceof Error && error.name === 'TaskCancelledError') {
8549
- logger$1f.debug('listener_cancelled', {
8549
+ logger$1e.debug('listener_cancelled', {
8550
8550
  recipient: serviceName,
8551
8551
  });
8552
8552
  throw error;
@@ -8558,12 +8558,12 @@ class ChannelPollingManager {
8558
8558
  continue;
8559
8559
  }
8560
8560
  if (error instanceof Error && error.message.includes('closed')) {
8561
- logger$1f.debug('channel_closed', {
8561
+ logger$1e.debug('channel_closed', {
8562
8562
  recipient: serviceName,
8563
8563
  });
8564
8564
  break;
8565
8565
  }
8566
- logger$1f.error('transport_error', {
8566
+ logger$1e.error('transport_error', {
8567
8567
  recipient: serviceName,
8568
8568
  error: error instanceof Error ? error.message : String(error),
8569
8569
  });
@@ -8579,7 +8579,7 @@ class ChannelPollingManager {
8579
8579
  }
8580
8580
  }
8581
8581
  finally {
8582
- logger$1f.debug('poll_loop_exiting', {
8582
+ logger$1e.debug('poll_loop_exiting', {
8583
8583
  recipient: serviceName,
8584
8584
  });
8585
8585
  }
@@ -8592,7 +8592,7 @@ class ChannelPollingManager {
8592
8592
  await this.processHandlerResult(result, envelope, deliveryContext, serviceName);
8593
8593
  }
8594
8594
  catch (error) {
8595
- logger$1f.error('handler_crashed', {
8595
+ logger$1e.error('handler_crashed', {
8596
8596
  recipient: serviceName,
8597
8597
  error: error instanceof Error ? error.message : String(error),
8598
8598
  });
@@ -8606,7 +8606,7 @@ class ChannelPollingManager {
8606
8606
  return;
8607
8607
  }
8608
8608
  if (this.streamingResponseHandler.isStreamingFameMessageResponse(result)) {
8609
- logger$1f.debug('handling_streaming_fame_message_responses', {
8609
+ logger$1e.debug('handling_streaming_fame_message_responses', {
8610
8610
  service_name: serviceName,
8611
8611
  envelope_id: envelope.id,
8612
8612
  });
@@ -8614,7 +8614,7 @@ class ChannelPollingManager {
8614
8614
  }
8615
8615
  }
8616
8616
  async handleMessageResponse(response, requestEnvelope, requestContext, serviceName) {
8617
- logger$1f.debug('delivering_envelope_response_message', {
8617
+ logger$1e.debug('delivering_envelope_response_message', {
8618
8618
  service_name: serviceName,
8619
8619
  response_envelope_id: response.envelope.id,
8620
8620
  });
@@ -8634,7 +8634,7 @@ class ChannelPollingManager {
8634
8634
  }
8635
8635
  }
8636
8636
 
8637
- const logger$1e = getLogger('naylence.fame.node.rpc_server_handler');
8637
+ const logger$1d = getLogger('naylence.fame.node.rpc_server_handler');
8638
8638
  function isPlainRecord$6(value) {
8639
8639
  if (typeof value !== 'object' || value === null) {
8640
8640
  return false;
@@ -8678,13 +8678,13 @@ class RPCServerHandler {
8678
8678
  }
8679
8679
  async handleRpcRequest(envelope, handlerContext, handler, serviceName) {
8680
8680
  if (!this.isDataFrame(envelope.frame)) {
8681
- logger$1e.warning('rpc_request_missing_data_frame', {
8681
+ logger$1d.warning('rpc_request_missing_data_frame', {
8682
8682
  service_name: serviceName,
8683
8683
  envelope_id: envelope.id,
8684
8684
  });
8685
8685
  return;
8686
8686
  }
8687
- logger$1e.debug('rpc_request_received', {
8687
+ logger$1d.debug('rpc_request_received', {
8688
8688
  service_name: serviceName,
8689
8689
  envelope_id: envelope.id,
8690
8690
  trace_id: envelope.traceId,
@@ -8696,7 +8696,7 @@ class RPCServerHandler {
8696
8696
  request = core.parseRequest(envelope.frame.payload);
8697
8697
  params = cloneParams(request.params);
8698
8698
  const paramKeys = Object.keys(params);
8699
- logger$1e.debug('parsed_rpc_request', {
8699
+ logger$1d.debug('parsed_rpc_request', {
8700
8700
  service_name: serviceName,
8701
8701
  method: request.method,
8702
8702
  request_id: request.id,
@@ -8705,7 +8705,7 @@ class RPCServerHandler {
8705
8705
  });
8706
8706
  }
8707
8707
  catch (error) {
8708
- logger$1e.warning('request_decode_error', {
8708
+ logger$1d.warning('request_decode_error', {
8709
8709
  service_name: serviceName,
8710
8710
  envelope_id: envelope.id,
8711
8711
  error: error instanceof Error ? error.message : String(error),
@@ -8713,7 +8713,7 @@ class RPCServerHandler {
8713
8713
  return;
8714
8714
  }
8715
8715
  if (request.id == null) {
8716
- logger$1e.warning('request_missing_id', {
8716
+ logger$1d.warning('request_missing_id', {
8717
8717
  service_name: serviceName,
8718
8718
  envelope_id: envelope.id,
8719
8719
  });
@@ -8721,7 +8721,7 @@ class RPCServerHandler {
8721
8721
  }
8722
8722
  const replyTo = this.resolveReplyTo(envelope, params);
8723
8723
  if (!replyTo) {
8724
- logger$1e.warning('missing_reply_to', {
8724
+ logger$1d.warning('missing_reply_to', {
8725
8725
  service_name: serviceName,
8726
8726
  envelope_id: envelope.id,
8727
8727
  request_id: request.id,
@@ -8730,13 +8730,13 @@ class RPCServerHandler {
8730
8730
  }
8731
8731
  let handlerResult;
8732
8732
  try {
8733
- logger$1e.debug('calling_rpc_handler', {
8733
+ logger$1d.debug('calling_rpc_handler', {
8734
8734
  service_name: serviceName,
8735
8735
  method: request.method,
8736
8736
  request_id: request.id,
8737
8737
  });
8738
8738
  handlerResult = await handler(request.method, params);
8739
- logger$1e.debug('rpc_handler_returned', {
8739
+ logger$1d.debug('rpc_handler_returned', {
8740
8740
  service_name: serviceName,
8741
8741
  method: request.method,
8742
8742
  request_id: request.id,
@@ -8745,7 +8745,7 @@ class RPCServerHandler {
8745
8745
  });
8746
8746
  }
8747
8747
  catch (error) {
8748
- logger$1e.error('rpc_handler_error', {
8748
+ logger$1d.error('rpc_handler_error', {
8749
8749
  service_name: serviceName,
8750
8750
  request_id: request.id,
8751
8751
  envelope_id: envelope.id,
@@ -8755,7 +8755,7 @@ class RPCServerHandler {
8755
8755
  return this.createTraditionalResponse(response, request.id, envelope, replyTo, handlerContext, serviceName);
8756
8756
  }
8757
8757
  if (core.isFameMessageResponse(handlerResult)) {
8758
- logger$1e.debug('returning_response_message', {
8758
+ logger$1d.debug('returning_response_message', {
8759
8759
  service_name: serviceName,
8760
8760
  request_id: request.id,
8761
8761
  response_envelope_id: handlerResult.envelope.id,
@@ -8763,7 +8763,7 @@ class RPCServerHandler {
8763
8763
  return handlerResult;
8764
8764
  }
8765
8765
  if (this.streamingResponseHandler.isStreamingResult(handlerResult)) {
8766
- logger$1e.debug('handling_streaming_response', {
8766
+ logger$1d.debug('handling_streaming_response', {
8767
8767
  service_name: serviceName,
8768
8768
  request_id: request.id,
8769
8769
  envelope_id: envelope.id,
@@ -8792,7 +8792,7 @@ class RPCServerHandler {
8792
8792
  return null;
8793
8793
  }
8794
8794
  async createTraditionalResponse(payload, requestId, requestEnvelope, replyTo, handlerContext, serviceName) {
8795
- logger$1e.debug('creating_traditional_response_envelope', {
8795
+ logger$1d.debug('creating_traditional_response_envelope', {
8796
8796
  service_name: serviceName,
8797
8797
  request_id: requestId,
8798
8798
  envelope_id: requestEnvelope.id,
@@ -8816,7 +8816,7 @@ class RPCServerHandler {
8816
8816
  if (requestEnvelope.id) {
8817
8817
  responseContext.meta['response-to-id'] = requestEnvelope.id;
8818
8818
  }
8819
- logger$1e.debug('returning_traditional_response', {
8819
+ logger$1d.debug('returning_traditional_response', {
8820
8820
  service_name: serviceName,
8821
8821
  request_id: requestId,
8822
8822
  envelope_id: requestEnvelope.id,
@@ -8881,7 +8881,7 @@ function normalizeErrorCode(code) {
8881
8881
  return code;
8882
8882
  }
8883
8883
 
8884
- const logger$1d = getLogger('naylence.fame.node.rpc_client_manager');
8884
+ const logger$1c = getLogger('naylence.fame.node.rpc_client_manager');
8885
8885
  function isPlainRecord$5(value) {
8886
8886
  if (typeof value !== 'object' || value === null) {
8887
8887
  return false;
@@ -9098,7 +9098,7 @@ class RPCClientManager {
9098
9098
  const metaReason = tracked.meta?.['nack_reason'];
9099
9099
  const formattedMessage = formatDeliveryErrorMessage(typeof metaCode === 'string' ? metaCode : 'DELIVERY_ERROR', reason ??
9100
9100
  (typeof metaReason === 'string' ? metaReason : undefined));
9101
- logger$1d.debug('pending_request_rejected_by_delivery_nack', {
9101
+ logger$1c.debug('pending_request_rejected_by_delivery_nack', {
9102
9102
  envelope_id: envelopeId,
9103
9103
  request_id: requestId,
9104
9104
  code: typeof metaCode === 'string' ? metaCode : 'DELIVERY_ERROR',
@@ -9121,7 +9121,7 @@ class RPCClientManager {
9121
9121
  this.trackerWithEvents.removeEventHandler?.(this.trackerEventHandler);
9122
9122
  }
9123
9123
  catch (error) {
9124
- logger$1d.debug('rpc_tracker_handler_remove_failed', {
9124
+ logger$1c.debug('rpc_tracker_handler_remove_failed', {
9125
9125
  error: error instanceof Error ? error.message : String(error),
9126
9126
  });
9127
9127
  }
@@ -9164,7 +9164,7 @@ class RPCClientManager {
9164
9164
  this.rpcListenerAddress = await this.listenCallback(recipient, handler);
9165
9165
  this.rpcBound = true;
9166
9166
  this.boundPhysicalPath = currentPhysicalPath;
9167
- logger$1d.debug('rpc_reply_listener_bound', {
9167
+ logger$1c.debug('rpc_reply_listener_bound', {
9168
9168
  reply_recipient: recipient,
9169
9169
  reply_address: this.rpcReplyAddress?.toString(),
9170
9170
  listener_address: this.rpcListenerAddress?.toString(),
@@ -9258,7 +9258,7 @@ class RPCClientManager {
9258
9258
  const finalizePromise = this.notifyStreamClosed(envelopeId);
9259
9259
  if (finalizePromise) {
9260
9260
  finalizePromise.catch((notifyError) => {
9261
- logger$1d.debug('stream_tracker_finalize_failed', {
9261
+ logger$1c.debug('stream_tracker_finalize_failed', {
9262
9262
  request_id: requestId,
9263
9263
  envelope_id: envelopeId,
9264
9264
  error: notifyError instanceof Error
@@ -9319,7 +9319,7 @@ class RPCClientManager {
9319
9319
  return iterator;
9320
9320
  }
9321
9321
  async sendRpcRequest(requestId, envelope, expectedResponseType, timeoutMs) {
9322
- logger$1d.debug('sending_rpc_request', {
9322
+ logger$1c.debug('sending_rpc_request', {
9323
9323
  envp_id: envelope.id,
9324
9324
  corr_id: envelope.corrId,
9325
9325
  request_id: requestId,
@@ -9335,7 +9335,7 @@ class RPCClientManager {
9335
9335
  }
9336
9336
  }
9337
9337
  catch (error) {
9338
- logger$1d.warning('delivery_tracker_track_failed', {
9338
+ logger$1c.warning('delivery_tracker_track_failed', {
9339
9339
  request_id: requestId,
9340
9340
  error: error instanceof Error ? error.message : String(error),
9341
9341
  });
@@ -9348,14 +9348,14 @@ class RPCClientManager {
9348
9348
  await this.deliverWrapper()(envelope, context);
9349
9349
  }
9350
9350
  async handleReplyEnvelope(envelope) {
9351
- logger$1d.debug('handle_reply_envelope_received', {
9351
+ logger$1c.debug('handle_reply_envelope_received', {
9352
9352
  envelope_id: envelope.id,
9353
9353
  corr_id: envelope.corrId,
9354
9354
  frame_type: envelope.frame?.['type'],
9355
9355
  });
9356
9356
  let requestId = envelope.corrId ?? envelope.id;
9357
9357
  if (!requestId) {
9358
- logger$1d.warning('reply_envelope_missing_corr_id', {
9358
+ logger$1c.warning('reply_envelope_missing_corr_id', {
9359
9359
  envelope_id: envelope.id,
9360
9360
  });
9361
9361
  return;
@@ -9373,12 +9373,12 @@ class RPCClientManager {
9373
9373
  }
9374
9374
  }
9375
9375
  if (!entry) {
9376
- logger$1d.debug('no_pending_request_for_reply', {
9376
+ logger$1c.debug('no_pending_request_for_reply', {
9377
9377
  request_id: requestId,
9378
9378
  });
9379
9379
  return;
9380
9380
  }
9381
- logger$1d.debug('handle_reply_envelope', {
9381
+ logger$1c.debug('handle_reply_envelope', {
9382
9382
  envelope_id: envelope.id,
9383
9383
  request_id: requestId,
9384
9384
  corr_id: envelope.corrId,
@@ -9391,7 +9391,7 @@ class RPCClientManager {
9391
9391
  const ackIndicatesSuccess = frame.ok === true ||
9392
9392
  (frame.ok === undefined && !frame.code && !frame.reason);
9393
9393
  if (ackIndicatesSuccess) {
9394
- logger$1d.debug('pending_request_delivery_acknowledged', {
9394
+ logger$1c.debug('pending_request_delivery_acknowledged', {
9395
9395
  request_id: requestId,
9396
9396
  envelope_id: envelope.id,
9397
9397
  ref_id: frame.refId ?? null,
@@ -9419,7 +9419,7 @@ class RPCClientManager {
9419
9419
  entry.timer = null;
9420
9420
  }
9421
9421
  if (!this.isDataFrame(envelope.frame)) {
9422
- logger$1d.warning('unexpected_reply_frame_type', {
9422
+ logger$1c.warning('unexpected_reply_frame_type', {
9423
9423
  request_id: requestId,
9424
9424
  frame_type: envelope.frame?.['type'],
9425
9425
  });
@@ -9485,7 +9485,7 @@ class RPCClientManager {
9485
9485
  return;
9486
9486
  }
9487
9487
  Promise.resolve(this.deliveryTracker.onStreamItem(envelopeId, envelope)).catch((error) => {
9488
- logger$1d.debug('stream_tracker_push_failed', {
9488
+ logger$1c.debug('stream_tracker_push_failed', {
9489
9489
  envelope_id: envelopeId,
9490
9490
  error: error instanceof Error ? error.message : String(error),
9491
9491
  });
@@ -9600,7 +9600,7 @@ function normalizeMailbox(mailbox) {
9600
9600
  return mailbox;
9601
9601
  }
9602
9602
 
9603
- const logger$1c = getLogger('naylence.fame.node.envelope_listener_manager');
9603
+ const logger$1b = getLogger('naylence.fame.node.envelope_listener_manager');
9604
9604
  const SYSTEM_INBOX$2 = '__sys__';
9605
9605
  class EnvelopeListener {
9606
9606
  constructor(stopFn, task) {
@@ -9608,7 +9608,7 @@ class EnvelopeListener {
9608
9608
  this.task = task;
9609
9609
  }
9610
9610
  stop() {
9611
- logger$1c.debug('stopping_listener', {
9611
+ logger$1b.debug('stopping_listener', {
9612
9612
  task_name: this.task.name,
9613
9613
  });
9614
9614
  try {
@@ -9616,7 +9616,7 @@ class EnvelopeListener {
9616
9616
  if (maybeCleanup &&
9617
9617
  typeof maybeCleanup.then === 'function') {
9618
9618
  void maybeCleanup.catch((error) => {
9619
- logger$1c.debug('listener_stop_cleanup_failed', {
9619
+ logger$1b.debug('listener_stop_cleanup_failed', {
9620
9620
  task_name: this.task.name,
9621
9621
  error: error instanceof Error ? error.message : String(error),
9622
9622
  });
@@ -9624,7 +9624,7 @@ class EnvelopeListener {
9624
9624
  }
9625
9625
  }
9626
9626
  catch (error) {
9627
- logger$1c.debug('listener_stop_cleanup_failed', {
9627
+ logger$1b.debug('listener_stop_cleanup_failed', {
9628
9628
  task_name: this.task.name,
9629
9629
  error: error instanceof Error ? error.message : String(error),
9630
9630
  });
@@ -9654,7 +9654,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9654
9654
  envelope.replyTo = core.formatAddress(SYSTEM_INBOX$2, this.nodeLike.physicalPath);
9655
9655
  }
9656
9656
  catch (error) {
9657
- logger$1c.warning('default_reply_to_assignment_failed', {
9657
+ logger$1b.warning('default_reply_to_assignment_failed', {
9658
9658
  envelope_id: envelope.id,
9659
9659
  service_name: envelope.capabilities?.[0] ?? null,
9660
9660
  error: error instanceof Error ? error.message : String(error),
@@ -9679,7 +9679,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9679
9679
  if (serviceName === SYSTEM_INBOX$2) {
9680
9680
  continue;
9681
9681
  }
9682
- logger$1c.debug('stopping_listener_for_service', {
9682
+ logger$1b.debug('stopping_listener_for_service', {
9683
9683
  service_name: serviceName,
9684
9684
  });
9685
9685
  entry.listener.stop();
@@ -9689,7 +9689,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9689
9689
  catch (error) {
9690
9690
  if (!(error instanceof Error) ||
9691
9691
  error.name !== 'TaskCancelledError') {
9692
- logger$1c.debug('listener_task_stopped', {
9692
+ logger$1b.debug('listener_task_stopped', {
9693
9693
  service_name: serviceName,
9694
9694
  error: error instanceof Error ? error.message : String(error),
9695
9695
  });
@@ -9697,7 +9697,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9697
9697
  }
9698
9698
  }
9699
9699
  if (systemEntry) {
9700
- logger$1c.debug('stopping_listener_for_service', {
9700
+ logger$1b.debug('stopping_listener_for_service', {
9701
9701
  service_name: SYSTEM_INBOX$2,
9702
9702
  });
9703
9703
  systemEntry.listener.stop();
@@ -9707,7 +9707,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9707
9707
  catch (error) {
9708
9708
  if (!(error instanceof Error) ||
9709
9709
  error.name !== 'TaskCancelledError') {
9710
- logger$1c.debug('listener_task_stopped', {
9710
+ logger$1b.debug('listener_task_stopped', {
9711
9711
  service_name: SYSTEM_INBOX$2,
9712
9712
  error: error instanceof Error ? error.message : String(error),
9713
9713
  });
@@ -9724,13 +9724,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9724
9724
  }
9725
9725
  async recoverUnhandledInboundEnvelopes() {
9726
9726
  if (typeof this.deliveryTracker.listInbound !== 'function') {
9727
- logger$1c.debug('delivery_tracker_missing_inbound_listing');
9727
+ logger$1b.debug('delivery_tracker_missing_inbound_listing');
9728
9728
  return;
9729
9729
  }
9730
9730
  const failedInbound = await this.deliveryTracker.listInbound((env) => env.status === EnvelopeStatus.RECEIVED ||
9731
9731
  env.status === EnvelopeStatus.FAILED_TO_HANDLE);
9732
9732
  if (!failedInbound.length) {
9733
- logger$1c.debug('no_failed_inbound_envelopes_to_recover');
9733
+ logger$1b.debug('no_failed_inbound_envelopes_to_recover');
9734
9734
  return;
9735
9735
  }
9736
9736
  const grouped = new Map();
@@ -9747,7 +9747,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9747
9747
  this.pendingRecoveryEnvelopes.set(serviceName, envelopes);
9748
9748
  }
9749
9749
  });
9750
- logger$1c.debug('discovered_failed_inbound_envelopes', {
9750
+ logger$1b.debug('discovered_failed_inbound_envelopes', {
9751
9751
  total: failedInbound.length,
9752
9752
  services: Array.from(grouped.keys()),
9753
9753
  });
@@ -9757,7 +9757,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9757
9757
  const pollTimeoutMs = options.pollTimeoutMs ??
9758
9758
  options.poll_timeout_ms ??
9759
9759
  core.DEFAULT_POLLING_TIMEOUT_MS;
9760
- logger$1c.debug('listen_start', {
9760
+ logger$1b.debug('listen_start', {
9761
9761
  recipient: serviceName,
9762
9762
  poll_timeout_ms: pollTimeoutMs ?? core.DEFAULT_POLLING_TIMEOUT_MS,
9763
9763
  });
@@ -9788,7 +9788,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9788
9788
  tracked?.mailboxType === MailboxType.OUTBOX ||
9789
9789
  envelope.frame?.['type'] === 'DeliveryAck';
9790
9790
  if (!shouldInvoke) {
9791
- logger$1c.debug('skipping_listener_handler', {
9791
+ logger$1b.debug('skipping_listener_handler', {
9792
9792
  recipient: serviceName,
9793
9793
  envelope_id: envelope.id,
9794
9794
  tracked_status: tracked?.status,
@@ -9802,13 +9802,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9802
9802
  ? undefined
9803
9803
  : (tracked ?? undefined);
9804
9804
  if (trackedForHandler && trackedForHandler.attempt > 0) {
9805
- logger$1c.info('resuming_handler_retry_after_restart', {
9805
+ logger$1b.info('resuming_handler_retry_after_restart', {
9806
9806
  envelope_id: envelope.id,
9807
9807
  current_attempts: trackedForHandler.attempt,
9808
9808
  service_name: serviceName,
9809
9809
  });
9810
9810
  }
9811
- logger$1c.debug('forwarding_to_listener_handler', {
9811
+ logger$1b.debug('forwarding_to_listener_handler', {
9812
9812
  recipient: serviceName,
9813
9813
  envelope_id: envelope.id,
9814
9814
  frame_type: envelope.frame?.['type'],
@@ -9827,7 +9827,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9827
9827
  await channel.send(null);
9828
9828
  }
9829
9829
  catch (error) {
9830
- logger$1c.debug('listener_stop_signal_failed', {
9830
+ logger$1b.debug('listener_stop_signal_failed', {
9831
9831
  service_name: serviceName,
9832
9832
  error: error instanceof Error ? error.message : String(error),
9833
9833
  });
@@ -9836,7 +9836,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9836
9836
  await this.listenersLock.runExclusive(async () => {
9837
9837
  const existing = this.listeners.get(serviceName);
9838
9838
  if (existing) {
9839
- logger$1c.debug('replacing_envelope_listener', { recipient: serviceName });
9839
+ logger$1b.debug('replacing_envelope_listener', { recipient: serviceName });
9840
9840
  existing.listener.stop();
9841
9841
  try {
9842
9842
  await existing.listener.task.promise;
@@ -9854,13 +9854,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9854
9854
  return binding.address;
9855
9855
  }
9856
9856
  async listenRpc(serviceName, handler, options = {}) {
9857
- logger$1c.debug('rpc_listen_start', { service_name: serviceName });
9857
+ logger$1b.debug('rpc_listen_start', { service_name: serviceName });
9858
9858
  const rpcHandler = async (envelope, context) => {
9859
9859
  const result = await this.rpcServerHandler.handleRpcRequest(envelope, context, handler, serviceName);
9860
9860
  return result ?? null;
9861
9861
  };
9862
9862
  const address = await this.listen(serviceName, rpcHandler, options);
9863
- logger$1c.debug('rpc_listen_bound', {
9863
+ logger$1b.debug('rpc_listen_bound', {
9864
9864
  service_name: serviceName,
9865
9865
  address: address.toString(),
9866
9866
  });
@@ -9929,12 +9929,12 @@ class EnvelopeListenerManager extends TaskSpawner {
9929
9929
  return cached;
9930
9930
  });
9931
9931
  if (!envelopes.length) {
9932
- logger$1c.debug('no_cached_recovery_for_service', {
9932
+ logger$1b.debug('no_cached_recovery_for_service', {
9933
9933
  service_name: serviceName,
9934
9934
  });
9935
9935
  return;
9936
9936
  }
9937
- logger$1c.debug('recovering_unhandled_envelopes_on_listen', {
9937
+ logger$1b.debug('recovering_unhandled_envelopes_on_listen', {
9938
9938
  service_name: serviceName,
9939
9939
  count: envelopes.length,
9940
9940
  envelope_ids: envelopes.map((trackedEnvelope) => trackedEnvelope.envelopeId),
@@ -9945,7 +9945,7 @@ class EnvelopeListenerManager extends TaskSpawner {
9945
9945
  async recoverServiceEnvelopes(serviceName, envelopes, handler) {
9946
9946
  for (const tracked of envelopes) {
9947
9947
  try {
9948
- logger$1c.warning('recovering_unhandled_envelope', {
9948
+ logger$1b.warning('recovering_unhandled_envelope', {
9949
9949
  envelope_id: tracked.envelopeId,
9950
9950
  service_name: serviceName,
9951
9951
  current_attempts: tracked.attempt,
@@ -9954,13 +9954,13 @@ class EnvelopeListenerManager extends TaskSpawner {
9954
9954
  const originalEnvelope = tracked.originalEnvelope;
9955
9955
  const receiverPolicy = this.nodeLike.deliveryPolicy?.receiverRetryPolicy ?? undefined;
9956
9956
  await this.executeHandlerWithRetries(handler, originalEnvelope, undefined, receiverPolicy, tracked, serviceName);
9957
- logger$1c.debug('envelope_recovery_completed', {
9957
+ logger$1b.debug('envelope_recovery_completed', {
9958
9958
  envelope_id: tracked.envelopeId,
9959
9959
  service_name: serviceName,
9960
9960
  });
9961
9961
  }
9962
9962
  catch (error) {
9963
- logger$1c.error('envelope_recovery_failed', {
9963
+ logger$1b.error('envelope_recovery_failed', {
9964
9964
  envelope_id: tracked.envelopeId,
9965
9965
  service_name: serviceName,
9966
9966
  error: error instanceof Error ? error.message : String(error),
@@ -10006,7 +10006,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10006
10006
  await this.deliveryTracker.onEnvelopeHandled(trackedEnvelope);
10007
10007
  }
10008
10008
  if (currentAttempt > 0) {
10009
- logger$1c.info('handler_retry_succeeded', {
10009
+ logger$1b.info('handler_retry_succeeded', {
10010
10010
  envelope_id: envelope.id,
10011
10011
  attempt: currentAttempt + 1,
10012
10012
  total_attempts: currentAttempt + 1,
@@ -10022,7 +10022,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10022
10022
  await this.deliveryTracker.onEnvelopeHandleFailed(inboxName, trackedEnvelope, context, error instanceof Error ? error : new Error(String(error)), isFinalAttempt);
10023
10023
  }
10024
10024
  if (isFinalAttempt) {
10025
- logger$1c.error('handler_execution_failed_exhausted_retries', {
10025
+ logger$1b.error('handler_execution_failed_exhausted_retries', {
10026
10026
  envelope_id: envelope.id,
10027
10027
  total_attempts: attemptNumber,
10028
10028
  max_retries: retryPolicy?.maxRetries ?? 0,
@@ -10031,7 +10031,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10031
10031
  break;
10032
10032
  }
10033
10033
  const delayMs = retryPolicy?.nextDelayMs(attemptNumber) ?? 0;
10034
- logger$1c.warning('handler_execution_failed_will_retry', {
10034
+ logger$1b.warning('handler_execution_failed_will_retry', {
10035
10035
  envelope_id: envelope.id,
10036
10036
  attempt: attemptNumber,
10037
10037
  max_retries: retryPolicy?.maxRetries ?? 0,
@@ -10061,7 +10061,7 @@ class EnvelopeListenerManager extends TaskSpawner {
10061
10061
  }
10062
10062
  }
10063
10063
 
10064
- const logger$1b = getLogger('naylence.fame.delivery.default_delivery_tracker');
10064
+ const logger$1a = getLogger('naylence.fame.delivery.default_delivery_tracker');
10065
10065
  const STREAM_END = Symbol('stream-end');
10066
10066
  const SWEEPER_TICK = Symbol('tracker-sweeper-tick');
10067
10067
  function createDeferred$2() {
@@ -10293,7 +10293,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10293
10293
  const expectedResponseType = options.expectedResponseType;
10294
10294
  const tracked = await this.lock.runExclusive(async () => {
10295
10295
  if (this.ackFutures.has(envelope.id)) {
10296
- logger$1b.debug('tracker_envelope_already_tracked', {
10296
+ logger$1a.debug('tracker_envelope_already_tracked', {
10297
10297
  envp_id: envelope.id,
10298
10298
  });
10299
10299
  return null;
@@ -10303,7 +10303,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10303
10303
  if (expectedResponseType & core.FameResponseType.REPLY ||
10304
10304
  expectedResponseType & core.FameResponseType.STREAM) {
10305
10305
  if (existingEnvId && existingEnvId !== envelope.id) {
10306
- logger$1b.debug('envelope_already_tracked_for_replies', {
10306
+ logger$1a.debug('envelope_already_tracked_for_replies', {
10307
10307
  envp_id: envelope.id,
10308
10308
  corr_id: corrId,
10309
10309
  expected_response_type: expectedResponseType,
@@ -10352,7 +10352,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10352
10352
  return null;
10353
10353
  }
10354
10354
  await this.scheduleTimer(tracked, options.retryPolicy ?? null, options.retryHandler ?? null);
10355
- logger$1b.debug('tracker_registered_envelope', {
10355
+ logger$1a.debug('tracker_registered_envelope', {
10356
10356
  envp_id: envelope.id,
10357
10357
  corr_id: tracked.originalEnvelope.corrId,
10358
10358
  expected_response: tracked.expectedResponseType,
@@ -10376,21 +10376,21 @@ class DefaultDeliveryTracker extends TaskSpawner {
10376
10376
  return this.awaitEnvelopeFuture(envelopeId, core.FameResponseType.REPLY | core.FameResponseType.STREAM, future, timeoutMs);
10377
10377
  }
10378
10378
  async onEnvelopeDelivered(inboxName, envelope, context) {
10379
- logger$1b.debug('envelope_delivered', {
10379
+ logger$1a.debug('envelope_delivered', {
10380
10380
  envp_id: envelope.id,
10381
10381
  corr_id: envelope.corrId,
10382
10382
  rtype: envelope.rtype ?? core.FameResponseType.NONE,
10383
10383
  frame_type: envelope.frame?.type ?? 'unknown',
10384
10384
  });
10385
10385
  if (!envelope.corrId) {
10386
- logger$1b.debug('envelope_delivered_no_corr_id', {
10386
+ logger$1a.debug('envelope_delivered_no_corr_id', {
10387
10387
  envelope_id: envelope.id,
10388
10388
  });
10389
10389
  return null;
10390
10390
  }
10391
10391
  if (this.isDeliveryAckFrame(envelope.frame)) {
10392
10392
  if (!envelope.frame.refId) {
10393
- logger$1b.debug('envelope_delivered_no_ref_id', {
10393
+ logger$1a.debug('envelope_delivered_no_ref_id', {
10394
10394
  envelope_id: envelope.id,
10395
10395
  });
10396
10396
  return null;
@@ -10428,7 +10428,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10428
10428
  await inbox.set(envelope.id, tracked);
10429
10429
  }
10430
10430
  else {
10431
- logger$1b.debug('tracker_duplicate_envelope_already_handled', {
10431
+ logger$1a.debug('tracker_duplicate_envelope_already_handled', {
10432
10432
  envp_id: envelope.id,
10433
10433
  status: tracked.status,
10434
10434
  });
@@ -10471,7 +10471,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10471
10471
  }
10472
10472
  if (isFinalFailure) {
10473
10473
  envelope.status = EnvelopeStatus.FAILED_TO_HANDLE;
10474
- logger$1b.error('envelope_handle_failed_final', {
10474
+ logger$1a.error('envelope_handle_failed_final', {
10475
10475
  inbox_name: inboxName,
10476
10476
  envp_id: envelope.originalEnvelope.id,
10477
10477
  error: error?.message ?? 'unknown',
@@ -10482,7 +10482,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10482
10482
  await inbox.delete(envelope.originalEnvelope.id);
10483
10483
  return;
10484
10484
  }
10485
- logger$1b.warning('envelope_handle_failed_retry', {
10485
+ logger$1a.warning('envelope_handle_failed_retry', {
10486
10486
  inbox_name: inboxName,
10487
10487
  envp_id: envelope.originalEnvelope.id,
10488
10488
  error: error?.message ?? 'unknown',
@@ -10528,14 +10528,14 @@ class DefaultDeliveryTracker extends TaskSpawner {
10528
10528
  if (handledViaFuture) {
10529
10529
  await this.markDoneSince(this.ackFutures, refId, this.ackDoneSince);
10530
10530
  await this.clearTimer(refId);
10531
- logger$1b.debug('tracker_ack_resolved_without_tracked_envelope', {
10531
+ logger$1a.debug('tracker_ack_resolved_without_tracked_envelope', {
10532
10532
  envp_id: envelope.id,
10533
10533
  ref_id: refId,
10534
10534
  corr_id: envelope.corrId,
10535
10535
  });
10536
10536
  return;
10537
10537
  }
10538
- logger$1b.debug('tracker_ack_for_unknown_envelope', {
10538
+ logger$1a.debug('tracker_ack_for_unknown_envelope', {
10539
10539
  envp_id: envelope.id,
10540
10540
  ref_id: refId,
10541
10541
  corr_id: envelope.corrId,
@@ -10543,7 +10543,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10543
10543
  return;
10544
10544
  }
10545
10545
  if (tracked.originalEnvelope.corrId !== envelope.corrId) {
10546
- logger$1b.debug('tracker_ack_corr_id_mismatch', {
10546
+ logger$1a.debug('tracker_ack_corr_id_mismatch', {
10547
10547
  envp_id: envelope.id,
10548
10548
  expected_corr_id: tracked.originalEnvelope.corrId,
10549
10549
  actual_corr_id: envelope.corrId,
@@ -10568,7 +10568,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10568
10568
  for (const handler of this.eventHandlers) {
10569
10569
  await handler.onEnvelopeAcked?.(tracked);
10570
10570
  }
10571
- logger$1b.debug('tracker_envelope_acked', {
10571
+ logger$1a.debug('tracker_envelope_acked', {
10572
10572
  envp_id: tracked.originalEnvelope.id,
10573
10573
  });
10574
10574
  }
@@ -10586,13 +10586,13 @@ class DefaultDeliveryTracker extends TaskSpawner {
10586
10586
  const outbox = this.ensureOutbox();
10587
10587
  const tracked = await outbox.get(envelope.frame.refId);
10588
10588
  if (!tracked) {
10589
- logger$1b.debug('tracker_nack_for_unknown_envelope', {
10589
+ logger$1a.debug('tracker_nack_for_unknown_envelope', {
10590
10590
  envp_id: envelope.id,
10591
10591
  });
10592
10592
  return;
10593
10593
  }
10594
10594
  if (tracked.originalEnvelope.corrId !== envelope.corrId) {
10595
- logger$1b.debug('tracker_nack_corr_id_mismatch', {
10595
+ logger$1a.debug('tracker_nack_corr_id_mismatch', {
10596
10596
  envp_id: envelope.id,
10597
10597
  expected_corr_id: tracked.originalEnvelope.corrId,
10598
10598
  actual_corr_id: envelope.corrId,
@@ -10634,7 +10634,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10634
10634
  for (const handler of this.eventHandlers) {
10635
10635
  await handler.onEnvelopeNacked?.(tracked, ackFrame.reason ?? null);
10636
10636
  }
10637
- logger$1b.debug('tracker_envelope_nacked', {
10637
+ logger$1a.debug('tracker_envelope_nacked', {
10638
10638
  envp_id: tracked.originalEnvelope.id,
10639
10639
  reason: ackFrame.reason,
10640
10640
  });
@@ -10682,7 +10682,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10682
10682
  for (const handler of this.eventHandlers) {
10683
10683
  await handler.onEnvelopeReplied?.(trackedEnvelope, envelope);
10684
10684
  }
10685
- logger$1b.debug('tracked_envelope_replied', {
10685
+ logger$1a.debug('tracked_envelope_replied', {
10686
10686
  envp_id: trackedEnvelope.originalEnvelope.id,
10687
10687
  corr_id: envelope.corrId,
10688
10688
  });
@@ -10756,7 +10756,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10756
10756
  async addToInboxDlq(trackedEnvelope, reason = null) {
10757
10757
  const dlq = this.inboxDlq;
10758
10758
  if (!dlq) {
10759
- logger$1b.error('dlq_not_initialized', {
10759
+ logger$1a.error('dlq_not_initialized', {
10760
10760
  envp_id: trackedEnvelope.originalEnvelope.id,
10761
10761
  });
10762
10762
  return;
@@ -10771,7 +10771,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10771
10771
  const deadLetteredAt = Date.now();
10772
10772
  setMetaWithLegacy(trackedEnvelope.meta, 'deadLetteredAtMs', 'dead_lettered_at_ms', deadLetteredAt);
10773
10773
  await dlq.set(trackedEnvelope.originalEnvelope.id, trackedEnvelope);
10774
- logger$1b.warning('envelope_moved_to_dlq', {
10774
+ logger$1a.warning('envelope_moved_to_dlq', {
10775
10775
  envp_id: trackedEnvelope.originalEnvelope.id,
10776
10776
  service_name: trackedEnvelope.serviceName,
10777
10777
  });
@@ -10800,7 +10800,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10800
10800
  const toDelete = Object.entries(items).filter(([, value]) => predicate ? predicate(value) : true);
10801
10801
  await Promise.all(toDelete.map(([key]) => dlq.delete(key)));
10802
10802
  if (toDelete.length) {
10803
- logger$1b.debug('dlq_purged', { count: toDelete.length });
10803
+ logger$1a.debug('dlq_purged', { count: toDelete.length });
10804
10804
  }
10805
10805
  return toDelete.length;
10806
10806
  }
@@ -10853,11 +10853,11 @@ class DefaultDeliveryTracker extends TaskSpawner {
10853
10853
  }
10854
10854
  this.futuresSweeper = null;
10855
10855
  }
10856
- logger$1b.debug('tracker_cleanup_completed');
10856
+ logger$1a.debug('tracker_cleanup_completed');
10857
10857
  }
10858
10858
  async recoverPending() {
10859
10859
  const pending = await this.listPending();
10860
- logger$1b.debug('tracker_recovering_pending', { count: pending.length });
10860
+ logger$1a.debug('tracker_recovering_pending', { count: pending.length });
10861
10861
  await this.lock.runExclusive(async () => {
10862
10862
  for (const tracked of pending) {
10863
10863
  if (tracked.expectedResponseType & core.FameResponseType.ACK) {
@@ -10883,7 +10883,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10883
10883
  for (const tracked of pending) {
10884
10884
  await this.scheduleTimer(tracked, null, null);
10885
10885
  }
10886
- logger$1b.debug('tracker_recovery_completed', { count: pending.length });
10886
+ logger$1a.debug('tracker_recovery_completed', { count: pending.length });
10887
10887
  }
10888
10888
  ensureOutbox() {
10889
10889
  if (!this.outbox) {
@@ -10898,7 +10898,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10898
10898
  return this.inbox;
10899
10899
  }
10900
10900
  async waitForPendingAcks() {
10901
- logger$1b.debug('tracker_node_preparing_to_stop_waiting_for_pending_acks');
10901
+ logger$1a.debug('tracker_node_preparing_to_stop_waiting_for_pending_acks');
10902
10902
  const outbox = this.outbox;
10903
10903
  if (!outbox) {
10904
10904
  return;
@@ -10910,7 +10910,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
10910
10910
  continue;
10911
10911
  }
10912
10912
  if (!future.done) {
10913
- logger$1b.debug('tracker_pending_ack_future_detected', {
10913
+ logger$1a.debug('tracker_pending_ack_future_detected', {
10914
10914
  envelope_id: envelopeId,
10915
10915
  });
10916
10916
  pending.push({ envelopeId, future });
@@ -10918,10 +10918,10 @@ class DefaultDeliveryTracker extends TaskSpawner {
10918
10918
  }
10919
10919
  });
10920
10920
  if (!pending.length) {
10921
- logger$1b.debug('tracker_no_pending_acks_to_wait_for');
10921
+ logger$1a.debug('tracker_no_pending_acks_to_wait_for');
10922
10922
  return;
10923
10923
  }
10924
- logger$1b.debug('tracker_waiting_for_pending_acks', { count: pending.length });
10924
+ logger$1a.debug('tracker_waiting_for_pending_acks', { count: pending.length });
10925
10925
  for (const entry of pending) {
10926
10926
  if (!entry) {
10927
10927
  continue;
@@ -10938,19 +10938,19 @@ class DefaultDeliveryTracker extends TaskSpawner {
10938
10938
  }
10939
10939
  try {
10940
10940
  await this.awaitWithTimeout(entry.future.promise, remainingMs);
10941
- logger$1b.debug('tracker_received_ack', {
10941
+ logger$1a.debug('tracker_received_ack', {
10942
10942
  envelope_id: entry.envelopeId,
10943
10943
  });
10944
10944
  await outbox.delete(entry.envelopeId);
10945
10945
  }
10946
10946
  catch (error) {
10947
10947
  if (error instanceof Error && error.name === 'TimeoutError') {
10948
- logger$1b.debug('tracker_ack_timeout_expired', {
10948
+ logger$1a.debug('tracker_ack_timeout_expired', {
10949
10949
  envelope_id: entry.envelopeId,
10950
10950
  });
10951
10951
  }
10952
10952
  else {
10953
- logger$1b.debug('tracker_ack_wait_error', {
10953
+ logger$1a.debug('tracker_ack_wait_error', {
10954
10954
  envelope_id: entry.envelopeId,
10955
10955
  error: error instanceof Error ? error.message : String(error),
10956
10956
  });
@@ -10958,13 +10958,13 @@ class DefaultDeliveryTracker extends TaskSpawner {
10958
10958
  }
10959
10959
  }
10960
10960
  catch (error) {
10961
- logger$1b.error('tracker_error_waiting_for_ack', {
10961
+ logger$1a.error('tracker_error_waiting_for_ack', {
10962
10962
  envelope_id: entry.envelopeId,
10963
10963
  error: error instanceof Error ? error.message : String(error),
10964
10964
  });
10965
10965
  }
10966
10966
  }
10967
- logger$1b.debug('tracker_finished_waiting_for_pending_acks');
10967
+ logger$1a.debug('tracker_finished_waiting_for_pending_acks');
10968
10968
  }
10969
10969
  async waitForPendingAckDispatches() {
10970
10970
  while (this.pendingAckDispatches.size > 0) {
@@ -11022,7 +11022,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11022
11022
  for (const handler of this.eventHandlers) {
11023
11023
  await handler.onEnvelopeTimeout?.(currentTracked);
11024
11024
  }
11025
- logger$1b.debug('tracker_envelope_timed_out', {
11025
+ logger$1a.debug('tracker_envelope_timed_out', {
11026
11026
  envp_id: tracked.originalEnvelope.id,
11027
11027
  });
11028
11028
  return;
@@ -11035,7 +11035,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11035
11035
  currentTracked.timeoutAtMs = nextTimeoutAt;
11036
11036
  await outbox.set(tracked.originalEnvelope.id, currentTracked);
11037
11037
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11038
- logger$1b.debug('tracker_retry_deferred_during_shutdown', {
11038
+ logger$1a.debug('tracker_retry_deferred_during_shutdown', {
11039
11039
  envp_id: tracked.originalEnvelope.id,
11040
11040
  defer_ms: shutdownDeferMs,
11041
11041
  });
@@ -11058,7 +11058,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11058
11058
  });
11059
11059
  }
11060
11060
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11061
- logger$1b.debug('envelope_delivery_retry_scheduled', {
11061
+ logger$1a.debug('envelope_delivery_retry_scheduled', {
11062
11062
  envp_id: tracked.originalEnvelope.id,
11063
11063
  attempt: currentTracked.attempt,
11064
11064
  max_retries: retryPolicy.maxRetries,
@@ -11070,7 +11070,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11070
11070
  currentTracked.timeoutAtMs = currentTracked.overallTimeoutAtMs;
11071
11071
  await outbox.set(tracked.originalEnvelope.id, currentTracked);
11072
11072
  await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);
11073
- logger$1b.debug('envelope_retries_exhausted_waiting_until_overall_timeout', {
11073
+ logger$1a.debug('envelope_retries_exhausted_waiting_until_overall_timeout', {
11074
11074
  envp_id: tracked.originalEnvelope.id,
11075
11075
  attempt: currentTracked.attempt,
11076
11076
  overall_timeout_at_ms: currentTracked.overallTimeoutAtMs,
@@ -11090,7 +11090,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11090
11090
  for (const handler of this.eventHandlers) {
11091
11091
  await handler.onEnvelopeTimeout?.(currentTracked);
11092
11092
  }
11093
- logger$1b.debug('tracker_envelope_timed_out', {
11093
+ logger$1a.debug('tracker_envelope_timed_out', {
11094
11094
  envp_id: tracked.originalEnvelope.id,
11095
11095
  });
11096
11096
  }
@@ -11098,7 +11098,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11098
11098
  if (error instanceof TaskCancelledError) {
11099
11099
  return;
11100
11100
  }
11101
- logger$1b.error('tracker_timer_error', {
11101
+ logger$1a.error('tracker_timer_error', {
11102
11102
  envp_id: tracked.originalEnvelope.id,
11103
11103
  error: error instanceof Error ? error.message : String(error),
11104
11104
  });
@@ -11153,7 +11153,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11153
11153
  if (timeoutSeconds !== null) {
11154
11154
  return await this.awaitWithTimeout(future.promise, timeoutSeconds);
11155
11155
  }
11156
- logger$1b.debug('await_envelope_no_timeout_wait', {
11156
+ logger$1a.debug('await_envelope_no_timeout_wait', {
11157
11157
  envelope_id: envelopeId,
11158
11158
  });
11159
11159
  return await future.promise;
@@ -11162,7 +11162,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11162
11162
  if (error instanceof Error && error.name !== 'TimeoutError') {
11163
11163
  throw error;
11164
11164
  }
11165
- logger$1b.error('await_envelope_timeout_error', {
11165
+ logger$1a.error('await_envelope_timeout_error', {
11166
11166
  envelope_id: envelopeId,
11167
11167
  timeout_ms: timeoutSeconds,
11168
11168
  future_done: false,
@@ -11323,7 +11323,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11323
11323
  this.replyDoneSince.delete(envId);
11324
11324
  }
11325
11325
  });
11326
- logger$1b.debug('tracker_swept_completed_futures', {
11326
+ logger$1a.debug('tracker_swept_completed_futures', {
11327
11327
  ack_removed: toRemoveAck.length,
11328
11328
  reply_removed: toRemoveReply.length,
11329
11329
  grace_secs: this.futGcGraceSecs,
@@ -11337,7 +11337,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11337
11337
  if (error instanceof Error && error.name === 'TimeoutError') {
11338
11338
  continue;
11339
11339
  }
11340
- logger$1b.error('tracker_sweeper_error', {
11340
+ logger$1a.error('tracker_sweeper_error', {
11341
11341
  error: error instanceof Error ? error.message : String(error),
11342
11342
  });
11343
11343
  }
@@ -11368,14 +11368,14 @@ class DefaultDeliveryTracker extends TaskSpawner {
11368
11368
  }
11369
11369
  const node = this.node;
11370
11370
  if (!envelope.replyTo) {
11371
- logger$1b.error('cannot_send_ack_no_reply_to', { envp_id: envelope.id });
11371
+ logger$1a.error('cannot_send_ack_no_reply_to', { envp_id: envelope.id });
11372
11372
  return;
11373
11373
  }
11374
11374
  if (!envelope.corrId) {
11375
- logger$1b.error('cannot_send_ack_no_corr_id', { envp_id: envelope.id });
11375
+ logger$1a.error('cannot_send_ack_no_corr_id', { envp_id: envelope.id });
11376
11376
  return;
11377
11377
  }
11378
- logger$1b.debug('tracker_sending_ack', {
11378
+ logger$1a.debug('tracker_sending_ack', {
11379
11379
  envp_id: envelope.id,
11380
11380
  ref_id: envelope.id,
11381
11381
  to: envelope.replyTo,
@@ -11395,7 +11395,7 @@ class DefaultDeliveryTracker extends TaskSpawner {
11395
11395
  .send(ackEnvelope)
11396
11396
  .then(() => undefined)
11397
11397
  .catch((error) => {
11398
- logger$1b.error('tracker_ack_dispatch_failed', {
11398
+ logger$1a.error('tracker_ack_dispatch_failed', {
11399
11399
  envp_id: envelope.id,
11400
11400
  error: error instanceof Error ? error.message : String(error),
11401
11401
  });
@@ -11481,7 +11481,7 @@ class AsyncEvent {
11481
11481
  }
11482
11482
  }
11483
11483
 
11484
- const logger$1a = getLogger('naylence.fame.node.root_session_manager');
11484
+ const logger$19 = getLogger('naylence.fame.node.root_session_manager');
11485
11485
  function resolveOption$1(options, primary, ...aliases) {
11486
11486
  const record = options;
11487
11487
  const primaryKey = primary;
@@ -11562,7 +11562,7 @@ class RootSessionManager extends TaskSpawner {
11562
11562
  this.onAdmissionFailed =
11563
11563
  typeof onAdmissionFailed === 'function' ? onAdmissionFailed : undefined;
11564
11564
  this.enableContinuousRefresh = enableContinuousRefresh ?? true;
11565
- logger$1a.debug('created_root_session_manager');
11565
+ logger$19.debug('created_root_session_manager');
11566
11566
  }
11567
11567
  get isReady() {
11568
11568
  return this.readyEvent.isSet();
@@ -11587,7 +11587,7 @@ class RootSessionManager extends TaskSpawner {
11587
11587
  if (this.admissionTask) {
11588
11588
  return;
11589
11589
  }
11590
- logger$1a.debug('root_session_manager_starting');
11590
+ logger$19.debug('root_session_manager_starting');
11591
11591
  this.stopEvent.clear();
11592
11592
  this.readyEvent.clear();
11593
11593
  const taskName = `root-admission-${this.admissionEpoch}`;
@@ -11607,10 +11607,10 @@ class RootSessionManager extends TaskSpawner {
11607
11607
  await this.admissionTask.promise;
11608
11608
  throw new FameConnectError('Root session manager failed to become ready');
11609
11609
  }
11610
- logger$1a.debug('root_session_manager_started');
11610
+ logger$19.debug('root_session_manager_started');
11611
11611
  }
11612
11612
  async stop() {
11613
- logger$1a.debug('root_session_manager_stopping');
11613
+ logger$19.debug('root_session_manager_stopping');
11614
11614
  this.stopEvent.set();
11615
11615
  if (this.admissionTask) {
11616
11616
  this.admissionTask.cancel();
@@ -11622,7 +11622,7 @@ class RootSessionManager extends TaskSpawner {
11622
11622
  await this.consumeTask(this.expiryGuardTask);
11623
11623
  this.expiryGuardTask = null;
11624
11624
  }
11625
- logger$1a.debug('root_session_manager_stopped');
11625
+ logger$19.debug('root_session_manager_stopped');
11626
11626
  }
11627
11627
  async awaitReady(timeoutMs) {
11628
11628
  if (this.isReady) {
@@ -11663,12 +11663,12 @@ class RootSessionManager extends TaskSpawner {
11663
11663
  await this.onEpochChange(epoch);
11664
11664
  }
11665
11665
  else {
11666
- logger$1a.debug('epoch_change_ignored_no_handler', { epoch });
11666
+ logger$19.debug('epoch_change_ignored_no_handler', { epoch });
11667
11667
  }
11668
11668
  }
11669
11669
  static createForRootSentinel(node, admissionClient, requestedLogicals = [], enableContinuousRefresh = true, onEpochChange) {
11670
11670
  const handleWelcome = async (frame) => {
11671
- logger$1a.info('root_admission_successful', {
11671
+ logger$19.info('root_admission_successful', {
11672
11672
  system_id: frame.systemId,
11673
11673
  assigned_path: frame.assignedPath ?? null,
11674
11674
  accepted_logicals: frame.acceptedLogicals ?? [],
@@ -11679,12 +11679,12 @@ class RootSessionManager extends TaskSpawner {
11679
11679
  ? grant.purpose
11680
11680
  : undefined;
11681
11681
  if (purpose) {
11682
- logger$1a.debug('received_admission_grant', { purpose });
11682
+ logger$19.debug('received_admission_grant', { purpose });
11683
11683
  }
11684
11684
  }
11685
11685
  };
11686
11686
  const handleFailure = async (error) => {
11687
- logger$1a.error('root_admission_failed_permanently', {
11687
+ logger$19.error('root_admission_failed_permanently', {
11688
11688
  error: error.message,
11689
11689
  });
11690
11690
  };
@@ -11713,10 +11713,10 @@ class RootSessionManager extends TaskSpawner {
11713
11713
  this.readyEvent.set();
11714
11714
  }
11715
11715
  if (this.hadSuccessfulAdmission) {
11716
- logger$1a.debug('root_admission_refreshed');
11716
+ logger$19.debug('root_admission_refreshed');
11717
11717
  }
11718
11718
  else {
11719
- logger$1a.debug('root_admission_completed');
11719
+ logger$19.debug('root_admission_completed');
11720
11720
  }
11721
11721
  this.hadSuccessfulAdmission = true;
11722
11722
  delay = RootSessionManager.BACKOFF_INITIAL;
@@ -11725,7 +11725,7 @@ class RootSessionManager extends TaskSpawner {
11725
11725
  await this.startExpiryGuard(welcomeFrame);
11726
11726
  const expiryTriggered = await this.waitForExpiryOrStop();
11727
11727
  if (expiryTriggered && !this.stopEvent.isSet()) {
11728
- logger$1a.debug('performing_scheduled_re_admission');
11728
+ logger$19.debug('performing_scheduled_re_admission');
11729
11729
  continue;
11730
11730
  }
11731
11731
  }
@@ -11737,7 +11737,7 @@ class RootSessionManager extends TaskSpawner {
11737
11737
  }
11738
11738
  const errorObject = error instanceof Error ? error : new Error(String(error));
11739
11739
  const willRetry = attempts < RootSessionManager.RETRY_MAX_ATTEMPTS;
11740
- logger$1a.warning('root_admission_failed', {
11740
+ logger$19.warning('root_admission_failed', {
11741
11741
  error: errorObject.message,
11742
11742
  attempt: attempts,
11743
11743
  will_retry: willRetry,
@@ -11755,7 +11755,7 @@ class RootSessionManager extends TaskSpawner {
11755
11755
  }
11756
11756
  }
11757
11757
  if (attempts >= RootSessionManager.RETRY_MAX_ATTEMPTS) {
11758
- logger$1a.error('root_admission_max_attempts_exceeded', {
11758
+ logger$19.error('root_admission_max_attempts_exceeded', {
11759
11759
  max_attempts: RootSessionManager.RETRY_MAX_ATTEMPTS,
11760
11760
  });
11761
11761
  }
@@ -11832,7 +11832,7 @@ class RootSessionManager extends TaskSpawner {
11832
11832
  }
11833
11833
  async expiryGuard(welcomeFrame, signal) {
11834
11834
  if (!welcomeFrame.expiresAt) {
11835
- logger$1a.debug('no_admission_expiry_configured');
11835
+ logger$19.debug('no_admission_expiry_configured');
11836
11836
  await Promise.race([this.stopEvent.wait(), this.waitForAbort(signal)]);
11837
11837
  return;
11838
11838
  }
@@ -11841,7 +11841,7 @@ class RootSessionManager extends TaskSpawner {
11841
11841
  let delaySeconds = (expiresAt.getTime() - now.getTime()) / 1000 -
11842
11842
  RootSessionManager.JWT_REFRESH_SAFETY;
11843
11843
  delaySeconds = Math.max(delaySeconds, 0);
11844
- logger$1a.debug('admission_expiry_guard_started', {
11844
+ logger$19.debug('admission_expiry_guard_started', {
11845
11845
  welcome_expires_at: expiresAt.toISOString(),
11846
11846
  delay_seconds: delaySeconds,
11847
11847
  refresh_safety_seconds: RootSessionManager.JWT_REFRESH_SAFETY,
@@ -11850,7 +11850,7 @@ class RootSessionManager extends TaskSpawner {
11850
11850
  if (this.stopEvent.isSet() || signal?.aborted) {
11851
11851
  return;
11852
11852
  }
11853
- logger$1a.debug('admission_expiry_triggered_refresh', {
11853
+ logger$19.debug('admission_expiry_triggered_refresh', {
11854
11854
  expires_at: expiresAt.toISOString(),
11855
11855
  current_time: new Date().toISOString(),
11856
11856
  seconds_before_expiry: RootSessionManager.JWT_REFRESH_SAFETY,
@@ -11865,7 +11865,7 @@ class RootSessionManager extends TaskSpawner {
11865
11865
  return;
11866
11866
  }
11867
11867
  const errorObject = error instanceof Error ? error : new Error(String(error));
11868
- logger$1a.debug('background_task_error', {
11868
+ logger$19.debug('background_task_error', {
11869
11869
  task_name: task.name,
11870
11870
  error: errorObject.message,
11871
11871
  });
@@ -11961,7 +11961,7 @@ class BoundedAsyncQueue {
11961
11961
  }
11962
11962
  }
11963
11963
 
11964
- const logger$19 = getLogger('naylence.fame.connector.broadcast_channel_connector');
11964
+ const logger$18 = getLogger('naylence.fame.connector.broadcast_channel_connector');
11965
11965
  const BROADCAST_CHANNEL_CONNECTOR_TYPE$1 = 'broadcast-channel-connector';
11966
11966
  const DEFAULT_CHANNEL$7 = 'naylence-fabric';
11967
11967
  const DEFAULT_INBOX_CAPACITY$7 = 2048;
@@ -12050,7 +12050,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12050
12050
  this.localNodeId = normalizedLocalNodeId;
12051
12051
  this.targetNodeId = BroadcastChannelConnector.normalizeTargetNodeId(config.initialTargetNodeId);
12052
12052
  this.channel = new BroadcastChannel(this.channelName);
12053
- logger$19.debug('broadcast_channel_connector_created', {
12053
+ logger$18.debug('broadcast_channel_connector_created', {
12054
12054
  channel: this.channelName,
12055
12055
  connector_id: this.connectorId,
12056
12056
  local_node_id: this.localNodeId,
@@ -12062,7 +12062,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12062
12062
  this.onMsg = (event) => {
12063
12063
  // Guard: Don't process if listener was unregistered
12064
12064
  if (!this.listenerRegistered) {
12065
- logger$19.warning('broadcast_channel_message_after_unregister', {
12065
+ logger$18.warning('broadcast_channel_message_after_unregister', {
12066
12066
  channel: this.channelName,
12067
12067
  connector_id: this.connectorId,
12068
12068
  timestamp: new Date().toISOString(),
@@ -12070,7 +12070,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12070
12070
  return;
12071
12071
  }
12072
12072
  const message = event.data;
12073
- logger$19.debug('broadcast_channel_raw_event', {
12073
+ logger$18.debug('broadcast_channel_raw_event', {
12074
12074
  channel: this.channelName,
12075
12075
  connector_id: this.connectorId,
12076
12076
  message_type: message && typeof message === 'object'
@@ -12086,7 +12086,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12086
12086
  const busMessage = message;
12087
12087
  const senderNodeId = BroadcastChannelConnector.normalizeNodeId(busMessage.senderNodeId);
12088
12088
  if (!senderNodeId) {
12089
- logger$19.debug('broadcast_channel_message_rejected', {
12089
+ logger$18.debug('broadcast_channel_message_rejected', {
12090
12090
  channel: this.channelName,
12091
12091
  connector_id: this.connectorId,
12092
12092
  reason: 'missing_sender_node_id',
@@ -12094,7 +12094,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12094
12094
  return;
12095
12095
  }
12096
12096
  if (senderNodeId === this.localNodeId) {
12097
- logger$19.debug('broadcast_channel_message_rejected', {
12097
+ logger$18.debug('broadcast_channel_message_rejected', {
12098
12098
  channel: this.channelName,
12099
12099
  connector_id: this.connectorId,
12100
12100
  reason: 'self_echo',
@@ -12108,14 +12108,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12108
12108
  }
12109
12109
  const payload = BroadcastChannelConnector.coercePayload(busMessage.payload);
12110
12110
  if (!payload) {
12111
- logger$19.debug('broadcast_channel_payload_rejected', {
12111
+ logger$18.debug('broadcast_channel_payload_rejected', {
12112
12112
  channel: this.channelName,
12113
12113
  connector_id: this.connectorId,
12114
12114
  reason: 'unrecognized_payload_type',
12115
12115
  });
12116
12116
  return;
12117
12117
  }
12118
- logger$19.debug('broadcast_channel_message_received', {
12118
+ logger$18.debug('broadcast_channel_message_received', {
12119
12119
  channel: this.channelName,
12120
12120
  sender_id: message?.senderId,
12121
12121
  sender_node_id: senderNodeId,
@@ -12144,14 +12144,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12144
12144
  }
12145
12145
  catch (error) {
12146
12146
  if (error instanceof QueueFullError) {
12147
- logger$19.warning('broadcast_channel_receive_queue_full', {
12147
+ logger$18.warning('broadcast_channel_receive_queue_full', {
12148
12148
  channel: this.channelName,
12149
12149
  inbox_capacity: this.inboxCapacity,
12150
12150
  inbox_remaining_capacity: this.inbox.remainingCapacity,
12151
12151
  });
12152
12152
  }
12153
12153
  else {
12154
- logger$19.error('broadcast_channel_receive_error', {
12154
+ logger$18.error('broadcast_channel_receive_error', {
12155
12155
  channel: this.channelName,
12156
12156
  error: error instanceof Error ? error.message : String(error),
12157
12157
  });
@@ -12165,7 +12165,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12165
12165
  // Setup visibility change monitoring
12166
12166
  this.visibilityChangeHandler = () => {
12167
12167
  const isHidden = document.hidden;
12168
- logger$19.debug('broadcast_channel_visibility_changed', {
12168
+ logger$18.debug('broadcast_channel_visibility_changed', {
12169
12169
  channel: this.channelName,
12170
12170
  connector_id: this.connectorId,
12171
12171
  visibility: isHidden ? 'hidden' : 'visible',
@@ -12174,7 +12174,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12174
12174
  // Pause/resume connector based on visibility
12175
12175
  if (isHidden && this.state === core.ConnectorState.STARTED) {
12176
12176
  this.pause().catch((err) => {
12177
- logger$19.warning('broadcast_channel_pause_failed', {
12177
+ logger$18.warning('broadcast_channel_pause_failed', {
12178
12178
  channel: this.channelName,
12179
12179
  connector_id: this.connectorId,
12180
12180
  error: err instanceof Error ? err.message : String(err),
@@ -12183,7 +12183,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12183
12183
  }
12184
12184
  else if (!isHidden && this.state === core.ConnectorState.PAUSED) {
12185
12185
  this.resume().catch((err) => {
12186
- logger$19.warning('broadcast_channel_resume_failed', {
12186
+ logger$18.warning('broadcast_channel_resume_failed', {
12187
12187
  channel: this.channelName,
12188
12188
  connector_id: this.connectorId,
12189
12189
  error: err instanceof Error ? err.message : String(err),
@@ -12197,7 +12197,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12197
12197
  // Track page lifecycle events to detect browser unload/discard
12198
12198
  if (typeof window !== 'undefined') {
12199
12199
  const lifecycleLogger = (event) => {
12200
- logger$19.debug('broadcast_channel_page_lifecycle', {
12200
+ logger$18.debug('broadcast_channel_page_lifecycle', {
12201
12201
  channel: this.channelName,
12202
12202
  connector_id: this.connectorId,
12203
12203
  event_type: event.type,
@@ -12213,7 +12213,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12213
12213
  document.addEventListener('resume', lifecycleLogger);
12214
12214
  }
12215
12215
  // Log initial state with detailed visibility info
12216
- logger$19.debug('broadcast_channel_initial_visibility', {
12216
+ logger$18.debug('broadcast_channel_initial_visibility', {
12217
12217
  channel: this.channelName,
12218
12218
  connector_id: this.connectorId,
12219
12219
  visibility: document.hidden ? 'hidden' : 'visible',
@@ -12245,14 +12245,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12245
12245
  }
12246
12246
  catch (error) {
12247
12247
  if (error instanceof QueueFullError) {
12248
- logger$19.warning('broadcast_channel_push_queue_full', {
12248
+ logger$18.warning('broadcast_channel_push_queue_full', {
12249
12249
  channel: this.channelName,
12250
12250
  inbox_capacity: this.inboxCapacity,
12251
12251
  inbox_remaining_capacity: this.inbox.remainingCapacity,
12252
12252
  });
12253
12253
  throw error;
12254
12254
  }
12255
- logger$19.error('broadcast_channel_push_failed', {
12255
+ logger$18.error('broadcast_channel_push_failed', {
12256
12256
  channel: this.channelName,
12257
12257
  error: error instanceof Error ? error.message : String(error),
12258
12258
  });
@@ -12262,7 +12262,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12262
12262
  async _transportSendBytes(data) {
12263
12263
  ensureBroadcastEnvironment();
12264
12264
  const targetNodeId = this.targetNodeId ?? '*';
12265
- logger$19.debug('broadcast_channel_message_sending', {
12265
+ logger$18.debug('broadcast_channel_message_sending', {
12266
12266
  channel: this.channelName,
12267
12267
  sender_id: this.connectorId,
12268
12268
  sender_node_id: this.localNodeId,
@@ -12283,7 +12283,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12283
12283
  return item;
12284
12284
  }
12285
12285
  async _transportClose(code, reason) {
12286
- logger$19.debug('broadcast_channel_transport_closing', {
12286
+ logger$18.debug('broadcast_channel_transport_closing', {
12287
12287
  channel: this.channelName,
12288
12288
  connector_id: this.connectorId,
12289
12289
  code,
@@ -12292,14 +12292,14 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12292
12292
  timestamp: new Date().toISOString(),
12293
12293
  });
12294
12294
  if (this.listenerRegistered) {
12295
- logger$19.debug('broadcast_channel_removing_listener', {
12295
+ logger$18.debug('broadcast_channel_removing_listener', {
12296
12296
  channel: this.channelName,
12297
12297
  connector_id: this.connectorId,
12298
12298
  timestamp: new Date().toISOString(),
12299
12299
  });
12300
12300
  this.channel.removeEventListener('message', this.onMsg);
12301
12301
  this.listenerRegistered = false;
12302
- logger$19.debug('broadcast_channel_listener_removed', {
12302
+ logger$18.debug('broadcast_channel_listener_removed', {
12303
12303
  channel: this.channelName,
12304
12304
  connector_id: this.connectorId,
12305
12305
  timestamp: new Date().toISOString(),
@@ -12312,13 +12312,13 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12312
12312
  this.visibilityChangeListenerRegistered = false;
12313
12313
  this.visibilityChangeHandler = undefined;
12314
12314
  }
12315
- logger$19.debug('broadcast_channel_closing', {
12315
+ logger$18.debug('broadcast_channel_closing', {
12316
12316
  channel: this.channelName,
12317
12317
  connector_id: this.connectorId,
12318
12318
  timestamp: new Date().toISOString(),
12319
12319
  });
12320
12320
  this.channel.close();
12321
- logger$19.debug('broadcast_channel_closed', {
12321
+ logger$18.debug('broadcast_channel_closed', {
12322
12322
  channel: this.channelName,
12323
12323
  connector_id: this.connectorId,
12324
12324
  timestamp: new Date().toISOString(),
@@ -12342,7 +12342,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12342
12342
  if (targetNodeId &&
12343
12343
  targetNodeId !== '*' &&
12344
12344
  targetNodeId !== this.localNodeId) {
12345
- logger$19.debug('broadcast_channel_message_rejected', {
12345
+ logger$18.debug('broadcast_channel_message_rejected', {
12346
12346
  channel: this.channelName,
12347
12347
  connector_id: this.connectorId,
12348
12348
  reason: 'wildcard_target_mismatch',
@@ -12358,7 +12358,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12358
12358
  if (expectedSender &&
12359
12359
  expectedSender !== '*' &&
12360
12360
  senderNodeId !== expectedSender) {
12361
- logger$19.debug('broadcast_channel_message_rejected', {
12361
+ logger$18.debug('broadcast_channel_message_rejected', {
12362
12362
  channel: this.channelName,
12363
12363
  connector_id: this.connectorId,
12364
12364
  reason: 'unexpected_sender',
@@ -12371,7 +12371,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12371
12371
  if (targetNodeId &&
12372
12372
  targetNodeId !== '*' &&
12373
12373
  targetNodeId !== this.localNodeId) {
12374
- logger$19.debug('broadcast_channel_message_rejected', {
12374
+ logger$18.debug('broadcast_channel_message_rejected', {
12375
12375
  channel: this.channelName,
12376
12376
  connector_id: this.connectorId,
12377
12377
  reason: 'unexpected_target',
@@ -12396,7 +12396,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12396
12396
  return 'unknown';
12397
12397
  }
12398
12398
  logInboxSnapshot(event, extra = {}) {
12399
- logger$19.debug(event, {
12399
+ logger$18.debug(event, {
12400
12400
  channel: this.channelName,
12401
12401
  connector_id: this.connectorId,
12402
12402
  connector_state: this.state,
@@ -12412,7 +12412,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12412
12412
  await super.start(inboundHandler);
12413
12413
  // After transitioning to STARTED, check if tab is already hidden
12414
12414
  if (typeof document !== 'undefined' && document.hidden) {
12415
- logger$19.debug('broadcast_channel_start_in_hidden_tab', {
12415
+ logger$18.debug('broadcast_channel_start_in_hidden_tab', {
12416
12416
  channel: this.channelName,
12417
12417
  connector_id: this.connectorId,
12418
12418
  document_hidden: document.hidden,
@@ -12422,7 +12422,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12422
12422
  });
12423
12423
  // Immediately pause if tab is hidden at start time
12424
12424
  await this.pause().catch((err) => {
12425
- logger$19.warning('broadcast_channel_initial_pause_failed', {
12425
+ logger$18.warning('broadcast_channel_initial_pause_failed', {
12426
12426
  channel: this.channelName,
12427
12427
  connector_id: this.connectorId,
12428
12428
  error: err instanceof Error ? err.message : String(err),
@@ -12440,7 +12440,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12440
12440
  return;
12441
12441
  }
12442
12442
  this.targetNodeId = normalized;
12443
- logger$19.debug('broadcast_channel_target_updated', {
12443
+ logger$18.debug('broadcast_channel_target_updated', {
12444
12444
  channel: this.channelName,
12445
12445
  connector_id: this.connectorId,
12446
12446
  local_node_id: this.localNodeId,
@@ -12450,7 +12450,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
12450
12450
  }
12451
12451
  setWildcardTarget() {
12452
12452
  this.targetNodeId = '*';
12453
- logger$19.debug('broadcast_channel_target_updated', {
12453
+ logger$18.debug('broadcast_channel_target_updated', {
12454
12454
  channel: this.channelName,
12455
12455
  connector_id: this.connectorId,
12456
12456
  local_node_id: this.localNodeId,
@@ -12578,7 +12578,7 @@ function broadcastChannelGrantToConnectorConfig(grant) {
12578
12578
  return config;
12579
12579
  }
12580
12580
 
12581
- const logger$18 = getLogger('naylence.fame.node.upstream_session_manager');
12581
+ const logger$17 = getLogger('naylence.fame.node.upstream_session_manager');
12582
12582
  function isPlainRecord$4(value) {
12583
12583
  if (typeof value !== 'object' || value === null) {
12584
12584
  return false;
@@ -12699,7 +12699,7 @@ class UpstreamSessionManager extends TaskSpawner {
12699
12699
  this.wrappedHandler = this.makeHeartbeatEnabledHandler(options.inboundHandler);
12700
12700
  // Store the connection retry policy (can be null, in which case default behavior applies)
12701
12701
  this.connectionRetryPolicy = options.retryPolicy ?? null;
12702
- logger$18.debug('created_upstream_session_manager', {
12702
+ logger$17.debug('created_upstream_session_manager', {
12703
12703
  target_system_id: this.targetSystemId,
12704
12704
  has_retry_policy: this.connectionRetryPolicy !== null,
12705
12705
  });
@@ -12708,23 +12708,23 @@ class UpstreamSessionManager extends TaskSpawner {
12708
12708
  return this.targetSystemId;
12709
12709
  }
12710
12710
  setupVisibilityListener() {
12711
- logger$18.debug('setup_visibility_listener_called', {
12711
+ logger$17.debug('setup_visibility_listener_called', {
12712
12712
  has_document: typeof document !== 'undefined',
12713
12713
  });
12714
12714
  if (typeof document !== 'undefined' && document.addEventListener) {
12715
12715
  this._visibilityHandler = () => {
12716
- logger$18.debug('visibility_change_event_fired', {
12716
+ logger$17.debug('visibility_change_event_fired', {
12717
12717
  state: document.visibilityState,
12718
12718
  });
12719
12719
  if (document.visibilityState === 'visible') {
12720
- logger$18.debug('visibility_change_detected_waking_up');
12720
+ logger$17.debug('visibility_change_detected_waking_up');
12721
12721
  this.wakeEvent.set();
12722
12722
  }
12723
12723
  };
12724
12724
  document.addEventListener('visibilitychange', this._visibilityHandler);
12725
12725
  }
12726
12726
  else {
12727
- logger$18.debug('setup_visibility_listener_skipped_no_document');
12727
+ logger$17.debug('setup_visibility_listener_skipped_no_document');
12728
12728
  }
12729
12729
  }
12730
12730
  teardownVisibilityListener() {
@@ -12757,13 +12757,13 @@ class UpstreamSessionManager extends TaskSpawner {
12757
12757
  }
12758
12758
  throw new FameConnectError('Upstream session manager failed to attach');
12759
12759
  }
12760
- logger$18.debug('upstream_session_manager_started');
12760
+ logger$17.debug('upstream_session_manager_started');
12761
12761
  }
12762
12762
  getActiveConnector() {
12763
12763
  return this.connector;
12764
12764
  }
12765
12765
  async stop() {
12766
- logger$18.debug('upstream_session_manager_stopping');
12766
+ logger$17.debug('upstream_session_manager_stopping');
12767
12767
  this.teardownVisibilityListener();
12768
12768
  this.stopEvent.set();
12769
12769
  this.currentStopSubtasks?.set();
@@ -12774,7 +12774,7 @@ class UpstreamSessionManager extends TaskSpawner {
12774
12774
  }
12775
12775
  catch (error) {
12776
12776
  if (!(error instanceof TaskCancelledError)) {
12777
- logger$18.debug('fsm_task_stopped_with_error', {
12777
+ logger$17.debug('fsm_task_stopped_with_error', {
12778
12778
  error: error.message,
12779
12779
  });
12780
12780
  }
@@ -12783,13 +12783,13 @@ class UpstreamSessionManager extends TaskSpawner {
12783
12783
  }
12784
12784
  if (this.connector) {
12785
12785
  await this.connector.stop().catch((error) => {
12786
- logger$18.debug('connector_stop_error', {
12786
+ logger$17.debug('connector_stop_error', {
12787
12787
  error: error.message,
12788
12788
  });
12789
12789
  });
12790
12790
  this.connector = null;
12791
12791
  }
12792
- logger$18.debug('upstream_session_manager_stopped');
12792
+ logger$17.debug('upstream_session_manager_stopped');
12793
12793
  }
12794
12794
  async send(envelope) {
12795
12795
  if (this.messageQueue.length >= UpstreamSessionManager.TX_QUEUE_MAX) {
@@ -12838,7 +12838,7 @@ class UpstreamSessionManager extends TaskSpawner {
12838
12838
  const shouldFailFast = this.shouldFailFastOnError(error);
12839
12839
  if (error instanceof FameTransportClose ||
12840
12840
  error instanceof FameConnectError) {
12841
- logger$18.warning('upstream_link_closed', {
12841
+ logger$17.warning('upstream_link_closed', {
12842
12842
  error: error.message,
12843
12843
  will_retry: !shouldFailFast,
12844
12844
  attempt: this.initialAttempts,
@@ -12851,13 +12851,13 @@ class UpstreamSessionManager extends TaskSpawner {
12851
12851
  else {
12852
12852
  const err = error;
12853
12853
  if (err.name === 'OAuth2PkceRedirectInitiatedError') {
12854
- logger$18.info('upstream_link_redirecting', {
12854
+ logger$17.info('upstream_link_redirecting', {
12855
12855
  error: err.message,
12856
12856
  will_retry: true,
12857
12857
  });
12858
12858
  }
12859
12859
  else {
12860
- logger$18.warning('upstream_link_closed', {
12860
+ logger$17.warning('upstream_link_closed', {
12861
12861
  error: err.message,
12862
12862
  will_retry: !shouldFailFast,
12863
12863
  attempt: this.initialAttempts,
@@ -12901,7 +12901,7 @@ class UpstreamSessionManager extends TaskSpawner {
12901
12901
  // If sleep was interrupted by visibility change (user returned to tab),
12902
12902
  // reset backoff to initial delay for immediate retry with fresh backoff
12903
12903
  if (wasWoken) {
12904
- logger$18.debug('backoff_reset_on_visibility_change', {
12904
+ logger$17.debug('backoff_reset_on_visibility_change', {
12905
12905
  previous_delay: delay,
12906
12906
  new_delay: UpstreamSessionManager.BACKOFF_INITIAL,
12907
12907
  });
@@ -12920,7 +12920,7 @@ class UpstreamSessionManager extends TaskSpawner {
12920
12920
  // Check if wake event is already set (e.g., visibility just changed)
12921
12921
  if (this.wakeEvent.isSet()) {
12922
12922
  this.wakeEvent.clear();
12923
- logger$18.debug('sleep_skipped_wake_event_pending');
12923
+ logger$17.debug('sleep_skipped_wake_event_pending');
12924
12924
  return true;
12925
12925
  }
12926
12926
  let timeout;
@@ -12937,7 +12937,7 @@ class UpstreamSessionManager extends TaskSpawner {
12937
12937
  ]);
12938
12938
  const wasWoken = this.wakeEvent.isSet();
12939
12939
  if (wasWoken) {
12940
- logger$18.debug('sleep_interrupted_by_wake_event');
12940
+ logger$17.debug('sleep_interrupted_by_wake_event');
12941
12941
  this.wakeEvent.clear();
12942
12942
  }
12943
12943
  if (timeout !== undefined) {
@@ -13000,7 +13000,7 @@ class UpstreamSessionManager extends TaskSpawner {
13000
13000
  await connector.start(this.wrappedHandler);
13001
13001
  this.connector = connector;
13002
13002
  const callbackGrants = this.node.gatherSupportedCallbackGrants();
13003
- logger$18.debug('callback_grants_before_augmentation', {
13003
+ logger$17.debug('callback_grants_before_augmentation', {
13004
13004
  count: callbackGrants.length,
13005
13005
  types: callbackGrants.map((g) => g.type),
13006
13006
  });
@@ -13010,7 +13010,7 @@ class UpstreamSessionManager extends TaskSpawner {
13010
13010
  const broadcastCallbackGrant = shouldAddBroadcastGrant
13011
13011
  ? this.createBroadcastCallbackGrant(grant)
13012
13012
  : null;
13013
- logger$18.debug('broadcast_callback_grant_check', {
13013
+ logger$17.debug('broadcast_callback_grant_check', {
13014
13014
  should_add: shouldAddBroadcastGrant,
13015
13015
  grant_created: !!broadcastCallbackGrant,
13016
13016
  });
@@ -13029,12 +13029,12 @@ class UpstreamSessionManager extends TaskSpawner {
13029
13029
  const isDuplicate = callbackGrants.some((existing) => JSON.stringify(existing) === JSON.stringify(grant));
13030
13030
  if (!isDuplicate) {
13031
13031
  callbackGrants.push(grant);
13032
- logger$18.debug('added_connection_grant_as_callback', {
13032
+ logger$17.debug('added_connection_grant_as_callback', {
13033
13033
  type: grant.type,
13034
13034
  });
13035
13035
  }
13036
13036
  else {
13037
- logger$18.debug('skipped_duplicate_connection_grant', {
13037
+ logger$17.debug('skipped_duplicate_connection_grant', {
13038
13038
  type: grant.type,
13039
13039
  });
13040
13040
  }
@@ -13046,12 +13046,12 @@ class UpstreamSessionManager extends TaskSpawner {
13046
13046
  if (broadcastCallbackGrant &&
13047
13047
  this.shouldAdvertiseBroadcastGrant(grant, callbackGrants)) {
13048
13048
  callbackGrants.push(broadcastCallbackGrant);
13049
- logger$18.debug('added_broadcast_callback_grant');
13049
+ logger$17.debug('added_broadcast_callback_grant');
13050
13050
  }
13051
13051
  else if (broadcastCallbackGrant) {
13052
- logger$18.debug('skipped_duplicate_broadcast_callback_grant');
13052
+ logger$17.debug('skipped_duplicate_broadcast_callback_grant');
13053
13053
  }
13054
- logger$18.debug('callback_grants_after_augmentation', {
13054
+ logger$17.debug('callback_grants_after_augmentation', {
13055
13055
  count: callbackGrants.length,
13056
13056
  types: callbackGrants.map((g) => g.type),
13057
13057
  });
@@ -13064,7 +13064,7 @@ class UpstreamSessionManager extends TaskSpawner {
13064
13064
  targetAware.setTargetNodeId(this.targetSystemId);
13065
13065
  }
13066
13066
  catch (error) {
13067
- logger$18.warning('broadcast_channel_target_apply_failed', {
13067
+ logger$17.warning('broadcast_channel_target_apply_failed', {
13068
13068
  error: error instanceof Error ? error.message : String(error),
13069
13069
  target_node_id: this.targetSystemId,
13070
13070
  });
@@ -13086,14 +13086,14 @@ class UpstreamSessionManager extends TaskSpawner {
13086
13086
  });
13087
13087
  }
13088
13088
  else {
13089
- logger$18.warning('parent_epoch_changed', { epoch });
13089
+ logger$17.warning('parent_epoch_changed', { epoch });
13090
13090
  }
13091
13091
  }
13092
13092
  if (!this.readyEvent.isSet()) {
13093
13093
  this.readyEvent.set();
13094
13094
  }
13095
13095
  if (this.messageQueue.length > 0) {
13096
- logger$18.debug('flushing_buffered_frames', {
13096
+ logger$17.debug('flushing_buffered_frames', {
13097
13097
  queue_size: this.messageQueue.length,
13098
13098
  });
13099
13099
  this.queueEvent.set();
@@ -13110,12 +13110,12 @@ class UpstreamSessionManager extends TaskSpawner {
13110
13110
  name: `expiry-guard-${this.connectEpoch}`,
13111
13111
  });
13112
13112
  if (this.hadSuccessfulAttach) {
13113
- logger$18.debug('reconnected_to_upstream', {
13113
+ logger$17.debug('reconnected_to_upstream', {
13114
13114
  attach_expires_at: attachInfo.attachExpiresAt?.toISOString?.() ?? null,
13115
13115
  });
13116
13116
  }
13117
13117
  else {
13118
- logger$18.debug('connected_to_upstream', {
13118
+ logger$17.debug('connected_to_upstream', {
13119
13119
  attach_expires_at: attachInfo.attachExpiresAt?.toISOString?.() ?? null,
13120
13120
  });
13121
13121
  }
@@ -13133,18 +13133,18 @@ class UpstreamSessionManager extends TaskSpawner {
13133
13133
  this.currentStopSubtasks = null;
13134
13134
  await Promise.allSettled(tasks.map((task) => task.promise));
13135
13135
  if (this.connector) {
13136
- logger$18.debug('upstream_stopping_old_connector', {
13136
+ logger$17.debug('upstream_stopping_old_connector', {
13137
13137
  connect_epoch: this.connectEpoch,
13138
13138
  target_system_id: this.targetSystemId,
13139
13139
  timestamp: new Date().toISOString(),
13140
13140
  });
13141
13141
  await this.connector.stop().catch((err) => {
13142
- logger$18.warning('upstream_connector_stop_error', {
13142
+ logger$17.warning('upstream_connector_stop_error', {
13143
13143
  connect_epoch: this.connectEpoch,
13144
13144
  error: err instanceof Error ? err.message : String(err),
13145
13145
  });
13146
13146
  });
13147
- logger$18.debug('upstream_old_connector_stopped', {
13147
+ logger$17.debug('upstream_old_connector_stopped', {
13148
13148
  connect_epoch: this.connectEpoch,
13149
13149
  target_system_id: this.targetSystemId,
13150
13150
  timestamp: new Date().toISOString(),
@@ -13197,7 +13197,7 @@ class UpstreamSessionManager extends TaskSpawner {
13197
13197
  });
13198
13198
  }
13199
13199
  catch (error) {
13200
- logger$18.debug('broadcast_callback_grant_generation_failed', {
13200
+ logger$17.debug('broadcast_callback_grant_generation_failed', {
13201
13201
  error: error instanceof Error ? error.message : String(error),
13202
13202
  });
13203
13203
  return null;
@@ -13252,7 +13252,7 @@ class UpstreamSessionManager extends TaskSpawner {
13252
13252
  }
13253
13253
  }
13254
13254
  async heartbeatLoop(connector, stopEvt, signal) {
13255
- logger$18.debug('starting_heartbeat_loop');
13255
+ logger$17.debug('starting_heartbeat_loop');
13256
13256
  const intervalMs = UpstreamSessionManager.HEARTBEAT_INTERVAL * 1000;
13257
13257
  const graceMs = intervalMs * UpstreamSessionManager.HEARTBEAT_GRACE;
13258
13258
  this.lastHeartbeatAckTime = Date.now();
@@ -13288,7 +13288,7 @@ class UpstreamSessionManager extends TaskSpawner {
13288
13288
  // Skip heartbeat if connector is paused (e.g., tab is hidden)
13289
13289
  // Keep ack time current so we don't timeout immediately after resuming
13290
13290
  if (currentState === core.ConnectorState.PAUSED) {
13291
- logger$18.debug('skipping_heartbeat_connector_paused', {
13291
+ logger$17.debug('skipping_heartbeat_connector_paused', {
13292
13292
  connector_state: currentState,
13293
13293
  });
13294
13294
  this.lastHeartbeatAckTime = Date.now();
@@ -13297,14 +13297,14 @@ class UpstreamSessionManager extends TaskSpawner {
13297
13297
  // Reset ack time if just resumed from pause (prevents immediate timeout)
13298
13298
  if (previousState === core.ConnectorState.PAUSED &&
13299
13299
  currentState === core.ConnectorState.STARTED) {
13300
- logger$18.debug('connector_just_resumed_resetting_ack_time', {
13300
+ logger$17.debug('connector_just_resumed_resetting_ack_time', {
13301
13301
  previous_state: previousState,
13302
13302
  current_state: currentState,
13303
13303
  });
13304
13304
  this.lastHeartbeatAckTime = Date.now();
13305
13305
  }
13306
13306
  const envelope = await this.makeHeartbeatEnvelope();
13307
- logger$18.debug('sending_heartbeat', {
13307
+ logger$17.debug('sending_heartbeat', {
13308
13308
  hb_corr_id: envelope.corrId,
13309
13309
  hb_env_id: envelope.id,
13310
13310
  });
@@ -13330,7 +13330,7 @@ class UpstreamSessionManager extends TaskSpawner {
13330
13330
  throw new FameConnectError('missed heartbeat acknowledgement');
13331
13331
  }
13332
13332
  }
13333
- logger$18.debug('completed_heartbeat_loop');
13333
+ logger$17.debug('completed_heartbeat_loop');
13334
13334
  }
13335
13335
  async messagePumpLoop(connector, stopEvt, signal) {
13336
13336
  while (!stopEvt.isSet() && !signal?.aborted) {
@@ -13347,19 +13347,19 @@ class UpstreamSessionManager extends TaskSpawner {
13347
13347
  if (!envelope) {
13348
13348
  continue;
13349
13349
  }
13350
- logger$18.debug('upstream_pump_sending_envelope', {
13350
+ logger$17.debug('upstream_pump_sending_envelope', {
13351
13351
  envelopeId: envelope.id,
13352
13352
  type: envelope.frame?.type,
13353
13353
  });
13354
13354
  try {
13355
13355
  await connector.send(envelope);
13356
- logger$18.debug('upstream_pump_sent_envelope', {
13356
+ logger$17.debug('upstream_pump_sent_envelope', {
13357
13357
  envelopeId: envelope.id,
13358
13358
  });
13359
13359
  }
13360
13360
  catch (error) {
13361
13361
  if (error instanceof FameMessageTooLarge) {
13362
- logger$18.error('failed_to_send_message', { error: error.message });
13362
+ logger$17.error('failed_to_send_message', { error: error.message });
13363
13363
  await this.handleMessageTooLarge(envelope, error.message);
13364
13364
  }
13365
13365
  else if (error instanceof FameTransportClose) {
@@ -13421,7 +13421,7 @@ class UpstreamSessionManager extends TaskSpawner {
13421
13421
  await fabric.send(ackEnvelope);
13422
13422
  }
13423
13423
  catch (error) {
13424
- logger$18.warning('failed_to_send_nack', {
13424
+ logger$17.warning('failed_to_send_nack', {
13425
13425
  error: error.message,
13426
13426
  });
13427
13427
  }
@@ -13435,7 +13435,7 @@ class UpstreamSessionManager extends TaskSpawner {
13435
13435
  timestamps.push(info.attachExpiresAt);
13436
13436
  }
13437
13437
  if (!timestamps.length) {
13438
- logger$18.debug('no_ttl_expiry_configured');
13438
+ logger$17.debug('no_ttl_expiry_configured');
13439
13439
  await this.waitEvent(stopEvt, signal);
13440
13440
  return;
13441
13441
  }
@@ -13444,7 +13444,7 @@ class UpstreamSessionManager extends TaskSpawner {
13444
13444
  let delaySeconds = (earliest.getTime() - now.getTime()) / 1000 -
13445
13445
  UpstreamSessionManager.JWT_REFRESH_SAFETY;
13446
13446
  delaySeconds = Math.max(delaySeconds, UpstreamSessionManager.JWT_REFRESH_SAFETY);
13447
- logger$18.debug('ttl_expiry_guard_started', {
13447
+ logger$17.debug('ttl_expiry_guard_started', {
13448
13448
  welcome_expires_at: welcome.frame.expiresAt ?? null,
13449
13449
  attach_expires_at: info.attachExpiresAt?.toISOString?.() ?? null,
13450
13450
  earliest_expiry: earliest.toISOString(),
@@ -13472,7 +13472,7 @@ class UpstreamSessionManager extends TaskSpawner {
13472
13472
  }
13473
13473
  }
13474
13474
  if (!stopEvt.isSet()) {
13475
- logger$18.debug('ttl_expiry_triggered_reconnect', {
13475
+ logger$17.debug('ttl_expiry_triggered_reconnect', {
13476
13476
  expires_at: earliest.toISOString(),
13477
13477
  current_time: new Date().toISOString(),
13478
13478
  seconds_before_expiry: UpstreamSessionManager.JWT_REFRESH_SAFETY,
@@ -13517,7 +13517,7 @@ class UpstreamSessionManager extends TaskSpawner {
13517
13517
  }
13518
13518
  await this.node.dispatchEnvelopeEvent('onEnvelopeReceived', this.node, env, context);
13519
13519
  if (env.frame.type === 'NodeHeartbeatAck') {
13520
- logger$18.debug('received_heartbeat_ack', {
13520
+ logger$17.debug('received_heartbeat_ack', {
13521
13521
  hb_ack_env_id: env.id,
13522
13522
  hb_ack_corr_id: env.corrId,
13523
13523
  hb_routing_epoch: env.frame.routingEpoch,
@@ -13531,7 +13531,7 @@ class UpstreamSessionManager extends TaskSpawner {
13531
13531
  await this.onEpochChange(epoch);
13532
13532
  }
13533
13533
  else {
13534
- logger$18.warning('parent_epoch_changed', { epoch });
13534
+ logger$17.warning('parent_epoch_changed', { epoch });
13535
13535
  }
13536
13536
  }
13537
13537
  return;
@@ -13550,7 +13550,7 @@ UpstreamSessionManager.TX_QUEUE_MAX = 512;
13550
13550
  UpstreamSessionManager.BACKOFF_INITIAL = 1; // seconds
13551
13551
  UpstreamSessionManager.BACKOFF_CAP = 30; // seconds
13552
13552
 
13553
- const logger$17 = getLogger('naylence.fame.node.admission.noop_admission_client');
13553
+ const logger$16 = getLogger('naylence.fame.node.admission.noop_admission_client');
13554
13554
  class NoopAdmissionClient {
13555
13555
  constructor(options = {}) {
13556
13556
  this.hasUpstream = false;
@@ -13564,7 +13564,7 @@ class NoopAdmissionClient {
13564
13564
  const acceptedLogicals = this.autoAcceptLogicals
13565
13565
  ? [...(requestedLogicals ?? [])]
13566
13566
  : [];
13567
- logger$17.debug('noop_admission_hello', {
13567
+ logger$16.debug('noop_admission_hello', {
13568
13568
  systemId: effectiveSystemId,
13569
13569
  instanceId,
13570
13570
  requestedLogicals,
@@ -13582,7 +13582,7 @@ class NoopAdmissionClient {
13582
13582
  });
13583
13583
  }
13584
13584
  async close() {
13585
- logger$17.debug('noop_admission_close');
13585
+ logger$16.debug('noop_admission_close');
13586
13586
  }
13587
13587
  }
13588
13588
 
@@ -13788,7 +13788,7 @@ class DefaultServiceManager {
13788
13788
  }
13789
13789
 
13790
13790
  const SYSTEM_INBOX$1 = '__sys__';
13791
- const logger$16 = getLogger('naylence.fame.node.node');
13791
+ const logger$15 = getLogger('naylence.fame.node.node');
13792
13792
  function isSnakeCase(name) {
13793
13793
  return name.includes('_');
13794
13794
  }
@@ -14058,7 +14058,7 @@ class FameNode extends TaskSpawner {
14058
14058
  confirmIdentity(systemId, source) {
14059
14059
  if (this._confirmedId) {
14060
14060
  if (this._confirmedId !== systemId) {
14061
- logger$16.error('node_identity_mismatch', {
14061
+ logger$15.error('node_identity_mismatch', {
14062
14062
  current_id: this._confirmedId,
14063
14063
  new_id: systemId,
14064
14064
  source,
@@ -14070,14 +14070,14 @@ class FameNode extends TaskSpawner {
14070
14070
  const isReassignment = this._provisionalId !== systemId;
14071
14071
  this._confirmedId = systemId;
14072
14072
  if (isReassignment) {
14073
- logger$16.debug('node_identity_reassigned', {
14073
+ logger$15.debug('node_identity_reassigned', {
14074
14074
  system_id: systemId,
14075
14075
  previous_id: this._provisionalId,
14076
14076
  source,
14077
14077
  });
14078
14078
  }
14079
14079
  else {
14080
- logger$16.debug('node_identity_confirmed', {
14080
+ logger$15.debug('node_identity_confirmed', {
14081
14081
  system_id: systemId,
14082
14082
  source,
14083
14083
  });
@@ -14145,7 +14145,7 @@ class FameNode extends TaskSpawner {
14145
14145
  return;
14146
14146
  }
14147
14147
  if (frameType === 'NodeHeartbeat') {
14148
- logger$16.debug('received_heartbeat_frame', {
14148
+ logger$15.debug('received_heartbeat_frame', {
14149
14149
  envelopeId: envelope.id,
14150
14150
  corrId: envelope.corrId ?? null,
14151
14151
  });
@@ -14157,7 +14157,7 @@ class FameNode extends TaskSpawner {
14157
14157
  await this.handleDeliveryAck(envelope, context);
14158
14158
  return;
14159
14159
  }
14160
- logger$16.debug('unhandled_system_frame', {
14160
+ logger$15.debug('unhandled_system_frame', {
14161
14161
  envelopeId: envelope.id,
14162
14162
  frameType,
14163
14163
  });
@@ -14169,13 +14169,13 @@ class FameNode extends TaskSpawner {
14169
14169
  }
14170
14170
  await this._deliveryTracker.onEnvelopeDelivered(SYSTEM_INBOX$1, envelope, context);
14171
14171
  if (frame.ok !== false) {
14172
- logger$16.debug('delivery_ack_received', {
14172
+ logger$15.debug('delivery_ack_received', {
14173
14173
  envelopeId: envelope.id,
14174
14174
  corrId: envelope.corrId ?? null,
14175
14175
  });
14176
14176
  return;
14177
14177
  }
14178
- logger$16.warning('delivery_nack_received', {
14178
+ logger$15.warning('delivery_nack_received', {
14179
14179
  envelopeId: envelope.id,
14180
14180
  corrId: envelope.corrId ?? null,
14181
14181
  code: frame.code ?? null,
@@ -14185,7 +14185,7 @@ class FameNode extends TaskSpawner {
14185
14185
  await this.onDeliveryNack(frame, envelope, context);
14186
14186
  }
14187
14187
  async onDeliveryNack(frame, envelope, _context) {
14188
- logger$16.debug('delivery_nack_processed', {
14188
+ logger$15.debug('delivery_nack_processed', {
14189
14189
  envelopeId: envelope.id,
14190
14190
  code: frame.code ?? null,
14191
14191
  reason: frame.reason ?? null,
@@ -14300,7 +14300,7 @@ class FameNode extends TaskSpawner {
14300
14300
  await this._bindingManager.restore();
14301
14301
  await this._envelopeListenerManager.start();
14302
14302
  this._isStarted = true;
14303
- logger$16.debug('node_started', {
14303
+ logger$15.debug('node_started', {
14304
14304
  node_id: this.id,
14305
14305
  sid: this.sid,
14306
14306
  path: this.physicalPath,
@@ -14332,7 +14332,7 @@ class FameNode extends TaskSpawner {
14332
14332
  await this._serviceManager.stop();
14333
14333
  await this.dispatchEvent('onNodeStopped', this);
14334
14334
  this._isStarted = false;
14335
- logger$16.debug('node_stopped', {
14335
+ logger$15.debug('node_stopped', {
14336
14336
  node_id: this.id,
14337
14337
  });
14338
14338
  }
@@ -14522,20 +14522,20 @@ class FameNode extends TaskSpawner {
14522
14522
  await this.forwardUpstream(processedEnvelope, context);
14523
14523
  }
14524
14524
  else {
14525
- logger$16.error('attempted_upstream_loop', {
14525
+ logger$15.error('attempted_upstream_loop', {
14526
14526
  envelopeId: processedEnvelope.id,
14527
14527
  });
14528
14528
  }
14529
14529
  return;
14530
14530
  }
14531
14531
  if (!processedEnvelope.to) {
14532
- logger$16.error('dropping_envelope_without_destination', {
14532
+ logger$15.error('dropping_envelope_without_destination', {
14533
14533
  envelopeId: processedEnvelope.id,
14534
14534
  capabilities: processedEnvelope.capabilities ?? [],
14535
14535
  });
14536
14536
  return;
14537
14537
  }
14538
- logger$16.warning('no_local_handler_for_address', {
14538
+ logger$15.warning('no_local_handler_for_address', {
14539
14539
  address: processedEnvelope.to.toString?.() ?? String(processedEnvelope.to),
14540
14540
  originType: context?.originType ?? null,
14541
14541
  });
@@ -14659,7 +14659,7 @@ class FameNode extends TaskSpawner {
14659
14659
  }
14660
14660
  }
14661
14661
  catch (error) {
14662
- logger$16.warning('callback_grant_collection_failed', {
14662
+ logger$15.warning('callback_grant_collection_failed', {
14663
14663
  error: error instanceof Error ? error.message : String(error),
14664
14664
  });
14665
14665
  }
@@ -14722,7 +14722,7 @@ class FameNode extends TaskSpawner {
14722
14722
  await store.set('self', record);
14723
14723
  }
14724
14724
  catch (error) {
14725
- logger$16.warning('node_meta_persist_failed', {
14725
+ logger$15.warning('node_meta_persist_failed', {
14726
14726
  error: error instanceof Error ? error.message : String(error),
14727
14727
  });
14728
14728
  }
@@ -14860,44 +14860,12 @@ class ConnectionRetryPolicyFactory extends factory.AbstractResourceFactory {
14860
14860
  }
14861
14861
  }
14862
14862
 
14863
- const TOKEN_PROVIDER_FACTORY_BASE_TYPE = 'TokenProviderFactory';
14864
- class TokenProviderFactory extends factory.AbstractResourceFactory {
14865
- static async createTokenProvider(config, options = {}) {
14866
- if (config) {
14867
- const provider = await factory.createResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, config, options);
14868
- if (!provider) {
14869
- throw new Error('Failed to create token provider from configuration');
14870
- }
14871
- return provider;
14872
- }
14873
- let provider = null;
14874
- try {
14875
- provider = await factory.createDefaultResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, null, options);
14876
- }
14877
- catch (error) {
14878
- const message = 'Failed to create default token provider' +
14879
- (error instanceof Error && error.message ? `: ${error.message}` : '');
14880
- throw new Error(message);
14881
- }
14882
- if (!provider) {
14883
- throw new Error('Failed to create default token provider');
14884
- }
14885
- return provider;
14886
- }
14887
- }
14888
-
14889
- function isTokenProvider(candidate) {
14890
- return (typeof candidate === 'object' &&
14891
- candidate !== null &&
14892
- typeof candidate.getToken === 'function');
14893
- }
14894
- function isIdentityExposingTokenProvider(candidate) {
14895
- return (isTokenProvider(candidate) &&
14896
- typeof candidate.getIdentity ===
14897
- 'function');
14898
- }
14899
-
14900
- const logger$15 = getLogger('naylence.fame.node.default_node_identity_policy');
14863
+ /**
14864
+ * Default node identity policy that preserves the current node ID.
14865
+ *
14866
+ * This policy does NOT derive identity from tokens or grants.
14867
+ * For token-subject-based identity, use TokenSubjectNodeIdentityPolicy.
14868
+ */
14901
14869
  class DefaultNodeIdentityPolicy {
14902
14870
  async resolveInitialNodeId(context) {
14903
14871
  if (context.configuredId) {
@@ -14909,44 +14877,10 @@ class DefaultNodeIdentityPolicy {
14909
14877
  return await core.generateIdAsync({ mode: 'fingerprint' });
14910
14878
  }
14911
14879
  async resolveAdmissionNodeId(context) {
14912
- // Try to extract identity from grants first
14913
- if (context.grants && context.grants.length > 0) {
14914
- for (const grant of context.grants) {
14915
- try {
14916
- const auth = grant.auth;
14917
- if (!auth) {
14918
- continue;
14919
- }
14920
- const tokenProviderConfig = (auth.tokenProvider ??
14921
- auth.token_provider);
14922
- if (!tokenProviderConfig ||
14923
- typeof tokenProviderConfig.type !== 'string') {
14924
- continue;
14925
- }
14926
- const provider = await TokenProviderFactory.createTokenProvider(tokenProviderConfig);
14927
- if (isIdentityExposingTokenProvider(provider)) {
14928
- const identity = await provider.getIdentity();
14929
- if (identity && identity.subject) {
14930
- logger$15.debug('identity_extracted_from_grant', {
14931
- identity_id: identity.subject,
14932
- grant_type: grant.type,
14933
- });
14934
- return identity.subject;
14935
- }
14936
- }
14937
- }
14938
- catch (error) {
14939
- logger$15.warning('identity_extraction_failed', {
14940
- error: error instanceof Error ? error.message : String(error),
14941
- grant_type: grant.type,
14942
- });
14943
- }
14944
- }
14945
- }
14946
- if (!context.currentNodeId) {
14947
- return await core.generateIdAsync({ mode: 'fingerprint' });
14880
+ if (context.currentNodeId) {
14881
+ return context.currentNodeId;
14948
14882
  }
14949
- return context.currentNodeId;
14883
+ return await core.generateIdAsync({ mode: 'fingerprint' });
14950
14884
  }
14951
14885
  }
14952
14886
 
@@ -17718,6 +17652,43 @@ var defaultNodeIdentityPolicyFactory = /*#__PURE__*/Object.freeze({
17718
17652
  default: DefaultNodeIdentityPolicyFactory
17719
17653
  });
17720
17654
 
17655
+ const TOKEN_PROVIDER_FACTORY_BASE_TYPE = 'TokenProviderFactory';
17656
+ class TokenProviderFactory extends factory.AbstractResourceFactory {
17657
+ static async createTokenProvider(config, options = {}) {
17658
+ if (config) {
17659
+ const provider = await factory.createResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, config, options);
17660
+ if (!provider) {
17661
+ throw new Error('Failed to create token provider from configuration');
17662
+ }
17663
+ return provider;
17664
+ }
17665
+ let provider = null;
17666
+ try {
17667
+ provider = await factory.createDefaultResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, null, options);
17668
+ }
17669
+ catch (error) {
17670
+ const message = 'Failed to create default token provider' +
17671
+ (error instanceof Error && error.message ? `: ${error.message}` : '');
17672
+ throw new Error(message);
17673
+ }
17674
+ if (!provider) {
17675
+ throw new Error('Failed to create default token provider');
17676
+ }
17677
+ return provider;
17678
+ }
17679
+ }
17680
+
17681
+ function isTokenProvider(candidate) {
17682
+ return (typeof candidate === 'object' &&
17683
+ candidate !== null &&
17684
+ typeof candidate.getToken === 'function');
17685
+ }
17686
+ function isIdentityExposingTokenProvider(candidate) {
17687
+ return (isTokenProvider(candidate) &&
17688
+ typeof candidate.getIdentity ===
17689
+ 'function');
17690
+ }
17691
+
17721
17692
  const logger$10 = getLogger('naylence.fame.node.token_subject_node_identity_policy');
17722
17693
  class TokenSubjectNodeIdentityPolicy {
17723
17694
  async resolveInitialNodeId(context) {