@naylence/runtime 0.4.0 → 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.
@@ -13,12 +13,12 @@ import fastify from 'fastify';
13
13
  import websocketPlugin from '@fastify/websocket';
14
14
 
15
15
  // This file is auto-generated during build - do not edit manually
16
- // Generated from package.json version: 0.4.0
16
+ // Generated from package.json version: 0.4.2
17
17
  /**
18
18
  * The package version, injected at build time.
19
19
  * @internal
20
20
  */
21
- const VERSION = '0.4.0';
21
+ const VERSION = '0.4.2';
22
22
 
23
23
  /**
24
24
  * Fame protocol specific error classes with WebSocket close codes and proper inheritance.
@@ -3195,7 +3195,7 @@ class EnvCredentialProviderFactory extends CredentialProviderFactory {
3195
3195
  return new EnvCredentialProvider(resolved.varName);
3196
3196
  }
3197
3197
  }
3198
- const FACTORY_META$1f = {
3198
+ const FACTORY_META$1g = {
3199
3199
  base: CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE,
3200
3200
  key: 'EnvCredentialProvider',
3201
3201
  };
@@ -3203,7 +3203,7 @@ const FACTORY_META$1f = {
3203
3203
  var envCredentialProviderFactory = /*#__PURE__*/Object.freeze({
3204
3204
  __proto__: null,
3205
3205
  EnvCredentialProviderFactory: EnvCredentialProviderFactory,
3206
- FACTORY_META: FACTORY_META$1f,
3206
+ FACTORY_META: FACTORY_META$1g,
3207
3207
  default: EnvCredentialProviderFactory,
3208
3208
  normalizeEnvConfig: normalizeEnvConfig
3209
3209
  });
@@ -3301,14 +3301,14 @@ class PromptCredentialProviderFactory extends CredentialProviderFactory {
3301
3301
  return new PromptCredentialProvider(resolved.credentialName);
3302
3302
  }
3303
3303
  }
3304
- const FACTORY_META$1e = {
3304
+ const FACTORY_META$1f = {
3305
3305
  base: CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE,
3306
3306
  key: 'PromptCredentialProvider',
3307
3307
  };
3308
3308
 
3309
3309
  var promptCredentialProviderFactory = /*#__PURE__*/Object.freeze({
3310
3310
  __proto__: null,
3311
- FACTORY_META: FACTORY_META$1e,
3311
+ FACTORY_META: FACTORY_META$1f,
3312
3312
  PromptCredentialProviderFactory: PromptCredentialProviderFactory,
3313
3313
  default: PromptCredentialProviderFactory,
3314
3314
  normalizePromptConfig: normalizePromptConfig
@@ -3362,14 +3362,14 @@ class SecretStoreCredentialProviderFactory extends CredentialProviderFactory {
3362
3362
  return new SecretStoreCredentialProvider(resolved.secretName);
3363
3363
  }
3364
3364
  }
3365
- const FACTORY_META$1d = {
3365
+ const FACTORY_META$1e = {
3366
3366
  base: CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE,
3367
3367
  key: 'SecretStoreCredentialProvider',
3368
3368
  };
3369
3369
 
3370
3370
  var secretStoreCredentialProviderFactory = /*#__PURE__*/Object.freeze({
3371
3371
  __proto__: null,
3372
- FACTORY_META: FACTORY_META$1d,
3372
+ FACTORY_META: FACTORY_META$1e,
3373
3373
  SecretStoreCredentialProviderFactory: SecretStoreCredentialProviderFactory,
3374
3374
  default: SecretStoreCredentialProviderFactory,
3375
3375
  normalizeSecretStoreConfig: normalizeSecretStoreConfig
@@ -3418,14 +3418,14 @@ class StaticCredentialProviderFactory extends CredentialProviderFactory {
3418
3418
  return new StaticCredentialProvider(resolved.credentialValue);
3419
3419
  }
3420
3420
  }
3421
- const FACTORY_META$1c = {
3421
+ const FACTORY_META$1d = {
3422
3422
  base: CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE,
3423
3423
  key: 'StaticCredentialProvider',
3424
3424
  };
3425
3425
 
3426
3426
  var staticCredentialProviderFactory = /*#__PURE__*/Object.freeze({
3427
3427
  __proto__: null,
3428
- FACTORY_META: FACTORY_META$1c,
3428
+ FACTORY_META: FACTORY_META$1d,
3429
3429
  StaticCredentialProviderFactory: StaticCredentialProviderFactory,
3430
3430
  default: StaticCredentialProviderFactory,
3431
3431
  normalizeStaticConfig: normalizeStaticConfig
@@ -3669,7 +3669,7 @@ const BASE_PROFILE_MAP = {
3669
3669
  [PROFILE_NAME_INDEXEDDB]: INDEXEDDB_PROFILE_CONFIG,
3670
3670
  };
3671
3671
  // Extended profile map - can be augmented by Node.js environment
3672
- const PROFILE_MAP$6 = {
3672
+ const PROFILE_MAP$7 = {
3673
3673
  ...BASE_PROFILE_MAP,
3674
3674
  };
3675
3675
  class StorageProfileFactory extends StorageProviderFactory {
@@ -3684,9 +3684,9 @@ class StorageProfileFactory extends StorageProviderFactory {
3684
3684
  type: 'StorageProfile',
3685
3685
  });
3686
3686
  const profileName = (parsed.profile ?? PROFILE_NAME_MEMORY).toLowerCase();
3687
- const profileConfig = PROFILE_MAP$6[profileName];
3687
+ const profileConfig = PROFILE_MAP$7[profileName];
3688
3688
  if (!profileConfig) {
3689
- throw new Error(`Unknown storage profile '${profileName}'. Supported profiles: ${Object.keys(PROFILE_MAP$6).join(', ')}`);
3689
+ throw new Error(`Unknown storage profile '${profileName}'. Supported profiles: ${Object.keys(PROFILE_MAP$7).join(', ')}`);
3690
3690
  }
3691
3691
  const createOptions = {
3692
3692
  ...options,
@@ -12714,44 +12714,12 @@ class ConnectionRetryPolicyFactory extends AbstractResourceFactory {
12714
12714
  }
12715
12715
  }
12716
12716
 
12717
- const TOKEN_PROVIDER_FACTORY_BASE_TYPE = 'TokenProviderFactory';
12718
- class TokenProviderFactory extends AbstractResourceFactory {
12719
- static async createTokenProvider(config, options = {}) {
12720
- if (config) {
12721
- const provider = await createResource$1(TOKEN_PROVIDER_FACTORY_BASE_TYPE, config, options);
12722
- if (!provider) {
12723
- throw new Error('Failed to create token provider from configuration');
12724
- }
12725
- return provider;
12726
- }
12727
- let provider = null;
12728
- try {
12729
- provider = await createDefaultResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, null, options);
12730
- }
12731
- catch (error) {
12732
- const message = 'Failed to create default token provider' +
12733
- (error instanceof Error && error.message ? `: ${error.message}` : '');
12734
- throw new Error(message);
12735
- }
12736
- if (!provider) {
12737
- throw new Error('Failed to create default token provider');
12738
- }
12739
- return provider;
12740
- }
12741
- }
12742
-
12743
- function isTokenProvider(candidate) {
12744
- return (typeof candidate === 'object' &&
12745
- candidate !== null &&
12746
- typeof candidate.getToken === 'function');
12747
- }
12748
- function isIdentityExposingTokenProvider(candidate) {
12749
- return (isTokenProvider(candidate) &&
12750
- typeof candidate.getIdentity ===
12751
- 'function');
12752
- }
12753
-
12754
- const logger$12 = getLogger('naylence.fame.node.default_node_identity_policy');
12717
+ /**
12718
+ * Default node identity policy that preserves the current node ID.
12719
+ *
12720
+ * This policy does NOT derive identity from tokens or grants.
12721
+ * For token-subject-based identity, use TokenSubjectNodeIdentityPolicy.
12722
+ */
12755
12723
  class DefaultNodeIdentityPolicy {
12756
12724
  async resolveInitialNodeId(context) {
12757
12725
  if (context.configuredId) {
@@ -12763,44 +12731,10 @@ class DefaultNodeIdentityPolicy {
12763
12731
  return await generateIdAsync({ mode: 'fingerprint' });
12764
12732
  }
12765
12733
  async resolveAdmissionNodeId(context) {
12766
- // Try to extract identity from grants first
12767
- if (context.grants && context.grants.length > 0) {
12768
- for (const grant of context.grants) {
12769
- try {
12770
- const auth = grant.auth;
12771
- if (!auth) {
12772
- continue;
12773
- }
12774
- const tokenProviderConfig = (auth.tokenProvider ??
12775
- auth.token_provider);
12776
- if (!tokenProviderConfig ||
12777
- typeof tokenProviderConfig.type !== 'string') {
12778
- continue;
12779
- }
12780
- const provider = await TokenProviderFactory.createTokenProvider(tokenProviderConfig);
12781
- if (isIdentityExposingTokenProvider(provider)) {
12782
- const identity = await provider.getIdentity();
12783
- if (identity && identity.subject) {
12784
- logger$12.debug('identity_extracted_from_grant', {
12785
- identity_id: identity.subject,
12786
- grant_type: grant.type,
12787
- });
12788
- return identity.subject;
12789
- }
12790
- }
12791
- }
12792
- catch (error) {
12793
- logger$12.warning('identity_extraction_failed', {
12794
- error: error instanceof Error ? error.message : String(error),
12795
- grant_type: grant.type,
12796
- });
12797
- }
12798
- }
12734
+ if (context.currentNodeId) {
12735
+ return context.currentNodeId;
12799
12736
  }
12800
- if (!context.currentNodeId) {
12801
- return await generateIdAsync({ mode: 'fingerprint' });
12802
- }
12803
- return context.currentNodeId;
12737
+ return await generateIdAsync({ mode: 'fingerprint' });
12804
12738
  }
12805
12739
  }
12806
12740
 
@@ -12874,7 +12808,7 @@ class AttachmentKeyValidator {
12874
12808
  }
12875
12809
  }
12876
12810
 
12877
- const logger$11 = getLogger('naylence.fame.node.admission.default_node_attach_client');
12811
+ const logger$12 = getLogger('naylence.fame.node.admission.default_node_attach_client');
12878
12812
  const HANDSHAKE_POLL_INTERVAL_MS = 20;
12879
12813
  class DefaultNodeAttachClient {
12880
12814
  constructor(options = {}) {
@@ -12898,7 +12832,7 @@ class DefaultNodeAttachClient {
12898
12832
  }
12899
12833
  else {
12900
12834
  // Silently ignore frames from other agents during concurrent handshakes
12901
- logger$11.debug('handshake_ignoring_frame_from_different_system', {
12835
+ logger$12.debug('handshake_ignoring_frame_from_different_system', {
12902
12836
  frame_type: envelope.frame.type,
12903
12837
  frame_system_id: frameSystemId,
12904
12838
  expected_system_id: this.expectedSystemId,
@@ -12941,7 +12875,7 @@ class DefaultNodeAttachClient {
12941
12875
  }
12942
12876
  }
12943
12877
  catch (error) {
12944
- logger$11.debug('stickiness_offer_skipped', {
12878
+ logger$12.debug('stickiness_offer_skipped', {
12945
12879
  error: error instanceof Error ? error.message : String(error),
12946
12880
  });
12947
12881
  }
@@ -12962,7 +12896,7 @@ class DefaultNodeAttachClient {
12962
12896
  if (!processedEnvelope) {
12963
12897
  throw new Error('Envelope was blocked by onForwardUpstream event');
12964
12898
  }
12965
- logger$11.debug('sending_node_attach_envelope', {
12899
+ logger$12.debug('sending_node_attach_envelope', {
12966
12900
  envp_id: processedEnvelope.id ?? envelope.id ?? null,
12967
12901
  frame_type: processedEnvelope.frame?.type ?? 'unknown',
12968
12902
  trace_id: processedEnvelope.traceId ?? envelope.traceId ?? null,
@@ -12998,7 +12932,7 @@ class DefaultNodeAttachClient {
12998
12932
  try {
12999
12933
  const keyInfos = await this.attachmentKeyValidator.validateKeys(parentKeys);
13000
12934
  if (Array.isArray(keyInfos) && keyInfos.length > 0) {
13001
- logger$11.debug('parent_certificate_validation_passed', {
12935
+ logger$12.debug('parent_certificate_validation_passed', {
13002
12936
  parent_id: parentId,
13003
12937
  correlation_id: corrId,
13004
12938
  validated_keys: keyInfos.length,
@@ -13007,7 +12941,7 @@ class DefaultNodeAttachClient {
13007
12941
  }
13008
12942
  catch (error) {
13009
12943
  if (error instanceof KeyValidationError) {
13010
- logger$11.error('parent_certificate_validation_failed', {
12944
+ logger$12.error('parent_certificate_validation_failed', {
13011
12945
  parent_id: parentId,
13012
12946
  correlation_id: corrId,
13013
12947
  error_code: error.code,
@@ -13021,12 +12955,12 @@ class DefaultNodeAttachClient {
13021
12955
  }
13022
12956
  }
13023
12957
  else {
13024
- logger$11.debug('parent_certificate_validation_skipped', {
12958
+ logger$12.debug('parent_certificate_validation_skipped', {
13025
12959
  parent_id: parentId,
13026
12960
  reason: 'no_validator',
13027
12961
  });
13028
12962
  }
13029
- logger$11.debug('processing_node_attach_ack', {
12963
+ logger$12.debug('processing_node_attach_ack', {
13030
12964
  parent_id: ackFrame.targetSystemId,
13031
12965
  });
13032
12966
  this.inHandshake = false;
@@ -13057,7 +12991,7 @@ class DefaultNodeAttachClient {
13057
12991
  }
13058
12992
  }
13059
12993
  catch (error) {
13060
- logger$11.debug('stickiness_accept_skipped', {
12994
+ logger$12.debug('stickiness_accept_skipped', {
13061
12995
  error: error instanceof Error ? error.message : String(error),
13062
12996
  });
13063
12997
  }
@@ -13111,7 +13045,7 @@ class DefaultNodeAttachClient {
13111
13045
  // NodeAttach frames during handshake are expected in multi-agent scenarios
13112
13046
  // where multiple agents attach concurrently to the same channel
13113
13047
  if (envelope.frame.type === 'NodeAttach') {
13114
- logger$11.debug('handshake_ignoring_concurrent_attach', {
13048
+ logger$12.debug('handshake_ignoring_concurrent_attach', {
13115
13049
  frame_type: envelope.frame.type,
13116
13050
  frame_system_id: envelope.frame?.systemId ??
13117
13051
  'unknown',
@@ -13119,7 +13053,7 @@ class DefaultNodeAttachClient {
13119
13053
  }
13120
13054
  else {
13121
13055
  // Other unexpected frames are still logged as errors
13122
- logger$11.error('unexpected_frame_during_handshake', {
13056
+ logger$12.error('unexpected_frame_during_handshake', {
13123
13057
  frame_type: envelope.frame.type,
13124
13058
  });
13125
13059
  }
@@ -13259,7 +13193,7 @@ class TraceEmitterFactory extends AbstractResourceFactory {
13259
13193
  // void import('./trace-emitter-profile-factory.js');
13260
13194
 
13261
13195
  const BINDING_STORE_NAMESPACE = '__binding_store';
13262
- const logger$10 = getLogger('naylence.fame.node.factory_commons');
13196
+ const logger$11 = getLogger('naylence.fame.node.factory_commons');
13263
13197
  function isPlainRecord$2(value) {
13264
13198
  return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
13265
13199
  }
@@ -13453,7 +13387,7 @@ async function resolveNodeIdentityPolicy(config, options) {
13453
13387
  return await NodeIdentityPolicyFactory.createNodeIdentityPolicy(config ?? undefined, cloneCreateOptions(options));
13454
13388
  }
13455
13389
  catch (error) {
13456
- logger$10.warning('node_identity_policy_creation_failed', {
13390
+ logger$11.warning('node_identity_policy_creation_failed', {
13457
13391
  error: error instanceof Error ? error.message : String(error),
13458
13392
  });
13459
13393
  return null;
@@ -13464,7 +13398,7 @@ async function resolveConnectionRetryPolicy(config, options) {
13464
13398
  return await ConnectionRetryPolicyFactory.createConnectionRetryPolicy(config ?? undefined, cloneCreateOptions(options));
13465
13399
  }
13466
13400
  catch (error) {
13467
- logger$10.warning('connection_retry_policy_creation_failed', {
13401
+ logger$11.warning('connection_retry_policy_creation_failed', {
13468
13402
  error: error instanceof Error ? error.message : String(error),
13469
13403
  });
13470
13404
  return null;
@@ -13476,7 +13410,7 @@ async function resolveStorageProvider(config, options) {
13476
13410
  return await StorageProviderFactory.createStorageProvider(config, cloneCreateOptions(options));
13477
13411
  }
13478
13412
  catch (error) {
13479
- logger$10.warning('storage_provider_creation_failed', {
13413
+ logger$11.warning('storage_provider_creation_failed', {
13480
13414
  error: error instanceof Error ? error.message : String(error),
13481
13415
  });
13482
13416
  }
@@ -13498,7 +13432,7 @@ async function resolveAdmissionClient(config, options, identityPolicy) {
13498
13432
  return await AdmissionClientFactory.createAdmissionClient((config ?? null), createOptions);
13499
13433
  }
13500
13434
  catch (error) {
13501
- logger$10.warning('admission_client_creation_failed', {
13435
+ logger$11.warning('admission_client_creation_failed', {
13502
13436
  error: error instanceof Error ? error.message : String(error),
13503
13437
  });
13504
13438
  return null;
@@ -13525,7 +13459,7 @@ async function resolveReplicaStickinessManager(hasParent, requestedLogicals, opt
13525
13459
  return await ReplicaStickinessManagerFactory.createReplicaStickinessManager(undefined, cloneCreateOptions(options));
13526
13460
  }
13527
13461
  catch (error) {
13528
- logger$10.debug('replica_stickiness_manager_unavailable', { error });
13462
+ logger$11.debug('replica_stickiness_manager_unavailable', { error });
13529
13463
  return null;
13530
13464
  }
13531
13465
  }
@@ -13534,7 +13468,7 @@ async function resolveAttachmentKeyValidator(config, options) {
13534
13468
  return await AttachmentKeyValidatorFactory.createAttachmentKeyValidator(config ?? undefined, cloneCreateOptions(options));
13535
13469
  }
13536
13470
  catch (error) {
13537
- logger$10.warning('attachment_key_validator_creation_failed', {
13471
+ logger$11.warning('attachment_key_validator_creation_failed', {
13538
13472
  error: error instanceof Error ? error.message : String(error),
13539
13473
  });
13540
13474
  return null;
@@ -13552,7 +13486,7 @@ async function resolveDeliveryPolicy(config, options) {
13552
13486
  return await DeliveryPolicyFactory.createDeliveryPolicy(config ?? undefined, cloneCreateOptions(options));
13553
13487
  }
13554
13488
  catch (error) {
13555
- logger$10.warning('delivery_policy_creation_failed', {
13489
+ logger$11.warning('delivery_policy_creation_failed', {
13556
13490
  error: error instanceof Error ? error.message : String(error),
13557
13491
  });
13558
13492
  return null;
@@ -13566,7 +13500,7 @@ async function resolveTransportListeners(configs, eventListeners, options) {
13566
13500
  return await TransportListenerFactory.createTransportListeners(configs, eventListeners, cloneCreateOptions(options));
13567
13501
  }
13568
13502
  catch (error) {
13569
- logger$10.warning('transport_listener_creation_failed', {
13503
+ logger$11.warning('transport_listener_creation_failed', {
13570
13504
  error: error instanceof Error ? error.message : String(error),
13571
13505
  });
13572
13506
  return [];
@@ -13577,7 +13511,7 @@ async function resolveTraceEmitter(config, options) {
13577
13511
  return await TraceEmitterFactory.createTraceEmitter(config ?? undefined, cloneCreateOptions(options));
13578
13512
  }
13579
13513
  catch (error) {
13580
- logger$10.warning('trace_emitter_creation_failed', {
13514
+ logger$11.warning('trace_emitter_creation_failed', {
13581
13515
  error: error instanceof Error ? error.message : String(error),
13582
13516
  });
13583
13517
  return null;
@@ -13633,7 +13567,7 @@ async function createSecurityManagerFromConfig(config, overrides, options) {
13633
13567
  return manager ?? null;
13634
13568
  }
13635
13569
  catch (error) {
13636
- logger$10.warning('security_manager_creation_failed', {
13570
+ logger$11.warning('security_manager_creation_failed', {
13637
13571
  error: error instanceof Error ? error.message : String(error),
13638
13572
  });
13639
13573
  return null;
@@ -13662,7 +13596,7 @@ async function resolveCryptoProvider(config, options) {
13662
13596
  // This happens with overlay security profiles that need envelope signing
13663
13597
  if (requiresCryptoProvider(config)) {
13664
13598
  try {
13665
- logger$10.debug('auto_creating_crypto_provider', {
13599
+ logger$11.debug('auto_creating_crypto_provider', {
13666
13600
  reason: 'overlay_security_requires_signing',
13667
13601
  });
13668
13602
  // Dynamically import to avoid circular dependencies
@@ -13682,7 +13616,7 @@ async function resolveCryptoProvider(config, options) {
13682
13616
  });
13683
13617
  }
13684
13618
  catch (error) {
13685
- logger$10.error('failed_to_auto_create_crypto_provider', {
13619
+ logger$11.error('failed_to_auto_create_crypto_provider', {
13686
13620
  error: error instanceof Error ? error.message : String(error),
13687
13621
  });
13688
13622
  throw error;
@@ -14222,6 +14156,7 @@ const MODULES = [
14222
14156
  "./node/node-identity-policy-profile-factory.js",
14223
14157
  "./node/token-subject-node-identity-policy-factory.js",
14224
14158
  "./placement/static-node-placement-strategy-factory.js",
14159
+ "./security/auth/authorization-profile-factory.js",
14225
14160
  "./security/auth/bearer-token-header-auth-injection-strategy-factory.js",
14226
14161
  "./security/auth/default-authorizer-factory.js",
14227
14162
  "./security/auth/default-policy-authorizer-factory.js",
@@ -14304,6 +14239,7 @@ const MODULE_LOADERS = {
14304
14239
  "./node/node-identity-policy-profile-factory.js": () => Promise.resolve().then(function () { return nodeIdentityPolicyProfileFactory; }),
14305
14240
  "./node/token-subject-node-identity-policy-factory.js": () => Promise.resolve().then(function () { return tokenSubjectNodeIdentityPolicyFactory; }),
14306
14241
  "./placement/static-node-placement-strategy-factory.js": () => Promise.resolve().then(function () { return staticNodePlacementStrategyFactory; }),
14242
+ "./security/auth/authorization-profile-factory.js": () => Promise.resolve().then(function () { return authorizationProfileFactory; }),
14307
14243
  "./security/auth/bearer-token-header-auth-injection-strategy-factory.js": () => Promise.resolve().then(function () { return bearerTokenHeaderAuthInjectionStrategyFactory; }),
14308
14244
  "./security/auth/default-authorizer-factory.js": () => Promise.resolve().then(function () { return defaultAuthorizerFactory; }),
14309
14245
  "./security/auth/default-policy-authorizer-factory.js": () => Promise.resolve().then(function () { return defaultPolicyAuthorizerFactory; }),
@@ -14651,7 +14587,7 @@ class NodeLikeFactory extends AbstractResourceFactory {
14651
14587
  // registerFactory(NODE_LIKE_FACTORY_BASE_TYPE, type, factory);
14652
14588
  // }
14653
14589
 
14654
- const FACTORY_META$1b = {
14590
+ const FACTORY_META$1c = {
14655
14591
  base: NODE_LIKE_FACTORY_BASE_TYPE,
14656
14592
  key: 'Node',
14657
14593
  };
@@ -14693,7 +14629,7 @@ class NodeFactory extends NodeLikeFactory {
14693
14629
 
14694
14630
  var nodeFactory = /*#__PURE__*/Object.freeze({
14695
14631
  __proto__: null,
14696
- FACTORY_META: FACTORY_META$1b,
14632
+ FACTORY_META: FACTORY_META$1c,
14697
14633
  NodeFactory: NodeFactory,
14698
14634
  default: NodeFactory
14699
14635
  });
@@ -15270,7 +15206,7 @@ function normalizeSecurityRequirements(value) {
15270
15206
  };
15271
15207
  }
15272
15208
 
15273
- const logger$$ = getLogger('naylence.fame.node.envelope_security_handler');
15209
+ const logger$10 = getLogger('naylence.fame.node.envelope_security_handler');
15274
15210
  const ENCRYPTION_OPTION_ALIAS_PAIRS = [
15275
15211
  ['recipKid', 'recip_kid'],
15276
15212
  ['recipientKeyId', 'recipient_key_id'],
@@ -15319,7 +15255,7 @@ class EnvelopeSecurityHandler {
15319
15255
  const shouldSign = this.securityPolicy
15320
15256
  ? await this.securityPolicy.shouldSignEnvelope(envelope, context, this.node)
15321
15257
  : false;
15322
- logger$$.debug('checking_signing', {
15258
+ logger$10.debug('checking_signing', {
15323
15259
  has_signer: Boolean(this.envelopeSigner),
15324
15260
  should_sign: shouldSign,
15325
15261
  envp_id: envelope.id,
@@ -15341,7 +15277,7 @@ class EnvelopeSecurityHandler {
15341
15277
  const shouldEncrypt = this.securityPolicy
15342
15278
  ? await this.securityPolicy.shouldEncryptEnvelope(envelope, context, this.node)
15343
15279
  : false;
15344
- logger$$.debug('checking_encryption', {
15280
+ logger$10.debug('checking_encryption', {
15345
15281
  has_encryption_manager: Boolean(this.encryptionManager),
15346
15282
  should_encrypt: shouldEncrypt,
15347
15283
  envp_id: envelope.id,
@@ -15349,7 +15285,7 @@ class EnvelopeSecurityHandler {
15349
15285
  });
15350
15286
  if (this.encryptionManager && this.securityPolicy) {
15351
15287
  if (envelope.sec?.enc) {
15352
- logger$$.debug('skipping_encryption_already_encrypted', {
15288
+ logger$10.debug('skipping_encryption_already_encrypted', {
15353
15289
  envp_id: envelope.id,
15354
15290
  destination: envelope.to ? String(envelope.to) : undefined,
15355
15291
  });
@@ -15362,7 +15298,7 @@ class EnvelopeSecurityHandler {
15362
15298
  CryptoLevel.PLAINTEXT;
15363
15299
  desiredCryptoLevel =
15364
15300
  await this.securityPolicy.decideResponseCryptoLevel(requestCryptoLevel, envelope, context);
15365
- logger$$.debug('response_crypto_level_decided', {
15301
+ logger$10.debug('response_crypto_level_decided', {
15366
15302
  envp_id: envelope.id,
15367
15303
  crypto_level: desiredCryptoLevel,
15368
15304
  destination: envelope.to ? String(envelope.to) : undefined,
@@ -15373,7 +15309,7 @@ class EnvelopeSecurityHandler {
15373
15309
  else {
15374
15310
  desiredCryptoLevel =
15375
15311
  await this.securityPolicy.decideOutboundCryptoLevel(envelope, context, this.node);
15376
- logger$$.debug('outbound_crypto_level_decided', {
15312
+ logger$10.debug('outbound_crypto_level_decided', {
15377
15313
  envp_id: envelope.id,
15378
15314
  frame_type: envelope.frame.type,
15379
15315
  crypto_level: desiredCryptoLevel,
@@ -15381,11 +15317,11 @@ class EnvelopeSecurityHandler {
15381
15317
  });
15382
15318
  }
15383
15319
  if (desiredCryptoLevel === CryptoLevel.SEALED) {
15384
- logger$$.debug('applying_sealed_encryption', { envp_id: envelope.id });
15320
+ logger$10.debug('applying_sealed_encryption', { envp_id: envelope.id });
15385
15321
  return await this.handleSealedEncryption(envelope, context);
15386
15322
  }
15387
15323
  if (desiredCryptoLevel === CryptoLevel.CHANNEL) {
15388
- logger$$.debug('applying_channel_encryption', { envp_id: envelope.id });
15324
+ logger$10.debug('applying_channel_encryption', { envp_id: envelope.id });
15389
15325
  return await this.handleChannelEncryption(envelope, context);
15390
15326
  }
15391
15327
  }
@@ -15436,7 +15372,7 @@ class EnvelopeSecurityHandler {
15436
15372
  frameType === 'KeyAnnounce' ||
15437
15373
  frameType === 'SecureOpen' ||
15438
15374
  frameType === 'SecureAccept') {
15439
- logger$$.error('critical_frame_unsigned_rejected', {
15375
+ logger$10.error('critical_frame_unsigned_rejected', {
15440
15376
  envp_id: envelope.id,
15441
15377
  frame_type: frameType,
15442
15378
  reason: 'critical_frames_must_be_signed',
@@ -15444,7 +15380,7 @@ class EnvelopeSecurityHandler {
15444
15380
  return [envelope, false];
15445
15381
  }
15446
15382
  const action = this.securityPolicy.getUnsignedViolationAction(envelope, context);
15447
- logger$$.warning('unsigned_envelope_violation', {
15383
+ logger$10.warning('unsigned_envelope_violation', {
15448
15384
  envp_id: envelope.id,
15449
15385
  frame_type: frameType,
15450
15386
  action,
@@ -15456,26 +15392,26 @@ class EnvelopeSecurityHandler {
15456
15392
  return [envelope, true];
15457
15393
  }
15458
15394
  async handleChannelHandshakeComplete(channelId, destination) {
15459
- logger$$.debug('channel_handshake_completed', {
15395
+ logger$10.debug('channel_handshake_completed', {
15460
15396
  channel_id: channelId,
15461
15397
  destination,
15462
15398
  });
15463
15399
  if (this.encryptionManager?.notifyChannelEstablished) {
15464
15400
  await this.encryptionManager.notifyChannelEstablished(channelId);
15465
- logger$$.debug('notified_encryption_manager_channel_ready', {
15401
+ logger$10.debug('notified_encryption_manager_channel_ready', {
15466
15402
  channel_id: channelId,
15467
15403
  });
15468
15404
  }
15469
15405
  }
15470
15406
  async handleChannelHandshakeFailed(channelId, destination, reason = 'handshake_failed') {
15471
- logger$$.debug('channel_handshake_failed', {
15407
+ logger$10.debug('channel_handshake_failed', {
15472
15408
  channel_id: channelId,
15473
15409
  destination,
15474
15410
  reason,
15475
15411
  });
15476
15412
  if (this.encryptionManager?.notifyChannelFailed) {
15477
15413
  await this.encryptionManager.notifyChannelFailed(channelId, reason);
15478
- logger$$.debug('notified_encryption_manager_channel_failed', {
15414
+ logger$10.debug('notified_encryption_manager_channel_failed', {
15479
15415
  channel_id: channelId,
15480
15416
  reason,
15481
15417
  });
@@ -15522,7 +15458,7 @@ class EnvelopeSecurityHandler {
15522
15458
  checkPayload: false,
15523
15459
  });
15524
15460
  if (verified) {
15525
- logger$$.debug('envelope_verified', {
15461
+ logger$10.debug('envelope_verified', {
15526
15462
  envp_id: envelope.id,
15527
15463
  sid: envelope.sid,
15528
15464
  kid,
@@ -15533,7 +15469,7 @@ class EnvelopeSecurityHandler {
15533
15469
  }
15534
15470
  this.keyManagementHandler.queuePendingSignedEnvelope(kid, envelope, context);
15535
15471
  await this.keyManagementHandler.maybeRequestSigningKey(kid, context.originType, fromSystemId);
15536
- logger$$.debug('queued_envelope_missing_signing_key', {
15472
+ logger$10.debug('queued_envelope_missing_signing_key', {
15537
15473
  kid,
15538
15474
  envp_id: envelope.id,
15539
15475
  });
@@ -15541,7 +15477,7 @@ class EnvelopeSecurityHandler {
15541
15477
  }
15542
15478
  async handleSealedEncryption(envelope, context) {
15543
15479
  if (!envelope.to) {
15544
- logger$$.warning('sealed_encryption_requested_but_no_destination', {
15480
+ logger$10.warning('sealed_encryption_requested_but_no_destination', {
15545
15481
  envp_id: envelope.id,
15546
15482
  });
15547
15483
  return true;
@@ -15553,20 +15489,20 @@ class EnvelopeSecurityHandler {
15553
15489
  : undefined;
15554
15490
  if (options) {
15555
15491
  if (options.encryptionType === 'channel') {
15556
- logger$$.warning('policy_returned_channel_for_sealed_request', {
15492
+ logger$10.warning('policy_returned_channel_for_sealed_request', {
15557
15493
  envp_id: envelope.id,
15558
15494
  });
15559
15495
  return await this.handleToBeEncryptedEnvelopeWithOptions(envelope, context, normalizeEncryptionOptions({
15560
15496
  requestAddress: envelope.to,
15561
15497
  }));
15562
15498
  }
15563
- logger$$.debug('using_sealed_encryption_options', {
15499
+ logger$10.debug('using_sealed_encryption_options', {
15564
15500
  envp_id: envelope.id,
15565
15501
  options,
15566
15502
  });
15567
15503
  return await this.handleToBeEncryptedEnvelopeWithOptions(envelope, context, options);
15568
15504
  }
15569
- logger$$.debug('no_encryption_options_requesting_key', {
15505
+ logger$10.debug('no_encryption_options_requesting_key', {
15570
15506
  envp_id: envelope.id,
15571
15507
  });
15572
15508
  return await this.handleToBeEncryptedEnvelopeWithOptions(envelope, context, normalizeEncryptionOptions({
@@ -15574,7 +15510,7 @@ class EnvelopeSecurityHandler {
15574
15510
  }));
15575
15511
  }
15576
15512
  catch (error) {
15577
- logger$$.debug('sealed_key_lookup_failed_requesting', {
15513
+ logger$10.debug('sealed_key_lookup_failed_requesting', {
15578
15514
  envp_id: envelope.id,
15579
15515
  error: error instanceof Error ? error.message : String(error),
15580
15516
  });
@@ -15585,7 +15521,7 @@ class EnvelopeSecurityHandler {
15585
15521
  }
15586
15522
  async handleChannelEncryption(envelope, context) {
15587
15523
  if (!envelope.to) {
15588
- logger$$.warning('channel_encryption_requested_but_no_destination', {
15524
+ logger$10.warning('channel_encryption_requested_but_no_destination', {
15589
15525
  envp_id: envelope.id,
15590
15526
  });
15591
15527
  return true;
@@ -15600,13 +15536,13 @@ class EnvelopeSecurityHandler {
15600
15536
  return true;
15601
15537
  }
15602
15538
  if (context.originType !== DeliveryOriginType.LOCAL) {
15603
- logger$$.warning('envelope_encryption_rejected_non_local', {
15539
+ logger$10.warning('envelope_encryption_rejected_non_local', {
15604
15540
  origin: context.originType,
15605
15541
  });
15606
15542
  return true;
15607
15543
  }
15608
15544
  if (!isDataFrame$4(envelope.frame)) {
15609
- logger$$.trace('skipping_encryption_non_dataframe', {
15545
+ logger$10.trace('skipping_encryption_non_dataframe', {
15610
15546
  envp_id: envelope.id,
15611
15547
  frame_type: envelope.frame.type,
15612
15548
  });
@@ -15617,7 +15553,7 @@ class EnvelopeSecurityHandler {
15617
15553
  ? normalizeEncryptionOptions(rawOptions)
15618
15554
  : undefined;
15619
15555
  if (!options) {
15620
- logger$$.warning('no_encryption_options_provided', {
15556
+ logger$10.warning('no_encryption_options_provided', {
15621
15557
  envp_id: envelope.id,
15622
15558
  });
15623
15559
  return true;
@@ -15629,13 +15565,13 @@ class EnvelopeSecurityHandler {
15629
15565
  return true;
15630
15566
  }
15631
15567
  if (context.originType !== DeliveryOriginType.LOCAL) {
15632
- logger$$.warning('envelope_encryption_rejected_non_local', {
15568
+ logger$10.warning('envelope_encryption_rejected_non_local', {
15633
15569
  origin: context.originType,
15634
15570
  });
15635
15571
  return true;
15636
15572
  }
15637
15573
  if (!isDataFrame$4(envelope.frame)) {
15638
- logger$$.trace('skipping_encryption_non_dataframe', {
15574
+ logger$10.trace('skipping_encryption_non_dataframe', {
15639
15575
  envp_id: envelope.id,
15640
15576
  frame_type: envelope.frame.type,
15641
15577
  });
@@ -15652,7 +15588,7 @@ class EnvelopeSecurityHandler {
15652
15588
  // Skip encryption if envelope is already encrypted
15653
15589
  // This prevents re-queuing when replayed envelopes go through security again
15654
15590
  if (envelope.sec?.enc) {
15655
- logger$$.debug('skipping_encryption_already_encrypted', {
15591
+ logger$10.debug('skipping_encryption_already_encrypted', {
15656
15592
  envp_id: envelope.id,
15657
15593
  destination: envelope.to ? String(envelope.to) : undefined,
15658
15594
  });
@@ -15661,14 +15597,14 @@ class EnvelopeSecurityHandler {
15661
15597
  try {
15662
15598
  const result = await this.encryptionManager.encryptEnvelope(envelope, normalizedOptions);
15663
15599
  if (result.status === EncryptionStatus.QUEUED) {
15664
- logger$$.debug('envelope_queued_for_encryption', {
15600
+ logger$10.debug('envelope_queued_for_encryption', {
15665
15601
  envp_id: envelope.id,
15666
15602
  });
15667
15603
  await this.handleEncryptionQueueing(envelope, context, normalizedOptions);
15668
15604
  return false;
15669
15605
  }
15670
15606
  if (result.status === EncryptionStatus.OK) {
15671
- logger$$.debug('envelope_encrypted', { envp_id: envelope.id });
15607
+ logger$10.debug('envelope_encrypted', { envp_id: envelope.id });
15672
15608
  if (result.envelope) {
15673
15609
  envelope.frame = result.envelope.frame;
15674
15610
  envelope.sec = result.envelope.sec;
@@ -15676,17 +15612,17 @@ class EnvelopeSecurityHandler {
15676
15612
  return true;
15677
15613
  }
15678
15614
  if (result.status === EncryptionStatus.SKIPPED) {
15679
- logger$$.debug('envelope_encryption_skipped', { envp_id: envelope.id });
15615
+ logger$10.debug('envelope_encryption_skipped', { envp_id: envelope.id });
15680
15616
  return true;
15681
15617
  }
15682
- logger$$.warning('unknown_encryption_status', {
15618
+ logger$10.warning('unknown_encryption_status', {
15683
15619
  envp_id: envelope.id,
15684
15620
  status: result.status,
15685
15621
  });
15686
15622
  return true;
15687
15623
  }
15688
15624
  catch (error) {
15689
- logger$$.error('encryption_failed', {
15625
+ logger$10.error('encryption_failed', {
15690
15626
  envp_id: envelope.id,
15691
15627
  error: error instanceof Error ? error.message : String(error),
15692
15628
  });
@@ -15725,7 +15661,7 @@ class EnvelopeSecurityHandler {
15725
15661
  return;
15726
15662
  }
15727
15663
  if (normalizedOptions.encryptionType === 'channel') {
15728
- logger$$.debug('channel_encryption_queueing_handled_internally', {
15664
+ logger$10.debug('channel_encryption_queueing_handled_internally', {
15729
15665
  envp_id: envelope.id,
15730
15666
  destination: normalizedOptions.destination
15731
15667
  ? String(normalizedOptions.destination)
@@ -15733,13 +15669,13 @@ class EnvelopeSecurityHandler {
15733
15669
  });
15734
15670
  return;
15735
15671
  }
15736
- logger$$.warning('unknown_encryption_queueing_options', {
15672
+ logger$10.warning('unknown_encryption_queueing_options', {
15737
15673
  envp_id: envelope.id,
15738
15674
  options: normalizedOptions,
15739
15675
  });
15740
15676
  }
15741
15677
  async handleFailedChannelEnvelopeCleanup(destination, reason) {
15742
- logger$$.debug('channel_handshake_failure_cleanup_attempted', {
15678
+ logger$10.debug('channel_handshake_failure_cleanup_attempted', {
15743
15679
  destination,
15744
15680
  reason,
15745
15681
  note: 'envelope_cleanup_handled_by_encryption_manager',
@@ -15750,7 +15686,7 @@ class EnvelopeSecurityHandler {
15750
15686
  }
15751
15687
  }
15752
15688
 
15753
- const logger$_ = getLogger('naylence.fame.node.secure_channel_frame_handler');
15689
+ const logger$$ = getLogger('naylence.fame.node.secure_channel_frame_handler');
15754
15690
  function isPlainRecord$1(value) {
15755
15691
  if (typeof value !== 'object' || value === null) {
15756
15692
  return false;
@@ -15840,7 +15776,7 @@ class SecureChannelFrameHandler {
15840
15776
  assertSecureChannelManager(this.secureChannelManager);
15841
15777
  const frame = envelope.frame;
15842
15778
  assertFrameType(frame, 'SecureOpen');
15843
- logger$_.debug('received_secure_open', {
15779
+ logger$$.debug('received_secure_open', {
15844
15780
  cid: frame.cid,
15845
15781
  algorithm: frame.alg,
15846
15782
  });
@@ -15863,13 +15799,13 @@ class SecureChannelFrameHandler {
15863
15799
  stickySid: envelope.sid ?? undefined,
15864
15800
  expectedResponseType: FameResponseType.NONE,
15865
15801
  };
15866
- logger$_.debug('stickiness_requested_for_channel_encryption', {
15802
+ logger$$.debug('stickiness_requested_for_channel_encryption', {
15867
15803
  cid: frame.cid,
15868
15804
  reason: 'secure_channel_established',
15869
15805
  });
15870
15806
  }
15871
15807
  await this.sendCallback(responseEnvelope, responseContext);
15872
- logger$_.debug('sent_secure_accept', { cid: frame.cid, ok: acceptFrame.ok });
15808
+ logger$$.debug('sent_secure_accept', { cid: frame.cid, ok: acceptFrame.ok });
15873
15809
  if (acceptFrame.ok && this.envelopeSecurityHandler) {
15874
15810
  const destination = extractDestinationFromChannelId(frame.cid);
15875
15811
  if (destination) {
@@ -15881,13 +15817,13 @@ class SecureChannelFrameHandler {
15881
15817
  assertSecureChannelManager(this.secureChannelManager);
15882
15818
  const frame = envelope.frame;
15883
15819
  assertFrameType(frame, 'SecureAccept');
15884
- logger$_.debug('received_secure_accept', { cid: frame.cid, ok: frame.ok });
15820
+ logger$$.debug('received_secure_accept', { cid: frame.cid, ok: frame.ok });
15885
15821
  const success = await this.secureChannelManager.handleAcceptFrame(frame);
15886
15822
  if (!success) {
15887
- logger$_.warning('failed_to_complete_channel', { cid: frame.cid });
15823
+ logger$$.warning('failed_to_complete_channel', { cid: frame.cid });
15888
15824
  }
15889
15825
  else {
15890
- logger$_.debug('channel_established', { cid: frame.cid });
15826
+ logger$$.debug('channel_established', { cid: frame.cid });
15891
15827
  if (this.envelopeSecurityHandler) {
15892
15828
  const destination = extractDestinationFromChannelId(frame.cid);
15893
15829
  if (destination) {
@@ -15899,7 +15835,7 @@ class SecureChannelFrameHandler {
15899
15835
  const destination = extractDestinationFromChannelId(frame.cid);
15900
15836
  if (destination) {
15901
15837
  await this.envelopeSecurityHandler.handleChannelHandshakeFailed(frame.cid, destination, 'negative_secure_accept');
15902
- logger$_.debug('notified_handshake_failure', {
15838
+ logger$$.debug('notified_handshake_failure', {
15903
15839
  cid: frame.cid,
15904
15840
  destination,
15905
15841
  });
@@ -15910,7 +15846,7 @@ class SecureChannelFrameHandler {
15910
15846
  assertSecureChannelManager(this.secureChannelManager);
15911
15847
  const frame = envelope.frame;
15912
15848
  assertFrameType(frame, 'SecureClose');
15913
- logger$_.debug('received_secure_close', {
15849
+ logger$$.debug('received_secure_close', {
15914
15850
  cid: frame.cid,
15915
15851
  reason: frame.reason,
15916
15852
  });
@@ -15968,7 +15904,7 @@ function createNodeDeliveryContext(options = {}) {
15968
15904
  class FameEnvironmentContext {
15969
15905
  }
15970
15906
 
15971
- const FACTORY_META$1a = {
15907
+ const FACTORY_META$1b = {
15972
15908
  base: NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE,
15973
15909
  key: 'DefaultNodeIdentityPolicy',
15974
15910
  };
@@ -15986,11 +15922,48 @@ class DefaultNodeIdentityPolicyFactory extends NodeIdentityPolicyFactory {
15986
15922
  var defaultNodeIdentityPolicyFactory = /*#__PURE__*/Object.freeze({
15987
15923
  __proto__: null,
15988
15924
  DefaultNodeIdentityPolicyFactory: DefaultNodeIdentityPolicyFactory,
15989
- FACTORY_META: FACTORY_META$1a,
15925
+ FACTORY_META: FACTORY_META$1b,
15990
15926
  default: DefaultNodeIdentityPolicyFactory
15991
15927
  });
15992
15928
 
15993
- const logger$Z = getLogger('naylence.fame.node.token_subject_node_identity_policy');
15929
+ const TOKEN_PROVIDER_FACTORY_BASE_TYPE = 'TokenProviderFactory';
15930
+ class TokenProviderFactory extends AbstractResourceFactory {
15931
+ static async createTokenProvider(config, options = {}) {
15932
+ if (config) {
15933
+ const provider = await createResource$1(TOKEN_PROVIDER_FACTORY_BASE_TYPE, config, options);
15934
+ if (!provider) {
15935
+ throw new Error('Failed to create token provider from configuration');
15936
+ }
15937
+ return provider;
15938
+ }
15939
+ let provider = null;
15940
+ try {
15941
+ provider = await createDefaultResource(TOKEN_PROVIDER_FACTORY_BASE_TYPE, null, options);
15942
+ }
15943
+ catch (error) {
15944
+ const message = 'Failed to create default token provider' +
15945
+ (error instanceof Error && error.message ? `: ${error.message}` : '');
15946
+ throw new Error(message);
15947
+ }
15948
+ if (!provider) {
15949
+ throw new Error('Failed to create default token provider');
15950
+ }
15951
+ return provider;
15952
+ }
15953
+ }
15954
+
15955
+ function isTokenProvider(candidate) {
15956
+ return (typeof candidate === 'object' &&
15957
+ candidate !== null &&
15958
+ typeof candidate.getToken === 'function');
15959
+ }
15960
+ function isIdentityExposingTokenProvider(candidate) {
15961
+ return (isTokenProvider(candidate) &&
15962
+ typeof candidate.getIdentity ===
15963
+ 'function');
15964
+ }
15965
+
15966
+ const logger$_ = getLogger('naylence.fame.node.token_subject_node_identity_policy');
15994
15967
  class TokenSubjectNodeIdentityPolicy {
15995
15968
  async resolveInitialNodeId(context) {
15996
15969
  if (context.configuredId) {
@@ -16002,7 +15975,7 @@ class TokenSubjectNodeIdentityPolicy {
16002
15975
  return generateIdAsync();
16003
15976
  }
16004
15977
  async resolveAdmissionNodeId(context) {
16005
- logger$Z.debug('resolve_admission_node_id_start', {
15978
+ logger$_.debug('resolve_admission_node_id_start', {
16006
15979
  grantsCount: context.grants?.length ?? 0,
16007
15980
  currentNodeId: context.currentNodeId,
16008
15981
  });
@@ -16011,31 +15984,31 @@ class TokenSubjectNodeIdentityPolicy {
16011
15984
  try {
16012
15985
  const auth = grant.auth;
16013
15986
  if (!auth) {
16014
- logger$Z.debug('skipping_grant_no_auth', { grantType: grant.type });
15987
+ logger$_.debug('skipping_grant_no_auth', { grantType: grant.type });
16015
15988
  continue;
16016
15989
  }
16017
15990
  const tokenProviderConfig = (auth.tokenProvider ??
16018
15991
  auth.token_provider);
16019
15992
  if (!tokenProviderConfig ||
16020
15993
  typeof tokenProviderConfig.type !== 'string') {
16021
- logger$Z.debug('skipping_grant_invalid_token_provider_config', {
15994
+ logger$_.debug('skipping_grant_invalid_token_provider_config', {
16022
15995
  grantType: grant.type,
16023
15996
  config: tokenProviderConfig,
16024
15997
  });
16025
15998
  continue;
16026
15999
  }
16027
- logger$Z.debug('creating_token_provider', {
16000
+ logger$_.debug('creating_token_provider', {
16028
16001
  type: tokenProviderConfig.type,
16029
16002
  });
16030
16003
  const provider = await TokenProviderFactory.createTokenProvider(tokenProviderConfig);
16031
16004
  const isExposing = isIdentityExposingTokenProvider(provider);
16032
- logger$Z.debug('token_provider_created', {
16005
+ logger$_.debug('token_provider_created', {
16033
16006
  type: tokenProviderConfig.type,
16034
16007
  isIdentityExposing: isExposing,
16035
16008
  });
16036
16009
  if (isExposing) {
16037
16010
  const identity = await provider.getIdentity();
16038
- logger$Z.debug('retrieved_identity', { identity });
16011
+ logger$_.debug('retrieved_identity', { identity });
16039
16012
  if (identity && identity.subject) {
16040
16013
  const hashedSubject = await generateIdAsync({
16041
16014
  mode: 'fingerprint',
@@ -16043,7 +16016,7 @@ class TokenSubjectNodeIdentityPolicy {
16043
16016
  length: 8,
16044
16017
  });
16045
16018
  const newNodeId = `${hashedSubject}-${context.currentNodeId}`;
16046
- logger$Z.info('resolved_identity_from_token', {
16019
+ logger$_.info('resolved_identity_from_token', {
16047
16020
  subject: identity.subject,
16048
16021
  hashedSubject,
16049
16022
  newNodeId,
@@ -16051,17 +16024,17 @@ class TokenSubjectNodeIdentityPolicy {
16051
16024
  return newNodeId;
16052
16025
  }
16053
16026
  else {
16054
- logger$Z.debug('identity_missing_subject', { identity });
16027
+ logger$_.debug('identity_missing_subject', { identity });
16055
16028
  }
16056
16029
  }
16057
16030
  }
16058
16031
  catch (err) {
16059
- logger$Z.warning('failed_to_extract_identity_from_grant', { error: err });
16032
+ logger$_.warning('failed_to_extract_identity_from_grant', { error: err });
16060
16033
  }
16061
16034
  }
16062
16035
  }
16063
16036
  else {
16064
- logger$Z.debug('no_grants_available');
16037
+ logger$_.debug('no_grants_available');
16065
16038
  }
16066
16039
  return context.currentNodeId;
16067
16040
  }
@@ -16072,7 +16045,7 @@ var tokenSubjectNodeIdentityPolicy = /*#__PURE__*/Object.freeze({
16072
16045
  TokenSubjectNodeIdentityPolicy: TokenSubjectNodeIdentityPolicy
16073
16046
  });
16074
16047
 
16075
- const FACTORY_META$19 = {
16048
+ const FACTORY_META$1a = {
16076
16049
  base: NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE,
16077
16050
  key: 'TokenSubjectNodeIdentityPolicy',
16078
16051
  };
@@ -16091,27 +16064,27 @@ class TokenSubjectNodeIdentityPolicyFactory extends NodeIdentityPolicyFactory {
16091
16064
 
16092
16065
  var tokenSubjectNodeIdentityPolicyFactory = /*#__PURE__*/Object.freeze({
16093
16066
  __proto__: null,
16094
- FACTORY_META: FACTORY_META$19,
16067
+ FACTORY_META: FACTORY_META$1a,
16095
16068
  TokenSubjectNodeIdentityPolicyFactory: TokenSubjectNodeIdentityPolicyFactory,
16096
16069
  default: TokenSubjectNodeIdentityPolicyFactory
16097
16070
  });
16098
16071
 
16099
- const logger$Y = getLogger('naylence.fame.node.node_identity_policy_profile_factory');
16100
- const PROFILE_NAME_DEFAULT = 'default';
16072
+ const logger$Z = getLogger('naylence.fame.node.node_identity_policy_profile_factory');
16073
+ const PROFILE_NAME_DEFAULT$1 = 'default';
16101
16074
  const PROFILE_NAME_TOKEN_SUBJECT = 'token-subject';
16102
16075
  const PROFILE_NAME_TOKEN_SUBJECT_ALIAS = 'token_subject';
16103
- const DEFAULT_PROFILE = {
16076
+ const DEFAULT_PROFILE$1 = {
16104
16077
  type: 'DefaultNodeIdentityPolicy',
16105
16078
  };
16106
16079
  const TOKEN_SUBJECT_PROFILE = {
16107
16080
  type: 'TokenSubjectNodeIdentityPolicy',
16108
16081
  };
16109
- const PROFILE_MAP$5 = {
16110
- [PROFILE_NAME_DEFAULT]: DEFAULT_PROFILE,
16082
+ const PROFILE_MAP$6 = {
16083
+ [PROFILE_NAME_DEFAULT$1]: DEFAULT_PROFILE$1,
16111
16084
  [PROFILE_NAME_TOKEN_SUBJECT]: TOKEN_SUBJECT_PROFILE,
16112
16085
  [PROFILE_NAME_TOKEN_SUBJECT_ALIAS]: TOKEN_SUBJECT_PROFILE,
16113
16086
  };
16114
- const FACTORY_META$18 = {
16087
+ const FACTORY_META$19 = {
16115
16088
  base: NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE,
16116
16089
  key: 'NodeIdentityPolicyProfile',
16117
16090
  };
@@ -16121,17 +16094,17 @@ class NodeIdentityPolicyProfileFactory extends NodeIdentityPolicyFactory {
16121
16094
  this.type = 'NodeIdentityPolicyProfile';
16122
16095
  }
16123
16096
  async create(config) {
16124
- const normalized = normalizeConfig$w(config);
16125
- const profileConfig = resolveProfileConfig$4(normalized.profile);
16126
- logger$Y.debug('enabling_node_identity_policy_profile', {
16097
+ const normalized = normalizeConfig$x(config);
16098
+ const profileConfig = resolveProfileConfig$5(normalized.profile);
16099
+ logger$Z.debug('enabling_node_identity_policy_profile', {
16127
16100
  profile: normalized.profile,
16128
16101
  });
16129
16102
  return NodeIdentityPolicyFactory.createNodeIdentityPolicy(profileConfig);
16130
16103
  }
16131
16104
  }
16132
- function normalizeConfig$w(config) {
16105
+ function normalizeConfig$x(config) {
16133
16106
  if (!config) {
16134
- return { profile: PROFILE_NAME_DEFAULT };
16107
+ return { profile: PROFILE_NAME_DEFAULT$1 };
16135
16108
  }
16136
16109
  const candidate = config;
16137
16110
  const profileValue = typeof candidate.profile === 'string' && candidate.profile.trim().length > 0
@@ -16142,24 +16115,24 @@ function normalizeConfig$w(config) {
16142
16115
  : typeof candidate.profileName === 'string' &&
16143
16116
  candidate.profileName.trim().length > 0
16144
16117
  ? candidate.profileName
16145
- : PROFILE_NAME_DEFAULT;
16118
+ : PROFILE_NAME_DEFAULT$1;
16146
16119
  const normalizedProfile = profileValue.trim().toLowerCase();
16147
16120
  return { profile: normalizedProfile };
16148
16121
  }
16149
- function resolveProfileConfig$4(profileName) {
16150
- const profile = PROFILE_MAP$5[profileName];
16122
+ function resolveProfileConfig$5(profileName) {
16123
+ const profile = PROFILE_MAP$6[profileName];
16151
16124
  if (!profile) {
16152
16125
  throw new Error(`Unknown node identity policy profile: ${profileName}`);
16153
16126
  }
16154
- return deepClone$4(profile);
16127
+ return deepClone$5(profile);
16155
16128
  }
16156
- function deepClone$4(value) {
16129
+ function deepClone$5(value) {
16157
16130
  return JSON.parse(JSON.stringify(value));
16158
16131
  }
16159
16132
 
16160
16133
  var nodeIdentityPolicyProfileFactory = /*#__PURE__*/Object.freeze({
16161
16134
  __proto__: null,
16162
- FACTORY_META: FACTORY_META$18,
16135
+ FACTORY_META: FACTORY_META$19,
16163
16136
  NodeIdentityPolicyProfileFactory: NodeIdentityPolicyProfileFactory,
16164
16137
  default: NodeIdentityPolicyProfileFactory
16165
16138
  });
@@ -16212,8 +16185,8 @@ class DefaultConnectionRetryPolicy {
16212
16185
  }
16213
16186
  }
16214
16187
 
16215
- const logger$X = getLogger('naylence.fame.node.default-connection-retry-policy-factory');
16216
- const FACTORY_META$17 = {
16188
+ const logger$Y = getLogger('naylence.fame.node.default-connection-retry-policy-factory');
16189
+ const FACTORY_META$18 = {
16217
16190
  base: CONNECTION_RETRY_POLICY_FACTORY_BASE_TYPE,
16218
16191
  key: 'DefaultConnectionRetryPolicy',
16219
16192
  };
@@ -16234,7 +16207,7 @@ class DefaultConnectionRetryPolicyFactory extends ConnectionRetryPolicyFactory {
16234
16207
  }
16235
16208
  }
16236
16209
  const policy = new DefaultConnectionRetryPolicy(options);
16237
- logger$X.debug('connection_retry_policy_created', {
16210
+ logger$Y.debug('connection_retry_policy_created', {
16238
16211
  maxInitialAttempts: policy.maxInitialAttempts,
16239
16212
  });
16240
16213
  return policy;
@@ -16244,7 +16217,7 @@ class DefaultConnectionRetryPolicyFactory extends ConnectionRetryPolicyFactory {
16244
16217
  var defaultConnectionRetryPolicyFactory = /*#__PURE__*/Object.freeze({
16245
16218
  __proto__: null,
16246
16219
  DefaultConnectionRetryPolicyFactory: DefaultConnectionRetryPolicyFactory,
16247
- FACTORY_META: FACTORY_META$17,
16220
+ FACTORY_META: FACTORY_META$18,
16248
16221
  default: DefaultConnectionRetryPolicyFactory
16249
16222
  });
16250
16223
 
@@ -16259,7 +16232,7 @@ class LoadBalancerStickinessManagerFactory extends AbstractResourceFactory {
16259
16232
  }
16260
16233
  }
16261
16234
 
16262
- const logger$W = getLogger('naylence.fame.sentinel.load_balancing.composite_load_balancing_strategy');
16235
+ const logger$X = getLogger('naylence.fame.sentinel.load_balancing.composite_load_balancing_strategy');
16263
16236
  class CompositeLoadBalancingStrategy {
16264
16237
  constructor(strategies) {
16265
16238
  if (!strategies.length) {
@@ -16276,7 +16249,7 @@ class CompositeLoadBalancingStrategy {
16276
16249
  try {
16277
16250
  const result = strategy.choose(poolKey, segments, envelope);
16278
16251
  if (result !== null) {
16279
- logger$W.debug('composite_strategy_success', {
16252
+ logger$X.debug('composite_strategy_success', {
16280
16253
  envelopeId: envelope.id,
16281
16254
  poolKey,
16282
16255
  strategyIndex: index,
@@ -16287,7 +16260,7 @@ class CompositeLoadBalancingStrategy {
16287
16260
  }
16288
16261
  }
16289
16262
  catch (error) {
16290
- logger$W.warning('composite_strategy_error', {
16263
+ logger$X.warning('composite_strategy_error', {
16291
16264
  envelopeId: envelope.id,
16292
16265
  poolKey,
16293
16266
  strategyIndex: index,
@@ -16296,7 +16269,7 @@ class CompositeLoadBalancingStrategy {
16296
16269
  });
16297
16270
  }
16298
16271
  }
16299
- logger$W.debug('composite_strategy_all_failed', {
16272
+ logger$X.debug('composite_strategy_all_failed', {
16300
16273
  envelopeId: envelope.id,
16301
16274
  poolKey,
16302
16275
  strategyCount: this.strategies.length,
@@ -16305,7 +16278,7 @@ class CompositeLoadBalancingStrategy {
16305
16278
  }
16306
16279
  }
16307
16280
 
16308
- const logger$V = getLogger('naylence.fame.sentinel.load_balancing.sticky_load_balancing_strategy');
16281
+ const logger$W = getLogger('naylence.fame.sentinel.load_balancing.sticky_load_balancing_strategy');
16309
16282
  class StickyLoadBalancingStrategy {
16310
16283
  constructor(stickinessManager) {
16311
16284
  this.lastChosenReplica = null;
@@ -16320,7 +16293,7 @@ class StickyLoadBalancingStrategy {
16320
16293
  }
16321
16294
  const stickyReplica = this.stickinessManager.getStickyReplicaSegment(envelope, segments);
16322
16295
  if (stickyReplica && segments.includes(stickyReplica)) {
16323
- logger$V.debug('routing_via_stickiness', {
16296
+ logger$W.debug('routing_via_stickiness', {
16324
16297
  envelopeId: envelope.id,
16325
16298
  poolKey,
16326
16299
  replicaId: stickyReplica,
@@ -16330,7 +16303,7 @@ class StickyLoadBalancingStrategy {
16330
16303
  this.lastChosenReplica = stickyReplica;
16331
16304
  return stickyReplica;
16332
16305
  }
16333
- logger$V.debug('no_stickiness_match_fallback', {
16306
+ logger$W.debug('no_stickiness_match_fallback', {
16334
16307
  envelopeId: envelope.id,
16335
16308
  poolKey,
16336
16309
  aftPresent: Boolean(envelope.aft),
@@ -16418,7 +16391,7 @@ class RouteStoreFactory extends AbstractResourceFactory {
16418
16391
  return store ?? null;
16419
16392
  }
16420
16393
  }
16421
- const FACTORY_META$16 = {
16394
+ const FACTORY_META$17 = {
16422
16395
  base: ROUTE_STORE_FACTORY_BASE_TYPE,
16423
16396
  key: 'InMemoryRouteStore',
16424
16397
  };
@@ -16436,7 +16409,7 @@ class InMemoryRouteStoreFactory extends RouteStoreFactory {
16436
16409
 
16437
16410
  var routeStoreFactory = /*#__PURE__*/Object.freeze({
16438
16411
  __proto__: null,
16439
- FACTORY_META: FACTORY_META$16,
16412
+ FACTORY_META: FACTORY_META$17,
16440
16413
  InMemoryRouteStoreFactory: InMemoryRouteStoreFactory,
16441
16414
  ROUTE_STORE_FACTORY_BASE_TYPE: ROUTE_STORE_FACTORY_BASE_TYPE,
16442
16415
  RouteStoreFactory: RouteStoreFactory,
@@ -16668,7 +16641,7 @@ function resolveRecordArray(primary, secondary) {
16668
16641
  return pickRecordArray(candidate) ?? undefined;
16669
16642
  }
16670
16643
 
16671
- const logger$U = getLogger('naylence.fame.sentinel.route_manager');
16644
+ const logger$V = getLogger('naylence.fame.sentinel.route_manager');
16672
16645
  const DEFAULT_CONNECTOR_CLEANUP_DELAY_MS$1 = 200;
16673
16646
  function normalizeRouteManagerOptions(options) {
16674
16647
  const { route_store, get_id, cleanup_delay_ms, retain_address_bindings_on_disconnect, ...rest } = options;
@@ -16752,7 +16725,7 @@ class RouteManager extends TaskSpawner {
16752
16725
  await this.safeStop(entry.connector);
16753
16726
  }
16754
16727
  catch (error) {
16755
- logger$U.debug('pending_route_stop_failed', {
16728
+ logger$V.debug('pending_route_stop_failed', {
16756
16729
  error: error instanceof Error ? error.message : String(error),
16757
16730
  });
16758
16731
  }
@@ -16775,7 +16748,7 @@ class RouteManager extends TaskSpawner {
16775
16748
  this.cancelPendingCleanup(segment);
16776
16749
  this.downstreamRoutes.set(segment, route);
16777
16750
  });
16778
- logger$U.debug('registered_downstream_route', { route: segment });
16751
+ logger$V.debug('registered_downstream_route', { route: segment });
16779
16752
  }
16780
16753
  async unregisterDownstreamRoute(segment, options) {
16781
16754
  const normalizedOptions = normalizeRouteRemovalOptions(options);
@@ -16791,7 +16764,7 @@ class RouteManager extends TaskSpawner {
16791
16764
  this.cancelPendingCleanup(segment);
16792
16765
  this._peer_routes.set(segment, route);
16793
16766
  });
16794
- logger$U.debug('registered_peer_route', { route: segment });
16767
+ logger$V.debug('registered_peer_route', { route: segment });
16795
16768
  }
16796
16769
  async unregisterPeerRoute(segment, options) {
16797
16770
  const normalizedOptions = normalizeRouteRemovalOptions(options);
@@ -16809,11 +16782,11 @@ class RouteManager extends TaskSpawner {
16809
16782
  await Promise.all(entryTuples.map(async ([segment, entry]) => {
16810
16783
  const normalized = this.normalizeEntry(entry);
16811
16784
  if (!normalized.connectorConfig) {
16812
- logger$U.warning('route_restore_missing_config', { segment });
16785
+ logger$V.warning('route_restore_missing_config', { segment });
16813
16786
  return;
16814
16787
  }
16815
16788
  if (normalized.attachExpiresAt && normalized.attachExpiresAt < now) {
16816
- logger$U.debug('skipping_expired_route', { segment });
16789
+ logger$V.debug('skipping_expired_route', { segment });
16817
16790
  return;
16818
16791
  }
16819
16792
  const authorization = this.parseAuthorization(normalized.metadata);
@@ -16846,7 +16819,7 @@ class RouteManager extends TaskSpawner {
16846
16819
  }
16847
16820
  catch (error) {
16848
16821
  if (this.isTransientError(error)) {
16849
- logger$U.warning('transient_restore_failure', {
16822
+ logger$V.warning('transient_restore_failure', {
16850
16823
  segment,
16851
16824
  attempt,
16852
16825
  error: error instanceof Error ? error.message : String(error),
@@ -16855,7 +16828,7 @@ class RouteManager extends TaskSpawner {
16855
16828
  backoff *= 2;
16856
16829
  continue;
16857
16830
  }
16858
- logger$U.error('failed_to_restore_route', {
16831
+ logger$V.error('failed_to_restore_route', {
16859
16832
  segment,
16860
16833
  error: error instanceof Error ? error.message : String(error),
16861
16834
  });
@@ -16884,13 +16857,13 @@ class RouteManager extends TaskSpawner {
16884
16857
  await this._downstream_route_store
16885
16858
  .delete(segment)
16886
16859
  .catch((error) => {
16887
- logger$U.warning('route_expiration_delete_failed', {
16860
+ logger$V.warning('route_expiration_delete_failed', {
16888
16861
  segment,
16889
16862
  error: error instanceof Error ? error.message : String(error),
16890
16863
  });
16891
16864
  });
16892
16865
  this.purgeRouteReferences(segment);
16893
- logger$U.debug('expired_route', { route: segment });
16866
+ logger$V.debug('expired_route', { route: segment });
16894
16867
  }
16895
16868
  async removeDownstreamRoute(segment, options) {
16896
16869
  const normalizedOptions = normalizeRouteRemovalOptions(options);
@@ -16948,7 +16921,7 @@ class RouteManager extends TaskSpawner {
16948
16921
  this.purgeRouteReferences(segment);
16949
16922
  }
16950
16923
  await store.delete(segment).catch((error) => {
16951
- logger$U.warning('route_delete_failed', {
16924
+ logger$V.warning('route_delete_failed', {
16952
16925
  segment,
16953
16926
  error: error instanceof Error ? error.message : String(error),
16954
16927
  });
@@ -16967,7 +16940,7 @@ class RouteManager extends TaskSpawner {
16967
16940
  caller_stack: captureStack ? captureCallerStack() : undefined,
16968
16941
  retained_addresses: retainAddresses,
16969
16942
  };
16970
- logger$U.debug('removed_route', removalMeta);
16943
+ logger$V.debug('removed_route', removalMeta);
16971
16944
  }
16972
16945
  purgeRouteReferences(segment) {
16973
16946
  for (const [address, info] of this._downstream_addresses_routes.entries()) {
@@ -17022,10 +16995,10 @@ class RouteManager extends TaskSpawner {
17022
16995
  }
17023
16996
  catch (error) {
17024
16997
  if (combined.signal.aborted) {
17025
- logger$U.debug('connector_cleanup_cancelled', { segment });
16998
+ logger$V.debug('connector_cleanup_cancelled', { segment });
17026
16999
  }
17027
17000
  else {
17028
- logger$U.debug('connector_cleanup_delay_failed', {
17001
+ logger$V.debug('connector_cleanup_delay_failed', {
17029
17002
  segment,
17030
17003
  error: error instanceof Error ? error.message : String(error),
17031
17004
  });
@@ -17048,7 +17021,7 @@ class RouteManager extends TaskSpawner {
17048
17021
  }
17049
17022
  catch (error) {
17050
17023
  if (error instanceof Error) {
17051
- logger$U.debug('connector_stop_ignored', { error: error.message });
17024
+ logger$V.debug('connector_stop_ignored', { error: error.message });
17052
17025
  }
17053
17026
  }
17054
17027
  for (const [flowId, peer] of this.flowRoutes.entries()) {
@@ -17073,12 +17046,12 @@ class RouteManager extends TaskSpawner {
17073
17046
  }
17074
17047
  }
17075
17048
  catch (error) {
17076
- logger$U.error('janitor_loop_error', {
17049
+ logger$V.error('janitor_loop_error', {
17077
17050
  error: error instanceof Error ? error.message : String(error),
17078
17051
  });
17079
17052
  }
17080
17053
  finally {
17081
- logger$U.debug('janitor_loop_exited');
17054
+ logger$V.debug('janitor_loop_exited');
17082
17055
  }
17083
17056
  }
17084
17057
  async scanStoreForExpirations(store, now, kind) {
@@ -17098,13 +17071,13 @@ class RouteManager extends TaskSpawner {
17098
17071
  }
17099
17072
  });
17100
17073
  await store.delete(segment).catch((error) => {
17101
- logger$U.warning('route_auto_expire_delete_failed', {
17074
+ logger$V.warning('route_auto_expire_delete_failed', {
17102
17075
  segment,
17103
17076
  error: error instanceof Error ? error.message : String(error),
17104
17077
  });
17105
17078
  });
17106
17079
  this.purgeRouteReferences(segment);
17107
- logger$U.debug('auto_expired_route', { segment });
17080
+ logger$V.debug('auto_expired_route', { segment });
17108
17081
  }));
17109
17082
  }
17110
17083
  parseAuthorization(metadata) {
@@ -17127,7 +17100,7 @@ class RouteManager extends TaskSpawner {
17127
17100
  return { ...base, ...extraFields };
17128
17101
  }
17129
17102
  catch (error) {
17130
- logger$U.error('corrupt_route_metadata', {
17103
+ logger$V.error('corrupt_route_metadata', {
17131
17104
  error: error instanceof Error ? error.message : String(error),
17132
17105
  });
17133
17106
  return null;
@@ -17203,12 +17176,12 @@ function captureCallerStack(skip = 3, depth = 6) {
17203
17176
  return frames.map((frame) => frame.trim()).join(' | ');
17204
17177
  }
17205
17178
 
17206
- const logger$T = getLogger('naylence.fame.sentinel.router');
17179
+ const logger$U = getLogger('naylence.fame.sentinel.router');
17207
17180
  const ZERO_EPH_PUB_BASE64 = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';
17208
17181
  class Drop {
17209
17182
  async execute(envelope, router, state, context) {
17210
17183
  await emitDeliveryNack(envelope, router, state, 'NO_ROUTE', context ?? undefined);
17211
- logger$T.debug('dropped_envelope', Object.assign(summarizeEnvelope(envelope, ''), {
17184
+ logger$U.debug('dropped_envelope', Object.assign(summarizeEnvelope(envelope, ''), {
17212
17185
  localAddresses: Array.from(state.local.values()),
17213
17186
  downstreamRoutes: Array.from(state.downstreamAddressRoutes.entries()),
17214
17187
  peerRoutes: Array.from(state.peerAddressRoutes.entries()),
@@ -17238,7 +17211,7 @@ class ForwardChild {
17238
17211
  }
17239
17212
  catch (error) {
17240
17213
  if (error instanceof FameTransportClose) {
17241
- logger$T.error('transport_closed_forward_child', {
17214
+ logger$U.error('transport_closed_forward_child', {
17242
17215
  segment: this.segment,
17243
17216
  error: error.message,
17244
17217
  });
@@ -17270,7 +17243,7 @@ class ForwardPeer {
17270
17243
  }
17271
17244
  catch (error) {
17272
17245
  if (error instanceof FameTransportClose) {
17273
- logger$T.error('transport_closed_forward_peer', {
17246
+ logger$U.error('transport_closed_forward_peer', {
17274
17247
  segment: this.segment,
17275
17248
  error: error.message,
17276
17249
  });
@@ -17305,7 +17278,7 @@ class Deny {
17305
17278
  async execute(envelope, router, state, context) {
17306
17279
  const { internalReason, deniedAction, matchedRule, context: extraContext, disclosure = 'opaque', } = this.options;
17307
17280
  // Log detailed denial internally
17308
- logger$T.warning('route_authorization_denied', {
17281
+ logger$U.warning('route_authorization_denied', {
17309
17282
  envp_id: envelope.id,
17310
17283
  frame_type: envelope.frame?.type ?? null,
17311
17284
  to: envelope.to?.toString() ?? null,
@@ -17351,7 +17324,7 @@ function mapRoutingActionToAuthorizationAction(action) {
17351
17324
  return null;
17352
17325
  }
17353
17326
  // Unknown RoutingAction: return null, caller should deny by default
17354
- logger$T.warning('unknown_routing_action_for_authorization', {
17327
+ logger$U.warning('unknown_routing_action_for_authorization', {
17355
17328
  action_type: action?.constructor?.name ?? 'unknown',
17356
17329
  });
17357
17330
  return null;
@@ -17384,7 +17357,7 @@ async function emitDeliveryNack(envelope, routingNode, state, code, context) {
17384
17357
  return;
17385
17358
  }
17386
17359
  if (!state.envelopeFactory) {
17387
- logger$T.warning('router_missing_envelope_factory', summarizeEnvelope(envelope));
17360
+ logger$U.warning('router_missing_envelope_factory', summarizeEnvelope(envelope));
17388
17361
  return;
17389
17362
  }
17390
17363
  const nackFrame = createNackFrame(envelope, code);
@@ -17415,7 +17388,7 @@ async function emitDeliveryNack(envelope, routingNode, state, code, context) {
17415
17388
  }
17416
17389
  }
17417
17390
  catch (error) {
17418
- logger$T.warning('nack_forward_failed', {
17391
+ logger$U.warning('nack_forward_failed', {
17419
17392
  error: error instanceof Error ? error.message : String(error),
17420
17393
  ...summarizeEnvelope(envelope),
17421
17394
  });
@@ -17621,7 +17594,7 @@ class HRWLoadBalancingStrategy {
17621
17594
  }
17622
17595
  }
17623
17596
 
17624
- const logger$S = getLogger('naylence.fame.sentinel.capability_aware_routing_policy');
17597
+ const logger$T = getLogger('naylence.fame.sentinel.capability_aware_routing_policy');
17625
17598
  function normalizeOptions$i(options) {
17626
17599
  if (!options || typeof options !== 'object') {
17627
17600
  return {};
@@ -17673,7 +17646,7 @@ class CapabilityAwareRoutingPolicy {
17673
17646
  if (chosenSegment) {
17674
17647
  return new ForwardChild(chosenSegment);
17675
17648
  }
17676
- logger$S.warning('capability_policy_lb_failed', {
17649
+ logger$T.warning('capability_policy_lb_failed', {
17677
17650
  segments: providerSegments,
17678
17651
  capabilities,
17679
17652
  ...summarizeEnvelope(envelope),
@@ -17702,7 +17675,7 @@ class CapabilityAwareRoutingPolicy {
17702
17675
  }
17703
17676
  }
17704
17677
  catch (error) {
17705
- logger$S.warning('capability_policy_resolve_failed', {
17678
+ logger$T.warning('capability_policy_resolve_failed', {
17706
17679
  error: error instanceof Error ? error.message : String(error),
17707
17680
  });
17708
17681
  }
@@ -17939,7 +17912,7 @@ function toFameAddress(address) {
17939
17912
  return address instanceof FameAddress ? address : new FameAddress(address);
17940
17913
  }
17941
17914
 
17942
- const logger$R = getLogger('naylence.fame.sentinel.node_attach_frame_handler');
17915
+ const logger$S = getLogger('naylence.fame.sentinel.node_attach_frame_handler');
17943
17916
  const DOWNSTREAM_ORIGINS = new Set([
17944
17917
  DeliveryOriginType.DOWNSTREAM,
17945
17918
  DeliveryOriginType.PEER,
@@ -18032,7 +18005,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18032
18005
  this.maxTtlSec = options.maxTtlSec ?? null;
18033
18006
  }
18034
18007
  async acceptNodeAttach(envelope, context) {
18035
- logger$R.debug('handling_node_attach_request');
18008
+ logger$S.debug('handling_node_attach_request');
18036
18009
  const normalizedContext = this.normalizeContext(context);
18037
18010
  const frame = this.normalizeNodeAttachFrame(envelope.frame);
18038
18011
  if (frame.type !== 'NodeAttach') {
@@ -18077,14 +18050,14 @@ class NodeAttachFrameHandler extends TaskSpawner {
18077
18050
  let isRebind = false;
18078
18051
  if (frame.originType === DeliveryOriginType.DOWNSTREAM) {
18079
18052
  const hasExistingRoute = this.routeManager.downstreamRoutes.has(attachedSystemId);
18080
- logger$R.debug('checking_for_existing_route', {
18053
+ logger$S.debug('checking_for_existing_route', {
18081
18054
  system_id: attachedSystemId,
18082
18055
  has_existing: hasExistingRoute,
18083
18056
  existing_routes: Array.from(this.routeManager.downstreamRoutes.keys()),
18084
18057
  });
18085
18058
  if (hasExistingRoute) {
18086
18059
  isRebind = true;
18087
- logger$R.warning('rebinding_existing_downstream_route', {
18060
+ logger$S.warning('rebinding_existing_downstream_route', {
18088
18061
  system_id: attachedSystemId,
18089
18062
  });
18090
18063
  oldAssignedPath = buildAssignedPath$1(this.routingNode.physicalPath, attachedSystemId);
@@ -18103,7 +18076,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18103
18076
  meta: { systemId: attachedSystemId },
18104
18077
  })
18105
18078
  .catch((error) => {
18106
- logger$R.warning('failed_to_unregister_downstream_route_before_rebind', {
18079
+ logger$S.warning('failed_to_unregister_downstream_route_before_rebind', {
18107
18080
  system_id: attachedSystemId,
18108
18081
  error: error instanceof Error ? error.message : String(error),
18109
18082
  });
@@ -18120,7 +18093,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18120
18093
  for (const address of orphanedAddresses) {
18121
18094
  encryptionMgr.clearChannelCacheForDestination(address);
18122
18095
  }
18123
- logger$R.debug('cleared_channel_cache_for_rebind', {
18096
+ logger$S.debug('cleared_channel_cache_for_rebind', {
18124
18097
  system_id: attachedSystemId,
18125
18098
  addresses: orphanedAddresses,
18126
18099
  });
@@ -18132,7 +18105,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18132
18105
  encryptionMgr.removeChannelsForDestination(address);
18133
18106
  }
18134
18107
  if (totalRemoved > 0) {
18135
- logger$R.debug('removed_channel_states_for_rebind', {
18108
+ logger$S.debug('removed_channel_states_for_rebind', {
18136
18109
  system_id: attachedSystemId,
18137
18110
  channels_removed: totalRemoved,
18138
18111
  });
@@ -18140,7 +18113,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18140
18113
  }
18141
18114
  }
18142
18115
  catch (error) {
18143
- logger$R.warning('failed_to_cleanup_channels_for_rebind', {
18116
+ logger$S.warning('failed_to_cleanup_channels_for_rebind', {
18144
18117
  system_id: attachedSystemId,
18145
18118
  error: error instanceof Error ? error.message : String(error),
18146
18119
  });
@@ -18163,7 +18136,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18163
18136
  meta: { systemId: attachedSystemId },
18164
18137
  })
18165
18138
  .catch((error) => {
18166
- logger$R.warning('failed_to_unregister_peer_route_before_rebind', {
18139
+ logger$S.warning('failed_to_unregister_peer_route_before_rebind', {
18167
18140
  system_id: attachedSystemId,
18168
18141
  error: error instanceof Error ? error.message : String(error),
18169
18142
  });
@@ -18201,7 +18174,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18201
18174
  ? { stickiness: negotiatedStickiness }
18202
18175
  : {}),
18203
18176
  });
18204
- logger$R.debug('sending_node_attach_ack', {
18177
+ logger$S.debug('sending_node_attach_ack', {
18205
18178
  env_id: ackEnvelope.id ?? 'unknown',
18206
18179
  });
18207
18180
  await this.sendAndNotify(connector, ackEnvelope, attachedSystemId, normalizedContext);
@@ -18248,7 +18221,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18248
18221
  return this.stickinessManager.negotiate(stickiness);
18249
18222
  }
18250
18223
  catch (error) {
18251
- logger$R.debug('stickiness_negotiate_skipped', {
18224
+ logger$S.debug('stickiness_negotiate_skipped', {
18252
18225
  error: error instanceof Error ? error.message : String(error),
18253
18226
  });
18254
18227
  return null;
@@ -18264,13 +18237,13 @@ class NodeAttachFrameHandler extends TaskSpawner {
18264
18237
  }
18265
18238
  if (!attachExpiresAt || earliestKeyExpiry < attachExpiresAt) {
18266
18239
  if (attachExpiresAt) {
18267
- logger$R.warning('attachment_ttl_limited_by_key_expiry', {
18240
+ logger$S.warning('attachment_ttl_limited_by_key_expiry', {
18268
18241
  limited_attach_expires_at: earliestKeyExpiry.toISOString(),
18269
18242
  original_attach_expires_at: attachExpiresAt.toISOString(),
18270
18243
  });
18271
18244
  }
18272
18245
  else {
18273
- logger$R.debug('attachment_ttl_set_by_key_expiry', {
18246
+ logger$S.debug('attachment_ttl_set_by_key_expiry', {
18274
18247
  attach_expires_at: earliestKeyExpiry.toISOString(),
18275
18248
  reason: 'no_max_ttl_configured',
18276
18249
  });
@@ -18281,7 +18254,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18281
18254
  }
18282
18255
  async validateAttachmentKeys(frame, envelope, connector, context, systemId) {
18283
18256
  if (!this.attachmentKeyValidator) {
18284
- logger$R.debug('child_key_validation_skipped', {
18257
+ logger$S.debug('child_key_validation_skipped', {
18285
18258
  child_id: systemId,
18286
18259
  reason: 'no_validator',
18287
18260
  });
@@ -18297,7 +18270,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18297
18270
  }
18298
18271
  }
18299
18272
  if (keyInfos.length > 0) {
18300
- logger$R.debug('node_attach_key_validation_passed', {
18273
+ logger$S.debug('node_attach_key_validation_passed', {
18301
18274
  system_id: systemId,
18302
18275
  instance_id: frame.instanceId,
18303
18276
  correlation_id: envelope.corrId,
@@ -18317,13 +18290,13 @@ class NodeAttachFrameHandler extends TaskSpawner {
18317
18290
  reason: `Certificate validation failed: ${error.message}`,
18318
18291
  });
18319
18292
  await this.sendAndNotify(connector, rejectionAck, systemId, context).catch((sendError) => {
18320
- logger$R.error('failed_sending_negative_attach_ack', {
18293
+ logger$S.error('failed_sending_negative_attach_ack', {
18321
18294
  error: sendError instanceof Error
18322
18295
  ? sendError.message
18323
18296
  : String(sendError),
18324
18297
  });
18325
18298
  });
18326
- logger$R.error('node_attach_key_validation_failed', {
18299
+ logger$S.error('node_attach_key_validation_failed', {
18327
18300
  system_id: systemId,
18328
18301
  instance_id: frame.instanceId,
18329
18302
  correlation_id: envelope.corrId,
@@ -18389,10 +18362,10 @@ class NodeAttachFrameHandler extends TaskSpawner {
18389
18362
  try {
18390
18363
  await delay(delaySeconds * 1000);
18391
18364
  await connector.close(1008, 'attach-unauthorized');
18392
- logger$R.debug('closed_unauthorized_connection');
18365
+ logger$S.debug('closed_unauthorized_connection');
18393
18366
  }
18394
18367
  catch (error) {
18395
- logger$R.error('failed_to_close_unauthorized_connection', {
18368
+ logger$S.error('failed_to_close_unauthorized_connection', {
18396
18369
  error: error instanceof Error ? error.message : String(error),
18397
18370
  });
18398
18371
  }
@@ -18505,7 +18478,7 @@ class NodeAttachFrameHandler extends TaskSpawner {
18505
18478
  }
18506
18479
  }
18507
18480
 
18508
- const logger$Q = getLogger('naylence.fame.sentinel.address_bind_frame_handler');
18481
+ const logger$R = getLogger('naylence.fame.sentinel.address_bind_frame_handler');
18509
18482
  const RESERVED_ADDRESS_NAMES = new Set(['__sys__', '__rpc__']);
18510
18483
  function pickManagerField(manager, keys) {
18511
18484
  const record = manager;
@@ -18829,7 +18802,7 @@ class AddressBindFrameHandler {
18829
18802
  if (this.routingNode.forwardToPeers) {
18830
18803
  await this.routingNode.forwardToPeers(envelope, undefined, [sourceSystemId], context);
18831
18804
  }
18832
- logger$Q.debug('address_bound', {
18805
+ logger$R.debug('address_bound', {
18833
18806
  address: addressStr,
18834
18807
  segment: sourceSystemId,
18835
18808
  });
@@ -18927,7 +18900,7 @@ class AddressBindFrameHandler {
18927
18900
  }
18928
18901
  await this.routingNode.forwardToRoute(sourceSystemId, ackEnvelope, ackContext);
18929
18902
  }
18930
- logger$Q.debug('address_unbound', {
18903
+ logger$R.debug('address_unbound', {
18931
18904
  address: addressStr,
18932
18905
  segment: sourceSystemId,
18933
18906
  });
@@ -18945,7 +18918,7 @@ class AddressBindFrameHandler {
18945
18918
  }
18946
18919
  }
18947
18920
 
18948
- const logger$P = getLogger('naylence.fame.sentinel.node_heartbeat_frame_handler');
18921
+ const logger$Q = getLogger('naylence.fame.sentinel.node_heartbeat_frame_handler');
18949
18922
  function normalizeOptions$h(options) {
18950
18923
  if (!options || typeof options !== 'object') {
18951
18924
  throw new Error('NodeHeartbeatFrameHandler requires a routingNode option');
@@ -18982,7 +18955,7 @@ class NodeHeartbeatFrameHandler {
18982
18955
  if (!frame || frame.type !== 'NodeHeartbeat') {
18983
18956
  throw new Error(`Invalid envelope frame. Expected: NodeHeartbeatFrame, actual: ${frame?.type ?? 'unknown'}`);
18984
18957
  }
18985
- logger$P.trace('handling_heartbeat', {
18958
+ logger$Q.trace('handling_heartbeat', {
18986
18959
  hb_system_id: frame.systemId ?? 'unknown',
18987
18960
  hb_env_id: envelope.id ?? 'unknown',
18988
18961
  hb_corr_id: envelope.corrId ?? 'unknown',
@@ -19010,7 +18983,7 @@ class NodeHeartbeatFrameHandler {
19010
18983
  ...(envelope.corrId ? { corrId: envelope.corrId } : {}),
19011
18984
  ...(envelope.traceId ? { traceId: envelope.traceId } : {}),
19012
18985
  });
19013
- logger$P.debug('sending_heartbeat_ack', {
18986
+ logger$Q.debug('sending_heartbeat_ack', {
19014
18987
  hb_ack_env_id: ackEnvelope.id ?? 'unknown',
19015
18988
  hb_ack_corr_id: ackEnvelope.corrId ?? 'unknown',
19016
18989
  });
@@ -19038,7 +19011,7 @@ class NodeHeartbeatFrameHandler {
19038
19011
  }
19039
19012
  }
19040
19013
 
19041
- const logger$O = getLogger('naylence.fame.sentinel.capability_frame_handler');
19014
+ const logger$P = getLogger('naylence.fame.sentinel.capability_frame_handler');
19042
19015
  class CapabilityFrameHandler {
19043
19016
  constructor(options) {
19044
19017
  this.capabilityRoutes = new Map();
@@ -19065,7 +19038,7 @@ class CapabilityFrameHandler {
19065
19038
  const segment = this.getSourceSystemId(context);
19066
19039
  const downstreamRoutes = getDownstreamRoutes(this.routeManager);
19067
19040
  if (!segment || !hasRoute(downstreamRoutes, segment)) {
19068
- logger$O.debug('capability_advertise_unknown_segment', { segment });
19041
+ logger$P.debug('capability_advertise_unknown_segment', { segment });
19069
19042
  return;
19070
19043
  }
19071
19044
  const addressKey = this.normalizeAddress(frame.address);
@@ -19098,7 +19071,7 @@ class CapabilityFrameHandler {
19098
19071
  }
19099
19072
  const segment = this.getSourceSystemId(context);
19100
19073
  if (!segment) {
19101
- logger$O.debug('capability_withdraw_missing_segment');
19074
+ logger$P.debug('capability_withdraw_missing_segment');
19102
19075
  return;
19103
19076
  }
19104
19077
  const addressKey = this.normalizeAddress(frame.address);
@@ -19152,7 +19125,7 @@ class CapabilityFrameHandler {
19152
19125
  async forwardAckToSegment(segment, ackFrame, originalEnvelope, ackContext) {
19153
19126
  const envelopeFactory = this.routingNode.envelopeFactory;
19154
19127
  if (!envelopeFactory) {
19155
- logger$O.warning('missing_envelope_factory_for_capability_ack');
19128
+ logger$P.warning('missing_envelope_factory_for_capability_ack');
19156
19129
  return;
19157
19130
  }
19158
19131
  const ackEnvelope = envelopeFactory.createEnvelope({
@@ -19215,7 +19188,7 @@ function getStickySid(context) {
19215
19188
  return typed.stickySid ?? typed.sticky_sid ?? undefined;
19216
19189
  }
19217
19190
 
19218
- const logger$N = getLogger('naylence.fame.sentinel.credit_update_frame_handler');
19191
+ const logger$O = getLogger('naylence.fame.sentinel.credit_update_frame_handler');
19219
19192
  function normalizeOptions$g(options) {
19220
19193
  if (!options || typeof options !== 'object') {
19221
19194
  throw new Error('CreditUpdateFrameHandler requires a routeManager option');
@@ -19235,12 +19208,12 @@ class CreditUpdateFrameHandler {
19235
19208
  async acceptCreditUpdate(envelope, context) {
19236
19209
  const flowId = envelope.flowId;
19237
19210
  if (!flowId) {
19238
- logger$N.warning('credit_update_missing_flow_id');
19211
+ logger$O.warning('credit_update_missing_flow_id');
19239
19212
  return;
19240
19213
  }
19241
19214
  const targetConnector = this.routeManager.getFlowRoute(flowId);
19242
19215
  if (!targetConnector) {
19243
- logger$N.warning('credit_update_unknown_flow', { flowId });
19216
+ logger$O.warning('credit_update_unknown_flow', { flowId });
19244
19217
  return;
19245
19218
  }
19246
19219
  if (context?.fromConnector && context.fromConnector === targetConnector) {
@@ -19250,7 +19223,7 @@ class CreditUpdateFrameHandler {
19250
19223
  }
19251
19224
  }
19252
19225
 
19253
- const logger$M = getLogger('naylence.fame.sentinel.sentinel');
19226
+ const logger$N = getLogger('naylence.fame.sentinel.sentinel');
19254
19227
  const ALLOWED_BEFORE_ATTACH = new Set(['NodeAttach']);
19255
19228
  const SYSTEM_INBOX = '__sys__';
19256
19229
  const RESERVED_UPSTREAM_ADDRESS_NAMES = new Set(['__sys__', '__rpc__']);
@@ -19344,7 +19317,7 @@ class Sentinel extends FameNode {
19344
19317
  routeStore = createPersistentRouteStore(this.storageProvider);
19345
19318
  }
19346
19319
  catch (error) {
19347
- logger$M.warning('persistent_route_store_unavailable', {
19320
+ logger$N.warning('persistent_route_store_unavailable', {
19348
19321
  error: error instanceof Error ? error.message : String(error),
19349
19322
  });
19350
19323
  routeStore = getDefaultRouteStore();
@@ -19426,7 +19399,7 @@ class Sentinel extends FameNode {
19426
19399
  bumpRoutingEpoch() {
19427
19400
  const previousEpoch = this.routingEpochValue;
19428
19401
  this.routingEpochValue = generateId();
19429
- logger$M.debug('routing_epoch_bumped', {
19402
+ logger$N.debug('routing_epoch_bumped', {
19430
19403
  previous_epoch: previousEpoch,
19431
19404
  new_epoch: this.routingEpochValue,
19432
19405
  });
@@ -19517,7 +19490,7 @@ class Sentinel extends FameNode {
19517
19490
  }
19518
19491
  async forwardToRoute(nextSegment, envelope, context) {
19519
19492
  if (this.originMatches(context, nextSegment, DeliveryOriginType.DOWNSTREAM)) {
19520
- logger$M.debug('downstream_loop_detected', {
19493
+ logger$N.debug('downstream_loop_detected', {
19521
19494
  envp_id: envelope.id,
19522
19495
  segment: nextSegment,
19523
19496
  });
@@ -19530,14 +19503,14 @@ class Sentinel extends FameNode {
19530
19503
  }
19531
19504
  const connector = this.routeManager.downstreamRoutes.get(nextSegment);
19532
19505
  if (!connector) {
19533
- logger$M.warning('no_route_for_child_segment', { segment: nextSegment });
19506
+ logger$N.warning('no_route_for_child_segment', { segment: nextSegment });
19534
19507
  await this.emitDeliveryNack(processed, {
19535
19508
  code: 'CHILD_UNREACHABLE',
19536
19509
  context: context ?? null,
19537
19510
  });
19538
19511
  return;
19539
19512
  }
19540
- logger$M.debug('forwarding_downstream', {
19513
+ logger$N.debug('forwarding_downstream', {
19541
19514
  ...summarizeEnvelope(processed, ''),
19542
19515
  route: nextSegment,
19543
19516
  });
@@ -19554,7 +19527,7 @@ class Sentinel extends FameNode {
19554
19527
  }
19555
19528
  async forwardToPeer(peerSegment, envelope, context) {
19556
19529
  if (this.originMatches(context, peerSegment, DeliveryOriginType.PEER)) {
19557
- logger$M.debug('peer_loop_detected', {
19530
+ logger$N.debug('peer_loop_detected', {
19558
19531
  envp_id: envelope.id,
19559
19532
  segment: peerSegment,
19560
19533
  });
@@ -19565,7 +19538,7 @@ class Sentinel extends FameNode {
19565
19538
  }
19566
19539
  const connector = this.routeManager._peer_routes.get(peerSegment);
19567
19540
  if (!connector) {
19568
- logger$M.warning('no_route_for_peer_segment', {
19541
+ logger$N.warning('no_route_for_peer_segment', {
19569
19542
  peer_segment: peerSegment,
19570
19543
  });
19571
19544
  await this.emitDeliveryNack(processed, {
@@ -19608,7 +19581,7 @@ class Sentinel extends FameNode {
19608
19581
  }
19609
19582
  async forwardUpstream(envelope, context) {
19610
19583
  if (context?.originType === DeliveryOriginType.UPSTREAM) {
19611
- logger$M.debug('skipping_forward_upstream', {
19584
+ logger$N.debug('skipping_forward_upstream', {
19612
19585
  envp_id: envelope.id,
19613
19586
  origin_type: context.originType,
19614
19587
  });
@@ -19728,7 +19701,7 @@ class Sentinel extends FameNode {
19728
19701
  }
19729
19702
  catch (error) {
19730
19703
  if (!combined.signal.aborted) {
19731
- logger$M.debug('attach_timeout_delay_failed', {
19704
+ logger$N.debug('attach_timeout_delay_failed', {
19732
19705
  system_id: systemId,
19733
19706
  error: error instanceof Error ? error.message : String(error),
19734
19707
  });
@@ -19755,12 +19728,12 @@ class Sentinel extends FameNode {
19755
19728
  await connector.stop();
19756
19729
  }
19757
19730
  catch (error) {
19758
- logger$M.debug('attach_timeout_stop_failed', {
19731
+ logger$N.debug('attach_timeout_stop_failed', {
19759
19732
  system_id: systemId,
19760
19733
  error: error instanceof Error ? error.message : String(error),
19761
19734
  });
19762
19735
  }
19763
- logger$M.warning('attach_timeout_expired', {
19736
+ logger$N.warning('attach_timeout_expired', {
19764
19737
  system_id: systemId,
19765
19738
  timeout_ms: timeoutMs,
19766
19739
  });
@@ -19814,7 +19787,7 @@ class Sentinel extends FameNode {
19814
19787
  return new FameAddress(addressKey);
19815
19788
  }
19816
19789
  catch (error) {
19817
- logger$M.debug('invalid_capability_address', {
19790
+ logger$N.debug('invalid_capability_address', {
19818
19791
  capability,
19819
19792
  address: addressKey,
19820
19793
  error: error instanceof Error ? error.message : String(error),
@@ -19970,7 +19943,7 @@ class Sentinel extends FameNode {
19970
19943
  }
19971
19944
  async propagateAddressBindingsUpstream() {
19972
19945
  if (!this.hasParent) {
19973
- logger$M.warning('No upstream defined to rebind addresses');
19946
+ logger$N.warning('No upstream defined to rebind addresses');
19974
19947
  return;
19975
19948
  }
19976
19949
  const entries = Array.from(this.routeManager._downstream_addresses_routes.entries());
@@ -19993,7 +19966,7 @@ class Sentinel extends FameNode {
19993
19966
  await this.bindAddressUpstream(new FameAddress(address), info);
19994
19967
  }
19995
19968
  catch (error) {
19996
- logger$M.error('rebind_failed', {
19969
+ logger$N.error('rebind_failed', {
19997
19970
  address,
19998
19971
  error: error instanceof Error ? error.message : String(error),
19999
19972
  });
@@ -20091,7 +20064,7 @@ class Sentinel extends FameNode {
20091
20064
  }
20092
20065
  catch (error) {
20093
20066
  // Hook threw => treat as denial, execute Drop
20094
- logger$M.warning('routing_action_hook_error', {
20067
+ logger$N.warning('routing_action_hook_error', {
20095
20068
  envp_id: envelope.id,
20096
20069
  error: error instanceof Error ? error.message : String(error),
20097
20070
  });
@@ -20115,7 +20088,7 @@ class Sentinel extends FameNode {
20115
20088
  }
20116
20089
  const abortSignal = signal ?? null;
20117
20090
  if (abortSignal?.aborted) {
20118
- logger$M.info('shutdown_signal_received', { signal: 'abort' });
20091
+ logger$N.info('shutdown_signal_received', { signal: 'abort' });
20119
20092
  return;
20120
20093
  }
20121
20094
  // Build fabric options, preferring rootConfig if provided
@@ -20131,7 +20104,7 @@ class Sentinel extends FameNode {
20131
20104
  if (node !== null) {
20132
20105
  fabricCreateOptions.node = node;
20133
20106
  }
20134
- logger$M.debug('fabric_create_options', {
20107
+ logger$N.debug('fabric_create_options', {
20135
20108
  hasRootConfig: 'rootConfig' in fabricCreateOptions,
20136
20109
  hasNode: 'node' in fabricCreateOptions,
20137
20110
  rootConfigKeys: fabricCreateOptions.rootConfig
@@ -20164,7 +20137,7 @@ class Sentinel extends FameNode {
20164
20137
  const registerSignalListeners = () => {
20165
20138
  for (const sig of signals) {
20166
20139
  const listener = () => {
20167
- logger$M.info('shutdown_signal_received', { signal: sig });
20140
+ logger$N.info('shutdown_signal_received', { signal: sig });
20168
20141
  cleanupListeners();
20169
20142
  stopResolve();
20170
20143
  };
@@ -20173,7 +20146,7 @@ class Sentinel extends FameNode {
20173
20146
  }
20174
20147
  if (abortSignal) {
20175
20148
  abortListener = () => {
20176
- logger$M.info('shutdown_signal_received', { signal: 'abort' });
20149
+ logger$N.info('shutdown_signal_received', { signal: 'abort' });
20177
20150
  cleanupListeners();
20178
20151
  stopResolve();
20179
20152
  };
@@ -20186,12 +20159,12 @@ class Sentinel extends FameNode {
20186
20159
  await providedFabric.enter();
20187
20160
  try {
20188
20161
  registerSignalListeners();
20189
- logger$M.info('sentinel_live', {
20162
+ logger$N.info('sentinel_live', {
20190
20163
  message: 'Node is live! Press Ctrl+C to stop.',
20191
20164
  });
20192
20165
  try {
20193
20166
  await stopPromise;
20194
- logger$M.info('sentinel_shutdown_begin');
20167
+ logger$N.info('sentinel_shutdown_begin');
20195
20168
  }
20196
20169
  finally {
20197
20170
  cleanupListeners();
@@ -20205,19 +20178,19 @@ class Sentinel extends FameNode {
20205
20178
  // Use withFabric pattern for automatic lifecycle management
20206
20179
  await withFabric(fabricCreateOptions, async () => {
20207
20180
  registerSignalListeners();
20208
- logger$M.info('sentinel_live', {
20181
+ logger$N.info('sentinel_live', {
20209
20182
  message: 'Node is live! Press Ctrl+C to stop.',
20210
20183
  });
20211
20184
  try {
20212
20185
  await stopPromise;
20213
- logger$M.info('sentinel_shutdown_begin');
20186
+ logger$N.info('sentinel_shutdown_begin');
20214
20187
  }
20215
20188
  finally {
20216
20189
  cleanupListeners();
20217
20190
  }
20218
20191
  });
20219
20192
  }
20220
- logger$M.info('sentinel_shutdown_complete');
20193
+ logger$N.info('sentinel_shutdown_complete');
20221
20194
  }
20222
20195
  }
20223
20196
  function normalizeServeLogLevel(level) {
@@ -20362,7 +20335,7 @@ function isPlainRecord(value) {
20362
20335
  return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
20363
20336
  }
20364
20337
 
20365
- const FACTORY_META$15 = {
20338
+ const FACTORY_META$16 = {
20366
20339
  base: NODE_LIKE_FACTORY_BASE_TYPE,
20367
20340
  key: 'Sentinel',
20368
20341
  };
@@ -20546,7 +20519,7 @@ class SentinelFactory extends NodeLikeFactory {
20546
20519
 
20547
20520
  var sentinelFactory = /*#__PURE__*/Object.freeze({
20548
20521
  __proto__: null,
20549
- FACTORY_META: FACTORY_META$15,
20522
+ FACTORY_META: FACTORY_META$16,
20550
20523
  SentinelFactory: SentinelFactory,
20551
20524
  default: SentinelFactory
20552
20525
  });
@@ -20590,7 +20563,7 @@ function createConnectorConfig(config) {
20590
20563
  * A transport adapter that works with both Node.js and browser WebSocket APIs.
20591
20564
  * Supports both native WebSocket clients and server-side WebSocket connections.
20592
20565
  */
20593
- const logger$L = getLogger('naylence.fame.connector.websocket_connector');
20566
+ const logger$M = getLogger('naylence.fame.connector.websocket_connector');
20594
20567
  /**
20595
20568
  * WebSocket state constants (mirrors standard WebSocket states)
20596
20569
  */
@@ -20631,7 +20604,7 @@ class WebSocketConnector extends BaseAsyncConnector {
20631
20604
  websocket.send_bytes &&
20632
20605
  typeof websocket.receive_bytes === 'function' &&
20633
20606
  typeof websocket.send_bytes === 'function');
20634
- logger$L.debug('websocket_connector_created', {
20607
+ logger$M.debug('websocket_connector_created', {
20635
20608
  is_fastapi_like: this._isFastApiLike,
20636
20609
  ready_state: websocket.readyState,
20637
20610
  url: websocket.url,
@@ -20646,7 +20619,7 @@ class WebSocketConnector extends BaseAsyncConnector {
20646
20619
  socketAny.binaryType = 'arraybuffer';
20647
20620
  }
20648
20621
  catch (error) {
20649
- logger$L.debug('websocket_set_binary_type_failed', {
20622
+ logger$M.debug('websocket_set_binary_type_failed', {
20650
20623
  error: error instanceof Error ? error.message : String(error),
20651
20624
  current_type: socketAny.binaryType,
20652
20625
  });
@@ -20702,7 +20675,7 @@ class WebSocketConnector extends BaseAsyncConnector {
20702
20675
  else {
20703
20676
  this._receiveQueue.push(data);
20704
20677
  }
20705
- logger$L.debug('websocket_message_pushed_to_queue', {
20678
+ logger$M.debug('websocket_message_pushed_to_queue', {
20706
20679
  queueLength: this._receiveQueue.length,
20707
20680
  waitersLength: this._receiveWaiters.length,
20708
20681
  });
@@ -20755,7 +20728,7 @@ class WebSocketConnector extends BaseAsyncConnector {
20755
20728
  const result = receiveMethod.call(this._websocket);
20756
20729
  // Ensure we have a Promise
20757
20730
  if (!result || typeof result.then !== 'function') {
20758
- logger$L.error('fastapi_receive_not_awaitable', {
20731
+ logger$M.error('fastapi_receive_not_awaitable', {
20759
20732
  result_type: typeof result,
20760
20733
  result_str: String(result).substring(0, 100),
20761
20734
  });
@@ -20771,7 +20744,7 @@ class WebSocketConnector extends BaseAsyncConnector {
20771
20744
  }
20772
20745
  // Handle known WebSocket shutdown race condition
20773
20746
  if (this._isAwaitFutureError(error)) {
20774
- logger$L.debug('websocket_shutdown_race_condition_handled', {
20747
+ logger$M.debug('websocket_shutdown_race_condition_handled', {
20775
20748
  note: 'Normal WebSocket close timing - converting to cancellation',
20776
20749
  websocket_state: this._websocket.client_state || 'unknown',
20777
20750
  });
@@ -20814,7 +20787,7 @@ class WebSocketConnector extends BaseAsyncConnector {
20814
20787
  }
20815
20788
  catch (error) {
20816
20789
  if (this._isAwaitFutureError(error)) {
20817
- logger$L.debug('websocket_shutdown_race_condition_detected', {
20790
+ logger$M.debug('websocket_shutdown_race_condition_detected', {
20818
20791
  websocket_type: this._websocket.constructor.name,
20819
20792
  is_fastapi: this._isFastApiLike,
20820
20793
  note: 'Normal WebSocket close timing during shutdown',
@@ -20860,12 +20833,12 @@ class WebSocketConnector extends BaseAsyncConnector {
20860
20833
  if (socketAny.readyState !== WebSocketState.CLOSED) {
20861
20834
  try {
20862
20835
  socketAny.terminate();
20863
- logger$L.debug('websocket_force_terminated', {
20836
+ logger$M.debug('websocket_force_terminated', {
20864
20837
  ready_state: socketAny.readyState,
20865
20838
  });
20866
20839
  }
20867
20840
  catch (error) {
20868
- logger$L.debug('websocket_force_terminate_failed', {
20841
+ logger$M.debug('websocket_force_terminate_failed', {
20869
20842
  error: error instanceof Error ? error.message : String(error),
20870
20843
  });
20871
20844
  }
@@ -20876,7 +20849,7 @@ class WebSocketConnector extends BaseAsyncConnector {
20876
20849
  }
20877
20850
  }
20878
20851
  catch (error) {
20879
- logger$L.error('websocket_close_failed', {
20852
+ logger$M.error('websocket_close_failed', {
20880
20853
  error: error instanceof Error ? error.message : String(error),
20881
20854
  });
20882
20855
  // Don't re-throw - close errors are not critical during shutdown
@@ -21097,7 +21070,7 @@ class WebSocketConnector extends BaseAsyncConnector {
21097
21070
  this._removeReceiveHandlers();
21098
21071
  }
21099
21072
  catch (error) {
21100
- logger$L.debug('websocket_remove_handlers_failed', {
21073
+ logger$M.debug('websocket_remove_handlers_failed', {
21101
21074
  error: error instanceof Error ? error.message : String(error),
21102
21075
  });
21103
21076
  }
@@ -21149,7 +21122,7 @@ class WebSocketConnector extends BaseAsyncConnector {
21149
21122
  * Browser-local connector that routes binary frames between peers via an in-page EventTarget.
21150
21123
  * Relies on BaseAsyncConnector for flow control and shutdown behavior.
21151
21124
  */
21152
- const logger$K = getLogger('naylence.fame.connector.inpage_connector');
21125
+ const logger$L = getLogger('naylence.fame.connector.inpage_connector');
21153
21126
  const INPAGE_CONNECTOR_TYPE = 'inpage-connector';
21154
21127
  const DEFAULT_CHANNEL$6 = 'naylence-fabric';
21155
21128
  const DEFAULT_INBOX_CAPACITY$6 = 2048;
@@ -21247,7 +21220,7 @@ class InPageConnector extends BaseAsyncConnector {
21247
21220
  }
21248
21221
  this.localNodeId = normalizedLocalNodeId;
21249
21222
  this.targetNodeId = InPageConnector.normalizeTargetNodeId(config.initialTargetNodeId);
21250
- logger$K.debug('inpage_connector_initialized', {
21223
+ logger$L.debug('inpage_connector_initialized', {
21251
21224
  channel: this.channelName,
21252
21225
  connector_id: this.connectorId,
21253
21226
  local_node_id: this.localNodeId,
@@ -21256,7 +21229,7 @@ class InPageConnector extends BaseAsyncConnector {
21256
21229
  });
21257
21230
  this.onMsg = (event) => {
21258
21231
  if (!this.listenerRegistered) {
21259
- logger$K.warning('inpage_message_after_unregister', {
21232
+ logger$L.warning('inpage_message_after_unregister', {
21260
21233
  channel: this.channelName,
21261
21234
  connector_id: this.connectorId,
21262
21235
  timestamp: new Date().toISOString(),
@@ -21265,7 +21238,7 @@ class InPageConnector extends BaseAsyncConnector {
21265
21238
  }
21266
21239
  const messageEvent = event;
21267
21240
  const message = messageEvent.data;
21268
- logger$K.debug('inpage_raw_event', {
21241
+ logger$L.debug('inpage_raw_event', {
21269
21242
  channel: this.channelName,
21270
21243
  connector_id: this.connectorId,
21271
21244
  message_type: message && typeof message === 'object'
@@ -21285,7 +21258,7 @@ class InPageConnector extends BaseAsyncConnector {
21285
21258
  : null;
21286
21259
  const senderNodeId = InPageConnector.normalizeNodeId(busMessage.senderNodeId);
21287
21260
  if (!senderId || !senderNodeId) {
21288
- logger$K.debug('inpage_message_rejected', {
21261
+ logger$L.debug('inpage_message_rejected', {
21289
21262
  channel: this.channelName,
21290
21263
  connector_id: this.connectorId,
21291
21264
  reason: 'missing_sender_metadata',
@@ -21293,7 +21266,7 @@ class InPageConnector extends BaseAsyncConnector {
21293
21266
  return;
21294
21267
  }
21295
21268
  if (senderId === this.connectorId || senderNodeId === this.localNodeId) {
21296
- logger$K.debug('inpage_message_rejected', {
21269
+ logger$L.debug('inpage_message_rejected', {
21297
21270
  channel: this.channelName,
21298
21271
  connector_id: this.connectorId,
21299
21272
  reason: 'self_echo',
@@ -21307,14 +21280,14 @@ class InPageConnector extends BaseAsyncConnector {
21307
21280
  }
21308
21281
  const payload = InPageConnector.coercePayload(busMessage.payload);
21309
21282
  if (!payload) {
21310
- logger$K.debug('inpage_payload_rejected', {
21283
+ logger$L.debug('inpage_payload_rejected', {
21311
21284
  channel: this.channelName,
21312
21285
  connector_id: this.connectorId,
21313
21286
  reason: 'unrecognized_payload_type',
21314
21287
  });
21315
21288
  return;
21316
21289
  }
21317
- logger$K.debug('inpage_message_received', {
21290
+ logger$L.debug('inpage_message_received', {
21318
21291
  channel: this.channelName,
21319
21292
  sender_id: senderId,
21320
21293
  sender_node_id: senderNodeId,
@@ -21343,14 +21316,14 @@ class InPageConnector extends BaseAsyncConnector {
21343
21316
  }
21344
21317
  catch (error) {
21345
21318
  if (error instanceof QueueFullError) {
21346
- logger$K.warning('inpage_receive_queue_full', {
21319
+ logger$L.warning('inpage_receive_queue_full', {
21347
21320
  channel: this.channelName,
21348
21321
  inbox_capacity: this.inboxCapacity,
21349
21322
  inbox_remaining_capacity: this.inbox.remainingCapacity,
21350
21323
  });
21351
21324
  }
21352
21325
  else {
21353
- logger$K.error('inpage_receive_error', {
21326
+ logger$L.error('inpage_receive_error', {
21354
21327
  channel: this.channelName,
21355
21328
  error: error instanceof Error ? error.message : String(error),
21356
21329
  });
@@ -21362,7 +21335,7 @@ class InPageConnector extends BaseAsyncConnector {
21362
21335
  // Setup visibility change monitoring
21363
21336
  this.visibilityChangeHandler = () => {
21364
21337
  const isHidden = document.hidden;
21365
- logger$K.debug('inpage_visibility_changed', {
21338
+ logger$L.debug('inpage_visibility_changed', {
21366
21339
  channel: this.channelName,
21367
21340
  connector_id: this.connectorId,
21368
21341
  visibility: isHidden ? 'hidden' : 'visible',
@@ -21371,7 +21344,7 @@ class InPageConnector extends BaseAsyncConnector {
21371
21344
  // Pause/resume connector based on visibility
21372
21345
  if (isHidden && this.state === ConnectorState.STARTED) {
21373
21346
  this.pause().catch((err) => {
21374
- logger$K.warning('inpage_pause_failed', {
21347
+ logger$L.warning('inpage_pause_failed', {
21375
21348
  channel: this.channelName,
21376
21349
  connector_id: this.connectorId,
21377
21350
  error: err instanceof Error ? err.message : String(err),
@@ -21380,7 +21353,7 @@ class InPageConnector extends BaseAsyncConnector {
21380
21353
  }
21381
21354
  else if (!isHidden && this.state === ConnectorState.PAUSED) {
21382
21355
  this.resume().catch((err) => {
21383
- logger$K.warning('inpage_resume_failed', {
21356
+ logger$L.warning('inpage_resume_failed', {
21384
21357
  channel: this.channelName,
21385
21358
  connector_id: this.connectorId,
21386
21359
  error: err instanceof Error ? err.message : String(err),
@@ -21394,7 +21367,7 @@ class InPageConnector extends BaseAsyncConnector {
21394
21367
  // Track page lifecycle events to detect browser unload/discard
21395
21368
  if (typeof window !== 'undefined') {
21396
21369
  const lifecycleLogger = (event) => {
21397
- logger$K.info('inpage_page_lifecycle', {
21370
+ logger$L.info('inpage_page_lifecycle', {
21398
21371
  channel: this.channelName,
21399
21372
  connector_id: this.connectorId,
21400
21373
  event_type: event.type,
@@ -21410,7 +21383,7 @@ class InPageConnector extends BaseAsyncConnector {
21410
21383
  document.addEventListener('resume', lifecycleLogger);
21411
21384
  }
21412
21385
  // Log initial state with detailed visibility info
21413
- logger$K.debug('inpage_initial_visibility', {
21386
+ logger$L.debug('inpage_initial_visibility', {
21414
21387
  channel: this.channelName,
21415
21388
  connector_id: this.connectorId,
21416
21389
  visibility: document.hidden ? 'hidden' : 'visible',
@@ -21428,7 +21401,7 @@ class InPageConnector extends BaseAsyncConnector {
21428
21401
  await super.start(inboundHandler);
21429
21402
  // After transitioning to STARTED, check if tab is already hidden
21430
21403
  if (typeof document !== 'undefined' && document.hidden) {
21431
- logger$K.debug('inpage_start_in_hidden_tab', {
21404
+ logger$L.debug('inpage_start_in_hidden_tab', {
21432
21405
  channel: this.channelName,
21433
21406
  connector_id: this.connectorId,
21434
21407
  document_hidden: document.hidden,
@@ -21438,7 +21411,7 @@ class InPageConnector extends BaseAsyncConnector {
21438
21411
  });
21439
21412
  // Immediately pause if tab is hidden at start time
21440
21413
  await this.pause().catch((err) => {
21441
- logger$K.warning('inpage_initial_pause_failed', {
21414
+ logger$L.warning('inpage_initial_pause_failed', {
21442
21415
  channel: this.channelName,
21443
21416
  connector_id: this.connectorId,
21444
21417
  error: err instanceof Error ? err.message : String(err),
@@ -21468,14 +21441,14 @@ class InPageConnector extends BaseAsyncConnector {
21468
21441
  }
21469
21442
  catch (error) {
21470
21443
  if (error instanceof QueueFullError) {
21471
- logger$K.warning('inpage_push_queue_full', {
21444
+ logger$L.warning('inpage_push_queue_full', {
21472
21445
  channel: this.channelName,
21473
21446
  inbox_capacity: this.inboxCapacity,
21474
21447
  inbox_remaining_capacity: this.inbox.remainingCapacity,
21475
21448
  });
21476
21449
  throw error;
21477
21450
  }
21478
- logger$K.error('inpage_push_failed', {
21451
+ logger$L.error('inpage_push_failed', {
21479
21452
  channel: this.channelName,
21480
21453
  error: error instanceof Error ? error.message : String(error),
21481
21454
  });
@@ -21485,7 +21458,7 @@ class InPageConnector extends BaseAsyncConnector {
21485
21458
  async _transportSendBytes(data) {
21486
21459
  ensureBrowserEnvironment$2();
21487
21460
  const targetNodeId = this.targetNodeId ?? '*';
21488
- logger$K.debug('inpage_message_sending', {
21461
+ logger$L.debug('inpage_message_sending', {
21489
21462
  channel: this.channelName,
21490
21463
  sender_id: this.connectorId,
21491
21464
  sender_node_id: this.localNodeId,
@@ -21509,7 +21482,7 @@ class InPageConnector extends BaseAsyncConnector {
21509
21482
  return item;
21510
21483
  }
21511
21484
  async _transportClose(code, reason) {
21512
- logger$K.debug('inpage_transport_closing', {
21485
+ logger$L.debug('inpage_transport_closing', {
21513
21486
  channel: this.channelName,
21514
21487
  connector_id: this.connectorId,
21515
21488
  code,
@@ -21518,14 +21491,14 @@ class InPageConnector extends BaseAsyncConnector {
21518
21491
  timestamp: new Date().toISOString(),
21519
21492
  });
21520
21493
  if (this.listenerRegistered) {
21521
- logger$K.debug('inpage_removing_listener', {
21494
+ logger$L.debug('inpage_removing_listener', {
21522
21495
  channel: this.channelName,
21523
21496
  connector_id: this.connectorId,
21524
21497
  timestamp: new Date().toISOString(),
21525
21498
  });
21526
21499
  getSharedBus$1().removeEventListener(this.channelName, this.onMsg);
21527
21500
  this.listenerRegistered = false;
21528
- logger$K.debug('inpage_listener_removed', {
21501
+ logger$L.debug('inpage_listener_removed', {
21529
21502
  channel: this.channelName,
21530
21503
  connector_id: this.connectorId,
21531
21504
  timestamp: new Date().toISOString(),
@@ -21557,7 +21530,7 @@ class InPageConnector extends BaseAsyncConnector {
21557
21530
  if (targetNodeId &&
21558
21531
  targetNodeId !== '*' &&
21559
21532
  targetNodeId !== this.localNodeId) {
21560
- logger$K.debug('inpage_message_rejected', {
21533
+ logger$L.debug('inpage_message_rejected', {
21561
21534
  channel: this.channelName,
21562
21535
  connector_id: this.connectorId,
21563
21536
  reason: 'wildcard_target_mismatch',
@@ -21573,7 +21546,7 @@ class InPageConnector extends BaseAsyncConnector {
21573
21546
  if (expectedSender &&
21574
21547
  expectedSender !== '*' &&
21575
21548
  senderNodeId !== expectedSender) {
21576
- logger$K.debug('inpage_message_rejected', {
21549
+ logger$L.debug('inpage_message_rejected', {
21577
21550
  channel: this.channelName,
21578
21551
  connector_id: this.connectorId,
21579
21552
  reason: 'unexpected_sender',
@@ -21586,7 +21559,7 @@ class InPageConnector extends BaseAsyncConnector {
21586
21559
  if (targetNodeId &&
21587
21560
  targetNodeId !== '*' &&
21588
21561
  targetNodeId !== this.localNodeId) {
21589
- logger$K.debug('inpage_message_rejected', {
21562
+ logger$L.debug('inpage_message_rejected', {
21590
21563
  channel: this.channelName,
21591
21564
  connector_id: this.connectorId,
21592
21565
  reason: 'unexpected_target',
@@ -21611,7 +21584,7 @@ class InPageConnector extends BaseAsyncConnector {
21611
21584
  return 'unknown';
21612
21585
  }
21613
21586
  logInboxSnapshot(event, extra = {}) {
21614
- logger$K.debug(event, {
21587
+ logger$L.debug(event, {
21615
21588
  channel: this.channelName,
21616
21589
  connector_id: this.connectorId,
21617
21590
  connector_state: this.state,
@@ -21630,7 +21603,7 @@ class InPageConnector extends BaseAsyncConnector {
21630
21603
  return;
21631
21604
  }
21632
21605
  this.targetNodeId = normalized;
21633
- logger$K.debug('inpage_target_updated', {
21606
+ logger$L.debug('inpage_target_updated', {
21634
21607
  channel: this.channelName,
21635
21608
  connector_id: this.connectorId,
21636
21609
  local_node_id: this.localNodeId,
@@ -21640,7 +21613,7 @@ class InPageConnector extends BaseAsyncConnector {
21640
21613
  }
21641
21614
  setWildcardTarget() {
21642
21615
  this.targetNodeId = '*';
21643
- logger$K.debug('inpage_target_updated', {
21616
+ logger$L.debug('inpage_target_updated', {
21644
21617
  channel: this.channelName,
21645
21618
  connector_id: this.connectorId,
21646
21619
  local_node_id: this.localNodeId,
@@ -21834,6 +21807,185 @@ class AuthorizerFactory extends AbstractResourceFactory {
21834
21807
  }
21835
21808
  }
21836
21809
 
21810
+ const logger$K = getLogger('naylence.fame.security.auth.authorization_profile_factory');
21811
+ const PROFILE_NAME_DEFAULT = 'jwt';
21812
+ const PROFILE_NAME_OAUTH2 = 'oauth2';
21813
+ const PROFILE_NAME_OAUTH2_GATED = 'oauth2-gated';
21814
+ const PROFILE_NAME_OAUTH2_CALLBACK = 'oauth2-callback';
21815
+ const PROFILE_NAME_NOOP$2 = 'noop';
21816
+ const ENV_VAR_JWT_TRUSTED_ISSUER$1 = 'FAME_JWT_TRUSTED_ISSUER';
21817
+ const ENV_VAR_JWT_ALGORITHM$1 = 'FAME_JWT_ALGORITHM';
21818
+ const ENV_VAR_JWT_AUDIENCE$2 = 'FAME_JWT_AUDIENCE';
21819
+ const ENV_VAR_JWKS_URL$1 = 'FAME_JWKS_URL';
21820
+ const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY$1 = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
21821
+ const ENV_VAR_TRUSTED_CLIENT_SCOPE$1 = 'FAME_TRUSTED_CLIENT_SCOPE';
21822
+ const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER$1 = 'FAME_JWT_REVERSE_AUTH_TRUSTED_ISSUER';
21823
+ const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE$1 = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
21824
+ const ENV_VAR_HMAC_SECRET$1 = 'FAME_HMAC_SECRET';
21825
+ const DEFAULT_REVERSE_AUTH_ISSUER = 'reverse-auth.naylence.ai';
21826
+ const DEFAULT_REVERSE_AUTH_AUDIENCE = 'dev.naylence.ai';
21827
+ const DEFAULT_PROFILE = {
21828
+ type: 'DefaultAuthorizer',
21829
+ verifier: {
21830
+ type: 'JWKSJWTTokenVerifier',
21831
+ jwks_url: Expressions.env(ENV_VAR_JWKS_URL$1),
21832
+ issuer: Expressions.env(ENV_VAR_JWT_TRUSTED_ISSUER$1),
21833
+ },
21834
+ };
21835
+ const OAUTH2_PROFILE = {
21836
+ type: 'OAuth2Authorizer',
21837
+ issuer: Expressions.env(ENV_VAR_JWT_TRUSTED_ISSUER$1),
21838
+ required_scopes: ['node.connect'],
21839
+ require_scope: true,
21840
+ default_ttl_sec: 3600,
21841
+ max_ttl_sec: 86400,
21842
+ algorithm: Expressions.env(ENV_VAR_JWT_ALGORITHM$1, 'RS256'),
21843
+ audience: Expressions.env(ENV_VAR_JWT_AUDIENCE$2),
21844
+ };
21845
+ const OAUTH2_GATED_PROFILE = {
21846
+ ...OAUTH2_PROFILE,
21847
+ enforce_token_subject_node_identity: Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY$1, 'false'),
21848
+ trusted_client_scope: Expressions.env(ENV_VAR_TRUSTED_CLIENT_SCOPE$1, 'node.trusted'),
21849
+ };
21850
+ const OAUTH2_CALLBACK_PROFILE = {
21851
+ type: 'OAuth2Authorizer',
21852
+ issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER$1, DEFAULT_REVERSE_AUTH_ISSUER),
21853
+ audience: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE$1),
21854
+ require_scope: true,
21855
+ default_ttl_sec: 3600,
21856
+ max_ttl_sec: 86400,
21857
+ reverse_auth_ttl_sec: 86400,
21858
+ token_verifier_config: {
21859
+ type: 'JWTTokenVerifier',
21860
+ algorithm: 'HS256',
21861
+ hmac_secret: Expressions.env(ENV_VAR_HMAC_SECRET$1),
21862
+ issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER$1, DEFAULT_REVERSE_AUTH_ISSUER),
21863
+ ttl_sec: 86400,
21864
+ },
21865
+ token_issuer_config: {
21866
+ type: 'JWTTokenIssuer',
21867
+ algorithm: 'HS256',
21868
+ hmac_secret: Expressions.env(ENV_VAR_HMAC_SECRET$1),
21869
+ kid: 'hmac-reverse-auth-key',
21870
+ issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER$1, DEFAULT_REVERSE_AUTH_ISSUER),
21871
+ ttl_sec: 86400,
21872
+ audience: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE$1, DEFAULT_REVERSE_AUTH_AUDIENCE),
21873
+ },
21874
+ };
21875
+ const NOOP_PROFILE$2 = {
21876
+ type: 'NoopAuthorizer',
21877
+ };
21878
+ const PROFILE_MAP$5 = {
21879
+ [PROFILE_NAME_DEFAULT]: DEFAULT_PROFILE,
21880
+ [PROFILE_NAME_OAUTH2]: OAUTH2_PROFILE,
21881
+ [PROFILE_NAME_OAUTH2_GATED]: OAUTH2_GATED_PROFILE,
21882
+ [PROFILE_NAME_OAUTH2_CALLBACK]: OAUTH2_CALLBACK_PROFILE,
21883
+ [PROFILE_NAME_NOOP$2]: NOOP_PROFILE$2,
21884
+ };
21885
+ const PROFILE_ALIASES$1 = {
21886
+ jwt: PROFILE_NAME_DEFAULT,
21887
+ jwks: PROFILE_NAME_DEFAULT,
21888
+ default: PROFILE_NAME_DEFAULT,
21889
+ oauth2: PROFILE_NAME_OAUTH2,
21890
+ oidc: PROFILE_NAME_OAUTH2,
21891
+ 'oauth2-gated': PROFILE_NAME_OAUTH2_GATED,
21892
+ oauth2_gated: PROFILE_NAME_OAUTH2_GATED,
21893
+ 'oauth2-callback': PROFILE_NAME_OAUTH2_CALLBACK,
21894
+ oauth2_callback: PROFILE_NAME_OAUTH2_CALLBACK,
21895
+ 'reverse-auth': PROFILE_NAME_OAUTH2_CALLBACK,
21896
+ noop: PROFILE_NAME_NOOP$2,
21897
+ 'no-op': PROFILE_NAME_NOOP$2,
21898
+ no_op: PROFILE_NAME_NOOP$2,
21899
+ };
21900
+ const FACTORY_META$15 = {
21901
+ base: AUTHORIZER_FACTORY_BASE_TYPE,
21902
+ key: 'AuthorizationProfile',
21903
+ };
21904
+ class AuthorizationProfileFactory extends AuthorizerFactory {
21905
+ constructor() {
21906
+ super(...arguments);
21907
+ this.type = 'AuthorizationProfile';
21908
+ }
21909
+ async create(config, ...factoryArgs) {
21910
+ const normalized = normalizeConfig$w(config);
21911
+ const profileConfig = resolveProfileConfig$4(normalized.profile);
21912
+ logger$K.debug('enabling_authorization_profile', {
21913
+ profile: normalized.profile,
21914
+ });
21915
+ const authorizer = await AuthorizerFactory.createAuthorizer(profileConfig, { factoryArgs });
21916
+ if (!authorizer) {
21917
+ throw new Error(`Failed to create authorizer for profile: ${normalized.profile}`);
21918
+ }
21919
+ return authorizer;
21920
+ }
21921
+ }
21922
+ function normalizeConfig$w(config) {
21923
+ if (!config) {
21924
+ return { profile: PROFILE_NAME_OAUTH2 };
21925
+ }
21926
+ const candidate = config;
21927
+ const profileValue = resolveProfileName$2(candidate);
21928
+ const canonicalProfile = canonicalizeProfileName$1(profileValue);
21929
+ candidate.profile = canonicalProfile;
21930
+ return { profile: canonicalProfile };
21931
+ }
21932
+ function resolveProfileName$2(candidate) {
21933
+ const direct = coerceProfileString$2(candidate.profile);
21934
+ if (direct) {
21935
+ return direct;
21936
+ }
21937
+ const legacyKeys = ['profile_name', 'profileName'];
21938
+ for (const legacyKey of legacyKeys) {
21939
+ const legacyValue = coerceProfileString$2(candidate[legacyKey]);
21940
+ if (legacyValue) {
21941
+ return legacyValue;
21942
+ }
21943
+ }
21944
+ return PROFILE_NAME_OAUTH2;
21945
+ }
21946
+ function coerceProfileString$2(value) {
21947
+ if (typeof value !== 'string') {
21948
+ return null;
21949
+ }
21950
+ const trimmed = value.trim();
21951
+ return trimmed.length > 0 ? trimmed : null;
21952
+ }
21953
+ function canonicalizeProfileName$1(value) {
21954
+ const normalized = value.replace(/[\s_]+/g, '-').toLowerCase();
21955
+ return PROFILE_ALIASES$1[normalized] ?? normalized;
21956
+ }
21957
+ function resolveProfileConfig$4(profileName) {
21958
+ const profile = PROFILE_MAP$5[profileName];
21959
+ if (!profile) {
21960
+ throw new Error(`Unknown authorization profile: ${profileName}`);
21961
+ }
21962
+ return deepClone$4(profile);
21963
+ }
21964
+ function deepClone$4(value) {
21965
+ return JSON.parse(JSON.stringify(value));
21966
+ }
21967
+
21968
+ var authorizationProfileFactory = /*#__PURE__*/Object.freeze({
21969
+ __proto__: null,
21970
+ AuthorizationProfileFactory: AuthorizationProfileFactory,
21971
+ ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY: ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY$1,
21972
+ ENV_VAR_HMAC_SECRET: ENV_VAR_HMAC_SECRET$1,
21973
+ ENV_VAR_JWKS_URL: ENV_VAR_JWKS_URL$1,
21974
+ ENV_VAR_JWT_ALGORITHM: ENV_VAR_JWT_ALGORITHM$1,
21975
+ ENV_VAR_JWT_AUDIENCE: ENV_VAR_JWT_AUDIENCE$2,
21976
+ ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE: ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE$1,
21977
+ ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER: ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER$1,
21978
+ ENV_VAR_JWT_TRUSTED_ISSUER: ENV_VAR_JWT_TRUSTED_ISSUER$1,
21979
+ ENV_VAR_TRUSTED_CLIENT_SCOPE: ENV_VAR_TRUSTED_CLIENT_SCOPE$1,
21980
+ FACTORY_META: FACTORY_META$15,
21981
+ PROFILE_NAME_DEFAULT: PROFILE_NAME_DEFAULT,
21982
+ PROFILE_NAME_NOOP: PROFILE_NAME_NOOP$2,
21983
+ PROFILE_NAME_OAUTH2: PROFILE_NAME_OAUTH2,
21984
+ PROFILE_NAME_OAUTH2_CALLBACK: PROFILE_NAME_OAUTH2_CALLBACK,
21985
+ PROFILE_NAME_OAUTH2_GATED: PROFILE_NAME_OAUTH2_GATED,
21986
+ default: AuthorizationProfileFactory
21987
+ });
21988
+
21837
21989
  function isAuthInjectionStrategy(candidate) {
21838
21990
  return (typeof candidate === 'object' &&
21839
21991
  candidate !== null &&
@@ -29315,14 +29467,13 @@ const ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER = 'FAME_JWT_REVERSE_AUTH_TRUSTED_I
29315
29467
  const ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE = 'FAME_JWT_REVERSE_AUTH_AUDIENCE';
29316
29468
  const ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY = 'FAME_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY';
29317
29469
  const ENV_VAR_TRUSTED_CLIENT_SCOPE = 'FAME_TRUSTED_CLIENT_SCOPE';
29470
+ const ENV_VAR_AUTHORIZATION_PROFILE = 'FAME_AUTHORIZATION_PROFILE';
29318
29471
  const PROFILE_NAME_STRICT_OVERLAY = 'strict-overlay';
29319
29472
  const PROFILE_NAME_OVERLAY = 'overlay';
29320
29473
  const PROFILE_NAME_OVERLAY_CALLBACK = 'overlay-callback';
29321
29474
  const PROFILE_NAME_GATED = 'gated';
29322
29475
  const PROFILE_NAME_GATED_CALLBACK = 'gated-callback';
29323
29476
  const PROFILE_NAME_OPEN$1 = 'open';
29324
- const DEFAULT_REVERSE_AUTH_ISSUER = 'reverse-auth.naylence.ai';
29325
- const DEFAULT_REVERSE_AUTH_AUDIENCE = 'dev.naylence.ai';
29326
29477
  const STRICT_OVERLAY_PROFILE = {
29327
29478
  type: 'DefaultSecurityManager',
29328
29479
  security_policy: {
@@ -29368,12 +29519,8 @@ const STRICT_OVERLAY_PROFILE = {
29368
29519
  },
29369
29520
  },
29370
29521
  authorizer: {
29371
- type: 'DefaultAuthorizer',
29372
- verifier: {
29373
- type: 'JWKSJWTTokenVerifier',
29374
- jwks_url: Expressions.env(ENV_VAR_JWKS_URL),
29375
- issuer: Expressions.env(ENV_VAR_JWT_TRUSTED_ISSUER),
29376
- },
29522
+ type: 'AuthorizationProfile',
29523
+ profile: Expressions.env(ENV_VAR_AUTHORIZATION_PROFILE, 'jwt'),
29377
29524
  },
29378
29525
  };
29379
29526
  const OVERLAY_PROFILE = {
@@ -29420,14 +29567,8 @@ const OVERLAY_PROFILE = {
29420
29567
  },
29421
29568
  },
29422
29569
  authorizer: {
29423
- type: 'OAuth2Authorizer',
29424
- issuer: Expressions.env(ENV_VAR_JWT_TRUSTED_ISSUER),
29425
- required_scopes: ['node.connect'],
29426
- require_scope: true,
29427
- default_ttl_sec: 3600,
29428
- max_ttl_sec: 86400,
29429
- algorithm: Expressions.env(ENV_VAR_JWT_ALGORITHM, 'RS256'),
29430
- audience: Expressions.env(ENV_VAR_JWT_AUDIENCE$1),
29570
+ type: 'AuthorizationProfile',
29571
+ profile: Expressions.env(ENV_VAR_AUTHORIZATION_PROFILE, 'oauth2'),
29431
29572
  },
29432
29573
  };
29433
29574
  const OVERLAY_CALLBACK_PROFILE = {
@@ -29474,29 +29615,8 @@ const OVERLAY_CALLBACK_PROFILE = {
29474
29615
  },
29475
29616
  },
29476
29617
  authorizer: {
29477
- type: 'OAuth2Authorizer',
29478
- issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, DEFAULT_REVERSE_AUTH_ISSUER),
29479
- audience: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE),
29480
- require_scope: true,
29481
- default_ttl_sec: 3600,
29482
- max_ttl_sec: 86400,
29483
- reverse_auth_ttl_sec: 86400,
29484
- token_verifier_config: {
29485
- type: 'JWTTokenVerifier',
29486
- algorithm: 'HS256',
29487
- hmac_secret: Expressions.env(ENV_VAR_HMAC_SECRET),
29488
- issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, DEFAULT_REVERSE_AUTH_ISSUER),
29489
- ttl_sec: 86400,
29490
- },
29491
- token_issuer_config: {
29492
- type: 'JWTTokenIssuer',
29493
- algorithm: 'HS256',
29494
- hmac_secret: Expressions.env(ENV_VAR_HMAC_SECRET),
29495
- kid: 'hmac-reverse-auth-key',
29496
- issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, DEFAULT_REVERSE_AUTH_ISSUER),
29497
- ttl_sec: 86400,
29498
- audience: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, DEFAULT_REVERSE_AUTH_AUDIENCE),
29499
- },
29618
+ type: 'AuthorizationProfile',
29619
+ profile: Expressions.env(ENV_VAR_AUTHORIZATION_PROFILE, 'oauth2-callback'),
29500
29620
  },
29501
29621
  };
29502
29622
  const GATED_PROFILE = {
@@ -29542,16 +29662,8 @@ const GATED_PROFILE = {
29542
29662
  },
29543
29663
  },
29544
29664
  authorizer: {
29545
- type: 'OAuth2Authorizer',
29546
- issuer: Expressions.env(ENV_VAR_JWT_TRUSTED_ISSUER),
29547
- required_scopes: ['node.connect'],
29548
- require_scope: true,
29549
- default_ttl_sec: 3600,
29550
- max_ttl_sec: 86400,
29551
- algorithm: Expressions.env(ENV_VAR_JWT_ALGORITHM, 'RS256'),
29552
- audience: Expressions.env(ENV_VAR_JWT_AUDIENCE$1),
29553
- enforce_token_subject_node_identity: Expressions.env(ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, 'false'),
29554
- trusted_client_scope: Expressions.env(ENV_VAR_TRUSTED_CLIENT_SCOPE, 'node.trusted'),
29665
+ type: 'AuthorizationProfile',
29666
+ profile: Expressions.env(ENV_VAR_AUTHORIZATION_PROFILE, 'oauth2-gated'),
29555
29667
  },
29556
29668
  };
29557
29669
  const GATED_CALLBACK_PROFILE = {
@@ -29597,29 +29709,8 @@ const GATED_CALLBACK_PROFILE = {
29597
29709
  },
29598
29710
  },
29599
29711
  authorizer: {
29600
- type: 'OAuth2Authorizer',
29601
- issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, DEFAULT_REVERSE_AUTH_ISSUER),
29602
- audience: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE),
29603
- require_scope: true,
29604
- default_ttl_sec: 3600,
29605
- max_ttl_sec: 86400,
29606
- reverse_auth_ttl_sec: 86400,
29607
- token_verifier_config: {
29608
- type: 'JWTTokenVerifier',
29609
- algorithm: 'HS256',
29610
- hmac_secret: Expressions.env(ENV_VAR_HMAC_SECRET),
29611
- issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, DEFAULT_REVERSE_AUTH_ISSUER),
29612
- ttl_sec: 86400,
29613
- },
29614
- token_issuer_config: {
29615
- type: 'JWTTokenIssuer',
29616
- algorithm: 'HS256',
29617
- hmac_secret: Expressions.env(ENV_VAR_HMAC_SECRET),
29618
- kid: 'hmac-reverse-auth-key',
29619
- issuer: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, DEFAULT_REVERSE_AUTH_ISSUER),
29620
- ttl_sec: 86400,
29621
- audience: Expressions.env(ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, DEFAULT_REVERSE_AUTH_AUDIENCE),
29622
- },
29712
+ type: 'AuthorizationProfile',
29713
+ profile: Expressions.env(ENV_VAR_AUTHORIZATION_PROFILE, 'oauth2-callback'),
29623
29714
  },
29624
29715
  };
29625
29716
  const OPEN_PROFILE$1 = {
@@ -29628,7 +29719,8 @@ const OPEN_PROFILE$1 = {
29628
29719
  type: 'NoSecurityPolicy',
29629
29720
  },
29630
29721
  authorizer: {
29631
- type: 'NoopAuthorizer',
29722
+ type: 'AuthorizationProfile',
29723
+ profile: Expressions.env(ENV_VAR_AUTHORIZATION_PROFILE, 'noop'),
29632
29724
  },
29633
29725
  };
29634
29726
  const PROFILE_MAP$4 = {
@@ -29757,6 +29849,7 @@ function deepClone$3(value) {
29757
29849
 
29758
29850
  var nodeSecurityProfileFactory = /*#__PURE__*/Object.freeze({
29759
29851
  __proto__: null,
29852
+ ENV_VAR_AUTHORIZATION_PROFILE: ENV_VAR_AUTHORIZATION_PROFILE,
29760
29853
  ENV_VAR_DEFAULT_ENCRYPTION_LEVEL: ENV_VAR_DEFAULT_ENCRYPTION_LEVEL,
29761
29854
  ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY: ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY,
29762
29855
  ENV_VAR_HMAC_SECRET: ENV_VAR_HMAC_SECRET,
@@ -43523,4 +43616,4 @@ var websocketTransportProvisioner = /*#__PURE__*/Object.freeze({
43523
43616
  WebSocketTransportProvisionerFactory: WebSocketTransportProvisionerFactory
43524
43617
  });
43525
43618
 
43526
- export { ADMISSION_CLIENT_FACTORY_BASE_TYPE, ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, AUTHORIZATION_POLICY_FACTORY_BASE_TYPE, AUTHORIZATION_POLICY_SOURCE_FACTORY_BASE_TYPE, AUTHORIZER_FACTORY_BASE_TYPE, AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, AnsiColor, AsyncLock, AttachmentKeyValidator, AuthInjectionStrategyFactory, AuthorizationPolicyFactory, AuthorizationPolicySourceFactory, AuthorizerFactory, BROADCAST_CHANNEL_CONNECTION_GRANT_TYPE, BackPressureFull, BaseAsyncConnector, BaseNodeEventListener, BasicAuthorizationPolicy, BasicAuthorizationPolicyFactory, BindingManager, BindingStoreEntryRecord, BrowserAutoKeyCredentialProvider, BrowserWrappedKeyCredentialProvider, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CONNECTION_RETRY_POLICY_FACTORY_BASE_TYPE, CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE, CRYPTO_LEVEL_SECURITY_ORDER, CertificateManagerFactory, ConnectionRetryPolicyFactory, ConnectorConfigDefaults, ConnectorFactory, ConsoleMetricsEmitter, CryptoLevel, FACTORY_META$11 as DEFAULT_WELCOME_FACTORY_META, DefaultConnectionRetryPolicy, DefaultConnectionRetryPolicyFactory, DefaultCryptoProvider, DefaultKeyManager, DefaultNodeIdentityPolicy, DefaultNodeIdentityPolicyFactory, DefaultSecurityManager, DefaultSecurityPolicy, DefaultWelcomeService, DefaultWelcomeServiceFactory, DevFixedKeyCredentialProvider, ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, ENV_VAR_DEFAULT_ENCRYPTION_LEVEL, ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$1 as ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_SESSION_MAX_INITIAL_ATTEMPTS, ENV_VAR_SHOW_ENVELOPES$1 as ENV_VAR_SHOW_ENVELOPES, EdDSAEnvelopeSigner, EncryptedKeyValueStore, EncryptedStorageProviderBase, EncryptedValue, EncryptionConfiguration, EncryptionManagerFactory, EncryptionResult, EncryptionStatus, EnvCredentialProvider, EnvelopeContext, EnvelopeListenerManager, EnvelopeSecurityHandler, EnvelopeSignerFactory, EnvelopeVerifierFactory, FACTORY_META$12 as FACTORY_META, FIXED_PREFIX_LEN, FameAuthorizedDeliveryContextSchema, FameConnectError, FameEnvironmentContext, FameError, FameMessageTooLarge, FameNode, FameNodeAuthorizationContextSchema, FameProtocolError, FameTransportClose, FlowController, GRANT_PURPOSE_NODE_ATTACH, HTTP_CONNECTION_GRANT_TYPE, HTTP_STATELESS_CONNECTOR_TYPE, INPAGE_CONNECTION_GRANT_TYPE, INPAGE_CONNECTOR_TYPE, InMemoryBinding, InMemoryFanoutBroker, InMemoryKeyValueStore, InMemoryReadWriteChannel, InMemoryStorageProvider, InPageConnector, IndexedDBKeyValueStore, IndexedDBStorageProvider, InvalidPassphraseError, JWKValidationError, KEY_MANAGER_FACTORY_BASE_TYPE, KEY_STORE_FACTORY_BASE_TYPE, KNOWN_POLICY_FIELDS, KNOWN_RULE_FIELDS, KeyInfo, KeyManagementHandler, KeyManagerFactory, KeyStore, KeyStoreFactory, KeyValidationError, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, LogLevel, LogLevelNames, MAX_SCOPE_NESTING_DEPTH, MemoryMetricsEmitter, NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, NODE_LIKE_FACTORY_BASE_TYPE, NODE_PLACEMENT_STRATEGY_FACTORY_BASE_TYPE, NoOpMetricsEmitter, NoSecurityPolicy, NodeFactory, NodeIdentityPolicyFactory, NodeIdentityPolicyProfileFactory, NodePlacementStrategyFactory, NoneCredentialProvider, NoopEncryptionManager, NoopKeyValidator, NoopTrustStoreProvider, NotAuthorized, PROFILE_NAME_GATED, PROFILE_NAME_GATED_CALLBACK, PROFILE_NAME_OPEN$1 as PROFILE_NAME_OPEN, PROFILE_NAME_OVERLAY, PROFILE_NAME_OVERLAY_CALLBACK, PROFILE_NAME_STRICT_OVERLAY, PromptCredentialProvider, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, REQUIRED_FIELDS_BY_KTY, ReplicaStickinessManagerFactory, RootSessionManager, RouteManager, RpcMixin, RpcProxy, SEALED_ENVELOPE_NONCE_LENGTH, SEALED_ENVELOPE_OVERHEAD, SEALED_ENVELOPE_PRIVATE_KEY_LENGTH, SEALED_ENVELOPE_PUBLIC_KEY_LENGTH, SEALED_ENVELOPE_TAG_LENGTH, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SECURITY_MANAGER_FACTORY_BASE_TYPE, SECURITY_POLICY_FACTORY_BASE_TYPE, STORAGE_PROVIDER_FACTORY_BASE_TYPE, SecretSource, SecretStoreCredentialProvider, SecureChannelFrameHandler, SecureChannelManagerFactory, SecurityAction, SecurityRequirements, Sentinel, SentinelFactory, SessionKeyCredentialProvider, SignaturePolicy, SigningConfig as SigningConfigClass, SigningConfiguration, SimpleLoadBalancerStickinessManager, SimpleLoadBalancerStickinessManagerFactory, StaticCredentialProvider, StorageAESEncryptionManager, TOKEN_ISSUER_FACTORY_BASE_TYPE, TOKEN_PROVIDER_FACTORY_BASE_TYPE, TOKEN_VERIFIER_FACTORY_BASE_TYPE, TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE, TaskSpawner, TokenIssuerFactory, TokenProviderFactory, TokenSubjectNodeIdentityPolicy, TokenSubjectNodeIdentityPolicyFactory, TokenVerifierFactory, TransportProvisionerFactory, TrustStoreProviderFactory, TtlValidationError, UpstreamSessionManager, VALID_ACTIONS, VALID_CURVES_BY_KTY, VALID_EFFECTS, VALID_KEY_USES, VALID_ORIGIN_TYPES, VERSION, WEBSOCKET_CONNECTION_GRANT_TYPE, WELCOME_SERVICE_FACTORY_BASE_TYPE, WebSocketCloseCode, WebSocketConnector, WebSocketState, WelcomeServiceFactory, _NoopFlowController, __runtimePluginLoader, addEnvelopeFields, addLogLevel, addTimestamp, assertConnectionGrant, assertGrant, assertNotRegexPattern, basicConfig, broadcastChannelGrantToConnectorConfig, camelToSnakeCase, canonicalJson, capitalizeFirstLetter, color, compareCryptoLevels, compileGlobOnlyScopeRequirement, compileGlobPattern, compilePattern, compileScopeRequirement, compiledPathPattern, consoleTransport, convertWildcardLogicalToDnsConstraint, createConnectorConfig, createEd25519Keypair, createHostLogicalUri, createLogicalUri, createNodeDeliveryContext, createResource, createRpcProxy, createRsaKeypair, createTransportCloseError, createX25519Keypair, credentialToString, currentTraceId$1 as currentTraceId, debounce, decodeBase64Url, decodeFameDataPayload, deepMerge, defaultJsonEncoder, delay, dropEmpty, enableLogging, encodeUtf8, ensureRuntimeFactoriesRegistered, evaluateScopeRequirement, extractId, extractPoolAddressBase, extractPoolBase, filterKeysByUse, formatTimestamp, formatTimestampForConsole$1 as formatTimestampForConsole, frameDigest, getCompiledGlobPattern, getCurrentEnvelope, getFabricForNode, getFameRoot, getKeyProvider, getKeyStore, getLogger, hasCryptoSupport, hostnameToLogical, hostnamesToLogicals, httpGrantToConnectorConfig, immutableHeaders, inPageGrantToConnectorConfig, isAuthInjectionStrategy, isBroadcastChannelConnectionGrant, isConnectionGrant, isConnectorConfig, isEnvelopeLoggingEnabled, isFameError, isFameErrorType, isGrant, isHttpConnectionGrant, isIdentityExposingTokenProvider, isInPageConnectionGrant, isNodeLike, isPlainObject$4 as isPlainObject, isPoolAddress, isPoolLogical, isRegexPattern, isRegisterable, isTokenExpired, isTokenProvider, isTokenValid, isWebSocketConnectionGrant, jsonDumps, logicalPatternsToDnsConstraints, logicalToHostname, logicalsToHostnames, matchPattern, matchesPoolAddress, matchesPoolLogical, maybeAwait, nodeWelcomeRouter, nodeWelcomeRouterPlugin, normalizeBroadcastChannelConnectionGrant, normalizeEncryptionConfig, normalizeEnvelopeSnapshot, normalizeHttpConnectionGrant, normalizeInPageConnectionGrant, normalizeInboundCryptoRules, normalizeInboundSigningRules, normalizeOutboundCryptoRules, normalizeOutboundSigningRules, normalizePath, normalizeResponseCryptoRules, normalizeResponseSigningRules, normalizeScopeRequirement, normalizeSecretSource, normalizeSecurityRequirements, normalizeSigningConfig, normalizeWebSocketConnectionGrant, objectToBytes, operation, parseSealedEnvelope, pinoTransport, prettyModel$1 as prettyModel, registerDefaultFactories, registerDefaultKeyStoreFactory, registerNodePlacementStrategyFactory, registerRuntimeFactories, requireCryptoSupport, retryWithBackoff, safeColor, safeImport, sealedDecrypt, sealedEncrypt, secureDigest, setKeyStore, showEnvelopes$1 as showEnvelopes, sleep, snakeToCamelCase, stringifyNonPrimitives, supportsColor, throttle, urlsafeBase64Decode, urlsafeBase64Encode, validateCacheTtlSec, validateEncryptionKey, validateHostLogical, validateHostLogicals, validateJwkComplete, validateJwkStructure, validateJwkUseField, validateJwtTokenTtlSec, validateKeyCorrelationTtlSec, validateLogical, validateLogicalSegment, validateOAuth2TtlSec, validateSigningKey, validateTtlSec, waitForAll, waitForAllSettled, waitForAny, websocketGrantToConnectorConfig, withEnvelopeContext, withEnvelopeContextAsync, withLegacySnakeCaseKeys, withLock, withTimeout };
43619
+ export { ADMISSION_CLIENT_FACTORY_BASE_TYPE, ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, AUTHORIZATION_POLICY_FACTORY_BASE_TYPE, AUTHORIZATION_POLICY_SOURCE_FACTORY_BASE_TYPE, AUTHORIZER_FACTORY_BASE_TYPE, AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY$1 as AUTH_PROFILE_ENV_VAR_ENFORCE_TOKEN_SUBJECT_NODE_IDENTITY, ENV_VAR_HMAC_SECRET$1 as AUTH_PROFILE_ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL$1 as AUTH_PROFILE_ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM$1 as AUTH_PROFILE_ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$2 as AUTH_PROFILE_ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE$1 as AUTH_PROFILE_ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER$1 as AUTH_PROFILE_ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER$1 as AUTH_PROFILE_ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_TRUSTED_CLIENT_SCOPE$1 as AUTH_PROFILE_ENV_VAR_TRUSTED_CLIENT_SCOPE, PROFILE_NAME_DEFAULT as AUTH_PROFILE_NAME_DEFAULT, PROFILE_NAME_NOOP$2 as AUTH_PROFILE_NAME_NOOP, PROFILE_NAME_OAUTH2 as AUTH_PROFILE_NAME_OAUTH2, PROFILE_NAME_OAUTH2_CALLBACK as AUTH_PROFILE_NAME_OAUTH2_CALLBACK, PROFILE_NAME_OAUTH2_GATED as AUTH_PROFILE_NAME_OAUTH2_GATED, AnsiColor, AsyncLock, AttachmentKeyValidator, AuthInjectionStrategyFactory, AuthorizationPolicyFactory, AuthorizationPolicySourceFactory, AuthorizationProfileFactory, AuthorizerFactory, BROADCAST_CHANNEL_CONNECTION_GRANT_TYPE, BackPressureFull, BaseAsyncConnector, BaseNodeEventListener, BasicAuthorizationPolicy, BasicAuthorizationPolicyFactory, BindingManager, BindingStoreEntryRecord, BrowserAutoKeyCredentialProvider, BrowserWrappedKeyCredentialProvider, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CONNECTION_RETRY_POLICY_FACTORY_BASE_TYPE, CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE, CRYPTO_LEVEL_SECURITY_ORDER, CertificateManagerFactory, ConnectionRetryPolicyFactory, ConnectorConfigDefaults, ConnectorFactory, ConsoleMetricsEmitter, CryptoLevel, FACTORY_META$11 as DEFAULT_WELCOME_FACTORY_META, DefaultConnectionRetryPolicy, DefaultConnectionRetryPolicyFactory, DefaultCryptoProvider, DefaultKeyManager, DefaultNodeIdentityPolicy, DefaultNodeIdentityPolicyFactory, DefaultSecurityManager, DefaultSecurityPolicy, DefaultWelcomeService, DefaultWelcomeServiceFactory, DevFixedKeyCredentialProvider, ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, ENV_VAR_AUTHORIZATION_PROFILE, ENV_VAR_DEFAULT_ENCRYPTION_LEVEL, ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$1 as ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_SESSION_MAX_INITIAL_ATTEMPTS, ENV_VAR_SHOW_ENVELOPES$1 as ENV_VAR_SHOW_ENVELOPES, EdDSAEnvelopeSigner, EncryptedKeyValueStore, EncryptedStorageProviderBase, EncryptedValue, EncryptionConfiguration, EncryptionManagerFactory, EncryptionResult, EncryptionStatus, EnvCredentialProvider, EnvelopeContext, EnvelopeListenerManager, EnvelopeSecurityHandler, EnvelopeSignerFactory, EnvelopeVerifierFactory, FACTORY_META$12 as FACTORY_META, FIXED_PREFIX_LEN, FameAuthorizedDeliveryContextSchema, FameConnectError, FameEnvironmentContext, FameError, FameMessageTooLarge, FameNode, FameNodeAuthorizationContextSchema, FameProtocolError, FameTransportClose, FlowController, GRANT_PURPOSE_NODE_ATTACH, HTTP_CONNECTION_GRANT_TYPE, HTTP_STATELESS_CONNECTOR_TYPE, INPAGE_CONNECTION_GRANT_TYPE, INPAGE_CONNECTOR_TYPE, InMemoryBinding, InMemoryFanoutBroker, InMemoryKeyValueStore, InMemoryReadWriteChannel, InMemoryStorageProvider, InPageConnector, IndexedDBKeyValueStore, IndexedDBStorageProvider, InvalidPassphraseError, JWKValidationError, KEY_MANAGER_FACTORY_BASE_TYPE, KEY_STORE_FACTORY_BASE_TYPE, KNOWN_POLICY_FIELDS, KNOWN_RULE_FIELDS, KeyInfo, KeyManagementHandler, KeyManagerFactory, KeyStore, KeyStoreFactory, KeyValidationError, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, LogLevel, LogLevelNames, MAX_SCOPE_NESTING_DEPTH, MemoryMetricsEmitter, NODE_IDENTITY_POLICY_FACTORY_BASE_TYPE, NODE_LIKE_FACTORY_BASE_TYPE, NODE_PLACEMENT_STRATEGY_FACTORY_BASE_TYPE, NoOpMetricsEmitter, NoSecurityPolicy, NodeFactory, NodeIdentityPolicyFactory, NodeIdentityPolicyProfileFactory, NodePlacementStrategyFactory, NoneCredentialProvider, NoopEncryptionManager, NoopKeyValidator, NoopTrustStoreProvider, NotAuthorized, PROFILE_NAME_GATED, PROFILE_NAME_GATED_CALLBACK, PROFILE_NAME_OPEN$1 as PROFILE_NAME_OPEN, PROFILE_NAME_OVERLAY, PROFILE_NAME_OVERLAY_CALLBACK, PROFILE_NAME_STRICT_OVERLAY, PromptCredentialProvider, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, REQUIRED_FIELDS_BY_KTY, ReplicaStickinessManagerFactory, RootSessionManager, RouteManager, RpcMixin, RpcProxy, SEALED_ENVELOPE_NONCE_LENGTH, SEALED_ENVELOPE_OVERHEAD, SEALED_ENVELOPE_PRIVATE_KEY_LENGTH, SEALED_ENVELOPE_PUBLIC_KEY_LENGTH, SEALED_ENVELOPE_TAG_LENGTH, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SECURITY_MANAGER_FACTORY_BASE_TYPE, SECURITY_POLICY_FACTORY_BASE_TYPE, STORAGE_PROVIDER_FACTORY_BASE_TYPE, SecretSource, SecretStoreCredentialProvider, SecureChannelFrameHandler, SecureChannelManagerFactory, SecurityAction, SecurityRequirements, Sentinel, SentinelFactory, SessionKeyCredentialProvider, SignaturePolicy, SigningConfig as SigningConfigClass, SigningConfiguration, SimpleLoadBalancerStickinessManager, SimpleLoadBalancerStickinessManagerFactory, StaticCredentialProvider, StorageAESEncryptionManager, TOKEN_ISSUER_FACTORY_BASE_TYPE, TOKEN_PROVIDER_FACTORY_BASE_TYPE, TOKEN_VERIFIER_FACTORY_BASE_TYPE, TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE, TaskSpawner, TokenIssuerFactory, TokenProviderFactory, TokenSubjectNodeIdentityPolicy, TokenSubjectNodeIdentityPolicyFactory, TokenVerifierFactory, TransportProvisionerFactory, TrustStoreProviderFactory, TtlValidationError, UpstreamSessionManager, VALID_ACTIONS, VALID_CURVES_BY_KTY, VALID_EFFECTS, VALID_KEY_USES, VALID_ORIGIN_TYPES, VERSION, WEBSOCKET_CONNECTION_GRANT_TYPE, WELCOME_SERVICE_FACTORY_BASE_TYPE, WebSocketCloseCode, WebSocketConnector, WebSocketState, WelcomeServiceFactory, _NoopFlowController, __runtimePluginLoader, addEnvelopeFields, addLogLevel, addTimestamp, assertConnectionGrant, assertGrant, assertNotRegexPattern, basicConfig, broadcastChannelGrantToConnectorConfig, camelToSnakeCase, canonicalJson, capitalizeFirstLetter, color, compareCryptoLevels, compileGlobOnlyScopeRequirement, compileGlobPattern, compilePattern, compileScopeRequirement, compiledPathPattern, consoleTransport, convertWildcardLogicalToDnsConstraint, createConnectorConfig, createEd25519Keypair, createHostLogicalUri, createLogicalUri, createNodeDeliveryContext, createResource, createRpcProxy, createRsaKeypair, createTransportCloseError, createX25519Keypair, credentialToString, currentTraceId$1 as currentTraceId, debounce, decodeBase64Url, decodeFameDataPayload, deepMerge, defaultJsonEncoder, delay, dropEmpty, enableLogging, encodeUtf8, ensureRuntimeFactoriesRegistered, evaluateScopeRequirement, extractId, extractPoolAddressBase, extractPoolBase, filterKeysByUse, formatTimestamp, formatTimestampForConsole$1 as formatTimestampForConsole, frameDigest, getCompiledGlobPattern, getCurrentEnvelope, getFabricForNode, getFameRoot, getKeyProvider, getKeyStore, getLogger, hasCryptoSupport, hostnameToLogical, hostnamesToLogicals, httpGrantToConnectorConfig, immutableHeaders, inPageGrantToConnectorConfig, isAuthInjectionStrategy, isBroadcastChannelConnectionGrant, isConnectionGrant, isConnectorConfig, isEnvelopeLoggingEnabled, isFameError, isFameErrorType, isGrant, isHttpConnectionGrant, isIdentityExposingTokenProvider, isInPageConnectionGrant, isNodeLike, isPlainObject$4 as isPlainObject, isPoolAddress, isPoolLogical, isRegexPattern, isRegisterable, isTokenExpired, isTokenProvider, isTokenValid, isWebSocketConnectionGrant, jsonDumps, logicalPatternsToDnsConstraints, logicalToHostname, logicalsToHostnames, matchPattern, matchesPoolAddress, matchesPoolLogical, maybeAwait, nodeWelcomeRouter, nodeWelcomeRouterPlugin, normalizeBroadcastChannelConnectionGrant, normalizeEncryptionConfig, normalizeEnvelopeSnapshot, normalizeHttpConnectionGrant, normalizeInPageConnectionGrant, normalizeInboundCryptoRules, normalizeInboundSigningRules, normalizeOutboundCryptoRules, normalizeOutboundSigningRules, normalizePath, normalizeResponseCryptoRules, normalizeResponseSigningRules, normalizeScopeRequirement, normalizeSecretSource, normalizeSecurityRequirements, normalizeSigningConfig, normalizeWebSocketConnectionGrant, objectToBytes, operation, parseSealedEnvelope, pinoTransport, prettyModel$1 as prettyModel, registerDefaultFactories, registerDefaultKeyStoreFactory, registerNodePlacementStrategyFactory, registerRuntimeFactories, requireCryptoSupport, retryWithBackoff, safeColor, safeImport, sealedDecrypt, sealedEncrypt, secureDigest, setKeyStore, showEnvelopes$1 as showEnvelopes, sleep, snakeToCamelCase, stringifyNonPrimitives, supportsColor, throttle, urlsafeBase64Decode, urlsafeBase64Encode, validateCacheTtlSec, validateEncryptionKey, validateHostLogical, validateHostLogicals, validateJwkComplete, validateJwkStructure, validateJwkUseField, validateJwtTokenTtlSec, validateKeyCorrelationTtlSec, validateLogical, validateLogicalSegment, validateOAuth2TtlSec, validateSigningKey, validateTtlSec, waitForAll, waitForAllSettled, waitForAny, websocketGrantToConnectorConfig, withEnvelopeContext, withEnvelopeContextAsync, withLegacySnakeCaseKeys, withLock, withTimeout };