@naylence/runtime 0.3.5-test.5 → 0.3.5-test.6
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.
- package/dist/browser/index.cjs +15609 -1876
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.mjs +15607 -1877
- package/dist/browser/index.mjs.map +1 -1
- package/dist/cjs/runtime-isomorphic.js +2 -0
- package/dist/cjs/runtime-isomorphic.js.map +1 -1
- package/dist/esm/runtime-isomorphic.js +2 -0
- package/dist/esm/runtime-isomorphic.js.map +1 -1
- package/dist/node/index.cjs +15609 -1876
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.mjs +15607 -1877
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/node.cjs +18359 -18359
- package/dist/node/node.cjs.map +1 -1
- package/dist/node/node.mjs +18361 -18361
- package/dist/node/node.mjs.map +1 -1
- package/dist/types/runtime-isomorphic.d.ts +1 -0
- package/dist/types/runtime-isomorphic.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../esm/naylence/fame/errors/errors.js","../esm/naylence/fame/util/logging-types.js","../esm/naylence/fame/util/envelope-context.js","../esm/naylence/fame/util/logging.js","../esm/naylence/fame/util/task-types.js","../esm/naylence/fame/util/task-spawner.js","../esm/naylence/fame/util/lock.js","../esm/naylence/fame/util/task-utils.js","../esm/naylence/fame/util/formatter.js","../esm/naylence/fame/util/metrics-emitter.js","../esm/naylence/fame/util/util.js","../esm/naylence/fame/util/logicals.js","../esm/naylence/fame/constants/ttl-constants.js","../esm/naylence/fame/util/ttl-validation.js","../esm/naylence/fame/channel/flow-controller.js","../esm/naylence/fame/channel/in-memory/in-memory-channel.js","../esm/naylence/fame/channel/in-memory/in-memory-binding.js","../esm/naylence/fame/channel/in-memory/in-memory-fanout-broker.js","../esm/naylence/fame/storage/in-memory-storage.js","../esm/naylence/fame/storage/storage-provider-factory.js","../esm/naylence/fame/security/credential/browser-auto-key-credential-provider.js","../esm/naylence/fame/storage/encrypted-storage-provider-base.js","../esm/naylence/fame/storage/indexeddb-key-value-store.js","../esm/naylence/fame/storage/indexeddb-storage-provider.js","../esm/naylence/fame/node/node-context-stack.js","../esm/naylence/fame/connector/noop-flow-controller.js","../esm/naylence/fame/connector/base-async-connector.js","../esm/naylence/fame/connector/connector-config.js","../esm/naylence/fame/connector/connector-factory.js","../esm/naylence/fame/connector/websocket-connector.js","../esm/naylence/fame/service/rpc.js","../esm/naylence/fame/factory-manifest.js","../esm/naylence/fame/util/register-runtime-factories.js","../esm/naylence/fame/security/crypto/crypto-dependencies.js","../esm/naylence/fame/security/credential/browser-wrapped-key-credential-provider.js","../esm/runtime-isomorphic.js","../esm/plugin.js","../esm/naylence/fame/grants/grant.js","../esm/naylence/fame/grants/connection-grant.js","../esm/naylence/fame/grants/websocket-connection-grant.js","../esm/naylence/fame/transport/transport-provisioner.js","../esm/naylence/fame/transport/websocket-transport-provisioner.js"],"sourcesContent":["/**\n * Fame protocol specific error classes with WebSocket close codes and proper inheritance.\n */\n/**\n * Base class for all Fame-related errors.\n */\nexport class FameError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n this.name = this.constructor.name;\n // Maintain proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when the Fame transport is closed.\n * Maps to WebSocket close event codes.\n */\nexport class FameTransportClose extends FameError {\n constructor(message = 'Fame transport closed', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame connection cannot be established.\n */\nexport class FameConnectError extends FameError {\n constructor(message = 'Failed to connect to Fame service', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame message exceeds the maximum allowed size.\n */\nexport class FameMessageTooLarge extends FameError {\n constructor(message = 'Fame message too large', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame protocol violation occurs.\n */\nexport class FameProtocolError extends FameError {\n constructor(message = 'Fame protocol error', code) {\n super(message, code);\n }\n}\n/**\n * Raised when the Fame back pressure buffer is full.\n */\nexport class BackPressureFull extends FameError {\n constructor(message = 'Back pressure buffer full', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame operation is not authorized.\n */\nexport class NotAuthorized extends FameError {\n constructor(message = 'Not authorized', code) {\n super(message, code);\n }\n}\n/**\n * WebSocket close codes used by Fame protocol.\n * @see https://tools.ietf.org/html/rfc6455#section-7.4.1\n */\nexport const WebSocketCloseCode = {\n /** Normal closure; the connection successfully completed whatever purpose for which it was created. */\n NORMAL_CLOSURE: 1000,\n /** The endpoint is going away, either because of a server failure or because the browser is navigating away. */\n GOING_AWAY: 1001,\n /** The endpoint is terminating the connection due to a protocol error. */\n PROTOCOL_ERROR: 1002,\n /** The connection is being terminated because the endpoint received data of a type it cannot accept. */\n UNSUPPORTED_DATA: 1003,\n /** The endpoint is terminating the connection because a message was received that is too big to process. */\n MESSAGE_TOO_BIG: 1009,\n /** The client is terminating the connection because it expected the server to negotiate one or more extension. */\n MANDATORY_EXTENSION: 1010,\n /** The server is terminating the connection because it encountered an unexpected condition. */\n INTERNAL_ERROR: 1011,\n /** The service is restarting. A client may reconnect, and if it chooses to do so, should reconnect using a randomized delay. */\n SERVICE_RESTART: 1012,\n /** The service is experiencing overload. A client should only connect to a different IP (when there are multiple for the target) or reconnect to the same IP upon user action. */\n TRY_AGAIN_LATER: 1013,\n /** The server was acting as a gateway or proxy and received an invalid response from the upstream server. */\n BAD_GATEWAY: 1014,\n};\n/**\n * Check if an error is a Fame-related error.\n */\nexport function isFameError(error) {\n return error instanceof FameError;\n}\n/**\n * Check if an error is a specific Fame error type.\n */\nexport function isFameErrorType(error, errorClass) {\n return error instanceof errorClass;\n}\n/**\n * Create a FameTransportClose error from a WebSocket close event.\n */\nexport function createTransportCloseError(code, reason) {\n const message = reason || `Transport closed with code ${code}`;\n return new FameTransportClose(message, code);\n}\n//# sourceMappingURL=errors.js.map","/**\n * Cross-platform logging utilities for Naylence Fame\n *\n * This module provides structured logging that works in both Node.js and browser environments.\n * It mimics the functionality of the Python structlog-based logging system.\n */\n// Log levels matching Python logging\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"TRACE\"] = 5] = \"TRACE\";\n LogLevel[LogLevel[\"DEBUG\"] = 10] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 20] = \"INFO\";\n LogLevel[LogLevel[\"WARNING\"] = 30] = \"WARNING\";\n LogLevel[LogLevel[\"ERROR\"] = 40] = \"ERROR\";\n LogLevel[LogLevel[\"CRITICAL\"] = 50] = \"CRITICAL\";\n LogLevel[LogLevel[\"OFF\"] = 100] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport const LogLevelNames = {\n [LogLevel.TRACE]: 'TRACE',\n [LogLevel.DEBUG]: 'DEBUG',\n [LogLevel.INFO]: 'INFO',\n [LogLevel.WARNING]: 'WARNING',\n [LogLevel.ERROR]: 'ERROR',\n [LogLevel.CRITICAL]: 'CRITICAL',\n [LogLevel.OFF]: 'OFF',\n};\n// Environment detection\nexport const isNode = (() => {\n try {\n return (typeof globalThis !== 'undefined' &&\n typeof globalThis.process !== 'undefined' &&\n globalThis.process.versions?.node);\n }\n catch {\n return false;\n }\n})();\nexport const isBrowser = !isNode;\nfunction resolveSnapshotValue(snapshot, camelKey, snakeKey) {\n if (snapshot[camelKey] !== undefined) {\n return snapshot[camelKey];\n }\n if (snapshot[snakeKey] !== undefined) {\n return snapshot[snakeKey];\n }\n return undefined;\n}\nexport function normalizeEnvelopeSnapshot(snapshot) {\n if (!snapshot) {\n return {};\n }\n const normalized = {};\n const traceId = resolveSnapshotValue(snapshot, 'traceId', 'trace_id');\n if (traceId !== undefined) {\n normalized.trace_id = traceId;\n }\n if (snapshot.id !== undefined) {\n normalized.id = snapshot.id;\n }\n const flowId = resolveSnapshotValue(snapshot, 'flowId', 'flow_id');\n if (flowId !== undefined) {\n normalized.flow_id = flowId;\n }\n return normalized;\n}\n//# sourceMappingURL=logging-types.js.map","/**\n * Envelope context management for cross-platform environments\n *\n * This provides similar functionality to Python's envelope_context using AsyncLocalStorage in Node.js\n * and a simple context stack in browsers.\n */\nimport { normalizeEnvelopeSnapshot, } from './logging-types.js';\n// Cross-platform context storage\nclass EnvelopeContextManager {\n constructor() {\n this.nodeStorage = null;\n this.browserStack = [];\n // Try to use AsyncLocalStorage in Node.js environments\n this.initializeStorage();\n }\n initializeStorage() {\n // Only try to load AsyncLocalStorage in Node.js environments\n if (typeof globalThis !== 'undefined' &&\n globalThis.process?.versions?.node) {\n try {\n // Try to require async_hooks synchronously - this will only work in Node.js\n // The bundler will handle this gracefully for browser builds\n if (typeof require !== 'undefined') {\n const { AsyncLocalStorage } = require('async_hooks');\n this.nodeStorage = new AsyncLocalStorage();\n }\n }\n catch {\n // Fall back to browser-style stack if AsyncLocalStorage isn't available\n this.nodeStorage = null;\n }\n }\n }\n /**\n * Get the current envelope context\n */\n getCurrentContext() {\n if (this.nodeStorage) {\n return this.nodeStorage.getStore();\n }\n // Browser fallback - return the top of the stack\n return this.browserStack[this.browserStack.length - 1];\n }\n /**\n * Run a function with envelope context\n */\n runWithContext(context, fn) {\n if (this.nodeStorage) {\n return this.nodeStorage.run(context, fn);\n }\n // Browser fallback - use a simple stack\n this.browserStack.push(context);\n try {\n return fn();\n }\n finally {\n this.browserStack.pop();\n }\n }\n /**\n * Run an async function with envelope context\n */\n async runWithContextAsync(context, fn) {\n if (this.nodeStorage) {\n return this.nodeStorage.run(context, fn);\n }\n // Browser fallback - use a simple stack\n this.browserStack.push(context);\n try {\n return await fn();\n }\n finally {\n this.browserStack.pop();\n }\n }\n}\n// Global instance\nconst envelopeContextManager = new EnvelopeContextManager();\n/**\n * Get the current envelope context\n */\nexport function getCurrentEnvelope() {\n return envelopeContextManager.getCurrentContext();\n}\nexport function currentTraceId() {\n return envelopeContextManager.getCurrentContext()?.trace_id;\n}\n/**\n * Context manager function (similar to Python's envelope_context)\n */\nexport function withEnvelopeContext(envelope, fn) {\n const context = normalizeEnvelopeSnapshot(envelope);\n return envelopeContextManager.runWithContext(context, fn);\n}\n/**\n * Async context manager function\n */\nexport async function withEnvelopeContextAsync(envelope, fn) {\n const context = normalizeEnvelopeSnapshot(envelope);\n return envelopeContextManager.runWithContextAsync(context, fn);\n}\n/**\n * Class-based context manager (similar to Python's context manager protocol)\n */\nexport class EnvelopeContext {\n constructor(envelope) {\n this.envelope = envelope;\n }\n run(fn) {\n return withEnvelopeContext(this.envelope, fn);\n }\n async runAsync(fn) {\n return withEnvelopeContextAsync(this.envelope, fn);\n }\n}\n//# sourceMappingURL=envelope-context.js.map","/**\n * Cross-platform structured logging implementation\n *\n * This module provides a unified logging interface that works in both Node.js and browser environments.\n * It includes structured logging with processors similar to Python's structlog.\n *\n * Environment Variables:\n * - FAME_LOG_LEVEL: Set the initial log level at framework initialization (Node.js only)\n * Valid values: TRACE, DEBUG, INFO, WARNING, WARN, ERROR, CRITICAL\n * Default: INFO (balanced verbosity), OFF during tests\n *\n * Usage:\n * ```typescript\n * // Automatic - just set the environment variable\n * // FAME_LOG_LEVEL=INFO node my-app.js\n *\n * // Or call enableLogging() to override at runtime\n * import { enableLogging, getLogger } from '@naylence/runtime';\n * enableLogging('DEBUG');\n *\n * const logger = getLogger('my.app');\n * logger.info('Application started');\n * ```\n */\nimport { LogLevel, LogLevelNames, isNode, } from './logging-types.js';\nimport { getCurrentEnvelope } from './envelope-context.js';\n// Default processors (similar to structlog processors)\nexport const addTimestamp = (entry) => {\n return {\n ...entry,\n timestamp: new Date().toISOString(),\n };\n};\nexport const addLogLevel = (entry) => {\n return {\n ...entry,\n level_name: LogLevelNames[entry.level],\n };\n};\nexport const addEnvelopeFields = (entry) => {\n const envelope = getCurrentEnvelope();\n if (!envelope)\n return entry;\n const updates = {};\n if (envelope.trace_id)\n updates.trace_id = envelope.trace_id;\n if (envelope.id)\n updates.ctx_envp_id = envelope.id;\n if (envelope.flow_id)\n updates.ctx_flow_id = envelope.flow_id;\n return { ...entry, ...updates };\n};\nexport const dropEmpty = (entry) => {\n const result = { ...entry };\n // Remove empty values\n for (const [key, value] of Object.entries(result)) {\n if (value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' &&\n value !== null &&\n Object.keys(value).length === 0)) {\n delete result[key];\n }\n }\n return result;\n};\nexport const stringifyNonPrimitives = (entry) => {\n const result = { ...entry };\n const primitives = ['string', 'number', 'boolean', 'undefined'];\n for (const [key, value] of Object.entries(result)) {\n if (value !== null &&\n !primitives.includes(typeof value) &&\n !Array.isArray(value)) {\n result[key] = String(value);\n }\n }\n return result;\n};\nconst CORE_LOG_FIELDS = new Set([\n 'timestamp',\n 'level',\n 'logger',\n 'event',\n 'level_name',\n]);\nconst ANSI_RESET = '\\u001B[0m';\nfunction formatValueForConsole(value) {\n if (value === null)\n return 'null';\n if (value === undefined)\n return 'undefined';\n if (typeof value === 'string') {\n return /[\\s\"=]/.test(value) ? JSON.stringify(value) : value;\n }\n if (typeof value === 'number' ||\n typeof value === 'bigint' ||\n typeof value === 'boolean') {\n return String(value);\n }\n try {\n return JSON.stringify(value);\n }\n catch {\n return String(value);\n }\n}\nfunction buildConsoleParts(entry) {\n const timestamp = entry.timestamp ?? new Date().toISOString();\n const levelName = entry.level_name ?? LogLevelNames[entry.level] ?? String(entry.level);\n const loggerName = entry.logger ?? 'root';\n const event = entry.event ?? '';\n const extras = [];\n for (const [key, value] of Object.entries(entry)) {\n if (CORE_LOG_FIELDS.has(key))\n continue;\n extras.push(`${key}=${formatValueForConsole(value)}`);\n }\n extras.sort((a, b) => a.localeCompare(b));\n return { timestamp, levelName, loggerName, event, extras };\n}\nfunction supportsAnsiColors() {\n if (!isNode)\n return false;\n if (typeof process === 'undefined')\n return false;\n const stdout = process.stdout;\n return Boolean(stdout && typeof stdout.isTTY === 'boolean' && stdout.isTTY);\n}\nfunction getAnsiColor(level) {\n switch (level) {\n case LogLevel.TRACE:\n return '\\u001B[90m';\n case LogLevel.DEBUG:\n return '\\u001B[36m';\n case LogLevel.INFO:\n return '\\u001B[32m';\n case LogLevel.WARNING:\n return '\\u001B[33m';\n case LogLevel.ERROR:\n return '\\u001B[31m';\n case LogLevel.CRITICAL:\n return '\\u001B[31m';\n default:\n return null;\n }\n}\nfunction formatNodeConsoleLine(entry) {\n const { timestamp, levelName, loggerName, event, extras } = buildConsoleParts(entry);\n const shouldColorize = supportsAnsiColors() && !isTest;\n const paddedLevel = levelName.toUpperCase().padEnd(7, ' ');\n const color = shouldColorize ? getAnsiColor(entry.level) : null;\n const levelSegment = color\n ? `${color}${paddedLevel}${ANSI_RESET}`\n : paddedLevel;\n const extrasJoined = extras.join(' ');\n const eventSegment = event ? ` | ${event}` : '';\n const extrasSegment = extrasJoined\n ? event\n ? ` ${extrasJoined}`\n : ` | ${extrasJoined}`\n : '';\n return `${timestamp} | ${levelSegment} | ${loggerName}${eventSegment}${extrasSegment}`.trimEnd();\n}\nfunction formatBrowserConsoleLine(entry) {\n const { timestamp, levelName, loggerName, event, extras } = buildConsoleParts(entry);\n const color = getConsoleColor(entry.level);\n const extrasJoined = extras.join(' ');\n const eventSegment = event ? ` | ${event}` : '';\n const extrasSegment = extrasJoined\n ? event\n ? ` ${extrasJoined}`\n : ` | ${extrasJoined}`\n : '';\n const message = `%c${timestamp} | ${levelName.toUpperCase()} | ${loggerName}${eventSegment}${extrasSegment}`;\n return { message, styles: [color] };\n}\n// Default transports\nexport const consoleTransport = (entry) => {\n if (isNode) {\n console.log(formatNodeConsoleLine(entry));\n }\n else {\n const { message, styles } = formatBrowserConsoleLine(entry);\n console.log(message, ...styles);\n }\n};\nfunction getConsoleColor(level) {\n switch (level) {\n case LogLevel.TRACE:\n return 'color: #9AA0A6';\n case LogLevel.DEBUG:\n return 'color: #50B5FF';\n case LogLevel.INFO:\n return 'color: #2E7D32; font-weight: 600';\n case LogLevel.WARNING:\n return 'color: #F9AB00; font-weight: 600';\n case LogLevel.ERROR:\n return 'color: #E53935; font-weight: 600';\n case LogLevel.CRITICAL:\n return 'color: #B71C1C; font-weight: 700; text-decoration: underline';\n default:\n return 'color: #37474F';\n }\n}\n// Node.js-specific Pino transport (when available)\nlet pinoLogger = null;\nexport const pinoTransport = (entry) => {\n if (!isNode || !pinoLogger) {\n // Fall back to console if Pino isn't available\n consoleTransport(entry);\n return;\n }\n const { level, event, ...extra } = entry;\n const pinoLevel = getPinoLevel(level);\n pinoLogger[pinoLevel](extra, event);\n};\nfunction getPinoLevel(level) {\n switch (level) {\n case LogLevel.TRACE:\n return 'trace';\n case LogLevel.DEBUG:\n return 'debug';\n case LogLevel.INFO:\n return 'info';\n case LogLevel.WARNING:\n return 'warn';\n case LogLevel.ERROR:\n return 'error';\n case LogLevel.CRITICAL:\n return 'fatal';\n default:\n return 'info';\n }\n}\n// Initialize Pino if available (Node.js only)\nfunction initializePino() {\n if (!isNode || pinoLogger)\n return;\n if (isTest) {\n // Don't initialize Pino in tests to avoid worker threads\n return;\n }\n try {\n // Try to require pino synchronously - this will only work in Node.js\n if (typeof require !== 'undefined') {\n const pino = require('pino');\n // Use pretty transport for development\n pinoLogger = pino({\n level: 'trace',\n customLevels: { trace: 5 },\n transport: {\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'yyyy-mm-dd HH:MM:ss',\n ignore: 'pid,hostname',\n },\n },\n });\n // Switch default transport to Pino now that it's available\n defaultConfig.transports = [pinoTransport];\n }\n }\n catch {\n // Pino not available, fall back to console\n pinoLogger = null;\n }\n}\n// Detect test environment for quieter logging\nconst isTest = typeof process !== 'undefined' &&\n (process.env.NODE_ENV === 'test' ||\n process.env.JEST_WORKER_ID !== undefined ||\n (typeof global !== 'undefined' && global.expect !== undefined));\n// Initialize Pino immediately in Node.js environments\nif (isNode) {\n initializePino();\n}\n/**\n * Get initial log level from environment variable or defaults\n */\nfunction getInitialLogLevel() {\n // Tests should be silent\n if (isTest) {\n return LogLevel.OFF;\n }\n // Check FAME_LOG_LEVEL environment variable\n if (isNode && typeof process !== 'undefined' && process.env.FAME_LOG_LEVEL) {\n try {\n const envLevel = process.env.FAME_LOG_LEVEL.trim().toUpperCase();\n // Direct enum name match (e.g., \"DEBUG\", \"INFO\")\n if (envLevel in LogLevel) {\n return LogLevel[envLevel];\n }\n // Try alternative mappings\n if (envLevel === 'WARN')\n return LogLevel.WARNING;\n }\n catch {\n // Fall through to default\n }\n }\n // Default to INFO - balanced verbosity for most use cases\n return LogLevel.INFO;\n}\nconst defaultConfig = {\n level: getInitialLogLevel(),\n processors: [\n addTimestamp,\n addEnvelopeFields,\n dropEmpty,\n stringifyNonPrimitives,\n addLogLevel,\n ],\n transports: [consoleTransport], // Start with console, switch to Pino when available\n};\nconst logLevelValues = new Set();\nconst logLevelNameLookup = new Map();\nfor (const value of Object.values(LogLevel)) {\n if (typeof value === 'number') {\n logLevelValues.add(value);\n const name = LogLevelNames[value];\n if (name) {\n logLevelNameLookup.set(name.toUpperCase(), value);\n }\n }\n}\n// Logger implementation\nclass FameLogger {\n constructor(name, config = {}, bindings = {}) {\n this.name = name;\n this.config = { ...defaultConfig, ...config };\n this.bindings = bindings;\n }\n log(level, event, extra = {}) {\n if (level < this.config.level)\n return;\n let entry = {\n timestamp: '',\n level,\n logger: this.name,\n event,\n ...this.bindings,\n ...extra,\n };\n // Apply processors\n for (const processor of this.config.processors) {\n const processed = processor(entry);\n if (processed === null)\n return; // Processor filtered out the entry\n entry = processed;\n }\n // Send to transports\n for (const transport of this.config.transports) {\n transport(entry);\n }\n }\n trace(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.TRACE, event, extra);\n }\n debug(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.DEBUG, event, extra);\n }\n info(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.INFO, event, extra);\n }\n warning(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.WARNING, event, extra);\n }\n error(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.ERROR, event, extra);\n }\n critical(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.CRITICAL, event, extra);\n }\n child(bindings) {\n return new FameLogger(this.name, this.config, {\n ...this.bindings,\n ...bindings,\n });\n }\n setLevel(level) {\n this.config.level = level;\n }\n parseArgs(args) {\n if (args.length === 0)\n return {};\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null) {\n return args[0];\n }\n // Convert positional args to numbered keys\n const result = {};\n args.forEach((arg, index) => {\n result[`arg${index}`] = arg;\n });\n return result;\n }\n}\n// Global logger registry\nconst loggers = new Map();\nlet naylenceLogLevelOverride = null;\nfunction isNaylenceLogger(name) {\n return name === 'naylence' || name.startsWith('naylence.');\n}\nfunction normalizeLogLevel(level) {\n if (typeof level === 'number') {\n if (logLevelValues.has(level)) {\n return level;\n }\n }\n else {\n const key = level.toString().toUpperCase();\n const resolved = logLevelNameLookup.get(key);\n if (resolved !== undefined) {\n return resolved;\n }\n }\n throw new Error(`Unknown log level: ${level}`);\n}\n/**\n * Get a logger instance (similar to Python's getLogger)\n */\nexport function getLogger(name) {\n if (!loggers.has(name)) {\n const config = {};\n if (naylenceLogLevelOverride !== null && isNaylenceLogger(name)) {\n config.level = naylenceLogLevelOverride;\n }\n loggers.set(name, new FameLogger(name, config));\n }\n return loggers.get(name);\n}\n/**\n * Configure basic logging (similar to Python's basicConfig)\n */\nexport function basicConfig(options = {}) {\n const level = options.level ?? LogLevel.TRACE;\n const useJson = options.format === 'json';\n const transport = useJson\n ? (entry) => console.log(JSON.stringify(entry))\n : consoleTransport;\n // Update default config\n defaultConfig.level = level;\n defaultConfig.transports = [transport];\n // Update existing loggers\n for (const logger of loggers.values()) {\n logger.setLevel(level);\n }\n}\nexport function enableLogging(level) {\n const resolvedLevel = normalizeLogLevel(level);\n basicConfig({ level: LogLevel.WARNING });\n naylenceLogLevelOverride = resolvedLevel;\n for (const [name, logger] of loggers.entries()) {\n if (isNaylenceLogger(name)) {\n logger.setLevel(resolvedLevel);\n }\n }\n}\nexport function summarizeEnvelope(envelope, prefix = 'child_') {\n if (!envelope) {\n return {};\n }\n const safePrefix = prefix ?? '';\n return {\n [`${safePrefix}envp_id`]: envelope.id ?? null,\n [`${safePrefix}sid`]: envelope.sid ? `${String(envelope.sid)}…` : null,\n [`${safePrefix}to`]: envelope.to ? String(envelope.to) : null,\n [`${safePrefix}trace_id`]: envelope.traceId ?? null,\n [`${safePrefix}frame`]: envelope.frame && typeof envelope.frame === 'object'\n ? (envelope.frame.type ??\n envelope.frame.constructor?.name ??\n 'Unknown')\n : null,\n [`${safePrefix}corr_id`]: envelope.corrId ?? null,\n };\n}\n// Re-export log levels and types\nexport { LogLevel, LogLevelNames } from './logging-types.js';\n//# sourceMappingURL=logging.js.map","/**\n * Cross-platform task spawning and management utilities\n *\n * This module provides functionality similar to Python's asyncio.Task and TaskSpawner,\n * adapted for JavaScript/TypeScript environments.\n */\n// Task states\nexport var TaskState;\n(function (TaskState) {\n TaskState[\"RUNNING\"] = \"running\";\n TaskState[\"COMPLETED\"] = \"completed\";\n TaskState[\"FAILED\"] = \"failed\";\n TaskState[\"CANCELLED\"] = \"cancelled\";\n})(TaskState || (TaskState = {}));\n// Errors that can be thrown by tasks\nexport class TaskTimeoutError extends Error {\n constructor(taskName, timeout) {\n super(`Task ${taskName || 'unknown'} timed out after ${timeout}ms`);\n this.name = 'TaskTimeoutError';\n }\n}\nexport class TaskCancelledError extends Error {\n constructor(taskName) {\n super(`Task ${taskName || 'unknown'} was cancelled`);\n this.name = 'TaskCancelledError';\n }\n}\n//# sourceMappingURL=task-types.js.map","/**\n * TaskSpawner - Cross-platform async task management\n *\n * Provides functionality similar to Python's asyncio TaskSpawner with proper\n * error handling, cancellation, and graceful shutdown capabilities.\n */\nimport { getLogger } from './logging.js';\nimport { withEnvelopeContextAsync, getCurrentEnvelope, } from './envelope-context.js';\nimport { TaskState, TaskTimeoutError, TaskCancelledError, } from './task-types.js';\nconst logger = getLogger('naylence.fame.util.task_spawner');\nfunction firstDefined(source, keys) {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const value = source[key];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction coerceNumber(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return undefined;\n }\n const parsed = Number(trimmed);\n if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {\n return parsed;\n }\n }\n return undefined;\n}\nfunction coerceBoolean(value) {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized.length === 0) {\n return undefined;\n }\n if (['true', '1', 'yes', 'on'].includes(normalized)) {\n return true;\n }\n if (['false', '0', 'no', 'off'].includes(normalized)) {\n return false;\n }\n }\n return undefined;\n}\nfunction normalizeTaskSpawnerConfig(config = {}) {\n const source = config;\n const maxConcurrent = coerceNumber(firstDefined(source, ['maxConcurrent', 'max_concurrent'])) ??\n 0;\n const defaultTimeout = coerceNumber(firstDefined(source, ['defaultTimeout', 'default_timeout'])) ??\n 0;\n const autoCleanup = coerceBoolean(firstDefined(source, ['autoCleanup', 'auto_cleanup'])) ??\n true;\n return {\n maxConcurrent,\n defaultTimeout,\n autoCleanup,\n };\n}\nfunction normalizeSpawnOptions(options = {}) {\n const source = options;\n const nameRaw = firstDefined(source, ['name', 'task_name', 'taskName']);\n const timeoutRaw = firstDefined(source, [\n 'timeout',\n 'task_timeout',\n 'taskTimeout',\n ]);\n const name = typeof nameRaw === 'string' ? nameRaw : undefined;\n const timeout = coerceNumber(timeoutRaw);\n return { name, timeout };\n}\nfunction normalizeShutdownOptions(options = {}) {\n const source = options;\n const gracePeriod = coerceNumber(firstDefined(source, ['gracePeriod', 'grace_period'])) ?? 2000;\n const cancelHanging = coerceBoolean(firstDefined(source, ['cancelHanging', 'cancel_hanging'])) ??\n true;\n const joinTimeout = coerceNumber(firstDefined(source, ['joinTimeout', 'join_timeout'])) ?? 1000;\n return {\n gracePeriod,\n cancelHanging,\n joinTimeout,\n };\n}\n// Internal task implementation\nclass TaskImpl {\n constructor(id, name, promise, abortController) {\n this._state = TaskState.RUNNING;\n this.id = id;\n this.name = name || `task-${id}`;\n this.abortController = abortController;\n this.startTime = Date.now();\n // Wrap the promise to track state changes\n this.promise = promise\n .then((result) => {\n this._state = TaskState.COMPLETED;\n this._result = result;\n return result;\n })\n .catch((error) => {\n if (error.name === 'AbortError' ||\n this.abortController.signal.aborted) {\n this._state = TaskState.CANCELLED;\n throw new TaskCancelledError(this.name);\n }\n else {\n this._state = TaskState.FAILED;\n this._error = error;\n throw error;\n }\n });\n }\n cancel() {\n if (this._state === TaskState.RUNNING) {\n this.abortController.abort();\n }\n }\n isCancelled() {\n return this._state === TaskState.CANCELLED;\n }\n isCompleted() {\n return this._state === TaskState.COMPLETED;\n }\n isFailed() {\n return this._state === TaskState.FAILED;\n }\n getState() {\n return this._state;\n }\n getResult() {\n return this._result;\n }\n getError() {\n return this._error;\n }\n}\nexport class TaskSpawner {\n constructor(config = {}) {\n this._tasks = new Map();\n this._taskCounter = 0;\n this._lastSpawnerError = null;\n this._suppressCompletionLogging = false;\n this._config = normalizeTaskSpawnerConfig(config);\n }\n /**\n * Spawn a new async task with proper error handling and context propagation\n */\n spawn(taskFn, options = {}) {\n const normalizedOptions = normalizeSpawnOptions(options);\n // Reset logging suppression when new work is spawned. Any lingering\n // completion events from a previous shutdown will remain suppressed\n // until the corresponding tasks finish.\n this._suppressCompletionLogging = false;\n // Check concurrency limits\n if (this._config.maxConcurrent > 0 &&\n this._tasks.size >= this._config.maxConcurrent) {\n throw new Error(`Task limit reached: ${this._config.maxConcurrent} concurrent tasks`);\n }\n const taskId = `task-${++this._taskCounter}`;\n const taskName = normalizedOptions.name || `unnamed-${taskId}`;\n const timeout = normalizedOptions.timeout ?? this._config.defaultTimeout;\n logger.debug('starting_background_task', {\n task_name: taskName,\n task_id: taskId,\n });\n // Create abort controller for cancellation\n const abortController = new AbortController();\n // Capture current envelope context\n const currentEnvelope = getCurrentEnvelope();\n // Create the task promise with context propagation\n const taskPromise = this._createTaskPromise(taskFn, abortController.signal, timeout, taskName, currentEnvelope);\n // Create task wrapper\n const task = new TaskImpl(taskId, taskName, taskPromise, abortController);\n this._tasks.set(taskId, task);\n // Set up completion handling\n task.promise\n .then(() => {\n if (!this._suppressCompletionLogging) {\n logger.debug('task_completed_successfully', {\n task_name: taskName,\n task_id: taskId,\n duration_ms: Date.now() - task.startTime,\n });\n }\n })\n .catch((error) => {\n this._handleTaskError(task, error);\n })\n .finally(() => {\n if (this._config.autoCleanup) {\n this._tasks.delete(taskId);\n }\n });\n return task;\n }\n /**\n * Create the actual task promise with all the wrapping logic\n */\n async _createTaskPromise(taskFn, signal, timeout, taskName, envelopeContext) {\n // Run the task with envelope context if available\n const runTask = envelopeContext\n ? () => withEnvelopeContextAsync(envelopeContext, () => taskFn(signal))\n : () => taskFn(signal);\n // Handle timeout if specified\n if (timeout > 0) {\n return Promise.race([\n runTask(),\n this._createTimeoutPromise(timeout, taskName),\n ]);\n }\n return runTask();\n }\n /**\n * Create a timeout promise that rejects after the specified time\n */\n _createTimeoutPromise(timeout, taskName) {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new TaskTimeoutError(taskName, timeout));\n }, timeout);\n });\n }\n /**\n * Handle task errors with proper logging and classification\n */\n _handleTaskError(task, error) {\n const taskName = task.name || task.id;\n // Handle cancellation (including AbortError from AbortSignal)\n if (error instanceof TaskCancelledError ||\n error.name === 'AbortError' ||\n error.message === 'Task cancelled' ||\n error.message === 'Aborted') {\n logger.debug('task_cancelled', {\n task_name: taskName,\n note: 'Task cancelled as requested',\n });\n return;\n }\n // Handle timeout\n if (error instanceof TaskTimeoutError) {\n logger.warning('task_timed_out', {\n task_name: taskName,\n error: error.message,\n });\n if (this._lastSpawnerError === null) {\n this._lastSpawnerError = error;\n }\n return;\n }\n // Handle known WebSocket shutdown race condition (similar to Python version)\n if (error.message.includes(\"await wasn't used with future\") ||\n error.message.includes('WebSocket closed during receive')) {\n logger.debug('task_shutdown_race_condition_handled', {\n task_name: taskName,\n note: 'Normal WebSocket close timing during shutdown - not an error',\n });\n return;\n }\n // Handle transport close errors (similar to Python FameTransportClose)\n if (error.name === 'FameTransportClose' ||\n error.message.includes('normal closure') ||\n error.message.includes('Connection closed')) {\n logger.debug('task_shutdown_completed_normally', {\n task_name: taskName,\n note: 'Task closed normally during shutdown',\n });\n return;\n }\n // All other exceptions are considered real failures\n logger.error('background_task_failed', {\n task_name: taskName,\n error: error.message,\n stack: error.stack,\n });\n if (this._lastSpawnerError === null) {\n this._lastSpawnerError = error;\n }\n }\n /**\n * Gracefully shutdown all spawned tasks\n *\n * This implementation mimics Python's asyncio.wait() behavior more closely\n * for better shutdown performance and responsiveness.\n */\n async shutdownTasks(options = {}) {\n const { gracePeriod, cancelHanging, joinTimeout } = normalizeShutdownOptions(options);\n if (this._tasks.size === 0) {\n logger.debug('shutdown_tasks_no_tasks_to_shutdown');\n return;\n }\n this._suppressCompletionLogging = true;\n logger.debug('shutting_down_tasks', {\n task_count: this._tasks.size,\n task_names: Array.from(this._tasks.values()).map((t) => t.name),\n grace_period_ms: gracePeriod,\n });\n const tasks = Array.from(this._tasks.values());\n // 1. Python-style wait with immediate timeout check\n const completed = await this._waitWithGracePeriod(tasks, gracePeriod);\n // 2. Cancel stragglers if requested\n if (cancelHanging) {\n const stillRunning = tasks.filter((task) => task.getState() === TaskState.RUNNING && !completed.has(task));\n if (stillRunning.length > 0) {\n logger.debug('cancelling_hanging_tasks', {\n hanging_count: stillRunning.length,\n });\n // Cancel all hanging tasks\n stillRunning.forEach((task) => task.cancel());\n // Wait for them to finish with individual timeouts\n await Promise.allSettled(stillRunning.map(async (task) => {\n try {\n await this._waitWithTimeout(task.promise, joinTimeout);\n }\n catch (error) {\n if (error instanceof TaskTimeoutError) {\n logger.warning('task_did_not_shutdown', {\n task_name: task.name || task.id,\n join_timeout_ms: joinTimeout,\n });\n // NOTE: This branch is defensively coded but effectively unreachable with the current\n // TaskImpl implementation. Any rejection after abort() is mapped to TaskCancelledError\n // because the catch wrapper checks the abort signal. We keep this logic in case that\n // implementation changes in future refactors.\n }\n else if (!(error instanceof TaskCancelledError)) {\n /* istanbul ignore next - unreachable defensive branch */\n logger.error('task_raised_during_cancellation', {\n task_name: task.name || task.id,\n error: error instanceof Error ? error.message : String(error),\n });\n /* istanbul ignore next */\n if (this._lastSpawnerError === null && error instanceof Error) {\n this._lastSpawnerError = error;\n }\n }\n }\n }));\n }\n }\n // Clear all tasks after shutdown\n this._tasks.clear();\n }\n /**\n * Wait for tasks with grace period - similar to Python's asyncio.wait()\n * Returns immediately when grace period expires, unlike Promise.allSettled()\n */\n async _waitWithGracePeriod(tasks, gracePeriod) {\n const completed = new Set();\n const promises = tasks.map(async (task) => {\n try {\n await task.promise;\n completed.add(task);\n }\n catch {\n // Task failed or was cancelled - still consider it \"completed\"\n completed.add(task);\n }\n });\n // Race all tasks against the timeout\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n timeoutId = setTimeout(resolve, gracePeriod);\n });\n try {\n await Promise.race([Promise.allSettled(promises), timeoutPromise]);\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n return completed;\n }\n /**\n * Wait for a promise with a timeout\n */\n async _waitWithTimeout(promise, timeout) {\n let timeoutId;\n const timeoutPromise = new Promise((_, reject) => {\n timeoutId = setTimeout(() => reject(new TaskTimeoutError('shutdown-wait', timeout)), timeout);\n });\n try {\n return await Promise.race([promise, timeoutPromise]);\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n }\n /**\n * Get the last spawner error (helper for callers that want to bubble the error)\n */\n get lastSpawnerError() {\n return this._lastSpawnerError;\n }\n /**\n * Get current task count\n */\n get taskCount() {\n return this._tasks.size;\n }\n /**\n * Get all active tasks\n */\n get activeTasks() {\n return Array.from(this._tasks.values());\n }\n /**\n * Get task by ID\n */\n getTask(id) {\n return this._tasks.get(id);\n }\n /**\n * Cancel all tasks\n */\n cancelAllTasks() {\n this._tasks.forEach((task) => task.cancel());\n }\n}\n//# sourceMappingURL=task-spawner.js.map","export class AsyncLock {\n constructor() {\n this.tail = Promise.resolve();\n }\n async runExclusive(operation) {\n let release;\n const next = new Promise((resolve) => {\n release = resolve;\n });\n const previous = this.tail;\n this.tail = previous.then(() => next, () => next);\n await previous;\n try {\n return await operation();\n }\n finally {\n release();\n }\n }\n}\nexport async function withLock(lock, operation) {\n return await lock.runExclusive(operation);\n}\n//# sourceMappingURL=lock.js.map","/**\n * Task utility functions and helpers\n */\n/**\n * Wait for any task to complete (first to finish wins)\n */\nexport async function waitForAny(tasks) {\n if (tasks.length === 0) {\n throw new Error('Cannot wait for any of zero tasks');\n }\n return Promise.race(tasks.map((task) => task.promise));\n}\n/**\n * Wait for all tasks to complete\n */\nexport async function waitForAll(tasks) {\n return Promise.all(tasks.map((task) => task.promise));\n}\n/**\n * Wait for all tasks to settle (complete or fail)\n */\nexport async function waitForAllSettled(tasks) {\n return Promise.allSettled(tasks.map((task) => task.promise));\n}\n/**\n * Create a delay task (similar to asyncio.sleep)\n */\nexport function delay(ms, signal) {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new Error('Aborted'));\n return;\n }\n const timeoutId = setTimeout(() => {\n resolve();\n }, ms);\n signal?.addEventListener('abort', () => {\n clearTimeout(timeoutId);\n reject(new Error('Aborted'));\n });\n });\n}\n/**\n * Create a task that times out after specified duration\n */\nexport function withTimeout(promise, timeoutMs, timeoutMessage) {\n return Promise.race([\n promise,\n new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(timeoutMessage || `Operation timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n }),\n ]);\n}\n/**\n * Retry a task with exponential backoff\n */\nexport async function retryWithBackoff(taskFn, options = {}) {\n const { maxRetries = 3, baseDelayMs = 100, maxDelayMs = 5000, backoffMultiplier = 2, signal, } = options;\n let lastError;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n if (signal?.aborted) {\n throw new Error('Aborted');\n }\n try {\n return await taskFn();\n }\n catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt === maxRetries) {\n throw lastError;\n }\n // Calculate delay with exponential backoff\n const delayMs = Math.min(baseDelayMs * Math.pow(backoffMultiplier, attempt), maxDelayMs);\n await delay(delayMs, signal);\n }\n }\n throw lastError;\n}\n/**\n * Create a debounced task function\n */\nexport function debounce(fn, delayMs) {\n let timeoutId;\n let resolve;\n let reject;\n return (...args) => {\n return new Promise((res, rej) => {\n // Clear previous timeout\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n resolve = res;\n reject = rej;\n timeoutId = setTimeout(async () => {\n try {\n const result = await fn(...args);\n resolve?.(result);\n }\n catch (error) {\n reject?.(error);\n }\n }, delayMs);\n });\n };\n}\n/**\n * Create a throttled task function\n */\nexport function throttle(fn, intervalMs) {\n let lastExecuted = 0;\n let pendingPromise = null;\n return (...args) => {\n const now = Date.now();\n const timeSinceLastExecution = now - lastExecuted;\n if (timeSinceLastExecution >= intervalMs && !pendingPromise) {\n lastExecuted = now;\n pendingPromise = fn(...args).finally(() => {\n pendingPromise = null;\n });\n return pendingPromise;\n }\n // Return existing promise if one is pending\n if (pendingPromise) {\n return pendingPromise;\n }\n // Schedule execution\n const delayMs = intervalMs - timeSinceLastExecution;\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n lastExecuted = Date.now();\n const result = await fn(...args);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n }, delayMs);\n });\n };\n}\n//# sourceMappingURL=task-utils.js.map","/**\n * Formatting utilities for terminal output and timestamps.\n */\n/**\n * ANSI color codes for terminal output.\n */\nexport var AnsiColor;\n(function (AnsiColor) {\n AnsiColor[\"RESET\"] = \"\\u001B[0m\";\n AnsiColor[\"BLACK\"] = \"\\u001B[30m\";\n AnsiColor[\"RED\"] = \"\\u001B[31m\";\n AnsiColor[\"GREEN\"] = \"\\u001B[32m\";\n AnsiColor[\"YELLOW\"] = \"\\u001B[33m\";\n AnsiColor[\"BLUE\"] = \"\\u001B[34m\";\n AnsiColor[\"MAGENTA\"] = \"\\u001B[35m\";\n AnsiColor[\"CYAN\"] = \"\\u001B[36m\";\n AnsiColor[\"WHITE\"] = \"\\u001B[37m\";\n AnsiColor[\"GRAY\"] = \"\\u001B[90m\";\n AnsiColor[\"BRIGHT_RED\"] = \"\\u001B[91m\";\n AnsiColor[\"BRIGHT_GREEN\"] = \"\\u001B[92m\";\n AnsiColor[\"BRIGHT_YELLOW\"] = \"\\u001B[93m\";\n AnsiColor[\"BRIGHT_BLUE\"] = \"\\u001B[94m\";\n AnsiColor[\"BRIGHT_MAGENTA\"] = \"\\u001B[95m\";\n AnsiColor[\"BRIGHT_CYAN\"] = \"\\u001B[96m\";\n AnsiColor[\"BRIGHT_WHITE\"] = \"\\u001B[97m\";\n})(AnsiColor || (AnsiColor = {}));\n/**\n * Get current timestamp in ISO format with microseconds and Z suffix.\n * @returns ISO timestamp string with microsecond precision and UTC timezone\n */\nexport function formatTimestamp() {\n const now = new Date();\n const isoString = now.toISOString();\n // JavaScript Date.toISOString() already provides millisecond precision\n // and Z suffix, which matches the Python implementation\n return isoString;\n}\n/**\n * Colorize text with the given ANSI color code.\n * @param text The text to colorize\n * @param color The ANSI color code to apply\n * @returns The colorized text with reset code appended\n */\nexport function color(text, color) {\n return `${color}${text}${AnsiColor.RESET}`;\n}\n/**\n * Internal function to check color support (for testing purposes)\n */\nfunction _supportsColor() {\n // Check if we're in a Node.js environment\n if (typeof process !== 'undefined' && process.env) {\n // Check for NO_COLOR environment variable (takes precedence)\n if (process.env.NO_COLOR) {\n return false;\n }\n // Check for FORCE_COLOR environment variable (takes precedence)\n if (process.env.FORCE_COLOR) {\n return true;\n }\n // Check for CI environments that support colors\n if (process.env.CI && ['true', '1'].includes(process.env.CI)) {\n return true;\n }\n // Check if stdout is a TTY (terminal)\n if (process.stdout && process.stdout.isTTY) {\n return true;\n }\n }\n // In browser environments, assume no color support by default\n return false;\n}\n/**\n * Check if the current environment supports ANSI colors.\n * @returns true if ANSI colors are supported, false otherwise\n */\nexport function supportsColor() {\n return _supportsColor();\n}\n/**\n * Conditionally colorize text based on environment support.\n * @param text The text to colorize\n * @param color The ANSI color code to apply\n * @returns The colorized text if colors are supported, plain text otherwise\n */\nexport function safeColor(text, color) {\n return supportsColor() ? `${color}${text}${AnsiColor.RESET}` : text;\n}\n//# sourceMappingURL=formatter.js.map","/**\n * Protocol and implementation for emitting metrics such as counters, gauges, and histograms.\n * Implementations should be thread-safe and non-blocking.\n */\n/**\n * A no-op implementation of MetricsEmitter that discards all metrics.\n * Useful for testing or when metrics are disabled.\n */\nexport class NoOpMetricsEmitter {\n counter(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n gauge(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n histogram(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n}\n/**\n * A console-based implementation of MetricsEmitter for debugging.\n * Logs all metrics to the console in a structured format.\n */\nexport class ConsoleMetricsEmitter {\n constructor(prefix = '[METRICS]') {\n this.prefix = prefix;\n }\n counter(name, value, tags) {\n this.logMetric('COUNTER', name, value, tags);\n }\n gauge(name, value, tags) {\n this.logMetric('GAUGE', name, value, tags);\n }\n histogram(name, value, tags) {\n this.logMetric('HISTOGRAM', name, value, tags);\n }\n logMetric(type, name, value, tags) {\n const timestamp = new Date().toISOString();\n const tagsStr = tags ? ` tags=${JSON.stringify(tags)}` : '';\n console.log(`${this.prefix} ${timestamp} ${type} ${name}=${value}${tagsStr}`);\n }\n}\n/**\n * A memory-based implementation of MetricsEmitter for testing.\n * Stores all emitted metrics in memory for inspection.\n */\nexport class MemoryMetricsEmitter {\n constructor() {\n this.metrics = [];\n }\n counter(name, value, tags) {\n this.recordMetric('counter', name, value, tags);\n }\n gauge(name, value, tags) {\n this.recordMetric('gauge', name, value, tags);\n }\n histogram(name, value, tags) {\n this.recordMetric('histogram', name, value, tags);\n }\n recordMetric(type, name, value, tags) {\n this.metrics.push({\n type,\n name,\n value,\n ...(tags && { tags }),\n timestamp: new Date(),\n });\n }\n /**\n * Get all recorded metrics.\n */\n getMetrics() {\n return [...this.metrics];\n }\n /**\n * Get metrics filtered by type.\n */\n getMetricsByType(type) {\n return this.metrics.filter((m) => m.type === type);\n }\n /**\n * Get metrics filtered by name.\n */\n getMetricsByName(name) {\n return this.metrics.filter((m) => m.name === name);\n }\n /**\n * Clear all recorded metrics.\n */\n clear() {\n this.metrics.length = 0;\n }\n /**\n * Get the count of recorded metrics.\n */\n count() {\n return this.metrics.length;\n }\n}\n//# sourceMappingURL=metrics-emitter.js.map","/**\n * General utility functions for JSON handling, string manipulation,\n * path normalization, base64 encoding, hashing, and more.\n */\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { color, AnsiColor, formatTimestamp } from './formatter.js';\nexport const ENV_VAR_SHOW_ENVELOPES = 'FAME_SHOW_ENVELOPES';\nexport function isEnvelopeLoggingEnabled() {\n return (typeof process !== 'undefined' &&\n process.env?.[ENV_VAR_SHOW_ENVELOPES] === 'true');\n}\nexport const showEnvelopes = isEnvelopeLoggingEnabled();\nexport function formatTimestampForConsole() {\n return color(formatTimestamp(), AnsiColor.GRAY);\n}\nexport function prettyModel(value) {\n try {\n return jsonDumps(value);\n }\n catch (error) {\n return String(error);\n }\n}\n/**\n * Default JSON encoder for non-standard types.\n */\nexport function defaultJsonEncoder(obj) {\n if (obj instanceof Date) {\n return obj.toISOString().replace(/\\.\\d{3}Z$/, 'Z'); // Remove milliseconds for Python compatibility\n }\n throw new TypeError(`Object of type ${typeof obj} is not JSON serializable`);\n}\n/**\n * Capitalize the first letter of a string.\n */\nexport function capitalizeFirstLetter(text) {\n if (!text) {\n return text;\n }\n return text[0].toUpperCase() + text.slice(1);\n}\n/**\n * Convert a value to pretty-printed JSON string.\n */\nexport function jsonDumps(value) {\n const seen = new WeakSet();\n const replacer = (_key, val) => {\n try {\n return defaultJsonEncoder(val);\n }\n catch {\n // ignore – fall through to default handling below\n }\n if (typeof val === 'bigint') {\n return val.toString();\n }\n if (typeof val === 'object' && val !== null) {\n if (seen.has(val)) {\n return '[Circular]';\n }\n seen.add(val);\n }\n return val;\n };\n return JSON.stringify(value, replacer, 2);\n}\n/**\n * Extract an ID from an object (either from object property or 'id' key).\n */\nexport function extractId(obj) {\n if (typeof obj === 'object' && obj !== null) {\n if ('id' in obj) {\n return obj.id;\n }\n }\n return null;\n}\n/**\n * Maybe await a value that could be a Promise or regular value.\n */\nexport async function maybeAwait(valueOrPromise) {\n if (valueOrPromise instanceof Promise) {\n return await valueOrPromise;\n }\n return valueOrPromise;\n}\n/**\n * Convert an object to JSON bytes.\n */\nexport function objectToBytes(obj) {\n const jsonString = JSON.stringify(obj);\n return new TextEncoder().encode(jsonString);\n}\n/**\n * Decode Fame data payload based on codec.\n */\nexport function decodeFameDataPayload(frame) {\n if (frame.codec === 'b64') {\n // Decode base64 to bytes\n const base64 = frame.payload;\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n return frame.payload;\n}\n/**\n * Normalize a path by removing leading slashes.\n */\nexport function normalizePath(path) {\n return path.replace(/^\\/+/, '');\n}\n/**\n * Cache for compiled path patterns.\n */\nconst pathPatternCache = new Map();\n/**\n * Translate a shell-style wildcard pattern into a compiled regex\n * and cache the result for speed.\n */\nexport function compiledPathPattern(pattern) {\n let compiled = pathPatternCache.get(pattern);\n if (!compiled) {\n // Convert shell wildcard to regex\n const regexPattern = pattern\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // Escape regex special chars\n .replace(/\\*/g, '.*') // * becomes .*\n .replace(/\\?/g, '.'); // ? becomes .\n compiled = new RegExp(`^${regexPattern}$`);\n // Limit cache size to prevent memory leaks\n if (pathPatternCache.size > 256) {\n pathPatternCache.clear();\n }\n pathPatternCache.set(pattern, compiled);\n }\n return compiled;\n}\n// Base62 characters: 0–9, a–z, A–Z\nconst BASE62_CHARS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst BASE62_BASE = BigInt(BASE62_CHARS.length);\n/**\n * Convert a number to base62 string.\n */\nfunction toBase62(num) {\n if (num === 0n) {\n return BASE62_CHARS[0];\n }\n const result = [];\n let value = num;\n while (value > 0n) {\n const remainder = value % BASE62_BASE;\n result.push(BASE62_CHARS[Number(remainder)]);\n value = value / BASE62_BASE;\n }\n return result.reverse().join('');\n}\n/**\n * Create a secure digest of a string.\n * @param s Input string\n * @param bits Number of bits to include in digest (default: 128)\n * @returns Base62-encoded digest\n */\nexport function secureDigest(s, bits = 128) {\n try {\n const digest = sha256(new TextEncoder().encode(s));\n const desiredBytes = Math.min(digest.length, Math.max(1, Math.ceil(bits / 8)));\n let value = 0n;\n for (let i = 0; i < desiredBytes; i += 1) {\n value = (value << 8n) | BigInt(digest[i]);\n }\n return toBase62(value);\n }\n catch {\n // Fallback for environments without TextEncoder support\n let hash = 0;\n for (let i = 0; i < s.length; i += 1) {\n const char = s.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return toBase62(BigInt(Math.abs(hash)));\n }\n}\n/**\n * URL-safe base64 encode (without padding).\n */\nexport function urlsafeBase64Encode(data) {\n // Convert Uint8Array to string for btoa\n let binaryString = '';\n for (let i = 0; i < data.length; i++) {\n binaryString += String.fromCharCode(data[i]);\n }\n return btoa(binaryString)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\nexport function urlsafeBase64Decode(value) {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, '=');\n if (typeof atob === 'function') {\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(padded, 'base64'));\n }\n throw new Error('Base64 decoding is not available in this environment');\n}\n/**\n * Convert CamelCase string to snake_case.\n */\nexport function camelToSnakeCase(name) {\n // Insert underscore before uppercase letters that follow lowercase letters or digits\n let result = name.replace(/([a-z0-9])([A-Z])/g, '$1_$2');\n // Insert underscore before uppercase letters that are followed by lowercase letters\n result = result.replace(/([A-Z])([A-Z][a-z])/g, '$1_$2');\n return result.toLowerCase();\n}\n/**\n * Create a shallow copy of an object's top-level properties and add\n * snake_case aliases for any camelCase keys while also adding camelCase\n * aliases for snake_case keys when missing. Existing keys always win.\n */\nexport function withLegacySnakeCaseKeys(descriptor) {\n const augmented = { ...descriptor };\n for (const [key, value] of Object.entries(descriptor)) {\n const snakeCaseKey = key.includes('_') ? key : camelToSnakeCase(key);\n const camelCaseKey = key.includes('_') ? snakeToCamelCase(key) : key;\n if (snakeCaseKey !== key && !(snakeCaseKey in augmented)) {\n augmented[snakeCaseKey] = value;\n }\n if (camelCaseKey !== key && !(camelCaseKey in augmented)) {\n augmented[camelCaseKey] = value;\n }\n }\n return augmented;\n}\n/**\n * Convert snake_case string to CamelCase.\n */\nexport function snakeToCamelCase(name) {\n return name.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n/**\n * Check if a value is a plain object (not an array, Date, etc.).\n */\nexport function isPlainObject(value) {\n return (typeof value === 'object' &&\n value !== null &&\n value.constructor === Object &&\n Object.prototype.toString.call(value) === '[object Object]');\n}\n/**\n * Deep merge two objects.\n */\nexport function deepMerge(target, source) {\n const result = { ...target };\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n const sourceValue = source[key];\n const targetValue = result[key];\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n result[key] = deepMerge(targetValue, sourceValue);\n }\n else {\n result[key] = sourceValue;\n }\n }\n }\n return result;\n}\n/**\n * Create a debounced version of a function.\n */\nexport function debounce(func, wait) {\n let timeout;\n return function (...args) {\n const later = () => {\n timeout = undefined;\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n/**\n * Create a throttled version of a function.\n */\nexport function throttle(func, wait) {\n let timeout;\n let previous = 0;\n return function (...args) {\n const now = Date.now();\n const remaining = wait - (now - previous);\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n previous = now;\n func.apply(this, args);\n }\n else if (!timeout) {\n timeout = setTimeout(() => {\n previous = Date.now();\n timeout = undefined;\n func.apply(this, args);\n }, remaining);\n }\n };\n}\n/**\n * Sleep for a specified number of milliseconds.\n */\nexport function sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n/**\n * Retry a function with exponential backoff.\n */\nexport async function retryWithBackoff(fn, maxRetries = 3, baseDelay = 1000, maxDelay = 10000) {\n let lastError;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n }\n catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt === maxRetries) {\n throw lastError;\n }\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);\n await sleep(delay);\n }\n }\n throw lastError;\n}\n//# sourceMappingURL=util.js.map","import { parseAddressComponents } from '@naylence/core';\nconst POOL_WILDCARD_PREFIX = '*.';\nfunction readEnvValue(aliases) {\n const processRef = globalThis?.process;\n const env = processRef?.env;\n if (!env) {\n return undefined;\n }\n for (const alias of aliases) {\n const value = env[alias];\n if (typeof value === 'string') {\n return value;\n }\n }\n return undefined;\n}\nconst DNS_HOSTNAME_PATTERN = /^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.?)+$/;\nconst DNS_LABEL_PATTERN = /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/;\nexport function getFameRoot() {\n return (readEnvValue(['FAME_ROOT', 'fame_root', 'fameRoot', 'FameRoot']) ??\n 'fame.fabric');\n}\nexport function isPoolLogical(logical) {\n return Boolean(logical?.startsWith(POOL_WILDCARD_PREFIX));\n}\nexport function matchesPoolLogical(logical, poolPattern) {\n if (!isPoolLogical(poolPattern)) {\n return false;\n }\n const suffix = poolPattern.slice(POOL_WILDCARD_PREFIX.length);\n if (!suffix) {\n return false;\n }\n return ((logical.endsWith(`.${suffix}`) && logical !== suffix) || logical === suffix);\n}\nexport function validateLogicalSegment(segment) {\n if (!segment) {\n return [false, 'Empty path segment'];\n }\n if (segment.length > 63) {\n return [false, `Path segment '${segment}' exceeds 63 characters`];\n }\n if (!/^[a-zA-Z0-9-]+$/.test(segment)) {\n return [\n false,\n `Path segment '${segment}' must contain only alphanumeric characters and hyphens`,\n ];\n }\n if (segment.startsWith('-') || segment.endsWith('-')) {\n return [false, `Path segment '${segment}' cannot start or end with hyphen`];\n }\n if (segment.includes('--')) {\n return [\n false,\n `Path segment '${segment}' cannot contain consecutive hyphens`,\n ];\n }\n return [true, null];\n}\nexport function validateLogical(logical) {\n if (!logical) {\n return [false, 'Empty logical'];\n }\n if (!logical.startsWith('/')) {\n return [false, `Logical '${logical}' must start with '/'`];\n }\n const segments = logical.split('/').filter(Boolean);\n if (segments.length === 0) {\n return logical === '/'\n ? [true, null]\n : [false, 'Logical must contain at least one non-empty segment'];\n }\n for (const segment of segments) {\n const [valid, error] = validateLogicalSegment(segment);\n if (!valid) {\n return [false, `Invalid logical '${logical}': ${error}`];\n }\n }\n const hostname = logicalToHostname(logical);\n if (hostname.length > 253) {\n return [\n false,\n `Logical '${logical}' converts to hostname exceeding 253 characters`,\n ];\n }\n return [true, null];\n}\nexport function logicalToHostname(logical) {\n if (!logical) {\n throw new Error('Empty logical');\n }\n if (!logical.startsWith('/')) {\n throw new Error(`Logical '${logical}' cannot start without '/'`);\n }\n const segments = logical.split('/').filter(Boolean);\n if (segments.length === 0) {\n if (logical === '/') {\n return getFameRoot();\n }\n throw new Error('Logical must contain at least one non-empty segment');\n }\n return segments.reverse().join('.');\n}\nexport function hostnameToLogical(hostname) {\n if (!hostname) {\n throw new Error('Empty hostname');\n }\n if (hostname === getFameRoot()) {\n return '/';\n }\n const segments = hostname.split('.');\n if (segments.some((segment) => !segment)) {\n throw new Error(`Invalid hostname '${hostname}' contains empty segments`);\n }\n return `/${segments.reverse().join('/')}`;\n}\nexport function logicalsToHostnames(logicals) {\n return logicals.map(logicalToHostname);\n}\nexport function hostnamesToLogicals(hostnames) {\n return hostnames.map(hostnameToLogical);\n}\nexport function validateHostLogical(hostLogical) {\n if (!hostLogical) {\n return [false, 'Empty host logical'];\n }\n if (hostLogical.includes('*')) {\n if (!hostLogical.startsWith('*.')) {\n return [\n false,\n `Host logical '${hostLogical}' contains wildcard not in leftmost position`,\n ];\n }\n const baseDomain = hostLogical.slice(2);\n if (!baseDomain) {\n return [\n false,\n `Host logical '${hostLogical}' has wildcard but no base domain`,\n ];\n }\n if (!DNS_HOSTNAME_PATTERN.test(baseDomain)) {\n return [\n false,\n `Host logical '${hostLogical}' base domain '${baseDomain}' is not a valid DNS hostname`,\n ];\n }\n if (hostLogical.length > 253) {\n return [false, `Host logical '${hostLogical}' exceeds 253 characters`];\n }\n const labels = baseDomain.split('.');\n for (const label of labels) {\n if (!DNS_LABEL_PATTERN.test(label)) {\n return [\n false,\n `Host logical '${hostLogical}' contains invalid label '${label}' in base domain`,\n ];\n }\n }\n return [true, null];\n }\n if (!DNS_HOSTNAME_PATTERN.test(hostLogical)) {\n return [false, `Host logical '${hostLogical}' is not a valid DNS hostname`];\n }\n if (hostLogical.length > 253) {\n return [false, `Host logical '${hostLogical}' exceeds 253 characters`];\n }\n const labels = hostLogical.split('.');\n for (const label of labels) {\n if (!DNS_LABEL_PATTERN.test(label)) {\n return [\n false,\n `Host logical '${hostLogical}' contains invalid label '${label}'`,\n ];\n }\n }\n return [true, null];\n}\nexport function validateHostLogicals(hostLogicals) {\n if (!hostLogicals || hostLogicals.length === 0) {\n return [true, null];\n }\n for (const hostLogical of hostLogicals) {\n const [valid, error] = validateHostLogical(hostLogical);\n if (!valid) {\n return [false, error];\n }\n }\n return [true, null];\n}\nexport function createLogicalUri(logical, useHostnameNotation = false) {\n if (useHostnameNotation) {\n const hostname = logicalToHostname(logical);\n return `naylence://${hostname}/`;\n }\n return `naylence://${logical}`;\n}\nexport function createHostLogicalUri(hostLogical) {\n return `naylence://${hostLogical}/`;\n}\nexport function convertWildcardLogicalToDnsConstraint(logicalPattern) {\n return logicalPattern.startsWith('*.')\n ? logicalPattern.slice(1)\n : logicalPattern;\n}\nexport function logicalPatternsToDnsConstraints(logicalPatterns) {\n return logicalPatterns.map(convertWildcardLogicalToDnsConstraint);\n}\nexport function matchesPoolAddress(address, poolAddress) {\n try {\n const [addrParticipant, addrHost, addrPath] = parseAddressComponents(address);\n const [poolParticipant, poolHost, poolPath] = parseAddressComponents(poolAddress);\n if (addrParticipant !== poolParticipant) {\n return false;\n }\n if (addrHost && poolHost) {\n if (!matchesPoolLogical(addrHost, poolHost)) {\n return false;\n }\n if (addrPath && poolPath) {\n return addrPath === poolPath;\n }\n return addrPath === poolPath;\n }\n if (!addrHost && !poolHost && addrPath && poolPath) {\n return addrPath === poolPath;\n }\n return false;\n }\n catch (error) {\n if (readEnvValue(['NODE_ENV', 'node_env', 'nodeEnv', 'NodeEnv']) !==\n 'production') {\n // eslint-disable-next-line no-console\n console.debug('matchesPoolAddress failed', error);\n }\n return false;\n }\n}\nexport function extractPoolBase(poolPattern) {\n if (!isPoolLogical(poolPattern)) {\n return null;\n }\n return poolPattern.slice(POOL_WILDCARD_PREFIX.length);\n}\nexport function extractPoolAddressBase(poolAddress) {\n try {\n const [participant, host, path] = parseAddressComponents(poolAddress);\n if (host && isPoolLogical(host)) {\n const base = extractPoolBase(host);\n if (!base) {\n return null;\n }\n return path ? `${participant}@${base}${path}` : `${participant}@${base}`;\n }\n return null;\n }\n catch {\n return null;\n }\n}\nexport function isPoolAddress(address) {\n try {\n const [, host] = parseAddressComponents(address);\n return Boolean(host && isPoolLogical(host));\n }\n catch {\n return false;\n }\n}\n//# sourceMappingURL=logicals.js.map","export const DEFAULT_NODE_ATTACH_TTL_SEC = 3600;\nexport const MAX_NODE_ATTACH_TTL_SEC = 86400;\nexport const DEFAULT_KEY_CORRELATION_TTL_SEC = 30;\nexport const DEFAULT_JWKS_CACHE_TTL_SEC = 300;\nexport const DEFAULT_JWT_TOKEN_TTL_SEC = 3600;\nexport const DEFAULT_OAUTH2_TTL_SEC = 3600;\nexport const MAX_OAUTH2_TTL_SEC = 86400;\nexport const DEFAULT_REVERSE_AUTH_TTL_SEC = 86400;\nexport const DEFAULT_ADMISSION_TTL_SEC = 3600;\nexport const DEFAULT_DIRECT_ADMISSION_TTL_SEC = 86400;\nexport const DEFAULT_TRANSPORT_TTL_SEC = 3600;\nexport const DEFAULT_WELCOME_TTL_SEC = 3600;\nexport const DEFAULT_CRYPTO_PROVIDER_TTL_SEC = 3600;\nexport const TTL_NEVER_EXPIRES = 0;\nexport const TTL_IMMEDIATE_EXPIRY = -1;\nexport const TEST_SHORT_TTL_SEC = 2;\nexport const TEST_MEDIUM_TTL_SEC = 10;\nexport const TEST_LONG_TTL_SEC = 600;\n//# sourceMappingURL=ttl-constants.js.map","import { MAX_OAUTH2_TTL_SEC, TTL_NEVER_EXPIRES, } from '../constants/ttl-constants.js';\nexport class TtlValidationError extends Error {\n}\nexport function validateTtlSec(ttlSec, { min, max, allowNeverExpires, context, }) {\n if (ttlSec == null) {\n return ttlSec;\n }\n if (ttlSec === TTL_NEVER_EXPIRES) {\n if (allowNeverExpires) {\n return ttlSec;\n }\n throw new TtlValidationError(`${context} cannot be set to never expire (0)`);\n }\n if (ttlSec < 0) {\n throw new TtlValidationError(`${context} cannot be negative: ${ttlSec}`);\n }\n if (ttlSec < min) {\n throw new TtlValidationError(`${context} is too small: ${ttlSec} seconds (minimum: ${min} seconds)`);\n }\n if (max !== undefined && ttlSec > max) {\n throw new TtlValidationError(`${context} is too large: ${ttlSec} seconds (maximum: ${max} seconds)`);\n }\n return ttlSec;\n}\nexport function validateJwtTokenTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 60,\n max: MAX_OAUTH2_TTL_SEC,\n allowNeverExpires: false,\n context: 'JWT token TTL',\n });\n}\nexport function validateOAuth2TtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 60,\n max: MAX_OAUTH2_TTL_SEC,\n allowNeverExpires: false,\n context: 'OAuth2 authorization TTL',\n });\n}\nexport function validateCacheTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 1,\n max: 3600,\n allowNeverExpires: true,\n context: 'Cache TTL',\n });\n}\nexport function validateKeyCorrelationTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 0.1,\n max: 300,\n allowNeverExpires: false,\n context: 'Key correlation TTL',\n });\n}\n//# sourceMappingURL=ttl-validation.js.map","/**\n * flow_controller.ts - credit window management with cooperative back-pressure.\n *\n * This version restores the *original* test-driven semantics while still\n * preventing notifier task spam:\n *\n * * **addCredits**\n * * accepts *any* integer `delta` (positive or negative) and clamps the\n * resulting balance between 0 and `initialWindow`.\n * * When called outside an event-loop (e.g. synchronous unit-tests), the\n * credit balance is updated but waiter notification is skipped instead of\n * raising *RuntimeError*.\n * * **consume**\n * * clamps at zero rather than raising on under-flow, matching historical\n * behaviour.\n * * **_wakeWaiters**\n * * debounces the `notifyAll()` coroutine as before *but* quietly returns\n * when no running loop is active.\n *\n * The race-safety we introduced earlier is preserved - we still use a per-flow\n * condition/promise and ensure at most one notifier coroutine exists for a\n * flow at any time.\n */\nimport { FlowFlags } from '@naylence/core';\n/**\n * Simple condition variable implementation for TypeScript/Node.js\n * Similar to Python's asyncio.Condition\n */\nclass Condition {\n constructor() {\n this.waiters = [];\n }\n /**\n * Wait for a notification\n */\n async wait() {\n return new Promise((resolve, reject) => {\n this.waiters.push({ resolve, reject });\n });\n }\n /**\n * Notify all waiting coroutines\n */\n notifyAll() {\n const waiters = this.waiters.splice(0);\n for (const waiter of waiters) {\n waiter.resolve();\n }\n }\n}\n/**\n * Sliding-window flow/credit accounting for *one* local endpoint.\n *\n * A *flow* is identified by a caller-chosen string `flowId`. Each flow\n * starts with `initialWindow` credits. Sending an envelope *consumes*\n * one credit; the peer replenishes credits via an \"ACK/CreditUpdate\"\n * envelope. When credits reach 0 local senders block in\n * `acquire` until more arrive.\n *\n * The controller is **event-loop safe** - multiple coroutines can call\n * `addCredits`, `consume`, and `acquire` without additional locks - but it is\n * **not** thread-safe.\n */\nexport class FlowController {\n constructor(initialWindow, lowWatermarkRatio = 0.25) {\n // flowId → remaining credit count\n this.credits = new Map();\n // flowId → per-flow Condition (created lazily)\n this.conditions = new Map();\n // flowId → outbound window counter\n this.windowIds = new Map();\n // flows that must emit RESET|SYN on next envelope\n this.resetRequested = new Set();\n // track active notifier tasks to prevent spam\n this.activeNotifiers = new Map();\n if (initialWindow <= 0) {\n throw new Error('initialWindow must be > 0');\n }\n this.initialWindow = initialWindow;\n this.lowWatermark = Math.floor(initialWindow * lowWatermarkRatio);\n }\n // ---------------------------------------------------------------------\n // helpers\n // ---------------------------------------------------------------------\n /**\n * Lazily create bookkeeping structures for *flowId*.\n */\n ensureFlow(flowId) {\n if (!this.credits.has(flowId)) {\n this.credits.set(flowId, this.initialWindow);\n }\n if (!this.conditions.has(flowId)) {\n this.conditions.set(flowId, new Condition());\n }\n }\n /**\n * Wake every coroutine blocked in `acquire` for *flowId*.\n *\n * We debounce - at most **one** notifier coroutine per flow can be alive.\n * If `FlowController` is used in synchronous code with no running loop\n * we silently skip the wake-up because nothing could be awaiting anyway.\n */\n wakeWaiters(flowId) {\n const condition = this.conditions.get(flowId);\n if (!condition) {\n return;\n }\n // Check if there's already an active notifier for this flow\n const existingNotifier = this.activeNotifiers.get(flowId);\n if (existingNotifier) {\n return; // Already scheduled\n }\n // Create a notifier promise\n const notifierPromise = (async () => {\n try {\n // Use setImmediate to defer to next tick (similar to asyncio scheduling)\n await new Promise((resolve) => setImmediate(resolve));\n condition.notifyAll();\n }\n finally {\n // Always clear the reference, even on error\n this.activeNotifiers.delete(flowId);\n }\n })();\n this.activeNotifiers.set(flowId, notifierPromise);\n }\n // ------------------------------------------------------------------\n // public API\n // ------------------------------------------------------------------\n /**\n * Return the current credit balance for *flowId*.\n */\n getCredits(flowId) {\n this.ensureFlow(flowId);\n return this.credits.get(flowId);\n }\n /**\n * Add `delta` credits (positive *or* negative) to *flowId*.\n *\n * The balance is bounded between 0 and `initialWindow`. Returns the new balance.\n * If the balance transitions from `<=0` to `>0` we wake blocked\n * acquirers.\n */\n addCredits(flowId, delta) {\n this.ensureFlow(flowId);\n const prev = this.credits.get(flowId);\n // clamp into [0, initialWindow]\n const newBalance = Math.max(0, Math.min(this.initialWindow, prev + delta));\n this.credits.set(flowId, newBalance);\n // wake waiters only if we crossed the zero boundary\n if (prev <= 0 && newBalance > 0) {\n this.wakeWaiters(flowId);\n }\n return newBalance;\n }\n /**\n * Block until at least one credit is available, then consume it.\n */\n async acquire(flowId) {\n this.ensureFlow(flowId);\n const condition = this.conditions.get(flowId);\n while (this.credits.get(flowId) <= 0) {\n await condition.wait();\n }\n const current = this.credits.get(flowId);\n this.credits.set(flowId, current - 1);\n }\n /**\n * Consume *credits* immediately (non-blocking).\n *\n * If *credits* exceeds the current balance we clamp to **zero** (legacy\n * behaviour retained for existing tests).\n * Returns the remaining balance.\n */\n consume(flowId, credits = 1) {\n if (credits < 0) {\n throw new Error('credits must be positive');\n }\n if (credits === 0) {\n return this.credits.get(flowId) ?? this.initialWindow;\n }\n this.ensureFlow(flowId);\n const current = this.credits.get(flowId);\n const remaining = Math.max(current - credits, 0);\n this.credits.set(flowId, remaining);\n return remaining;\n }\n /**\n * Return `true` if balance is at or below low-watermark.\n */\n needsRefill(flowId) {\n return this.getCredits(flowId) <= this.lowWatermark;\n }\n // ---------------------------------------------------------------\n // flow-state (RESET / sequence) helpers\n // ---------------------------------------------------------------\n /**\n * Prepare a *RESET|SYN* flag for the next outbound envelope.\n */\n resetFlow(flowId) {\n this.ensureFlow(flowId);\n this.resetRequested.add(flowId);\n this.windowIds.delete(flowId);\n this.credits.set(flowId, this.initialWindow);\n this.wakeWaiters(flowId);\n }\n /**\n * Return `[windowId, flags]` for the next outbound envelope.\n */\n nextWindow(flowId) {\n // RESET requested - emit RESET|SYN (window 0)\n if (this.resetRequested.has(flowId)) {\n this.resetRequested.delete(flowId);\n this.windowIds.set(flowId, 0);\n return [0, FlowFlags.RESET | FlowFlags.SYN];\n }\n // brand-new flow - start at window 0, emit SYN\n if (!this.windowIds.has(flowId)) {\n this.windowIds.set(flowId, 0);\n return [0, FlowFlags.SYN];\n }\n // subsequent envelope - increment window id\n const currentId = this.windowIds.get(flowId);\n const nextId = currentId + 1;\n this.windowIds.set(flowId, nextId);\n return [nextId, FlowFlags.NONE];\n }\n}\n//# sourceMappingURL=flow-controller.js.map","/**\n * in-memory-channel.ts - In-memory ReadWriteChannel implementation.\n *\n * Maintains an in-memory queue for async read/write operations with optional\n * size limits and operation timeouts.\n */\nimport { TaskTimeoutError } from '../../util/task-types.js';\nimport { getLogger } from '../../util/logging.js';\n/**\n * In-memory implementation of ReadWriteChannel using a Promise-based queue.\n * This is the TypeScript equivalent of Python's asyncio.Queue-based implementation.\n */\nexport class InMemoryReadWriteChannel {\n constructor(config = {}) {\n this._queue = [];\n this._waitingReaders = [];\n this._closed = false;\n this.logger = getLogger('naylence.fame.channel.in_memory.in_memory_channel');\n const legacyMaxSize = config.maxsize;\n const configuredMaxSize = typeof config.maxSize === 'number' ? config.maxSize : legacyMaxSize;\n this._maxSize = configuredMaxSize || 0; // 0 = unlimited\n this._defaultTimeoutMs = config.defaultTimeoutMs || 0; // 0 = no timeout\n }\n /**\n * Receive a message from the channel.\n * Returns a promise that resolves when a message is available.\n * This implements the ReadChannel.receive method.\n */\n async receive(timeout) {\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // If there's a message in the queue, return it immediately\n if (this._queue.length > 0) {\n const message = this._queue.shift();\n this.logger.debug('receive_returning_buffered_message', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n });\n return message;\n }\n // No message available, wait for one\n return new Promise((resolve, reject) => {\n const waiter = { resolve, reject };\n // Set up timeout if specified\n const timeoutMs = timeout ?? this._defaultTimeoutMs;\n if (timeoutMs > 0) {\n waiter.timeoutId = setTimeout(() => {\n // Remove this waiter from the list\n const index = this._waitingReaders.indexOf(waiter);\n if (index !== -1) {\n this._waitingReaders.splice(index, 1);\n }\n reject(new TaskTimeoutError('Channel receive operation', timeoutMs));\n }, timeoutMs);\n }\n this._waitingReaders.push(waiter);\n // this.logger.debug(\"receive_waiting_for_message\", {\n // queue_length: this._queue.length,\n // waiting_readers: this._waitingReaders.length,\n // timeout_ms: timeoutMs,\n // });\n });\n }\n /**\n * Acknowledge a received message by its ID.\n * This implements the ReadChannel.acknowledge method.\n * For in-memory channels, this is typically a no-op.\n */\n async acknowledge(_messageId) {\n // In-memory channels don't need acknowledgment tracking\n // This is a no-op but satisfies the interface requirement\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // No-op - acknowledgment is not meaningful for in-memory channels\n }\n /**\n * Send a message to the channel.\n * If there are waiting readers, delivers directly to the first one.\n * Otherwise, adds to the queue (if there's space).\n * This implements the WriteChannel.send method.\n */\n async send(message) {\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // If there are waiting readers, deliver directly to the first one\n if (this._waitingReaders.length > 0) {\n const waiter = this._waitingReaders.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n this.logger.debug('send_delivering_to_waiter', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n });\n waiter.resolve(message);\n return;\n }\n // No waiting readers, add to queue if there's space\n if (this._maxSize === 0 || this._queue.length < this._maxSize) {\n this._queue.push(message);\n this.logger.debug('send_enqueued_message', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n max_size: this._maxSize,\n });\n return;\n }\n // Queue is full - in Python implementation, this would block\n // For simplicity in this TypeScript version, we'll reject immediately\n // In a full implementation, we'd want to wait for space to become available\n this.logger.error('send_queue_full', {\n queue_length: this._queue.length,\n max_size: this._maxSize,\n });\n throw new Error(`Channel queue is full (maxSize: ${this._maxSize})`);\n }\n /**\n * Close the channel. All pending reads will be rejected.\n * Future read/write operations will throw an error.\n */\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n // Reject all waiting readers\n const error = new Error('Channel is closed');\n for (const waiter of this._waitingReaders) {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n waiter.reject(error);\n }\n this.logger.debug('channel_closed', {\n discarded_waiters: this._waitingReaders.length,\n discarded_messages: this._queue.length,\n });\n this._waitingReaders.length = 0;\n // Clear the queue\n this._queue.length = 0;\n }\n /**\n * Check if the channel is closed\n */\n get isClosed() {\n return this._closed;\n }\n /**\n * Get the current queue size\n */\n get queueSize() {\n return this._queue.length;\n }\n /**\n * Get the number of waiting readers\n */\n get waitingReaders() {\n return this._waitingReaders.length;\n }\n /**\n * Check if the queue is full\n */\n get isFull() {\n return this._maxSize > 0 && this._queue.length >= this._maxSize;\n }\n /**\n * Check if the queue is empty\n */\n get isEmpty() {\n return this._queue.length === 0;\n }\n}\n//# sourceMappingURL=in-memory-channel.js.map","/**\n * in-memory-binding.ts - In-memory binding implementation\n *\n * TypeScript port of Python's InMemoryBinding that connects a FameAddress\n * to an InMemoryReadWriteChannel, managing the binding lifecycle.\n */\nimport { FameAddress } from '@naylence/core';\nimport { InMemoryReadWriteChannel, } from './in-memory-channel.js';\n/**\n * Represents a binding between a FameAddress and an InMemoryReadWriteChannel.\n * This is the TypeScript equivalent of Python's InMemoryBinding.\n */\nexport class InMemoryBinding {\n constructor(address, config = {}) {\n // Convert string address to FameAddress if needed\n this.address =\n typeof address === 'string' ? new FameAddress(address) : address;\n // Use provided channel or create a new one\n this.channel = config.channel || new InMemoryReadWriteChannel(config);\n }\n /**\n * Create a binding from an address string\n */\n static fromAddress(address, config = {}) {\n return new InMemoryBinding(address, config);\n }\n /**\n * Create a binding with a custom channel\n */\n static withChannel(address, channel) {\n return new InMemoryBinding(address, { channel });\n }\n /**\n * Close the binding and its associated channel\n */\n async close() {\n await this.channel.close();\n }\n /**\n * Check if the binding is closed\n */\n get isClosed() {\n return this.channel.isClosed;\n }\n /**\n * Get a string representation of the binding\n */\n toString() {\n return `InMemoryBinding(address=${this.address.toString()}, channel=${this.channel})`;\n }\n /**\n * Convert the binding to a plain object for serialization\n */\n toObject() {\n return {\n address: this.address.toString(),\n channelState: {\n queueSize: this.channel.queueSize,\n isClosed: this.channel.isClosed,\n },\n };\n }\n /**\n * Send a message through the binding's channel\n */\n async send(message) {\n return this.channel.send(message);\n }\n /**\n * Receive a message from the binding's channel\n */\n async receive(timeout) {\n return this.channel.receive(timeout);\n }\n /**\n * Acknowledge a message through the binding's channel\n */\n async acknowledge(messageId) {\n return this.channel.acknowledge(messageId);\n }\n}\n//# sourceMappingURL=in-memory-binding.js.map","/**\n * in-memory-fanout-broker.ts - In-memory fanout broker implementation\n *\n * TypeScript port of Python's InMemoryFanoutBroker that extends TaskSpawner\n * to manage multiple WriteChannel subscribers with concurrent message distribution.\n */\nimport { DEFAULT_POLLING_TIMEOUT_MS, extractEnvelopeAndContext, createChannelMessage, } from '@naylence/core';\nimport { TaskSpawner } from '../../util/task-spawner.js';\nimport { withEnvelopeContextAsync } from '../../util/envelope-context.js';\nimport { getLogger } from '../../util/logging.js';\nconst logger = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');\n// Sentinel object for shutdown signaling\nconst SENTINEL = Symbol('fanout-broker-sentinel');\nfunction isCloseable(obj) {\n return obj && typeof obj.close === 'function';\n}\n/**\n * In-memory fanout broker that receives messages from a sink channel and\n * distributes them to multiple subscriber channels.\n *\n * This is the TypeScript equivalent of Python's InMemoryFanoutBroker.\n */\nexport class InMemoryFanoutBroker extends TaskSpawner {\n constructor(sink, config = {}) {\n super();\n this._subscribers = new Set();\n this._running = false;\n this._sink = sink;\n const legacyPollTimeoutMs = config\n .poll_timeout_ms;\n const configuredPollTimeoutMs = typeof config.pollTimeoutMs === 'number'\n ? config.pollTimeoutMs\n : legacyPollTimeoutMs;\n this._pollTimeoutMs =\n typeof configuredPollTimeoutMs === 'number'\n ? configuredPollTimeoutMs\n : DEFAULT_POLLING_TIMEOUT_MS;\n this._pollTimeoutSec = this._pollTimeoutMs / 1000.0;\n }\n /**\n * Start the broker's listen loop\n */\n async start() {\n if (this._running) {\n return;\n }\n this._running = true;\n this.spawn(async () => await this._listenLoop(), {\n name: 'fanout-broker-listen-loop',\n });\n }\n /**\n * Stop the broker and clean up resources\n */\n async stop() {\n // 1) Prevent new iterations\n this._running = false;\n // Send sentinel to wake up any blocked receive\n try {\n await this._sink.send(SENTINEL);\n }\n catch (error) {\n // Ignore errors when sending sentinel (sink might be closed)\n logger.debug('error_sending_sentinel', {\n error: error.message,\n });\n }\n // 2) Shutdown spawned tasks with grace period\n await this.shutdownTasks({ gracePeriod: 3000 });\n // 3) Clean up subscribers\n const subscribersToClose = Array.from(this._subscribers);\n for (const sub of subscribersToClose) {\n if (isCloseable(sub)) {\n try {\n await sub.close();\n }\n catch (error) {\n logger.error('error_closing_subscriber', {\n subscriber: sub.toString(),\n error: error.message,\n });\n }\n }\n }\n this._subscribers.clear();\n }\n /**\n * Main listen loop that receives messages and distributes them to subscribers\n */\n async _listenLoop() {\n while (this._running) {\n try {\n // Non-blocking receive with timeout\n let msg;\n try {\n // Convert timeout from seconds to milliseconds for TypeScript timeout\n const timeoutMs = this._pollTimeoutSec * 1000;\n msg = await this._sink.receive(timeoutMs);\n }\n catch (error) {\n // Timeout or other receive error - continue loop\n continue;\n }\n if (msg === null || msg === undefined) {\n continue;\n }\n // Check for sentinel (shutdown signal)\n if (msg === SENTINEL) {\n this._running = false;\n break;\n }\n // Extract envelope from channel message or use direct envelope\n let envelope, context;\n try {\n [envelope, context] = extractEnvelopeAndContext(msg);\n }\n catch (error) {\n logger.debug('failed_to_extract_envelope', {\n error: error.message,\n });\n continue;\n }\n if (!envelope) {\n continue;\n }\n // Deliver to each subscriber individually\n // Send the original message (with context preserved) if it's a FameChannelMessage,\n // otherwise send the envelope directly\n const messageToSend = context !== undefined\n ? createChannelMessage(envelope, context)\n : envelope;\n const badSubs = [];\n const subscribersSnapshot = Array.from(this._subscribers);\n for (const sub of subscribersSnapshot) {\n await withEnvelopeContextAsync(envelope, async () => {\n try {\n await sub.send(messageToSend);\n }\n catch (error) {\n logger.error('error_sending_to_subscriber', {\n subscriber: sub.toString(),\n error: error.message,\n action: 'unsubscribing',\n });\n badSubs.push(sub);\n }\n });\n }\n // Remove any subscribers that failed\n for (const sub of badSubs) {\n this._subscribers.delete(sub);\n }\n }\n catch (error) {\n // Critical broker-level error: log and back off, but keep the loop running\n logger.critical('receive_loop_failed_unexpectedly', {\n error: error.message,\n stack: error.stack,\n });\n // Back off for 500ms before retrying\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n }\n }\n /**\n * Add a subscriber channel\n */\n addSubscriber(channel) {\n this._subscribers.add(channel);\n }\n /**\n * Remove a subscriber channel\n */\n removeSubscriber(channel) {\n this._subscribers.delete(channel);\n }\n /**\n * Get the current number of subscribers\n */\n get subscriberCount() {\n return this._subscribers.size;\n }\n /**\n * Check if the broker is running\n */\n get isRunning() {\n return this._running;\n }\n /**\n * Get a copy of the current subscribers\n */\n get subscribers() {\n return new Set(this._subscribers);\n }\n /** Poll timeout applied to the broker's sink channel in milliseconds */\n get pollTimeoutMs() {\n return this._pollTimeoutMs;\n }\n}\n//# sourceMappingURL=in-memory-fanout-broker.js.map","class InMemoryKeyValueStore {\n constructor() {\n this.store = new Map();\n }\n async set(key, value) {\n this.store.set(key, value);\n }\n async update(key, value) {\n if (!this.store.has(key)) {\n throw new Error(`Key '${key}' not found for update.`);\n }\n this.store.set(key, value);\n }\n async get(key) {\n return this.store.get(key);\n }\n async delete(key) {\n this.store.delete(key);\n }\n async list() {\n const result = {};\n for (const [key, value] of this.store.entries()) {\n result[key] = value;\n }\n return result;\n }\n}\nexport class InMemoryStorageProvider {\n constructor() {\n this.stores = new Map();\n }\n async getKeyValueStore(modelCtor, namespace) {\n let namespaceStores = this.stores.get(namespace);\n if (!namespaceStores) {\n namespaceStores = new Map();\n this.stores.set(namespace, namespaceStores);\n }\n const existing = namespaceStores.get(modelCtor);\n if (existing) {\n return existing;\n }\n const store = new InMemoryKeyValueStore();\n namespaceStores.set(modelCtor, store);\n return store;\n }\n}\nexport { InMemoryKeyValueStore };\n//# sourceMappingURL=in-memory-storage.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, registerFactory, } from '@naylence/factory';\nexport const STORAGE_PROVIDER_FACTORY_BASE_TYPE = 'StorageProviderFactory';\nexport class StorageProviderFactory extends AbstractResourceFactory {\n static async createStorageProvider(config, options = {}) {\n const instance = config\n ? await createResource(STORAGE_PROVIDER_FACTORY_BASE_TYPE, config, options)\n : await createDefaultResource(STORAGE_PROVIDER_FACTORY_BASE_TYPE, null, options);\n if (!instance) {\n throw new Error('Failed to create storage provider from configuration');\n }\n return instance;\n }\n}\nexport function registerStorageProviderFactory(type, factory) {\n registerFactory(STORAGE_PROVIDER_FACTORY_BASE_TYPE, type, factory);\n}\n//# sourceMappingURL=storage-provider-factory.js.map","const DEFAULT_DB_NAME = 'naylence-secrets';\nconst DEFAULT_STORE_NAME = 'auto-master-key';\nconst DEFAULT_KEY_ID = 'master';\nconst MASTER_KEY_LENGTH = 32;\nfunction isArrayBufferView(value) {\n return Boolean(value) && ArrayBuffer.isView(value);\n}\nfunction toUint8Array(value) {\n if (!value) {\n return null;\n }\n if (value instanceof Uint8Array) {\n return new Uint8Array(value);\n }\n if (value instanceof ArrayBuffer) {\n return new Uint8Array(value);\n }\n if (isArrayBufferView(value)) {\n const view = value;\n return new Uint8Array(view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength));\n }\n return null;\n}\nasync function openDatabase(factory, dbName, storeName) {\n return new Promise((resolve, reject) => {\n const request = factory.open(dbName, 1);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to open IndexedDB'));\n };\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n });\n}\nasync function readPersistedKey(db, storeName, keyId) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to read master key from IndexedDB'));\n };\n request.onsuccess = () => {\n resolve(toUint8Array(request.result));\n };\n });\n}\nasync function persistKey(db, storeName, keyId, key) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const buffer = key.buffer.slice(key.byteOffset, key.byteOffset + key.byteLength);\n const request = store.put(buffer, keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to persist master key to IndexedDB'));\n };\n tx.oncomplete = () => resolve();\n tx.onerror = () => {\n reject(tx.error ?? new Error('Failed to persist master key to IndexedDB'));\n };\n });\n}\nfunction getRandomBytes(length) {\n if (!globalThis.crypto?.getRandomValues) {\n throw new Error('crypto.getRandomValues is not available in this environment');\n }\n const buffer = new Uint8Array(length);\n globalThis.crypto.getRandomValues(buffer);\n return buffer;\n}\nexport class BrowserAutoKeyCredentialProvider {\n constructor(options = {}) {\n this.cachedKey = null;\n this.inflight = null;\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName ?? DEFAULT_STORE_NAME;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n if (options.idbFactory) {\n this.idbFactory = options.idbFactory;\n }\n else if (typeof indexedDB !== 'undefined') {\n this.idbFactory = indexedDB;\n }\n else {\n throw new Error('IndexedDB is not available in this environment');\n }\n }\n async get() {\n if (this.cachedKey) {\n return this.cachedKey;\n }\n if (this.inflight) {\n return this.inflight;\n }\n this.inflight = this.loadOrCreateKey();\n try {\n const key = await this.inflight;\n this.cachedKey = key;\n return key;\n }\n finally {\n this.inflight = null;\n }\n }\n async loadOrCreateKey() {\n const db = await openDatabase(this.idbFactory, this.dbName, this.storeName);\n try {\n const existing = await readPersistedKey(db, this.storeName, this.keyId);\n if (existing) {\n return existing;\n }\n const masterKey = getRandomBytes(MASTER_KEY_LENGTH);\n await persistKey(db, this.storeName, this.keyId, masterKey);\n return masterKey;\n }\n finally {\n db.close();\n }\n }\n}\n//# sourceMappingURL=browser-auto-key-credential-provider.js.map","import { BrowserAutoKeyCredentialProvider } from '../security/credential/browser-auto-key-credential-provider.js';\nconst DEFAULT_KEY_ID = 'default';\nconst DEFAULT_ALGORITHM = 'AES-GCM';\nconst GCM_IV_LENGTH = 12;\nfunction isBrowserEnvironment() {\n return (typeof indexedDB !== 'undefined' && typeof globalThis.crypto !== 'undefined');\n}\nfunction tryCreateBrowserAutoKeyCredentialProvider() {\n if (!isBrowserEnvironment()) {\n return null;\n }\n try {\n return new BrowserAutoKeyCredentialProvider();\n }\n catch {\n return null;\n }\n}\nlet cachedNodeCrypto;\nlet cachedSubtle;\nasync function loadNodeCrypto() {\n if (cachedNodeCrypto !== undefined) {\n return cachedNodeCrypto;\n }\n try {\n cachedNodeCrypto = await import('node:crypto');\n return cachedNodeCrypto;\n }\n catch {\n cachedNodeCrypto = null;\n return null;\n }\n}\nasync function getSubtleCrypto() {\n if (cachedSubtle) {\n return cachedSubtle;\n }\n if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto.subtle) {\n cachedSubtle = globalThis.crypto.subtle;\n return cachedSubtle;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.webcrypto?.subtle) {\n cachedSubtle = nodeCrypto.webcrypto.subtle;\n return cachedSubtle;\n }\n throw new Error('Web Crypto API is not available in this environment');\n}\nasync function getRandomBytes(length) {\n if (typeof globalThis.crypto !== 'undefined' &&\n typeof globalThis.crypto.getRandomValues === 'function') {\n const buffer = new Uint8Array(length);\n globalThis.crypto.getRandomValues(buffer);\n return buffer;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto) {\n const buffer = nodeCrypto.randomBytes(length);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n throw new Error('Unable to generate secure random bytes in this environment');\n}\nfunction normalizeKey(key) {\n if (key.length === 32) {\n return key;\n }\n if (key.length > 32) {\n return key.slice(0, 32);\n }\n const normalized = new Uint8Array(32);\n normalized.set(key);\n return normalized;\n}\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nfunction utf8Encode(value) {\n return textEncoder.encode(value);\n}\nfunction utf8Decode(buffer) {\n return textDecoder.decode(buffer);\n}\nfunction toHex(data) {\n return Array.from(data)\n .map((byte) => byte.toString(16).padStart(2, '0'))\n .join('');\n}\nfunction toArrayBuffer(view) {\n const slice = view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);\n return slice;\n}\nfunction fromHex(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid hex string');\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n result[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return result;\n}\nfunction fromBase64Url(base64url) {\n // Convert base64url to base64\n let base64 = base64url.replace(/-/g, '+').replace(/_/g, '/');\n // Add padding if needed\n const padding = base64.length % 4;\n if (padding === 2) {\n base64 += '==';\n }\n else if (padding === 3) {\n base64 += '=';\n }\n else if (padding === 1) {\n throw new Error('Invalid base64url string: length % 4 === 1');\n }\n // Prefer Node.js Buffer for consistency\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(base64, 'base64'));\n }\n // Browser fallback using atob\n if (typeof atob !== 'undefined') {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n throw new Error('No base64 decoding available in this environment');\n}\nfunction isEncryptedValue(candidate) {\n if (!candidate || typeof candidate !== 'object') {\n return false;\n }\n const record = candidate;\n return (typeof record.keyId === 'string' &&\n typeof record.ciphertext === 'string' &&\n typeof record.algorithm === 'string');\n}\nexport class StorageAESEncryptionManager {\n async encrypt(plaintext, key) {\n const subtle = await getSubtleCrypto();\n const normalizedKey = normalizeKey(key);\n const keyBuffer = toArrayBuffer(normalizedKey);\n const cryptoKey = await subtle.importKey('raw', keyBuffer, { name: 'AES-GCM' }, false, ['encrypt']);\n const iv = await getRandomBytes(GCM_IV_LENGTH);\n const ivBuffer = toArrayBuffer(iv);\n const ciphertextBuffer = await subtle.encrypt({ name: 'AES-GCM', iv: ivBuffer }, cryptoKey, toArrayBuffer(plaintext));\n const ciphertext = new Uint8Array(ciphertextBuffer);\n const result = new Uint8Array(iv.length + ciphertext.length);\n result.set(iv, 0);\n result.set(ciphertext, iv.length);\n return result;\n }\n async decrypt(ciphertext, key) {\n if (ciphertext.length <= GCM_IV_LENGTH) {\n throw new Error('Ciphertext too short to contain IV');\n }\n const subtle = await getSubtleCrypto();\n const normalizedKey = normalizeKey(key);\n const keyBuffer = toArrayBuffer(normalizedKey);\n const cryptoKey = await subtle.importKey('raw', keyBuffer, { name: 'AES-GCM' }, false, ['decrypt']);\n const iv = ciphertext.slice(0, GCM_IV_LENGTH);\n const actualCiphertext = ciphertext.slice(GCM_IV_LENGTH);\n const ivBuffer = toArrayBuffer(iv);\n const cipherBuffer = toArrayBuffer(actualCiphertext);\n const plaintextBuffer = await subtle.decrypt({ name: 'AES-GCM', iv: ivBuffer }, cryptoKey, cipherBuffer);\n return new Uint8Array(plaintextBuffer);\n }\n}\nexport class EncryptedValue {\n constructor(params) {\n this.keyId = params.keyId;\n this.ciphertext = params.ciphertext;\n this.algorithm = params.algorithm;\n }\n}\nexport class EncryptedKeyValueStore {\n constructor(options) {\n this.underlyingStore = options.underlyingStore;\n this.masterKeyProvider = options.masterKeyProvider;\n this.encryptionManager = options.encryptionManager;\n this.modelCtor = options.modelCtor;\n this.cache = options.enableCaching ? new Map() : null;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n this.algorithm = options.algorithm ?? DEFAULT_ALGORITHM;\n }\n async getRawMasterKey() {\n const key = await this.masterKeyProvider.get();\n if (!key) {\n throw new Error('Master key provider must return a valid key');\n }\n if (key instanceof Uint8Array) {\n return key;\n }\n // Check if the key looks like base64url (alphanumeric, -, _, and typically 43 chars for 32 bytes)\n // Base64url pattern: only contains [A-Za-z0-9_-]\n const base64UrlPattern = /^[A-Za-z0-9_-]+$/;\n const matchesPattern = base64UrlPattern.test(key);\n if (matchesPattern && key.length >= 16) {\n try {\n // Try to decode as base64url\n const decoded = fromBase64Url(key);\n // Verify it's a reasonable key length (16, 24, or 32 bytes for AES)\n if (decoded.length === 16 ||\n decoded.length === 24 ||\n decoded.length === 32) {\n return decoded;\n }\n // If wrong length after decoding, treat as UTF-8 passphrase\n console.warn(`[EncryptedStorage] Master key decoded from base64url but has unexpected length ${decoded.length}. Treating as UTF-8 passphrase.`);\n }\n catch (error) {\n // If decoding fails, treat as UTF-8 passphrase\n console.warn(`[EncryptedStorage] Master key looks like base64url but failed to decode: ${error instanceof Error ? error.message : String(error)}. Treating as UTF-8 passphrase.`);\n }\n }\n // Treat as UTF-8 passphrase\n const utf8Key = utf8Encode(key);\n // console.log('[EncryptedStorage] Using UTF-8 encoded key, length:', utf8Key.length, 'hex:', toHex(utf8Key.slice(0, 8)) + '...');\n return utf8Key;\n }\n serialize(value) {\n const candidate = value;\n if (candidate && typeof candidate.toJSON === 'function') {\n return JSON.stringify(candidate.toJSON());\n }\n return JSON.stringify(value);\n }\n deserialize(json) {\n const data = JSON.parse(json);\n const ctorAsAny = this.modelCtor;\n // Prefer static factory methods for custom deserialization logic\n if (typeof ctorAsAny.fromJSON === 'function') {\n return ctorAsAny.fromJSON(data);\n }\n if (typeof ctorAsAny.fromJson === 'function') {\n return ctorAsAny.fromJson(data);\n }\n if (typeof ctorAsAny.deserialize === 'function') {\n return ctorAsAny.deserialize(data);\n }\n // Default: Use Object.assign (standard approach for JSON deserialization)\n // This creates an instance with the correct prototype and copies all properties\n return Object.assign(Object.create(this.modelCtor.prototype), data);\n }\n cacheGet(key) {\n return this.cache?.get(key);\n }\n cacheSet(key, value) {\n this.cache?.set(key, value);\n }\n cacheDelete(key) {\n this.cache?.delete(key);\n }\n async set(key, value) {\n const serialized = this.serialize(value);\n const plaintext = utf8Encode(serialized);\n const masterKey = await this.getRawMasterKey();\n const ciphertext = await this.encryptionManager.encrypt(plaintext, masterKey);\n const encryptedValue = new EncryptedValue({\n keyId: this.keyId,\n ciphertext: toHex(ciphertext),\n algorithm: this.algorithm,\n });\n await this.underlyingStore.set(key, encryptedValue);\n this.cacheSet(key, value);\n }\n async update(key, value) {\n const serialized = this.serialize(value);\n const plaintext = utf8Encode(serialized);\n const masterKey = await this.getRawMasterKey();\n const ciphertext = await this.encryptionManager.encrypt(plaintext, masterKey);\n const encryptedValue = new EncryptedValue({\n keyId: this.keyId,\n ciphertext: toHex(ciphertext),\n algorithm: this.algorithm,\n });\n await this.underlyingStore.update(key, encryptedValue);\n this.cacheSet(key, value);\n }\n async get(key) {\n const cached = this.cacheGet(key);\n if (cached !== undefined) {\n return cached;\n }\n const encryptedValue = await this.underlyingStore.get(key);\n if (!encryptedValue) {\n return undefined;\n }\n if (!isEncryptedValue(encryptedValue)) {\n throw new Error(`Expected EncryptedValue, got ${typeof encryptedValue}`);\n }\n try {\n const masterKey = await this.getRawMasterKey();\n const ciphertext = fromHex(encryptedValue.ciphertext);\n const plaintext = await this.encryptionManager.decrypt(ciphertext, masterKey);\n const json = utf8Decode(plaintext);\n const value = this.deserialize(json);\n this.cacheSet(key, value);\n return value;\n }\n catch (error) {\n console.error(`[EncryptedStorage] ERROR decrypting key \"${key}\":`, error);\n console.error(`[EncryptedStorage] Encrypted value:`, JSON.stringify(encryptedValue));\n throw error;\n }\n }\n async delete(key) {\n await this.underlyingStore.delete(key);\n this.cacheDelete(key);\n }\n async list() {\n const encryptedItems = await this.underlyingStore.list();\n const masterKey = await this.getRawMasterKey();\n const result = {};\n for (const [key, encrypted] of Object.entries(encryptedItems)) {\n if (!isEncryptedValue(encrypted)) {\n continue;\n }\n const cached = this.cacheGet(key);\n if (cached !== undefined) {\n result[key] = cached;\n continue;\n }\n try {\n const ciphertext = fromHex(encrypted.ciphertext);\n const plaintext = await this.encryptionManager.decrypt(ciphertext, masterKey);\n const json = utf8Decode(plaintext);\n const value = this.deserialize(json);\n result[key] = value;\n this.cacheSet(key, value);\n }\n catch (error) {\n console.error('[EncryptedStorage] ERROR decrypting list item, key:', key, 'error:', error);\n console.error('[EncryptedStorage] Encrypted value:', JSON.stringify(encrypted));\n }\n }\n return result;\n }\n async clearCache() {\n this.cache?.clear();\n }\n}\nexport class EncryptedStorageProviderBase {\n constructor(options = {}) {\n const { isEncrypted = true, masterKeyProvider = null, encryptionManager = null, enableCaching = false, } = options;\n this.isEncrypted = isEncrypted;\n this.enableCaching = enableCaching;\n if (isEncrypted) {\n const resolvedProvider = masterKeyProvider ?? tryCreateBrowserAutoKeyCredentialProvider();\n if (!resolvedProvider) {\n throw new Error('masterKeyProvider is required when encryption is enabled');\n }\n this.masterKeyProvider = resolvedProvider;\n this.encryptionManager =\n encryptionManager ?? new StorageAESEncryptionManager();\n }\n else {\n this.masterKeyProvider = null;\n this.encryptionManager = null;\n }\n }\n async getKeyValueStore(modelCtor, namespace) {\n if (!this.isEncrypted) {\n return this.getUnderlyingKeyValueStore(modelCtor, namespace);\n }\n if (!this.masterKeyProvider || !this.encryptionManager) {\n throw new Error('Encryption is enabled but master key provider or encryption manager is missing');\n }\n const underlyingStore = await this.getUnderlyingKeyValueStore(EncryptedValue, namespace);\n return new EncryptedKeyValueStore({\n underlyingStore,\n masterKeyProvider: this.masterKeyProvider,\n encryptionManager: this.encryptionManager,\n modelCtor,\n enableCaching: this.enableCaching,\n });\n }\n}\n//# sourceMappingURL=encrypted-storage-provider-base.js.map","const DEFAULT_DB_NAME = 'naylence';\nconst DEFAULT_DB_VERSION = 1;\nfunction ensureIndexedDB(factory) {\n if (factory) {\n return factory;\n }\n if (typeof indexedDB === 'undefined') {\n throw new Error('IndexedDBKeyValueStore requires a browser environment with IndexedDB support');\n }\n return indexedDB;\n}\nfunction toError(error, fallback) {\n if (error instanceof Error) {\n return error;\n }\n return new Error(fallback);\n}\nfunction requestToPromise(request, description) {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(toError(request.error, description));\n });\n}\nexport class IndexedDBKeyValueStore {\n constructor(options) {\n this.dbPromise = null;\n if (!options?.storeName) {\n throw new Error('storeName is required');\n }\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName;\n this.version = options.version ?? DEFAULT_DB_VERSION;\n this.factory = ensureIndexedDB(options.idbFactory);\n }\n async set(key, value) {\n await this.withStore('readwrite', async (store) => {\n await requestToPromise(store.put(value, key), 'Failed to set value in IndexedDB');\n });\n }\n async update(key, value) {\n await this.withStore('readwrite', async (store) => {\n const existing = await requestToPromise(store.get(key), 'Failed to read value from IndexedDB');\n if (existing === undefined) {\n throw new Error(`Key '${key}' does not exist`);\n }\n await requestToPromise(store.put(value, key), 'Failed to update value in IndexedDB');\n });\n }\n async get(key) {\n return this.withStore('readonly', (store) => requestToPromise(store.get(key), 'Failed to read value from IndexedDB'));\n }\n async delete(key) {\n await this.withStore('readwrite', async (store) => {\n await requestToPromise(store.delete(key), 'Failed to delete value from IndexedDB');\n });\n }\n async list() {\n return this.withStore('readonly', (store) => new Promise((resolve, reject) => {\n const result = {};\n const request = store.openCursor();\n request.onerror = () => reject(toError(request.error, 'Failed to iterate IndexedDB store'));\n request.onsuccess = (event) => {\n const cursor = event.target.result;\n if (!cursor) {\n resolve(result);\n return;\n }\n const key = cursor.key;\n if (typeof key === 'string') {\n result[key] = cursor.value;\n }\n cursor.continue();\n };\n }));\n }\n async withStore(mode, fn) {\n const db = await this.ensureDatabase();\n return new Promise((resolve, reject) => {\n let settled = false;\n const transaction = db.transaction(this.storeName, mode);\n const store = transaction.objectStore(this.storeName);\n const finalize = (value) => {\n if (!settled) {\n settled = true;\n resolve(value);\n }\n };\n transaction.onabort = () => {\n if (!settled) {\n settled = true;\n reject(toError(transaction.error, 'IndexedDB transaction was aborted'));\n }\n };\n transaction.onerror = () => {\n if (!settled) {\n settled = true;\n reject(toError(transaction.error, 'IndexedDB transaction failed'));\n }\n };\n transaction.oncomplete = () => {\n if (!settled) {\n settled = true;\n resolve(undefined);\n }\n };\n try {\n Promise.resolve(fn(store))\n .then((result) => {\n if (mode === 'readonly') {\n finalize(result);\n }\n else {\n transaction.oncomplete = () => finalize(result);\n }\n })\n .catch((error) => {\n transaction.abort();\n reject(toError(error, 'IndexedDB operation failed'));\n });\n }\n catch (error) {\n transaction.abort();\n reject(toError(error, 'IndexedDB operation failed'));\n }\n });\n }\n async ensureDatabase() {\n if (!this.dbPromise) {\n this.dbPromise = this.openDatabase();\n }\n const db = await this.dbPromise;\n if (db.objectStoreNames.contains(this.storeName)) {\n return db;\n }\n db.close();\n this.dbPromise = this.upgradeDatabase(db.version + 1);\n return this.dbPromise;\n }\n openDatabase() {\n return this.createDatabase(this.version, true);\n }\n upgradeDatabase(version) {\n return this.createDatabase(version, false);\n }\n createDatabase(version, allowFallback) {\n return new Promise((resolve, reject) => {\n const request = this.factory.open(this.dbName, version);\n let resolved = false;\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(this.storeName)) {\n db.createObjectStore(this.storeName);\n }\n };\n request.onerror = () => {\n if (!resolved) {\n resolved = true;\n reject(toError(request.error, 'Failed to open IndexedDB'));\n }\n };\n request.onsuccess = () => {\n if (!resolved) {\n resolved = true;\n const db = request.result;\n if (!db.objectStoreNames.contains(this.storeName) && allowFallback) {\n db.close();\n this.createDatabase(version + 1, false)\n .then(resolve)\n .catch(reject);\n return;\n }\n resolve(db);\n }\n };\n });\n }\n}\n//# sourceMappingURL=indexeddb-key-value-store.js.map","import { EncryptedStorageProviderBase } from './encrypted-storage-provider-base.js';\nimport { IndexedDBKeyValueStore } from './indexeddb-key-value-store.js';\nconst DEFAULT_DB_NAME = 'naylence';\nconst DEFAULT_NAMESPACE_PREFIX = 'kv';\nfunction sanitizeSegment(segment, fallback) {\n const trimmed = segment.trim();\n const replaced = trimmed.replace(/[^A-Za-z0-9._-]+/g, '_');\n const cleaned = replaced.replace(/^[._-]+|[._-]+$/g, '');\n if (!cleaned) {\n return fallback;\n }\n return cleaned.slice(0, 120);\n}\nfunction buildStoreName(prefix, namespace, modelName) {\n const safePrefix = sanitizeSegment(prefix, DEFAULT_NAMESPACE_PREFIX);\n const safeNamespace = sanitizeSegment(namespace, 'namespace');\n const safeModel = sanitizeSegment(modelName || 'model', 'model');\n return `${safePrefix}:${safeNamespace}:${safeModel}`;\n}\nexport class IndexedDBStorageProvider extends EncryptedStorageProviderBase {\n constructor(options = {}) {\n const mode = options.mode ?? 'dx';\n if (!IndexedDBStorageProvider.supportedModes.has(mode)) {\n throw new Error(`Unsupported IndexedDB storage provider mode: ${mode}. Supported modes: ${Array.from(IndexedDBStorageProvider.supportedModes).join(', ')}`);\n }\n const enableCaching = options.enableCaching ?? mode === 'dx';\n const isEncrypted = options.isEncrypted ?? true;\n const masterKeyProvider = options.masterKeyProvider ?? null;\n if (mode === 'hardened' && !masterKeyProvider) {\n throw new Error('IndexedDBStorageProvider in hardened mode requires an explicit masterKeyProvider');\n }\n super({\n isEncrypted,\n masterKeyProvider,\n enableCaching,\n });\n this.stores = new Map();\n this.mode = mode;\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.version = options.version ?? 1;\n this.namespacePrefix = options.namespacePrefix ?? DEFAULT_NAMESPACE_PREFIX;\n this.idbFactory = options.idbFactory ?? undefined;\n }\n get isBrowserOnly() {\n return true;\n }\n async getUnderlyingKeyValueStore(modelCtor, namespace) {\n const modelName = modelCtor?.name ?? 'model';\n const storeKey = `${namespace}:${modelName}`;\n const existing = this.stores.get(storeKey);\n if (existing) {\n return existing;\n }\n const storeName = buildStoreName(this.namespacePrefix, namespace, modelName);\n const store = new IndexedDBKeyValueStore({\n dbName: this.dbName,\n version: this.version,\n storeName,\n ...(this.idbFactory ? { idbFactory: this.idbFactory } : {}),\n });\n this.stores.set(storeKey, store);\n return store;\n }\n}\nIndexedDBStorageProvider.supportedModes = new Set(['dx', 'hardened']);\n//# sourceMappingURL=indexeddb-storage-provider.js.map","const globalScope = globalThis;\nconst nodeStack = globalScope.__naylenceNodeStack__ ?? (globalScope.__naylenceNodeStack__ = []);\nexport function getCurrentNode() {\n return nodeStack.length > 0 ? nodeStack[nodeStack.length - 1] : null;\n}\nexport function getNode() {\n const current = getCurrentNode();\n if (!current) {\n throw new Error('No Fame node is currently bound to the context');\n }\n return current;\n}\nexport function pushNode(node) {\n nodeStack.push(node);\n let popped = false;\n return () => {\n if (popped) {\n return;\n }\n popped = true;\n const current = nodeStack[nodeStack.length - 1];\n if (current === node) {\n nodeStack.pop();\n return;\n }\n const index = nodeStack.lastIndexOf(node);\n if (index >= 0) {\n nodeStack.splice(index, 1);\n }\n };\n}\nexport async function withNodeContextAsync(node, fn) {\n const pop = pushNode(node);\n try {\n return await fn();\n }\n finally {\n pop();\n }\n}\nexport function runWithNodeContext(node, fn) {\n const pop = pushNode(node);\n try {\n return fn();\n }\n finally {\n pop();\n }\n}\n//# sourceMappingURL=node-context-stack.js.map","/**\n * NoopFlowController - Flow control stub that provides infinite credits\n *\n * Used when flow control is disabled. Behaves as if infinite credits exist\n * for all flow IDs, so operations never block on credit availability.\n */\n/**\n * Internal flow controller that provides infinite credits for all flows.\n * Used when BaseAsyncConnector is configured without flow control.\n */\nexport class _NoopFlowController {\n constructor() {\n this._infiniteCredits = 1000000;\n }\n /**\n * Always resolves immediately - infinite credits available.\n */\n async acquire(_flowId) {\n return Promise.resolve();\n }\n /**\n * Returns infinite credits (delta ignored).\n */\n addCredits(_flowId, _delta) {\n return this._infiniteCredits;\n }\n /**\n * Always returns infinite credits.\n */\n getCredits(_flowId) {\n return this._infiniteCredits;\n }\n /**\n * Always returns infinite credits (credits consumed ignored).\n */\n consume(_flowId, _credits = 1) {\n return this._infiniteCredits;\n }\n /**\n * Never needs refill - infinite credits available.\n */\n needsRefill(_flowId) {\n return false;\n }\n}\n//# sourceMappingURL=noop-flow-controller.js.map","/**\n * BaseAsyncConnector - Abstract async transport adapter with optional flow control\n *\n * Enhanced connector with cleaner shutdown, better back-pressure reporting,\n * and richer metrics/logging. Maintains backwards compatibility with subclasses.\n */\n/**\n * Error thrown when a task is cancelled during shutdown - not a critical error\n */\nexport class TaskCancellationError extends Error {\n constructor(message = 'Task cancelled') {\n super(message);\n this.name = 'TaskCancellationError';\n }\n}\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { FlowController } from '../channel/flow-controller.js';\nimport { _NoopFlowController } from './noop-flow-controller.js';\nimport { getLogger } from '../util/logging.js';\nimport { color, AnsiColor } from '../util/formatter.js';\nimport { withEnvelopeContextAsync } from '../util/envelope-context.js';\nimport { formatTimestampForConsole, isEnvelopeLoggingEnabled, prettyModel, } from '../util/util.js';\nimport { ConnectorState, ConnectorStateUtils, createFameEnvelope, generateId, FlowFlags, FameResponseType, } from '@naylence/core';\nimport { FameMessageTooLarge, FameTransportClose, BackPressureFull, } from '../errors/errors.js';\nconst logger = getLogger('naylence.fame.connector.base_async_connector');\n// Environment variables\nconst ENV_VAR_FAME_FLOW_CONTROL = 'FAME_FLOW_CONTROL';\nconst FLOW_CONTROL_ENABLED = typeof process !== 'undefined' && process?.env\n ? process.env[ENV_VAR_FAME_FLOW_CONTROL] !== '0'\n : true;\nconst FAME_MAX_MESSAGE_SIZE = 1024 * 256;\n/**\n * Abstract base class for async transport adapters with optional flow control.\n *\n * Provides:\n * - Async send/receive loops with proper error handling\n * - Optional credit-based flow control\n * - Graceful shutdown with task cleanup\n * - Back-pressure management\n * - Metrics and logging integration\n */\nexport class BaseAsyncConnector extends TaskSpawner {\n constructor(config = {}) {\n super(config.taskSpawner);\n // Send queue for outbound messages\n this._sendQueue = [];\n this._sendLoopShutdown = false; // Flag to indicate send loop should stop\n this._closed = false;\n // Connector state management\n this._state = ConnectorState.INITIALIZED;\n this._maxQueueSize = config.maxQueueSize ?? 1000;\n this._metrics = config.metricsEmitter;\n this._initialWindow = config.initialWindow ?? 32;\n this._connectorFlowId = generateId();\n this._authorizationContext = config.authorizationContext;\n // Initialize shutdown timeouts\n this._shutdownGracePeriod = config.shutdownTimeouts?.gracePeriod ?? 2.0;\n this._shutdownJoinTimeout = config.shutdownTimeouts?.joinTimeout ?? 1000;\n // Initialize flow control\n const useFlowControl = config.flowControl ?? FLOW_CONTROL_ENABLED;\n if (useFlowControl) {\n this._flowCtrl = new FlowController(this._initialWindow);\n this._fcEnabled = true;\n }\n else {\n this._flowCtrl = new _NoopFlowController();\n this._fcEnabled = false;\n }\n }\n // ---------------------------------------------------------------------\n // State Management Properties\n // ---------------------------------------------------------------------\n /** Get the current connector state */\n get state() {\n return this._state;\n }\n /** Get the current connector state (alias for compatibility) */\n get connectorState() {\n return this._state;\n }\n /** Get the close code if connector was closed */\n get closeCode() {\n return this._closeCode;\n }\n /** Get the close reason if connector was closed */\n get closeReason() {\n return this._closeReason;\n }\n /** Get the last error that occurred */\n get lastError() {\n return this._lastError;\n }\n /** Get the current authorization context */\n get authorizationContext() {\n return this._authorizationContext;\n }\n /** Set the authorization context */\n set authorizationContext(context) {\n this._authorizationContext = context;\n }\n /**\n * Update the connector state and log the transition\n */\n _setState(newState) {\n if (this._state !== newState) {\n const oldState = this._state;\n this._state = newState;\n logger.debug('connector_state_transition', {\n connector_id: this._connectorFlowId,\n old_state: oldState,\n new_state: newState,\n });\n }\n }\n // ---------------------------------------------------------------------\n // Lifecycle Methods\n // ---------------------------------------------------------------------\n /**\n * Start the connector with an inbound message handler\n */\n async start(inboundHandler) {\n if (!ConnectorStateUtils.canStart(this._state)) {\n if (this._state === ConnectorState.STARTED) {\n throw new Error('Connector already started');\n }\n throw new Error(`Cannot start connector in state: ${this._state}`);\n }\n if (this._handler !== undefined) {\n throw new Error('Connector already started');\n }\n this._handler = inboundHandler;\n // Start background tasks\n this.spawn((signal) => this._sendLoop(signal), { name: 'send-loop' });\n this.spawn((signal) => this._receiveLoop(signal), { name: 'receive-loop' });\n this._setState(ConnectorState.STARTED);\n }\n /**\n * Replace the current message handler\n */\n async replaceHandler(handler) {\n this._handler = handler;\n }\n /**\n * Stop the connector gracefully\n */\n async stop() {\n if (!ConnectorStateUtils.canStop(this._state)) {\n logger.debug('connector_stop_already_stopped', {\n current_state: this._state,\n connector_id: this._connectorFlowId,\n });\n return;\n }\n this._setState(ConnectorState.STOPPED);\n await this._shutdown(1000, 'normal closure');\n if (this._lastError) {\n throw this._lastError;\n }\n }\n /**\n * Close the connector with optional code and reason\n */\n async close(code = 1000, reason = 'normal closure') {\n if (!ConnectorStateUtils.canClose(this._state)) {\n logger.warning('connector_close_invalid_state', {\n current_state: this._state,\n connector_id: this._connectorFlowId,\n });\n return;\n }\n this._setState(ConnectorState.CLOSED);\n await this._shutdown(code, reason);\n if (this._lastError) {\n throw this._lastError;\n }\n }\n /**\n * Wait until the connector is closed\n */\n async waitUntilClosed() {\n if (!this._closePromise) {\n this._closePromise = new Promise((resolve) => {\n this._closeResolver = resolve;\n });\n }\n await this._closePromise;\n }\n /**\n * Push data to the receive queue for processing.\n * Subclasses should implement this to handle incoming data.\n */\n async pushToReceive(_rawOrEnvelope) {\n throw new Error('Subclasses must implement pushToReceive()');\n }\n // Backwards compatibility alias\n async _receiveLoop(signal) {\n return this._recvLoop(signal);\n }\n // ---------------------------------------------------------------------\n // Public Send Method\n // ---------------------------------------------------------------------\n /**\n * Send a FAME envelope through the transport\n */\n async send(envelope) {\n if (this._closed) {\n throw new FameTransportClose('Connection closed', 1006);\n }\n // Apply flow control if enabled and not a credit update\n if (this._fcEnabled &&\n !(envelope.frame &&\n 'flow_id' in envelope.frame &&\n 'credits' in envelope.frame)) {\n const flowId = envelope.flowId || this._connectorFlowId;\n envelope.flowId = flowId;\n const t0 = this._metrics ? performance.now() : 0;\n await this._flowCtrl.acquire(flowId);\n if (this._metrics) {\n this._metrics.histogram('connector.acquire_latency', performance.now() - t0, {\n flow_id: flowId,\n });\n }\n // Set sequence ID and flow flags if using real flow controller\n if (this._flowCtrl instanceof FlowController) {\n const [wnd, flags] = this._flowCtrl.nextWindow(flowId);\n envelope.seqId = wnd;\n envelope.flowFlags = (envelope.flowFlags || FlowFlags.NONE) | flags;\n }\n }\n // Serialize envelope\n const raw = new TextEncoder().encode(JSON.stringify(envelope));\n const rawSize = raw.length;\n if (rawSize > FAME_MAX_MESSAGE_SIZE) {\n throw new FameMessageTooLarge(`Message size ${rawSize} exceeds maximum ${FAME_MAX_MESSAGE_SIZE}`);\n }\n // Check queue capacity before adding for backpressure\n if (this._sendQueue.length >= this._maxQueueSize) {\n const depth = this._sendQueue.length;\n throw new BackPressureFull(`send-queue full (${depth}/${this._maxQueueSize})`);\n }\n // Add to queue and notify send loop\n this._sendQueue.push(raw);\n // Log for debugging\n logger.debug('send_envelope_queued', {\n queue_length: this._sendQueue.length,\n max_queue_size: this._maxQueueSize,\n });\n this._wakeUpSendLoop();\n if (this._metrics) {\n this._metrics.gauge('connector.send_queue_depth', this._sendQueue.length, {\n connector: this.constructor.name,\n });\n }\n }\n /**\n * Wake up the send loop to process queued items\n */\n _wakeUpSendLoop() {\n if (this._sendPromiseResolve) {\n this._sendPromiseResolve();\n this._sendPromiseResolve = undefined;\n }\n }\n /**\n * Internal send loop that processes the send queue\n */\n async _sendLoop(signal) {\n try {\n while (!this._closed && !this._sendLoopShutdown && !signal?.aborted) {\n // Wait for data in queue with cancellation support\n while (this._sendQueue.length === 0 &&\n !this._closed &&\n !this._sendLoopShutdown &&\n !signal?.aborted) {\n await new Promise((resolve, reject) => {\n // Remove redundant signal check - the event listener handles it\n this._sendPromiseResolve = resolve;\n const timeoutId = setTimeout(resolve, 100); // Fallback timeout\n // Listen for cancellation\n const abortHandler = () => {\n clearTimeout(timeoutId);\n reject(new TaskCancellationError());\n };\n signal?.addEventListener('abort', abortHandler, { once: true });\n });\n }\n if (this._closed || signal?.aborted)\n break;\n // Look at the first item without removing it yet\n const item = this._sendQueue[0];\n if (!item)\n continue;\n logger.debug('send_loop_processing_item', {\n queue_length_before_send: this._sendQueue.length,\n });\n // Send through transport (this may block)\n await this._transportSendBytes(item);\n // Only remove from queue after successful send\n this._sendQueue.shift();\n logger.debug('send_loop_item_sent', {\n queue_length_after_send: this._sendQueue.length,\n });\n }\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n const code = error.code ?? 1006;\n const reason = error.message;\n await this._shutdown(code, reason, undefined, error);\n }\n else if (error instanceof TaskCancellationError) {\n // Task cancellation is expected during shutdown - log as debug, not critical\n logger.debug('send loop cancelled', {\n connector: this.constructor.name,\n reason: error.message,\n });\n // Don't re-throw - this is normal during shutdown\n }\n else {\n logger.critical('unexpected exception in send loop', {\n connector: this.constructor.name,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n }\n /**\n * Internal receive loop that processes incoming messages\n */\n async _recvLoop(signal) {\n if (!this._handler) {\n throw new Error('Handler not set');\n }\n try {\n while (!this._closed && !signal?.aborted) {\n // Remove redundant signal check - loop condition handles it\n const message = await this._transportReceive();\n let messageContext;\n let env;\n // Parse the incoming message\n if (message && typeof message === 'object' && 'envelope' in message) {\n // FameChannelMessage\n const channelMsg = message;\n env = channelMsg.envelope;\n messageContext = channelMsg.context;\n }\n else if (message &&\n typeof message === 'object' &&\n 'frame' in message) {\n // FameEnvelope\n env = message;\n }\n else if (message instanceof Uint8Array) {\n // Raw bytes - parse as JSON\n try {\n const jsonStr = new TextDecoder().decode(message);\n env = JSON.parse(jsonStr);\n }\n catch (error) {\n logger.error('Invalid envelope', {\n message: message.toString(),\n error: error instanceof Error ? error.message : String(error),\n });\n continue;\n }\n }\n else if (message instanceof FameTransportClose) {\n // Transport close - initiate shutdown\n const code = message.code ?? 1006;\n const reason = message.message;\n await this._shutdownWithError(message, code, reason);\n return;\n }\n else {\n throw new Error(`Expected FameEnvelope, Uint8Array, or FameTransportClose, got ${typeof message}`);\n }\n // Process the envelope\n const envelopeContext = {\n ...(env.traceId && { trace_id: env.traceId }),\n ...(env.flowId && { flow_id: env.flowId }),\n };\n await withEnvelopeContextAsync(envelopeContext, async () => {\n const prettyEnvelope = prettyModel(env);\n logger.trace('connector_received_envelope', {\n envelope: env,\n pretty: prettyEnvelope,\n });\n if (isEnvelopeLoggingEnabled()) {\n console.log(`\\n${formatTimestampForConsole()} - ${color('Received envelope 📨', AnsiColor.BLUE)}\\n${prettyEnvelope}`);\n }\n // Handle credit updates\n if (env.frame && env.frame.type === 'CreditUpdate') {\n const creditFrame = env.frame;\n this._flowCtrl.addCredits(creditFrame.flowId, creditFrame.credits);\n return;\n }\n // Deliver to handler\n const context = messageContext || {\n fromConnector: this,\n expectedResponseType: FameResponseType.NONE,\n };\n await this._handler(env, context);\n // Consume credit and emit refill if needed\n const flowId = env.flowId || this._connectorFlowId;\n this._flowCtrl.consume(flowId);\n await this._maybeEmitCredit(flowId, env.traceId);\n });\n }\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n const code = error.code ?? 1006;\n const reason = error.message;\n await this._shutdown(code, reason, undefined, error);\n }\n else if (error instanceof TaskCancellationError) {\n // Task cancellation is expected during shutdown - log as debug, not critical\n logger.debug('receive loop cancelled', {\n connector: this.constructor.name,\n reason: error.message,\n });\n // Don't re-throw - this is normal during shutdown\n }\n else {\n logger.critical('unexpected_error_in recv_loop', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n }\n // ---------------------------------------------------------------------\n // Credit Management\n // ---------------------------------------------------------------------\n /**\n * Emit credit update if flow control needs refill\n */\n async _maybeEmitCredit(flowId, traceId) {\n if (!this._flowCtrl.needsRefill(flowId)) {\n return;\n }\n const delta = this._initialWindow;\n this._flowCtrl.addCredits(flowId, delta);\n const ackEnv = createFameEnvelope({\n ...(traceId && { traceId }),\n flowId,\n windowId: 0,\n frame: {\n type: 'CreditUpdate',\n flowId: flowId,\n credits: delta,\n },\n flags: FlowFlags.ACK,\n });\n await this.send(ackEnv);\n }\n // ---------------------------------------------------------------------\n // Shutdown Management\n // ---------------------------------------------------------------------\n /**\n * Shutdown the connector due to an error\n */\n async _shutdownWithError(exc, code = 1006, reason) {\n const errorReason = reason || `${exc.constructor.name}: ${exc.message}`;\n await this._shutdown(code, errorReason, undefined, exc);\n }\n /**\n * Internal shutdown implementation\n */\n async _shutdown(code, reason, gracePeriod, exc) {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this._closeCode = code;\n this._closeReason = reason;\n // Use provided gracePeriod or fall back to configured value\n const effectiveGracePeriod = gracePeriod ?? this._shutdownGracePeriod;\n if (exc) {\n this._lastError = exc;\n }\n // Set final state if not already stopped/closed\n if (this._state !== ConnectorState.STOPPED &&\n this._state !== ConnectorState.CLOSED) {\n this._setState(ConnectorState.CLOSED);\n }\n // Stop send loop using shutdown flag\n this._sendLoopShutdown = true;\n // Wake up the send loop if it's waiting\n if (this._sendPromiseResolve) {\n this._sendPromiseResolve();\n this._sendPromiseResolve = undefined;\n }\n // Close transport\n await this._transportClose(code, reason);\n // Shutdown spawned tasks\n try {\n await this.shutdownTasks({\n gracePeriod: effectiveGracePeriod * 1000, // Convert to milliseconds\n joinTimeout: this._shutdownJoinTimeout,\n });\n }\n catch (error) {\n logger.warning('task_shutdown_error', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n // Handle last spawner error\n if (this.lastSpawnerError) {\n this._lastError = this._lastError || this.lastSpawnerError;\n }\n // Resolve close promise\n if (this._closeResolver) {\n this._closeResolver();\n }\n }\n /**\n * Close the underlying transport\n */\n async _transportClose(_code, _reason) {\n // Default implementation does nothing - subclasses can override\n }\n}\n//# sourceMappingURL=base-async-connector.js.map","/**\n * Base class for connector settings.\n *\n * • Never serialized to the wire\n * • Contains runtime knobs (queue sizes, timeouts, TLS flags, etc.)\n * • Used by connector factories to configure connectors in this process\n */\n/**\n * Default values for connector configuration\n */\nexport const ConnectorConfigDefaults = {\n durable: false,\n};\n/**\n * Type guard to check if an object is a valid ConnectorConfig\n */\nexport function isConnectorConfig(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n const config = obj;\n return typeof config.type === 'string';\n}\n/**\n * Utility function to create a connector config with defaults applied\n */\nexport function createConnectorConfig(config) {\n return {\n ...ConnectorConfigDefaults,\n ...config,\n };\n}\n//# sourceMappingURL=connector-config.js.map","/**\n * Base factory for creating FameConnector instances from either ConnectorConfig or ConnectionGrant.\n *\n * Concrete implementations must define supported grant types and provide grant-to-connector\n * conversion logic.\n */\nimport { ExtensionManager, ExpressionEvaluationPolicy, } from '@naylence/factory';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.connector.connector_factory');\nexport const CONNECTOR_FACTORY_BASE_TYPE = 'ConnectorFactory';\n/**\n * Abstract base class for connector factories\n */\nexport class ConnectorFactory {\n constructor() {\n this.isDefault = false;\n this.priority = 0;\n }\n /**\n * Evaluate a grant dictionary and return a typed ConnectionGrant instance.\n */\n static evaluateGrant(grant) {\n const grantType = grant.type;\n if (!grantType || typeof grantType !== 'string') {\n throw new Error(\"Missing 'type' field in grant\");\n }\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n for (const [, factoryInfo] of factories) {\n try {\n const factory = this.getGrantAwareFactory(factoryInfo);\n if (!factory) {\n continue;\n }\n const supportedGrants = factory.supportedGrants();\n const grantClass = supportedGrants[grantType];\n if (grantClass) {\n const grantPurpose = grant.purpose;\n const evaluatedConfig = factory.configFromGrant(grant, ExpressionEvaluationPolicy.EVALUATE);\n const evaluatedGrant = factory.grantFromConfig(evaluatedConfig);\n evaluatedGrant.purpose = grantPurpose;\n return evaluatedGrant;\n }\n }\n catch (error) {\n logger.warning(`Failed to evaluate grant with factory ${factoryInfo.constructor.name}: ${error}`);\n continue;\n }\n }\n throw new Error(`No suitable grant found for type ${grantType}`);\n }\n /**\n * Create a connector from either a ConnectorConfig or ConnectionGrant.\n *\n * This method uses the extension discovery mechanism to find an appropriate\n * factory that supports the given grant type.\n */\n static async createConnector(configOrGrant, ...kwargs) {\n // Handle ConnectionGrant first to avoid misclassifying grants as config records\n let connectorConfig;\n let grantType;\n if (this.isConnectionGrant(configOrGrant)) {\n grantType = configOrGrant.type;\n }\n else if (this.isConnectorConfig(configOrGrant)) {\n return await this.createResource(configOrGrant, ...kwargs);\n }\n else if (this.isRecord(configOrGrant)) {\n // Check if this is a grant type by testing known factories\n grantType = configOrGrant.type;\n }\n if (!grantType) {\n throw new Error(\"Missing 'type' field in configuration\");\n }\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n for (const [, factoryInfo] of factories) {\n try {\n const factory = this.getGrantAwareFactory(factoryInfo);\n if (!factory) {\n continue;\n }\n if (factory.supportedGrantTypes().includes(grantType)) {\n // We found a factory that supports this grant type\n connectorConfig = factory.configFromGrant(configOrGrant);\n break;\n }\n }\n catch (error) {\n logger.warning(`Failed to create connector config from grant: ${error}`);\n continue;\n }\n }\n if (!connectorConfig) {\n throw new Error('No suitable connector configuration found');\n }\n return await this.createResource(connectorConfig, ...kwargs);\n }\n /**\n * Create a resource using the appropriate factory\n */\n static async createResource(config, ...kwargs) {\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n const requestedType = config.type;\n const candidateTypes = new Set([requestedType]);\n if (requestedType === 'websocket') {\n candidateTypes.add('WebSocketConnector');\n }\n else if (requestedType === 'WebSocketConnector') {\n candidateTypes.add('websocket');\n }\n for (const candidateType of candidateTypes) {\n for (const [, factoryInfo] of factories) {\n const factory = factoryInfo.instance || new factoryInfo.constructor();\n if (factory.type === candidateType) {\n const normalizedConfig = candidateType === requestedType\n ? config\n : { ...config, type: candidateType };\n return await factory.create(normalizedConfig, ...kwargs);\n }\n }\n }\n throw new Error(`No factory found for connector type: ${config.type}`);\n }\n /**\n * Type guard for ConnectorConfig\n */\n static isConnectorConfig(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'type' in obj &&\n typeof obj.type === 'string');\n }\n /**\n * Type guard for ConnectionGrant\n */\n static isConnectionGrant(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'type' in obj &&\n 'purpose' in obj &&\n typeof obj.type === 'string' &&\n typeof obj.purpose === 'string');\n }\n /**\n * Type guard for Record<string, unknown>\n */\n static isRecord(obj) {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n }\n static getGrantAwareFactory(factoryInfo) {\n const existing = factoryInfo.instance;\n if (existing && this.isGrantAware(existing)) {\n return existing;\n }\n if (existing && !this.isGrantAware(existing)) {\n logger.warning(`Factory ${factoryInfo.constructor.name} is registered under ${CONNECTOR_FACTORY_BASE_TYPE} but is missing grant conversion APIs; skipping.`);\n return null;\n }\n try {\n const instance = new factoryInfo.constructor();\n if (!this.isGrantAware(instance)) {\n logger.warning(`Factory ${factoryInfo.constructor.name} does not implement grant conversion APIs required by ${CONNECTOR_FACTORY_BASE_TYPE}; skipping.`);\n return null;\n }\n factoryInfo.instance = instance;\n return instance;\n }\n catch (error) {\n logger.warning(`Failed to instantiate factory ${factoryInfo.constructor.name} while resolving grant conversion APIs: ${error}`);\n return null;\n }\n }\n static isGrantAware(candidate) {\n if (candidate instanceof ConnectorFactory) {\n return true;\n }\n const maybe = candidate;\n return (typeof maybe.supportedGrantTypes === 'function' &&\n typeof maybe.supportedGrants === 'function' &&\n typeof maybe.configFromGrant === 'function' &&\n typeof maybe.grantFromConfig === 'function');\n }\n}\n/**\n * Utility function to create a resource using the factory system\n */\nexport async function createResource(config, ...kwargs) {\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n const requestedType = config.type;\n const candidateTypes = new Set([requestedType]);\n if (requestedType === 'websocket') {\n candidateTypes.add('WebSocketConnector');\n }\n else if (requestedType === 'WebSocketConnector') {\n candidateTypes.add('websocket');\n }\n for (const candidateType of candidateTypes) {\n for (const [, factoryInfo] of factories) {\n const factory = factoryInfo.instance || new factoryInfo.constructor();\n if (factory.type === candidateType) {\n const normalizedConfig = candidateType === requestedType\n ? config\n : { ...config, type: candidateType };\n return (await factory.create(normalizedConfig, ...kwargs));\n }\n }\n }\n throw new Error(`No factory found for connector type: ${config.type}`);\n}\n//# sourceMappingURL=connector-factory.js.map","/**\n * WebSocket Connector Implementation\n *\n * A transport adapter that works with both Node.js and browser WebSocket APIs.\n * Supports both native WebSocket clients and server-side WebSocket connections.\n */\nimport { BaseAsyncConnector, } from './base-async-connector.js';\nimport { FameTransportClose } from '../errors/errors.js';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.connector.websocket_connector');\n/**\n * WebSocket state constants (mirrors standard WebSocket states)\n */\nexport const WebSocketState = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n};\n/**\n * A transport adapter that can work with either:\n * • Browser WebSocket API\n * • Node.js ws library WebSocket\n * • Server-side WebSocket connections (with FastAPI-like interface)\n */\nexport class WebSocketConnector extends BaseAsyncConnector {\n constructor(websocket, config = { type: 'websocket' }) {\n const normalizedConfig = { ...config };\n // Ensure the connector type is always set for factory compatibility\n if (!normalizedConfig.type) {\n normalizedConfig.type = 'websocket';\n }\n const legacyAuthContext = config.authorization_context;\n if (legacyAuthContext !== undefined &&\n normalizedConfig.authorizationContext === undefined) {\n normalizedConfig.authorizationContext = legacyAuthContext;\n }\n super(normalizedConfig);\n this._authHeader = null;\n this._receiveQueue = [];\n this._receiveWaiters = [];\n this._receiveHandlersAttached = false;\n this._removeReceiveHandlers = null;\n this._terminateFallbackTimer = null;\n this._websocket = websocket;\n // Detect if this is a FastAPI-like server WebSocket\n this._isFastApiLike = !!(websocket.receive_bytes &&\n websocket.send_bytes &&\n typeof websocket.receive_bytes === 'function' &&\n typeof websocket.send_bytes === 'function');\n logger.debug('websocket_connector_created', {\n is_fastapi_like: this._isFastApiLike,\n ready_state: websocket.readyState,\n url: websocket.url,\n });\n // For non-FastAPI WebSockets (browser/Node.js ws), attach receive handlers immediately\n // to avoid race conditions where messages arrive before the first _transportReceive() call\n if (!this._isFastApiLike) {\n this._ensureReceiveHandlers();\n }\n }\n /**\n * Update the Authorization header associated with this connector, if provided.\n * For WebSocket transports the header is primarily used during the initial\n * handshake; the stored value is retained for observability or refresh logic.\n */\n setAuthHeader(value) {\n if (typeof value === 'string') {\n this._authHeader = value.trim();\n }\n }\n /**\n * Retrieve the most recently applied Authorization header value, if any.\n */\n get authHeader() {\n return this._authHeader;\n }\n /**\n * Push data to the receive queue for processing (override from base class).\n * This is used to replay buffered messages after authentication.\n */\n async pushToReceive(rawOrEnvelope) {\n // Convert to Uint8Array if needed\n let data;\n if (rawOrEnvelope instanceof Uint8Array) {\n data = rawOrEnvelope;\n }\n else {\n // FameEnvelope or FameChannelMessage - serialize to JSON bytes\n const jsonStr = JSON.stringify(rawOrEnvelope);\n data = new TextEncoder().encode(jsonStr);\n }\n // Push to receive queue - if there's a waiter, resolve it immediately\n if (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.resolve(data);\n }\n else {\n this._receiveQueue.push(data);\n }\n logger.debug('websocket_message_pushed_to_queue', {\n queueLength: this._receiveQueue.length,\n waitersLength: this._receiveWaiters.length,\n });\n }\n // ---------------------------------------------------------------------\n // Transport Implementation\n // ---------------------------------------------------------------------\n /**\n * Send raw bytes through the WebSocket transport\n */\n async _transportSendBytes(data) {\n try {\n if (this._isFastApiLike && this._websocket.send_bytes) {\n // FastAPI-style server WebSocket\n this._websocket.send_bytes(data);\n }\n else {\n // Browser WebSocket or Node.js ws client\n this._websocket.send(data);\n }\n }\n catch (error) {\n // Handle WebSocket disconnection errors\n if (this._isWebSocketDisconnectError(error)) {\n const closeCode = this._extractCloseCode(error);\n const reason = this._extractCloseReason(error) || 'peer closed';\n throw new FameTransportClose(reason, closeCode);\n }\n throw error;\n }\n }\n /**\n * Receive bytes from the WebSocket with enhanced error handling and cancellation safety\n */\n async _transportReceive() {\n try {\n // Validate WebSocket object before attempting to receive\n if (!this._websocket) {\n throw new FameTransportClose('WebSocket object is null', 1006);\n }\n // Use a timeout to prevent hanging during shutdown scenarios\n const receiveTimeout = 30000; // 30 seconds\n if (this._isFastApiLike && this._websocket.receive_bytes) {\n // FastAPI-style server WebSocket\n const receiveMethod = this._websocket.receive_bytes;\n if (typeof receiveMethod !== 'function') {\n throw new FameTransportClose('FastAPI WebSocket receive_bytes method not available', 1006);\n }\n const result = receiveMethod.call(this._websocket);\n // Ensure we have a Promise\n if (!result || typeof result.then !== 'function') {\n logger.error('fastapi_receive_not_awaitable', {\n result_type: typeof result,\n result_str: String(result).substring(0, 100),\n });\n throw new FameTransportClose(`FastAPI receive_bytes returned non-awaitable: ${typeof result}`, 1006);\n }\n // Add timeout protection\n try {\n return await this._withTimeout(result, receiveTimeout);\n }\n catch (error) {\n if (error instanceof Error && error.name === 'TimeoutError') {\n throw new FameTransportClose('FastAPI receive_bytes timed out', 1006);\n }\n // Handle known WebSocket shutdown race condition\n if (this._isAwaitFutureError(error)) {\n logger.debug('websocket_shutdown_race_condition_handled', {\n note: 'Normal WebSocket close timing - converting to cancellation',\n websocket_state: this._websocket.client_state || 'unknown',\n });\n throw new FameTransportClose('WebSocket cancelled during receive operation', 1006);\n }\n throw error;\n }\n }\n else {\n // Browser WebSocket or Node.js ws client - buffered approach to avoid message loss\n this._ensureReceiveHandlers();\n if (this._receiveQueue.length > 0) {\n return this._receiveQueue.shift();\n }\n return await new Promise((resolve, reject) => {\n const waiter = {\n resolve: (value) => {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n resolve(value);\n },\n reject: (reason) => {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n reject(reason);\n },\n };\n waiter.timeoutId = setTimeout(() => {\n const index = this._receiveWaiters.indexOf(waiter);\n if (index !== -1) {\n this._receiveWaiters.splice(index, 1);\n }\n waiter.reject(new FameTransportClose('WebSocket receive timed out', 1006));\n }, receiveTimeout);\n this._receiveWaiters.push(waiter);\n });\n }\n }\n catch (error) {\n if (this._isAwaitFutureError(error)) {\n logger.debug('websocket_shutdown_race_condition_detected', {\n websocket_type: this._websocket.constructor.name,\n is_fastapi: this._isFastApiLike,\n note: 'Normal WebSocket close timing during shutdown',\n });\n throw new FameTransportClose('WebSocket cancelled during receive operation', 1006);\n }\n if (this._isWebSocketDisconnectError(error)) {\n const closeCode = this._extractCloseCode(error);\n const reason = this._extractCloseReason(error) || 'peer closed';\n throw new FameTransportClose(reason, closeCode);\n }\n throw error;\n }\n }\n /**\n * Close the underlying WebSocket transport\n */\n async _transportClose(code, reason) {\n try {\n if (this._isFastApiLike) {\n // FastAPI-style WebSocket has explicit state tracking\n const websocketState = this._websocket.client_state;\n if (websocketState === 'CONNECTED' || websocketState === 1) {\n await this._websocket.close?.(code, reason);\n }\n }\n else {\n // Browser/Node.js WebSocket\n if (this._websocket.readyState === WebSocketState.OPEN) {\n this._websocket.close(code, reason);\n }\n // In Node.js environments (ws library) close() performs a graceful shutdown that\n // may defer socket termination until the peer responds. When shutting down tests we\n // need connections to close promptly to avoid hanging receive loops. If terminate()\n // is available, schedule a fallback to forcefully tear down the socket after a short\n // delay in case the graceful close does not complete in time.\n if (typeof this._websocket.terminate === 'function') {\n const socketAny = this._websocket;\n if (socketAny.readyState !== WebSocketState.CLOSED &&\n this._terminateFallbackTimer === null) {\n this._terminateFallbackTimer = setTimeout(() => {\n this._terminateFallbackTimer = null;\n if (socketAny.readyState !== WebSocketState.CLOSED) {\n try {\n socketAny.terminate();\n logger.debug('websocket_force_terminated', {\n ready_state: socketAny.readyState,\n });\n }\n catch (error) {\n logger.debug('websocket_force_terminate_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }, 250);\n }\n }\n }\n }\n catch (error) {\n logger.error('websocket_close_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n // Don't re-throw - close errors are not critical during shutdown\n }\n finally {\n // If we're shutting down proactively, ensure any pending receivers are released\n this._rejectPendingWaiters(new FameTransportClose(reason, code));\n this._detachReceiveHandlers({ cancelTerminateFallback: false });\n }\n }\n // ---------------------------------------------------------------------\n // Utility Methods\n // ---------------------------------------------------------------------\n /**\n * Check if an error is a WebSocket disconnection error\n */\n _isWebSocketDisconnectError(error) {\n if (error instanceof Error) {\n // Common WebSocket error patterns\n const message = error.message.toLowerCase();\n return (message.includes('websocket') &&\n (message.includes('disconnect') ||\n message.includes('closed') ||\n message.includes('connection') ||\n error.name === 'WebSocketDisconnect'));\n }\n return false;\n }\n /**\n * Check if an error is the \"await wasn't used with future\" error\n */\n _isAwaitFutureError(error) {\n return (error instanceof Error &&\n error.message.includes(\"await wasn't used with future\"));\n }\n /**\n * Extract close code from WebSocket error\n */\n _extractCloseCode(error) {\n if (error && typeof error === 'object') {\n const code = error.code;\n if (typeof code === 'number') {\n return code;\n }\n }\n return 1006; // Default to abnormal closure\n }\n /**\n * Extract close reason from WebSocket error\n */\n _extractCloseReason(error) {\n if (error instanceof Error) {\n return error.message;\n }\n if (error && typeof error === 'object') {\n const reason = error.reason;\n if (typeof reason === 'string') {\n return reason;\n }\n }\n return '';\n }\n /**\n * Add timeout protection to a Promise\n */\n async _withTimeout(promise, timeoutMs) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n const error = new Error('Operation timed out');\n error.name = 'TimeoutError';\n reject(error);\n }, timeoutMs);\n promise\n .then((result) => {\n clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n _ensureReceiveHandlers() {\n if (this._receiveHandlersAttached) {\n return;\n }\n const handleMessage = (data, isBinary) => {\n try {\n const payload = this._normalizeIncomingMessage(data, isBinary);\n if (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.resolve(payload);\n }\n else {\n this._receiveQueue.push(payload);\n }\n }\n catch (error) {\n this._rejectPendingWaiters(error instanceof Error ? error : new Error(String(error)));\n }\n };\n const handleClose = (event, rawReason) => {\n let code;\n let reason;\n if (typeof event === 'number') {\n code = event;\n if (typeof rawReason === 'string') {\n reason = rawReason;\n }\n else if (typeof Buffer !== 'undefined' &&\n Buffer.isBuffer?.(rawReason)) {\n reason = rawReason.toString();\n }\n else {\n reason = 'peer closed';\n }\n }\n else {\n code = typeof event?.code === 'number' ? event.code : 1006;\n if (typeof event?.reason === 'string') {\n reason = event.reason;\n }\n else if (typeof Buffer !== 'undefined' &&\n Buffer.isBuffer?.(event?.reason)) {\n reason = event.reason.toString();\n }\n else {\n reason = 'peer closed';\n }\n }\n // Immediately initiate shutdown to prevent sending on closed socket\n // This ensures _closed flag is set before any send attempts\n const error = new FameTransportClose(reason, code);\n this._rejectPendingWaiters(error);\n this._detachReceiveHandlers();\n // Trigger shutdown asynchronously to set _closed flag immediately\n // Use void to explicitly ignore the promise (shutdown is fire-and-forget here)\n void this['_shutdown'](code, reason, undefined, error);\n };\n const handleError = (event) => {\n const candidate = event?.error ?? event;\n const message = candidate instanceof Error\n ? candidate.message\n : (candidate?.message ?? 'WebSocket error');\n this._rejectPendingWaiters(new FameTransportClose(String(message), 1006));\n this._detachReceiveHandlers();\n };\n const socketAny = this._websocket;\n if (typeof socketAny.addEventListener === 'function') {\n const messageListener = (event) => {\n handleMessage(event?.data ?? event, event?.isBinary);\n };\n const closeListener = (event) => handleClose(event);\n const errorListener = (event) => handleError(event);\n socketAny.addEventListener('message', messageListener);\n socketAny.addEventListener('close', closeListener);\n socketAny.addEventListener('error', errorListener);\n this._removeReceiveHandlers = () => {\n socketAny.removeEventListener('message', messageListener);\n socketAny.removeEventListener('close', closeListener);\n socketAny.removeEventListener('error', errorListener);\n };\n }\n else if (typeof socketAny.on === 'function') {\n const onMessageHandler = (data, isBinary) => {\n handleMessage(data, isBinary);\n };\n socketAny.on('message', onMessageHandler);\n socketAny.on('close', handleClose);\n socketAny.on('error', handleError);\n this._removeReceiveHandlers = () => {\n if (typeof socketAny.off === 'function') {\n socketAny.off('message', onMessageHandler);\n socketAny.off('close', handleClose);\n socketAny.off('error', handleError);\n }\n else if (typeof socketAny.removeListener === 'function') {\n socketAny.removeListener('message', onMessageHandler);\n socketAny.removeListener('close', handleClose);\n socketAny.removeListener('error', handleError);\n }\n };\n }\n else {\n const messageHandler = (event) => handleMessage(event?.data ?? event, event?.isBinary);\n const closeHandler = (event) => handleClose(event);\n const errorHandler = (event) => handleError(event);\n this._websocket.onmessage = messageHandler;\n this._websocket.onclose = closeHandler;\n this._websocket.onerror = errorHandler;\n this._removeReceiveHandlers = () => {\n if (this._websocket.onmessage === messageHandler) {\n this._websocket.onmessage = null;\n }\n if (this._websocket.onclose === closeHandler) {\n this._websocket.onclose = null;\n }\n if (this._websocket.onerror === errorHandler) {\n this._websocket.onerror = null;\n }\n };\n }\n this._receiveHandlersAttached = true;\n }\n _detachReceiveHandlers(options = {}) {\n const { cancelTerminateFallback = true } = options;\n if (cancelTerminateFallback && this._terminateFallbackTimer !== null) {\n clearTimeout(this._terminateFallbackTimer);\n this._terminateFallbackTimer = null;\n }\n if (this._removeReceiveHandlers) {\n try {\n this._removeReceiveHandlers();\n }\n catch (error) {\n logger.debug('websocket_remove_handlers_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n this._removeReceiveHandlers = null;\n }\n this._receiveHandlersAttached = false;\n }\n _normalizeIncomingMessage(data, isBinary) {\n if (data instanceof Uint8Array) {\n return data;\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer?.(data)) {\n return new Uint8Array(data);\n }\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n if (typeof data === 'string' && !isBinary) {\n return new TextEncoder().encode(data);\n }\n if (typeof data === 'string') {\n return new TextEncoder().encode(data);\n }\n if (data &&\n typeof data === 'object' &&\n 'data' in data) {\n return this._normalizeIncomingMessage(data.data, data.isBinary ?? isBinary);\n }\n throw new FameTransportClose(`Unsupported data type: ${typeof data}`, 1003);\n }\n _rejectPendingWaiters(error) {\n while (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.reject(error);\n }\n this._receiveQueue.length = 0;\n }\n}\n//# sourceMappingURL=websocket-connector.js.map","import { FameFabric, FameServiceProxy, } from '@naylence/core';\nconst RPC_REGISTRY = Symbol('naylence.rpc.registry');\nfunction isPlainObject(value) {\n return Boolean(value &&\n typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Object]');\n}\nfunction getOrCreateRegistry(ctor) {\n if (!ctor[RPC_REGISTRY]) {\n const parentRegistry = ctor.__proto__?.[RPC_REGISTRY];\n ctor[RPC_REGISTRY] = parentRegistry\n ? new Map(parentRegistry)\n : new Map();\n }\n return ctor[RPC_REGISTRY];\n}\nfunction normalizeParams(params) {\n if (!params || typeof params !== 'object') {\n return { positional: [], keyword: {} };\n }\n const positional = Array.isArray(params.args) ? [...params.args] : [];\n const keyword = isPlainObject(params.kwargs) ? { ...params.kwargs } : {};\n if (positional.length === 0 &&\n Object.keys(keyword).length === 0 &&\n isPlainObject(params)) {\n return { positional: [], keyword: { ...params } };\n }\n return { positional, keyword };\n}\nexport function operation(targetOrOptions, propertyKey, descriptor) {\n if (typeof propertyKey === 'string' || typeof propertyKey === 'symbol') {\n const decorator = createDecorator();\n decorator(targetOrOptions, propertyKey, descriptor);\n return;\n }\n const options = (targetOrOptions ?? {});\n return createDecorator(options);\n}\nfunction createDecorator(options = {}) {\n return (target, propertyKey, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new TypeError('@operation can only be applied to methods');\n }\n const ctor = target.constructor;\n const registry = getOrCreateRegistry(ctor);\n const rpcName = options.name ?? propertyKey;\n registry.set(rpcName, {\n propertyKey: propertyKey,\n streaming: Boolean(options.streaming),\n });\n };\n}\nexport class RpcMixin {\n static get rpcRegistry() {\n return getOrCreateRegistry(this);\n }\n getRpcRegistry() {\n return this.constructor.rpcRegistry;\n }\n async handleRpcRequest(method, params) {\n const registry = this.getRpcRegistry();\n const entry = registry.get(method);\n if (!entry) {\n throw new Error(`Unknown RPC method: ${method}`);\n }\n const handler = this[entry.propertyKey];\n if (typeof handler !== 'function') {\n throw new TypeError(`RPC handler '${entry.propertyKey}' is not callable`);\n }\n const { positional, keyword } = normalizeParams(params);\n const args = [...positional];\n if (Object.keys(keyword).length > 0) {\n args.push(keyword);\n }\n try {\n const result = handler.apply(this, args);\n if (entry.streaming) {\n return result;\n }\n return await result;\n }\n catch (error) {\n throw error;\n }\n }\n}\nfunction extractStreamFlag(args) {\n if (args.length === 0) {\n return { stream: false, args };\n }\n const last = args[args.length - 1];\n if (isPlainObject(last) &&\n Object.prototype.hasOwnProperty.call(last, '_stream')) {\n const { _stream, ...rest } = last;\n const cleanedArgs = [...args.slice(0, -1)];\n if (Object.keys(rest).length > 0) {\n cleanedArgs.push(rest);\n }\n return { stream: Boolean(_stream), args: cleanedArgs };\n }\n if (args.length === 1 &&\n isPlainObject(args[0]) &&\n Object.prototype.hasOwnProperty.call(args[0], '_stream')) {\n const { _stream, ...rest } = args[0];\n return {\n stream: Boolean(_stream),\n args: Object.keys(rest).length ? [rest] : [],\n };\n }\n return { stream: false, args };\n}\nfunction wrapRpcProxy(target) {\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (typeof prop === 'string' &&\n !prop.startsWith('_') &&\n !(prop in target)) {\n return async (...rawArgs) => {\n const { stream, args } = extractStreamFlag(rawArgs);\n let params;\n if (args.length === 1 && isPlainObject(args[0])) {\n params = args[0];\n }\n else {\n params = { args };\n }\n const internal = target;\n const timeout = internal._timeout;\n if (stream) {\n const fabric = internal._fabric || FameFabric.current();\n if (internal._address) {\n return await fabric.invokeStream(internal._address, prop, params, timeout);\n }\n if (internal._capabilities) {\n return await fabric.invokeByCapabilityStream(internal._capabilities, prop, params, timeout);\n }\n throw new Error('RPC proxy must be bound to an address or capabilities');\n }\n if (internal._address) {\n return await internal._invoke(internal._address, prop, params, timeout);\n }\n if (internal._capabilities) {\n return await internal._invokeByCapability(internal._capabilities, prop, params, timeout);\n }\n throw new Error('RPC proxy must be bound to an address or capabilities');\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nexport function createRpcProxy(options) {\n const base = new FameServiceProxy(options);\n return wrapRpcProxy(base);\n}\nexport class RpcProxy extends FameServiceProxy {\n constructor(options = {}) {\n super(options);\n return wrapRpcProxy(this);\n }\n static remoteByAddress(address, options = {}) {\n const proxy = FameServiceProxy.remoteByAddress(address, options);\n return wrapRpcProxy(proxy);\n }\n static remoteByCapabilities(capabilities, options = {}) {\n const proxy = FameServiceProxy.remoteByCapabilities(capabilities, options);\n return wrapRpcProxy(proxy);\n }\n}\n//# sourceMappingURL=rpc.js.map","/**\n * AUTO-GENERATED FILE. DO NOT EDIT DIRECTLY.\n * Generated by scripts/generate-factory-manifest.mjs\n *\n * Provides the list of runtime factory modules for registration.\n */\nexport const MODULES = [\n \"./connector/http-listener-factory.js\",\n \"./connector/http-stateless-connector-factory.js\",\n \"./connector/websocket-connector-factory.js\",\n \"./connector/websocket-listener-factory.js\",\n \"./delivery/at-least-once-delivery-policy-factory.js\",\n \"./delivery/at-most-once-delivery-policy-factory.js\",\n \"./delivery/delivery-profile-factory.js\",\n \"./fabric/in-process-fame-fabric-factory.js\",\n \"./node/admission/admission-profile-factory.js\",\n \"./node/admission/direct-admission-client-factory.js\",\n \"./node/admission/noop-admission-client-factory.js\",\n \"./node/admission/welcome-service-client-factory.js\",\n \"./node/node-factory.js\",\n \"./placement/static-node-placement-strategy-factory.js\",\n \"./placement/websocket-node-placement-strategy-factory.js\",\n \"./security/auth/bearer-token-header-auth-injection-strategy-factory.js\",\n \"./security/auth/default-authorizer-factory.js\",\n \"./security/auth/jwks-jwt-token-verifier-factory.js\",\n \"./security/auth/jwt-token-issuer-factory.js\",\n \"./security/auth/jwt-token-verifier-factory.js\",\n \"./security/auth/no-auth-injection-strategy-factory.js\",\n \"./security/auth/none-token-provider-factory.js\",\n \"./security/auth/noop-authorizer-factory.js\",\n \"./security/auth/noop-token-issuer-factory.js\",\n \"./security/auth/noop-token-verifier-factory.js\",\n \"./security/auth/oauth2-authorizer-factory.js\",\n \"./security/auth/oauth2-client-credentials-token-provider-factory.js\",\n \"./security/auth/query-param-auth-injection-strategy-factory.js\",\n \"./security/auth/shared-secret-authorizer-factory.js\",\n \"./security/auth/shared-secret-token-provider-factory.js\",\n \"./security/auth/shared-secret-token-verifier-factory.js\",\n \"./security/auth/static-token-provider-factory.js\",\n \"./security/auth/websocket-subprotocol-auth-injection-strategy-factory.js\",\n \"./security/credential/dev-fixed-key-credential-provider-factory.js\",\n \"./security/credential/env-credential-provider-factory.js\",\n \"./security/credential/none-credential-provider-factory.js\",\n \"./security/credential/prompt-credential-provider-factory.js\",\n \"./security/credential/secret-store-credential-provider-factory.js\",\n \"./security/credential/session-key-credential-provider-factory.js\",\n \"./security/credential/static-credential-provider-factory.js\",\n \"./security/default-security-manager-factory.js\",\n \"./security/encryption/noop-encryption-manager-factory.js\",\n \"./security/encryption/noop-secure-channel-manager-factory.js\",\n \"./security/keys/default-key-manager-factory.js\",\n \"./security/keys/in-memory-key-store-factory.js\",\n \"./security/keys/noop-key-validator-factory.js\",\n \"./security/node-security-profile-factory.js\",\n \"./security/policy/default-security-policy-factory.js\",\n \"./security/policy/no-security-policy-factory.js\",\n \"./security/signing/eddsa-envelope-signer-factory.js\",\n \"./security/signing/eddsa-envelope-verifier-factory.js\",\n \"./sentinel/capability-aware-routing-policy-factory.js\",\n \"./sentinel/composite-routing-policy-factory.js\",\n \"./sentinel/hybrid-path-routing-policy-factory.js\",\n \"./sentinel/load-balancing/composite-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/hrw-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/load-balancing-profile-factory.js\",\n \"./sentinel/load-balancing/random-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/round-robin-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/sticky-load-balancing-strategy-factory.js\",\n \"./sentinel/routing-profile-factory.js\",\n \"./sentinel/sentinel-factory.js\",\n \"./sentinel/store/route-store-factory.js\",\n \"./stickiness/simple-load-balancer-stickiness-manager-factory.js\",\n \"./telemetry/noop-trace-emitter-factory.js\",\n \"./telemetry/open-telemetry-trace-emitter-factory.js\",\n \"./telemetry/trace-emitter-profile-factory.js\",\n \"./welcome/default-welcome-service-factory.js\"\n];\n//# sourceMappingURL=factory-manifest.js.map","import { Registry as DefaultRegistry } from '@naylence/factory';\nimport { MODULES } from '../factory-manifest.js';\nconst FACTORY_MODULE_PREFIX = '@naylence/runtime/naylence/fame/';\nconst BROWSER_DIST_SEGMENT = '/dist/browser/';\nfunction detectModuleUrl() {\n // Prefer Node-friendly __filename when available.\n if (typeof __filename === 'string') {\n try {\n const normalized = __filename.startsWith('file://')\n ? __filename\n : `file://${__filename}`;\n return normalized;\n }\n catch {\n // fall through to stack parsing\n }\n }\n // Fallback to parsing the current stack trace to discover the executing module URL.\n try {\n throw new Error();\n }\n catch (error) {\n const stack = typeof error === 'object' && error && 'stack' in error\n ? String(error.stack ?? '')\n : '';\n const lines = stack.split('\\n');\n for (const line of lines) {\n const match = line.match(/(https?:\\/\\/[^\\s)]+|file:\\/\\/[^\\s)]+|\\/[^\\s)]+\\.(?:js|ts))/u);\n if (!match) {\n continue;\n }\n const candidate = match[1];\n if (candidate.startsWith('http://') || candidate.startsWith('https://')) {\n return candidate;\n }\n if (candidate.startsWith('file://')) {\n return candidate;\n }\n return `file://${candidate}`;\n }\n }\n return null;\n}\nfunction computeBrowserFactoryBase(rawUrl) {\n if (!rawUrl) {\n return null;\n }\n const sanitized = rawUrl.split('?')[0]?.split('#')[0] ?? rawUrl;\n const esmMarker = '/dist/esm/naylence/fame/';\n const browserMarker = '/dist/browser/';\n const distMarker = '/dist/';\n if (sanitized.includes(esmMarker)) {\n return sanitized.slice(0, sanitized.indexOf(esmMarker) + esmMarker.length);\n }\n if (rawUrl.includes(BROWSER_DIST_SEGMENT)) {\n return new URL('../esm/naylence/fame/', rawUrl).href;\n }\n if (rawUrl.startsWith('http://') || rawUrl.startsWith('https://')) {\n try {\n const parsed = new URL(rawUrl);\n const viteDepsSegment = '/node_modules/.vite/deps/';\n if (parsed.pathname.includes(viteDepsSegment)) {\n const baseOrigin = `${parsed.protocol}//${parsed.host}`;\n return `${baseOrigin}/node_modules/@naylence/runtime/dist/esm/naylence/fame/`;\n }\n }\n catch {\n // ignore and fall through to null\n }\n }\n if (sanitized.includes(browserMarker)) {\n const base = sanitized.slice(0, sanitized.indexOf(browserMarker) + browserMarker.length);\n return `${base.replace(/browser\\/?$/u, '')}esm/naylence/fame/`;\n }\n if (sanitized.includes(distMarker)) {\n const index = sanitized.indexOf(distMarker);\n const base = sanitized.slice(0, index + distMarker.length);\n return `${base}esm/naylence/fame/`;\n }\n // Fallback for development: if this is a source file path, compute dist/esm path\n const srcMarker = '/src/naylence/fame/';\n if (sanitized.includes(srcMarker)) {\n const index = sanitized.indexOf(srcMarker);\n const projectRoot = sanitized.slice(0, index);\n return `${projectRoot}/dist/esm/naylence/fame/`;\n }\n return null;\n}\nconst moduleUrl = detectModuleUrl();\nconst browserFactoryBase = computeBrowserFactoryBase(moduleUrl);\nfunction resolveFactoryModuleSpecifier(specifier) {\n if (specifier.startsWith('../')) {\n const relativePath = specifier.slice('../'.length);\n return `${FACTORY_MODULE_PREFIX}${relativePath}`;\n }\n if (specifier.startsWith('./')) {\n const relativePath = specifier.slice('./'.length);\n return `${FACTORY_MODULE_PREFIX}${relativePath}`;\n }\n return null;\n}\nfunction resolveModuleCandidates(spec) {\n const packageSpecifier = resolveFactoryModuleSpecifier(spec);\n const candidates = [];\n const preferSource = typeof moduleUrl === 'string' && moduleUrl.includes('/src/');\n const addCandidate = (candidate) => {\n if (!candidate) {\n return;\n }\n if (!candidates.includes(candidate)) {\n candidates.push(candidate);\n }\n };\n if (preferSource && spec.startsWith('./')) {\n const baseSource = `../${spec.slice(2)}`;\n addCandidate(baseSource);\n if (baseSource.endsWith('.js')) {\n addCandidate(baseSource.replace(/\\.js$/u, '.ts'));\n }\n }\n if (browserFactoryBase && spec.startsWith('./')) {\n const browserCandidate = new URL(spec.slice('./'.length), browserFactoryBase).href;\n addCandidate(browserCandidate);\n if (browserCandidate.endsWith('.js')) {\n addCandidate(browserCandidate.replace(/\\.js$/u, '.ts'));\n }\n }\n if (packageSpecifier) {\n addCandidate(packageSpecifier);\n if (packageSpecifier.endsWith('.js')) {\n addCandidate(packageSpecifier.replace(/\\.js$/u, '.ts'));\n }\n }\n const baseFallback = spec.startsWith('./') ? `../${spec.slice(2)}` : spec;\n addCandidate(baseFallback);\n if (baseFallback.endsWith('.js')) {\n addCandidate(baseFallback.replace(/\\.js$/u, '.ts'));\n }\n return candidates;\n}\nexport async function registerDefaultFactories(registry = DefaultRegistry) {\n await Promise.all(MODULES.map(async (spec) => {\n try {\n const candidates = resolveModuleCandidates(spec);\n let mod;\n let lastError;\n for (const [index, candidate] of candidates.entries()) {\n try {\n mod = await import(/* @vite-ignore */ candidate);\n lastError = undefined;\n break;\n }\n catch (error) {\n lastError = error;\n const isLastCandidate = index === candidates.length - 1;\n if (isLastCandidate) {\n throw error;\n }\n const message = error instanceof Error ? error.message : String(error);\n const moduleNotFound = message.includes('Cannot find module') ||\n message.includes('ERR_MODULE_NOT_FOUND') ||\n message.includes('Unknown file extension') ||\n message.includes('Failed to fetch dynamically imported module') ||\n message.includes('Importing a module script failed');\n if (!moduleNotFound) {\n throw error;\n }\n }\n }\n if (!mod) {\n throw (lastError ?? new Error(`Unable to import factory module: ${spec}`));\n }\n const meta = mod.FACTORY_META;\n const Ctor = mod.default;\n if (!meta?.base || !meta?.key || typeof Ctor !== 'function') {\n console.warn('[factory-manifest] skipped', spec, '— missing FACTORY_META or default export ctor');\n return;\n }\n registry.registerFactory(meta.base, meta.key, Ctor);\n }\n catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n console.warn('[factory-manifest] skipped', spec, '-', reason);\n }\n }));\n}\n/**\n * Register all default Naylence runtime factories into the supplied registry.\n *\n * @param registry Registry implementation to receive the default runtime factories.\n */\nexport async function registerRuntimeFactories(registry = DefaultRegistry) {\n await registerDefaultFactories(registry);\n}\n//# sourceMappingURL=register-runtime-factories.js.map","let webCryptoAvailable = null;\nfunction detectWebCrypto() {\n if (webCryptoAvailable !== null) {\n return webCryptoAvailable;\n }\n webCryptoAvailable =\n typeof globalThis.crypto !== 'undefined' &&\n typeof globalThis.crypto.subtle !== 'undefined';\n return webCryptoAvailable;\n}\nfunction detectNativeNodeCrypto() {\n if (typeof globalThis.process === 'undefined' ||\n typeof globalThis.process.versions?.node !== 'string') {\n return false;\n }\n const moduleId = `node:${'crypto'}`;\n try {\n const directRequire = typeof require === 'function'\n ? require\n : globalThis.require;\n if (typeof directRequire === 'function') {\n const { webcrypto } = directRequire(moduleId);\n return Boolean(webcrypto?.subtle);\n }\n const lazyRequire = Function('return typeof require === \"function\" ? require : null')();\n if (typeof lazyRequire === 'function') {\n const { webcrypto } = lazyRequire(moduleId);\n return Boolean(webcrypto?.subtle);\n }\n }\n catch {\n // Ignore resolution errors and fall through to false\n }\n return false;\n}\nexport function hasCryptoSupport() {\n return detectWebCrypto() || detectNativeNodeCrypto();\n}\nexport function requireCryptoSupport() {\n if (!hasCryptoSupport()) {\n throw new Error(\"This functionality requires WebCrypto support. Ensure 'crypto.subtle' is available in your runtime or include a compatible polyfill.\");\n }\n}\n//# sourceMappingURL=crypto-dependencies.js.map","const DEFAULT_DB_NAME = 'naylence-secrets';\nconst DEFAULT_STORE_NAME = 'wrapped-master-key';\nconst DEFAULT_KEY_ID = 'master';\nconst DEFAULT_ITERATIONS = 200000;\nconst WRAPPED_RECORD_VERSION = 1;\nconst MASTER_KEY_LENGTH = 32;\nconst SALT_LENGTH = 16;\nconst GCM_IV_LENGTH = 12;\nexport class InvalidPassphraseError extends Error {\n constructor(message = 'Unable to decrypt master key with provided passphrase') {\n super(message);\n this.name = 'InvalidPassphraseError';\n }\n}\nlet cachedNodeCrypto;\nlet cachedCrypto;\nasync function loadNodeCrypto() {\n if (cachedNodeCrypto !== undefined) {\n return cachedNodeCrypto;\n }\n try {\n cachedNodeCrypto = await import('node:crypto');\n return cachedNodeCrypto;\n }\n catch {\n cachedNodeCrypto = null;\n return null;\n }\n}\nasync function getCrypto() {\n if (cachedCrypto) {\n return cachedCrypto;\n }\n if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto.subtle) {\n const cryptoObject = globalThis.crypto;\n cachedCrypto = cryptoObject;\n return cryptoObject;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.webcrypto?.subtle) {\n const cryptoObject = nodeCrypto.webcrypto;\n cachedCrypto = cryptoObject;\n return cryptoObject;\n }\n throw new Error('Web Crypto API is not available in this environment');\n}\nasync function getRandomBytes(length) {\n const cryptoObject = await getCrypto();\n if (typeof cryptoObject.getRandomValues === 'function') {\n const buffer = new Uint8Array(length);\n cryptoObject.getRandomValues(buffer);\n return buffer;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.randomBytes) {\n const buffer = nodeCrypto.randomBytes(length);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n throw new Error('Unable to generate secure random bytes in this environment');\n}\nfunction toArrayBuffer(data) {\n const buffer = new ArrayBuffer(data.byteLength);\n new Uint8Array(buffer).set(data);\n return buffer;\n}\nfunction base64Encode(data) {\n if (typeof btoa === 'function') {\n let binary = '';\n for (let i = 0; i < data.length; i++) {\n binary += String.fromCharCode(data[i]);\n }\n return btoa(binary);\n }\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(data).toString('base64');\n }\n throw new Error('Base64 encoding is not available in this environment');\n}\nfunction base64Decode(value) {\n if (typeof atob === 'function') {\n const binary = atob(value);\n const buffer = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n buffer[i] = binary.charCodeAt(i);\n }\n return buffer;\n }\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(value, 'base64'));\n }\n throw new Error('Base64 decoding is not available in this environment');\n}\nconst UTF8_ENCODER = new TextEncoder();\nasync function deriveKEK(passphrase, salt, iterations) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const baseKey = await subtle.importKey('raw', UTF8_ENCODER.encode(passphrase), { name: 'PBKDF2' }, false, ['deriveKey']);\n return subtle.deriveKey({\n name: 'PBKDF2',\n salt: toArrayBuffer(salt),\n iterations,\n hash: 'SHA-256',\n }, baseKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);\n}\nasync function aesGcmEncrypt(key, data) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const iv = await getRandomBytes(GCM_IV_LENGTH);\n const ciphertextBuffer = await subtle.encrypt({ name: 'AES-GCM', iv: toArrayBuffer(iv) }, key, toArrayBuffer(data));\n return { iv, ciphertext: new Uint8Array(ciphertextBuffer) };\n}\nasync function aesGcmDecrypt(key, iv, data) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const plaintextBuffer = await subtle.decrypt({ name: 'AES-GCM', iv: toArrayBuffer(iv) }, key, toArrayBuffer(data));\n return new Uint8Array(plaintextBuffer);\n}\nasync function openDatabase(factory, dbName, storeName) {\n return new Promise((resolve, reject) => {\n const request = factory.open(dbName, 1);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to open IndexedDB'));\n };\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n });\n}\nasync function readWrappedRecord(db, storeName, keyId) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to read wrapped master key'));\n };\n request.onsuccess = () => {\n resolve(request.result ?? null);\n };\n });\n}\nasync function writeWrappedRecord(db, storeName, keyId, record) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const request = store.put(record, keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to persist wrapped master key'));\n };\n tx.oncomplete = () => resolve();\n tx.onerror = () => {\n reject(tx.error ?? new Error('Failed to persist wrapped master key'));\n };\n });\n}\nexport class BrowserWrappedKeyCredentialProvider {\n constructor(options) {\n this.cachedKey = null;\n this.inflight = null;\n if (!options?.promptPassphrase) {\n throw new Error('promptPassphrase callback is required');\n }\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName ?? DEFAULT_STORE_NAME;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n this.iterations = options.iterations ?? DEFAULT_ITERATIONS;\n this.promptPassphrase = options.promptPassphrase;\n if (options.idbFactory) {\n this.idbFactory = options.idbFactory;\n }\n else if (typeof indexedDB !== 'undefined') {\n this.idbFactory = indexedDB;\n }\n else {\n throw new Error('IndexedDB is not available in this environment');\n }\n }\n async get() {\n if (this.cachedKey) {\n return this.cachedKey;\n }\n if (this.inflight) {\n return this.inflight;\n }\n this.inflight = this.loadOrCreateKey();\n try {\n const key = await this.inflight;\n this.cachedKey = key;\n return key;\n }\n finally {\n this.inflight = null;\n }\n }\n async loadOrCreateKey() {\n const db = await openDatabase(this.idbFactory, this.dbName, this.storeName);\n try {\n const existing = await readWrappedRecord(db, this.storeName, this.keyId);\n if (!existing) {\n return await this.createAndPersistKey(db);\n }\n return await this.unwrapExistingKey(existing);\n }\n finally {\n db.close();\n }\n }\n async createAndPersistKey(db) {\n const passphrase = (await this.promptPassphrase()).trim();\n if (!passphrase) {\n throw new Error('Passphrase must not be empty');\n }\n const salt = await getRandomBytes(SALT_LENGTH);\n const kek = await deriveKEK(passphrase, salt, this.iterations);\n const masterKey = await getRandomBytes(MASTER_KEY_LENGTH);\n const { iv, ciphertext } = await aesGcmEncrypt(kek, masterKey);\n const record = {\n version: WRAPPED_RECORD_VERSION,\n kdf: {\n algo: 'PBKDF2',\n hash: 'SHA-256',\n iterations: this.iterations,\n saltB64: base64Encode(salt),\n },\n wrap: {\n algo: 'AES-GCM',\n ivB64: base64Encode(iv),\n ciphertextB64: base64Encode(ciphertext),\n },\n };\n await writeWrappedRecord(db, this.storeName, this.keyId, record);\n return masterKey;\n }\n async unwrapExistingKey(record) {\n if (record.version !== WRAPPED_RECORD_VERSION) {\n throw new Error(`Unsupported wrapped key version: ${record.version}`);\n }\n if (record.kdf.algo !== 'PBKDF2' || record.kdf.hash !== 'SHA-256') {\n throw new Error('Unsupported KDF configuration for wrapped master key');\n }\n if (record.wrap.algo !== 'AES-GCM') {\n throw new Error('Unsupported wrapping algorithm for wrapped master key');\n }\n const passphrase = (await this.promptPassphrase()).trim();\n if (!passphrase) {\n throw new InvalidPassphraseError();\n }\n const { saltB64, iterations } = record.kdf;\n const { ivB64, ciphertextB64 } = record.wrap;\n const salt = base64Decode(saltB64);\n const iv = base64Decode(ivB64);\n const ciphertext = base64Decode(ciphertextB64);\n try {\n const kek = await deriveKEK(passphrase, salt, iterations);\n return await aesGcmDecrypt(kek, iv, ciphertext);\n }\n catch (error) {\n throw new InvalidPassphraseError(error instanceof Error ? error.message : 'Unable to decrypt master key');\n }\n }\n}\n//# sourceMappingURL=browser-wrapped-key-credential-provider.js.map","/**\n * Browser-friendly entry point for Naylence Runtime.\n *\n * Exposes utilities, channels, connectors, and cross-platform helpers that\n * do not rely on Node.js-only dependencies. This file purposefully excludes\n * modules such as the SQLite storage providers and any prompt utilities that\n * expect access to the Node.js standard library.\n */\n// Re-export everything from naylence-core for protocol primitives\nexport * from '@naylence/core';\n// Cross-platform Fame runtime exports\nexport * from './naylence/fame/errors/index.js';\nexport * from './naylence/fame/util/index.js';\nexport * from './naylence/fame/channel/index.js';\n// Storage providers that are safe for browsers (in-memory + IndexedDB)\nexport * from './naylence/fame/storage/index.js';\nexport { getNode, getCurrentNode, withNodeContextAsync, runWithNodeContext, } from './naylence/fame/node/node-context-stack.js';\n// Connector layer exports trimmed to browser-safe components\nexport { BaseAsyncConnector, } from './naylence/fame/connector/base-async-connector.js';\nexport { ConnectorConfigDefaults, isConnectorConfig, createConnectorConfig, } from './naylence/fame/connector/connector-config.js';\nexport { ConnectorFactory, createResource, } from './naylence/fame/connector/connector-factory.js';\nexport { WebSocketConnector, WebSocketState, } from './naylence/fame/connector/websocket-connector.js';\nexport { _NoopFlowController } from './naylence/fame/connector/noop-flow-controller.js';\n// RPC helpers are shared\nexport { RpcProxy, createRpcProxy, RpcMixin, operation, } from './naylence/fame/service/rpc.js';\n// Runtime factory registration exposes no Node.js specifics\nexport { registerDefaultFactories, registerRuntimeFactories, } from './naylence/fame/util/register-runtime-factories.js';\n// Browser-facing crypto helpers\nexport { hasCryptoSupport, requireCryptoSupport, } from './naylence/fame/security/crypto/crypto-dependencies.js';\nexport { BrowserWrappedKeyCredentialProvider, InvalidPassphraseError, } from './naylence/fame/security/credential/browser-wrapped-key-credential-provider.js';\nconst runtimePluginModulePromise = import('./plugin.js');\nconst globalScope = globalThis;\nconst FACTORY_MODULE_PREFIX = '@naylence/runtime/naylence/fame/';\nconst resolveFactoryModuleSpecifier = (specifier) => {\n if (specifier.startsWith('../')) {\n const relativePath = specifier.slice('../'.length);\n return `${FACTORY_MODULE_PREFIX}${relativePath}`;\n }\n if (specifier.startsWith('./')) {\n const relativePath = specifier.slice('./'.length);\n return `${FACTORY_MODULE_PREFIX}${relativePath}`;\n }\n return null;\n};\nconst ensureRuntimePluginLoader = () => {\n const existing = Reflect.get(globalScope, '__naylenceFactoryDynamicImporter');\n if (typeof existing === 'function') {\n return existing;\n }\n const loader = async (specifier) => {\n if (specifier === '@naylence/runtime' ||\n specifier === '@naylence/runtime/' ||\n specifier === '@naylence/runtime/plugin' ||\n specifier === '@naylence/runtime/plugin.js' ||\n specifier === '@naylence/runtime/dist/esm/plugin.js') {\n return runtimePluginModulePromise;\n }\n const remapped = resolveFactoryModuleSpecifier(specifier);\n if (remapped) {\n return import(/* @vite-ignore */ remapped);\n }\n return import(/* @vite-ignore */ specifier);\n };\n Reflect.set(globalScope, '__naylenceFactoryDynamicImporter', loader);\n return loader;\n};\nexport const __runtimePluginLoader = ensureRuntimePluginLoader();\n//# sourceMappingURL=runtime-isomorphic.js.map","import { registerRuntimeFactories } from './naylence/fame/util/register-runtime-factories.js';\nlet initialized = false;\nconst runtimePlugin = {\n name: 'naylence:runtime',\n async register() {\n // console.log('[naylence:runtime] register() called, initialized=', initialized);\n if (initialized) {\n // console.log('[naylence:runtime] already initialized, skipping');\n return;\n }\n initialized = true;\n // console.log('[naylence:runtime] registering runtime factories...');\n // Register factories from manifest\n await registerRuntimeFactories();\n // Import modules with side-effect registrations (not in manifest)\n await import('./naylence/fame/transport/websocket-transport-provisioner.js');\n // console.log('[naylence:runtime] runtime factories registered');\n },\n};\nexport default runtimePlugin;\nexport const RUNTIME_PLUGIN_SPECIFIER = runtimePlugin.name;\n//# sourceMappingURL=plugin.js.map","export const GRANT_PURPOSE_NODE_ATTACH = 'node.attach';\nexport function isGrant(candidate) {\n if (!candidate || typeof candidate !== 'object') {\n return false;\n }\n const grant = candidate;\n return typeof grant.type === 'string' && typeof grant.purpose === 'string';\n}\nexport function assertGrant(candidate, message = 'Invalid grant object') {\n if (!isGrant(candidate)) {\n throw new TypeError(message);\n }\n}\n//# sourceMappingURL=grant.js.map","import { assertGrant, isGrant } from './grant.js';\nconst AUTH_INJECTION_STRATEGY_TYPE_ALIASES = {\n BearerTokenHeaderAuthInjectionStrategy: 'BearerTokenHeaderAuth',\n BearerTokenHeaderAuthStrategy: 'BearerTokenHeaderAuth',\n NoAuthInjectionStrategy: 'NoAuth',\n QueryParamAuthInjectionStrategy: 'QueryParamAuth',\n QueryParamAuthStrategy: 'QueryParamAuth',\n WebSocketSubprotocolAuthInjectionStrategy: 'WebSocketSubprotocolAuth',\n WebSocketSubprotocolAuthStrategy: 'WebSocketSubprotocolAuth',\n};\nexport function canonicalizeAuthConfig(auth) {\n if (!auth || typeof auth !== 'object' || Array.isArray(auth)) {\n return undefined;\n }\n const typeValue = auth.type;\n if (typeof typeValue !== 'string') {\n return auth;\n }\n const normalizedType = AUTH_INJECTION_STRATEGY_TYPE_ALIASES[typeValue] ?? typeValue;\n if (normalizedType === typeValue) {\n return auth;\n }\n return {\n ...auth,\n type: normalizedType,\n };\n}\nexport function isConnectionGrant(candidate) {\n return isGrant(candidate);\n}\nexport function assertConnectionGrant(candidate, message = 'Invalid connection grant') {\n assertGrant(candidate, message);\n}\n//# sourceMappingURL=connection-grant.js.map","import { GRANT_PURPOSE_NODE_ATTACH } from './grant.js';\nimport { canonicalizeAuthConfig, assertConnectionGrant, isConnectionGrant, } from './connection-grant.js';\nexport const WEBSOCKET_CONNECTION_GRANT_TYPE = 'WebSocketConnectionGrant';\nexport function isWebSocketConnectionGrant(candidate) {\n return (isConnectionGrant(candidate) &&\n candidate.type ===\n WEBSOCKET_CONNECTION_GRANT_TYPE &&\n (typeof candidate.url === 'string' ||\n typeof candidate.url ===\n 'undefined'));\n}\nexport function normalizeWebSocketConnectionGrant(candidate) {\n const type = typeof candidate.type === 'string'\n ? candidate.type\n : WEBSOCKET_CONNECTION_GRANT_TYPE;\n if (type !== WEBSOCKET_CONNECTION_GRANT_TYPE) {\n throw new TypeError(`WebSocketConnectionGrant expected type \"${WEBSOCKET_CONNECTION_GRANT_TYPE}\", received \"${type}\"`);\n }\n const purpose = typeof candidate.purpose === 'string' && candidate.purpose.length > 0\n ? candidate.purpose\n : GRANT_PURPOSE_NODE_ATTACH;\n assertConnectionGrant({ ...candidate, type, purpose }, 'WebSocketConnectionGrant requires a valid base grant');\n const urlValue = candidate.url;\n if (urlValue !== undefined &&\n (typeof urlValue !== 'string' || urlValue.trim().length === 0)) {\n throw new TypeError('WebSocketConnectionGrant \"url\" must be a non-empty string when provided');\n }\n const base = {\n type,\n purpose,\n };\n if (typeof urlValue === 'string') {\n base.url = urlValue;\n }\n const authConfig = canonicalizeAuthConfig(candidate.auth);\n if (authConfig) {\n base.auth = authConfig;\n }\n return base;\n}\nexport function websocketGrantToConnectorConfig(grant) {\n const normalized = normalizeWebSocketConnectionGrant(grant);\n const config = {\n type: 'WebSocketConnector',\n };\n if (normalized.url) {\n config.url = normalized.url;\n }\n if (normalized.auth !== undefined) {\n config.auth = normalized.auth;\n }\n return config;\n}\n//# sourceMappingURL=websocket-connection-grant.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE = 'TransportProvisionerFactory';\nexport class TransportProvisionerFactory extends AbstractResourceFactory {\n static async createTransportProvisioner(config, options = {}) {\n if (config) {\n const provisioner = await createResource(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, config, options);\n if (!provisioner) {\n throw new Error('Failed to create transport provisioner from configuration');\n }\n return provisioner;\n }\n let provisioner = null;\n try {\n provisioner = await createDefaultResource(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, null, options);\n }\n catch (error) {\n const message = 'Failed to create default transport provisioner' +\n (error instanceof Error && error.message ? `: ${error.message}` : '');\n throw new Error(message);\n }\n if (!provisioner) {\n throw new Error('Failed to create default transport provisioner');\n }\n return provisioner;\n }\n}\n//# sourceMappingURL=transport-provisioner.js.map","import { registerFactory } from '@naylence/factory';\nimport { GRANT_PURPOSE_NODE_ATTACH } from '../grants/grant.js';\nimport { WEBSOCKET_CONNECTION_GRANT_TYPE, normalizeWebSocketConnectionGrant, } from '../grants/websocket-connection-grant.js';\nimport { TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TransportProvisionerFactory, } from './transport-provisioner.js';\nexport class WebSocketTransportProvisioner {\n constructor(options) {\n this.url = options.url;\n this.ttlSec = options.ttlSec;\n }\n async provision(_decision, hello, _fullMetadata, attachToken) {\n const supportedTransports = hello.supportedTransports;\n if (Array.isArray(supportedTransports) && supportedTransports.length > 0) {\n const hasWebSocket = supportedTransports.includes(WebSocketTransportProvisioner.TRANSPORT_TYPE);\n if (!hasWebSocket) {\n throw new Error(`Unsupported transports: ${supportedTransports.join(', ')}`);\n }\n }\n let authConfig;\n if (attachToken) {\n const tokenProviderConfig = {\n type: 'StaticTokenProvider',\n token: attachToken,\n };\n authConfig = {\n type: 'WebSocketSubprotocolAuth',\n tokenProvider: tokenProviderConfig,\n };\n }\n const grant = normalizeWebSocketConnectionGrant({\n type: WEBSOCKET_CONNECTION_GRANT_TYPE,\n purpose: GRANT_PURPOSE_NODE_ATTACH,\n url: this.url,\n auth: authConfig,\n });\n const result = {\n connectionGrant: grant,\n cleanupHandle: null,\n };\n if (this.ttlSec !== undefined) {\n result.metadata = {\n ...(result.metadata ?? {}),\n ttlSec: this.ttlSec,\n };\n }\n return result;\n }\n async deprovision(_cleanupHandle) {\n // No-op for stateless WebSocket transport provisioners\n }\n}\nWebSocketTransportProvisioner.TRANSPORT_TYPE = 'websocket';\nexport class WebSocketTransportProvisionerFactory extends TransportProvisionerFactory {\n constructor() {\n super(...arguments);\n this.type = 'WebSocketTransportProvisioner';\n this.isDefault = true;\n }\n async create(config) {\n const options = normalizeConfig(config);\n return new WebSocketTransportProvisioner(options);\n }\n}\nfunction normalizeConfig(config) {\n if (!config) {\n throw new Error('WebSocketTransportProvisioner requires configuration');\n }\n const candidate = config;\n const typeValue = typeof candidate.type === 'string' ? candidate.type : undefined;\n if (typeValue !== 'WebSocketTransportProvisioner') {\n throw new Error(`WebSocketTransportProvisionerFactory expects type \"WebSocketTransportProvisioner\", got \"${typeValue ?? 'undefined'}\"`);\n }\n const urlValue = candidate.url;\n if (typeof urlValue !== 'string' || urlValue.trim().length === 0) {\n throw new Error('WebSocketTransportProvisioner configuration must include a non-empty \"url\" string');\n }\n const ttlCandidate = (() => {\n const raw = candidate.ttlSec ?? candidate.ttl_sec ?? candidate.ttlSEC;\n if (typeof raw === 'number') {\n return raw;\n }\n if (typeof raw === 'string') {\n const parsed = Number(raw.trim());\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n })();\n const options = {\n url: urlValue.trim(),\n };\n if (typeof ttlCandidate === 'number' && Number.isFinite(ttlCandidate)) {\n options.ttlSec = ttlCandidate;\n }\n return options;\n}\nregisterFactory(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, 'WebSocketTransportProvisioner', WebSocketTransportProvisionerFactory, {\n isDefault: true,\n});\n//# sourceMappingURL=websocket-transport-provisioner.js.map"],"names":["LogLevel","logger","AnsiColor","sha256","isPlainObject","parseAddressComponents","FlowFlags","FameAddress","DEFAULT_POLLING_TIMEOUT_MS","extractEnvelopeAndContext","createChannelMessage","DEFAULT_DB_NAME","DEFAULT_STORE_NAME","DEFAULT_KEY_ID","MASTER_KEY_LENGTH","openDatabase","getRandomBytes","GCM_IV_LENGTH","cachedNodeCrypto","loadNodeCrypto","toArrayBuffer","globalScope","ConnectorState","generateId","ConnectorStateUtils","FameResponseType","createFameEnvelope","ExtensionManager","factory","ExpressionEvaluationPolicy","FameFabric","FameServiceProxy","FACTORY_MODULE_PREFIX","resolveFactoryModuleSpecifier","DefaultRegistry","AbstractResourceFactory","createResource","createDefaultResource","registerFactory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../esm/naylence/fame/errors/errors.js","../esm/naylence/fame/util/logging-types.js","../esm/naylence/fame/util/envelope-context.js","../esm/naylence/fame/util/logging.js","../esm/naylence/fame/util/task-types.js","../esm/naylence/fame/util/task-spawner.js","../esm/naylence/fame/util/lock.js","../esm/naylence/fame/util/task-utils.js","../esm/naylence/fame/util/formatter.js","../esm/naylence/fame/util/metrics-emitter.js","../esm/naylence/fame/util/util.js","../esm/naylence/fame/util/logicals.js","../esm/naylence/fame/constants/ttl-constants.js","../esm/naylence/fame/util/ttl-validation.js","../esm/naylence/fame/channel/flow-controller.js","../esm/naylence/fame/channel/in-memory/in-memory-channel.js","../esm/naylence/fame/channel/in-memory/in-memory-binding.js","../esm/naylence/fame/channel/in-memory/in-memory-fanout-broker.js","../esm/naylence/fame/storage/in-memory-storage.js","../esm/naylence/fame/storage/storage-provider-factory.js","../esm/naylence/fame/util/lazy-import.js","../esm/naylence/fame/security/credential/browser-auto-key-credential-provider.js","../esm/naylence/fame/storage/encrypted-storage-provider-base.js","../esm/naylence/fame/storage/indexeddb-key-value-store.js","../esm/naylence/fame/storage/indexeddb-storage-provider.js","../esm/naylence/fame/node/node-context-stack.js","../esm/naylence/fame/grants/grant.js","../esm/naylence/fame/node/admission/admission-client-factory.js","../esm/naylence/fame/security/keys/attachment-key-validator.js","../esm/naylence/fame/node/admission/default-node-attach-client.js","../esm/naylence/fame/connector/transport-listener-factory.js","../esm/naylence/fame/node/node-meta.js","../esm/naylence/fame/node/binding-manager.js","../esm/naylence/fame/delivery/delivery-policy-factory.js","../esm/naylence/fame/delivery/tracked-envelope.js","../esm/naylence/fame/delivery/delivery-error.js","../esm/naylence/fame/delivery/default-delivery-tracker.js","../esm/naylence/fame/security/keys/key-store-factory.js","../esm/naylence/fame/security/keys/attachment-key-validator-factory.js","../esm/naylence/fame/security/security-manager-factory.js","../esm/naylence/fame/stickiness/replica-stickiness-manager-factory.js","../esm/naylence/fame/telemetry/trace-emitter-factory.js","../esm/naylence/fame/node/factory-commons.js","../esm/naylence/fame/config/extended-fame-config-base.js","../esm/naylence/fame/config/extended-fame-config.js","../esm/naylence/fame/node/node-like-factory.js","../esm/naylence/fame/node/node-config.js","../esm/naylence/fame/stickiness/load-balancer-stickiness-manager-factory.js","../esm/naylence/fame/sentinel/load-balancing/composite-load-balancing-strategy.js","../esm/naylence/fame/sentinel/load-balancing/sticky-load-balancing-strategy.js","../esm/naylence/fame/sentinel/load-balancing/load-balancing-strategy-factory.js","../esm/naylence/fame/sentinel/routing-policy.js","../esm/naylence/fame/sentinel/peer.js","../esm/naylence/fame/node/node-envelope-factory.js","../esm/naylence/fame/node/response-context-manager.js","../esm/naylence/fame/node/streaming-response-handler.js","../esm/naylence/fame/node/channel-polling-manager.js","../esm/naylence/fame/node/rpc-server-handler.js","../esm/naylence/fame/node/rpc-client-manager.js","../esm/naylence/fame/node/envelope-listener-manager.js","../esm/naylence/fame/util/async-event.js","../esm/naylence/fame/node/root-session-manager.js","../esm/naylence/fame/connector/connector-factory.js","../esm/naylence/fame/node/upstream-session-manager.js","../esm/naylence/fame/node/admission/noop-admission-client.js","../esm/naylence/fame/service/default-service-manager.js","../esm/naylence/fame/node/node.js","../esm/naylence/fame/sentinel/store/route-store-factory.js","../esm/naylence/fame/sentinel/store/route-store.js","../esm/naylence/fame/sentinel/route-manager.js","../esm/naylence/fame/sentinel/router.js","../esm/naylence/fame/sentinel/composite-routing-policy.js","../esm/naylence/fame/sentinel/load-balancing/hrw-load-balancing-strategy.js","../esm/naylence/fame/sentinel/capability-aware-routing-policy.js","../esm/naylence/fame/sentinel/hybrid-path-routing-policy.js","../esm/naylence/fame/sentinel/node-attach-frame-handler.js","../esm/naylence/fame/sentinel/address-bind-frame-handler.js","../esm/naylence/fame/sentinel/node-heartbeat-frame-handler.js","../esm/naylence/fame/sentinel/capability-frame-handler.js","../esm/naylence/fame/sentinel/credit-update-frame-handler.js","../esm/naylence/fame/sentinel/sentinel.js","../esm/naylence/fame/sentinel/peer-config.js","../esm/naylence/fame/sentinel/sentinel-config.js","../esm/naylence/fame/sentinel/sentinel-factory.js","../esm/naylence/fame/connector/noop-flow-controller.js","../esm/naylence/fame/connector/base-async-connector.js","../esm/naylence/fame/connector/connector-config.js","../esm/naylence/fame/connector/websocket-connector.js","../esm/naylence/fame/service/rpc.js","../esm/naylence/fame/factory-manifest.js","../esm/naylence/fame/util/register-runtime-factories.js","../esm/naylence/fame/security/crypto/crypto-dependencies.js","../esm/naylence/fame/security/credential/browser-wrapped-key-credential-provider.js","../esm/runtime-isomorphic.js","../esm/naylence/fame/node/node-event-listener.js","../esm/naylence/fame/telemetry/base-trace-emitter.js","../esm/naylence/fame/telemetry/noop-trace-emitter.js","../esm/naylence/fame/telemetry/noop-trace-emitter-factory.js","../esm/naylence/fame/security/auth/auth-injection-strategy-factory.js","../esm/naylence/fame/telemetry/otel-setup.js","../esm/naylence/fame/telemetry/open-telemetry-trace-emitter-factory.js","../esm/naylence/fame/telemetry/trace-emitter-profile-factory.js","../esm/naylence/fame/security/auth/jwt-token-issuer.js","../esm/naylence/fame/security/auth/jose-loader.js","../esm/naylence/fame/security/auth/jwt-authorization-utils.js","../esm/naylence/fame/security/auth/jwt-token-verifier.js","../esm/naylence/fame/security/crypto/key-factories/key-factory-utils.js","../esm/naylence/fame/security/crypto/key-factories/ed25519-key-factory.js","../esm/naylence/fame/security/crypto/key-factories/rsa-key-factory.js","../esm/naylence/fame/security/crypto/key-factories/x25519-key-factory.js","../esm/naylence/fame/security/crypto/providers/default-crypto-provider.js","../esm/plugin.js","../esm/naylence/fame/telemetry/otel-context.js","../esm/naylence/fame/telemetry/open-telemetry-trace-emitter.js","../esm/naylence/fame/grants/connection-grant.js","../esm/naylence/fame/grants/websocket-connection-grant.js","../esm/naylence/fame/transport/transport-provisioner.js","../esm/naylence/fame/transport/websocket-transport-provisioner.js"],"sourcesContent":["/**\n * Fame protocol specific error classes with WebSocket close codes and proper inheritance.\n */\n/**\n * Base class for all Fame-related errors.\n */\nexport class FameError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n this.name = this.constructor.name;\n // Maintain proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when the Fame transport is closed.\n * Maps to WebSocket close event codes.\n */\nexport class FameTransportClose extends FameError {\n constructor(message = 'Fame transport closed', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame connection cannot be established.\n */\nexport class FameConnectError extends FameError {\n constructor(message = 'Failed to connect to Fame service', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame message exceeds the maximum allowed size.\n */\nexport class FameMessageTooLarge extends FameError {\n constructor(message = 'Fame message too large', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame protocol violation occurs.\n */\nexport class FameProtocolError extends FameError {\n constructor(message = 'Fame protocol error', code) {\n super(message, code);\n }\n}\n/**\n * Raised when the Fame back pressure buffer is full.\n */\nexport class BackPressureFull extends FameError {\n constructor(message = 'Back pressure buffer full', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame operation is not authorized.\n */\nexport class NotAuthorized extends FameError {\n constructor(message = 'Not authorized', code) {\n super(message, code);\n }\n}\n/**\n * WebSocket close codes used by Fame protocol.\n * @see https://tools.ietf.org/html/rfc6455#section-7.4.1\n */\nexport const WebSocketCloseCode = {\n /** Normal closure; the connection successfully completed whatever purpose for which it was created. */\n NORMAL_CLOSURE: 1000,\n /** The endpoint is going away, either because of a server failure or because the browser is navigating away. */\n GOING_AWAY: 1001,\n /** The endpoint is terminating the connection due to a protocol error. */\n PROTOCOL_ERROR: 1002,\n /** The connection is being terminated because the endpoint received data of a type it cannot accept. */\n UNSUPPORTED_DATA: 1003,\n /** The endpoint is terminating the connection because a message was received that is too big to process. */\n MESSAGE_TOO_BIG: 1009,\n /** The client is terminating the connection because it expected the server to negotiate one or more extension. */\n MANDATORY_EXTENSION: 1010,\n /** The server is terminating the connection because it encountered an unexpected condition. */\n INTERNAL_ERROR: 1011,\n /** The service is restarting. A client may reconnect, and if it chooses to do so, should reconnect using a randomized delay. */\n SERVICE_RESTART: 1012,\n /** The service is experiencing overload. A client should only connect to a different IP (when there are multiple for the target) or reconnect to the same IP upon user action. */\n TRY_AGAIN_LATER: 1013,\n /** The server was acting as a gateway or proxy and received an invalid response from the upstream server. */\n BAD_GATEWAY: 1014,\n};\n/**\n * Check if an error is a Fame-related error.\n */\nexport function isFameError(error) {\n return error instanceof FameError;\n}\n/**\n * Check if an error is a specific Fame error type.\n */\nexport function isFameErrorType(error, errorClass) {\n return error instanceof errorClass;\n}\n/**\n * Create a FameTransportClose error from a WebSocket close event.\n */\nexport function createTransportCloseError(code, reason) {\n const message = reason || `Transport closed with code ${code}`;\n return new FameTransportClose(message, code);\n}\n//# sourceMappingURL=errors.js.map","/**\n * Cross-platform logging utilities for Naylence Fame\n *\n * This module provides structured logging that works in both Node.js and browser environments.\n * It mimics the functionality of the Python structlog-based logging system.\n */\n// Log levels matching Python logging\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"TRACE\"] = 5] = \"TRACE\";\n LogLevel[LogLevel[\"DEBUG\"] = 10] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 20] = \"INFO\";\n LogLevel[LogLevel[\"WARNING\"] = 30] = \"WARNING\";\n LogLevel[LogLevel[\"ERROR\"] = 40] = \"ERROR\";\n LogLevel[LogLevel[\"CRITICAL\"] = 50] = \"CRITICAL\";\n LogLevel[LogLevel[\"OFF\"] = 100] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport const LogLevelNames = {\n [LogLevel.TRACE]: 'TRACE',\n [LogLevel.DEBUG]: 'DEBUG',\n [LogLevel.INFO]: 'INFO',\n [LogLevel.WARNING]: 'WARNING',\n [LogLevel.ERROR]: 'ERROR',\n [LogLevel.CRITICAL]: 'CRITICAL',\n [LogLevel.OFF]: 'OFF',\n};\n// Environment detection\nexport const isNode = (() => {\n try {\n return (typeof globalThis !== 'undefined' &&\n typeof globalThis.process !== 'undefined' &&\n globalThis.process.versions?.node);\n }\n catch {\n return false;\n }\n})();\nexport const isBrowser = !isNode;\nfunction resolveSnapshotValue(snapshot, camelKey, snakeKey) {\n if (snapshot[camelKey] !== undefined) {\n return snapshot[camelKey];\n }\n if (snapshot[snakeKey] !== undefined) {\n return snapshot[snakeKey];\n }\n return undefined;\n}\nexport function normalizeEnvelopeSnapshot(snapshot) {\n if (!snapshot) {\n return {};\n }\n const normalized = {};\n const traceId = resolveSnapshotValue(snapshot, 'traceId', 'trace_id');\n if (traceId !== undefined) {\n normalized.trace_id = traceId;\n }\n if (snapshot.id !== undefined) {\n normalized.id = snapshot.id;\n }\n const flowId = resolveSnapshotValue(snapshot, 'flowId', 'flow_id');\n if (flowId !== undefined) {\n normalized.flow_id = flowId;\n }\n return normalized;\n}\n//# sourceMappingURL=logging-types.js.map","/**\n * Envelope context management for cross-platform environments\n *\n * This provides similar functionality to Python's envelope_context using AsyncLocalStorage in Node.js\n * and a simple context stack in browsers.\n */\nimport { normalizeEnvelopeSnapshot, } from './logging-types.js';\n// Cross-platform context storage\nclass EnvelopeContextManager {\n constructor() {\n this.nodeStorage = null;\n this.browserStack = [];\n // Try to use AsyncLocalStorage in Node.js environments\n this.initializeStorage();\n }\n initializeStorage() {\n // Only try to load AsyncLocalStorage in Node.js environments\n if (typeof globalThis !== 'undefined' &&\n globalThis.process?.versions?.node) {\n try {\n // Try to require async_hooks synchronously - this will only work in Node.js\n // The bundler will handle this gracefully for browser builds\n if (typeof require !== 'undefined') {\n const { AsyncLocalStorage } = require('async_hooks');\n this.nodeStorage = new AsyncLocalStorage();\n }\n }\n catch {\n // Fall back to browser-style stack if AsyncLocalStorage isn't available\n this.nodeStorage = null;\n }\n }\n }\n /**\n * Get the current envelope context\n */\n getCurrentContext() {\n if (this.nodeStorage) {\n return this.nodeStorage.getStore();\n }\n // Browser fallback - return the top of the stack\n return this.browserStack[this.browserStack.length - 1];\n }\n /**\n * Run a function with envelope context\n */\n runWithContext(context, fn) {\n if (this.nodeStorage) {\n return this.nodeStorage.run(context, fn);\n }\n // Browser fallback - use a simple stack\n this.browserStack.push(context);\n try {\n return fn();\n }\n finally {\n this.browserStack.pop();\n }\n }\n /**\n * Run an async function with envelope context\n */\n async runWithContextAsync(context, fn) {\n if (this.nodeStorage) {\n return this.nodeStorage.run(context, fn);\n }\n // Browser fallback - use a simple stack\n this.browserStack.push(context);\n try {\n return await fn();\n }\n finally {\n this.browserStack.pop();\n }\n }\n}\n// Global instance\nconst envelopeContextManager = new EnvelopeContextManager();\n/**\n * Get the current envelope context\n */\nexport function getCurrentEnvelope() {\n return envelopeContextManager.getCurrentContext();\n}\nexport function currentTraceId() {\n return envelopeContextManager.getCurrentContext()?.trace_id;\n}\n/**\n * Context manager function (similar to Python's envelope_context)\n */\nexport function withEnvelopeContext(envelope, fn) {\n const context = normalizeEnvelopeSnapshot(envelope);\n return envelopeContextManager.runWithContext(context, fn);\n}\n/**\n * Async context manager function\n */\nexport async function withEnvelopeContextAsync(envelope, fn) {\n const context = normalizeEnvelopeSnapshot(envelope);\n return envelopeContextManager.runWithContextAsync(context, fn);\n}\n/**\n * Class-based context manager (similar to Python's context manager protocol)\n */\nexport class EnvelopeContext {\n constructor(envelope) {\n this.envelope = envelope;\n }\n run(fn) {\n return withEnvelopeContext(this.envelope, fn);\n }\n async runAsync(fn) {\n return withEnvelopeContextAsync(this.envelope, fn);\n }\n}\n//# sourceMappingURL=envelope-context.js.map","/**\n * Cross-platform structured logging implementation\n *\n * This module provides a unified logging interface that works in both Node.js and browser environments.\n * It includes structured logging with processors similar to Python's structlog.\n *\n * Environment Variables:\n * - FAME_LOG_LEVEL: Set the initial log level at framework initialization (Node.js only)\n * Valid values: TRACE, DEBUG, INFO, WARNING, WARN, ERROR, CRITICAL\n * Default: INFO (balanced verbosity), OFF during tests\n *\n * Usage:\n * ```typescript\n * // Automatic - just set the environment variable\n * // FAME_LOG_LEVEL=INFO node my-app.js\n *\n * // Or call enableLogging() to override at runtime\n * import { enableLogging, getLogger } from '@naylence/runtime';\n * enableLogging('DEBUG');\n *\n * const logger = getLogger('my.app');\n * logger.info('Application started');\n * ```\n */\nimport { LogLevel, LogLevelNames, isNode, } from './logging-types.js';\nimport { getCurrentEnvelope } from './envelope-context.js';\n// Default processors (similar to structlog processors)\nexport const addTimestamp = (entry) => {\n return {\n ...entry,\n timestamp: new Date().toISOString(),\n };\n};\nexport const addLogLevel = (entry) => {\n return {\n ...entry,\n level_name: LogLevelNames[entry.level],\n };\n};\nexport const addEnvelopeFields = (entry) => {\n const envelope = getCurrentEnvelope();\n if (!envelope)\n return entry;\n const updates = {};\n if (envelope.trace_id)\n updates.trace_id = envelope.trace_id;\n if (envelope.id)\n updates.ctx_envp_id = envelope.id;\n if (envelope.flow_id)\n updates.ctx_flow_id = envelope.flow_id;\n return { ...entry, ...updates };\n};\nexport const dropEmpty = (entry) => {\n const result = { ...entry };\n // Remove empty values\n for (const [key, value] of Object.entries(result)) {\n if (value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' &&\n value !== null &&\n Object.keys(value).length === 0)) {\n delete result[key];\n }\n }\n return result;\n};\nexport const stringifyNonPrimitives = (entry) => {\n const result = { ...entry };\n const primitives = ['string', 'number', 'boolean', 'undefined'];\n for (const [key, value] of Object.entries(result)) {\n if (value !== null &&\n !primitives.includes(typeof value) &&\n !Array.isArray(value)) {\n result[key] = String(value);\n }\n }\n return result;\n};\nconst CORE_LOG_FIELDS = new Set([\n 'timestamp',\n 'level',\n 'logger',\n 'event',\n 'level_name',\n]);\nconst ANSI_RESET = '\\u001B[0m';\nfunction formatValueForConsole(value) {\n if (value === null)\n return 'null';\n if (value === undefined)\n return 'undefined';\n if (typeof value === 'string') {\n return /[\\s\"=]/.test(value) ? JSON.stringify(value) : value;\n }\n if (typeof value === 'number' ||\n typeof value === 'bigint' ||\n typeof value === 'boolean') {\n return String(value);\n }\n try {\n return JSON.stringify(value);\n }\n catch {\n return String(value);\n }\n}\nfunction buildConsoleParts(entry) {\n const timestamp = entry.timestamp ?? new Date().toISOString();\n const levelName = entry.level_name ?? LogLevelNames[entry.level] ?? String(entry.level);\n const loggerName = entry.logger ?? 'root';\n const event = entry.event ?? '';\n const extras = [];\n for (const [key, value] of Object.entries(entry)) {\n if (CORE_LOG_FIELDS.has(key))\n continue;\n extras.push(`${key}=${formatValueForConsole(value)}`);\n }\n extras.sort((a, b) => a.localeCompare(b));\n return { timestamp, levelName, loggerName, event, extras };\n}\nfunction supportsAnsiColors() {\n if (!isNode)\n return false;\n if (typeof process === 'undefined')\n return false;\n const stdout = process.stdout;\n return Boolean(stdout && typeof stdout.isTTY === 'boolean' && stdout.isTTY);\n}\nfunction getAnsiColor(level) {\n switch (level) {\n case LogLevel.TRACE:\n return '\\u001B[90m';\n case LogLevel.DEBUG:\n return '\\u001B[36m';\n case LogLevel.INFO:\n return '\\u001B[32m';\n case LogLevel.WARNING:\n return '\\u001B[33m';\n case LogLevel.ERROR:\n return '\\u001B[31m';\n case LogLevel.CRITICAL:\n return '\\u001B[31m';\n default:\n return null;\n }\n}\nfunction formatNodeConsoleLine(entry) {\n const { timestamp, levelName, loggerName, event, extras } = buildConsoleParts(entry);\n const shouldColorize = supportsAnsiColors() && !isTest;\n const paddedLevel = levelName.toUpperCase().padEnd(7, ' ');\n const color = shouldColorize ? getAnsiColor(entry.level) : null;\n const levelSegment = color\n ? `${color}${paddedLevel}${ANSI_RESET}`\n : paddedLevel;\n const extrasJoined = extras.join(' ');\n const eventSegment = event ? ` | ${event}` : '';\n const extrasSegment = extrasJoined\n ? event\n ? ` ${extrasJoined}`\n : ` | ${extrasJoined}`\n : '';\n return `${timestamp} | ${levelSegment} | ${loggerName}${eventSegment}${extrasSegment}`.trimEnd();\n}\nfunction formatBrowserConsoleLine(entry) {\n const { timestamp, levelName, loggerName, event, extras } = buildConsoleParts(entry);\n const color = getConsoleColor(entry.level);\n const extrasJoined = extras.join(' ');\n const eventSegment = event ? ` | ${event}` : '';\n const extrasSegment = extrasJoined\n ? event\n ? ` ${extrasJoined}`\n : ` | ${extrasJoined}`\n : '';\n const message = `%c${timestamp} | ${levelName.toUpperCase()} | ${loggerName}${eventSegment}${extrasSegment}`;\n return { message, styles: [color] };\n}\n// Default transports\nexport const consoleTransport = (entry) => {\n if (isNode) {\n console.log(formatNodeConsoleLine(entry));\n }\n else {\n const { message, styles } = formatBrowserConsoleLine(entry);\n console.log(message, ...styles);\n }\n};\nfunction getConsoleColor(level) {\n switch (level) {\n case LogLevel.TRACE:\n return 'color: #9AA0A6';\n case LogLevel.DEBUG:\n return 'color: #50B5FF';\n case LogLevel.INFO:\n return 'color: #2E7D32; font-weight: 600';\n case LogLevel.WARNING:\n return 'color: #F9AB00; font-weight: 600';\n case LogLevel.ERROR:\n return 'color: #E53935; font-weight: 600';\n case LogLevel.CRITICAL:\n return 'color: #B71C1C; font-weight: 700; text-decoration: underline';\n default:\n return 'color: #37474F';\n }\n}\n// Node.js-specific Pino transport (when available)\nlet pinoLogger = null;\nexport const pinoTransport = (entry) => {\n if (!isNode || !pinoLogger) {\n // Fall back to console if Pino isn't available\n consoleTransport(entry);\n return;\n }\n const { level, event, ...extra } = entry;\n const pinoLevel = getPinoLevel(level);\n pinoLogger[pinoLevel](extra, event);\n};\nfunction getPinoLevel(level) {\n switch (level) {\n case LogLevel.TRACE:\n return 'trace';\n case LogLevel.DEBUG:\n return 'debug';\n case LogLevel.INFO:\n return 'info';\n case LogLevel.WARNING:\n return 'warn';\n case LogLevel.ERROR:\n return 'error';\n case LogLevel.CRITICAL:\n return 'fatal';\n default:\n return 'info';\n }\n}\n// Initialize Pino if available (Node.js only)\nfunction initializePino() {\n if (!isNode || pinoLogger)\n return;\n if (isTest) {\n // Don't initialize Pino in tests to avoid worker threads\n return;\n }\n try {\n // Try to require pino synchronously - this will only work in Node.js\n if (typeof require !== 'undefined') {\n const pino = require('pino');\n // Use pretty transport for development\n pinoLogger = pino({\n level: 'trace',\n customLevels: { trace: 5 },\n transport: {\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'yyyy-mm-dd HH:MM:ss',\n ignore: 'pid,hostname',\n },\n },\n });\n // Switch default transport to Pino now that it's available\n defaultConfig.transports = [pinoTransport];\n }\n }\n catch {\n // Pino not available, fall back to console\n pinoLogger = null;\n }\n}\n// Detect test environment for quieter logging\nconst isTest = typeof process !== 'undefined' &&\n (process.env.NODE_ENV === 'test' ||\n process.env.JEST_WORKER_ID !== undefined ||\n (typeof global !== 'undefined' && global.expect !== undefined));\n// Initialize Pino immediately in Node.js environments\nif (isNode) {\n initializePino();\n}\n/**\n * Get initial log level from environment variable or defaults\n */\nfunction getInitialLogLevel() {\n // Tests should be silent\n if (isTest) {\n return LogLevel.OFF;\n }\n // Check FAME_LOG_LEVEL environment variable\n if (isNode && typeof process !== 'undefined' && process.env.FAME_LOG_LEVEL) {\n try {\n const envLevel = process.env.FAME_LOG_LEVEL.trim().toUpperCase();\n // Direct enum name match (e.g., \"DEBUG\", \"INFO\")\n if (envLevel in LogLevel) {\n return LogLevel[envLevel];\n }\n // Try alternative mappings\n if (envLevel === 'WARN')\n return LogLevel.WARNING;\n }\n catch {\n // Fall through to default\n }\n }\n // Default to INFO - balanced verbosity for most use cases\n return LogLevel.INFO;\n}\nconst defaultConfig = {\n level: getInitialLogLevel(),\n processors: [\n addTimestamp,\n addEnvelopeFields,\n dropEmpty,\n stringifyNonPrimitives,\n addLogLevel,\n ],\n transports: [consoleTransport], // Start with console, switch to Pino when available\n};\nconst logLevelValues = new Set();\nconst logLevelNameLookup = new Map();\nfor (const value of Object.values(LogLevel)) {\n if (typeof value === 'number') {\n logLevelValues.add(value);\n const name = LogLevelNames[value];\n if (name) {\n logLevelNameLookup.set(name.toUpperCase(), value);\n }\n }\n}\n// Logger implementation\nclass FameLogger {\n constructor(name, config = {}, bindings = {}) {\n this.name = name;\n this.config = { ...defaultConfig, ...config };\n this.bindings = bindings;\n }\n log(level, event, extra = {}) {\n if (level < this.config.level)\n return;\n let entry = {\n timestamp: '',\n level,\n logger: this.name,\n event,\n ...this.bindings,\n ...extra,\n };\n // Apply processors\n for (const processor of this.config.processors) {\n const processed = processor(entry);\n if (processed === null)\n return; // Processor filtered out the entry\n entry = processed;\n }\n // Send to transports\n for (const transport of this.config.transports) {\n transport(entry);\n }\n }\n trace(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.TRACE, event, extra);\n }\n debug(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.DEBUG, event, extra);\n }\n info(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.INFO, event, extra);\n }\n warning(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.WARNING, event, extra);\n }\n error(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.ERROR, event, extra);\n }\n critical(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.CRITICAL, event, extra);\n }\n child(bindings) {\n return new FameLogger(this.name, this.config, {\n ...this.bindings,\n ...bindings,\n });\n }\n setLevel(level) {\n this.config.level = level;\n }\n parseArgs(args) {\n if (args.length === 0)\n return {};\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null) {\n return args[0];\n }\n // Convert positional args to numbered keys\n const result = {};\n args.forEach((arg, index) => {\n result[`arg${index}`] = arg;\n });\n return result;\n }\n}\n// Global logger registry\nconst loggers = new Map();\nlet naylenceLogLevelOverride = null;\nfunction isNaylenceLogger(name) {\n return name === 'naylence' || name.startsWith('naylence.');\n}\nfunction normalizeLogLevel(level) {\n if (typeof level === 'number') {\n if (logLevelValues.has(level)) {\n return level;\n }\n }\n else {\n const key = level.toString().toUpperCase();\n const resolved = logLevelNameLookup.get(key);\n if (resolved !== undefined) {\n return resolved;\n }\n }\n throw new Error(`Unknown log level: ${level}`);\n}\n/**\n * Get a logger instance (similar to Python's getLogger)\n */\nexport function getLogger(name) {\n if (!loggers.has(name)) {\n const config = {};\n if (naylenceLogLevelOverride !== null && isNaylenceLogger(name)) {\n config.level = naylenceLogLevelOverride;\n }\n loggers.set(name, new FameLogger(name, config));\n }\n return loggers.get(name);\n}\n/**\n * Configure basic logging (similar to Python's basicConfig)\n */\nexport function basicConfig(options = {}) {\n const level = options.level ?? LogLevel.TRACE;\n const useJson = options.format === 'json';\n const transport = useJson\n ? (entry) => console.log(JSON.stringify(entry))\n : consoleTransport;\n // Update default config\n defaultConfig.level = level;\n defaultConfig.transports = [transport];\n // Update existing loggers\n for (const logger of loggers.values()) {\n logger.setLevel(level);\n }\n}\nexport function enableLogging(level) {\n const resolvedLevel = normalizeLogLevel(level);\n basicConfig({ level: LogLevel.WARNING });\n naylenceLogLevelOverride = resolvedLevel;\n for (const [name, logger] of loggers.entries()) {\n if (isNaylenceLogger(name)) {\n logger.setLevel(resolvedLevel);\n }\n }\n}\nexport function summarizeEnvelope(envelope, prefix = 'child_') {\n if (!envelope) {\n return {};\n }\n const safePrefix = prefix ?? '';\n return {\n [`${safePrefix}envp_id`]: envelope.id ?? null,\n [`${safePrefix}sid`]: envelope.sid ? `${String(envelope.sid)}…` : null,\n [`${safePrefix}to`]: envelope.to ? String(envelope.to) : null,\n [`${safePrefix}trace_id`]: envelope.traceId ?? null,\n [`${safePrefix}frame`]: envelope.frame && typeof envelope.frame === 'object'\n ? (envelope.frame.type ??\n envelope.frame.constructor?.name ??\n 'Unknown')\n : null,\n [`${safePrefix}corr_id`]: envelope.corrId ?? null,\n };\n}\n// Re-export log levels and types\nexport { LogLevel, LogLevelNames } from './logging-types.js';\n//# sourceMappingURL=logging.js.map","/**\n * Cross-platform task spawning and management utilities\n *\n * This module provides functionality similar to Python's asyncio.Task and TaskSpawner,\n * adapted for JavaScript/TypeScript environments.\n */\n// Task states\nexport var TaskState;\n(function (TaskState) {\n TaskState[\"RUNNING\"] = \"running\";\n TaskState[\"COMPLETED\"] = \"completed\";\n TaskState[\"FAILED\"] = \"failed\";\n TaskState[\"CANCELLED\"] = \"cancelled\";\n})(TaskState || (TaskState = {}));\n// Errors that can be thrown by tasks\nexport class TaskTimeoutError extends Error {\n constructor(taskName, timeout) {\n super(`Task ${taskName || 'unknown'} timed out after ${timeout}ms`);\n this.name = 'TaskTimeoutError';\n }\n}\nexport class TaskCancelledError extends Error {\n constructor(taskName) {\n super(`Task ${taskName || 'unknown'} was cancelled`);\n this.name = 'TaskCancelledError';\n }\n}\n//# sourceMappingURL=task-types.js.map","/**\n * TaskSpawner - Cross-platform async task management\n *\n * Provides functionality similar to Python's asyncio TaskSpawner with proper\n * error handling, cancellation, and graceful shutdown capabilities.\n */\nimport { getLogger } from './logging.js';\nimport { withEnvelopeContextAsync, getCurrentEnvelope, } from './envelope-context.js';\nimport { TaskState, TaskTimeoutError, TaskCancelledError, } from './task-types.js';\nconst logger = getLogger('naylence.fame.util.task_spawner');\nfunction firstDefined(source, keys) {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const value = source[key];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction coerceNumber(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return undefined;\n }\n const parsed = Number(trimmed);\n if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {\n return parsed;\n }\n }\n return undefined;\n}\nfunction coerceBoolean(value) {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized.length === 0) {\n return undefined;\n }\n if (['true', '1', 'yes', 'on'].includes(normalized)) {\n return true;\n }\n if (['false', '0', 'no', 'off'].includes(normalized)) {\n return false;\n }\n }\n return undefined;\n}\nfunction normalizeTaskSpawnerConfig(config = {}) {\n const source = config;\n const maxConcurrent = coerceNumber(firstDefined(source, ['maxConcurrent', 'max_concurrent'])) ??\n 0;\n const defaultTimeout = coerceNumber(firstDefined(source, ['defaultTimeout', 'default_timeout'])) ??\n 0;\n const autoCleanup = coerceBoolean(firstDefined(source, ['autoCleanup', 'auto_cleanup'])) ??\n true;\n return {\n maxConcurrent,\n defaultTimeout,\n autoCleanup,\n };\n}\nfunction normalizeSpawnOptions(options = {}) {\n const source = options;\n const nameRaw = firstDefined(source, ['name', 'task_name', 'taskName']);\n const timeoutRaw = firstDefined(source, [\n 'timeout',\n 'task_timeout',\n 'taskTimeout',\n ]);\n const name = typeof nameRaw === 'string' ? nameRaw : undefined;\n const timeout = coerceNumber(timeoutRaw);\n return { name, timeout };\n}\nfunction normalizeShutdownOptions(options = {}) {\n const source = options;\n const gracePeriod = coerceNumber(firstDefined(source, ['gracePeriod', 'grace_period'])) ?? 2000;\n const cancelHanging = coerceBoolean(firstDefined(source, ['cancelHanging', 'cancel_hanging'])) ??\n true;\n const joinTimeout = coerceNumber(firstDefined(source, ['joinTimeout', 'join_timeout'])) ?? 1000;\n return {\n gracePeriod,\n cancelHanging,\n joinTimeout,\n };\n}\n// Internal task implementation\nclass TaskImpl {\n constructor(id, name, promise, abortController) {\n this._state = TaskState.RUNNING;\n this.id = id;\n this.name = name || `task-${id}`;\n this.abortController = abortController;\n this.startTime = Date.now();\n // Wrap the promise to track state changes\n this.promise = promise\n .then((result) => {\n this._state = TaskState.COMPLETED;\n this._result = result;\n return result;\n })\n .catch((error) => {\n if (error.name === 'AbortError' ||\n this.abortController.signal.aborted) {\n this._state = TaskState.CANCELLED;\n throw new TaskCancelledError(this.name);\n }\n else {\n this._state = TaskState.FAILED;\n this._error = error;\n throw error;\n }\n });\n }\n cancel() {\n if (this._state === TaskState.RUNNING) {\n this.abortController.abort();\n }\n }\n isCancelled() {\n return this._state === TaskState.CANCELLED;\n }\n isCompleted() {\n return this._state === TaskState.COMPLETED;\n }\n isFailed() {\n return this._state === TaskState.FAILED;\n }\n getState() {\n return this._state;\n }\n getResult() {\n return this._result;\n }\n getError() {\n return this._error;\n }\n}\nexport class TaskSpawner {\n constructor(config = {}) {\n this._tasks = new Map();\n this._taskCounter = 0;\n this._lastSpawnerError = null;\n this._suppressCompletionLogging = false;\n this._config = normalizeTaskSpawnerConfig(config);\n }\n /**\n * Spawn a new async task with proper error handling and context propagation\n */\n spawn(taskFn, options = {}) {\n const normalizedOptions = normalizeSpawnOptions(options);\n // Reset logging suppression when new work is spawned. Any lingering\n // completion events from a previous shutdown will remain suppressed\n // until the corresponding tasks finish.\n this._suppressCompletionLogging = false;\n // Check concurrency limits\n if (this._config.maxConcurrent > 0 &&\n this._tasks.size >= this._config.maxConcurrent) {\n throw new Error(`Task limit reached: ${this._config.maxConcurrent} concurrent tasks`);\n }\n const taskId = `task-${++this._taskCounter}`;\n const taskName = normalizedOptions.name || `unnamed-${taskId}`;\n const timeout = normalizedOptions.timeout ?? this._config.defaultTimeout;\n logger.debug('starting_background_task', {\n task_name: taskName,\n task_id: taskId,\n });\n // Create abort controller for cancellation\n const abortController = new AbortController();\n // Capture current envelope context\n const currentEnvelope = getCurrentEnvelope();\n // Create the task promise with context propagation\n const taskPromise = this._createTaskPromise(taskFn, abortController.signal, timeout, taskName, currentEnvelope);\n // Create task wrapper\n const task = new TaskImpl(taskId, taskName, taskPromise, abortController);\n this._tasks.set(taskId, task);\n // Set up completion handling\n task.promise\n .then(() => {\n if (!this._suppressCompletionLogging) {\n logger.debug('task_completed_successfully', {\n task_name: taskName,\n task_id: taskId,\n duration_ms: Date.now() - task.startTime,\n });\n }\n })\n .catch((error) => {\n this._handleTaskError(task, error);\n })\n .finally(() => {\n if (this._config.autoCleanup) {\n this._tasks.delete(taskId);\n }\n });\n return task;\n }\n /**\n * Create the actual task promise with all the wrapping logic\n */\n async _createTaskPromise(taskFn, signal, timeout, taskName, envelopeContext) {\n // Run the task with envelope context if available\n const runTask = envelopeContext\n ? () => withEnvelopeContextAsync(envelopeContext, () => taskFn(signal))\n : () => taskFn(signal);\n // Handle timeout if specified\n if (timeout > 0) {\n return Promise.race([\n runTask(),\n this._createTimeoutPromise(timeout, taskName),\n ]);\n }\n return runTask();\n }\n /**\n * Create a timeout promise that rejects after the specified time\n */\n _createTimeoutPromise(timeout, taskName) {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new TaskTimeoutError(taskName, timeout));\n }, timeout);\n });\n }\n /**\n * Handle task errors with proper logging and classification\n */\n _handleTaskError(task, error) {\n const taskName = task.name || task.id;\n // Handle cancellation (including AbortError from AbortSignal)\n if (error instanceof TaskCancelledError ||\n error.name === 'AbortError' ||\n error.message === 'Task cancelled' ||\n error.message === 'Aborted') {\n logger.debug('task_cancelled', {\n task_name: taskName,\n note: 'Task cancelled as requested',\n });\n return;\n }\n // Handle timeout\n if (error instanceof TaskTimeoutError) {\n logger.warning('task_timed_out', {\n task_name: taskName,\n error: error.message,\n });\n if (this._lastSpawnerError === null) {\n this._lastSpawnerError = error;\n }\n return;\n }\n // Handle known WebSocket shutdown race condition (similar to Python version)\n if (error.message.includes(\"await wasn't used with future\") ||\n error.message.includes('WebSocket closed during receive')) {\n logger.debug('task_shutdown_race_condition_handled', {\n task_name: taskName,\n note: 'Normal WebSocket close timing during shutdown - not an error',\n });\n return;\n }\n // Handle transport close errors (similar to Python FameTransportClose)\n if (error.name === 'FameTransportClose' ||\n error.message.includes('normal closure') ||\n error.message.includes('Connection closed')) {\n logger.debug('task_shutdown_completed_normally', {\n task_name: taskName,\n note: 'Task closed normally during shutdown',\n });\n return;\n }\n // All other exceptions are considered real failures\n logger.error('background_task_failed', {\n task_name: taskName,\n error: error.message,\n stack: error.stack,\n });\n if (this._lastSpawnerError === null) {\n this._lastSpawnerError = error;\n }\n }\n /**\n * Gracefully shutdown all spawned tasks\n *\n * This implementation mimics Python's asyncio.wait() behavior more closely\n * for better shutdown performance and responsiveness.\n */\n async shutdownTasks(options = {}) {\n const { gracePeriod, cancelHanging, joinTimeout } = normalizeShutdownOptions(options);\n if (this._tasks.size === 0) {\n logger.debug('shutdown_tasks_no_tasks_to_shutdown');\n return;\n }\n this._suppressCompletionLogging = true;\n logger.debug('shutting_down_tasks', {\n task_count: this._tasks.size,\n task_names: Array.from(this._tasks.values()).map((t) => t.name),\n grace_period_ms: gracePeriod,\n });\n const tasks = Array.from(this._tasks.values());\n // 1. Python-style wait with immediate timeout check\n const completed = await this._waitWithGracePeriod(tasks, gracePeriod);\n // 2. Cancel stragglers if requested\n if (cancelHanging) {\n const stillRunning = tasks.filter((task) => task.getState() === TaskState.RUNNING && !completed.has(task));\n if (stillRunning.length > 0) {\n logger.debug('cancelling_hanging_tasks', {\n hanging_count: stillRunning.length,\n });\n // Cancel all hanging tasks\n stillRunning.forEach((task) => task.cancel());\n // Wait for them to finish with individual timeouts\n await Promise.allSettled(stillRunning.map(async (task) => {\n try {\n await this._waitWithTimeout(task.promise, joinTimeout);\n }\n catch (error) {\n if (error instanceof TaskTimeoutError) {\n logger.warning('task_did_not_shutdown', {\n task_name: task.name || task.id,\n join_timeout_ms: joinTimeout,\n });\n // NOTE: This branch is defensively coded but effectively unreachable with the current\n // TaskImpl implementation. Any rejection after abort() is mapped to TaskCancelledError\n // because the catch wrapper checks the abort signal. We keep this logic in case that\n // implementation changes in future refactors.\n }\n else if (!(error instanceof TaskCancelledError)) {\n /* istanbul ignore next - unreachable defensive branch */\n logger.error('task_raised_during_cancellation', {\n task_name: task.name || task.id,\n error: error instanceof Error ? error.message : String(error),\n });\n /* istanbul ignore next */\n if (this._lastSpawnerError === null && error instanceof Error) {\n this._lastSpawnerError = error;\n }\n }\n }\n }));\n }\n }\n // Clear all tasks after shutdown\n this._tasks.clear();\n }\n /**\n * Wait for tasks with grace period - similar to Python's asyncio.wait()\n * Returns immediately when grace period expires, unlike Promise.allSettled()\n */\n async _waitWithGracePeriod(tasks, gracePeriod) {\n const completed = new Set();\n const promises = tasks.map(async (task) => {\n try {\n await task.promise;\n completed.add(task);\n }\n catch {\n // Task failed or was cancelled - still consider it \"completed\"\n completed.add(task);\n }\n });\n // Race all tasks against the timeout\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n timeoutId = setTimeout(resolve, gracePeriod);\n });\n try {\n await Promise.race([Promise.allSettled(promises), timeoutPromise]);\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n return completed;\n }\n /**\n * Wait for a promise with a timeout\n */\n async _waitWithTimeout(promise, timeout) {\n let timeoutId;\n const timeoutPromise = new Promise((_, reject) => {\n timeoutId = setTimeout(() => reject(new TaskTimeoutError('shutdown-wait', timeout)), timeout);\n });\n try {\n return await Promise.race([promise, timeoutPromise]);\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n }\n /**\n * Get the last spawner error (helper for callers that want to bubble the error)\n */\n get lastSpawnerError() {\n return this._lastSpawnerError;\n }\n /**\n * Get current task count\n */\n get taskCount() {\n return this._tasks.size;\n }\n /**\n * Get all active tasks\n */\n get activeTasks() {\n return Array.from(this._tasks.values());\n }\n /**\n * Get task by ID\n */\n getTask(id) {\n return this._tasks.get(id);\n }\n /**\n * Cancel all tasks\n */\n cancelAllTasks() {\n this._tasks.forEach((task) => task.cancel());\n }\n}\n//# sourceMappingURL=task-spawner.js.map","export class AsyncLock {\n constructor() {\n this.tail = Promise.resolve();\n }\n async runExclusive(operation) {\n let release;\n const next = new Promise((resolve) => {\n release = resolve;\n });\n const previous = this.tail;\n this.tail = previous.then(() => next, () => next);\n await previous;\n try {\n return await operation();\n }\n finally {\n release();\n }\n }\n}\nexport async function withLock(lock, operation) {\n return await lock.runExclusive(operation);\n}\n//# sourceMappingURL=lock.js.map","/**\n * Task utility functions and helpers\n */\n/**\n * Wait for any task to complete (first to finish wins)\n */\nexport async function waitForAny(tasks) {\n if (tasks.length === 0) {\n throw new Error('Cannot wait for any of zero tasks');\n }\n return Promise.race(tasks.map((task) => task.promise));\n}\n/**\n * Wait for all tasks to complete\n */\nexport async function waitForAll(tasks) {\n return Promise.all(tasks.map((task) => task.promise));\n}\n/**\n * Wait for all tasks to settle (complete or fail)\n */\nexport async function waitForAllSettled(tasks) {\n return Promise.allSettled(tasks.map((task) => task.promise));\n}\n/**\n * Create a delay task (similar to asyncio.sleep)\n */\nexport function delay(ms, signal) {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new Error('Aborted'));\n return;\n }\n const timeoutId = setTimeout(() => {\n resolve();\n }, ms);\n signal?.addEventListener('abort', () => {\n clearTimeout(timeoutId);\n reject(new Error('Aborted'));\n });\n });\n}\n/**\n * Create a task that times out after specified duration\n */\nexport function withTimeout(promise, timeoutMs, timeoutMessage) {\n return Promise.race([\n promise,\n new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(timeoutMessage || `Operation timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n }),\n ]);\n}\n/**\n * Retry a task with exponential backoff\n */\nexport async function retryWithBackoff(taskFn, options = {}) {\n const { maxRetries = 3, baseDelayMs = 100, maxDelayMs = 5000, backoffMultiplier = 2, signal, } = options;\n let lastError;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n if (signal?.aborted) {\n throw new Error('Aborted');\n }\n try {\n return await taskFn();\n }\n catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt === maxRetries) {\n throw lastError;\n }\n // Calculate delay with exponential backoff\n const delayMs = Math.min(baseDelayMs * Math.pow(backoffMultiplier, attempt), maxDelayMs);\n await delay(delayMs, signal);\n }\n }\n throw lastError;\n}\n/**\n * Create a debounced task function\n */\nexport function debounce(fn, delayMs) {\n let timeoutId;\n let resolve;\n let reject;\n return (...args) => {\n return new Promise((res, rej) => {\n // Clear previous timeout\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n resolve = res;\n reject = rej;\n timeoutId = setTimeout(async () => {\n try {\n const result = await fn(...args);\n resolve?.(result);\n }\n catch (error) {\n reject?.(error);\n }\n }, delayMs);\n });\n };\n}\n/**\n * Create a throttled task function\n */\nexport function throttle(fn, intervalMs) {\n let lastExecuted = 0;\n let pendingPromise = null;\n return (...args) => {\n const now = Date.now();\n const timeSinceLastExecution = now - lastExecuted;\n if (timeSinceLastExecution >= intervalMs && !pendingPromise) {\n lastExecuted = now;\n pendingPromise = fn(...args).finally(() => {\n pendingPromise = null;\n });\n return pendingPromise;\n }\n // Return existing promise if one is pending\n if (pendingPromise) {\n return pendingPromise;\n }\n // Schedule execution\n const delayMs = intervalMs - timeSinceLastExecution;\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n lastExecuted = Date.now();\n const result = await fn(...args);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n }, delayMs);\n });\n };\n}\n//# sourceMappingURL=task-utils.js.map","/**\n * Formatting utilities for terminal output and timestamps.\n */\n/**\n * ANSI color codes for terminal output.\n */\nexport var AnsiColor;\n(function (AnsiColor) {\n AnsiColor[\"RESET\"] = \"\\u001B[0m\";\n AnsiColor[\"BLACK\"] = \"\\u001B[30m\";\n AnsiColor[\"RED\"] = \"\\u001B[31m\";\n AnsiColor[\"GREEN\"] = \"\\u001B[32m\";\n AnsiColor[\"YELLOW\"] = \"\\u001B[33m\";\n AnsiColor[\"BLUE\"] = \"\\u001B[34m\";\n AnsiColor[\"MAGENTA\"] = \"\\u001B[35m\";\n AnsiColor[\"CYAN\"] = \"\\u001B[36m\";\n AnsiColor[\"WHITE\"] = \"\\u001B[37m\";\n AnsiColor[\"GRAY\"] = \"\\u001B[90m\";\n AnsiColor[\"BRIGHT_RED\"] = \"\\u001B[91m\";\n AnsiColor[\"BRIGHT_GREEN\"] = \"\\u001B[92m\";\n AnsiColor[\"BRIGHT_YELLOW\"] = \"\\u001B[93m\";\n AnsiColor[\"BRIGHT_BLUE\"] = \"\\u001B[94m\";\n AnsiColor[\"BRIGHT_MAGENTA\"] = \"\\u001B[95m\";\n AnsiColor[\"BRIGHT_CYAN\"] = \"\\u001B[96m\";\n AnsiColor[\"BRIGHT_WHITE\"] = \"\\u001B[97m\";\n})(AnsiColor || (AnsiColor = {}));\n/**\n * Get current timestamp in ISO format with microseconds and Z suffix.\n * @returns ISO timestamp string with microsecond precision and UTC timezone\n */\nexport function formatTimestamp() {\n const now = new Date();\n const isoString = now.toISOString();\n // JavaScript Date.toISOString() already provides millisecond precision\n // and Z suffix, which matches the Python implementation\n return isoString;\n}\n/**\n * Colorize text with the given ANSI color code.\n * @param text The text to colorize\n * @param color The ANSI color code to apply\n * @returns The colorized text with reset code appended\n */\nexport function color(text, color) {\n return `${color}${text}${AnsiColor.RESET}`;\n}\n/**\n * Internal function to check color support (for testing purposes)\n */\nfunction _supportsColor() {\n // Check if we're in a Node.js environment\n if (typeof process !== 'undefined' && process.env) {\n // Check for NO_COLOR environment variable (takes precedence)\n if (process.env.NO_COLOR) {\n return false;\n }\n // Check for FORCE_COLOR environment variable (takes precedence)\n if (process.env.FORCE_COLOR) {\n return true;\n }\n // Check for CI environments that support colors\n if (process.env.CI && ['true', '1'].includes(process.env.CI)) {\n return true;\n }\n // Check if stdout is a TTY (terminal)\n if (process.stdout && process.stdout.isTTY) {\n return true;\n }\n }\n // In browser environments, assume no color support by default\n return false;\n}\n/**\n * Check if the current environment supports ANSI colors.\n * @returns true if ANSI colors are supported, false otherwise\n */\nexport function supportsColor() {\n return _supportsColor();\n}\n/**\n * Conditionally colorize text based on environment support.\n * @param text The text to colorize\n * @param color The ANSI color code to apply\n * @returns The colorized text if colors are supported, plain text otherwise\n */\nexport function safeColor(text, color) {\n return supportsColor() ? `${color}${text}${AnsiColor.RESET}` : text;\n}\n//# sourceMappingURL=formatter.js.map","/**\n * Protocol and implementation for emitting metrics such as counters, gauges, and histograms.\n * Implementations should be thread-safe and non-blocking.\n */\n/**\n * A no-op implementation of MetricsEmitter that discards all metrics.\n * Useful for testing or when metrics are disabled.\n */\nexport class NoOpMetricsEmitter {\n counter(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n gauge(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n histogram(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n}\n/**\n * A console-based implementation of MetricsEmitter for debugging.\n * Logs all metrics to the console in a structured format.\n */\nexport class ConsoleMetricsEmitter {\n constructor(prefix = '[METRICS]') {\n this.prefix = prefix;\n }\n counter(name, value, tags) {\n this.logMetric('COUNTER', name, value, tags);\n }\n gauge(name, value, tags) {\n this.logMetric('GAUGE', name, value, tags);\n }\n histogram(name, value, tags) {\n this.logMetric('HISTOGRAM', name, value, tags);\n }\n logMetric(type, name, value, tags) {\n const timestamp = new Date().toISOString();\n const tagsStr = tags ? ` tags=${JSON.stringify(tags)}` : '';\n console.log(`${this.prefix} ${timestamp} ${type} ${name}=${value}${tagsStr}`);\n }\n}\n/**\n * A memory-based implementation of MetricsEmitter for testing.\n * Stores all emitted metrics in memory for inspection.\n */\nexport class MemoryMetricsEmitter {\n constructor() {\n this.metrics = [];\n }\n counter(name, value, tags) {\n this.recordMetric('counter', name, value, tags);\n }\n gauge(name, value, tags) {\n this.recordMetric('gauge', name, value, tags);\n }\n histogram(name, value, tags) {\n this.recordMetric('histogram', name, value, tags);\n }\n recordMetric(type, name, value, tags) {\n this.metrics.push({\n type,\n name,\n value,\n ...(tags && { tags }),\n timestamp: new Date(),\n });\n }\n /**\n * Get all recorded metrics.\n */\n getMetrics() {\n return [...this.metrics];\n }\n /**\n * Get metrics filtered by type.\n */\n getMetricsByType(type) {\n return this.metrics.filter((m) => m.type === type);\n }\n /**\n * Get metrics filtered by name.\n */\n getMetricsByName(name) {\n return this.metrics.filter((m) => m.name === name);\n }\n /**\n * Clear all recorded metrics.\n */\n clear() {\n this.metrics.length = 0;\n }\n /**\n * Get the count of recorded metrics.\n */\n count() {\n return this.metrics.length;\n }\n}\n//# sourceMappingURL=metrics-emitter.js.map","/**\n * General utility functions for JSON handling, string manipulation,\n * path normalization, base64 encoding, hashing, and more.\n */\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { color, AnsiColor, formatTimestamp } from './formatter.js';\nexport const ENV_VAR_SHOW_ENVELOPES = 'FAME_SHOW_ENVELOPES';\nexport function isEnvelopeLoggingEnabled() {\n return (typeof process !== 'undefined' &&\n process.env?.[ENV_VAR_SHOW_ENVELOPES] === 'true');\n}\nexport const showEnvelopes = isEnvelopeLoggingEnabled();\nexport function formatTimestampForConsole() {\n return color(formatTimestamp(), AnsiColor.GRAY);\n}\nexport function prettyModel(value) {\n try {\n return jsonDumps(value);\n }\n catch (error) {\n return String(error);\n }\n}\n/**\n * Default JSON encoder for non-standard types.\n */\nexport function defaultJsonEncoder(obj) {\n if (obj instanceof Date) {\n return obj.toISOString().replace(/\\.\\d{3}Z$/, 'Z'); // Remove milliseconds for Python compatibility\n }\n throw new TypeError(`Object of type ${typeof obj} is not JSON serializable`);\n}\n/**\n * Capitalize the first letter of a string.\n */\nexport function capitalizeFirstLetter(text) {\n if (!text) {\n return text;\n }\n return text[0].toUpperCase() + text.slice(1);\n}\n/**\n * Convert a value to pretty-printed JSON string.\n */\nexport function jsonDumps(value) {\n const seen = new WeakSet();\n const replacer = (_key, val) => {\n try {\n return defaultJsonEncoder(val);\n }\n catch {\n // ignore – fall through to default handling below\n }\n if (typeof val === 'bigint') {\n return val.toString();\n }\n if (typeof val === 'object' && val !== null) {\n if (seen.has(val)) {\n return '[Circular]';\n }\n seen.add(val);\n }\n return val;\n };\n return JSON.stringify(value, replacer, 2);\n}\n/**\n * Extract an ID from an object (either from object property or 'id' key).\n */\nexport function extractId(obj) {\n if (typeof obj === 'object' && obj !== null) {\n if ('id' in obj) {\n return obj.id;\n }\n }\n return null;\n}\n/**\n * Maybe await a value that could be a Promise or regular value.\n */\nexport async function maybeAwait(valueOrPromise) {\n if (valueOrPromise instanceof Promise) {\n return await valueOrPromise;\n }\n return valueOrPromise;\n}\n/**\n * Convert an object to JSON bytes.\n */\nexport function objectToBytes(obj) {\n const jsonString = JSON.stringify(obj);\n return new TextEncoder().encode(jsonString);\n}\n/**\n * Decode Fame data payload based on codec.\n */\nexport function decodeFameDataPayload(frame) {\n if (frame.codec === 'b64') {\n // Decode base64 to bytes\n const base64 = frame.payload;\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n return frame.payload;\n}\n/**\n * Normalize a path by removing leading slashes.\n */\nexport function normalizePath(path) {\n return path.replace(/^\\/+/, '');\n}\n/**\n * Cache for compiled path patterns.\n */\nconst pathPatternCache = new Map();\n/**\n * Translate a shell-style wildcard pattern into a compiled regex\n * and cache the result for speed.\n */\nexport function compiledPathPattern(pattern) {\n let compiled = pathPatternCache.get(pattern);\n if (!compiled) {\n // Convert shell wildcard to regex\n const regexPattern = pattern\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // Escape regex special chars\n .replace(/\\*/g, '.*') // * becomes .*\n .replace(/\\?/g, '.'); // ? becomes .\n compiled = new RegExp(`^${regexPattern}$`);\n // Limit cache size to prevent memory leaks\n if (pathPatternCache.size > 256) {\n pathPatternCache.clear();\n }\n pathPatternCache.set(pattern, compiled);\n }\n return compiled;\n}\n// Base62 characters: 0–9, a–z, A–Z\nconst BASE62_CHARS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst BASE62_BASE = BigInt(BASE62_CHARS.length);\n/**\n * Convert a number to base62 string.\n */\nfunction toBase62(num) {\n if (num === 0n) {\n return BASE62_CHARS[0];\n }\n const result = [];\n let value = num;\n while (value > 0n) {\n const remainder = value % BASE62_BASE;\n result.push(BASE62_CHARS[Number(remainder)]);\n value = value / BASE62_BASE;\n }\n return result.reverse().join('');\n}\n/**\n * Create a secure digest of a string.\n * @param s Input string\n * @param bits Number of bits to include in digest (default: 128)\n * @returns Base62-encoded digest\n */\nexport function secureDigest(s, bits = 128) {\n try {\n const digest = sha256(new TextEncoder().encode(s));\n const desiredBytes = Math.min(digest.length, Math.max(1, Math.ceil(bits / 8)));\n let value = 0n;\n for (let i = 0; i < desiredBytes; i += 1) {\n value = (value << 8n) | BigInt(digest[i]);\n }\n return toBase62(value);\n }\n catch {\n // Fallback for environments without TextEncoder support\n let hash = 0;\n for (let i = 0; i < s.length; i += 1) {\n const char = s.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return toBase62(BigInt(Math.abs(hash)));\n }\n}\n/**\n * URL-safe base64 encode (without padding).\n */\nexport function urlsafeBase64Encode(data) {\n // Convert Uint8Array to string for btoa\n let binaryString = '';\n for (let i = 0; i < data.length; i++) {\n binaryString += String.fromCharCode(data[i]);\n }\n return btoa(binaryString)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\nexport function urlsafeBase64Decode(value) {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, '=');\n if (typeof atob === 'function') {\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(padded, 'base64'));\n }\n throw new Error('Base64 decoding is not available in this environment');\n}\n/**\n * Convert CamelCase string to snake_case.\n */\nexport function camelToSnakeCase(name) {\n // Insert underscore before uppercase letters that follow lowercase letters or digits\n let result = name.replace(/([a-z0-9])([A-Z])/g, '$1_$2');\n // Insert underscore before uppercase letters that are followed by lowercase letters\n result = result.replace(/([A-Z])([A-Z][a-z])/g, '$1_$2');\n return result.toLowerCase();\n}\n/**\n * Create a shallow copy of an object's top-level properties and add\n * snake_case aliases for any camelCase keys while also adding camelCase\n * aliases for snake_case keys when missing. Existing keys always win.\n */\nexport function withLegacySnakeCaseKeys(descriptor) {\n const augmented = { ...descriptor };\n for (const [key, value] of Object.entries(descriptor)) {\n const snakeCaseKey = key.includes('_') ? key : camelToSnakeCase(key);\n const camelCaseKey = key.includes('_') ? snakeToCamelCase(key) : key;\n if (snakeCaseKey !== key && !(snakeCaseKey in augmented)) {\n augmented[snakeCaseKey] = value;\n }\n if (camelCaseKey !== key && !(camelCaseKey in augmented)) {\n augmented[camelCaseKey] = value;\n }\n }\n return augmented;\n}\n/**\n * Convert snake_case string to CamelCase.\n */\nexport function snakeToCamelCase(name) {\n return name.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n/**\n * Check if a value is a plain object (not an array, Date, etc.).\n */\nexport function isPlainObject(value) {\n return (typeof value === 'object' &&\n value !== null &&\n value.constructor === Object &&\n Object.prototype.toString.call(value) === '[object Object]');\n}\n/**\n * Deep merge two objects.\n */\nexport function deepMerge(target, source) {\n const result = { ...target };\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n const sourceValue = source[key];\n const targetValue = result[key];\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n result[key] = deepMerge(targetValue, sourceValue);\n }\n else {\n result[key] = sourceValue;\n }\n }\n }\n return result;\n}\n/**\n * Create a debounced version of a function.\n */\nexport function debounce(func, wait) {\n let timeout;\n return function (...args) {\n const later = () => {\n timeout = undefined;\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n/**\n * Create a throttled version of a function.\n */\nexport function throttle(func, wait) {\n let timeout;\n let previous = 0;\n return function (...args) {\n const now = Date.now();\n const remaining = wait - (now - previous);\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n previous = now;\n func.apply(this, args);\n }\n else if (!timeout) {\n timeout = setTimeout(() => {\n previous = Date.now();\n timeout = undefined;\n func.apply(this, args);\n }, remaining);\n }\n };\n}\n/**\n * Sleep for a specified number of milliseconds.\n */\nexport function sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n/**\n * Retry a function with exponential backoff.\n */\nexport async function retryWithBackoff(fn, maxRetries = 3, baseDelay = 1000, maxDelay = 10000) {\n let lastError;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n }\n catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt === maxRetries) {\n throw lastError;\n }\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);\n await sleep(delay);\n }\n }\n throw lastError;\n}\n//# sourceMappingURL=util.js.map","import { parseAddressComponents } from '@naylence/core';\nconst POOL_WILDCARD_PREFIX = '*.';\nfunction readEnvValue(aliases) {\n const processRef = globalThis?.process;\n const env = processRef?.env;\n if (!env) {\n return undefined;\n }\n for (const alias of aliases) {\n const value = env[alias];\n if (typeof value === 'string') {\n return value;\n }\n }\n return undefined;\n}\nconst DNS_HOSTNAME_PATTERN = /^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.?)+$/;\nconst DNS_LABEL_PATTERN = /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/;\nexport function getFameRoot() {\n return (readEnvValue(['FAME_ROOT', 'fame_root', 'fameRoot', 'FameRoot']) ??\n 'fame.fabric');\n}\nexport function isPoolLogical(logical) {\n return Boolean(logical?.startsWith(POOL_WILDCARD_PREFIX));\n}\nexport function matchesPoolLogical(logical, poolPattern) {\n if (!isPoolLogical(poolPattern)) {\n return false;\n }\n const suffix = poolPattern.slice(POOL_WILDCARD_PREFIX.length);\n if (!suffix) {\n return false;\n }\n return ((logical.endsWith(`.${suffix}`) && logical !== suffix) || logical === suffix);\n}\nexport function validateLogicalSegment(segment) {\n if (!segment) {\n return [false, 'Empty path segment'];\n }\n if (segment.length > 63) {\n return [false, `Path segment '${segment}' exceeds 63 characters`];\n }\n if (!/^[a-zA-Z0-9-]+$/.test(segment)) {\n return [\n false,\n `Path segment '${segment}' must contain only alphanumeric characters and hyphens`,\n ];\n }\n if (segment.startsWith('-') || segment.endsWith('-')) {\n return [false, `Path segment '${segment}' cannot start or end with hyphen`];\n }\n if (segment.includes('--')) {\n return [\n false,\n `Path segment '${segment}' cannot contain consecutive hyphens`,\n ];\n }\n return [true, null];\n}\nexport function validateLogical(logical) {\n if (!logical) {\n return [false, 'Empty logical'];\n }\n if (!logical.startsWith('/')) {\n return [false, `Logical '${logical}' must start with '/'`];\n }\n const segments = logical.split('/').filter(Boolean);\n if (segments.length === 0) {\n return logical === '/'\n ? [true, null]\n : [false, 'Logical must contain at least one non-empty segment'];\n }\n for (const segment of segments) {\n const [valid, error] = validateLogicalSegment(segment);\n if (!valid) {\n return [false, `Invalid logical '${logical}': ${error}`];\n }\n }\n const hostname = logicalToHostname(logical);\n if (hostname.length > 253) {\n return [\n false,\n `Logical '${logical}' converts to hostname exceeding 253 characters`,\n ];\n }\n return [true, null];\n}\nexport function logicalToHostname(logical) {\n if (!logical) {\n throw new Error('Empty logical');\n }\n if (!logical.startsWith('/')) {\n throw new Error(`Logical '${logical}' cannot start without '/'`);\n }\n const segments = logical.split('/').filter(Boolean);\n if (segments.length === 0) {\n if (logical === '/') {\n return getFameRoot();\n }\n throw new Error('Logical must contain at least one non-empty segment');\n }\n return segments.reverse().join('.');\n}\nexport function hostnameToLogical(hostname) {\n if (!hostname) {\n throw new Error('Empty hostname');\n }\n if (hostname === getFameRoot()) {\n return '/';\n }\n const segments = hostname.split('.');\n if (segments.some((segment) => !segment)) {\n throw new Error(`Invalid hostname '${hostname}' contains empty segments`);\n }\n return `/${segments.reverse().join('/')}`;\n}\nexport function logicalsToHostnames(logicals) {\n return logicals.map(logicalToHostname);\n}\nexport function hostnamesToLogicals(hostnames) {\n return hostnames.map(hostnameToLogical);\n}\nexport function validateHostLogical(hostLogical) {\n if (!hostLogical) {\n return [false, 'Empty host logical'];\n }\n if (hostLogical.includes('*')) {\n if (!hostLogical.startsWith('*.')) {\n return [\n false,\n `Host logical '${hostLogical}' contains wildcard not in leftmost position`,\n ];\n }\n const baseDomain = hostLogical.slice(2);\n if (!baseDomain) {\n return [\n false,\n `Host logical '${hostLogical}' has wildcard but no base domain`,\n ];\n }\n if (!DNS_HOSTNAME_PATTERN.test(baseDomain)) {\n return [\n false,\n `Host logical '${hostLogical}' base domain '${baseDomain}' is not a valid DNS hostname`,\n ];\n }\n if (hostLogical.length > 253) {\n return [false, `Host logical '${hostLogical}' exceeds 253 characters`];\n }\n const labels = baseDomain.split('.');\n for (const label of labels) {\n if (!DNS_LABEL_PATTERN.test(label)) {\n return [\n false,\n `Host logical '${hostLogical}' contains invalid label '${label}' in base domain`,\n ];\n }\n }\n return [true, null];\n }\n if (!DNS_HOSTNAME_PATTERN.test(hostLogical)) {\n return [false, `Host logical '${hostLogical}' is not a valid DNS hostname`];\n }\n if (hostLogical.length > 253) {\n return [false, `Host logical '${hostLogical}' exceeds 253 characters`];\n }\n const labels = hostLogical.split('.');\n for (const label of labels) {\n if (!DNS_LABEL_PATTERN.test(label)) {\n return [\n false,\n `Host logical '${hostLogical}' contains invalid label '${label}'`,\n ];\n }\n }\n return [true, null];\n}\nexport function validateHostLogicals(hostLogicals) {\n if (!hostLogicals || hostLogicals.length === 0) {\n return [true, null];\n }\n for (const hostLogical of hostLogicals) {\n const [valid, error] = validateHostLogical(hostLogical);\n if (!valid) {\n return [false, error];\n }\n }\n return [true, null];\n}\nexport function createLogicalUri(logical, useHostnameNotation = false) {\n if (useHostnameNotation) {\n const hostname = logicalToHostname(logical);\n return `naylence://${hostname}/`;\n }\n return `naylence://${logical}`;\n}\nexport function createHostLogicalUri(hostLogical) {\n return `naylence://${hostLogical}/`;\n}\nexport function convertWildcardLogicalToDnsConstraint(logicalPattern) {\n return logicalPattern.startsWith('*.')\n ? logicalPattern.slice(1)\n : logicalPattern;\n}\nexport function logicalPatternsToDnsConstraints(logicalPatterns) {\n return logicalPatterns.map(convertWildcardLogicalToDnsConstraint);\n}\nexport function matchesPoolAddress(address, poolAddress) {\n try {\n const [addrParticipant, addrHost, addrPath] = parseAddressComponents(address);\n const [poolParticipant, poolHost, poolPath] = parseAddressComponents(poolAddress);\n if (addrParticipant !== poolParticipant) {\n return false;\n }\n if (addrHost && poolHost) {\n if (!matchesPoolLogical(addrHost, poolHost)) {\n return false;\n }\n if (addrPath && poolPath) {\n return addrPath === poolPath;\n }\n return addrPath === poolPath;\n }\n if (!addrHost && !poolHost && addrPath && poolPath) {\n return addrPath === poolPath;\n }\n return false;\n }\n catch (error) {\n if (readEnvValue(['NODE_ENV', 'node_env', 'nodeEnv', 'NodeEnv']) !==\n 'production') {\n // eslint-disable-next-line no-console\n console.debug('matchesPoolAddress failed', error);\n }\n return false;\n }\n}\nexport function extractPoolBase(poolPattern) {\n if (!isPoolLogical(poolPattern)) {\n return null;\n }\n return poolPattern.slice(POOL_WILDCARD_PREFIX.length);\n}\nexport function extractPoolAddressBase(poolAddress) {\n try {\n const [participant, host, path] = parseAddressComponents(poolAddress);\n if (host && isPoolLogical(host)) {\n const base = extractPoolBase(host);\n if (!base) {\n return null;\n }\n return path ? `${participant}@${base}${path}` : `${participant}@${base}`;\n }\n return null;\n }\n catch {\n return null;\n }\n}\nexport function isPoolAddress(address) {\n try {\n const [, host] = parseAddressComponents(address);\n return Boolean(host && isPoolLogical(host));\n }\n catch {\n return false;\n }\n}\n//# sourceMappingURL=logicals.js.map","export const DEFAULT_NODE_ATTACH_TTL_SEC = 3600;\nexport const MAX_NODE_ATTACH_TTL_SEC = 86400;\nexport const DEFAULT_KEY_CORRELATION_TTL_SEC = 30;\nexport const DEFAULT_JWKS_CACHE_TTL_SEC = 300;\nexport const DEFAULT_JWT_TOKEN_TTL_SEC = 3600;\nexport const DEFAULT_OAUTH2_TTL_SEC = 3600;\nexport const MAX_OAUTH2_TTL_SEC = 86400;\nexport const DEFAULT_REVERSE_AUTH_TTL_SEC = 86400;\nexport const DEFAULT_ADMISSION_TTL_SEC = 3600;\nexport const DEFAULT_DIRECT_ADMISSION_TTL_SEC = 86400;\nexport const DEFAULT_TRANSPORT_TTL_SEC = 3600;\nexport const DEFAULT_WELCOME_TTL_SEC = 3600;\nexport const DEFAULT_CRYPTO_PROVIDER_TTL_SEC = 3600;\nexport const TTL_NEVER_EXPIRES = 0;\nexport const TTL_IMMEDIATE_EXPIRY = -1;\nexport const TEST_SHORT_TTL_SEC = 2;\nexport const TEST_MEDIUM_TTL_SEC = 10;\nexport const TEST_LONG_TTL_SEC = 600;\n//# sourceMappingURL=ttl-constants.js.map","import { MAX_OAUTH2_TTL_SEC, TTL_NEVER_EXPIRES, } from '../constants/ttl-constants.js';\nexport class TtlValidationError extends Error {\n}\nexport function validateTtlSec(ttlSec, { min, max, allowNeverExpires, context, }) {\n if (ttlSec == null) {\n return ttlSec;\n }\n if (ttlSec === TTL_NEVER_EXPIRES) {\n if (allowNeverExpires) {\n return ttlSec;\n }\n throw new TtlValidationError(`${context} cannot be set to never expire (0)`);\n }\n if (ttlSec < 0) {\n throw new TtlValidationError(`${context} cannot be negative: ${ttlSec}`);\n }\n if (ttlSec < min) {\n throw new TtlValidationError(`${context} is too small: ${ttlSec} seconds (minimum: ${min} seconds)`);\n }\n if (max !== undefined && ttlSec > max) {\n throw new TtlValidationError(`${context} is too large: ${ttlSec} seconds (maximum: ${max} seconds)`);\n }\n return ttlSec;\n}\nexport function validateJwtTokenTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 60,\n max: MAX_OAUTH2_TTL_SEC,\n allowNeverExpires: false,\n context: 'JWT token TTL',\n });\n}\nexport function validateOAuth2TtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 60,\n max: MAX_OAUTH2_TTL_SEC,\n allowNeverExpires: false,\n context: 'OAuth2 authorization TTL',\n });\n}\nexport function validateCacheTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 1,\n max: 3600,\n allowNeverExpires: true,\n context: 'Cache TTL',\n });\n}\nexport function validateKeyCorrelationTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 0.1,\n max: 300,\n allowNeverExpires: false,\n context: 'Key correlation TTL',\n });\n}\n//# sourceMappingURL=ttl-validation.js.map","/**\n * flow_controller.ts - credit window management with cooperative back-pressure.\n *\n * This version restores the *original* test-driven semantics while still\n * preventing notifier task spam:\n *\n * * **addCredits**\n * * accepts *any* integer `delta` (positive or negative) and clamps the\n * resulting balance between 0 and `initialWindow`.\n * * When called outside an event-loop (e.g. synchronous unit-tests), the\n * credit balance is updated but waiter notification is skipped instead of\n * raising *RuntimeError*.\n * * **consume**\n * * clamps at zero rather than raising on under-flow, matching historical\n * behaviour.\n * * **_wakeWaiters**\n * * debounces the `notifyAll()` coroutine as before *but* quietly returns\n * when no running loop is active.\n *\n * The race-safety we introduced earlier is preserved - we still use a per-flow\n * condition/promise and ensure at most one notifier coroutine exists for a\n * flow at any time.\n */\nimport { FlowFlags } from '@naylence/core';\n/**\n * Simple condition variable implementation for TypeScript/Node.js\n * Similar to Python's asyncio.Condition\n */\nclass Condition {\n constructor() {\n this.waiters = [];\n }\n /**\n * Wait for a notification\n */\n async wait() {\n return new Promise((resolve, reject) => {\n this.waiters.push({ resolve, reject });\n });\n }\n /**\n * Notify all waiting coroutines\n */\n notifyAll() {\n const waiters = this.waiters.splice(0);\n for (const waiter of waiters) {\n waiter.resolve();\n }\n }\n}\n/**\n * Sliding-window flow/credit accounting for *one* local endpoint.\n *\n * A *flow* is identified by a caller-chosen string `flowId`. Each flow\n * starts with `initialWindow` credits. Sending an envelope *consumes*\n * one credit; the peer replenishes credits via an \"ACK/CreditUpdate\"\n * envelope. When credits reach 0 local senders block in\n * `acquire` until more arrive.\n *\n * The controller is **event-loop safe** - multiple coroutines can call\n * `addCredits`, `consume`, and `acquire` without additional locks - but it is\n * **not** thread-safe.\n */\nexport class FlowController {\n constructor(initialWindow, lowWatermarkRatio = 0.25) {\n // flowId → remaining credit count\n this.credits = new Map();\n // flowId → per-flow Condition (created lazily)\n this.conditions = new Map();\n // flowId → outbound window counter\n this.windowIds = new Map();\n // flows that must emit RESET|SYN on next envelope\n this.resetRequested = new Set();\n // track active notifier tasks to prevent spam\n this.activeNotifiers = new Map();\n if (initialWindow <= 0) {\n throw new Error('initialWindow must be > 0');\n }\n this.initialWindow = initialWindow;\n this.lowWatermark = Math.floor(initialWindow * lowWatermarkRatio);\n }\n // ---------------------------------------------------------------------\n // helpers\n // ---------------------------------------------------------------------\n /**\n * Lazily create bookkeeping structures for *flowId*.\n */\n ensureFlow(flowId) {\n if (!this.credits.has(flowId)) {\n this.credits.set(flowId, this.initialWindow);\n }\n if (!this.conditions.has(flowId)) {\n this.conditions.set(flowId, new Condition());\n }\n }\n /**\n * Wake every coroutine blocked in `acquire` for *flowId*.\n *\n * We debounce - at most **one** notifier coroutine per flow can be alive.\n * If `FlowController` is used in synchronous code with no running loop\n * we silently skip the wake-up because nothing could be awaiting anyway.\n */\n wakeWaiters(flowId) {\n const condition = this.conditions.get(flowId);\n if (!condition) {\n return;\n }\n // Check if there's already an active notifier for this flow\n const existingNotifier = this.activeNotifiers.get(flowId);\n if (existingNotifier) {\n return; // Already scheduled\n }\n // Create a notifier promise\n const notifierPromise = (async () => {\n try {\n // Use setImmediate to defer to next tick (similar to asyncio scheduling)\n await new Promise((resolve) => setImmediate(resolve));\n condition.notifyAll();\n }\n finally {\n // Always clear the reference, even on error\n this.activeNotifiers.delete(flowId);\n }\n })();\n this.activeNotifiers.set(flowId, notifierPromise);\n }\n // ------------------------------------------------------------------\n // public API\n // ------------------------------------------------------------------\n /**\n * Return the current credit balance for *flowId*.\n */\n getCredits(flowId) {\n this.ensureFlow(flowId);\n return this.credits.get(flowId);\n }\n /**\n * Add `delta` credits (positive *or* negative) to *flowId*.\n *\n * The balance is bounded between 0 and `initialWindow`. Returns the new balance.\n * If the balance transitions from `<=0` to `>0` we wake blocked\n * acquirers.\n */\n addCredits(flowId, delta) {\n this.ensureFlow(flowId);\n const prev = this.credits.get(flowId);\n // clamp into [0, initialWindow]\n const newBalance = Math.max(0, Math.min(this.initialWindow, prev + delta));\n this.credits.set(flowId, newBalance);\n // wake waiters only if we crossed the zero boundary\n if (prev <= 0 && newBalance > 0) {\n this.wakeWaiters(flowId);\n }\n return newBalance;\n }\n /**\n * Block until at least one credit is available, then consume it.\n */\n async acquire(flowId) {\n this.ensureFlow(flowId);\n const condition = this.conditions.get(flowId);\n while (this.credits.get(flowId) <= 0) {\n await condition.wait();\n }\n const current = this.credits.get(flowId);\n this.credits.set(flowId, current - 1);\n }\n /**\n * Consume *credits* immediately (non-blocking).\n *\n * If *credits* exceeds the current balance we clamp to **zero** (legacy\n * behaviour retained for existing tests).\n * Returns the remaining balance.\n */\n consume(flowId, credits = 1) {\n if (credits < 0) {\n throw new Error('credits must be positive');\n }\n if (credits === 0) {\n return this.credits.get(flowId) ?? this.initialWindow;\n }\n this.ensureFlow(flowId);\n const current = this.credits.get(flowId);\n const remaining = Math.max(current - credits, 0);\n this.credits.set(flowId, remaining);\n return remaining;\n }\n /**\n * Return `true` if balance is at or below low-watermark.\n */\n needsRefill(flowId) {\n return this.getCredits(flowId) <= this.lowWatermark;\n }\n // ---------------------------------------------------------------\n // flow-state (RESET / sequence) helpers\n // ---------------------------------------------------------------\n /**\n * Prepare a *RESET|SYN* flag for the next outbound envelope.\n */\n resetFlow(flowId) {\n this.ensureFlow(flowId);\n this.resetRequested.add(flowId);\n this.windowIds.delete(flowId);\n this.credits.set(flowId, this.initialWindow);\n this.wakeWaiters(flowId);\n }\n /**\n * Return `[windowId, flags]` for the next outbound envelope.\n */\n nextWindow(flowId) {\n // RESET requested - emit RESET|SYN (window 0)\n if (this.resetRequested.has(flowId)) {\n this.resetRequested.delete(flowId);\n this.windowIds.set(flowId, 0);\n return [0, FlowFlags.RESET | FlowFlags.SYN];\n }\n // brand-new flow - start at window 0, emit SYN\n if (!this.windowIds.has(flowId)) {\n this.windowIds.set(flowId, 0);\n return [0, FlowFlags.SYN];\n }\n // subsequent envelope - increment window id\n const currentId = this.windowIds.get(flowId);\n const nextId = currentId + 1;\n this.windowIds.set(flowId, nextId);\n return [nextId, FlowFlags.NONE];\n }\n}\n//# sourceMappingURL=flow-controller.js.map","/**\n * in-memory-channel.ts - In-memory ReadWriteChannel implementation.\n *\n * Maintains an in-memory queue for async read/write operations with optional\n * size limits and operation timeouts.\n */\nimport { TaskTimeoutError } from '../../util/task-types.js';\nimport { getLogger } from '../../util/logging.js';\n/**\n * In-memory implementation of ReadWriteChannel using a Promise-based queue.\n * This is the TypeScript equivalent of Python's asyncio.Queue-based implementation.\n */\nexport class InMemoryReadWriteChannel {\n constructor(config = {}) {\n this._queue = [];\n this._waitingReaders = [];\n this._closed = false;\n this.logger = getLogger('naylence.fame.channel.in_memory.in_memory_channel');\n const legacyMaxSize = config.maxsize;\n const configuredMaxSize = typeof config.maxSize === 'number' ? config.maxSize : legacyMaxSize;\n this._maxSize = configuredMaxSize || 0; // 0 = unlimited\n this._defaultTimeoutMs = config.defaultTimeoutMs || 0; // 0 = no timeout\n }\n /**\n * Receive a message from the channel.\n * Returns a promise that resolves when a message is available.\n * This implements the ReadChannel.receive method.\n */\n async receive(timeout) {\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // If there's a message in the queue, return it immediately\n if (this._queue.length > 0) {\n const message = this._queue.shift();\n this.logger.debug('receive_returning_buffered_message', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n });\n return message;\n }\n // No message available, wait for one\n return new Promise((resolve, reject) => {\n const waiter = { resolve, reject };\n // Set up timeout if specified\n const timeoutMs = timeout ?? this._defaultTimeoutMs;\n if (timeoutMs > 0) {\n waiter.timeoutId = setTimeout(() => {\n // Remove this waiter from the list\n const index = this._waitingReaders.indexOf(waiter);\n if (index !== -1) {\n this._waitingReaders.splice(index, 1);\n }\n reject(new TaskTimeoutError('Channel receive operation', timeoutMs));\n }, timeoutMs);\n }\n this._waitingReaders.push(waiter);\n // this.logger.debug(\"receive_waiting_for_message\", {\n // queue_length: this._queue.length,\n // waiting_readers: this._waitingReaders.length,\n // timeout_ms: timeoutMs,\n // });\n });\n }\n /**\n * Acknowledge a received message by its ID.\n * This implements the ReadChannel.acknowledge method.\n * For in-memory channels, this is typically a no-op.\n */\n async acknowledge(_messageId) {\n // In-memory channels don't need acknowledgment tracking\n // This is a no-op but satisfies the interface requirement\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // No-op - acknowledgment is not meaningful for in-memory channels\n }\n /**\n * Send a message to the channel.\n * If there are waiting readers, delivers directly to the first one.\n * Otherwise, adds to the queue (if there's space).\n * This implements the WriteChannel.send method.\n */\n async send(message) {\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // If there are waiting readers, deliver directly to the first one\n if (this._waitingReaders.length > 0) {\n const waiter = this._waitingReaders.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n this.logger.debug('send_delivering_to_waiter', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n });\n waiter.resolve(message);\n return;\n }\n // No waiting readers, add to queue if there's space\n if (this._maxSize === 0 || this._queue.length < this._maxSize) {\n this._queue.push(message);\n this.logger.debug('send_enqueued_message', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n max_size: this._maxSize,\n });\n return;\n }\n // Queue is full - in Python implementation, this would block\n // For simplicity in this TypeScript version, we'll reject immediately\n // In a full implementation, we'd want to wait for space to become available\n this.logger.error('send_queue_full', {\n queue_length: this._queue.length,\n max_size: this._maxSize,\n });\n throw new Error(`Channel queue is full (maxSize: ${this._maxSize})`);\n }\n /**\n * Close the channel. All pending reads will be rejected.\n * Future read/write operations will throw an error.\n */\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n // Reject all waiting readers\n const error = new Error('Channel is closed');\n for (const waiter of this._waitingReaders) {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n waiter.reject(error);\n }\n this.logger.debug('channel_closed', {\n discarded_waiters: this._waitingReaders.length,\n discarded_messages: this._queue.length,\n });\n this._waitingReaders.length = 0;\n // Clear the queue\n this._queue.length = 0;\n }\n /**\n * Check if the channel is closed\n */\n get isClosed() {\n return this._closed;\n }\n /**\n * Get the current queue size\n */\n get queueSize() {\n return this._queue.length;\n }\n /**\n * Get the number of waiting readers\n */\n get waitingReaders() {\n return this._waitingReaders.length;\n }\n /**\n * Check if the queue is full\n */\n get isFull() {\n return this._maxSize > 0 && this._queue.length >= this._maxSize;\n }\n /**\n * Check if the queue is empty\n */\n get isEmpty() {\n return this._queue.length === 0;\n }\n}\n//# sourceMappingURL=in-memory-channel.js.map","/**\n * in-memory-binding.ts - In-memory binding implementation\n *\n * TypeScript port of Python's InMemoryBinding that connects a FameAddress\n * to an InMemoryReadWriteChannel, managing the binding lifecycle.\n */\nimport { FameAddress } from '@naylence/core';\nimport { InMemoryReadWriteChannel, } from './in-memory-channel.js';\n/**\n * Represents a binding between a FameAddress and an InMemoryReadWriteChannel.\n * This is the TypeScript equivalent of Python's InMemoryBinding.\n */\nexport class InMemoryBinding {\n constructor(address, config = {}) {\n // Convert string address to FameAddress if needed\n this.address =\n typeof address === 'string' ? new FameAddress(address) : address;\n // Use provided channel or create a new one\n this.channel = config.channel || new InMemoryReadWriteChannel(config);\n }\n /**\n * Create a binding from an address string\n */\n static fromAddress(address, config = {}) {\n return new InMemoryBinding(address, config);\n }\n /**\n * Create a binding with a custom channel\n */\n static withChannel(address, channel) {\n return new InMemoryBinding(address, { channel });\n }\n /**\n * Close the binding and its associated channel\n */\n async close() {\n await this.channel.close();\n }\n /**\n * Check if the binding is closed\n */\n get isClosed() {\n return this.channel.isClosed;\n }\n /**\n * Get a string representation of the binding\n */\n toString() {\n return `InMemoryBinding(address=${this.address.toString()}, channel=${this.channel})`;\n }\n /**\n * Convert the binding to a plain object for serialization\n */\n toObject() {\n return {\n address: this.address.toString(),\n channelState: {\n queueSize: this.channel.queueSize,\n isClosed: this.channel.isClosed,\n },\n };\n }\n /**\n * Send a message through the binding's channel\n */\n async send(message) {\n return this.channel.send(message);\n }\n /**\n * Receive a message from the binding's channel\n */\n async receive(timeout) {\n return this.channel.receive(timeout);\n }\n /**\n * Acknowledge a message through the binding's channel\n */\n async acknowledge(messageId) {\n return this.channel.acknowledge(messageId);\n }\n}\n//# sourceMappingURL=in-memory-binding.js.map","/**\n * in-memory-fanout-broker.ts - In-memory fanout broker implementation\n *\n * TypeScript port of Python's InMemoryFanoutBroker that extends TaskSpawner\n * to manage multiple WriteChannel subscribers with concurrent message distribution.\n */\nimport { DEFAULT_POLLING_TIMEOUT_MS, extractEnvelopeAndContext, createChannelMessage, } from '@naylence/core';\nimport { TaskSpawner } from '../../util/task-spawner.js';\nimport { withEnvelopeContextAsync } from '../../util/envelope-context.js';\nimport { getLogger } from '../../util/logging.js';\nconst logger = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');\n// Sentinel object for shutdown signaling\nconst SENTINEL = Symbol('fanout-broker-sentinel');\nfunction isCloseable(obj) {\n return obj && typeof obj.close === 'function';\n}\n/**\n * In-memory fanout broker that receives messages from a sink channel and\n * distributes them to multiple subscriber channels.\n *\n * This is the TypeScript equivalent of Python's InMemoryFanoutBroker.\n */\nexport class InMemoryFanoutBroker extends TaskSpawner {\n constructor(sink, config = {}) {\n super();\n this._subscribers = new Set();\n this._running = false;\n this._sink = sink;\n const legacyPollTimeoutMs = config\n .poll_timeout_ms;\n const configuredPollTimeoutMs = typeof config.pollTimeoutMs === 'number'\n ? config.pollTimeoutMs\n : legacyPollTimeoutMs;\n this._pollTimeoutMs =\n typeof configuredPollTimeoutMs === 'number'\n ? configuredPollTimeoutMs\n : DEFAULT_POLLING_TIMEOUT_MS;\n this._pollTimeoutSec = this._pollTimeoutMs / 1000.0;\n }\n /**\n * Start the broker's listen loop\n */\n async start() {\n if (this._running) {\n return;\n }\n this._running = true;\n this.spawn(async () => await this._listenLoop(), {\n name: 'fanout-broker-listen-loop',\n });\n }\n /**\n * Stop the broker and clean up resources\n */\n async stop() {\n // 1) Prevent new iterations\n this._running = false;\n // Send sentinel to wake up any blocked receive\n try {\n await this._sink.send(SENTINEL);\n }\n catch (error) {\n // Ignore errors when sending sentinel (sink might be closed)\n logger.debug('error_sending_sentinel', {\n error: error.message,\n });\n }\n // 2) Shutdown spawned tasks with grace period\n await this.shutdownTasks({ gracePeriod: 3000 });\n // 3) Clean up subscribers\n const subscribersToClose = Array.from(this._subscribers);\n for (const sub of subscribersToClose) {\n if (isCloseable(sub)) {\n try {\n await sub.close();\n }\n catch (error) {\n logger.error('error_closing_subscriber', {\n subscriber: sub.toString(),\n error: error.message,\n });\n }\n }\n }\n this._subscribers.clear();\n }\n /**\n * Main listen loop that receives messages and distributes them to subscribers\n */\n async _listenLoop() {\n while (this._running) {\n try {\n // Non-blocking receive with timeout\n let msg;\n try {\n // Convert timeout from seconds to milliseconds for TypeScript timeout\n const timeoutMs = this._pollTimeoutSec * 1000;\n msg = await this._sink.receive(timeoutMs);\n }\n catch (error) {\n // Timeout or other receive error - continue loop\n continue;\n }\n if (msg === null || msg === undefined) {\n continue;\n }\n // Check for sentinel (shutdown signal)\n if (msg === SENTINEL) {\n this._running = false;\n break;\n }\n // Extract envelope from channel message or use direct envelope\n let envelope, context;\n try {\n [envelope, context] = extractEnvelopeAndContext(msg);\n }\n catch (error) {\n logger.debug('failed_to_extract_envelope', {\n error: error.message,\n });\n continue;\n }\n if (!envelope) {\n continue;\n }\n // Deliver to each subscriber individually\n // Send the original message (with context preserved) if it's a FameChannelMessage,\n // otherwise send the envelope directly\n const messageToSend = context !== undefined\n ? createChannelMessage(envelope, context)\n : envelope;\n const badSubs = [];\n const subscribersSnapshot = Array.from(this._subscribers);\n for (const sub of subscribersSnapshot) {\n await withEnvelopeContextAsync(envelope, async () => {\n try {\n await sub.send(messageToSend);\n }\n catch (error) {\n logger.error('error_sending_to_subscriber', {\n subscriber: sub.toString(),\n error: error.message,\n action: 'unsubscribing',\n });\n badSubs.push(sub);\n }\n });\n }\n // Remove any subscribers that failed\n for (const sub of badSubs) {\n this._subscribers.delete(sub);\n }\n }\n catch (error) {\n // Critical broker-level error: log and back off, but keep the loop running\n logger.critical('receive_loop_failed_unexpectedly', {\n error: error.message,\n stack: error.stack,\n });\n // Back off for 500ms before retrying\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n }\n }\n /**\n * Add a subscriber channel\n */\n addSubscriber(channel) {\n this._subscribers.add(channel);\n }\n /**\n * Remove a subscriber channel\n */\n removeSubscriber(channel) {\n this._subscribers.delete(channel);\n }\n /**\n * Get the current number of subscribers\n */\n get subscriberCount() {\n return this._subscribers.size;\n }\n /**\n * Check if the broker is running\n */\n get isRunning() {\n return this._running;\n }\n /**\n * Get a copy of the current subscribers\n */\n get subscribers() {\n return new Set(this._subscribers);\n }\n /** Poll timeout applied to the broker's sink channel in milliseconds */\n get pollTimeoutMs() {\n return this._pollTimeoutMs;\n }\n}\n//# sourceMappingURL=in-memory-fanout-broker.js.map","class InMemoryKeyValueStore {\n constructor() {\n this.store = new Map();\n }\n async set(key, value) {\n this.store.set(key, value);\n }\n async update(key, value) {\n if (!this.store.has(key)) {\n throw new Error(`Key '${key}' not found for update.`);\n }\n this.store.set(key, value);\n }\n async get(key) {\n return this.store.get(key);\n }\n async delete(key) {\n this.store.delete(key);\n }\n async list() {\n const result = {};\n for (const [key, value] of this.store.entries()) {\n result[key] = value;\n }\n return result;\n }\n}\nexport class InMemoryStorageProvider {\n constructor() {\n this.stores = new Map();\n }\n async getKeyValueStore(modelCtor, namespace) {\n let namespaceStores = this.stores.get(namespace);\n if (!namespaceStores) {\n namespaceStores = new Map();\n this.stores.set(namespace, namespaceStores);\n }\n const existing = namespaceStores.get(modelCtor);\n if (existing) {\n return existing;\n }\n const store = new InMemoryKeyValueStore();\n namespaceStores.set(modelCtor, store);\n return store;\n }\n}\nexport { InMemoryKeyValueStore };\n//# sourceMappingURL=in-memory-storage.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, registerFactory, } from '@naylence/factory';\nexport const STORAGE_PROVIDER_FACTORY_BASE_TYPE = 'StorageProviderFactory';\nexport class StorageProviderFactory extends AbstractResourceFactory {\n static async createStorageProvider(config, options = {}) {\n const instance = config\n ? await createResource(STORAGE_PROVIDER_FACTORY_BASE_TYPE, config, options)\n : await createDefaultResource(STORAGE_PROVIDER_FACTORY_BASE_TYPE, null, options);\n if (!instance) {\n throw new Error('Failed to create storage provider from configuration');\n }\n return instance;\n }\n}\nexport function registerStorageProviderFactory(type, factory) {\n registerFactory(STORAGE_PROVIDER_FACTORY_BASE_TYPE, type, factory);\n}\n//# sourceMappingURL=storage-provider-factory.js.map","function isModuleNotFoundError(error) {\n if (!(error instanceof Error)) {\n return false;\n }\n const message = error.message || '';\n if (message.includes('Cannot find module') ||\n message.includes('ERR_MODULE_NOT_FOUND') ||\n message.includes('MODULE_NOT_FOUND')) {\n return true;\n }\n const code = error.code;\n if (typeof code === 'string') {\n return code === 'MODULE_NOT_FOUND' || code === 'ERR_MODULE_NOT_FOUND';\n }\n return false;\n}\n/**\n * Wraps a dynamic import loader and enriches \"module not found\" failures with an actionable error message.\n */\nexport async function safeImport(loader, dependencyNameOrOptions, maybeOptions) {\n const options = typeof dependencyNameOrOptions === 'string'\n ? { dependencyName: dependencyNameOrOptions, ...(maybeOptions ?? {}) }\n : dependencyNameOrOptions;\n const dependencyName = options.dependencyName;\n try {\n return await loader();\n }\n catch (error) {\n if (isModuleNotFoundError(error)) {\n const message = options.helpMessage ??\n `Missing optional dependency \"${dependencyName}\". Install it to enable this feature.`;\n const enrichedError = new Error(message);\n try {\n enrichedError.cause = error;\n }\n catch {\n // Ignore environments that do not support attaching a cause.\n }\n throw enrichedError;\n }\n throw error;\n }\n}\n//# sourceMappingURL=lazy-import.js.map","const DEFAULT_DB_NAME = 'naylence-secrets';\nconst DEFAULT_STORE_NAME = 'auto-master-key';\nconst DEFAULT_KEY_ID = 'master';\nconst MASTER_KEY_LENGTH = 32;\nfunction isArrayBufferView(value) {\n return Boolean(value) && ArrayBuffer.isView(value);\n}\nfunction toUint8Array(value) {\n if (!value) {\n return null;\n }\n if (value instanceof Uint8Array) {\n return new Uint8Array(value);\n }\n if (value instanceof ArrayBuffer) {\n return new Uint8Array(value);\n }\n if (isArrayBufferView(value)) {\n const view = value;\n return new Uint8Array(view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength));\n }\n return null;\n}\nasync function openDatabase(factory, dbName, storeName) {\n return new Promise((resolve, reject) => {\n const request = factory.open(dbName, 1);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to open IndexedDB'));\n };\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n });\n}\nasync function readPersistedKey(db, storeName, keyId) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to read master key from IndexedDB'));\n };\n request.onsuccess = () => {\n resolve(toUint8Array(request.result));\n };\n });\n}\nasync function persistKey(db, storeName, keyId, key) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const buffer = key.buffer.slice(key.byteOffset, key.byteOffset + key.byteLength);\n const request = store.put(buffer, keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to persist master key to IndexedDB'));\n };\n tx.oncomplete = () => resolve();\n tx.onerror = () => {\n reject(tx.error ?? new Error('Failed to persist master key to IndexedDB'));\n };\n });\n}\nfunction getRandomBytes(length) {\n if (!globalThis.crypto?.getRandomValues) {\n throw new Error('crypto.getRandomValues is not available in this environment');\n }\n const buffer = new Uint8Array(length);\n globalThis.crypto.getRandomValues(buffer);\n return buffer;\n}\nexport class BrowserAutoKeyCredentialProvider {\n constructor(options = {}) {\n this.cachedKey = null;\n this.inflight = null;\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName ?? DEFAULT_STORE_NAME;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n if (options.idbFactory) {\n this.idbFactory = options.idbFactory;\n }\n else if (typeof indexedDB !== 'undefined') {\n this.idbFactory = indexedDB;\n }\n else {\n throw new Error('IndexedDB is not available in this environment');\n }\n }\n async get() {\n if (this.cachedKey) {\n return this.cachedKey;\n }\n if (this.inflight) {\n return this.inflight;\n }\n this.inflight = this.loadOrCreateKey();\n try {\n const key = await this.inflight;\n this.cachedKey = key;\n return key;\n }\n finally {\n this.inflight = null;\n }\n }\n async loadOrCreateKey() {\n const db = await openDatabase(this.idbFactory, this.dbName, this.storeName);\n try {\n const existing = await readPersistedKey(db, this.storeName, this.keyId);\n if (existing) {\n return existing;\n }\n const masterKey = getRandomBytes(MASTER_KEY_LENGTH);\n await persistKey(db, this.storeName, this.keyId, masterKey);\n return masterKey;\n }\n finally {\n db.close();\n }\n }\n}\n//# sourceMappingURL=browser-auto-key-credential-provider.js.map","import { BrowserAutoKeyCredentialProvider } from '../security/credential/browser-auto-key-credential-provider.js';\nconst DEFAULT_KEY_ID = 'default';\nconst DEFAULT_ALGORITHM = 'AES-GCM';\nconst GCM_IV_LENGTH = 12;\nfunction isBrowserEnvironment() {\n return (typeof indexedDB !== 'undefined' && typeof globalThis.crypto !== 'undefined');\n}\nfunction tryCreateBrowserAutoKeyCredentialProvider() {\n if (!isBrowserEnvironment()) {\n return null;\n }\n try {\n return new BrowserAutoKeyCredentialProvider();\n }\n catch {\n return null;\n }\n}\nlet cachedNodeCrypto;\nlet cachedSubtle;\nasync function loadNodeCrypto() {\n if (cachedNodeCrypto !== undefined) {\n return cachedNodeCrypto;\n }\n try {\n cachedNodeCrypto = await import('node:crypto');\n return cachedNodeCrypto;\n }\n catch {\n cachedNodeCrypto = null;\n return null;\n }\n}\nasync function getSubtleCrypto() {\n if (cachedSubtle) {\n return cachedSubtle;\n }\n if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto.subtle) {\n cachedSubtle = globalThis.crypto.subtle;\n return cachedSubtle;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.webcrypto?.subtle) {\n cachedSubtle = nodeCrypto.webcrypto.subtle;\n return cachedSubtle;\n }\n throw new Error('Web Crypto API is not available in this environment');\n}\nasync function getRandomBytes(length) {\n if (typeof globalThis.crypto !== 'undefined' &&\n typeof globalThis.crypto.getRandomValues === 'function') {\n const buffer = new Uint8Array(length);\n globalThis.crypto.getRandomValues(buffer);\n return buffer;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto) {\n const buffer = nodeCrypto.randomBytes(length);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n throw new Error('Unable to generate secure random bytes in this environment');\n}\nfunction normalizeKey(key) {\n if (key.length === 32) {\n return key;\n }\n if (key.length > 32) {\n return key.slice(0, 32);\n }\n const normalized = new Uint8Array(32);\n normalized.set(key);\n return normalized;\n}\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nfunction utf8Encode(value) {\n return textEncoder.encode(value);\n}\nfunction utf8Decode(buffer) {\n return textDecoder.decode(buffer);\n}\nfunction toHex(data) {\n return Array.from(data)\n .map((byte) => byte.toString(16).padStart(2, '0'))\n .join('');\n}\nfunction toArrayBuffer(view) {\n const slice = view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);\n return slice;\n}\nfunction fromHex(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid hex string');\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n result[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return result;\n}\nfunction fromBase64Url(base64url) {\n // Convert base64url to base64\n let base64 = base64url.replace(/-/g, '+').replace(/_/g, '/');\n // Add padding if needed\n const padding = base64.length % 4;\n if (padding === 2) {\n base64 += '==';\n }\n else if (padding === 3) {\n base64 += '=';\n }\n else if (padding === 1) {\n throw new Error('Invalid base64url string: length % 4 === 1');\n }\n // Prefer Node.js Buffer for consistency\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(base64, 'base64'));\n }\n // Browser fallback using atob\n if (typeof atob !== 'undefined') {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n throw new Error('No base64 decoding available in this environment');\n}\nfunction isEncryptedValue(candidate) {\n if (!candidate || typeof candidate !== 'object') {\n return false;\n }\n const record = candidate;\n return (typeof record.keyId === 'string' &&\n typeof record.ciphertext === 'string' &&\n typeof record.algorithm === 'string');\n}\nexport class StorageAESEncryptionManager {\n async encrypt(plaintext, key) {\n const subtle = await getSubtleCrypto();\n const normalizedKey = normalizeKey(key);\n const keyBuffer = toArrayBuffer(normalizedKey);\n const cryptoKey = await subtle.importKey('raw', keyBuffer, { name: 'AES-GCM' }, false, ['encrypt']);\n const iv = await getRandomBytes(GCM_IV_LENGTH);\n const ivBuffer = toArrayBuffer(iv);\n const ciphertextBuffer = await subtle.encrypt({ name: 'AES-GCM', iv: ivBuffer }, cryptoKey, toArrayBuffer(plaintext));\n const ciphertext = new Uint8Array(ciphertextBuffer);\n const result = new Uint8Array(iv.length + ciphertext.length);\n result.set(iv, 0);\n result.set(ciphertext, iv.length);\n return result;\n }\n async decrypt(ciphertext, key) {\n if (ciphertext.length <= GCM_IV_LENGTH) {\n throw new Error('Ciphertext too short to contain IV');\n }\n const subtle = await getSubtleCrypto();\n const normalizedKey = normalizeKey(key);\n const keyBuffer = toArrayBuffer(normalizedKey);\n const cryptoKey = await subtle.importKey('raw', keyBuffer, { name: 'AES-GCM' }, false, ['decrypt']);\n const iv = ciphertext.slice(0, GCM_IV_LENGTH);\n const actualCiphertext = ciphertext.slice(GCM_IV_LENGTH);\n const ivBuffer = toArrayBuffer(iv);\n const cipherBuffer = toArrayBuffer(actualCiphertext);\n const plaintextBuffer = await subtle.decrypt({ name: 'AES-GCM', iv: ivBuffer }, cryptoKey, cipherBuffer);\n return new Uint8Array(plaintextBuffer);\n }\n}\nexport class EncryptedValue {\n constructor(params) {\n this.keyId = params.keyId;\n this.ciphertext = params.ciphertext;\n this.algorithm = params.algorithm;\n }\n}\nexport class EncryptedKeyValueStore {\n constructor(options) {\n this.underlyingStore = options.underlyingStore;\n this.masterKeyProvider = options.masterKeyProvider;\n this.encryptionManager = options.encryptionManager;\n this.modelCtor = options.modelCtor;\n this.cache = options.enableCaching ? new Map() : null;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n this.algorithm = options.algorithm ?? DEFAULT_ALGORITHM;\n }\n async getRawMasterKey() {\n const key = await this.masterKeyProvider.get();\n if (!key) {\n throw new Error('Master key provider must return a valid key');\n }\n if (key instanceof Uint8Array) {\n return key;\n }\n // Check if the key looks like base64url (alphanumeric, -, _, and typically 43 chars for 32 bytes)\n // Base64url pattern: only contains [A-Za-z0-9_-]\n const base64UrlPattern = /^[A-Za-z0-9_-]+$/;\n const matchesPattern = base64UrlPattern.test(key);\n if (matchesPattern && key.length >= 16) {\n try {\n // Try to decode as base64url\n const decoded = fromBase64Url(key);\n // Verify it's a reasonable key length (16, 24, or 32 bytes for AES)\n if (decoded.length === 16 ||\n decoded.length === 24 ||\n decoded.length === 32) {\n return decoded;\n }\n // If wrong length after decoding, treat as UTF-8 passphrase\n console.warn(`[EncryptedStorage] Master key decoded from base64url but has unexpected length ${decoded.length}. Treating as UTF-8 passphrase.`);\n }\n catch (error) {\n // If decoding fails, treat as UTF-8 passphrase\n console.warn(`[EncryptedStorage] Master key looks like base64url but failed to decode: ${error instanceof Error ? error.message : String(error)}. Treating as UTF-8 passphrase.`);\n }\n }\n // Treat as UTF-8 passphrase\n const utf8Key = utf8Encode(key);\n // console.log('[EncryptedStorage] Using UTF-8 encoded key, length:', utf8Key.length, 'hex:', toHex(utf8Key.slice(0, 8)) + '...');\n return utf8Key;\n }\n serialize(value) {\n const candidate = value;\n if (candidate && typeof candidate.toJSON === 'function') {\n return JSON.stringify(candidate.toJSON());\n }\n return JSON.stringify(value);\n }\n deserialize(json) {\n const data = JSON.parse(json);\n const ctorAsAny = this.modelCtor;\n // Prefer static factory methods for custom deserialization logic\n if (typeof ctorAsAny.fromJSON === 'function') {\n return ctorAsAny.fromJSON(data);\n }\n if (typeof ctorAsAny.fromJson === 'function') {\n return ctorAsAny.fromJson(data);\n }\n if (typeof ctorAsAny.deserialize === 'function') {\n return ctorAsAny.deserialize(data);\n }\n // Default: Use Object.assign (standard approach for JSON deserialization)\n // This creates an instance with the correct prototype and copies all properties\n return Object.assign(Object.create(this.modelCtor.prototype), data);\n }\n cacheGet(key) {\n return this.cache?.get(key);\n }\n cacheSet(key, value) {\n this.cache?.set(key, value);\n }\n cacheDelete(key) {\n this.cache?.delete(key);\n }\n async set(key, value) {\n const serialized = this.serialize(value);\n const plaintext = utf8Encode(serialized);\n const masterKey = await this.getRawMasterKey();\n const ciphertext = await this.encryptionManager.encrypt(plaintext, masterKey);\n const encryptedValue = new EncryptedValue({\n keyId: this.keyId,\n ciphertext: toHex(ciphertext),\n algorithm: this.algorithm,\n });\n await this.underlyingStore.set(key, encryptedValue);\n this.cacheSet(key, value);\n }\n async update(key, value) {\n const serialized = this.serialize(value);\n const plaintext = utf8Encode(serialized);\n const masterKey = await this.getRawMasterKey();\n const ciphertext = await this.encryptionManager.encrypt(plaintext, masterKey);\n const encryptedValue = new EncryptedValue({\n keyId: this.keyId,\n ciphertext: toHex(ciphertext),\n algorithm: this.algorithm,\n });\n await this.underlyingStore.update(key, encryptedValue);\n this.cacheSet(key, value);\n }\n async get(key) {\n const cached = this.cacheGet(key);\n if (cached !== undefined) {\n return cached;\n }\n const encryptedValue = await this.underlyingStore.get(key);\n if (!encryptedValue) {\n return undefined;\n }\n if (!isEncryptedValue(encryptedValue)) {\n throw new Error(`Expected EncryptedValue, got ${typeof encryptedValue}`);\n }\n try {\n const masterKey = await this.getRawMasterKey();\n const ciphertext = fromHex(encryptedValue.ciphertext);\n const plaintext = await this.encryptionManager.decrypt(ciphertext, masterKey);\n const json = utf8Decode(plaintext);\n const value = this.deserialize(json);\n this.cacheSet(key, value);\n return value;\n }\n catch (error) {\n console.error(`[EncryptedStorage] ERROR decrypting key \"${key}\":`, error);\n console.error(`[EncryptedStorage] Encrypted value:`, JSON.stringify(encryptedValue));\n throw error;\n }\n }\n async delete(key) {\n await this.underlyingStore.delete(key);\n this.cacheDelete(key);\n }\n async list() {\n const encryptedItems = await this.underlyingStore.list();\n const masterKey = await this.getRawMasterKey();\n const result = {};\n for (const [key, encrypted] of Object.entries(encryptedItems)) {\n if (!isEncryptedValue(encrypted)) {\n continue;\n }\n const cached = this.cacheGet(key);\n if (cached !== undefined) {\n result[key] = cached;\n continue;\n }\n try {\n const ciphertext = fromHex(encrypted.ciphertext);\n const plaintext = await this.encryptionManager.decrypt(ciphertext, masterKey);\n const json = utf8Decode(plaintext);\n const value = this.deserialize(json);\n result[key] = value;\n this.cacheSet(key, value);\n }\n catch (error) {\n console.error('[EncryptedStorage] ERROR decrypting list item, key:', key, 'error:', error);\n console.error('[EncryptedStorage] Encrypted value:', JSON.stringify(encrypted));\n }\n }\n return result;\n }\n async clearCache() {\n this.cache?.clear();\n }\n}\nexport class EncryptedStorageProviderBase {\n constructor(options = {}) {\n const { isEncrypted = true, masterKeyProvider = null, encryptionManager = null, enableCaching = false, } = options;\n this.isEncrypted = isEncrypted;\n this.enableCaching = enableCaching;\n if (isEncrypted) {\n const resolvedProvider = masterKeyProvider ?? tryCreateBrowserAutoKeyCredentialProvider();\n if (!resolvedProvider) {\n throw new Error('masterKeyProvider is required when encryption is enabled');\n }\n this.masterKeyProvider = resolvedProvider;\n this.encryptionManager =\n encryptionManager ?? new StorageAESEncryptionManager();\n }\n else {\n this.masterKeyProvider = null;\n this.encryptionManager = null;\n }\n }\n async getKeyValueStore(modelCtor, namespace) {\n if (!this.isEncrypted) {\n return this.getUnderlyingKeyValueStore(modelCtor, namespace);\n }\n if (!this.masterKeyProvider || !this.encryptionManager) {\n throw new Error('Encryption is enabled but master key provider or encryption manager is missing');\n }\n const underlyingStore = await this.getUnderlyingKeyValueStore(EncryptedValue, namespace);\n return new EncryptedKeyValueStore({\n underlyingStore,\n masterKeyProvider: this.masterKeyProvider,\n encryptionManager: this.encryptionManager,\n modelCtor,\n enableCaching: this.enableCaching,\n });\n }\n}\n//# sourceMappingURL=encrypted-storage-provider-base.js.map","const DEFAULT_DB_NAME = 'naylence';\nconst DEFAULT_DB_VERSION = 1;\nfunction ensureIndexedDB(factory) {\n if (factory) {\n return factory;\n }\n if (typeof indexedDB === 'undefined') {\n throw new Error('IndexedDBKeyValueStore requires a browser environment with IndexedDB support');\n }\n return indexedDB;\n}\nfunction toError(error, fallback) {\n if (error instanceof Error) {\n return error;\n }\n return new Error(fallback);\n}\nfunction requestToPromise(request, description) {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(toError(request.error, description));\n });\n}\nexport class IndexedDBKeyValueStore {\n constructor(options) {\n this.dbPromise = null;\n if (!options?.storeName) {\n throw new Error('storeName is required');\n }\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName;\n this.version = options.version ?? DEFAULT_DB_VERSION;\n this.factory = ensureIndexedDB(options.idbFactory);\n }\n async set(key, value) {\n await this.withStore('readwrite', async (store) => {\n await requestToPromise(store.put(value, key), 'Failed to set value in IndexedDB');\n });\n }\n async update(key, value) {\n await this.withStore('readwrite', async (store) => {\n const existing = await requestToPromise(store.get(key), 'Failed to read value from IndexedDB');\n if (existing === undefined) {\n throw new Error(`Key '${key}' does not exist`);\n }\n await requestToPromise(store.put(value, key), 'Failed to update value in IndexedDB');\n });\n }\n async get(key) {\n return this.withStore('readonly', (store) => requestToPromise(store.get(key), 'Failed to read value from IndexedDB'));\n }\n async delete(key) {\n await this.withStore('readwrite', async (store) => {\n await requestToPromise(store.delete(key), 'Failed to delete value from IndexedDB');\n });\n }\n async list() {\n return this.withStore('readonly', (store) => new Promise((resolve, reject) => {\n const result = {};\n const request = store.openCursor();\n request.onerror = () => reject(toError(request.error, 'Failed to iterate IndexedDB store'));\n request.onsuccess = (event) => {\n const cursor = event.target.result;\n if (!cursor) {\n resolve(result);\n return;\n }\n const key = cursor.key;\n if (typeof key === 'string') {\n result[key] = cursor.value;\n }\n cursor.continue();\n };\n }));\n }\n async withStore(mode, fn) {\n const db = await this.ensureDatabase();\n return new Promise((resolve, reject) => {\n let settled = false;\n const transaction = db.transaction(this.storeName, mode);\n const store = transaction.objectStore(this.storeName);\n const finalize = (value) => {\n if (!settled) {\n settled = true;\n resolve(value);\n }\n };\n transaction.onabort = () => {\n if (!settled) {\n settled = true;\n reject(toError(transaction.error, 'IndexedDB transaction was aborted'));\n }\n };\n transaction.onerror = () => {\n if (!settled) {\n settled = true;\n reject(toError(transaction.error, 'IndexedDB transaction failed'));\n }\n };\n transaction.oncomplete = () => {\n if (!settled) {\n settled = true;\n resolve(undefined);\n }\n };\n try {\n Promise.resolve(fn(store))\n .then((result) => {\n if (mode === 'readonly') {\n finalize(result);\n }\n else {\n transaction.oncomplete = () => finalize(result);\n }\n })\n .catch((error) => {\n transaction.abort();\n reject(toError(error, 'IndexedDB operation failed'));\n });\n }\n catch (error) {\n transaction.abort();\n reject(toError(error, 'IndexedDB operation failed'));\n }\n });\n }\n async ensureDatabase() {\n if (!this.dbPromise) {\n this.dbPromise = this.openDatabase();\n }\n const db = await this.dbPromise;\n if (db.objectStoreNames.contains(this.storeName)) {\n return db;\n }\n db.close();\n this.dbPromise = this.upgradeDatabase(db.version + 1);\n return this.dbPromise;\n }\n openDatabase() {\n return this.createDatabase(this.version, true);\n }\n upgradeDatabase(version) {\n return this.createDatabase(version, false);\n }\n createDatabase(version, allowFallback) {\n return new Promise((resolve, reject) => {\n const request = this.factory.open(this.dbName, version);\n let resolved = false;\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(this.storeName)) {\n db.createObjectStore(this.storeName);\n }\n };\n request.onerror = () => {\n if (!resolved) {\n resolved = true;\n reject(toError(request.error, 'Failed to open IndexedDB'));\n }\n };\n request.onsuccess = () => {\n if (!resolved) {\n resolved = true;\n const db = request.result;\n if (!db.objectStoreNames.contains(this.storeName) && allowFallback) {\n db.close();\n this.createDatabase(version + 1, false)\n .then(resolve)\n .catch(reject);\n return;\n }\n resolve(db);\n }\n };\n });\n }\n}\n//# sourceMappingURL=indexeddb-key-value-store.js.map","import { EncryptedStorageProviderBase } from './encrypted-storage-provider-base.js';\nimport { IndexedDBKeyValueStore } from './indexeddb-key-value-store.js';\nconst DEFAULT_DB_NAME = 'naylence';\nconst DEFAULT_NAMESPACE_PREFIX = 'kv';\nfunction sanitizeSegment(segment, fallback) {\n const trimmed = segment.trim();\n const replaced = trimmed.replace(/[^A-Za-z0-9._-]+/g, '_');\n const cleaned = replaced.replace(/^[._-]+|[._-]+$/g, '');\n if (!cleaned) {\n return fallback;\n }\n return cleaned.slice(0, 120);\n}\nfunction buildStoreName(prefix, namespace, modelName) {\n const safePrefix = sanitizeSegment(prefix, DEFAULT_NAMESPACE_PREFIX);\n const safeNamespace = sanitizeSegment(namespace, 'namespace');\n const safeModel = sanitizeSegment(modelName || 'model', 'model');\n return `${safePrefix}:${safeNamespace}:${safeModel}`;\n}\nexport class IndexedDBStorageProvider extends EncryptedStorageProviderBase {\n constructor(options = {}) {\n const mode = options.mode ?? 'dx';\n if (!IndexedDBStorageProvider.supportedModes.has(mode)) {\n throw new Error(`Unsupported IndexedDB storage provider mode: ${mode}. Supported modes: ${Array.from(IndexedDBStorageProvider.supportedModes).join(', ')}`);\n }\n const enableCaching = options.enableCaching ?? mode === 'dx';\n const isEncrypted = options.isEncrypted ?? true;\n const masterKeyProvider = options.masterKeyProvider ?? null;\n if (mode === 'hardened' && !masterKeyProvider) {\n throw new Error('IndexedDBStorageProvider in hardened mode requires an explicit masterKeyProvider');\n }\n super({\n isEncrypted,\n masterKeyProvider,\n enableCaching,\n });\n this.stores = new Map();\n this.mode = mode;\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.version = options.version ?? 1;\n this.namespacePrefix = options.namespacePrefix ?? DEFAULT_NAMESPACE_PREFIX;\n this.idbFactory = options.idbFactory ?? undefined;\n }\n get isBrowserOnly() {\n return true;\n }\n async getUnderlyingKeyValueStore(modelCtor, namespace) {\n const modelName = modelCtor?.name ?? 'model';\n const storeKey = `${namespace}:${modelName}`;\n const existing = this.stores.get(storeKey);\n if (existing) {\n return existing;\n }\n const storeName = buildStoreName(this.namespacePrefix, namespace, modelName);\n const store = new IndexedDBKeyValueStore({\n dbName: this.dbName,\n version: this.version,\n storeName,\n ...(this.idbFactory ? { idbFactory: this.idbFactory } : {}),\n });\n this.stores.set(storeKey, store);\n return store;\n }\n}\nIndexedDBStorageProvider.supportedModes = new Set(['dx', 'hardened']);\n//# sourceMappingURL=indexeddb-storage-provider.js.map","const globalScope = globalThis;\nconst nodeStack = globalScope.__naylenceNodeStack__ ?? (globalScope.__naylenceNodeStack__ = []);\nexport function getCurrentNode() {\n return nodeStack.length > 0 ? nodeStack[nodeStack.length - 1] : null;\n}\nexport function getNode() {\n const current = getCurrentNode();\n if (!current) {\n throw new Error('No Fame node is currently bound to the context');\n }\n return current;\n}\nexport function pushNode(node) {\n nodeStack.push(node);\n let popped = false;\n return () => {\n if (popped) {\n return;\n }\n popped = true;\n const current = nodeStack[nodeStack.length - 1];\n if (current === node) {\n nodeStack.pop();\n return;\n }\n const index = nodeStack.lastIndexOf(node);\n if (index >= 0) {\n nodeStack.splice(index, 1);\n }\n };\n}\nexport async function withNodeContextAsync(node, fn) {\n const pop = pushNode(node);\n try {\n return await fn();\n }\n finally {\n pop();\n }\n}\nexport function runWithNodeContext(node, fn) {\n const pop = pushNode(node);\n try {\n return fn();\n }\n finally {\n pop();\n }\n}\n//# sourceMappingURL=node-context-stack.js.map","export const GRANT_PURPOSE_NODE_ATTACH = 'node.attach';\nexport function isGrant(candidate) {\n if (!candidate || typeof candidate !== 'object') {\n return false;\n }\n const grant = candidate;\n return typeof grant.type === 'string' && typeof grant.purpose === 'string';\n}\nexport function assertGrant(candidate, message = 'Invalid grant object') {\n if (!isGrant(candidate)) {\n throw new TypeError(message);\n }\n}\n//# sourceMappingURL=grant.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const ADMISSION_CLIENT_FACTORY_BASE_TYPE = 'AdmissionClientFactory';\nexport class AdmissionClientFactory extends AbstractResourceFactory {\n static async createAdmissionClient(config, options = {}) {\n if (config) {\n const client = await createResource(ADMISSION_CLIENT_FACTORY_BASE_TYPE, config, options);\n if (!client) {\n throw new Error('Failed to create admission client from configuration');\n }\n return client;\n }\n const client = await createDefaultResource(ADMISSION_CLIENT_FACTORY_BASE_TYPE, null, options);\n if (!client) {\n throw new Error('Failed to create default admission client');\n }\n return client;\n }\n}\n//# sourceMappingURL=admission-client-factory.js.map","function toDateOrNull(value) {\n if (value === null || value === undefined) {\n return null;\n }\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value) ? new Date(value) : null;\n }\n if (typeof value === 'string') {\n const timestamp = Date.parse(value);\n if (!Number.isNaN(timestamp)) {\n return new Date(timestamp);\n }\n throw new Error(`Invalid date string provided: ${value}`);\n }\n return null;\n}\nexport class KeyInfo {\n constructor(options = {}) {\n this.kid = options.kid ?? null;\n this.expiresAt = toDateOrNull(options.expiresAt);\n this.notBefore = toDateOrNull(options.notBefore);\n this.hasCertificate = options.hasCertificate ?? false;\n this.certSubject = options.certSubject ?? null;\n this.certIssuer = options.certIssuer ?? null;\n }\n}\nexport class KeyValidationError extends Error {\n constructor(code, message, options = {}) {\n super(message);\n this.name = 'KeyValidationError';\n this.code = code;\n this.kid = options.kid ?? null;\n this.details = options.details ? { ...options.details } : {};\n }\n}\nexport class AttachmentKeyValidator {\n async validateKeys(keys) {\n const infos = [];\n if (!keys) {\n return infos;\n }\n for (const key of keys) {\n const info = await this.validateKey(key);\n infos.push(info);\n }\n return infos;\n }\n}\n//# sourceMappingURL=attachment-key-validator.js.map","import { ConnectorState, DeliveryOriginType, FameResponseType, createFameEnvelope, generateId, } from '@naylence/core';\nimport { getLogger } from '../../util/logging.js';\nimport { delay } from '../../util/task-utils.js';\nimport { KeyValidationError, } from '../../security/keys/attachment-key-validator.js';\nconst logger = getLogger('naylence.fame.node.admission.default_node_attach_client');\nconst HANDSHAKE_POLL_INTERVAL_MS = 20;\nexport class DefaultNodeAttachClient {\n constructor(options = {}) {\n this.buffer = [];\n this.inHandshake = false;\n this.timeoutMs = options.timeoutMs ?? 10000;\n this.attachmentKeyValidator = options.attachmentKeyValidator;\n this.replicaStickinessManager = options.replicaStickinessManager ?? null;\n }\n async attach(node, originType, connector, welcomeFrame, finalHandler, keys, callbackGrants) {\n this.inHandshake = true;\n const interimHandler = async (envelope, context) => {\n if (this.inHandshake) {\n this.buffer.push(envelope);\n return null;\n }\n return finalHandler(envelope, context);\n };\n await connector.replaceHandler(interimHandler);\n const attachFrame = {\n type: 'NodeAttach',\n originType,\n systemId: welcomeFrame.systemId,\n instanceId: welcomeFrame.instanceId,\n };\n if (welcomeFrame.assignedPath) {\n attachFrame.assignedPath = welcomeFrame.assignedPath;\n }\n if (welcomeFrame.acceptedCapabilities?.length) {\n attachFrame.capabilities = [...welcomeFrame.acceptedCapabilities];\n }\n if (welcomeFrame.acceptedLogicals?.length) {\n attachFrame.acceptedLogicals = [...welcomeFrame.acceptedLogicals];\n }\n if (keys?.length) {\n attachFrame.keys = keys.map((candidate) => ({ ...candidate }));\n }\n if (callbackGrants?.length) {\n attachFrame.callbackGrants = callbackGrants.map((grant) => ({\n ...grant,\n }));\n }\n try {\n if (this.replicaStickinessManager) {\n const offer = this.replicaStickinessManager.offer();\n if (offer) {\n attachFrame.stickiness = offer;\n }\n }\n }\n catch (error) {\n logger.debug('stickiness_offer_skipped', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n const corrId = generateId();\n const traceId = generateId();\n const envelope = createFameEnvelope({\n frame: attachFrame,\n corrId,\n traceId,\n });\n const localContext = {\n originType: DeliveryOriginType.LOCAL,\n expectedResponseType: FameResponseType.NONE,\n };\n let processedEnvelope = null;\n try {\n processedEnvelope = await node.dispatchEnvelopeEvent('onForwardUpstream', node, envelope, localContext);\n if (!processedEnvelope) {\n throw new Error('Envelope was blocked by onForwardUpstream event');\n }\n logger.debug('sending_node_attach_envelope', {\n envp_id: processedEnvelope.id ?? envelope.id ?? null,\n frame_type: processedEnvelope.frame?.type ?? 'unknown',\n trace_id: processedEnvelope.traceId ?? envelope.traceId ?? null,\n });\n await connector.send(processedEnvelope);\n await node.dispatchEnvelopeEvent('onForwardUpstreamComplete', node, processedEnvelope, undefined, undefined, localContext);\n }\n catch (error) {\n const errorObject = error instanceof Error ? error : new Error(String(error));\n await node\n .dispatchEnvelopeEvent('onForwardUpstreamComplete', node, processedEnvelope ?? envelope, undefined, errorObject, localContext)\n .catch(() => undefined);\n throw errorObject;\n }\n const ackEnvelope = await this.awaitAck(connector);\n const ackFrame = ackEnvelope.frame;\n const context = {\n fromConnector: connector,\n fromSystemId: ackFrame.targetSystemId ?? 'unknown',\n originType: DeliveryOriginType.UPSTREAM,\n expectedResponseType: FameResponseType.NONE,\n };\n await node.dispatchEnvelopeEvent('onEnvelopeReceived', node, ackEnvelope, context);\n if (ackEnvelope.corrId !== corrId) {\n throw new Error(`Attach rejected, invalid correlation id. Expected: ${corrId}, actual: ${ackEnvelope.corrId ?? 'unknown'}`);\n }\n if (ackFrame.ok === false) {\n throw new Error(`Attach rejected: ${ackFrame.reason ?? 'unknown'}`);\n }\n const parentKeys = ackFrame.keys;\n const parentId = ackFrame.targetSystemId ?? 'unknown';\n if (this.attachmentKeyValidator) {\n try {\n const keyInfos = await this.attachmentKeyValidator.validateKeys(parentKeys);\n if (Array.isArray(keyInfos) && keyInfos.length > 0) {\n logger.debug('parent_certificate_validation_passed', {\n parent_id: parentId,\n correlation_id: corrId,\n validated_keys: keyInfos.length,\n });\n }\n }\n catch (error) {\n if (error instanceof KeyValidationError) {\n logger.error('parent_certificate_validation_failed', {\n parent_id: parentId,\n correlation_id: corrId,\n error_code: error.code,\n error_message: error.message,\n kid: error.kid,\n action: 'rejecting_attachment',\n });\n throw new Error(`Parent certificate validation failed: ${error.message}`);\n }\n throw error;\n }\n }\n else {\n logger.debug('parent_certificate_validation_skipped', {\n parent_id: parentId,\n reason: 'no_validator',\n });\n }\n logger.debug('processing_node_attach_ack', {\n parent_id: ackFrame.targetSystemId,\n });\n this.inHandshake = false;\n await connector.replaceHandler(finalHandler);\n while (this.buffer.length > 0) {\n const bufferedEnvelope = this.buffer.shift();\n if (!bufferedEnvelope) {\n break;\n }\n await finalHandler(bufferedEnvelope);\n }\n const assignedPath = welcomeFrame.assignedPath ?? ackFrame.assignedPath;\n if (!assignedPath) {\n throw new Error('Assigned path must be present after attach handshake');\n }\n const targetPhysicalPath = ackFrame.targetPhysicalPath ?? welcomeFrame.targetPhysicalPath;\n if (!targetPhysicalPath) {\n throw new Error('Target physical path must be present after attach handshake');\n }\n const targetSystemId = ackFrame.targetSystemId;\n if (!targetSystemId) {\n throw new Error('Target system ID must be set in NodeAttachAckFrame on success');\n }\n try {\n if (this.replicaStickinessManager) {\n this.replicaStickinessManager.accept(ackFrame.stickiness ?? null);\n }\n }\n catch (error) {\n logger.debug('stickiness_accept_skipped', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n let attachExpiresAt;\n if (ackFrame.expiresAt) {\n const candidate = new Date(ackFrame.expiresAt);\n if (!Number.isNaN(candidate.getTime())) {\n attachExpiresAt = candidate;\n }\n }\n const routingEpoch = ackFrame.routingEpoch;\n const attachInfo = {\n systemId: welcomeFrame.systemId,\n targetSystemId,\n targetPhysicalPath,\n assignedPath,\n connector,\n ...(welcomeFrame.acceptedLogicals\n ? { acceptedLogicals: [...welcomeFrame.acceptedLogicals] }\n : {}),\n ...(attachExpiresAt ? { attachExpiresAt } : {}),\n ...(routingEpoch ? { routingEpoch } : {}),\n ...(parentKeys !== undefined ? { parentKeys } : {}),\n };\n return attachInfo;\n }\n async awaitAck(connector) {\n const deadline = Date.now() + this.timeoutMs;\n while (Date.now() < deadline) {\n if (connector.state !== ConnectorState.STARTED) {\n let errorMessage = 'Connector closed while waiting for NodeAttachAck';\n if (connector.closeCode !== undefined) {\n errorMessage += ` (code=${connector.closeCode}`;\n if (connector.closeReason) {\n errorMessage += `, reason=${connector.closeReason}`;\n }\n errorMessage += ')';\n }\n if (connector.lastError) {\n errorMessage += ` - ${connector.lastError.name}: ${connector.lastError.message}`;\n }\n throw new Error(errorMessage);\n }\n const envelope = this.buffer.shift();\n if (envelope) {\n if (envelope.frame.type === 'NodeAttachAck') {\n return envelope;\n }\n logger.error('unexpected_frame_during_handshake', {\n frame_type: envelope.frame.type,\n });\n }\n await delay(HANDSHAKE_POLL_INTERVAL_MS);\n }\n const timeoutError = new Error('Timeout waiting for NodeAttachAck');\n timeoutError.name = 'TimeoutError';\n throw timeoutError;\n }\n}\n//# sourceMappingURL=default-node-attach-client.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const TRANSPORT_LISTENER_FACTORY_BASE_TYPE = 'TransportListenerFactory';\nexport class TransportListenerFactory extends AbstractResourceFactory {\n static async createTransportListener(config, eventListeners, options = {}) {\n const configRecord = (config ?? null);\n const effectiveListeners = Array.isArray(eventListeners)\n ? eventListeners\n : [];\n const resolvedFactoryArgs = [\n effectiveListeners,\n ...(options.factoryArgs ?? []),\n ];\n const resolvedOptions = {\n ...options,\n factoryArgs: resolvedFactoryArgs,\n };\n const listener = configRecord\n ? await createResource(TRANSPORT_LISTENER_FACTORY_BASE_TYPE, configRecord, resolvedOptions)\n : await createDefaultResource(TRANSPORT_LISTENER_FACTORY_BASE_TYPE, null, resolvedOptions);\n return listener ?? null;\n }\n static async createTransportListeners(configs, eventListeners, options = {}) {\n const listeners = [];\n for (const config of configs) {\n const listener = await this.createTransportListener(config ?? undefined, eventListeners, options);\n if (listener) {\n listeners.push(listener);\n }\n }\n return listeners;\n }\n}\n//# sourceMappingURL=transport-listener-factory.js.map","export const NODE_META_NAMESPACE = '__node_meta';\nexport class NodeMetaRecord {\n constructor(id) {\n this.id = id;\n }\n}\n//# sourceMappingURL=node-meta.js.map","import { Binding, FameAddress, FameResponseType, formatAddress, formatAddressFromComponents, generateId, localDeliveryContext, parseAddress, parseAddressComponents, } from '@naylence/core';\nimport { InMemoryReadWriteChannel } from '../channel/in-memory/in-memory-channel.js';\nimport { InMemoryKeyValueStore } from '../storage/in-memory-storage.js';\nimport { currentTraceId } from '../util/envelope-context.js';\nimport { getLogger } from '../util/logging.js';\nimport { isPoolLogical, matchesPoolLogical } from '../util/logicals.js';\nconst logger = getLogger('naylence.fame.node.binding_manager');\nconst SYSTEM_INBOX = '__sys__';\nconst DEFAULT_ACK_TIMEOUT_MS = 20000;\nexport class BindingStoreEntryRecord {\n constructor(address, encryptionKeyId = null, physicalPath = null) {\n this.address = address;\n this.encryptionKeyId = encryptionKeyId;\n this.physicalPath = physicalPath;\n }\n}\nfunction toKey(address) {\n return address.toString();\n}\nexport class BindingManager {\n constructor(options) {\n this.bindings = new Map();\n this.capabilitiesByAddress = new Map();\n const hasUpstream = options.hasUpstream ?? options.has_upstream ?? false;\n const getId = options.getId ?? options.get_id;\n if (!getId) {\n throw new Error('BindingManager requires getId callback');\n }\n const getPhysicalPath = options.getPhysicalPath ?? options.get_physical_path;\n if (!getPhysicalPath) {\n throw new Error('BindingManager requires getPhysicalPath callback');\n }\n const getAcceptedLogicals = options.getAcceptedLogicals ?? options.get_accepted_logicals;\n if (!getAcceptedLogicals) {\n throw new Error('BindingManager requires getAcceptedLogicals callback');\n }\n const forwardUpstream = options.forwardUpstream ?? options.forward_upstream;\n if (!forwardUpstream) {\n throw new Error('BindingManager requires forwardUpstream function');\n }\n const envelopeFactory = options.envelopeFactory ?? options.envelope_factory;\n if (!envelopeFactory) {\n throw new Error('BindingManager requires envelopeFactory');\n }\n const deliveryTracker = options.deliveryTracker ?? options.delivery_tracker;\n if (!deliveryTracker) {\n throw new Error('BindingManager requires deliveryTracker');\n }\n const getEncryptionKeyId = options.getEncryptionKeyId ?? options.get_encryption_key_id;\n const bindingStore = options.bindingStore ??\n options.binding_store ??\n new InMemoryKeyValueStore();\n const bindingFactory = options.bindingFactory ??\n options.binding_factory ??\n ((address) => this.defaultBindingFactory(address));\n const ackTimeoutMs = options.ackTimeoutMs ?? options.ack_timeout_ms ?? DEFAULT_ACK_TIMEOUT_MS;\n this.hasUpstream = hasUpstream;\n this.getId = getId;\n this.getPhysicalPath = getPhysicalPath;\n this.getAcceptedLogicalsFn = getAcceptedLogicals;\n this.forwardUpstream = forwardUpstream;\n this.getEncryptionKeyId = getEncryptionKeyId;\n this.bindingStore = bindingStore;\n this.bindingFactory = bindingFactory;\n this.envelopeFactory = envelopeFactory;\n this.deliveryTracker = deliveryTracker;\n this.ackTimeoutMs = ackTimeoutMs;\n }\n getBinding(address) {\n const key = toKey(address);\n const direct = this.bindings.get(key);\n if (direct) {\n return direct;\n }\n return this.matchPool(address.toString());\n }\n getAddresses() {\n return Array.from(this.bindings.values()).map((binding) => binding.address);\n }\n hasBinding(address) {\n return this.getBinding(address) !== undefined;\n }\n async restore() {\n const stored = await this.bindingStore.list();\n for (const entry of Object.values(stored)) {\n if (!entry?.address) {\n continue;\n }\n const key = entry.address;\n if (!this.bindings.has(key)) {\n const binding = this.bindingFactory(new FameAddress(key));\n this.bindings.set(key, binding);\n logger.debug('restored_binding', { address: key });\n }\n }\n if (!this.hasUpstream) {\n return;\n }\n await this.rebindAddressesUpstream();\n await this.readvertiseCapabilitiesUpstream();\n }\n async bind(participant, capabilities) {\n logger.debug('binding_participant', { participant });\n const { prefixAddress, addresses, propagateAddress, capabilityAddress } = this.computeBindingAddresses(participant);\n for (const address of addresses) {\n if (!this.bindings.has(address)) {\n const binding = this.bindingFactory(new FameAddress(address));\n this.bindings.set(address, binding);\n logger.debug('bound_address', { address, participant });\n }\n }\n let propagatedAddress = null;\n if (propagateAddress && this.hasUpstream) {\n propagatedAddress = propagateAddress;\n try {\n await this.bindAddressUpstream(propagatedAddress);\n }\n catch (error) {\n for (const address of addresses) {\n this.bindings.delete(address);\n }\n throw error;\n }\n }\n if (capabilities &&\n capabilities.length &&\n this.hasUpstream &&\n capabilityAddress) {\n try {\n await this.advertiseCapabilities(capabilityAddress, capabilities);\n }\n catch (error) {\n if (propagatedAddress) {\n try {\n await this.unbindAddressUpstream(propagatedAddress);\n }\n catch (rollbackError) {\n logger.error('bind_rollback_failed', {\n address: propagatedAddress.toString(),\n error: rollbackError.message,\n });\n }\n }\n for (const address of addresses) {\n this.bindings.delete(address);\n }\n throw error;\n }\n }\n for (const address of addresses) {\n await this.bindingStore.set(address, {\n address,\n encryptionKeyId: null,\n physicalPath: null,\n });\n }\n logger.debug('bind_success', {\n participant,\n address: prefixAddress.toString(),\n capabilities,\n totalBindings: this.bindings.size,\n });\n const binding = this.bindings.get(prefixAddress.toString());\n if (!binding) {\n throw new Error('Binding was not created');\n }\n if (capabilities && capabilities.length && capabilityAddress) {\n const key = capabilityAddress.toString();\n const current = this.capabilitiesByAddress.get(key) ?? new Set();\n capabilities.forEach((cap) => current.add(cap));\n this.capabilitiesByAddress.set(key, current);\n }\n return binding;\n }\n async unbind(participant) {\n const { prefixAddress, instanceAddress, addresses, propagateAddress, capabilityAddress, } = this.computeBindingAddresses(participant, { requireExisting: true });\n if (this.hasUpstream && capabilityAddress) {\n const key = capabilityAddress.toString();\n const caps = Array.from(this.capabilitiesByAddress.get(key) ?? []);\n if (caps.length) {\n await this.withdrawCapabilities(capabilityAddress, caps);\n this.capabilitiesByAddress.delete(key);\n }\n }\n if (this.hasUpstream && propagateAddress) {\n await this.unbindAddressUpstream(propagateAddress);\n }\n for (const address of addresses) {\n if (this.bindings.delete(address)) {\n await this.bindingStore.delete(address);\n }\n }\n logger.debug('unbind_success', {\n participant,\n address: prefixAddress.toString(),\n totalBindings: this.bindings.size,\n });\n if (instanceAddress) {\n this.capabilitiesByAddress.delete(instanceAddress.toString());\n }\n }\n async clear() {\n this.bindings.clear();\n this.capabilitiesByAddress.clear();\n const entries = await this.bindingStore.list();\n await Promise.all(Object.keys(entries).map((key) => this.bindingStore.delete(key)));\n }\n async handleAck(envelope, context) {\n await this.deliveryTracker.onEnvelopeDelivered(SYSTEM_INBOX, envelope, context);\n }\n async rebindAddressesUpstream() {\n if (!this.hasUpstream) {\n return;\n }\n for (const address of this.bindings.keys()) {\n if (!this.shouldRebind(address)) {\n continue;\n }\n try {\n await this.bindAddressUpstream(new FameAddress(address));\n }\n catch (error) {\n logger.error('rebind_failed', {\n address,\n error: error.message,\n });\n }\n }\n }\n async readvertiseCapabilitiesUpstream() {\n if (!this.hasUpstream) {\n return;\n }\n for (const [address, capabilities,] of this.capabilitiesByAddress.entries()) {\n if (!capabilities.size) {\n continue;\n }\n try {\n await this.advertiseCapabilities(new FameAddress(address), Array.from(capabilities));\n }\n catch (error) {\n logger.error('capability_replay_failed', {\n address,\n error: error.message,\n });\n }\n }\n }\n matchPool(address) {\n const [name] = parseAddress(address);\n try {\n const [, host] = parseAddressComponents(address);\n if (!host) {\n return undefined;\n }\n return this.matchHostPool(name, host);\n }\n catch {\n return undefined;\n }\n }\n matchHostPool(name, host) {\n const candidates = [];\n for (const [storedAddress, binding] of this.bindings.entries()) {\n try {\n const [storedName, storedHost] = parseAddressComponents(storedAddress);\n if (storedName !== name || !storedHost || !isPoolLogical(storedHost)) {\n continue;\n }\n if (!matchesPoolLogical(host, storedHost)) {\n continue;\n }\n const specificity = storedHost.split('.').length;\n candidates.push({ specificity, binding });\n }\n catch {\n continue;\n }\n }\n if (!candidates.length) {\n return undefined;\n }\n candidates.sort((a, b) => b.specificity - a.specificity);\n return candidates[0]?.binding;\n }\n computeBindingAddresses(participant, options = {}) {\n let name;\n let location;\n if (participant.includes('@')) {\n [name, location] = parseAddress(participant);\n }\n else {\n name = participant;\n location = this.getPhysicalPath();\n }\n const baseAddress = formatAddress(name, location);\n let host = null;\n let isHostBased = false;\n try {\n const [, parsedHost] = parseAddressComponents(baseAddress.toString());\n if (parsedHost) {\n host = parsedHost;\n isHostBased = true;\n }\n }\n catch {\n // ignore parse errors and treat as path-based\n }\n const acceptedLogicals = this.getAcceptedLogicalsSnapshot();\n let poolClaim = null;\n let logical = null;\n if (isHostBased && host) {\n // For host-based addresses (e.g., \"svc@api.service\"), check the host portion\n logical = host;\n if (!this.isAcceptedLogicalHost(logical, acceptedLogicals)) {\n poolClaim = this.findHostPoolClaim(acceptedLogicals, host);\n logical = null; // Not a logical, might be a pool\n }\n }\n else {\n // For path-based addresses (e.g., \"svc@/path\"), check the name portion\n // This allows binding like bind(\"svc\") to work when \"svc\" is in requestedLogicals\n if (this.isAcceptedLogicalHost(name, acceptedLogicals)) {\n logical = name;\n }\n }\n let prefixAddress;\n let instanceAddress = null;\n if (poolClaim) {\n prefixAddress = formatAddressFromComponents(name, poolClaim);\n const targetHost = host && host.includes('*')\n ? host.replace('*', this.getId())\n : poolClaim.replace('*', this.getId());\n instanceAddress = formatAddressFromComponents(name, targetHost);\n }\n else if (logical &&\n this.isAcceptedLogicalHost(logical, acceptedLogicals)) {\n prefixAddress = baseAddress;\n }\n else if (location === this.getPhysicalPath()) {\n prefixAddress = baseAddress;\n }\n else {\n if (options.requireExisting !== true) {\n throw new Error(`Cannot bind '${participant}': location '${location}' not permitted`);\n }\n prefixAddress = baseAddress;\n }\n const addresses = new Set();\n addresses.add(prefixAddress.toString());\n if (instanceAddress) {\n addresses.add(instanceAddress.toString());\n }\n const propagateAddress = this.hasUpstream\n ? this.computePropagateAddress(prefixAddress, poolClaim, logical)\n : null;\n const capabilityAddress = instanceAddress ?? prefixAddress;\n return {\n prefixAddress,\n instanceAddress,\n addresses,\n propagateAddress,\n capabilityAddress,\n };\n }\n computePropagateAddress(prefixAddress, poolClaim, logical) {\n if (!this.hasUpstream) {\n return null;\n }\n // Only propagate pool claims or accepted logical addresses upstream\n // Physical addresses are NEVER propagated (matches Python implementation)\n if (poolClaim) {\n const [name] = parseAddress(prefixAddress.toString());\n return formatAddressFromComponents(name, poolClaim);\n }\n // Check if this is an accepted logical address (non-pool)\n if (logical &&\n this.isAcceptedLogicalHost(logical, this.getAcceptedLogicalsSnapshot())) {\n return prefixAddress;\n }\n // Physical addresses or non-accepted logicals are not propagated\n return null;\n }\n async bindAddressUpstream(address) {\n const frame = {\n type: 'AddressBind',\n address: address.toString(),\n physicalPath: this.getPhysicalPath(),\n encryptionKeyId: this.getEncryptionKeyId\n ? (this.getEncryptionKeyId() ?? undefined)\n : undefined,\n };\n const ackEnvelope = await this.sendAndWaitForAck(frame);\n const ack = ackEnvelope.frame;\n if (!ack.ok) {\n throw new Error(`Bind to '${address}' was rejected`);\n }\n }\n async unbindAddressUpstream(address) {\n const frame = {\n type: 'AddressUnbind',\n address: address.toString(),\n };\n const ackEnvelope = await this.sendAndWaitForAck(frame);\n const ack = ackEnvelope.frame;\n if (!ack.ok) {\n throw new Error(`Unbind of '${address}' was rejected`);\n }\n }\n async advertiseCapabilities(address, capabilities) {\n if (!capabilities.length) {\n return;\n }\n const frame = {\n type: 'CapabilityAdvertise',\n address: address.toString(),\n capabilities,\n };\n const ackEnvelope = await this.sendAndWaitForAck(frame);\n const ack = ackEnvelope.frame;\n if (!ack.ok) {\n throw new Error(`Capability advertise rejected: ${capabilities.join(', ')}`);\n }\n }\n async withdrawCapabilities(address, capabilities) {\n if (!capabilities.length) {\n return;\n }\n const frame = {\n type: 'CapabilityWithdraw',\n address: address.toString(),\n capabilities,\n };\n const ackEnvelope = await this.sendAndWaitForAck(frame);\n const ack = ackEnvelope.frame;\n if (!ack.ok) {\n throw new Error(`Capability withdraw rejected: ${capabilities.join(', ')}`);\n }\n const key = address.toString();\n const existing = this.capabilitiesByAddress.get(key);\n if (!existing) {\n return;\n }\n capabilities.forEach((cap) => existing.delete(cap));\n if (!existing.size) {\n this.capabilitiesByAddress.delete(key);\n }\n }\n async sendAndWaitForAck(frame) {\n const corrId = generateId();\n const replyTo = formatAddress(SYSTEM_INBOX, this.getPhysicalPath());\n const traceId = currentTraceId();\n const envelopeOptions = {\n frame,\n corrId,\n replyTo,\n };\n if (traceId) {\n envelopeOptions.traceId = traceId;\n }\n const envelope = this.envelopeFactory.createEnvelope(envelopeOptions);\n await this.deliveryTracker.track(envelope, {\n timeoutMs: this.ackTimeoutMs,\n expectedResponseType: FameResponseType.ACK,\n });\n envelope.rtype = FameResponseType.ACK;\n const ackPromise = this.deliveryTracker.awaitAck(envelope.id);\n await this.forwardUpstream(envelope, localDeliveryContext(this.getId()));\n return ackPromise;\n }\n findHostPoolClaim(acceptedLogicals, logical) {\n for (const pattern of acceptedLogicals) {\n if (isPoolLogical(pattern) && matchesPoolLogical(logical, pattern)) {\n return pattern;\n }\n }\n return null;\n }\n isAcceptedLogicalHost(logical, acceptedLogicals) {\n return acceptedLogicals.has(logical) && !isPoolLogical(logical);\n }\n shouldRebind(address) {\n try {\n const [, host] = parseAddressComponents(address);\n if (!host) {\n return false;\n }\n const accepted = this.getAcceptedLogicalsSnapshot();\n const poolClaim = this.findHostPoolClaim(accepted, host);\n const exact = this.isAcceptedLogicalHost(host, accepted);\n return Boolean(poolClaim || exact);\n }\n catch {\n return false;\n }\n }\n getAcceptedLogicalsSnapshot() {\n const values = this.getAcceptedLogicalsFn();\n return values instanceof Set\n ? new Set(values)\n : new Set(Array.from(values));\n }\n defaultBindingFactory(address) {\n const channel = new InMemoryReadWriteChannel();\n return new Binding(channel, address);\n }\n}\n//# sourceMappingURL=binding-manager.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, registerFactory, } from '@naylence/factory';\nexport const DELIVERY_POLICY_FACTORY_BASE_TYPE = 'DeliveryPolicyFactory';\nexport class DeliveryPolicyFactory extends AbstractResourceFactory {\n static async createDeliveryPolicy(config, options = {}) {\n if (config) {\n const policy = await createResource(DELIVERY_POLICY_FACTORY_BASE_TYPE, config, options);\n if (policy) {\n return policy;\n }\n }\n const defaultPolicy = await createDefaultResource(DELIVERY_POLICY_FACTORY_BASE_TYPE, null, options);\n return defaultPolicy ?? null;\n }\n}\nexport function registerDeliveryPolicyFactory(type, factory) {\n registerFactory(DELIVERY_POLICY_FACTORY_BASE_TYPE, type, factory);\n}\n//# sourceMappingURL=delivery-policy-factory.js.map","import { FameResponseType } from '@naylence/core';\nexport var EnvelopeStatus;\n(function (EnvelopeStatus) {\n EnvelopeStatus[\"PENDING\"] = \"pending\";\n EnvelopeStatus[\"ACKED\"] = \"acked\";\n EnvelopeStatus[\"NACKED\"] = \"nacked\";\n EnvelopeStatus[\"RESPONDED\"] = \"responded\";\n EnvelopeStatus[\"STREAMING\"] = \"streaming\";\n EnvelopeStatus[\"TIMED_OUT\"] = \"timed_out\";\n EnvelopeStatus[\"FAILED\"] = \"failed\";\n EnvelopeStatus[\"RECEIVED\"] = \"received\";\n EnvelopeStatus[\"HANDLED\"] = \"handled\";\n EnvelopeStatus[\"FAILED_TO_HANDLE\"] = \"failed_to_handle\";\n})(EnvelopeStatus || (EnvelopeStatus = {}));\nexport var MailboxType;\n(function (MailboxType) {\n MailboxType[\"INBOX\"] = \"inbox\";\n MailboxType[\"OUTBOX\"] = \"outbox\";\n})(MailboxType || (MailboxType = {}));\nconst LEGACY_STATUS_MAP = {\n pending: EnvelopeStatus.PENDING,\n acked: EnvelopeStatus.ACKED,\n nacked: EnvelopeStatus.NACKED,\n responded: EnvelopeStatus.RESPONDED,\n streaming: EnvelopeStatus.STREAMING,\n timed_out: EnvelopeStatus.TIMED_OUT,\n failed: EnvelopeStatus.FAILED,\n received: EnvelopeStatus.RECEIVED,\n handled: EnvelopeStatus.HANDLED,\n failed_to_handle: EnvelopeStatus.FAILED_TO_HANDLE,\n};\nconst LEGACY_MAILBOX_MAP = {\n inbox: MailboxType.INBOX,\n outbox: MailboxType.OUTBOX,\n};\nexport class TrackedEnvelope {\n constructor(init) {\n this.timeoutAtMs = init.timeoutAtMs;\n this.overallTimeoutAtMs = init.overallTimeoutAtMs;\n this.expectedResponseType = init.expectedResponseType;\n this.createdAtMs = init.createdAtMs;\n this.attempt = init.attempt ?? 0;\n this.status = normalizeStatus(init.status);\n this.meta = { ...(init.meta ?? {}) };\n this.insertedAtMs = init.insertedAtMs ?? Date.now();\n this.mailboxType = normalizeMailbox(init.mailboxType);\n this.originalEnvelope = init.originalEnvelope;\n this.serviceName = init.serviceName ?? null;\n }\n get envelopeId() {\n return this.originalEnvelope.id;\n }\n get correlationId() {\n return this.originalEnvelope.corrId ?? null;\n }\n get expectAck() {\n return Boolean(this.expectedResponseType & FameResponseType.ACK);\n }\n get expectReply() {\n return Boolean(this.expectedResponseType & FameResponseType.REPLY);\n }\n clone(overrides = {}) {\n return new TrackedEnvelope({\n timeoutAtMs: overrides.timeoutAtMs ?? this.timeoutAtMs,\n overallTimeoutAtMs: overrides.overallTimeoutAtMs ?? this.overallTimeoutAtMs,\n expectedResponseType: overrides.expectedResponseType ?? this.expectedResponseType,\n createdAtMs: overrides.createdAtMs ?? this.createdAtMs,\n attempt: overrides.attempt ?? this.attempt,\n status: overrides.status ?? this.status,\n meta: overrides.meta ? { ...overrides.meta } : { ...this.meta },\n insertedAtMs: overrides.insertedAtMs ?? this.insertedAtMs,\n mailboxType: overrides.mailboxType ?? this.mailboxType,\n originalEnvelope: overrides.originalEnvelope ?? this.originalEnvelope,\n serviceName: overrides.serviceName ?? this.serviceName,\n });\n }\n}\nfunction normalizeStatus(status) {\n if (!status) {\n return EnvelopeStatus.PENDING;\n }\n if (typeof status === 'string' && LEGACY_STATUS_MAP[status]) {\n return LEGACY_STATUS_MAP[status];\n }\n return status;\n}\nfunction normalizeMailbox(mailbox) {\n if (!mailbox) {\n return mailbox ?? null;\n }\n if (typeof mailbox === 'string' && LEGACY_MAILBOX_MAP[mailbox]) {\n return LEGACY_MAILBOX_MAP[mailbox];\n }\n return mailbox;\n}\n//# sourceMappingURL=tracked-envelope.js.map","const LEGACY_ERROR_CODES = {\n crypto_level_violation: 'cryptoLevelViolation',\n signature_required: 'signatureRequired',\n signature_verification_failed: 'signatureVerificationFailed',\n};\nexport function formatDeliveryErrorMessage(code, reason) {\n const normalizedCode = normalizeErrorCode(code);\n if (normalizedCode === 'cryptoLevelViolation') {\n return 'Message rejected due to insufficient encryption.';\n }\n if (normalizedCode === 'signatureRequired') {\n return 'Message rejected because it lacks a required digital signature.';\n }\n if (normalizedCode === 'signatureVerificationFailed') {\n return 'Message rejected because its digital signature could not be verified.';\n }\n const suffix = reason ? `: ${reason}` : '';\n return `Message delivery failed with code '${normalizedCode ?? 'unknown'}'${suffix}`;\n}\nfunction normalizeErrorCode(code) {\n if (!code) {\n return code;\n }\n if (LEGACY_ERROR_CODES[code]) {\n return LEGACY_ERROR_CODES[code];\n }\n return code;\n}\n//# sourceMappingURL=delivery-error.js.map","import { DeliveryOriginType, FameResponseType, generateId, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nimport { color, AnsiColor } from '../util/formatter.js';\nimport { formatTimestampForConsole, prettyModel, showEnvelopes, } from '../util/util.js';\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { AsyncLock } from '../util/lock.js';\nimport { TaskCancelledError } from '../util/task-types.js';\nimport { EnvelopeStatus, MailboxType, TrackedEnvelope, } from './tracked-envelope.js';\nimport { formatDeliveryErrorMessage } from './delivery-error.js';\nconst logger = getLogger('naylence.fame.delivery.default_delivery_tracker');\nconst STREAM_END = Symbol('stream-end');\nconst SWEEPER_TICK = Symbol('tracker-sweeper-tick');\nfunction createDeferred() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\nclass AsyncQueue {\n constructor() {\n this.items = [];\n this.waiters = [];\n }\n enqueue(value) {\n if (this.waiters.length > 0) {\n const waiter = this.waiters.shift();\n waiter?.(value);\n }\n else {\n this.items.push(value);\n }\n }\n dequeue() {\n if (this.items.length > 0) {\n return Promise.resolve(this.items.shift());\n }\n return new Promise((resolve) => {\n this.waiters.push(resolve);\n });\n }\n drain(handler) {\n while (this.items.length > 0) {\n handler(this.items.shift());\n }\n while (this.waiters.length > 0) {\n this.waiters.shift()?.(STREAM_END);\n }\n }\n}\nfunction createEnvelopeFuture(expectedResponseType) {\n const deferred = createDeferred();\n let done = false;\n const wrapResolve = (value) => {\n if (!done) {\n done = true;\n deferred.resolve(value);\n }\n };\n const wrapReject = (reason) => {\n if (!done) {\n done = true;\n deferred.reject(reason);\n }\n };\n // Attach a noop rejection handler so that early rejections before consumers await the\n // promise are marked as handled. This mirrors the Python runtime behaviour where the\n // delivery tracker owns the lifecycle of the future.\n deferred.promise.catch(() => undefined);\n return {\n promise: deferred.promise,\n resolve: wrapResolve,\n reject: wrapReject,\n expectedResponseType,\n get done() {\n return done;\n },\n set done(value) {\n done = value;\n },\n };\n}\nfunction setMetaWithLegacy(meta, modernKey, legacyKey, value) {\n meta[modernKey] = value;\n meta[legacyKey] = value;\n}\nfunction deleteMetaWithLegacy(meta, modernKey, legacyKey) {\n delete meta[modernKey];\n delete meta[legacyKey];\n}\nfunction normalizeTrackerOptions(options) {\n const futuresGcGraceSecs = readNumberOption(options, 'futuresGcGraceSecs', [\n 'futures_gc_grace_secs',\n 'futures_gc_graceSeconds',\n ]);\n const futuresSweepIntervalSecs = readNumberOption(options, 'futuresSweepIntervalSecs', ['futures_sweep_interval_secs', 'futures_sweepIntervalSecs']);\n return {\n ...(futuresGcGraceSecs !== undefined ? { futuresGcGraceSecs } : undefined),\n ...(futuresSweepIntervalSecs !== undefined\n ? { futuresSweepIntervalSecs }\n : undefined),\n };\n}\nfunction readNumberOption(source, camelKey, legacyKeys) {\n const camelValue = coerceNumericOption(source[camelKey]);\n if (camelValue !== undefined) {\n return camelValue;\n }\n for (const legacyKey of legacyKeys) {\n if (!(legacyKey in source)) {\n continue;\n }\n const value = coerceNumericOption(source[legacyKey]);\n if (value !== undefined) {\n source[camelKey] = value;\n return value;\n }\n }\n return undefined;\n}\nfunction coerceNumericOption(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === 'string' && value.trim().length > 0) {\n const parsed = Number(value);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n }\n return undefined;\n}\nexport class DefaultDeliveryTracker extends TaskSpawner {\n constructor(storageProvider, options = {}) {\n super();\n this.outbox = null;\n this.inbox = null;\n this.inboxDlq = null;\n this.node = null;\n this.correlationToEnvelope = new Map();\n this.timers = new Map();\n this.ackFutures = new Map();\n this.replyFutures = new Map();\n this.ackDoneSince = new Map();\n this.replyDoneSince = new Map();\n this.futuresSweeper = null;\n this.streamQueues = new Map();\n this.streamDone = new Map();\n this.lock = new AsyncLock();\n this.shutdownSignal = createDeferred();\n this.eventHandlers = new Set();\n this.storageProvider = storageProvider;\n this.priority = 1000;\n const normalizedOptions = normalizeTrackerOptions(options);\n this.futGcGraceSecs = Math.max(0, Math.trunc(normalizedOptions.futuresGcGraceSecs ?? 120));\n this.futSweepIntervalSecs = Math.max(1, Math.trunc(normalizedOptions.futuresSweepIntervalSecs ?? 30));\n }\n addEventHandler(handler) {\n this.eventHandlers.add(handler);\n }\n removeEventHandler(handler) {\n this.eventHandlers.delete(handler);\n }\n async onNodeInitialized(node) {\n this.node = node;\n this.outbox = await this.storageProvider.getKeyValueStore(TrackedEnvelope, '__delivery_outbox');\n this.inbox = await this.storageProvider.getKeyValueStore(TrackedEnvelope, '__delivery_inbox');\n this.inboxDlq = await this.storageProvider.getKeyValueStore(TrackedEnvelope, '__delivery_inbox_dlq');\n }\n async onNodeStarted(node) {\n this.node = node;\n if (!this.futuresSweeper) {\n this.shutdownSignal = createDeferred();\n this.futuresSweeper = this.spawn((signal) => this.sweepFuturesLoop(signal), {\n name: 'tracker-futures-sweeper',\n });\n }\n await this.recoverPending();\n }\n async onNodePreparingToStop(_node) {\n await this.waitForPendingAcks();\n }\n async onNodeStopped(_node) {\n await this.cleanup();\n await this.shutdownTasks();\n }\n async onForwardUpstreamComplete(node, envelope, result, error, context) {\n void node;\n void result;\n void error;\n void context;\n if (showEnvelopes) {\n console.log(`\\n${formatTimestampForConsole()} - ${color('Forwarded envelope to upstream', AnsiColor.BLUE)} 🚀\\n${prettyModel(envelope)}`);\n }\n return envelope;\n }\n async onForwardToRouteComplete(node, nextSegment, envelope, result, error, context) {\n void node;\n void result;\n void error;\n void context;\n if (showEnvelopes) {\n console.log(`\\n${formatTimestampForConsole()} - ${color(`Forwarded envelope to route \"${nextSegment}\"`, AnsiColor.BLUE)} 🚀\\n${prettyModel(envelope)}`);\n }\n return envelope;\n }\n async onForwardToPeerComplete(node, peerSegment, envelope, result, error, context) {\n void node;\n void result;\n void error;\n void context;\n if (showEnvelopes) {\n console.log(`\\n${formatTimestampForConsole()} - ${color(`Forwarded envelope to peer \"${peerSegment}\"`, AnsiColor.BLUE)} 🚀\\n${prettyModel(envelope)}`);\n }\n return envelope;\n }\n async onHeartbeatSent(node, envelope) {\n void node;\n if (showEnvelopes) {\n console.log(`\\n${formatTimestampForConsole()} - ${color('Sent envelope', AnsiColor.BLUE)} 🚀\\n${prettyModel(envelope)}`);\n }\n }\n async track(envelope, options) {\n const outbox = this.ensureOutbox();\n const nowMs = Date.now();\n const expectedResponseType = options.expectedResponseType;\n const tracked = await this.lock.runExclusive(async () => {\n if (this.ackFutures.has(envelope.id)) {\n logger.debug('tracker_envelope_already_tracked', {\n envp_id: envelope.id,\n });\n return null;\n }\n const corrId = envelope.corrId ?? (envelope.corrId = generateId());\n const existingEnvId = this.correlationToEnvelope.get(corrId);\n if (expectedResponseType & FameResponseType.REPLY ||\n expectedResponseType & FameResponseType.STREAM) {\n if (existingEnvId && existingEnvId !== envelope.id) {\n logger.debug('envelope_already_tracked_for_replies', {\n envp_id: envelope.id,\n corr_id: corrId,\n expected_response_type: expectedResponseType,\n });\n return null;\n }\n this.correlationToEnvelope.set(corrId, envelope.id);\n }\n if (expectedResponseType & FameResponseType.ACK) {\n const future = createEnvelopeFuture(expectedResponseType);\n this.ackFutures.set(envelope.id, future);\n }\n if (expectedResponseType & FameResponseType.REPLY) {\n const future = createEnvelopeFuture(expectedResponseType);\n this.replyFutures.set(envelope.id, future);\n }\n if (expectedResponseType & FameResponseType.STREAM) {\n this.streamQueues.set(envelope.id, new AsyncQueue());\n this.streamDone.set(envelope.id, createDeferred());\n }\n const overallTimeoutMs = options.timeoutMs;\n let firstCheckpointMs = overallTimeoutMs;\n if (options.retryPolicy && options.retryPolicy.maxRetries > 0) {\n let firstDelayMs = overallTimeoutMs;\n try {\n firstDelayMs = Math.max(0, Math.trunc(options.retryPolicy.nextDelayMs(1)));\n }\n catch (error) {\n firstDelayMs = 0;\n }\n firstCheckpointMs = Math.min(overallTimeoutMs, firstDelayMs);\n }\n const tracked = new TrackedEnvelope({\n timeoutAtMs: nowMs + firstCheckpointMs,\n overallTimeoutAtMs: nowMs + overallTimeoutMs,\n expectedResponseType,\n createdAtMs: nowMs,\n ...(options.meta ? { meta: options.meta } : {}),\n mailboxType: MailboxType.OUTBOX,\n originalEnvelope: envelope,\n });\n await outbox.set(envelope.id, tracked);\n return tracked;\n });\n if (!tracked) {\n return null;\n }\n await this.scheduleTimer(tracked, options.retryPolicy ?? null, options.retryHandler ?? null);\n logger.debug('tracker_registered_envelope', {\n envp_id: envelope.id,\n corr_id: tracked.originalEnvelope.corrId,\n expected_response: tracked.expectedResponseType,\n target: envelope.to ? String(envelope.to) : null,\n timeout_ms: options.timeoutMs,\n });\n return tracked;\n }\n async awaitAck(envelopeId, timeoutMs) {\n const future = this.lockedGetFuture(this.ackFutures, envelopeId);\n if (!future) {\n throw new Error(`No ack expected for envelope ${envelopeId}`);\n }\n return this.awaitEnvelopeFuture(envelopeId, FameResponseType.ACK, future, timeoutMs);\n }\n async awaitReply(envelopeId, timeoutMs) {\n const future = this.lockedGetFuture(this.replyFutures, envelopeId);\n if (!future) {\n throw new Error(`No reply expected for envelope ${envelopeId}`);\n }\n return this.awaitEnvelopeFuture(envelopeId, FameResponseType.REPLY | FameResponseType.STREAM, future, timeoutMs);\n }\n async onEnvelopeDelivered(inboxName, envelope, context) {\n logger.debug('envelope_delivered', {\n envp_id: envelope.id,\n corr_id: envelope.corrId,\n rtype: envelope.rtype ?? FameResponseType.NONE,\n frame_type: envelope.frame?.type ?? 'unknown',\n });\n if (!envelope.corrId) {\n logger.debug('envelope_delivered_no_corr_id', {\n envelope_id: envelope.id,\n });\n return null;\n }\n if (this.isDeliveryAckFrame(envelope.frame)) {\n if (!envelope.frame.refId) {\n logger.debug('envelope_delivered_no_ref_id', {\n envelope_id: envelope.id,\n });\n return null;\n }\n if (envelope.frame.ok) {\n await this.onAck(envelope, context);\n }\n else {\n await this.onNack(envelope, context);\n }\n return null;\n }\n return this.onCorrelatedMessage(inboxName, envelope, context);\n }\n async onCorrelatedMessage(inboxName, envelope, context) {\n void context;\n if (!envelope.corrId) {\n throw new Error('Envelope must have a correlation ID');\n }\n const outbox = this.ensureOutbox();\n const trackedId = await this.lock.runExclusive(async () => this.correlationToEnvelope.get(envelope.corrId));\n let tracked = null;\n if (trackedId) {\n const outboxEntry = await outbox.get(trackedId);\n if (outboxEntry && outboxEntry.originalEnvelope.id !== envelope.id) {\n tracked = await this.onReply(envelope, outboxEntry, context);\n }\n }\n if (!tracked) {\n const inbox = this.ensureInbox();\n tracked = (await inbox.get(envelope.id)) ?? null;\n if (tracked) {\n if (tracked.status !== EnvelopeStatus.HANDLED) {\n tracked.status = EnvelopeStatus.RECEIVED;\n await inbox.set(envelope.id, tracked);\n }\n else {\n logger.debug('tracker_duplicate_envelope_already_handled', {\n envp_id: envelope.id,\n status: tracked.status,\n });\n }\n }\n else {\n tracked = new TrackedEnvelope({\n timeoutAtMs: 0,\n overallTimeoutAtMs: 0,\n expectedResponseType: envelope.rtype ?? FameResponseType.NONE,\n createdAtMs: Date.now(),\n status: EnvelopeStatus.RECEIVED,\n mailboxType: MailboxType.INBOX,\n originalEnvelope: envelope,\n serviceName: inboxName,\n });\n await inbox.set(envelope.id, tracked);\n }\n }\n if (envelope.rtype && Boolean(envelope.rtype & FameResponseType.ACK)) {\n await this.sendAck(envelope);\n }\n return tracked;\n }\n async onEnvelopeHandled(envelope) {\n const inbox = this.ensureInbox();\n envelope.status = EnvelopeStatus.HANDLED;\n await inbox.delete(envelope.originalEnvelope.id);\n }\n async onEnvelopeHandleFailed(inboxName, envelope, context, error, isFinalFailure = false) {\n void context;\n const inbox = this.ensureInbox();\n if (error) {\n const attempt = envelope.attempt;\n setMetaWithLegacy(envelope.meta, `failureAttempt${attempt}Reason`, `failure_attempt_${attempt}_reason`, error.message);\n setMetaWithLegacy(envelope.meta, `failureAttempt${attempt}Type`, `failure_attempt_${attempt}_type`, error.name);\n setMetaWithLegacy(envelope.meta, 'lastFailureReason', 'last_failure_reason', error.message);\n setMetaWithLegacy(envelope.meta, 'lastFailureType', 'last_failure_type', error.name);\n }\n if (isFinalFailure) {\n envelope.status = EnvelopeStatus.FAILED_TO_HANDLE;\n logger.error('envelope_handle_failed_final', {\n inbox_name: inboxName,\n envp_id: envelope.originalEnvelope.id,\n error: error?.message ?? 'unknown',\n status: envelope.status,\n total_attempts: envelope.attempt,\n });\n await this.addToInboxDlq(envelope, error?.message ?? null);\n await inbox.delete(envelope.originalEnvelope.id);\n return;\n }\n logger.warning('envelope_handle_failed_retry', {\n inbox_name: inboxName,\n envp_id: envelope.originalEnvelope.id,\n error: error?.message ?? 'unknown',\n attempt: envelope.attempt,\n });\n await inbox.set(envelope.originalEnvelope.id, envelope);\n }\n async updateTrackedEnvelope(envelope) {\n if (envelope.mailboxType === MailboxType.INBOX) {\n const inbox = this.ensureInbox();\n await inbox.update(envelope.originalEnvelope.id, envelope);\n return;\n }\n if (envelope.mailboxType === MailboxType.OUTBOX) {\n throw new Error(`Updating tracked envelopes of mailbox type ${MailboxType.OUTBOX} is not supported`);\n }\n const inbox = this.ensureInbox();\n await inbox.update(envelope.originalEnvelope.id, envelope);\n }\n async onAck(envelope, context) {\n void context;\n if (!this.isDeliveryAckFrame(envelope.frame)) {\n throw new Error('Ack must be from a DeliveryAckFrame');\n }\n if (!envelope.corrId) {\n throw new Error('Ack envelope must have a correlation ID');\n }\n if (!envelope.frame.refId) {\n throw new Error('Ack frame must include refId');\n }\n const outbox = this.ensureOutbox();\n const tracked = await outbox.get(envelope.frame.refId);\n if (!tracked) {\n logger.debug('tracker_ack_for_unknown_envelope', {\n envp_id: envelope.id,\n ref_id: envelope.frame.refId,\n corr_id: envelope.corrId,\n });\n return;\n }\n if (tracked.originalEnvelope.corrId !== envelope.corrId) {\n logger.debug('tracker_ack_corr_id_mismatch', {\n envp_id: envelope.id,\n expected_corr_id: tracked.originalEnvelope.corrId,\n actual_corr_id: envelope.corrId,\n });\n return;\n }\n if (tracked.originalEnvelope.id === envelope.id) {\n return;\n }\n if (!(tracked.expectedResponseType & FameResponseType.STREAM)) {\n tracked.status = EnvelopeStatus.ACKED;\n }\n await outbox.set(tracked.originalEnvelope.id, tracked);\n await this.lock.runExclusive(async () => {\n const future = this.ackFutures.get(tracked.originalEnvelope.id);\n if (future && future.resolve) {\n future.resolve(envelope);\n }\n });\n await this.markDoneSince(this.ackFutures, tracked.originalEnvelope.id, this.ackDoneSince);\n await this.clearTimer(tracked.originalEnvelope.id);\n for (const handler of this.eventHandlers) {\n await handler.onEnvelopeAcked?.(tracked);\n }\n logger.debug('tracker_envelope_acked', {\n envp_id: tracked.originalEnvelope.id,\n });\n }\n async onNack(envelope, context) {\n void context;\n if (!this.isDeliveryAckFrame(envelope.frame)) {\n throw new Error('Nack must be from a DeliveryAckFrame');\n }\n if (!envelope.corrId) {\n throw new Error('Nack envelope must have a correlation ID');\n }\n if (!envelope.frame.refId) {\n throw new Error('Ack frame must include refId');\n }\n const outbox = this.ensureOutbox();\n const tracked = await outbox.get(envelope.frame.refId);\n if (!tracked) {\n logger.debug('tracker_nack_for_unknown_envelope', {\n envp_id: envelope.id,\n });\n return;\n }\n if (tracked.originalEnvelope.corrId !== envelope.corrId) {\n logger.debug('tracker_nack_corr_id_mismatch', {\n envp_id: envelope.id,\n expected_corr_id: tracked.originalEnvelope.corrId,\n actual_corr_id: envelope.corrId,\n });\n return;\n }\n const ackFrame = envelope.frame;\n tracked.status = EnvelopeStatus.NACKED;\n setMetaWithLegacy(tracked.meta, 'nackCode', 'nack_code', ackFrame.code);\n if (ackFrame.reason) {\n setMetaWithLegacy(tracked.meta, 'nackReason', 'nack_reason', ackFrame.reason);\n }\n else {\n deleteMetaWithLegacy(tracked.meta, 'nackReason', 'nack_reason');\n }\n await outbox.set(tracked.originalEnvelope.id, tracked);\n await this.lock.runExclusive(async () => {\n const message = formatDeliveryErrorMessage(ackFrame.code, ackFrame.reason ?? undefined);\n const nackError = new Error(message);\n const ackFuture = this.ackFutures.get(tracked.originalEnvelope.id);\n if (ackFuture && ackFuture.reject) {\n ackFuture.reject(nackError);\n }\n const replyFuture = this.replyFutures.get(tracked.originalEnvelope.id);\n if (replyFuture && replyFuture.reject) {\n replyFuture.reject(nackError);\n }\n });\n await this.markDoneSince(this.ackFutures, tracked.originalEnvelope.id, this.ackDoneSince);\n await this.markDoneSince(this.replyFutures, tracked.originalEnvelope.id, this.replyDoneSince);\n const queue = this.streamQueues.get(tracked.originalEnvelope.id);\n if (queue) {\n queue.enqueue(envelope);\n queue.enqueue(STREAM_END);\n const done = this.streamDone.get(tracked.originalEnvelope.id);\n done?.resolve();\n }\n await this.clearTimer(tracked.originalEnvelope.id);\n for (const handler of this.eventHandlers) {\n await handler.onEnvelopeNacked?.(tracked, ackFrame.reason ?? null);\n }\n logger.debug('tracker_envelope_nacked', {\n envp_id: tracked.originalEnvelope.id,\n reason: ackFrame.reason,\n });\n }\n async onReply(envelope, trackedEnvelope, context) {\n void context;\n if (!this.node) {\n throw new Error('Node is required to process replies');\n }\n const node = this.node;\n const outbox = this.ensureOutbox();\n if (trackedEnvelope.expectedResponseType & FameResponseType.STREAM) {\n await this.onStreamItem(trackedEnvelope.originalEnvelope.id, envelope);\n return trackedEnvelope;\n }\n trackedEnvelope.status = EnvelopeStatus.RESPONDED;\n await outbox.set(trackedEnvelope.originalEnvelope.id, trackedEnvelope);\n await this.clearTimer(trackedEnvelope.originalEnvelope.id);\n await this.lock.runExclusive(async () => {\n const replyFuture = this.replyFutures.get(trackedEnvelope.originalEnvelope.id);\n if (replyFuture && replyFuture.resolve) {\n replyFuture.resolve(envelope);\n }\n const ackFuture = this.ackFutures.get(trackedEnvelope.originalEnvelope.id);\n if (ackFuture && ackFuture.resolve) {\n const ackEnvelope = node.envelopeFactory.createEnvelope({\n to: envelope.replyTo ?? undefined,\n frame: {\n type: 'DeliveryAck',\n ok: true,\n refId: trackedEnvelope.originalEnvelope.id,\n reason: 'Auto-ack for reply',\n },\n corrId: envelope.corrId ?? undefined,\n traceId: envelope.traceId ?? undefined,\n });\n ackFuture.resolve(ackEnvelope);\n }\n });\n await this.markDoneSince(this.replyFutures, trackedEnvelope.originalEnvelope.id, this.replyDoneSince);\n await this.markDoneSince(this.ackFutures, trackedEnvelope.originalEnvelope.id, this.ackDoneSince);\n if (envelope.rtype && Boolean(envelope.rtype & FameResponseType.ACK)) {\n await this.sendAck(envelope);\n }\n for (const handler of this.eventHandlers) {\n await handler.onEnvelopeReplied?.(trackedEnvelope, envelope);\n }\n logger.debug('tracked_envelope_replied', {\n envp_id: trackedEnvelope.originalEnvelope.id,\n corr_id: envelope.corrId,\n });\n return trackedEnvelope;\n }\n async *iterStream(envelopeId, timeoutMs) {\n const queue = this.streamQueues.get(envelopeId);\n const done = this.streamDone.get(envelopeId);\n if (!queue || !done) {\n return;\n }\n const perGetTimeout = timeoutMs ?? null;\n while (true) {\n let item;\n if (perGetTimeout && perGetTimeout > 0) {\n item = await this.dequeueWithTimeout(queue, perGetTimeout);\n }\n else {\n item = await queue.dequeue();\n }\n if (item === STREAM_END) {\n break;\n }\n if (item instanceof Error) {\n throw item;\n }\n yield item;\n }\n await done.promise.catch(() => undefined);\n }\n async onStreamItem(envelopeId, responseEnvelope) {\n const queue = this.streamQueues.get(envelopeId);\n if (!queue) {\n return;\n }\n queue.enqueue(responseEnvelope);\n }\n async onStreamEnd(envelopeId) {\n const outbox = this.ensureOutbox();\n const entry = await outbox.get(envelopeId);\n if (entry) {\n entry.status = EnvelopeStatus.RESPONDED;\n await outbox.set(envelopeId, entry);\n }\n const queue = this.streamQueues.get(envelopeId);\n if (queue) {\n queue.enqueue(STREAM_END);\n }\n const done = this.streamDone.get(envelopeId);\n if (done) {\n done.resolve();\n }\n }\n async getTrackedEnvelope(envelopeId) {\n const outbox = this.ensureOutbox();\n return outbox.get(envelopeId);\n }\n async listPending() {\n const outbox = this.ensureOutbox();\n const allEntries = await outbox.list();\n return Object.values(allEntries).filter((entry) => entry.status === EnvelopeStatus.PENDING);\n }\n async listInbound(filter) {\n const inbox = this.inbox;\n if (!inbox) {\n return [];\n }\n const allEntries = await inbox.list();\n return Object.values(allEntries).filter((entry) => filter ? filter(entry) : true);\n }\n async addToInboxDlq(trackedEnvelope, reason = null) {\n const dlq = this.inboxDlq;\n if (!dlq) {\n logger.error('dlq_not_initialized', {\n envp_id: trackedEnvelope.originalEnvelope.id,\n });\n return;\n }\n trackedEnvelope.meta['dlq'] = true;\n if (reason) {\n setMetaWithLegacy(trackedEnvelope.meta, 'dlqReason', 'dlq_reason', reason);\n }\n else {\n deleteMetaWithLegacy(trackedEnvelope.meta, 'dlqReason', 'dlq_reason');\n }\n const deadLetteredAt = Date.now();\n setMetaWithLegacy(trackedEnvelope.meta, 'deadLetteredAtMs', 'dead_lettered_at_ms', deadLetteredAt);\n await dlq.set(trackedEnvelope.originalEnvelope.id, trackedEnvelope);\n logger.warning('envelope_moved_to_dlq', {\n envp_id: trackedEnvelope.originalEnvelope.id,\n service_name: trackedEnvelope.serviceName,\n });\n }\n async getFromInboxDlq(envelopeId) {\n const dlq = this.inboxDlq;\n if (!dlq) {\n return undefined;\n }\n return dlq.get(envelopeId);\n }\n async listInboxDlq() {\n const dlq = this.inboxDlq;\n if (!dlq) {\n return [];\n }\n const items = await dlq.list();\n return Object.values(items);\n }\n async purgeInboxDlq(predicate) {\n const dlq = this.inboxDlq;\n if (!dlq) {\n return 0;\n }\n const items = await dlq.list();\n const toDelete = Object.entries(items).filter(([, value]) => predicate ? predicate(value) : true);\n await Promise.all(toDelete.map(([key]) => dlq.delete(key)));\n if (toDelete.length) {\n logger.debug('dlq_purged', { count: toDelete.length });\n }\n return toDelete.length;\n }\n async cleanup() {\n this.shutdownSignal.resolve();\n const timers = await this.lock.runExclusive(async () => {\n const values = Array.from(this.timers.values());\n this.timers.clear();\n for (const future of this.ackFutures.values()) {\n future.reject(new Error('Tracker cleaned up before ACK received'));\n }\n this.ackFutures.clear();\n this.ackDoneSince.clear();\n for (const future of this.replyFutures.values()) {\n future.reject(new Error('Tracker cleaned up before reply received'));\n }\n this.replyFutures.clear();\n this.replyDoneSince.clear();\n for (const queue of this.streamQueues.values()) {\n queue.enqueue(STREAM_END);\n }\n this.streamQueues.clear();\n for (const done of this.streamDone.values()) {\n done.resolve();\n }\n this.streamDone.clear();\n this.correlationToEnvelope.clear();\n return values;\n });\n for (const timer of timers) {\n timer.cancel();\n try {\n await timer.promise;\n }\n catch (error) {\n if (!(error instanceof TaskCancelledError)) {\n throw error;\n }\n }\n }\n if (this.futuresSweeper) {\n this.futuresSweeper.cancel();\n try {\n await this.futuresSweeper.promise;\n }\n catch (error) {\n if (!(error instanceof TaskCancelledError)) {\n throw error;\n }\n }\n this.futuresSweeper = null;\n }\n logger.debug('tracker_cleanup_completed');\n }\n async recoverPending() {\n const pending = await this.listPending();\n logger.debug('tracker_recovering_pending', { count: pending.length });\n await this.lock.runExclusive(async () => {\n for (const tracked of pending) {\n if (tracked.expectedResponseType & FameResponseType.ACK) {\n const future = createEnvelopeFuture(tracked.expectedResponseType);\n this.ackFutures.set(tracked.originalEnvelope.id, future);\n }\n if (tracked.expectedResponseType & FameResponseType.REPLY) {\n if (tracked.originalEnvelope.corrId) {\n this.correlationToEnvelope.set(tracked.originalEnvelope.corrId, tracked.originalEnvelope.id);\n }\n const future = createEnvelopeFuture(tracked.expectedResponseType);\n this.replyFutures.set(tracked.originalEnvelope.id, future);\n }\n if (tracked.expectedResponseType & FameResponseType.STREAM) {\n if (tracked.originalEnvelope.corrId) {\n this.correlationToEnvelope.set(tracked.originalEnvelope.corrId, tracked.originalEnvelope.id);\n }\n this.streamQueues.set(tracked.originalEnvelope.id, new AsyncQueue());\n this.streamDone.set(tracked.originalEnvelope.id, createDeferred());\n }\n }\n });\n for (const tracked of pending) {\n await this.scheduleTimer(tracked, null, null);\n }\n logger.debug('tracker_recovery_completed', { count: pending.length });\n }\n ensureOutbox() {\n if (!this.outbox) {\n throw new Error('Outbox is not initialized');\n }\n return this.outbox;\n }\n ensureInbox() {\n if (!this.inbox) {\n throw new Error('Inbox is not initialized');\n }\n return this.inbox;\n }\n async waitForPendingAcks() {\n logger.debug('tracker_node_preparing_to_stop_waiting_for_pending_acks');\n const outbox = this.outbox;\n if (!outbox) {\n return;\n }\n const pending = [];\n await this.lock.runExclusive(async () => {\n for (const [envelopeId, future] of this.ackFutures.entries()) {\n if (future.promise && typeof future.promise.then === 'function') {\n const isDone = await Promise.race([\n future.promise.then(() => true, () => true),\n Promise.resolve(false),\n ]);\n if (!isDone) {\n pending.push({ envelopeId, future });\n }\n }\n }\n });\n if (!pending.length) {\n logger.debug('tracker_no_pending_acks_to_wait_for');\n return;\n }\n logger.debug('tracker_waiting_for_pending_acks', { count: pending.length });\n for (const entry of pending) {\n if (!entry) {\n continue;\n }\n try {\n const tracked = await outbox.get(entry.envelopeId);\n if (!tracked) {\n continue;\n }\n const nowMs = Date.now();\n const remainingMs = Math.max(0, tracked.overallTimeoutAtMs - nowMs);\n if (remainingMs <= 0) {\n continue;\n }\n try {\n await this.awaitWithTimeout(entry.future.promise, remainingMs);\n logger.debug('tracker_received_ack', {\n envelope_id: entry.envelopeId,\n });\n await outbox.delete(entry.envelopeId);\n }\n catch (error) {\n if (error instanceof Error && error.name === 'TimeoutError') {\n logger.debug('tracker_ack_timeout_expired', {\n envelope_id: entry.envelopeId,\n });\n }\n else {\n logger.debug('tracker_ack_wait_error', {\n envelope_id: entry.envelopeId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }\n catch (error) {\n logger.error('tracker_error_waiting_for_ack', {\n envelope_id: entry.envelopeId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n logger.debug('tracker_finished_waiting_for_pending_acks');\n }\n async scheduleTimer(tracked, retryPolicy, retryHandler) {\n const outbox = this.ensureOutbox();\n const node = this.node;\n if (!node) {\n throw new Error('Node is required to schedule timers');\n }\n await this.lock.runExclusive(async () => {\n const existing = this.timers.get(tracked.originalEnvelope.id);\n if (existing) {\n existing.cancel();\n }\n const task = this.spawn(async (signal) => {\n try {\n const nowMs = Date.now();\n const nextRetryAtMs = tracked.timeoutAtMs;\n const overallTimeoutAtMs = tracked.overallTimeoutAtMs;\n const delayMs = Math.max(0, Math.min(nextRetryAtMs, overallTimeoutAtMs) - nowMs);\n if (delayMs > 0) {\n await this.delay(delayMs, signal);\n }\n if (signal?.aborted) {\n return;\n }\n const entry = await outbox.get(tracked.originalEnvelope.id);\n if (!entry || entry.status !== EnvelopeStatus.PENDING) {\n return;\n }\n const currentTracked = entry;\n const currentNowMs = Date.now();\n if (currentNowMs >= currentTracked.overallTimeoutAtMs) {\n currentTracked.status = EnvelopeStatus.TIMED_OUT;\n await outbox.set(tracked.originalEnvelope.id, currentTracked);\n await this.lock.runExclusive(async () => {\n const ackFuture = this.ackFutures.get(tracked.originalEnvelope.id);\n if (ackFuture) {\n ackFuture.reject(new Error('Timeout waiting for ACK'));\n }\n const replyFuture = this.replyFutures.get(tracked.originalEnvelope.id);\n if (replyFuture) {\n replyFuture.reject(new Error('Timeout waiting for reply'));\n }\n });\n await this.markDoneSince(this.ackFutures, tracked.originalEnvelope.id, this.ackDoneSince);\n await this.markDoneSince(this.replyFutures, tracked.originalEnvelope.id, this.replyDoneSince);\n for (const handler of this.eventHandlers) {\n await handler.onEnvelopeTimeout?.(currentTracked);\n }\n logger.debug('tracker_envelope_timed_out', {\n envp_id: tracked.originalEnvelope.id,\n });\n return;\n }\n if (retryPolicy &&\n currentTracked.attempt < retryPolicy.maxRetries) {\n currentTracked.attempt += 1;\n const nextDelayMs = retryPolicy.nextDelayMs(currentTracked.attempt);\n const nextRetryTime = currentNowMs + nextDelayMs;\n if (nextRetryTime <= currentTracked.overallTimeoutAtMs) {\n currentTracked.timeoutAtMs = nextRetryTime;\n }\n else {\n currentTracked.timeoutAtMs = currentTracked.overallTimeoutAtMs;\n }\n if (retryHandler) {\n await retryHandler.onRetryNeeded(currentTracked.originalEnvelope, currentTracked.attempt, nextDelayMs, {\n fromSystemId: node.id,\n originType: DeliveryOriginType.LOCAL,\n expectedResponseType: currentTracked.expectedResponseType,\n });\n }\n await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);\n logger.debug('envelope_delivery_retry_scheduled', {\n envp_id: tracked.originalEnvelope.id,\n attempt: currentTracked.attempt,\n max_retries: retryPolicy.maxRetries,\n next_delay_ms: nextDelayMs,\n });\n return;\n }\n if (currentNowMs < currentTracked.overallTimeoutAtMs) {\n currentTracked.timeoutAtMs = currentTracked.overallTimeoutAtMs;\n await outbox.set(tracked.originalEnvelope.id, currentTracked);\n await this.scheduleTimer(currentTracked, retryPolicy, retryHandler);\n logger.debug('envelope_retries_exhausted_waiting_until_overall_timeout', {\n envp_id: tracked.originalEnvelope.id,\n attempt: currentTracked.attempt,\n overall_timeout_at_ms: currentTracked.overallTimeoutAtMs,\n });\n return;\n }\n currentTracked.status = EnvelopeStatus.TIMED_OUT;\n await outbox.set(tracked.originalEnvelope.id, currentTracked);\n await this.lock.runExclusive(async () => {\n const ackFuture = this.ackFutures.get(tracked.originalEnvelope.id);\n ackFuture?.reject(new Error('Timeout waiting for ACK'));\n const replyFuture = this.replyFutures.get(tracked.originalEnvelope.id);\n replyFuture?.reject(new Error('Timeout waiting for reply'));\n });\n await this.markDoneSince(this.ackFutures, tracked.originalEnvelope.id, this.ackDoneSince);\n await this.markDoneSince(this.replyFutures, tracked.originalEnvelope.id, this.replyDoneSince);\n for (const handler of this.eventHandlers) {\n await handler.onEnvelopeTimeout?.(currentTracked);\n }\n logger.debug('tracker_envelope_timed_out', {\n envp_id: tracked.originalEnvelope.id,\n });\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n return;\n }\n logger.error('tracker_timer_error', {\n envp_id: tracked.originalEnvelope.id,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }, {\n name: `tracker-${tracked.originalEnvelope.id}`,\n });\n this.timers.set(tracked.originalEnvelope.id, task);\n });\n }\n async clearTimer(envelopeId) {\n const timer = await this.lock.runExclusive(async () => this.timers.get(envelopeId));\n if (!timer) {\n return;\n }\n timer.cancel();\n try {\n await timer.promise;\n }\n catch (error) {\n if (!(error instanceof TaskCancelledError)) {\n throw error;\n }\n }\n await this.lock.runExclusive(async () => {\n this.timers.delete(envelopeId);\n });\n }\n lockedGetFuture(registry, key) {\n return registry.get(key) ?? undefined;\n }\n isDeliveryAckFrame(frame) {\n return Boolean(frame &&\n typeof frame === 'object' &&\n frame.type &&\n frame.type.endsWith('Ack'));\n }\n async awaitEnvelopeFuture(envelopeId, responseType, future, timeoutMs) {\n const outbox = this.ensureOutbox();\n let timeoutSeconds = null;\n if (typeof timeoutMs === 'number') {\n timeoutSeconds = timeoutMs;\n }\n else {\n const tracked = await outbox.get(envelopeId);\n if (tracked) {\n const remainingMs = Math.max(0, tracked.overallTimeoutAtMs - Date.now());\n timeoutSeconds = remainingMs;\n }\n }\n try {\n if (timeoutSeconds !== null) {\n return await this.awaitWithTimeout(future.promise, timeoutSeconds);\n }\n logger.debug('await_envelope_no_timeout_wait', {\n envelope_id: envelopeId,\n });\n return await future.promise;\n }\n catch (error) {\n if (error instanceof Error && error.name !== 'TimeoutError') {\n throw error;\n }\n logger.error('await_envelope_timeout_error', {\n envelope_id: envelopeId,\n timeout_ms: timeoutSeconds,\n future_done: false,\n future_cancelled: false,\n error: error instanceof Error ? error.message : String(error),\n });\n throw new Error(`Timeout waiting for responseType(${responseType}) for envelope ${envelopeId}`);\n }\n }\n async markDoneSince(registry, envId, doneSinceMap) {\n await this.lock.runExclusive(async () => {\n const future = registry.get(envId);\n if (future && !doneSinceMap.has(envId)) {\n doneSinceMap.set(envId, Date.now() / 1000);\n }\n });\n }\n async delay(ms, signal) {\n if (signal?.aborted) {\n throw new TaskCancelledError('delay-cancelled');\n }\n if (ms <= 0) {\n return;\n }\n await new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (signal) {\n signal.removeEventListener('abort', onAbort);\n }\n resolve();\n }, ms);\n const onAbort = () => {\n clearTimeout(timeoutId);\n if (signal) {\n signal.removeEventListener('abort', onAbort);\n }\n reject(new TaskCancelledError('delay-cancelled'));\n };\n if (signal) {\n signal.addEventListener('abort', onAbort);\n if (signal.aborted) {\n onAbort();\n }\n }\n });\n }\n async awaitWithTimeout(promise, timeoutMs) {\n if (timeoutMs <= 0) {\n return promise;\n }\n let timeoutId;\n const timeoutPromise = new Promise((_, reject) => {\n timeoutId = setTimeout(() => {\n reject(Object.assign(new Error('TimeoutError'), { name: 'TimeoutError' }));\n }, timeoutMs);\n });\n try {\n return await Promise.race([promise, timeoutPromise]);\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n }\n async dequeueWithTimeout(queue, timeoutMs) {\n let timeoutId;\n const timeoutPromise = new Promise((_, reject) => {\n timeoutId = setTimeout(() => reject(new Error('stream timeout waiting for next item')), timeoutMs);\n });\n try {\n const value = await Promise.race([queue.dequeue(), timeoutPromise]);\n return value;\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n }\n /* istanbul ignore next -- async sweeper loop paths are not deterministic in unit tests */\n async sweepFuturesLoop(signal) {\n const shutdownToken = 'shutdown';\n const shutdownPromise = this.shutdownSignal.promise.then(() => shutdownToken);\n while (true) {\n const delayController = new AbortController();\n const externalAbortHandler = () => {\n if (!delayController.signal.aborted) {\n delayController.abort();\n }\n };\n try {\n if (signal) {\n if (signal.aborted) {\n throw new TaskCancelledError('sweeper-aborted');\n }\n signal.addEventListener('abort', externalAbortHandler);\n }\n const waitForTick = (async () => {\n try {\n await this.delay(this.futSweepIntervalSecs * 1000, delayController.signal);\n return SWEEPER_TICK;\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n return shutdownToken;\n }\n throw error;\n }\n })();\n const result = await Promise.race([\n shutdownPromise,\n waitForTick,\n ]);\n if (result !== SWEEPER_TICK) {\n break;\n }\n if (!this.outbox) {\n continue;\n }\n const now = Date.now() / 1000;\n const ackCandidates = [];\n const replyCandidates = [];\n await this.lock.runExclusive(async () => {\n for (const [envId, since] of this.ackDoneSince.entries()) {\n if (now - since >= this.futGcGraceSecs) {\n ackCandidates.push(envId);\n }\n }\n for (const [envId, since] of this.replyDoneSince.entries()) {\n if (now - since >= this.futGcGraceSecs) {\n replyCandidates.push(envId);\n }\n }\n });\n const toRemoveAck = [];\n const toRemoveReply = [];\n for (const envId of ackCandidates) {\n const tracked = await this.outbox.get(envId);\n if (!tracked || this.statusIsTerminal(tracked.status)) {\n toRemoveAck.push(envId);\n }\n }\n for (const envId of replyCandidates) {\n const tracked = await this.outbox.get(envId);\n if (!tracked || this.statusIsTerminal(tracked.status)) {\n toRemoveReply.push(envId);\n }\n }\n if (toRemoveAck.length || toRemoveReply.length) {\n await this.lock.runExclusive(async () => {\n for (const envId of toRemoveAck) {\n this.ackFutures.delete(envId);\n this.ackDoneSince.delete(envId);\n }\n for (const envId of toRemoveReply) {\n this.replyFutures.delete(envId);\n this.replyDoneSince.delete(envId);\n }\n });\n logger.debug('tracker_swept_completed_futures', {\n ack_removed: toRemoveAck.length,\n reply_removed: toRemoveReply.length,\n grace_secs: this.futGcGraceSecs,\n });\n }\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n break;\n }\n if (error instanceof Error && error.name === 'TimeoutError') {\n continue;\n }\n logger.error('tracker_sweeper_error', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n finally {\n if (signal) {\n signal.removeEventListener('abort', externalAbortHandler);\n }\n if (!delayController.signal.aborted) {\n delayController.abort();\n }\n }\n }\n }\n statusIsTerminal(status) {\n switch (status) {\n case EnvelopeStatus.ACKED:\n case EnvelopeStatus.RESPONDED:\n case EnvelopeStatus.TIMED_OUT:\n case EnvelopeStatus.NACKED:\n return true;\n default:\n return false;\n }\n }\n async sendAck(envelope) {\n if (!this.node) {\n return;\n }\n const node = this.node;\n if (!envelope.replyTo) {\n logger.error('cannot_send_ack_no_reply_to', { envp_id: envelope.id });\n return;\n }\n if (!envelope.corrId) {\n logger.error('cannot_send_ack_no_corr_id', { envp_id: envelope.id });\n return;\n }\n logger.debug('tracker_sending_ack', {\n envp_id: envelope.id,\n ref_id: envelope.id,\n to: envelope.replyTo,\n corr_id: envelope.corrId,\n });\n const ackEnvelope = node.envelopeFactory.createEnvelope({\n to: envelope.replyTo,\n frame: {\n type: 'DeliveryAck',\n ok: true,\n refId: envelope.id,\n },\n corrId: envelope.corrId,\n traceId: envelope.traceId ?? undefined,\n });\n await node.send(ackEnvelope);\n }\n}\n//# sourceMappingURL=default-delivery-tracker.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const KEY_STORE_FACTORY_BASE_TYPE = 'KeyStoreFactory';\nexport class KeyStoreFactory extends AbstractResourceFactory {\n static async createKeyStore(config, options = {}) {\n const { storageProvider, ...restOptions } = options;\n const factoryArgs = [...(restOptions.factoryArgs ?? [])];\n if (storageProvider !== undefined) {\n factoryArgs.push(storageProvider);\n }\n const creationOptions = {\n ...restOptions,\n factoryArgs,\n };\n const instance = config\n ? await createResource(KEY_STORE_FACTORY_BASE_TYPE, config, creationOptions)\n : await createDefaultResource(KEY_STORE_FACTORY_BASE_TYPE, null, creationOptions);\n if (!instance) {\n throw new Error('Failed to create key store from configuration');\n }\n return instance;\n }\n}\n//# sourceMappingURL=key-store-factory.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE = 'AttachmentKeyValidatorFactory';\nexport class AttachmentKeyValidatorFactory extends AbstractResourceFactory {\n static async createAttachmentKeyValidator(config, options = {}) {\n const instance = config\n ? await createResource(ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, config, options)\n : await createDefaultResource(ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, null, options);\n return instance ?? null;\n }\n}\n//# sourceMappingURL=attachment-key-validator-factory.js.map","import { AbstractResourceFactory, createDefaultResource, } from '@naylence/factory';\nexport const SECURITY_MANAGER_FACTORY_BASE_TYPE = 'SecurityManagerFactory';\nexport class SecurityManagerFactory extends AbstractResourceFactory {\n static async createSecurityManager(overrides = {}) {\n const factoryArgs = [overrides];\n const instance = await createDefaultResource(SECURITY_MANAGER_FACTORY_BASE_TYPE, null, { factoryArgs });\n if (!instance) {\n throw new Error('Failed to create default SecurityManager instance');\n }\n return instance;\n }\n}\n//# sourceMappingURL=security-manager-factory.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE = 'ReplicaStickinessManagerFactory';\nexport class ReplicaStickinessManagerFactory extends AbstractResourceFactory {\n static async createReplicaStickinessManager(config, options = {}) {\n const configRecord = (config ?? null);\n const instance = configRecord\n ? await createResource(REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, configRecord, options)\n : await createDefaultResource(REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, null, options);\n return instance ?? null;\n }\n}\n//# sourceMappingURL=replica-stickiness-manager-factory.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const TRACE_EMITTER_FACTORY_BASE_TYPE = 'TraceEmitterFactory';\nexport class TraceEmitterFactory extends AbstractResourceFactory {\n static async createTraceEmitter(config, options = {}) {\n const traceEmitter = config\n ? await createResource(TRACE_EMITTER_FACTORY_BASE_TYPE, config, options)\n : await createDefaultResource(TRACE_EMITTER_FACTORY_BASE_TYPE, null, options);\n if (!traceEmitter) {\n throw new Error('Failed to create trace emitter');\n }\n return traceEmitter;\n }\n}\n// Ensure default factories are registered lazily to avoid circular ESM initialization issues\nvoid import('./noop-trace-emitter-factory.js');\nvoid import('./open-telemetry-trace-emitter-factory.js');\nvoid import('./trace-emitter-profile-factory.js');\n//# sourceMappingURL=trace-emitter-factory.js.map","import { generateIdAsync } from '@naylence/core';\nimport { createResource } from '@naylence/factory';\nimport { AdmissionClientFactory } from './admission/admission-client-factory.js';\nimport { DefaultNodeAttachClient } from './admission/default-node-attach-client.js';\nimport { TransportListenerFactory } from '../connector/transport-listener-factory.js';\nimport { StorageProviderFactory } from '../storage/storage-provider-factory.js';\nimport { InMemoryStorageProvider } from '../storage/in-memory-storage.js';\nimport { NodeMetaRecord, NODE_META_NAMESPACE } from './node-meta.js';\nimport { BindingStoreEntryRecord } from './binding-manager.js';\nimport { DeliveryPolicyFactory } from '../delivery/delivery-policy-factory.js';\nimport { DefaultDeliveryTracker } from '../delivery/default-delivery-tracker.js';\nimport { KeyStoreFactory } from '../security/keys/key-store-factory.js';\nimport { AttachmentKeyValidatorFactory } from '../security/keys/attachment-key-validator-factory.js';\nimport { SecurityManagerFactory, SECURITY_MANAGER_FACTORY_BASE_TYPE, } from '../security/security-manager-factory.js';\nimport { ReplicaStickinessManagerFactory } from '../stickiness/replica-stickiness-manager-factory.js';\nimport { TraceEmitterFactory } from '../telemetry/trace-emitter-factory.js';\nimport { getLogger } from '../util/logging.js';\nconst BINDING_STORE_NAMESPACE = '__binding_store';\nconst logger = getLogger('naylence.fame.node.factory_commons');\nfunction isPlainRecord(value) {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\nfunction coerceStringArray(value) {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((item) => typeof item === 'string');\n}\nfunction mergeStringArrays(primary, alias) {\n const base = [...primary];\n const seen = new Set(base);\n const aliasValues = coerceStringArray(alias);\n for (const entry of aliasValues) {\n if (!seen.has(entry)) {\n seen.add(entry);\n base.push(entry);\n }\n }\n return base;\n}\nfunction mergeOptionalStringArray(primary, alias) {\n const base = primary ? [...primary] : [];\n const seen = new Set(base);\n const aliasValues = coerceStringArray(alias);\n for (const entry of aliasValues) {\n if (!seen.has(entry)) {\n seen.add(entry);\n base.push(entry);\n }\n }\n return base.length ? base : undefined;\n}\nfunction mergeEnvContext(primary, alias) {\n const aliasRecord = isPlainRecord(alias) ? alias : undefined;\n if (!aliasRecord) {\n return { ...primary };\n }\n return { ...aliasRecord, ...primary };\n}\nfunction mergeUnknownArray(primary, alias) {\n if (primary.length) {\n if (Array.isArray(alias) && alias.length) {\n return [...primary, ...alias];\n }\n return [...primary];\n }\n if (Array.isArray(alias)) {\n return [...alias];\n }\n return [];\n}\nfunction coerceTransportListenerConfigs(value) {\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .filter((candidate) => Boolean(candidate &&\n typeof candidate === 'object' &&\n typeof candidate.type === 'string'))\n .map((candidate) => ({ ...candidate }));\n}\nfunction pickOption(primary, record, ...aliases) {\n if (primary !== undefined && primary !== null) {\n return primary;\n }\n for (const alias of aliases) {\n if (alias in record) {\n const value = record[alias];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return primary ?? null;\n}\nfunction pickString(primary, record, ...aliases) {\n const candidate = pickOption(primary, record, ...aliases);\n return typeof candidate === 'string' ? candidate : null;\n}\nexport async function makeCommonOptions(config, rawConfig) {\n const configRecord = config;\n const aliasRecord = isPlainRecord(rawConfig) && rawConfig !== configRecord\n ? {\n ...rawConfig,\n ...configRecord,\n }\n : configRecord;\n const requestedLogicals = mergeStringArrays(config.requestedLogicals, aliasRecord.requested_logicals ?? configRecord.requested_logicals);\n const requestedCapabilitiesMerged = mergeOptionalStringArray(config.requestedCapabilities, aliasRecord.requested_capabilities ?? configRecord.requested_capabilities);\n const envContext = mergeEnvContext(config.envContext, aliasRecord.env_context ?? configRecord.env_context);\n const services = mergeUnknownArray(config.services, aliasRecord.service_configs ?? configRecord.service_configs);\n const listeners = config.listeners.length\n ? [...config.listeners]\n : coerceTransportListenerConfigs(aliasRecord.transport_listeners ??\n configRecord.transport_listeners ??\n aliasRecord.listener_configs ??\n configRecord.listener_configs);\n const storageConfig = pickOption(config.storage ?? null, aliasRecord, 'storage_provider', 'storage_config');\n const admissionConfig = pickOption(config.admission ?? null, aliasRecord, 'admission_client');\n const attachmentKeyValidatorConfig = pickOption(config.attachmentKeyValidator ?? null, aliasRecord, 'attachment_key_validator');\n const keyStoreConfig = pickOption(config.keyStore ?? null, aliasRecord, 'key_store');\n const deliveryConfig = pickOption(config.delivery ?? null, aliasRecord, 'delivery_policy');\n const telemetryConfig = pickOption(config.telemetry ?? null, aliasRecord, 'trace_emitter', 'telemetry_config');\n const securityConfig = pickOption(config.security ?? null, aliasRecord, 'security_manager', 'security_profile');\n const publicUrl = pickString(config.publicUrl ?? null, aliasRecord, 'public_url') ?? null;\n const directParentUrl = pickString(config.directParentUrl ?? null, aliasRecord, 'direct_parent_url') ?? null;\n const hasParentFlag = config.hasParent || Boolean(aliasRecord.has_parent ?? false);\n const systemIdOverride = pickString(config.id ?? null, aliasRecord, 'system_id', 'node_id');\n const expressionOptions = createExpressionOptions(envContext);\n const storageProvider = await resolveStorageProvider(storageConfig ?? null, expressionOptions);\n const nodeMetaStore = await storageProvider.getKeyValueStore(NodeMetaRecord, NODE_META_NAMESPACE);\n const nodeMeta = await nodeMetaStore.get('self');\n const admissionClient = await resolveAdmissionClient(admissionConfig ?? null, expressionOptions);\n const hasParent = determineHasParent(hasParentFlag, directParentUrl, admissionClient);\n const replicaStickinessManager = await resolveReplicaStickinessManager(hasParent, requestedLogicals, expressionOptions);\n const attachmentKeyValidator = await resolveAttachmentKeyValidator(attachmentKeyValidatorConfig ?? null, expressionOptions);\n const keyStore = await resolveKeyStore(keyStoreConfig ?? null, storageProvider, expressionOptions);\n const deliveryPolicy = await resolveDeliveryPolicy(deliveryConfig ?? null, expressionOptions);\n const eventListeners = [];\n const deliveryTracker = new DefaultDeliveryTracker(storageProvider);\n addEventListener(deliveryTracker, eventListeners);\n const transportListeners = await resolveTransportListeners(listeners, eventListeners, expressionOptions);\n const traceEmitter = await resolveTraceEmitter(telemetryConfig ?? null, expressionOptions);\n if (traceEmitter) {\n addEventListener(traceEmitter, eventListeners);\n }\n if (admissionClient) {\n addEventListener(admissionClient, eventListeners);\n }\n if (replicaStickinessManager) {\n addEventListener(replicaStickinessManager, eventListeners);\n }\n const cryptoProvider = await resolveCryptoProvider(securityConfig ?? null, expressionOptions);\n const securityManager = await resolveSecurityManager(securityConfig ?? null, {\n keyStore,\n keyValidator: attachmentKeyValidator,\n eventListeners,\n cryptoProvider: cryptoProvider ?? null,\n }, expressionOptions);\n addEventListener(securityManager, eventListeners);\n for (const listener of transportListeners) {\n addEventListener(listener, eventListeners);\n }\n const bindingStore = await storageProvider.getKeyValueStore(BindingStoreEntryRecord, BINDING_STORE_NAMESPACE);\n const systemId = systemIdOverride ??\n nodeMeta?.id ??\n (await generateIdAsync({ mode: 'fingerprint' }));\n const attachClientOptions = {\n ...(attachmentKeyValidator ? { attachmentKeyValidator } : {}),\n ...(replicaStickinessManager ? { replicaStickinessManager } : {}),\n };\n const attachClient = new DefaultNodeAttachClient(attachClientOptions);\n return {\n systemId,\n hasParent,\n requestedLogicals,\n ...(requestedCapabilitiesMerged && requestedCapabilitiesMerged.length\n ? { requestedCapabilities: requestedCapabilitiesMerged }\n : {}),\n serviceConfigs: [...services],\n envContext: { ...envContext },\n publicUrl,\n storageProvider,\n nodeMetaStore,\n bindingStore,\n keyStore,\n admissionClient,\n attachClient,\n attachmentKeyValidator,\n replicaStickinessManager,\n deliveryPolicy,\n deliveryTracker,\n securityManager,\n cryptoProvider,\n eventListeners,\n transportListeners,\n traceEmitter,\n };\n}\nasync function resolveStorageProvider(config, options) {\n if (config) {\n try {\n return await StorageProviderFactory.createStorageProvider(config, cloneCreateOptions(options));\n }\n catch (error) {\n logger.warning('storage_provider_creation_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return new InMemoryStorageProvider();\n}\nasync function resolveAdmissionClient(config, options) {\n if (config && typeof config.hello === 'function') {\n return config;\n }\n try {\n return await AdmissionClientFactory.createAdmissionClient((config ?? null), cloneCreateOptions(options));\n }\n catch (error) {\n logger.warning('admission_client_creation_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n}\nfunction determineHasParent(hasParentFlag, directParentUrl, admissionClient) {\n if (hasParentFlag) {\n return true;\n }\n if (directParentUrl) {\n return true;\n }\n return Boolean(admissionClient?.hasUpstream);\n}\nasync function resolveReplicaStickinessManager(hasParent, requestedLogicals, options) {\n if (!hasParent) {\n return null;\n }\n const hasWildcardLogical = requestedLogicals.some((logical) => typeof logical === 'string' && logical.trim().startsWith('*.'));\n if (!hasWildcardLogical) {\n return null;\n }\n try {\n return await ReplicaStickinessManagerFactory.createReplicaStickinessManager(undefined, cloneCreateOptions(options));\n }\n catch (error) {\n logger.debug('replica_stickiness_manager_unavailable', { error });\n return null;\n }\n}\nasync function resolveAttachmentKeyValidator(config, options) {\n try {\n return await AttachmentKeyValidatorFactory.createAttachmentKeyValidator(config ?? undefined, cloneCreateOptions(options));\n }\n catch (error) {\n logger.warning('attachment_key_validator_creation_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n}\nasync function resolveKeyStore(config, storageProvider, options) {\n const baseOptions = cloneCreateOptions(options);\n return await KeyStoreFactory.createKeyStore(config ?? undefined, {\n ...baseOptions,\n storageProvider,\n });\n}\nasync function resolveDeliveryPolicy(config, options) {\n try {\n return await DeliveryPolicyFactory.createDeliveryPolicy(config ?? undefined, cloneCreateOptions(options));\n }\n catch (error) {\n logger.warning('delivery_policy_creation_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n}\nasync function resolveTransportListeners(configs, eventListeners, options) {\n if (!configs.length) {\n return [];\n }\n try {\n return await TransportListenerFactory.createTransportListeners(configs, eventListeners, cloneCreateOptions(options));\n }\n catch (error) {\n logger.warning('transport_listener_creation_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n return [];\n }\n}\nasync function resolveTraceEmitter(config, options) {\n try {\n return await TraceEmitterFactory.createTraceEmitter(config ?? undefined, cloneCreateOptions(options));\n }\n catch (error) {\n logger.warning('trace_emitter_creation_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n}\nasync function resolveSecurityManager(config, overrides, options) {\n if (config) {\n const manager = await createSecurityManagerFromConfig(config, overrides, options);\n if (manager) {\n return manager;\n }\n }\n return SecurityManagerFactory.createSecurityManager(overrides);\n}\nfunction createExpressionOptions(envContext) {\n if (!envContext || typeof envContext !== 'object') {\n return {};\n }\n const env = {};\n for (const [key, value] of Object.entries(envContext)) {\n if (value === null || value === undefined) {\n continue;\n }\n env[key] = String(value);\n }\n return Object.keys(env).length > 0 ? { env } : {};\n}\nfunction cloneCreateOptions(options) {\n const clone = { ...options };\n if (options.env) {\n clone.env = { ...options.env };\n }\n if (options.config) {\n clone.config = { ...options.config };\n }\n if (options.variables) {\n clone.variables = { ...options.variables };\n }\n if (options.factoryArgs) {\n clone.factoryArgs = [...options.factoryArgs];\n }\n return clone;\n}\nasync function createSecurityManagerFromConfig(config, overrides, options) {\n try {\n const mergedOptions = cloneCreateOptions(options);\n const factoryArgs = [...(mergedOptions.factoryArgs ?? [])];\n if (overrides !== undefined) {\n factoryArgs.push(overrides);\n }\n mergedOptions.factoryArgs = factoryArgs;\n const manager = await createResource(SECURITY_MANAGER_FACTORY_BASE_TYPE, config, mergedOptions);\n return manager ?? null;\n }\n catch (error) {\n logger.warning('security_manager_creation_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n}\nfunction addEventListener(listener, collection) {\n if (!isNodeEventListener(listener)) {\n return;\n }\n if (!collection.includes(listener)) {\n collection.push(listener);\n }\n}\nfunction isNodeEventListener(value) {\n return Boolean(value &&\n typeof value === 'object' &&\n typeof value.priority === 'number');\n}\nasync function resolveCryptoProvider(config, options) {\n // First, try to extract an explicitly provided crypto provider\n const extracted = extractCryptoProvider(config);\n if (extracted) {\n return extracted;\n }\n // Check if the security configuration requires a crypto provider\n // This happens with overlay security profiles that need envelope signing\n if (requiresCryptoProvider(config)) {\n try {\n logger.debug('auto_creating_crypto_provider', {\n reason: 'overlay_security_requires_signing',\n });\n // Dynamically import to avoid circular dependencies\n const { DefaultCryptoProvider } = await import('../security/crypto/providers/default-crypto-provider.js');\n // Extract environment variables for issuer and audience\n const env = options.env ?? {};\n const issuer = typeof env.FAME_JWT_ISSUER === 'string'\n ? env.FAME_JWT_ISSUER\n : 'naylence.runtime.node';\n const audience = typeof env.FAME_JWT_AUDIENCE === 'string'\n ? env.FAME_JWT_AUDIENCE\n : 'fame.fabric';\n return await DefaultCryptoProvider.create({\n issuer,\n audience,\n ttlSec: 3600,\n });\n }\n catch (error) {\n logger.error('failed_to_auto_create_crypto_provider', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n return null;\n}\nfunction requiresCryptoProvider(config) {\n if (!config || typeof config !== 'object') {\n return false;\n }\n const record = config;\n // Check if using SecurityProfile with overlay variant\n if (record.type === 'SecurityProfile' ||\n record.type === 'NodeSecurityProfile') {\n const profile = record.profile;\n if (typeof profile === 'string') {\n const profileLower = profile.toLowerCase();\n // Overlay variants require crypto provider for envelope signing\n if (profileLower.includes('overlay') ||\n profileLower === 'strict-overlay') {\n return true;\n }\n }\n }\n // Check if DefaultSecurityManager with signing policy\n if (record.type === 'DefaultSecurityManager') {\n const securityPolicy = record.security_policy ?? record.securityPolicy;\n if (securityPolicy && typeof securityPolicy === 'object') {\n const policyRecord = securityPolicy;\n const signing = policyRecord.signing;\n if (signing && typeof signing === 'object') {\n const signingRecord = signing;\n const outbound = signingRecord.outbound;\n if (outbound && typeof outbound === 'object') {\n const outboundRecord = outbound;\n // If default signing is enabled, crypto provider is needed\n if (outboundRecord.defaultSigning === true) {\n return true;\n }\n }\n }\n }\n }\n return false;\n}\nfunction extractCryptoProvider(config) {\n if (!config || typeof config !== 'object') {\n return null;\n }\n const record = config;\n const tryCandidate = (candidate) => {\n if (!candidate ||\n typeof candidate !== 'object' ||\n Array.isArray(candidate)) {\n return null;\n }\n if (typeof candidate.type === 'string') {\n return null;\n }\n return candidate;\n };\n if ('cryptoProvider' in record) {\n const provider = tryCandidate(record.cryptoProvider);\n if (provider) {\n return provider;\n }\n }\n if ('crypto_provider' in record) {\n const provider = tryCandidate(record.crypto_provider);\n if (provider) {\n return provider;\n }\n }\n return null;\n}\n//# sourceMappingURL=factory-commons.js.map","import { z } from 'zod';\nimport { snakeToCamelObject } from '@naylence/core';\nimport { parse as parseYaml } from 'yaml';\nimport { getLogger } from '../util/logging.js';\nexport const configLogger = getLogger('naylence.fame.config.extended_fame_config_base');\n// Create the extended schema by preprocessing and then extending the base object schema\nexport const ExtendedFameConfigSchema = z.preprocess(snakeToCamelObject, z\n .object({\n fabric: z.any().optional().describe('Fame fabric config'),\n plugins: z\n .array(z.union([\n z.string(),\n z.object({\n name: z.string(),\n export: z.string().optional(),\n }),\n ]))\n .optional()\n .default([]),\n autoLoadPlugins: z.boolean().optional().default(true),\n pluginLogLevel: z\n .enum(['silent', 'error', 'warn', 'info', 'debug'])\n .optional()\n .default('warn'),\n node: z.unknown().optional(),\n welcome: z.unknown().optional(),\n})\n .loose());\nexport function normalizeExtendedFameConfig(config) {\n const result = ExtendedFameConfigSchema.parse(config);\n return result;\n}\nexport function isPlainObject(value) {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\nexport function parseJson(content) {\n const parsed = JSON.parse(content);\n if (!isPlainObject(parsed)) {\n throw new Error('Parsed JSON config must be an object');\n }\n return parsed;\n}\nexport function parseYamlContent(content) {\n const parsed = parseYaml(content ?? '');\n if (parsed == null) {\n return {};\n }\n if (!isPlainObject(parsed)) {\n throw new Error('Parsed YAML config must be an object');\n }\n return parsed;\n}\nexport function parseConfigString(raw) {\n let jsonError;\n try {\n const parsed = parseJson(raw);\n configLogger.debug('loaded_fame_config_from_env_var_json');\n return parsed;\n }\n catch (error) {\n jsonError = error;\n }\n try {\n const parsed = parseYamlContent(raw);\n configLogger.debug('loaded_fame_config_from_env_var_yaml');\n return parsed;\n }\n catch (yamlError) {\n configLogger.error('fame_config_env_invalid', {\n json_error: jsonError instanceof Error\n ? jsonError.message\n : String(jsonError ?? ''),\n yaml_error: yamlError instanceof Error\n ? yamlError.message\n : String(yamlError ?? ''),\n });\n throw new Error(`FAME_CONFIG contains invalid JSON/YAML. JSON error: ${jsonError instanceof Error ? jsonError.message : String(jsonError ?? '')}, YAML error: ${yamlError instanceof Error ? yamlError.message : String(yamlError ?? '')}`);\n }\n}\n//# sourceMappingURL=extended-fame-config-base.js.map","import fs from 'fs';\nimport { getDefaultFameConfigResolver, setDefaultFameConfigResolver, } from '@naylence/core';\nimport { configLogger as logger, normalizeExtendedFameConfig, parseConfigString, parseJson, parseYamlContent, } from './extended-fame-config-base.js';\nimport { isNode } from '../util/logging-types.js';\nexport { ExtendedFameConfigSchema } from './extended-fame-config-base.js';\nexport { normalizeExtendedFameConfig } from './extended-fame-config-base.js';\nexport const ENV_VAR_FAME_CONFIG = 'FAME_CONFIG';\nconst CONFIG_SEARCH_PATHS = [\n 'fame-config.json',\n 'fame-config.yaml',\n 'fame-config.yml',\n '/etc/fame/fame-config.json',\n '/etc/fame/fame-config.yaml',\n '/etc/fame/fame-config.yml',\n];\nfunction readConfigFile(filePath) {\n if (!isNode || !fs || typeof fs.readFileSync !== 'function') {\n throw new Error('File system access is not available in this environment');\n }\n const content = fs.readFileSync(filePath, 'utf-8');\n const lower = filePath.toLowerCase();\n try {\n if (lower.endsWith('.yaml') || lower.endsWith('.yml')) {\n const parsed = parseYamlContent(content);\n logger.debug('loaded_fame_config_from_file_yaml', { file: filePath });\n return parsed;\n }\n const parsed = parseJson(content);\n logger.debug('loaded_fame_config_from_file_json', { file: filePath });\n return parsed;\n }\n catch (error) {\n logger.error('fame_config_file_parse_error', {\n file: filePath,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n}\nfunction resolveEnvValue(raw) {\n const trimmed = raw.trim();\n if (!trimmed) {\n return {};\n }\n if (isNode &&\n fs &&\n typeof fs.existsSync === 'function' &&\n fs.existsSync(trimmed)) {\n return readConfigFile(trimmed);\n }\n return parseConfigString(trimmed);\n}\nfunction loadFromEnv() {\n if (typeof process === 'undefined' || !process.env) {\n return null;\n }\n const raw = process.env[ENV_VAR_FAME_CONFIG];\n if (!raw) {\n return null;\n }\n try {\n return resolveEnvValue(raw);\n }\n catch (error) {\n logger.error('fame_config_env_parse_error', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n}\nfunction loadFromFiles() {\n if (!isNode || !fs || typeof fs.existsSync !== 'function') {\n return {};\n }\n for (const candidate of CONFIG_SEARCH_PATHS) {\n try {\n if (!fs.existsSync(candidate)) {\n continue;\n }\n return readConfigFile(candidate);\n }\n catch (error) {\n logger.error('fame_config_file_error', {\n file: candidate,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n return {};\n}\nlet cachedConfig = null;\nlet cachedRawConfig = null;\nexport function loadRawFameConfig() {\n if (cachedRawConfig) {\n return cachedRawConfig;\n }\n const fromEnv = loadFromEnv();\n const rawConfig = fromEnv ?? loadFromFiles();\n cachedRawConfig = rawConfig;\n return rawConfig;\n}\nexport function loadFameConfig() {\n const rawConfig = loadRawFameConfig();\n try {\n const normalized = normalizeExtendedFameConfig(rawConfig);\n cachedConfig = normalized;\n return normalized;\n }\n catch (error) {\n logger.error('fame_config_validation_error', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n}\nlet pluginsLoaded = false;\nexport async function loadPluginsFromConfig() {\n if (pluginsLoaded) {\n return;\n }\n const rawConfig = loadRawFameConfig();\n const pluginNames = rawConfig.plugins ?? [];\n if (pluginNames.length === 0) {\n pluginsLoaded = true;\n return;\n }\n logger.debug('loading_plugins_from_config', { plugins: pluginNames });\n try {\n // Import each plugin and call its register function\n for (const pluginName of pluginNames) {\n try {\n // Import from the plugin subpath (all naylence plugins export ./plugin).\n // The Vite ignore hint avoids bundler analysis warnings for this runtime-only pattern.\n const pluginModule = await import(\n /* @vite-ignore */ `${pluginName}/plugin`);\n const plugin = pluginModule.default ?? pluginModule.plugin ?? pluginModule;\n if (plugin &&\n typeof plugin.register === 'function') {\n logger.debug('registering_plugin', {\n plugin: pluginName,\n name: plugin.name,\n });\n await plugin.register();\n }\n else {\n logger.error('plugin_missing_register_method', {\n plugin: pluginName,\n keys: Object.keys(pluginModule),\n hasDefault: 'default' in pluginModule,\n hasPlugin: 'plugin' in pluginModule,\n });\n throw new Error(`Plugin ${pluginName} does not export a register() method`);\n }\n }\n catch (error) {\n logger.error('plugin_load_failed', {\n plugin: pluginName,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n throw error;\n }\n }\n pluginsLoaded = true;\n logger.debug('plugins_loaded_from_config');\n }\n catch (error) {\n logger.error('failed_to_load_plugins_from_config', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n}\nexport function getFameConfig() {\n if (cachedConfig) {\n return cachedConfig;\n }\n const config = loadFameConfig();\n cachedConfig = config;\n return config;\n}\nexport function resetFameConfigCache() {\n cachedConfig = null;\n cachedRawConfig = null;\n}\nif (isNode && !getDefaultFameConfigResolver()) {\n setDefaultFameConfigResolver(async () => loadRawFameConfig());\n}\n//# sourceMappingURL=extended-fame-config.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nimport { getFameConfig } from '../config/extended-fame-config.js';\nexport const NODE_LIKE_FACTORY_BASE_TYPE = 'NodeLikeFactory';\nexport class NodeLikeFactory extends AbstractResourceFactory {\n static async createNode(config, options = {}) {\n let resolvedConfig = config ?? null;\n if (!resolvedConfig) {\n const fameConfig = getFameConfig();\n resolvedConfig = (fameConfig?.node ?? null);\n }\n const configRecord = (resolvedConfig ?? null);\n if (!configRecord) {\n const node = await createDefaultResource(NODE_LIKE_FACTORY_BASE_TYPE, null, options);\n if (!node) {\n throw new Error('Failed to create default NodeLike resource');\n }\n return node;\n }\n const typeValue = configRecord.type;\n const hasType = typeof typeValue === 'string' && typeValue.length > 0;\n const node = hasType\n ? await createResource(NODE_LIKE_FACTORY_BASE_TYPE, configRecord, options)\n : await createDefaultResource(NODE_LIKE_FACTORY_BASE_TYPE, configRecord, options);\n if (!node) {\n throw new Error('Failed to create NodeLike resource');\n }\n return node;\n }\n}\n// export function registerNodeLikeFactory(\n// type: string,\n// factory: new (...args: unknown[]) => NodeLikeFactory\n// ): void {\n// registerFactory(NODE_LIKE_FACTORY_BASE_TYPE, type, factory);\n// }\n//# sourceMappingURL=node-like-factory.js.map","import { z } from 'zod';\nconst FameNodeModeSchema = z\n .union([z.literal('dev'), z.literal('prod')])\n .default('prod');\nconst FameNodeConfigSchemaInternal = z\n .object({\n type: z.literal('Node').default('Node'),\n mode: FameNodeModeSchema,\n id: z.string().optional().nullable(),\n directParentUrl: z.string().optional().nullable(),\n admission: z.unknown().optional().nullable(),\n requestedLogicals: z.array(z.string()).default([]),\n delivery: z.unknown().optional().nullable(),\n envContext: z.record(z.string(), z.unknown()).default({}),\n services: z.array(z.unknown()).default([]),\n hasParent: z.boolean().default(false),\n security: z.unknown().optional().nullable(),\n listeners: z.array(z.record(z.string(), z.unknown())).default([]),\n publicUrl: z.string().optional().nullable(),\n keyStore: z.unknown().optional().nullable(),\n storage: z.unknown().optional().nullable(),\n attachmentKeyValidator: z.unknown().optional().nullable(),\n telemetry: z.unknown().optional().nullable(),\n requestedCapabilities: z.array(z.string()).optional(),\n})\n .passthrough();\nexport function normalizeFameNodeConfig(input) {\n const parsed = FameNodeConfigSchemaInternal.parse(input ?? {});\n const normalized = {\n type: 'Node',\n mode: (parsed.mode ?? 'prod'),\n id: parsed.id ?? null,\n directParentUrl: parsed.directParentUrl ?? null,\n admission: parsed.admission === undefined\n ? null\n : parsed.admission,\n requestedLogicals: coerceStringArray(parsed.requestedLogicals),\n delivery: parsed.delivery === undefined\n ? null\n : parsed.delivery,\n envContext: isPlainRecord(parsed.envContext)\n ? { ...parsed.envContext }\n : {},\n services: Array.isArray(parsed.services) ? [...parsed.services] : [],\n hasParent: Boolean(parsed.hasParent),\n security: parsed.security === undefined\n ? null\n : parsed.security,\n listeners: coerceTransportListeners(parsed.listeners),\n publicUrl: parsed.publicUrl ?? null,\n keyStore: parsed.keyStore === undefined\n ? null\n : parsed.keyStore,\n storage: parsed.storage === undefined\n ? null\n : parsed.storage,\n attachmentKeyValidator: parsed.attachmentKeyValidator === undefined\n ? null\n : parsed.attachmentKeyValidator,\n telemetry: parsed.telemetry === undefined\n ? null\n : parsed.telemetry,\n };\n if (parsed.requestedCapabilities) {\n normalized.requestedCapabilities = coerceStringArray(parsed.requestedCapabilities);\n }\n return normalized;\n}\nfunction coerceStringArray(value) {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((item) => typeof item === 'string');\n}\nfunction coerceTransportListeners(value) {\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .filter((item) => Boolean(item &&\n typeof item === 'object' &&\n typeof item.type === 'string'))\n .map((listener) => ({ ...listener }));\n}\nfunction isPlainRecord(value) {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n//# sourceMappingURL=node-config.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE = 'LoadBalancerStickinessManagerFactory';\nexport class LoadBalancerStickinessManagerFactory extends AbstractResourceFactory {\n static async createLoadBalancerStickinessManager(config, options = {}) {\n const configRecord = (config ?? null);\n const instance = configRecord\n ? await createResource(LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, configRecord, options)\n : await createDefaultResource(LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, null, options);\n return instance ?? null;\n }\n}\n//# sourceMappingURL=load-balancer-stickiness-manager-factory.js.map","import { getLogger } from '../../util/logging.js';\nconst logger = getLogger('naylence.fame.sentinel.load_balancing.composite_load_balancing_strategy');\nexport class CompositeLoadBalancingStrategy {\n constructor(strategies) {\n if (!strategies.length) {\n throw new Error('CompositeLoadBalancingStrategy requires at least one strategy');\n }\n this.strategies = [...strategies];\n }\n choose(poolKey, segments, envelope) {\n if (!segments.length) {\n return null;\n }\n for (let index = 0; index < this.strategies.length; index += 1) {\n const strategy = this.strategies[index];\n try {\n const result = strategy.choose(poolKey, segments, envelope);\n if (result !== null) {\n logger.debug('composite_strategy_success', {\n envelopeId: envelope.id,\n poolKey,\n strategyIndex: index,\n strategyType: strategy.constructor?.name ?? 'unknown',\n result,\n });\n return result;\n }\n }\n catch (error) {\n logger.warning('composite_strategy_error', {\n envelopeId: envelope.id,\n poolKey,\n strategyIndex: index,\n strategyType: strategy.constructor?.name ?? 'unknown',\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n logger.debug('composite_strategy_all_failed', {\n envelopeId: envelope.id,\n poolKey,\n strategyCount: this.strategies.length,\n });\n return null;\n }\n}\n//# sourceMappingURL=composite-load-balancing-strategy.js.map","import { getLogger } from '../../util/logging.js';\nconst logger = getLogger('naylence.fame.sentinel.load_balancing.sticky_load_balancing_strategy');\nexport class StickyLoadBalancingStrategy {\n constructor(stickinessManager) {\n this.lastChosenReplica = null;\n if (!stickinessManager) {\n throw new Error('StickyLoadBalancingStrategy requires a stickiness manager');\n }\n this.stickinessManager = stickinessManager;\n }\n choose(poolKey, segments, envelope) {\n if (!segments.length) {\n return null;\n }\n const stickyReplica = this.stickinessManager.getStickyReplicaSegment(envelope, segments);\n if (stickyReplica && segments.includes(stickyReplica)) {\n logger.debug('routing_via_stickiness', {\n envelopeId: envelope.id,\n poolKey,\n replicaId: stickyReplica,\n aftPresent: Boolean(envelope.aft),\n sidPresent: Boolean(envelope.sid),\n });\n this.lastChosenReplica = stickyReplica;\n return stickyReplica;\n }\n logger.debug('no_stickiness_match_fallback', {\n envelopeId: envelope.id,\n poolKey,\n aftPresent: Boolean(envelope.aft),\n sidPresent: Boolean(envelope.sid),\n });\n return null;\n }\n getMetrics() {\n const candidate = this.stickinessManager;\n if (typeof candidate.getMetrics === 'function') {\n return candidate.getMetrics();\n }\n return {};\n }\n getAssociations() {\n const candidate = this.stickinessManager;\n if (typeof candidate.getAssociations === 'function') {\n return candidate.getAssociations();\n }\n return {};\n }\n getLastChosenReplica() {\n return this.lastChosenReplica;\n }\n}\n//# sourceMappingURL=sticky-load-balancing-strategy.js.map","import { createResource } from '@naylence/factory';\nexport const LOAD_BALANCING_STRATEGY_FACTORY_BASE = 'LoadBalancingStrategyFactory';\nexport class LoadBalancingStrategyFactory {\n constructor() {\n this.isDefault = false;\n this.priority = 0;\n }\n static async createLoadBalancingStrategy(config) {\n const finalConfig = config ?? { type: 'HRWLoadBalancingStrategy' };\n const strategy = await createResource(LOAD_BALANCING_STRATEGY_FACTORY_BASE, finalConfig);\n if (!strategy) {\n throw new Error('Failed to create load balancing strategy');\n }\n return strategy;\n }\n}\n//# sourceMappingURL=load-balancing-strategy-factory.js.map","import { createDefaultResource, createResource, } from '@naylence/factory';\nexport const ROUTING_POLICY_FACTORY_BASE = 'RoutingPolicyFactory';\nexport class RoutingPolicyFactory {\n constructor() {\n this.isDefault = false;\n this.priority = 0;\n }\n static async createRoutingPolicy(loadBalancingStrategy, config) {\n const typedConfig = config ?? null;\n if (typedConfig &&\n typeof typedConfig.type === 'string') {\n const policy = await createResource(ROUTING_POLICY_FACTORY_BASE, typedConfig, {\n factoryArgs: [loadBalancingStrategy],\n validate: false,\n });\n if (policy) {\n return policy;\n }\n }\n const policy = await createDefaultResource(ROUTING_POLICY_FACTORY_BASE, config ?? null, {\n factoryArgs: [loadBalancingStrategy],\n validate: false,\n });\n if (!policy) {\n throw new Error('Failed to create routing policy');\n }\n return policy;\n }\n}\n//# sourceMappingURL=routing-policy.js.map","export class Peer {\n constructor(options) {\n this.admissionClient = options.admissionClient;\n }\n}\n//# sourceMappingURL=peer.js.map","import { createFameEnvelope, FlowFlags, generateId } from '@naylence/core';\nimport { getCurrentEnvelope } from '../util/envelope-context.js';\nexport class NodeEnvelopeFactory {\n constructor(sidFn) {\n this.sidFn = sidFn;\n }\n createEnvelope(options) {\n const { frame, id, traceId, to, capabilities, replyTo, flowId, windowId, flags, timestamp, corrId, responseType, } = options;\n const optionsRecord = isPlainRecord(options)\n ? options\n : {};\n validateFrame(frame);\n const sidValue = this.sidFn();\n const sanitizedSid = typeof sidValue === 'string' ? sidValue.trim() : sidValue;\n const idInput = pickAlias(id ?? null, optionsRecord, 'envelope_id');\n const traceIdInput = pickAlias(traceId ?? null, optionsRecord, 'trace_id');\n const toInput = pickAlias(to ?? null, optionsRecord, 'to', 'recipient', 'target', 'address');\n const capabilitiesInput = pickAlias(capabilities ?? null, optionsRecord, 'capabilities', 'accepted_capabilities');\n const replyToInput = pickAlias(replyTo ?? null, optionsRecord, 'reply_to', 'replyAddress', 'reply_address');\n const flowIdInput = pickAlias(flowId ?? null, optionsRecord, 'flow_id');\n const windowIdInput = pickAlias(windowId ?? null, optionsRecord, 'window_id', 'seq_id');\n const flagsInput = pickAlias(flags ?? null, optionsRecord, 'flow_flags');\n const timestampInput = pickAlias(timestamp ?? null, optionsRecord, 'timestamp', 'ts');\n const corrIdInput = pickAlias(corrId ?? null, optionsRecord, 'corr_id');\n const responseTypeInput = pickAlias(responseType ?? null, optionsRecord, 'response_type', 'rtype');\n const sanitizedId = typeof idInput === 'string' ? idInput.trim() : undefined;\n const sanitizedTraceId = typeof traceIdInput === 'string' ? traceIdInput.trim() : undefined;\n const sanitizedFlowId = typeof flowIdInput === 'string' ? flowIdInput.trim() : undefined;\n const sanitizedCorrId = typeof corrIdInput === 'string' ? corrIdInput.trim() : undefined;\n const resolvedTraceId = sanitizedTraceId && sanitizedTraceId.length > 0\n ? sanitizedTraceId\n : (getCurrentEnvelope()?.trace_id ?? generateId());\n const normalizedCapabilities = normalizeCapabilities(capabilitiesInput);\n const normalizedWindowId = normalizeWindowId(windowIdInput);\n const normalizedTimestamp = normalizeTimestamp(timestampInput);\n const normalizedFlags = normalizeFlowFlags(flagsInput);\n const normalizedTo = sanitizeAddress(toInput);\n const normalizedReplyTo = sanitizeAddress(replyToInput);\n const normalizedResponseType = normalizeResponseType(responseTypeInput);\n const envelopeOptions = {\n frame,\n traceId: resolvedTraceId,\n flags: normalizedFlags ?? FlowFlags.NONE,\n ...(normalizedTimestamp ? { timestamp: normalizedTimestamp } : {}),\n };\n if (sanitizedSid && sanitizedSid.length > 0) {\n envelopeOptions.sid = sanitizedSid;\n }\n if (sanitizedId && sanitizedId.length > 0) {\n envelopeOptions.id = sanitizedId;\n }\n if (normalizedTo !== undefined) {\n envelopeOptions.to = normalizedTo;\n }\n if (normalizedCapabilities !== undefined) {\n envelopeOptions.capabilities = normalizedCapabilities;\n }\n if (normalizedResponseType !== undefined) {\n envelopeOptions.responseType = normalizedResponseType;\n }\n if (normalizedReplyTo !== undefined) {\n envelopeOptions.replyTo = normalizedReplyTo;\n }\n if (sanitizedFlowId && sanitizedFlowId.length > 0) {\n envelopeOptions.flowId = sanitizedFlowId;\n }\n if (normalizedWindowId !== undefined) {\n envelopeOptions.windowId = normalizedWindowId;\n }\n if (sanitizedCorrId && sanitizedCorrId.length > 0) {\n envelopeOptions.corrId = sanitizedCorrId;\n }\n return createFameEnvelope(envelopeOptions);\n }\n}\nfunction isPlainRecord(value) {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\nfunction pickAlias(primary, record, ...aliases) {\n if (primary !== undefined && primary !== null) {\n return primary;\n }\n for (const alias of aliases) {\n if (alias in record) {\n return record[alias];\n }\n }\n return primary;\n}\nfunction validateFrame(frame) {\n if (!frame || typeof frame !== 'object') {\n throw new Error('NodeEnvelopeFactory requires a frame object');\n }\n const typeValue = frame.type;\n if (typeof typeValue !== 'string' || typeValue.trim().length === 0) {\n throw new Error('Envelope frame must include a non-empty type property');\n }\n}\nfunction normalizeCapabilities(capabilities) {\n if (capabilities === undefined || capabilities === null) {\n return undefined;\n }\n let source = null;\n if (Array.isArray(capabilities)) {\n source = capabilities;\n }\n else if (typeof capabilities === 'string') {\n const segments = capabilities\n .split(/[\\s,]+/)\n .map((value) => value.trim())\n .filter((value) => value.length > 0);\n source = segments;\n }\n else {\n return undefined;\n }\n const normalized = source\n .map((value) => (typeof value === 'string' ? value.trim() : ''))\n .filter((value) => value.length > 0);\n return normalized.length > 0 ? normalized : [];\n}\nfunction normalizeWindowId(windowId) {\n if (windowId === undefined || windowId === null) {\n return undefined;\n }\n const numericValue = typeof windowId === 'number'\n ? windowId\n : typeof windowId === 'string'\n ? Number.parseFloat(windowId.trim())\n : Number(windowId);\n if (!Number.isFinite(numericValue)) {\n throw new Error('windowId must be a finite number');\n }\n const integerValue = Math.trunc(numericValue);\n if (integerValue < 0) {\n throw new Error('windowId must be a non-negative integer');\n }\n return integerValue;\n}\nfunction normalizeTimestamp(timestamp) {\n if (timestamp === undefined || timestamp === null) {\n return undefined;\n }\n if (timestamp instanceof Date) {\n if (Number.isNaN(timestamp.getTime())) {\n throw new Error('timestamp must be a valid Date instance');\n }\n return timestamp;\n }\n if (typeof timestamp === 'string' || typeof timestamp === 'number') {\n const value = new Date(timestamp);\n if (Number.isNaN(value.getTime())) {\n throw new Error('timestamp must be a valid Date instance');\n }\n return value;\n }\n throw new Error('timestamp must be a Date, string, or number');\n}\nfunction sanitizeAddress(address) {\n if (address === null || address === undefined) {\n return undefined;\n }\n if (typeof address === 'string') {\n const trimmed = address.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n return address;\n}\nfunction normalizeFlowFlags(flags) {\n if (flags === undefined || flags === null) {\n return undefined;\n }\n if (typeof flags === 'number' && Number.isInteger(flags)) {\n return flags;\n }\n if (typeof flags === 'string' && flags.trim().length > 0) {\n const parsed = Number.parseInt(flags.trim(), 10);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n throw new Error('flowFlags must be a finite integer value');\n}\nfunction normalizeResponseType(value) {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n return trimmed.length > 0\n ? trimmed\n : undefined;\n }\n return value;\n}\n//# sourceMappingURL=node-envelope-factory.js.map","import { DeliveryOriginType, FameResponseType, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.node.response_context_manager');\nfunction cloneSecurityContext(source) {\n if (!source) {\n return undefined;\n }\n const clone = {\n inboundCryptoLevel: source.inboundCryptoLevel,\n inboundWasSigned: source.inboundWasSigned,\n cryptoChannelId: source.cryptoChannelId,\n };\n if (source.authorization) {\n clone.authorization = source.authorization;\n }\n return clone;\n}\nexport class ResponseContextManager {\n constructor(getId) {\n this.getId = getId;\n }\n createResponseContext(requestEnvelope, requestContext) {\n const requestSecurity = requestContext?.security;\n const responseSecurity = cloneSecurityContext(requestSecurity);\n const responseContext = {\n originType: DeliveryOriginType.LOCAL,\n fromSystemId: this.getId(),\n security: responseSecurity,\n expectedResponseType: FameResponseType.NONE,\n };\n logger.debug('created_response_context', {\n request_id: requestEnvelope.id,\n inherited_crypto_level: responseSecurity?.inboundCryptoLevel ?? null,\n channel_id: responseSecurity?.cryptoChannelId ?? null,\n });\n return responseContext;\n }\n ensureResponseMetadata(responseEnvelope, requestEnvelope, responseContext) {\n if (responseContext) {\n if (!responseContext.meta) {\n responseContext.meta = {};\n }\n responseContext.meta['message-type'] = 'response';\n if (requestEnvelope.id) {\n responseContext.meta['response-to-id'] = requestEnvelope.id;\n }\n responseContext.originType = DeliveryOriginType.LOCAL;\n responseContext.fromSystemId = this.getId();\n }\n // Envelope-level metadata is intentionally omitted to defer to context usage.\n logger.debug('ensured_response_metadata', {\n response_id: responseEnvelope.id,\n request_id: requestEnvelope.id,\n });\n }\n}\n//# sourceMappingURL=response-context-manager.js.map","import { makeResponse, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.node.streaming_response_handler');\nfunction isObject(value) {\n return typeof value === 'object' && value !== null;\n}\nfunction isPlainRecord(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\nfunction pickOption(record, primary, ...aliases) {\n if (Object.prototype.hasOwnProperty.call(record, primary)) {\n const value = record[primary];\n if (value !== undefined) {\n return value;\n }\n }\n for (const alias of aliases) {\n if (Object.prototype.hasOwnProperty.call(record, alias)) {\n const value = record[alias];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction normalizeOptions(options) {\n if (!isPlainRecord(options)) {\n throw new Error('StreamingResponseHandler options must be an object');\n }\n const record = options;\n const deliverWrapper = pickOption(record, 'deliverWrapper', 'deliver_wrapper');\n const envelopeFactory = pickOption(record, 'envelopeFactory', 'envelope_factory');\n const responseContextManager = pickOption(record, 'responseContextManager', 'response_context_manager');\n if (typeof deliverWrapper !== 'function') {\n throw new Error('StreamingResponseHandler requires a deliverWrapper option');\n }\n if (!envelopeFactory) {\n throw new Error('StreamingResponseHandler requires an envelopeFactory option');\n }\n if (!responseContextManager) {\n throw new Error('StreamingResponseHandler requires a responseContextManager option');\n }\n return {\n deliverWrapper,\n envelopeFactory,\n responseContextManager,\n };\n}\nfunction isErrorPayload(value) {\n if (!isObject(value)) {\n return false;\n }\n const potentialError = value.error;\n if (!isObject(potentialError)) {\n return false;\n }\n const errorRecord = potentialError;\n return (typeof errorRecord.code === 'number' &&\n typeof errorRecord.message === 'string');\n}\nfunction isAsyncIterable(value) {\n return (!!value &&\n typeof value[Symbol.asyncIterator] === 'function');\n}\nfunction isAsyncIterator(value) {\n return !!value && typeof value.next === 'function';\n}\nfunction toAsyncIterable(value) {\n if (isAsyncIterable(value)) {\n return value;\n }\n if (isAsyncIterator(value)) {\n return {\n [Symbol.asyncIterator]() {\n return value;\n },\n };\n }\n throw new TypeError('Value is not async iterable');\n}\nexport class StreamingResponseHandler {\n constructor(deliverWrapper, envelopeFactory, responseContextManager) {\n if (typeof deliverWrapper === 'function') {\n if (!envelopeFactory || !responseContextManager) {\n throw new Error('StreamingResponseHandler requires envelopeFactory and responseContextManager when using positional arguments');\n }\n this.deliverWrapperFactory = deliverWrapper;\n this.envelopeFactory = envelopeFactory;\n this.responseContextManager = responseContextManager;\n return;\n }\n const normalized = normalizeOptions(deliverWrapper);\n this.deliverWrapperFactory = normalized.deliverWrapper;\n this.envelopeFactory = normalized.envelopeFactory;\n this.responseContextManager = normalized.responseContextManager;\n }\n deliverWrapper() {\n return this.deliverWrapperFactory();\n }\n isStreamingResult(result) {\n if (!isObject(result)) {\n return false;\n }\n const candidate = result;\n return (typeof candidate[Symbol.asyncIterator] === 'function' ||\n typeof candidate.__anext__ === 'function' ||\n isAsyncIterator(candidate));\n }\n isStreamingFameMessageResponse(result) {\n return this.isStreamingResult(result);\n }\n async handleStreamingFameMessageResponses(responses, requestEnvelope, requestContext) {\n const asyncResponses = toAsyncIterable(responses);\n logger.debug('handling_streaming_fame_message_responses', {\n request_id: requestEnvelope.id,\n });\n for await (const response of asyncResponses) {\n if (!response?.envelope) {\n logger.warning('invalid_streaming_response_type', {\n request_id: requestEnvelope.id,\n actual_type: typeof response,\n });\n continue;\n }\n const responseContext = response.context ??\n this.responseContextManager.createResponseContext(requestEnvelope, requestContext);\n this.responseContextManager.ensureResponseMetadata(response.envelope, requestEnvelope, responseContext);\n await this.deliver(response.envelope, responseContext);\n }\n }\n async handleStreamingResponse(result, requestEnvelope, requestContext, replyTo, requestId) {\n const iterable = toAsyncIterable(result);\n logger.debug('handling_streaming_response', {\n request_id: requestId,\n reply_to: replyTo,\n });\n try {\n for await (const item of iterable) {\n await this.sendRpcResponse(item, requestEnvelope, requestContext, replyTo, requestId);\n }\n await this.sendRpcResponse(null, requestEnvelope, requestContext, replyTo, requestId);\n }\n catch (error) {\n logger.error('streaming_response_handler_error', {\n request_id: requestId,\n error: error instanceof Error ? error.message : String(error),\n });\n await this.sendRpcResponse({\n error: {\n code: -32000,\n message: error instanceof Error ? error.message : String(error),\n },\n }, requestEnvelope, requestContext, replyTo, requestId);\n }\n }\n async sendRpcResponse(payload, requestEnvelope, requestContext, replyTo, requestId) {\n const responsePayload = isErrorPayload(payload)\n ? makeResponse(requestId, undefined, payload.error)\n : makeResponse(requestId, payload);\n const responseEnvelope = this.envelopeFactory.createEnvelope({\n ...(requestEnvelope.traceId ? { traceId: requestEnvelope.traceId } : {}),\n frame: {\n type: 'Data',\n payload: responsePayload,\n },\n to: replyTo,\n corrId: requestId,\n });\n const responseContext = this.responseContextManager.createResponseContext(requestEnvelope, requestContext);\n this.responseContextManager.ensureResponseMetadata(responseEnvelope, requestEnvelope, responseContext);\n logger.debug('sending_streaming_rpc_response', {\n request_id: requestId,\n response_envelope_id: responseEnvelope.id,\n reply_to: replyTo,\n is_terminal: payload === null || payload === undefined,\n });\n await this.deliver(responseEnvelope, responseContext);\n }\n async deliver(envelope, context) {\n await this.deliverWrapperFactory()(envelope, context);\n }\n}\n//# sourceMappingURL=streaming-response-handler.js.map","import { DEFAULT_POLLING_TIMEOUT_MS, extractEnvelopeAndContext, isFameMessageResponse, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nimport { withEnvelopeContextAsync } from '../util/envelope-context.js';\nimport { FameTransportClose } from '../errors/errors.js';\nimport { TaskTimeoutError } from '../util/task-types.js';\nconst logger = getLogger('naylence.fame.node.channel_polling_manager');\nexport class ChannelPollingManager {\n constructor(deliverWrapper, responseContextManager, streamingResponseHandler) {\n this.deliverWrapper = deliverWrapper;\n this.responseContextManager = responseContextManager;\n this.streamingResponseHandler = streamingResponseHandler;\n }\n async startPollingLoop(serviceName, channel, handler, stopState, pollTimeoutMs = DEFAULT_POLLING_TIMEOUT_MS) {\n logger.debug('poll_loop_started', {\n recipient: serviceName,\n });\n try {\n let draining = false;\n while (true) {\n if (this.isStopRequested(stopState) && !draining) {\n draining = true;\n logger.debug('poll_loop_draining_pending_messages', {\n recipient: serviceName,\n });\n }\n let message;\n try {\n message = await channel.receive(pollTimeoutMs ?? DEFAULT_POLLING_TIMEOUT_MS);\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n logger.debug('channel_closed', {\n recipient: serviceName,\n message: error.message,\n });\n break;\n }\n if (error instanceof TaskTimeoutError) {\n if (this.isStopRequested(stopState)) {\n break;\n }\n continue;\n }\n if (error instanceof Error && error.name === 'AbortError') {\n logger.debug('listener_cancelled', {\n recipient: serviceName,\n });\n throw error;\n }\n if (error instanceof Error && error.name === 'TimeoutError') {\n if (this.isStopRequested(stopState)) {\n break;\n }\n continue;\n }\n if (error instanceof Error && error.message === 'Channel is closed') {\n logger.debug('channel_closed', {\n recipient: serviceName,\n });\n break;\n }\n if (error instanceof Error && error.name === 'TaskCancelledError') {\n logger.debug('listener_cancelled', {\n recipient: serviceName,\n });\n throw error;\n }\n if (error instanceof Error && error.message.includes('Timeout')) {\n if (this.isStopRequested(stopState)) {\n break;\n }\n continue;\n }\n if (error instanceof Error && error.message.includes('closed')) {\n logger.debug('channel_closed', {\n recipient: serviceName,\n });\n break;\n }\n logger.error('transport_error', {\n recipient: serviceName,\n error: error instanceof Error ? error.message : String(error),\n });\n break;\n }\n if (message == null) {\n if (this.isStopRequested(stopState)) {\n break;\n }\n continue;\n }\n await this.processChannelMessage(message, handler, serviceName);\n }\n }\n finally {\n logger.debug('poll_loop_exiting', {\n recipient: serviceName,\n });\n }\n }\n async processChannelMessage(message, handler, serviceName) {\n const [envelope, deliveryContext] = extractEnvelopeAndContext(message);\n await withEnvelopeContextAsync(envelope, async () => {\n try {\n const result = await handler(envelope, deliveryContext);\n await this.processHandlerResult(result, envelope, deliveryContext, serviceName);\n }\n catch (error) {\n logger.error('handler_crashed', {\n recipient: serviceName,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n });\n }\n async processHandlerResult(result, envelope, context, serviceName) {\n if (isFameMessageResponse(result)) {\n await this.handleMessageResponse(result, envelope, context, serviceName);\n return;\n }\n if (this.streamingResponseHandler.isStreamingFameMessageResponse(result)) {\n logger.debug('handling_streaming_fame_message_responses', {\n service_name: serviceName,\n envelope_id: envelope.id,\n });\n await this.streamingResponseHandler.handleStreamingFameMessageResponses(result, envelope, context);\n }\n }\n async handleMessageResponse(response, requestEnvelope, requestContext, serviceName) {\n logger.debug('delivering_envelope_response_message', {\n service_name: serviceName,\n response_envelope_id: response.envelope.id,\n });\n const responseContext = response.context ??\n this.responseContextManager.createResponseContext(requestEnvelope, requestContext);\n this.responseContextManager.ensureResponseMetadata(response.envelope, requestEnvelope, responseContext);\n await this.deliverWrapper()(response.envelope, responseContext);\n }\n isStopRequested(state) {\n if (state.stopped === true) {\n return true;\n }\n if (state.stop_state === true) {\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=channel-polling-manager.js.map","import { makeResponse, parseRequest, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nimport { isFameMessageResponse } from '@naylence/core';\nconst logger = getLogger('naylence.fame.node.rpc_server_handler');\nfunction isPlainRecord(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\nfunction cloneParams(value) {\n if (!isPlainRecord(value)) {\n return {};\n }\n return { ...value };\n}\nfunction coerceReplyDestination(value) {\n if (typeof value === 'string') {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n if (value &&\n typeof value === 'object' &&\n 'toString' in value &&\n typeof value.toString === 'function') {\n const result = value.toString();\n if (typeof result === 'string') {\n const trimmed = result.trim();\n if (trimmed.length > 0 && trimmed !== '[object Object]') {\n return trimmed;\n }\n }\n }\n return null;\n}\nexport class RPCServerHandler {\n constructor(envelopeFactory, responseContextManager, streamingResponseHandler) {\n this.envelopeFactory = envelopeFactory;\n this.responseContextManager = responseContextManager;\n this.streamingResponseHandler = streamingResponseHandler;\n }\n async handleRpcRequest(envelope, handlerContext, handler, serviceName) {\n if (!this.isDataFrame(envelope.frame)) {\n logger.warning('rpc_request_missing_data_frame', {\n service_name: serviceName,\n envelope_id: envelope.id,\n });\n return;\n }\n logger.debug('rpc_request_received', {\n service_name: serviceName,\n envelope_id: envelope.id,\n trace_id: envelope.traceId,\n reply_to: envelope.replyTo,\n });\n let request;\n let params = {};\n try {\n request = parseRequest(envelope.frame.payload);\n params = cloneParams(request.params);\n const paramKeys = Object.keys(params);\n logger.debug('parsed_rpc_request', {\n service_name: serviceName,\n method: request.method,\n request_id: request.id,\n envelope_id: envelope.id,\n params_keys: paramKeys.length > 0 ? paramKeys : undefined,\n });\n }\n catch (error) {\n logger.warning('request_decode_error', {\n service_name: serviceName,\n envelope_id: envelope.id,\n error: error instanceof Error ? error.message : String(error),\n });\n return;\n }\n if (request.id == null) {\n logger.warning('request_missing_id', {\n service_name: serviceName,\n envelope_id: envelope.id,\n });\n return;\n }\n const replyTo = this.resolveReplyTo(envelope, params);\n if (!replyTo) {\n logger.warning('missing_reply_to', {\n service_name: serviceName,\n envelope_id: envelope.id,\n request_id: request.id,\n });\n return;\n }\n let handlerResult;\n try {\n logger.debug('calling_rpc_handler', {\n service_name: serviceName,\n method: request.method,\n request_id: request.id,\n });\n handlerResult = await handler(request.method, params);\n logger.debug('rpc_handler_returned', {\n service_name: serviceName,\n method: request.method,\n request_id: request.id,\n result_type: handlerResult === null ? 'null' : typeof handlerResult,\n is_streaming: this.streamingResponseHandler.isStreamingResult(handlerResult),\n });\n }\n catch (error) {\n logger.error('rpc_handler_error', {\n service_name: serviceName,\n request_id: request.id,\n envelope_id: envelope.id,\n error: error instanceof Error ? error.message : String(error),\n });\n const response = makeResponse(request.id, undefined, this.toJsonRpcError(error));\n return this.createTraditionalResponse(response, request.id, envelope, replyTo, handlerContext, serviceName);\n }\n if (isFameMessageResponse(handlerResult)) {\n logger.debug('returning_response_message', {\n service_name: serviceName,\n request_id: request.id,\n response_envelope_id: handlerResult.envelope.id,\n });\n return handlerResult;\n }\n if (this.streamingResponseHandler.isStreamingResult(handlerResult)) {\n logger.debug('handling_streaming_response', {\n service_name: serviceName,\n request_id: request.id,\n envelope_id: envelope.id,\n });\n await this.streamingResponseHandler.handleStreamingResponse(handlerResult, envelope, handlerContext, replyTo, String(request.id));\n return;\n }\n const response = makeResponse(request.id, handlerResult);\n return this.createTraditionalResponse(response, request.id, envelope, replyTo, handlerContext, serviceName);\n }\n resolveReplyTo(envelope, params) {\n const envelopeReply = coerceReplyDestination(envelope.replyTo);\n if (envelopeReply) {\n return envelopeReply;\n }\n const aliases = ['reply_to', 'replyTo', 'reply_address', 'replyAddress'];\n for (const alias of aliases) {\n if (!Object.prototype.hasOwnProperty.call(params, alias)) {\n continue;\n }\n const candidate = coerceReplyDestination(params[alias]);\n if (candidate) {\n return candidate;\n }\n }\n return null;\n }\n async createTraditionalResponse(payload, requestId, requestEnvelope, replyTo, handlerContext, serviceName) {\n logger.debug('creating_traditional_response_envelope', {\n service_name: serviceName,\n request_id: requestId,\n envelope_id: requestEnvelope.id,\n reply_to: replyTo,\n });\n const frame = {\n type: 'Data',\n payload,\n };\n const responseEnvelope = this.envelopeFactory.createEnvelope({\n ...(requestEnvelope.traceId ? { traceId: requestEnvelope.traceId } : {}),\n frame,\n to: replyTo,\n corrId: String(requestId),\n });\n const responseContext = this.responseContextManager.createResponseContext(requestEnvelope, handlerContext);\n if (!responseContext.meta) {\n responseContext.meta = {};\n }\n responseContext.meta['message-type'] = 'response';\n if (requestEnvelope.id) {\n responseContext.meta['response-to-id'] = requestEnvelope.id;\n }\n logger.debug('returning_traditional_response', {\n service_name: serviceName,\n request_id: requestId,\n envelope_id: requestEnvelope.id,\n response_envelope_id: responseEnvelope.id,\n });\n return {\n envelope: responseEnvelope,\n context: responseContext,\n };\n }\n isDataFrame(frame) {\n return (typeof frame === 'object' &&\n frame !== null &&\n frame.type === 'Data');\n }\n toJsonRpcError(error) {\n if (error && typeof error === 'object') {\n const maybeError = error;\n if (maybeError.code && maybeError.message) {\n return {\n code: maybeError.code,\n message: maybeError.message,\n data: maybeError.data,\n };\n }\n }\n const message = error instanceof Error ? error.message : String(error);\n return {\n code: -32603,\n message,\n data: error instanceof Error ? error.stack : undefined,\n };\n }\n}\n//# sourceMappingURL=rpc-server-handler.js.map","import { DEFAULT_INVOKE_TIMEOUT_MILLIS, DeliveryOriginType, FameResponseType, formatAddress, generateId, makeRequest, parseResponse, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nimport { currentTraceId } from '../util/envelope-context.js';\nimport { formatDeliveryErrorMessage } from '../delivery/delivery-error.js';\nconst logger = getLogger('naylence.fame.node.rpc_client_manager');\nfunction isPlainRecord(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\nfunction pickOption(primary, record, ...aliases) {\n if (primary !== undefined && primary !== null) {\n return primary;\n }\n for (const alias of aliases) {\n if (Object.prototype.hasOwnProperty.call(record, alias)) {\n const candidate = record[alias];\n if (candidate !== undefined && candidate !== null) {\n return candidate;\n }\n }\n }\n return undefined;\n}\nfunction coerceStringArray(value) {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (!Array.isArray(value)) {\n return undefined;\n }\n const filtered = value.filter((entry) => typeof entry === 'string');\n return filtered.length > 0 ? [...filtered] : [];\n}\nfunction normalizeTimeout(value) {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return undefined;\n }\n const parsed = Number(trimmed);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n}\nfunction coerceParams(value) {\n if (isPlainRecord(value)) {\n return { ...value };\n }\n return {};\n}\nfunction normalizeInvokeOptions(options) {\n if (!isPlainRecord(options)) {\n throw new Error('RPC invoke options must be a plain object');\n }\n const record = options;\n const methodValue = record['method'];\n if (typeof methodValue !== 'string' || methodValue.trim().length === 0) {\n throw new Error('RPC invoke options must include a method name');\n }\n const targetAddr = pickOption(record['targetAddr'], record, 'target_addr');\n const capabilitiesValue = pickOption(record['capabilities'], record, 'accepted_capabilities');\n const capabilities = coerceStringArray(capabilitiesValue);\n const paramsValue = pickOption(record['params'], record, 'params');\n const params = coerceParams(paramsValue);\n const timeoutValue = pickOption(record['timeoutMs'], record, 'timeout_ms');\n const timeoutMs = normalizeTimeout(timeoutValue);\n return {\n targetAddr: targetAddr ?? undefined,\n capabilities,\n method: methodValue,\n params,\n timeoutMs,\n };\n}\nexport class RPCClientManager {\n constructor(getPhysicalPath, getId, deliverWrapper, envelopeFactory, listenCallback, deliveryTracker) {\n this.getPhysicalPath = getPhysicalPath;\n this.getId = getId;\n this.deliverWrapper = deliverWrapper;\n this.envelopeFactory = envelopeFactory;\n this.listenCallback = listenCallback;\n this.deliveryTracker = deliveryTracker;\n this.pending = new Map();\n this.pendingByEnvelopeId = new Map();\n this.rpcReplyAddress = null;\n this.rpcListenerAddress = null;\n this.rpcBound = false;\n this.trackerEventHandler = null;\n this.trackerWithEvents = null;\n this.setupTrackerEventHandler();\n }\n setupTrackerEventHandler() {\n if (!this.deliveryTracker || typeof this.deliveryTracker !== 'object') {\n return;\n }\n const tracker = this.deliveryTracker;\n if (typeof tracker.addEventHandler !== 'function') {\n return;\n }\n this.trackerEventHandler = {\n onEnvelopeNacked: (tracked, reason) => {\n this.handleDeliveryNack(tracked, reason ?? null);\n },\n };\n this.trackerWithEvents = tracker;\n tracker.addEventHandler(this.trackerEventHandler);\n }\n async invoke(optionsInput) {\n const { targetAddr, capabilities, method, params, timeoutMs } = normalizeInvokeOptions(optionsInput);\n if (!targetAddr && !capabilities) {\n throw new Error('Either target address or capabilities must be provided');\n }\n if (targetAddr && capabilities) {\n throw new Error('Provide either target address or capabilities, not both');\n }\n await this.ensureReplyListener();\n const requestId = generateId();\n const request = makeRequest(method, params, requestId);\n const frame = {\n type: 'Data',\n payload: request,\n };\n const traceId = currentTraceId();\n const envelopeOptions = {\n frame,\n corrId: requestId,\n responseType: FameResponseType.REPLY,\n };\n if (traceId) {\n envelopeOptions.traceId = traceId;\n }\n if (targetAddr) {\n envelopeOptions.to = targetAddr;\n }\n if (capabilities && capabilities.length > 0) {\n envelopeOptions.capabilities = capabilities;\n }\n if (this.rpcReplyAddress) {\n envelopeOptions.replyTo = this.rpcReplyAddress;\n }\n const envelope = this.envelopeFactory.createEnvelope(envelopeOptions);\n const responsePromise = this.trackPendingRequest({\n requestId,\n envelopeId: envelope.id,\n timeoutMs: timeoutMs ?? DEFAULT_INVOKE_TIMEOUT_MILLIS,\n expected: FameResponseType.REPLY,\n });\n await this.sendRpcRequest(requestId, envelope, FameResponseType.REPLY, timeoutMs);\n return responsePromise;\n }\n async invokeStream(optionsInput) {\n const { targetAddr, capabilities, method, params, timeoutMs } = normalizeInvokeOptions(optionsInput);\n if (!targetAddr && !capabilities) {\n throw new Error('Either target address or capabilities must be provided');\n }\n if (targetAddr && capabilities) {\n throw new Error('Provide either target address or capabilities, not both');\n }\n await this.ensureReplyListener();\n const requestId = generateId();\n const request = makeRequest(method, params, requestId);\n const frame = {\n type: 'Data',\n payload: request,\n };\n const traceId = currentTraceId();\n const envelopeOptions = {\n frame,\n corrId: requestId,\n responseType: FameResponseType.STREAM,\n };\n if (traceId) {\n envelopeOptions.traceId = traceId;\n }\n if (targetAddr) {\n envelopeOptions.to = targetAddr;\n }\n if (capabilities && capabilities.length > 0) {\n envelopeOptions.capabilities = capabilities;\n }\n if (this.rpcReplyAddress) {\n envelopeOptions.replyTo = this.rpcReplyAddress;\n }\n const envelope = this.envelopeFactory.createEnvelope(envelopeOptions);\n const iterator = this.createStreamIterator(requestId, envelope.id, timeoutMs ?? DEFAULT_INVOKE_TIMEOUT_MILLIS);\n await this.sendRpcRequest(requestId, envelope, FameResponseType.STREAM, timeoutMs);\n return iterator;\n }\n handleDeliveryNack(tracked, reason) {\n const envelopeId = tracked.originalEnvelope.id;\n const requestId = this.pendingByEnvelopeId.get(envelopeId);\n if (!requestId) {\n return;\n }\n const pending = this.pending.get(requestId);\n if (!pending) {\n this.pendingByEnvelopeId.delete(envelopeId);\n return;\n }\n if (pending.timer) {\n clearTimeout(pending.timer);\n pending.timer = null;\n }\n const metaCode = tracked.meta?.['nack_code'];\n const metaReason = tracked.meta?.['nack_reason'];\n const formattedMessage = formatDeliveryErrorMessage(typeof metaCode === 'string' ? metaCode : 'DELIVERY_ERROR', reason ??\n (typeof metaReason === 'string' ? metaReason : undefined));\n logger.debug('pending_request_rejected_by_delivery_nack', {\n envelope_id: envelopeId,\n request_id: requestId,\n code: typeof metaCode === 'string' ? metaCode : 'DELIVERY_ERROR',\n reason: reason ?? (typeof metaReason === 'string' ? metaReason : undefined),\n entry_type: pending.type,\n });\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(envelopeId);\n const nackError = new Error(formattedMessage);\n if (pending.type === 'single') {\n pending.reject(nackError);\n }\n else {\n pending.end(nackError);\n }\n }\n async cleanup() {\n if (this.trackerWithEvents && this.trackerEventHandler) {\n try {\n this.trackerWithEvents.removeEventHandler?.(this.trackerEventHandler);\n }\n catch (error) {\n logger.debug('rpc_tracker_handler_remove_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n this.trackerEventHandler = null;\n this.trackerWithEvents = null;\n }\n this.rpcBound = false;\n this.rpcReplyAddress = null;\n this.rpcListenerAddress = null;\n for (const [requestId, pending] of Array.from(this.pending.entries())) {\n if (pending.timer) {\n clearTimeout(pending.timer);\n }\n if (pending.type === 'single') {\n pending.reject(new Error('RPC client cleaned up'));\n }\n else {\n pending.end(new Error('RPC client cleaned up'));\n }\n this.pendingByEnvelopeId.delete(pending.envelopeId);\n this.pending.delete(requestId);\n }\n this.pending.clear();\n this.pendingByEnvelopeId.clear();\n }\n async ensureReplyListener() {\n if (this.rpcBound) {\n return;\n }\n const recipient = `__rpc__${generateId()}`;\n this.rpcReplyAddress = formatAddress(recipient, this.getPhysicalPath());\n const handler = async (envelope, _context) => {\n await this.handleReplyEnvelope(envelope);\n return null;\n };\n this.rpcListenerAddress = await this.listenCallback(recipient, handler);\n this.rpcBound = true;\n logger.debug('rpc_reply_listener_bound', {\n reply_recipient: recipient,\n reply_address: this.rpcReplyAddress?.toString(),\n listener_address: this.rpcListenerAddress?.toString(),\n });\n }\n trackPendingRequest(params) {\n const { requestId, envelopeId, timeoutMs, expected } = params;\n if (this.pending.has(requestId)) {\n throw new Error(`Request ${requestId} is already pending`);\n }\n let timer = null;\n const promise = new Promise((resolve, reject) => {\n timer = setTimeout(() => {\n const pendingEntry = this.pending.get(requestId);\n if (pendingEntry) {\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(pendingEntry.envelopeId);\n }\n reject(new Error(`Timeout waiting for RPC response ${requestId}`));\n }, timeoutMs);\n const entry = {\n type: 'single',\n expected,\n timer,\n envelopeId,\n resolve,\n reject,\n };\n this.pending.set(requestId, entry);\n this.pendingByEnvelopeId.set(envelopeId, requestId);\n });\n promise.catch(() => undefined);\n const exposedPromise = promise.finally(() => {\n if (timer) {\n clearTimeout(timer);\n }\n });\n exposedPromise.catch(() => undefined);\n return exposedPromise;\n }\n createStreamIterator(requestId, envelopeId, timeoutMs) {\n if (this.pending.has(requestId)) {\n throw new Error(`Request ${requestId} is already pending`);\n }\n let timer = null;\n const queue = [];\n let pendingResolver = null;\n let completed = false;\n const deliverNext = () => {\n if (!pendingResolver || queue.length === 0) {\n return;\n }\n const item = queue.shift();\n const resolver = pendingResolver;\n pendingResolver = null;\n if (item.kind === 'value') {\n resolver.resolve({ value: item.value, done: false });\n return;\n }\n completed = true;\n if (item.kind === 'end') {\n resolver.resolve({ value: undefined, done: true });\n return;\n }\n resolver.reject(item.error);\n };\n const push = (value) => {\n if (completed) {\n return;\n }\n queue.push({ kind: 'value', value });\n deliverNext();\n };\n const end = (error) => {\n if (completed) {\n return;\n }\n if (timer) {\n clearTimeout(timer);\n }\n if (error) {\n queue.push({ kind: 'error', error });\n }\n else {\n queue.push({ kind: 'end' });\n }\n deliverNext();\n completed = true;\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(envelopeId);\n const finalizePromise = this.notifyStreamClosed(envelopeId);\n if (finalizePromise) {\n finalizePromise.catch((notifyError) => {\n logger.debug('stream_tracker_finalize_failed', {\n request_id: requestId,\n envelope_id: envelopeId,\n error: notifyError instanceof Error\n ? notifyError.message\n : String(notifyError),\n });\n });\n }\n };\n timer = setTimeout(() => {\n end(new Error(`Timeout waiting for streaming RPC response ${requestId}`));\n }, timeoutMs);\n const entry = {\n type: 'stream',\n expected: FameResponseType.STREAM,\n timer,\n push,\n end,\n envelopeId,\n };\n this.pending.set(requestId, entry);\n this.pendingByEnvelopeId.set(envelopeId, requestId);\n const iterator = {\n next: () => {\n if (queue.length > 0) {\n const item = queue.shift();\n if (item.kind === 'value') {\n return Promise.resolve({ value: item.value, done: false });\n }\n completed = true;\n if (item.kind === 'end') {\n return Promise.resolve({ value: undefined, done: true });\n }\n return Promise.reject(item.error);\n }\n if (completed) {\n return Promise.resolve({ value: undefined, done: true });\n }\n return new Promise((resolve, reject) => {\n pendingResolver = { resolve, reject };\n });\n },\n return: () => {\n end();\n return Promise.resolve({ value: undefined, done: true });\n },\n throw: (error) => {\n const err = error instanceof Error\n ? error\n : new Error(String(error ?? 'Stream aborted'));\n end(err);\n return Promise.reject(err);\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n return iterator;\n }\n async sendRpcRequest(requestId, envelope, expectedResponseType, timeoutMs) {\n logger.debug('sending_rpc_request', {\n envp_id: envelope.id,\n corr_id: envelope.corrId,\n request_id: requestId,\n target_address: envelope.to,\n expected_response_type: expectedResponseType,\n });\n try {\n if (this.deliveryTracker && 'track' in this.deliveryTracker) {\n await this.deliveryTracker.track(envelope, {\n timeoutMs: timeoutMs ?? DEFAULT_INVOKE_TIMEOUT_MILLIS,\n expectedResponseType,\n });\n }\n }\n catch (error) {\n logger.warning('delivery_tracker_track_failed', {\n request_id: requestId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n const context = {\n originType: DeliveryOriginType.LOCAL,\n fromSystemId: this.getId(),\n expectedResponseType,\n };\n await this.deliverWrapper()(envelope, context);\n }\n async handleReplyEnvelope(envelope) {\n logger.debug('handle_reply_envelope_received', {\n envelope_id: envelope.id,\n corr_id: envelope.corrId,\n frame_type: envelope.frame?.['type'],\n });\n let requestId = envelope.corrId ?? envelope.id;\n if (!requestId) {\n logger.warning('reply_envelope_missing_corr_id', {\n envelope_id: envelope.id,\n });\n return;\n }\n let entry = this.pending.get(requestId);\n if (!entry &&\n envelope.frame &&\n envelope.frame.type === 'DeliveryAck' &&\n envelope.frame.refId) {\n const frame = envelope.frame;\n const mappedRequestId = this.pendingByEnvelopeId.get(frame.refId);\n if (mappedRequestId) {\n requestId = mappedRequestId;\n entry = this.pending.get(mappedRequestId);\n }\n }\n if (!entry) {\n logger.debug('no_pending_request_for_reply', {\n request_id: requestId,\n });\n return;\n }\n logger.debug('handle_reply_envelope', {\n envelope_id: envelope.id,\n request_id: requestId,\n corr_id: envelope.corrId,\n frame_type: envelope.frame?.['type'],\n entry_type: entry.type,\n });\n if (envelope.frame &&\n envelope.frame.type === 'DeliveryAck') {\n const frame = envelope.frame;\n const ackIndicatesSuccess = frame.ok === true ||\n (frame.ok === undefined && !frame.code && !frame.reason);\n if (ackIndicatesSuccess) {\n logger.debug('pending_request_delivery_acknowledged', {\n request_id: requestId,\n envelope_id: envelope.id,\n ref_id: frame.refId ?? null,\n });\n return;\n }\n if (entry.timer) {\n clearTimeout(entry.timer);\n entry.timer = null;\n }\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(entry.envelopeId);\n const errorMessage = formatDeliveryErrorMessage(frame.code, frame.reason);\n const error = new Error(errorMessage);\n if (entry.type === 'single') {\n entry.reject(error);\n }\n else {\n entry.end(error);\n }\n return;\n }\n if (entry.timer) {\n clearTimeout(entry.timer);\n entry.timer = null;\n }\n if (!this.isDataFrame(envelope.frame)) {\n logger.warning('unexpected_reply_frame_type', {\n request_id: requestId,\n frame_type: envelope.frame?.['type'],\n });\n if (entry.type === 'single') {\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(entry.envelopeId);\n entry.reject(new Error('Unexpected frame type in reply'));\n }\n else {\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(entry.envelopeId);\n entry.end(new Error('Unexpected frame type in reply'));\n }\n return;\n }\n try {\n const response = parseResponse(envelope.frame.payload);\n if (response.error) {\n const error = new Error(response.error.message ?? 'RPC error');\n if (entry.type === 'single') {\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(entry.envelopeId);\n entry.reject(error);\n }\n else {\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(entry.envelopeId);\n entry.end(error);\n }\n return;\n }\n if (entry.type === 'single') {\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(entry.envelopeId);\n entry.resolve(response.result);\n return;\n }\n if (response.result === null || response.result === undefined) {\n this.forwardStreamItem(entry.envelopeId, envelope);\n entry.end();\n return;\n }\n entry.push(response.result);\n this.forwardStreamItem(entry.envelopeId, envelope);\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n if (entry.type === 'single') {\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(entry.envelopeId);\n entry.reject(err);\n }\n else {\n this.pending.delete(requestId);\n this.pendingByEnvelopeId.delete(entry.envelopeId);\n entry.end(err);\n }\n }\n }\n forwardStreamItem(envelopeId, envelope) {\n if (!this.deliveryTracker ||\n typeof this.deliveryTracker.onStreamItem !== 'function') {\n return;\n }\n Promise.resolve(this.deliveryTracker.onStreamItem(envelopeId, envelope)).catch((error) => {\n logger.debug('stream_tracker_push_failed', {\n envelope_id: envelopeId,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n }\n notifyStreamClosed(envelopeId) {\n if (!this.deliveryTracker ||\n typeof this.deliveryTracker.onStreamEnd !== 'function') {\n return null;\n }\n return Promise.resolve(this.deliveryTracker.onStreamEnd(envelopeId));\n }\n isDataFrame(frame) {\n return (typeof frame === 'object' &&\n frame !== null &&\n frame.type === 'Data');\n }\n}\n//# sourceMappingURL=rpc-client-manager.js.map","import { DEFAULT_INVOKE_TIMEOUT_MILLIS, DEFAULT_POLLING_TIMEOUT_MS, formatAddress, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { AsyncLock } from '../util/lock.js';\nimport { ResponseContextManager } from './response-context-manager.js';\nimport { StreamingResponseHandler } from './streaming-response-handler.js';\nimport { ChannelPollingManager } from './channel-polling-manager.js';\nimport { RPCServerHandler } from './rpc-server-handler.js';\nimport { RPCClientManager } from './rpc-client-manager.js';\nimport { EnvelopeStatus, MailboxType, } from '../delivery/tracked-envelope.js';\nconst logger = getLogger('naylence.fame.node.envelope_listener_manager');\nconst SYSTEM_INBOX = '__sys__';\nclass EnvelopeListener {\n constructor(stopFn, task) {\n this.stopFn = stopFn;\n this.task = task;\n }\n stop() {\n logger.debug('stopping_listener', {\n task_name: this.task.name,\n });\n try {\n const maybeCleanup = this.stopFn();\n if (maybeCleanup &&\n typeof maybeCleanup.then === 'function') {\n void maybeCleanup.catch((error) => {\n logger.debug('listener_stop_cleanup_failed', {\n task_name: this.task.name,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n }\n }\n catch (error) {\n logger.debug('listener_stop_cleanup_failed', {\n task_name: this.task.name,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n this.task.cancel();\n }\n}\nexport class EnvelopeListenerManager extends TaskSpawner {\n constructor(options) {\n super();\n this.listeners = new Map();\n this.listenersLock = new AsyncLock();\n this.serviceHandlers = new Map();\n this.serviceHandlersLock = new AsyncLock();\n this.pendingRecoveryServices = new Set();\n this.pendingRecoveryEnvelopes = new Map();\n this.pendingRecoveryLock = new AsyncLock();\n this.serviceRecoveryLocks = new Map();\n this.serviceRecoveryLocksLock = new AsyncLock();\n this.bindingManager = options.bindingManager;\n this.nodeLike = options.nodeLike;\n this.envelopeFactory = options.envelopeFactory;\n this.deliveryTracker = options.deliveryTracker;\n this.deliver = async (envelope, context) => {\n if (!envelope.replyTo) {\n try {\n envelope.replyTo = formatAddress(SYSTEM_INBOX, this.nodeLike.physicalPath);\n }\n catch (error) {\n logger.warning('default_reply_to_assignment_failed', {\n envelope_id: envelope.id,\n service_name: envelope.capabilities?.[0] ?? null,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n await this.nodeLike.send(envelope, context);\n };\n this.responseContextManager = new ResponseContextManager(() => this.nodeLike.id);\n this.streamingResponseHandler = new StreamingResponseHandler(() => this.deliver, this.envelopeFactory, this.responseContextManager);\n this.channelPollingManager = new ChannelPollingManager(() => this.deliver, this.responseContextManager, this.streamingResponseHandler);\n this.rpcServerHandler = new RPCServerHandler(this.envelopeFactory, this.responseContextManager, this.streamingResponseHandler);\n this.rpcClientManager = new RPCClientManager(() => this.nodeLike.physicalPath, () => this.nodeLike.id, () => this.deliver, this.envelopeFactory, (serviceName, handler) => this.listen(serviceName, handler ?? undefined), this.deliveryTracker);\n }\n async start() {\n await this.recoverUnhandledInboundEnvelopes();\n }\n async stop() {\n await this.listenersLock.runExclusive(async () => {\n for (const [serviceName, entry] of this.listeners.entries()) {\n logger.debug('stopping_listener_for_service', {\n service_name: serviceName,\n });\n entry.listener.stop();\n try {\n await entry.listener.task.promise;\n }\n catch (error) {\n if (!(error instanceof Error) ||\n error.name !== 'TaskCancelledError') {\n logger.debug('listener_task_stopped', {\n service_name: serviceName,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }\n this.listeners.clear();\n });\n await this.serviceHandlersLock.runExclusive(async () => {\n this.serviceHandlers.clear();\n });\n await this.rpcClientManager.cleanup();\n await this.shutdownTasks({ gracePeriod: 3000 });\n }\n async recoverUnhandledInboundEnvelopes() {\n if (typeof this.deliveryTracker.listInbound !== 'function') {\n logger.debug('delivery_tracker_missing_inbound_listing');\n return;\n }\n const failedInbound = await this.deliveryTracker.listInbound((env) => env.status === EnvelopeStatus.RECEIVED ||\n env.status === EnvelopeStatus.FAILED_TO_HANDLE);\n if (!failedInbound.length) {\n logger.debug('no_failed_inbound_envelopes_to_recover');\n return;\n }\n const grouped = new Map();\n for (const tracked of failedInbound) {\n const serviceName = tracked.serviceName ?? 'unknown';\n const list = grouped.get(serviceName) ?? [];\n list.push(tracked);\n grouped.set(serviceName, list);\n }\n await this.pendingRecoveryLock.runExclusive(async () => {\n this.pendingRecoveryServices.clear();\n for (const [serviceName, envelopes] of grouped.entries()) {\n this.pendingRecoveryServices.add(serviceName);\n this.pendingRecoveryEnvelopes.set(serviceName, envelopes);\n }\n });\n logger.debug('discovered_failed_inbound_envelopes', {\n total: failedInbound.length,\n services: Array.from(grouped.keys()),\n });\n }\n async listen(serviceName, handler, options = {}) {\n const capabilitiesOption = options.capabilities ?? null;\n const pollTimeoutMs = options.pollTimeoutMs ??\n options.poll_timeout_ms ??\n DEFAULT_POLLING_TIMEOUT_MS;\n logger.debug('listen_start', {\n recipient: serviceName,\n poll_timeout_ms: pollTimeoutMs ?? DEFAULT_POLLING_TIMEOUT_MS,\n });\n if (handler) {\n await this.serviceHandlersLock.runExclusive(async () => {\n this.serviceHandlers.set(serviceName, handler);\n });\n this.spawn(() => this.recoverServiceIfNeeded(serviceName), {\n name: `recover-on-listen-${serviceName}`,\n });\n }\n const stopState = {\n stopped: false,\n stop_state: false,\n };\n const binding = await this.bindingManager.bind(serviceName, capabilitiesOption ?? undefined);\n const channel = binding.channel;\n const trackingHandler = async (envelope, context) => {\n const tracked = await this.deliveryTracker.onEnvelopeDelivered(serviceName, envelope, context);\n if (handler) {\n const shouldInvoke = !tracked ||\n tracked.status === EnvelopeStatus.RECEIVED ||\n tracked.status === EnvelopeStatus.FAILED_TO_HANDLE ||\n tracked.status === EnvelopeStatus.ACKED ||\n tracked.status === EnvelopeStatus.NACKED ||\n tracked.status === EnvelopeStatus.RESPONDED ||\n tracked.status === EnvelopeStatus.STREAMING ||\n tracked?.mailboxType === MailboxType.OUTBOX ||\n envelope.frame?.['type'] === 'DeliveryAck';\n if (!shouldInvoke) {\n logger.debug('skipping_listener_handler', {\n recipient: serviceName,\n envelope_id: envelope.id,\n tracked_status: tracked?.status,\n mailbox_type: tracked?.mailboxType ?? null,\n frame_type: envelope.frame?.['type'],\n });\n return null;\n }\n const receiverPolicy = this.nodeLike.deliveryPolicy?.receiverRetryPolicy ?? null;\n const trackedForHandler = tracked?.mailboxType === MailboxType.OUTBOX\n ? undefined\n : (tracked ?? undefined);\n if (trackedForHandler && trackedForHandler.attempt > 0) {\n logger.info('resuming_handler_retry_after_restart', {\n envelope_id: envelope.id,\n current_attempts: trackedForHandler.attempt,\n service_name: serviceName,\n });\n }\n logger.debug('forwarding_to_listener_handler', {\n recipient: serviceName,\n envelope_id: envelope.id,\n frame_type: envelope.frame?.['type'],\n });\n return this.executeHandlerWithRetries(handler, envelope, context, receiverPolicy ?? undefined, trackedForHandler, serviceName);\n }\n return null;\n };\n const task = this.spawn(async () => {\n await this.channelPollingManager.startPollingLoop(serviceName, channel, trackingHandler, stopState, pollTimeoutMs ?? DEFAULT_POLLING_TIMEOUT_MS);\n }, { name: `listener-${serviceName}` });\n const listener = new EnvelopeListener(async () => {\n stopState.stopped = true;\n stopState.stop_state = true;\n try {\n await channel.send(null);\n }\n catch (error) {\n logger.debug('listener_stop_signal_failed', {\n service_name: serviceName,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }, task);\n await this.listenersLock.runExclusive(async () => {\n const existing = this.listeners.get(serviceName);\n if (existing) {\n logger.debug('replacing_envelope_listener', { recipient: serviceName });\n existing.listener.stop();\n try {\n await existing.listener.task.promise;\n }\n catch {\n // Ignore cancellation errors\n }\n }\n this.listeners.set(serviceName, {\n handler: handler ?? null,\n listener,\n binding,\n });\n });\n return binding.address;\n }\n async listenRpc(serviceName, handler, options = {}) {\n logger.debug('rpc_listen_start', { service_name: serviceName });\n const rpcHandler = async (envelope, context) => {\n const result = await this.rpcServerHandler.handleRpcRequest(envelope, context, handler, serviceName);\n return result ?? null;\n };\n const address = await this.listen(serviceName, rpcHandler, options);\n logger.debug('rpc_listen_bound', {\n service_name: serviceName,\n address: address.toString(),\n });\n return address;\n }\n async invoke(options) {\n const timeoutMs = options.timeoutMs ?? options.timeout_ms ?? DEFAULT_INVOKE_TIMEOUT_MILLIS;\n const invokeOptions = {\n method: options.method,\n params: options.params,\n timeoutMs,\n };\n const targetAddr = options.targetAddr ?? options.target_addr;\n if (targetAddr) {\n invokeOptions.targetAddr = targetAddr;\n }\n if (options.capabilities) {\n invokeOptions.capabilities = options.capabilities;\n }\n return this.rpcClientManager.invoke(invokeOptions);\n }\n async invokeStream(options) {\n const timeoutMs = options.timeoutMs ?? options.timeout_ms ?? DEFAULT_INVOKE_TIMEOUT_MILLIS;\n const streamOptions = {\n method: options.method,\n params: options.params,\n timeoutMs,\n };\n const targetAddr = options.targetAddr ?? options.target_addr;\n if (targetAddr) {\n streamOptions.targetAddr = targetAddr;\n }\n if (options.capabilities) {\n streamOptions.capabilities = options.capabilities;\n }\n return this.rpcClientManager.invokeStream(streamOptions);\n }\n async deliverToAddress(address, envelope, context) {\n const entry = await this.listenersLock.runExclusive(async () => {\n for (const listener of this.listeners.values()) {\n if (listener.binding.address.toString() === address.toString()) {\n return listener;\n }\n }\n return null;\n });\n if (!entry || !entry.handler) {\n throw new Error(`No listener registered for address: ${address.toString()}`);\n }\n await entry.handler(envelope, context);\n }\n getHandler(serviceName) {\n return this.serviceHandlers.get(serviceName);\n }\n async recoverServiceIfNeeded(serviceName) {\n const lock = await this.getServiceRecoveryLock(serviceName);\n await lock.runExclusive(async () => {\n const handler = await this.serviceHandlersLock.runExclusive(async () => this.serviceHandlers.get(serviceName));\n if (!handler) {\n return;\n }\n const envelopes = await this.pendingRecoveryLock.runExclusive(async () => {\n const cached = this.pendingRecoveryEnvelopes.get(serviceName) ?? [];\n this.pendingRecoveryEnvelopes.delete(serviceName);\n this.pendingRecoveryServices.delete(serviceName);\n return cached;\n });\n if (!envelopes.length) {\n logger.debug('no_cached_recovery_for_service', {\n service_name: serviceName,\n });\n return;\n }\n logger.debug('recovering_unhandled_envelopes_on_listen', {\n service_name: serviceName,\n count: envelopes.length,\n envelope_ids: envelopes.map((trackedEnvelope) => trackedEnvelope.envelopeId),\n });\n await this.recoverServiceEnvelopes(serviceName, envelopes, handler);\n });\n }\n async recoverServiceEnvelopes(serviceName, envelopes, handler) {\n for (const tracked of envelopes) {\n try {\n logger.warning('recovering_unhandled_envelope', {\n envelope_id: tracked.envelopeId,\n service_name: serviceName,\n current_attempts: tracked.attempt,\n status: tracked.status,\n });\n const originalEnvelope = tracked.originalEnvelope;\n const receiverPolicy = this.nodeLike.deliveryPolicy?.receiverRetryPolicy ?? undefined;\n await this.executeHandlerWithRetries(handler, originalEnvelope, undefined, receiverPolicy, tracked, serviceName);\n logger.debug('envelope_recovery_completed', {\n envelope_id: tracked.envelopeId,\n service_name: serviceName,\n });\n }\n catch (error) {\n logger.error('envelope_recovery_failed', {\n envelope_id: tracked.envelopeId,\n service_name: serviceName,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }\n async executeHandlerWithRetries(handler, envelope, context, retryPolicy, trackedEnvelope, inboxName) {\n if (!retryPolicy || retryPolicy.maxRetries === 0) {\n try {\n const result = await handler(envelope, context);\n if (trackedEnvelope) {\n await this.deliveryTracker.onEnvelopeHandled(trackedEnvelope);\n }\n return result;\n }\n catch (error) {\n if (trackedEnvelope) {\n trackedEnvelope.attempt += 1;\n await this.deliveryTracker.onEnvelopeHandleFailed(inboxName, trackedEnvelope, context, error instanceof Error ? error : new Error(String(error)), true);\n }\n throw error;\n }\n }\n const trackedAttempt = trackedEnvelope?.attempt ?? 0;\n const maxAttempts = (retryPolicy?.maxRetries ?? 0) + 1;\n if (trackedAttempt >= maxAttempts) {\n const error = new Error(`Handler retries exhausted: ${trackedAttempt}/${maxAttempts}`);\n if (trackedEnvelope) {\n await this.deliveryTracker.onEnvelopeHandleFailed(inboxName, trackedEnvelope, context, error, true);\n }\n throw error;\n }\n let currentAttempt = trackedAttempt;\n let lastError = null;\n while (currentAttempt < maxAttempts) {\n try {\n if (trackedEnvelope) {\n trackedEnvelope.attempt = currentAttempt + 1;\n }\n const result = await handler(envelope, context);\n if (trackedEnvelope) {\n await this.deliveryTracker.onEnvelopeHandled(trackedEnvelope);\n }\n if (currentAttempt > 0) {\n logger.info('handler_retry_succeeded', {\n envelope_id: envelope.id,\n attempt: currentAttempt + 1,\n total_attempts: currentAttempt + 1,\n });\n }\n return result;\n }\n catch (error) {\n lastError = error;\n const attemptNumber = currentAttempt + 1;\n const isFinalAttempt = attemptNumber >= maxAttempts;\n if (trackedEnvelope) {\n await this.deliveryTracker.onEnvelopeHandleFailed(inboxName, trackedEnvelope, context, error instanceof Error ? error : new Error(String(error)), isFinalAttempt);\n }\n if (isFinalAttempt) {\n logger.error('handler_execution_failed_exhausted_retries', {\n envelope_id: envelope.id,\n total_attempts: attemptNumber,\n max_retries: retryPolicy?.maxRetries ?? 0,\n error: error instanceof Error ? error.message : String(error),\n });\n break;\n }\n const delayMs = retryPolicy?.nextDelayMs(attemptNumber) ?? 0;\n logger.warning('handler_execution_failed_will_retry', {\n envelope_id: envelope.id,\n attempt: attemptNumber,\n max_retries: retryPolicy?.maxRetries ?? 0,\n delay_ms: delayMs,\n error: error instanceof Error ? error.message : String(error),\n });\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n currentAttempt += 1;\n }\n }\n if (lastError) {\n throw lastError instanceof Error\n ? lastError\n : new Error(String(lastError));\n }\n return undefined;\n }\n async getServiceRecoveryLock(serviceName) {\n return this.serviceRecoveryLocksLock.runExclusive(async () => {\n let lock = this.serviceRecoveryLocks.get(serviceName);\n if (!lock) {\n lock = new AsyncLock();\n this.serviceRecoveryLocks.set(serviceName, lock);\n }\n return lock;\n });\n }\n}\n//# sourceMappingURL=envelope-listener-manager.js.map","import { TaskCancelledError } from './task-types.js';\n/**\n * Lightweight async event primitive similar to Python's asyncio.Event.\n */\nexport class AsyncEvent {\n constructor() {\n this._isSet = false;\n this.waiters = new Set();\n }\n set() {\n if (this._isSet) {\n return;\n }\n this._isSet = true;\n const waiters = Array.from(this.waiters);\n this.waiters.clear();\n for (const waiter of waiters) {\n waiter.complete();\n }\n }\n clear() {\n this._isSet = false;\n }\n isSet() {\n return this._isSet;\n }\n async wait(options = {}) {\n if (this._isSet) {\n return;\n }\n const { signal } = options;\n if (signal?.aborted) {\n throw new TaskCancelledError('async-event-wait-aborted');\n }\n return await new Promise((resolve, reject) => {\n const onAbort = () => {\n this.waiters.delete(waiter);\n reject(new TaskCancelledError('async-event-wait-aborted'));\n };\n const complete = () => {\n if (signal) {\n signal.removeEventListener('abort', onAbort);\n }\n this.waiters.delete(waiter);\n resolve();\n };\n const waiter = {\n complete,\n abort: onAbort,\n };\n this.waiters.add(waiter);\n if (signal) {\n signal.addEventListener('abort', onAbort, { once: true });\n }\n if (this._isSet) {\n complete();\n }\n });\n }\n}\n//# sourceMappingURL=async-event.js.map","import { generateId } from '@naylence/core';\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { AsyncEvent } from '../util/async-event.js';\nimport { getLogger } from '../util/logging.js';\nimport { FameConnectError } from '../errors/errors.js';\nimport { TaskCancelledError } from '../util/task-types.js';\nconst logger = getLogger('naylence.fame.node.root_session_manager');\nfunction resolveOption(options, primary, ...aliases) {\n const record = options;\n const primaryKey = primary;\n if (record[primaryKey] !== undefined) {\n return record[primaryKey];\n }\n for (const alias of aliases) {\n if (record[alias] !== undefined) {\n return record[alias];\n }\n }\n return undefined;\n}\nfunction coerceStringArray(value) {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((entry) => typeof entry === 'string');\n}\nfunction resolveStringArrayOption(options, primary, ...aliases) {\n const value = resolveOption(options, primary, ...aliases);\n if (value === undefined) {\n return undefined;\n }\n return coerceStringArray(value);\n}\nfunction resolveBooleanOption(options, primary, ...aliases) {\n const value = resolveOption(options, primary, ...aliases);\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'true') {\n return true;\n }\n if (normalized === 'false') {\n return false;\n }\n }\n return undefined;\n}\nexport class RootSessionManager extends TaskSpawner {\n constructor(options) {\n super();\n this.readyEvent = new AsyncEvent();\n this.stopEvent = new AsyncEvent();\n this.admissionTask = null;\n this.expiryGuardTask = null;\n this.hadSuccessfulAdmission = false;\n this.admissionEpoch = 0;\n this.currentWelcome = null;\n const node = resolveOption(options, 'node');\n const admissionClient = resolveOption(options, 'admissionClient', 'admission_client');\n const requestedLogicals = resolveStringArrayOption(options, 'requestedLogicals', 'requested_logicals') ?? [];\n const onWelcome = resolveOption(options, 'onWelcome', 'on_welcome');\n const onEpochChange = resolveOption(options, 'onEpochChange', 'on_epoch_change');\n const onAdmissionFailed = resolveOption(options, 'onAdmissionFailed', 'on_admission_failed');\n const enableContinuousRefresh = resolveBooleanOption(options, 'enableContinuousRefresh', 'enable_continuous_refresh');\n if (!node) {\n throw new Error('RootSessionManager requires a node option');\n }\n if (!admissionClient) {\n throw new Error('RootSessionManager requires an admissionClient option');\n }\n if (!onWelcome) {\n throw new Error('RootSessionManager requires an onWelcome callback');\n }\n this.node = node;\n this.admissionClient = admissionClient;\n this.requestedLogicals = [...requestedLogicals];\n this.onWelcome = onWelcome;\n this.onEpochChange =\n typeof onEpochChange === 'function' ? onEpochChange : undefined;\n this.onAdmissionFailed =\n typeof onAdmissionFailed === 'function' ? onAdmissionFailed : undefined;\n this.enableContinuousRefresh = enableContinuousRefresh ?? true;\n logger.debug('created_root_session_manager');\n }\n get isReady() {\n return this.readyEvent.isSet();\n }\n get currentWelcomeFrame() {\n return this.currentWelcome;\n }\n get admissionExpiresAt() {\n const expiresAt = this.currentWelcome?.expiresAt;\n if (!expiresAt) {\n return null;\n }\n try {\n return new Date(expiresAt);\n }\n catch {\n return null;\n }\n }\n async start(options = {}) {\n const { waitUntilReady = true } = options;\n if (this.admissionTask) {\n return;\n }\n logger.debug('root_session_manager_starting');\n this.stopEvent.clear();\n this.readyEvent.clear();\n const taskName = `root-admission-${this.admissionEpoch}`;\n this.admissionTask = this.spawn((signal) => this.admissionLoop(signal), {\n name: taskName,\n });\n if (!waitUntilReady) {\n return;\n }\n try {\n await Promise.race([this.readyEvent.wait(), this.admissionTask.promise]);\n }\n catch (error) {\n throw error;\n }\n if (!this.readyEvent.isSet()) {\n await this.admissionTask.promise;\n throw new FameConnectError('Root session manager failed to become ready');\n }\n logger.debug('root_session_manager_started');\n }\n async stop() {\n logger.debug('root_session_manager_stopping');\n this.stopEvent.set();\n if (this.admissionTask) {\n this.admissionTask.cancel();\n await this.consumeTask(this.admissionTask);\n this.admissionTask = null;\n }\n if (this.expiryGuardTask) {\n this.expiryGuardTask.cancel();\n await this.consumeTask(this.expiryGuardTask);\n this.expiryGuardTask = null;\n }\n logger.debug('root_session_manager_stopped');\n }\n async awaitReady(timeoutMs) {\n if (this.isReady) {\n return;\n }\n const admissionTask = this.admissionTask;\n if (!admissionTask) {\n return;\n }\n const waitPromises = [\n this.readyEvent.wait(),\n admissionTask.promise,\n ];\n if (timeoutMs !== undefined) {\n waitPromises.push(this.waitWithTimeout(timeoutMs));\n }\n await Promise.race(waitPromises);\n if (!this.isReady) {\n await admissionTask.promise;\n throw new FameConnectError('Root session manager terminated before ready');\n }\n }\n async performAdmission() {\n this.admissionEpoch += 1;\n this.initializeRootIdentityIfNeeded();\n const welcome = await this.admissionClient.hello(this.node.id, generateId(), this.requestedLogicals);\n this.currentWelcome = welcome.frame;\n const cryptoProvider = this.node.cryptoProvider; //getCryptoProvider();\n if (welcome.frame.assignedPath && cryptoProvider?.prepareForAttach) {\n cryptoProvider.prepareForAttach(welcome.frame.systemId, welcome.frame.assignedPath, welcome.frame.acceptedLogicals ?? []);\n }\n // Close the admission client immediately after handshake completes\n // This releases HTTP keep-alive connections (Node.js fetch/undici requires explicit cleanup)\n await this.admissionClient.close();\n return welcome.frame;\n }\n async handleEpochChange(epoch) {\n if (this.onEpochChange) {\n await this.onEpochChange(epoch);\n }\n else {\n logger.debug('epoch_change_ignored_no_handler', { epoch });\n }\n }\n static createForRootSentinel(node, admissionClient, requestedLogicals = [], enableContinuousRefresh = true, onEpochChange) {\n const handleWelcome = async (frame) => {\n logger.info('root_admission_successful', {\n system_id: frame.systemId,\n assigned_path: frame.assignedPath ?? null,\n accepted_logicals: frame.acceptedLogicals ?? [],\n grants_count: frame.connectionGrants?.length ?? 0,\n });\n for (const grant of frame.connectionGrants ?? []) {\n const purpose = typeof grant === 'object' && grant\n ? grant.purpose\n : undefined;\n if (purpose) {\n logger.debug('received_admission_grant', { purpose });\n }\n }\n };\n const handleFailure = async (error) => {\n logger.error('root_admission_failed_permanently', {\n error: error.message,\n });\n };\n const options = {\n node,\n admissionClient,\n requestedLogicals,\n enableContinuousRefresh,\n onWelcome: handleWelcome,\n onAdmissionFailed: handleFailure,\n ...(onEpochChange ? { onEpochChange } : {}),\n };\n return new RootSessionManager(options);\n }\n async admissionLoop(signal) {\n let delay = RootSessionManager.BACKOFF_INITIAL;\n let attempts = 0;\n while (!this.stopEvent.isSet() &&\n !signal?.aborted &&\n attempts < RootSessionManager.RETRY_MAX_ATTEMPTS) {\n try {\n attempts += 1;\n const welcomeFrame = await this.performAdmission();\n await this.onWelcome(welcomeFrame);\n if (!this.readyEvent.isSet()) {\n this.readyEvent.set();\n }\n if (this.hadSuccessfulAdmission) {\n logger.debug('root_admission_refreshed');\n }\n else {\n logger.debug('root_admission_completed');\n }\n this.hadSuccessfulAdmission = true;\n delay = RootSessionManager.BACKOFF_INITIAL;\n attempts = 0;\n if (this.enableContinuousRefresh && welcomeFrame.expiresAt) {\n await this.startExpiryGuard(welcomeFrame);\n const expiryTriggered = await this.waitForExpiryOrStop();\n if (expiryTriggered && !this.stopEvent.isSet()) {\n logger.debug('performing_scheduled_re_admission');\n continue;\n }\n }\n return;\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n throw error;\n }\n const errorObject = error instanceof Error ? error : new Error(String(error));\n const willRetry = attempts < RootSessionManager.RETRY_MAX_ATTEMPTS;\n logger.warning('root_admission_failed', {\n error: errorObject.message,\n attempt: attempts,\n will_retry: willRetry,\n exc_info: !(errorObject instanceof FameConnectError),\n });\n if (!this.hadSuccessfulAdmission && !willRetry) {\n if (this.onAdmissionFailed) {\n await this.onAdmissionFailed(errorObject);\n }\n throw errorObject;\n }\n if (willRetry) {\n delay = await this.applyBackoff(delay, signal);\n }\n }\n }\n if (attempts >= RootSessionManager.RETRY_MAX_ATTEMPTS) {\n logger.error('root_admission_max_attempts_exceeded', {\n max_attempts: RootSessionManager.RETRY_MAX_ATTEMPTS,\n });\n }\n }\n async applyBackoff(delay, signal) {\n const jitter = Math.random() * delay;\n await this.sleepWithStop(delay + jitter, signal);\n return Math.min(delay * 2, RootSessionManager.BACKOFF_CAP);\n }\n async sleepWithStop(delaySeconds, signal) {\n if (delaySeconds <= 0) {\n return;\n }\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n timeoutId = setTimeout(() => {\n timeoutId = undefined;\n resolve();\n }, delaySeconds * 1000);\n });\n try {\n await Promise.race([\n timeoutPromise,\n this.stopEvent.wait(),\n this.waitForAbort(signal),\n ]);\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n }\n async startExpiryGuard(welcomeFrame) {\n if (this.expiryGuardTask) {\n this.expiryGuardTask.cancel();\n await this.consumeTask(this.expiryGuardTask);\n this.expiryGuardTask = null;\n }\n this.expiryGuardTask = this.spawn((signal) => this.expiryGuard(welcomeFrame, signal), {\n name: `root-expiry-guard-${this.admissionEpoch}`,\n });\n }\n async waitForExpiryOrStop() {\n const expiryTask = this.expiryGuardTask;\n if (!expiryTask) {\n return false;\n }\n try {\n const result = await Promise.race([\n expiryTask.promise.then(() => 'expiry'),\n this.stopEvent.wait().then(() => 'stop'),\n ]);\n if (result === 'stop') {\n expiryTask.cancel();\n await this.consumeTask(expiryTask);\n return false;\n }\n return !this.stopEvent.isSet();\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n return false;\n }\n throw error;\n }\n finally {\n if (expiryTask.isCancelled() ||\n expiryTask.isCompleted() ||\n expiryTask.isFailed()) {\n this.expiryGuardTask = null;\n }\n }\n }\n async expiryGuard(welcomeFrame, signal) {\n if (!welcomeFrame.expiresAt) {\n logger.debug('no_admission_expiry_configured');\n await Promise.race([this.stopEvent.wait(), this.waitForAbort(signal)]);\n return;\n }\n const expiresAt = new Date(welcomeFrame.expiresAt);\n const now = new Date();\n let delaySeconds = (expiresAt.getTime() - now.getTime()) / 1000 -\n RootSessionManager.JWT_REFRESH_SAFETY;\n delaySeconds = Math.max(delaySeconds, 0);\n logger.debug('admission_expiry_guard_started', {\n welcome_expires_at: expiresAt.toISOString(),\n delay_seconds: delaySeconds,\n refresh_safety_seconds: RootSessionManager.JWT_REFRESH_SAFETY,\n });\n await this.sleepWithStop(delaySeconds, signal);\n if (this.stopEvent.isSet() || signal?.aborted) {\n return;\n }\n logger.debug('admission_expiry_triggered_refresh', {\n expires_at: expiresAt.toISOString(),\n current_time: new Date().toISOString(),\n seconds_before_expiry: RootSessionManager.JWT_REFRESH_SAFETY,\n });\n }\n initializeRootIdentityIfNeeded() {\n const nodeAny = this.node;\n if (!this.node.id) {\n nodeAny._id = generateId();\n logger.debug('root_identity_generated_id_for_admission', {\n system_id: this.node.id,\n });\n }\n }\n async consumeTask(task) {\n try {\n await task.promise;\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n return;\n }\n const errorObject = error instanceof Error ? error : new Error(String(error));\n logger.debug('background_task_error', {\n task_name: task.name,\n error: errorObject.message,\n });\n }\n }\n waitForAbort(signal) {\n if (!signal) {\n return new Promise(() => { });\n }\n if (signal.aborted) {\n return Promise.reject(new TaskCancelledError('root-session-aborted'));\n }\n return new Promise((_, reject) => {\n const onAbort = () => {\n signal.removeEventListener('abort', onAbort);\n reject(new TaskCancelledError('root-session-aborted'));\n };\n signal.addEventListener('abort', onAbort, { once: true });\n });\n }\n waitWithTimeout(timeoutMs) {\n return new Promise((_, reject) => {\n const id = setTimeout(() => {\n clearTimeout(id);\n reject(new FameConnectError('Timed out waiting for root session manager readiness'));\n }, timeoutMs);\n });\n }\n}\nRootSessionManager.BACKOFF_INITIAL = 1.0;\nRootSessionManager.BACKOFF_CAP = 30.0;\nRootSessionManager.RETRY_MAX_ATTEMPTS = 5;\nRootSessionManager.JWT_REFRESH_SAFETY = 60.0;\n//# sourceMappingURL=root-session-manager.js.map","/**\n * Base factory for creating FameConnector instances from either ConnectorConfig or ConnectionGrant.\n *\n * Concrete implementations must define supported grant types and provide grant-to-connector\n * conversion logic.\n */\nimport { ExtensionManager, ExpressionEvaluationPolicy, } from '@naylence/factory';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.connector.connector_factory');\nexport const CONNECTOR_FACTORY_BASE_TYPE = 'ConnectorFactory';\n/**\n * Abstract base class for connector factories\n */\nexport class ConnectorFactory {\n constructor() {\n this.isDefault = false;\n this.priority = 0;\n }\n /**\n * Evaluate a grant dictionary and return a typed ConnectionGrant instance.\n */\n static evaluateGrant(grant) {\n const grantType = grant.type;\n if (!grantType || typeof grantType !== 'string') {\n throw new Error(\"Missing 'type' field in grant\");\n }\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n for (const [, factoryInfo] of factories) {\n try {\n const factory = this.getGrantAwareFactory(factoryInfo);\n if (!factory) {\n continue;\n }\n const supportedGrants = factory.supportedGrants();\n const grantClass = supportedGrants[grantType];\n if (grantClass) {\n const grantPurpose = grant.purpose;\n const evaluatedConfig = factory.configFromGrant(grant, ExpressionEvaluationPolicy.EVALUATE);\n const evaluatedGrant = factory.grantFromConfig(evaluatedConfig);\n evaluatedGrant.purpose = grantPurpose;\n return evaluatedGrant;\n }\n }\n catch (error) {\n logger.warning(`Failed to evaluate grant with factory ${factoryInfo.constructor.name}: ${error}`);\n continue;\n }\n }\n throw new Error(`No suitable grant found for type ${grantType}`);\n }\n /**\n * Create a connector from either a ConnectorConfig or ConnectionGrant.\n *\n * This method uses the extension discovery mechanism to find an appropriate\n * factory that supports the given grant type.\n */\n static async createConnector(configOrGrant, ...kwargs) {\n // Handle ConnectionGrant first to avoid misclassifying grants as config records\n let connectorConfig;\n let grantType;\n if (this.isConnectionGrant(configOrGrant)) {\n grantType = configOrGrant.type;\n }\n else if (this.isConnectorConfig(configOrGrant)) {\n return await this.createResource(configOrGrant, ...kwargs);\n }\n else if (this.isRecord(configOrGrant)) {\n // Check if this is a grant type by testing known factories\n grantType = configOrGrant.type;\n }\n if (!grantType) {\n throw new Error(\"Missing 'type' field in configuration\");\n }\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n for (const [, factoryInfo] of factories) {\n try {\n const factory = this.getGrantAwareFactory(factoryInfo);\n if (!factory) {\n continue;\n }\n if (factory.supportedGrantTypes().includes(grantType)) {\n // We found a factory that supports this grant type\n connectorConfig = factory.configFromGrant(configOrGrant);\n break;\n }\n }\n catch (error) {\n logger.warning(`Failed to create connector config from grant: ${error}`);\n continue;\n }\n }\n if (!connectorConfig) {\n throw new Error('No suitable connector configuration found');\n }\n return await this.createResource(connectorConfig, ...kwargs);\n }\n /**\n * Create a resource using the appropriate factory\n */\n static async createResource(config, ...kwargs) {\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n const requestedType = config.type;\n const candidateTypes = new Set([requestedType]);\n if (requestedType === 'websocket') {\n candidateTypes.add('WebSocketConnector');\n }\n else if (requestedType === 'WebSocketConnector') {\n candidateTypes.add('websocket');\n }\n for (const candidateType of candidateTypes) {\n for (const [, factoryInfo] of factories) {\n const factory = factoryInfo.instance || new factoryInfo.constructor();\n if (factory.type === candidateType) {\n const normalizedConfig = candidateType === requestedType\n ? config\n : { ...config, type: candidateType };\n return await factory.create(normalizedConfig, ...kwargs);\n }\n }\n }\n throw new Error(`No factory found for connector type: ${config.type}`);\n }\n /**\n * Type guard for ConnectorConfig\n */\n static isConnectorConfig(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'type' in obj &&\n typeof obj.type === 'string');\n }\n /**\n * Type guard for ConnectionGrant\n */\n static isConnectionGrant(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'type' in obj &&\n 'purpose' in obj &&\n typeof obj.type === 'string' &&\n typeof obj.purpose === 'string');\n }\n /**\n * Type guard for Record<string, unknown>\n */\n static isRecord(obj) {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n }\n static getGrantAwareFactory(factoryInfo) {\n const existing = factoryInfo.instance;\n if (existing && this.isGrantAware(existing)) {\n return existing;\n }\n if (existing && !this.isGrantAware(existing)) {\n logger.warning(`Factory ${factoryInfo.constructor.name} is registered under ${CONNECTOR_FACTORY_BASE_TYPE} but is missing grant conversion APIs; skipping.`);\n return null;\n }\n try {\n const instance = new factoryInfo.constructor();\n if (!this.isGrantAware(instance)) {\n logger.warning(`Factory ${factoryInfo.constructor.name} does not implement grant conversion APIs required by ${CONNECTOR_FACTORY_BASE_TYPE}; skipping.`);\n return null;\n }\n factoryInfo.instance = instance;\n return instance;\n }\n catch (error) {\n logger.warning(`Failed to instantiate factory ${factoryInfo.constructor.name} while resolving grant conversion APIs: ${error}`);\n return null;\n }\n }\n static isGrantAware(candidate) {\n if (candidate instanceof ConnectorFactory) {\n return true;\n }\n const maybe = candidate;\n return (typeof maybe.supportedGrantTypes === 'function' &&\n typeof maybe.supportedGrants === 'function' &&\n typeof maybe.configFromGrant === 'function' &&\n typeof maybe.grantFromConfig === 'function');\n }\n}\n/**\n * Utility function to create a resource using the factory system\n */\nexport async function createResource(config, ...kwargs) {\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n const requestedType = config.type;\n const candidateTypes = new Set([requestedType]);\n if (requestedType === 'websocket') {\n candidateTypes.add('WebSocketConnector');\n }\n else if (requestedType === 'WebSocketConnector') {\n candidateTypes.add('websocket');\n }\n for (const candidateType of candidateTypes) {\n for (const [, factoryInfo] of factories) {\n const factory = factoryInfo.instance || new factoryInfo.constructor();\n if (factory.type === candidateType) {\n const normalizedConfig = candidateType === requestedType\n ? config\n : { ...config, type: candidateType };\n return (await factory.create(normalizedConfig, ...kwargs));\n }\n }\n }\n throw new Error(`No factory found for connector type: ${config.type}`);\n}\n//# sourceMappingURL=connector-factory.js.map","import { ConnectorFactory } from '../connector/connector-factory.js';\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { AsyncEvent } from '../util/async-event.js';\nimport { getLogger } from '../util/logging.js';\nimport { DeliveryOriginType, FameFabric, generateId, } from '@naylence/core';\nimport { FameConnectError, FameMessageTooLarge, FameTransportClose, } from '../errors/errors.js';\nimport { TaskCancelledError } from '../util/task-types.js';\nimport { FameResponseType } from '@naylence/core';\nconst logger = getLogger('naylence.fame.node.upstream_session_manager');\nfunction isPlainRecord(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\nfunction pickOption(record, ...keys) {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(record, key)) {\n const value = record[key];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction coerceStringArray(value) {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (!Array.isArray(value)) {\n return undefined;\n }\n const filtered = value.filter((entry) => typeof entry === 'string');\n return [...filtered];\n}\nfunction resolveOriginType(value, label) {\n if (value === undefined || value === null) {\n throw new Error(`UpstreamSessionManager requires a ${label} option`);\n }\n if (typeof value === 'string') {\n return value;\n }\n return value;\n}\nfunction ensureCallback(value, label) {\n if (typeof value !== 'function') {\n throw new Error(`UpstreamSessionManager requires a ${label} callback`);\n }\n return value;\n}\nfunction normalizeOptions(options) {\n if (!isPlainRecord(options)) {\n throw new Error('UpstreamSessionManager options must be an object');\n }\n const record = options;\n const node = pickOption(record, 'node');\n if (!node) {\n throw new Error('UpstreamSessionManager requires a node option');\n }\n const attachClient = pickOption(record, 'attachClient', 'attach_client');\n if (!attachClient) {\n throw new Error('UpstreamSessionManager requires an attachClient option');\n }\n const requestedLogicalsValue = pickOption(record, 'requestedLogicals', 'requested_logicals');\n const requestedLogicals = coerceStringArray(requestedLogicalsValue) ?? [];\n const outboundOriginType = resolveOriginType(pickOption(record, 'outboundOriginType', 'outbound_origin_type'), 'outboundOriginType');\n const inboundOriginType = resolveOriginType(pickOption(record, 'inboundOriginType', 'inbound_origin_type'), 'inboundOriginType');\n const inboundHandler = pickOption(record, 'inboundHandler', 'inbound_handler');\n const validatedInboundHandler = ensureCallback(inboundHandler, 'inboundHandler');\n const onWelcome = pickOption(record, 'onWelcome', 'on_welcome');\n const validatedOnWelcome = ensureCallback(onWelcome, 'onWelcome');\n const onAttach = pickOption(record, 'onAttach', 'on_attach');\n const validatedOnAttach = ensureCallback(onAttach, 'onAttach');\n const onEpochChangeValue = pickOption(record, 'onEpochChange', 'on_epoch_change');\n const onEpochChange = typeof onEpochChangeValue === 'function' ? onEpochChangeValue : undefined;\n const admissionClient = pickOption(record, 'admissionClient', 'admission_client');\n return {\n node,\n attachClient,\n requestedLogicals,\n outboundOriginType,\n inboundOriginType,\n inboundHandler: validatedInboundHandler,\n onWelcome: validatedOnWelcome,\n onAttach: validatedOnAttach,\n onEpochChange,\n admissionClient: admissionClient ?? undefined,\n };\n}\nexport class UpstreamSessionManager extends TaskSpawner {\n constructor(optionsInput) {\n super();\n this.readyEvent = new AsyncEvent();\n this.stopEvent = new AsyncEvent();\n this.queueEvent = new AsyncEvent();\n this.currentStopSubtasks = null;\n this.messageQueue = [];\n this.fsmTask = null;\n this.connector = null;\n this.targetSystemId = null;\n this.lastHeartbeatAckTime = null;\n this.lastSeenEpoch = null;\n this.hadSuccessfulAttach = false;\n this.connectEpoch = 0;\n const options = normalizeOptions(optionsInput);\n this.node = options.node;\n this.attachClient = options.attachClient;\n this.requestedLogicals = [...options.requestedLogicals];\n this.outboundOriginType = options.outboundOriginType;\n this.inboundOriginType = options.inboundOriginType;\n this.onWelcome = options.onWelcome;\n this.onAttach = options.onAttach;\n this.onEpochChange = options.onEpochChange;\n this.admissionClient =\n options.admissionClient ?? options.node.admissionClient;\n this.wrappedHandler = this.makeHeartbeatEnabledHandler(options.inboundHandler);\n logger.debug('created_upstream_session_manager', {\n target_system_id: this.targetSystemId,\n });\n }\n get systemId() {\n return this.targetSystemId;\n }\n async start(options = {}) {\n const { waitUntilReady = true } = options;\n if (this.fsmTask) {\n return;\n }\n this.stopEvent.clear();\n this.readyEvent.clear();\n const taskName = `upstream-fsm-${this.connectEpoch}`;\n this.fsmTask = this.spawn(() => this.fsmLoop(), { name: taskName });\n if (!waitUntilReady) {\n return;\n }\n const readyPromise = this.readyEvent.wait();\n await Promise.race([readyPromise, this.fsmTask.promise]);\n if (!this.readyEvent.isSet()) {\n if (this.fsmTask) {\n await this.fsmTask.promise;\n }\n throw new FameConnectError('Upstream session manager failed to attach');\n }\n logger.debug('upstream_session_manager_started');\n }\n getActiveConnector() {\n return this.connector;\n }\n async stop() {\n logger.debug('upstream_session_manager_stopping');\n this.stopEvent.set();\n this.currentStopSubtasks?.set();\n if (this.fsmTask) {\n this.fsmTask.cancel();\n try {\n await this.fsmTask.promise;\n }\n catch (error) {\n if (!(error instanceof TaskCancelledError)) {\n logger.debug('fsm_task_stopped_with_error', {\n error: error.message,\n });\n }\n }\n this.fsmTask = null;\n }\n if (this.connector) {\n await this.connector.stop().catch((error) => {\n logger.debug('connector_stop_error', {\n error: error.message,\n });\n });\n this.connector = null;\n }\n logger.debug('upstream_session_manager_stopped');\n }\n async send(envelope) {\n if (this.messageQueue.length >= UpstreamSessionManager.TX_QUEUE_MAX) {\n throw new Error('Upstream message queue is full');\n }\n this.messageQueue.push(envelope);\n this.queueEvent.set();\n }\n isReady() {\n return this.readyEvent.isSet();\n }\n async awaitReady(timeoutMs) {\n if (this.isReady()) {\n return;\n }\n const readyPromise = this.readyEvent.wait();\n if (timeoutMs === undefined) {\n await readyPromise;\n return;\n }\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => reject(new FameConnectError('Timed out waiting for upstream ready')), timeoutMs);\n });\n await Promise.race([readyPromise, timeoutPromise]);\n }\n async fsmLoop() {\n let delay = UpstreamSessionManager.BACKOFF_INITIAL;\n while (!this.stopEvent.isSet()) {\n try {\n await this.connectCycle();\n delay = UpstreamSessionManager.BACKOFF_INITIAL;\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n throw error;\n }\n if (error instanceof FameTransportClose ||\n error instanceof FameConnectError) {\n logger.warning('upstream_link_closed', {\n error: error.message,\n will_retry: true,\n });\n if (!this.hadSuccessfulAttach && error instanceof FameConnectError) {\n throw error;\n }\n }\n else {\n logger.warning('upstream_link_closed', {\n error: error.message,\n will_retry: true,\n exc_info: true,\n });\n if (!this.hadSuccessfulAttach) {\n throw error;\n }\n }\n delay = await this.applyBackoff(delay);\n }\n }\n }\n async applyBackoff(delay) {\n const jitter = Math.random() * delay;\n await this.sleepWithStop(delay + jitter);\n return Math.min(delay * 2, UpstreamSessionManager.BACKOFF_CAP);\n }\n async sleepWithStop(delaySeconds) {\n if (delaySeconds <= 0) {\n return;\n }\n let timeout;\n const sleepPromise = new Promise((resolve) => {\n timeout = setTimeout(() => {\n timeout = undefined;\n resolve();\n }, delaySeconds * 1000);\n });\n await Promise.race([sleepPromise, this.stopEvent.wait()]);\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n }\n getNodeAttachGrant(connectionGrants) {\n if (!connectionGrants) {\n return null;\n }\n for (const grant of connectionGrants) {\n if (grant?.purpose === 'node.attach') {\n return grant;\n }\n }\n return null;\n }\n waitEvent(event, signal) {\n return signal ? event.wait({ signal }) : event.wait();\n }\n async connectCycle() {\n if (!this.admissionClient) {\n throw new FameConnectError('Admission client is required to attach upstream');\n }\n this.connectEpoch += 1;\n const welcome = await this.admissionClient.hello(this.node.id, generateId(), this.requestedLogicals);\n const connectionGrants = welcome.frame.connectionGrants;\n if (!connectionGrants?.length) {\n throw new Error('Welcome frame missing connection grants');\n }\n const grant = this.getNodeAttachGrant(connectionGrants);\n if (!grant) {\n throw new Error('Welcome frame missing node attach grant');\n }\n const cryptoProvider = this.node.cryptoProvider; //getCryptoProvider();\n if (welcome.frame.assignedPath && cryptoProvider?.prepareForAttach) {\n cryptoProvider.prepareForAttach(welcome.frame.systemId, welcome.frame.assignedPath, welcome.frame.acceptedLogicals ?? []);\n }\n await this.onWelcome(welcome.frame);\n const connector = await ConnectorFactory.createConnector(grant, {\n systemId: welcome.frame.systemId,\n });\n await connector.start(this.wrappedHandler);\n this.connector = connector;\n const callbackGrants = this.node.gatherSupportedCallbackGrants();\n const attachInfo = await this.attachClient.attach(this.node, this.outboundOriginType, connector, welcome.frame, this.wrappedHandler, this.getKeys() ?? undefined, callbackGrants);\n this.targetSystemId = attachInfo.targetSystemId ?? null;\n await this.onAttach(attachInfo, connector);\n // Close the admission client immediately after attach completes\n // This releases HTTP keep-alive connections (Node.js fetch/undici requires explicit cleanup)\n if (this.admissionClient) {\n await this.admissionClient.close();\n }\n const epoch = attachInfo.routingEpoch;\n if (epoch && epoch !== this.lastSeenEpoch) {\n this.lastSeenEpoch = epoch;\n if (this.onEpochChange) {\n this.spawn(() => this.onEpochChange(epoch), {\n name: `epoch-change-${epoch}`,\n });\n }\n else {\n logger.warning('parent_epoch_changed', { epoch });\n }\n }\n if (!this.readyEvent.isSet()) {\n this.readyEvent.set();\n }\n if (this.messageQueue.length > 0) {\n logger.debug('flushing_buffered_frames', {\n queue_size: this.messageQueue.length,\n });\n this.queueEvent.set();\n }\n const stopSubtasks = new AsyncEvent();\n this.currentStopSubtasks = stopSubtasks;\n const heartbeatTask = this.spawn((signal) => this.heartbeatLoop(connector, stopSubtasks, signal), {\n name: `upstream-heartbeat-${this.connectEpoch}`,\n });\n const messagePumpTask = this.spawn((signal) => this.messagePumpLoop(connector, stopSubtasks, signal), {\n name: `message-pump-${this.connectEpoch}`,\n });\n const expiryGuardTask = this.spawn((signal) => this.expiryGuard(connector, welcome, attachInfo, stopSubtasks, signal), {\n name: `expiry-guard-${this.connectEpoch}`,\n });\n if (this.hadSuccessfulAttach) {\n logger.debug('reconnected_to_upstream', {\n attach_expires_at: attachInfo.attachExpiresAt?.toISOString?.() ?? null,\n });\n }\n else {\n logger.debug('connected_to_upstream', {\n attach_expires_at: attachInfo.attachExpiresAt?.toISOString?.() ?? null,\n });\n }\n this.hadSuccessfulAttach = true;\n const tasks = [heartbeatTask, messagePumpTask, expiryGuardTask];\n let failure = null;\n try {\n await this.waitForFailureOrStop(tasks, stopSubtasks);\n }\n catch (error) {\n failure = error;\n }\n finally {\n stopSubtasks.set();\n this.currentStopSubtasks = null;\n await Promise.allSettled(tasks.map((task) => task.promise));\n if (this.connector) {\n await this.connector.stop().catch(() => undefined);\n this.connector = null;\n }\n }\n if (failure) {\n throw failure;\n }\n }\n getKeys() {\n const securityManager = this.node.securityManager;\n if (!securityManager || !securityManager.supportsOverlaySecurity) {\n return null;\n }\n const shareable = securityManager.getShareableKeys();\n if (Array.isArray(shareable)) {\n return shareable.length ? shareable : null;\n }\n if (shareable && typeof shareable === 'object') {\n return [shareable];\n }\n const provider = this.node.cryptoProvider;\n if (!provider) {\n return null;\n }\n const keys = [];\n const nodeJwk = provider.nodeJwk?.();\n if (nodeJwk) {\n keys.push(nodeJwk);\n }\n const jwks = provider.getJwks?.();\n if (jwks?.keys) {\n for (const jwk of jwks.keys) {\n if (nodeJwk &&\n jwk?.kid === nodeJwk.kid &&\n jwk?.use !== 'enc') {\n continue;\n }\n keys.push(jwk);\n }\n }\n return keys.length ? keys : null;\n }\n async waitForFailureOrStop(tasks, stopEvt) {\n const stopPromise = stopEvt.wait().then(() => ({ type: 'stop' }));\n const wrappedTasks = tasks.map((task) => task.promise\n .then(() => ({ type: 'task', error: null }))\n .catch((error) => ({ type: 'task', error: error })));\n const result = await Promise.race([stopPromise, ...wrappedTasks]);\n if (result.type === 'stop') {\n tasks.forEach((task) => task.cancel());\n return;\n }\n if (result.error && !(result.error instanceof TaskCancelledError)) {\n throw result.error;\n }\n }\n async heartbeatLoop(connector, stopEvt, signal) {\n logger.debug('starting_heartbeat_loop');\n const intervalMs = UpstreamSessionManager.HEARTBEAT_INTERVAL * 1000;\n const graceMs = intervalMs * UpstreamSessionManager.HEARTBEAT_GRACE;\n this.lastHeartbeatAckTime = Date.now();\n while (!stopEvt.isSet() && !signal?.aborted) {\n let timer;\n try {\n await Promise.race([\n new Promise((resolve) => {\n timer = setTimeout(() => {\n timer = undefined;\n resolve();\n }, intervalMs);\n }),\n this.waitEvent(stopEvt, signal),\n ]);\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n throw error;\n }\n }\n finally {\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n }\n if (stopEvt.isSet() || signal?.aborted) {\n break;\n }\n const envelope = await this.makeHeartbeatEnvelope();\n logger.debug('sending_heartbeat', {\n hb_corr_id: envelope.corrId,\n hb_env_id: envelope.id,\n });\n const context = {\n originType: DeliveryOriginType.LOCAL,\n expectedResponseType: FameResponseType.NONE,\n };\n try {\n await this.node.dispatchEnvelopeEvent('onForwardUpstream', this.node, envelope, context);\n await connector.send(envelope);\n await this.node.dispatchEnvelopeEvent('onForwardUpstreamComplete', this.node, envelope, undefined, undefined, context);\n }\n catch (error) {\n await this.node\n .dispatchEnvelopeEvent('onForwardUpstreamComplete', this.node, envelope, error, undefined, context)\n .catch(() => undefined);\n throw error;\n }\n await this.node.dispatchEvent('onHeartbeatSent', this.node, envelope);\n if (this.lastHeartbeatAckTime !== null &&\n Date.now() - this.lastHeartbeatAckTime > graceMs) {\n throw new FameConnectError('missed heartbeat acknowledgement');\n }\n }\n logger.debug('completed_heartbeat_loop');\n }\n async messagePumpLoop(connector, stopEvt, signal) {\n while (!stopEvt.isSet() && !signal?.aborted) {\n let envelope = null;\n try {\n envelope = await this.takeMessage(stopEvt, signal);\n }\n catch (error) {\n if (error instanceof TaskCancelledError) {\n return;\n }\n throw error;\n }\n if (!envelope) {\n continue;\n }\n try {\n await connector.send(envelope);\n }\n catch (error) {\n if (error instanceof FameMessageTooLarge) {\n logger.error('failed_to_send_message', { error: error.message });\n await this.handleMessageTooLarge(envelope, error.message);\n }\n else if (error instanceof FameTransportClose) {\n this.requeueFront(envelope);\n throw error;\n }\n else {\n throw error;\n }\n }\n }\n }\n requeueFront(envelope) {\n this.messageQueue.unshift(envelope);\n this.queueEvent.set();\n }\n async takeMessage(stopEvt, signal) {\n while (true) {\n if (this.messageQueue.length > 0) {\n const envelope = this.messageQueue.shift();\n if (this.messageQueue.length === 0) {\n this.queueEvent.clear();\n }\n return envelope;\n }\n if (stopEvt.isSet() || signal?.aborted) {\n return null;\n }\n await Promise.race([\n this.waitEvent(this.queueEvent, signal),\n this.waitEvent(stopEvt, signal),\n ]);\n if (stopEvt.isSet() || signal?.aborted) {\n return null;\n }\n }\n }\n async handleMessageTooLarge(envelope, reason) {\n const corrId = envelope.corrId;\n const replyTo = envelope.replyTo;\n if (!corrId || !replyTo) {\n return;\n }\n try {\n const fabric = FameFabric.current();\n const nack = {\n type: 'DeliveryAck',\n ok: false,\n refId: envelope.id,\n code: 'MESSAGE_TOO_LARGE',\n reason,\n };\n const target = replyTo;\n const ackEnvelope = this.node.envelopeFactory.createEnvelope({\n to: target,\n frame: nack,\n corrId,\n });\n await fabric.send(ackEnvelope);\n }\n catch (error) {\n logger.warning('failed_to_send_nack', {\n error: error.message,\n });\n }\n }\n async expiryGuard(connector, welcome, info, stopEvt, signal) {\n const timestamps = [];\n if (welcome.frame.expiresAt) {\n timestamps.push(new Date(welcome.frame.expiresAt));\n }\n if (info.attachExpiresAt) {\n timestamps.push(info.attachExpiresAt);\n }\n if (!timestamps.length) {\n logger.debug('no_ttl_expiry_configured');\n await this.waitEvent(stopEvt, signal);\n return;\n }\n const earliest = timestamps.reduce((min, current) => current < min ? current : min);\n const now = new Date();\n let delaySeconds = (earliest.getTime() - now.getTime()) / 1000 -\n UpstreamSessionManager.JWT_REFRESH_SAFETY;\n delaySeconds = Math.max(delaySeconds, UpstreamSessionManager.JWT_REFRESH_SAFETY);\n logger.debug('ttl_expiry_guard_started', {\n welcome_expires_at: welcome.frame.expiresAt ?? null,\n attach_expires_at: info.attachExpiresAt?.toISOString?.() ?? null,\n earliest_expiry: earliest.toISOString(),\n delay_seconds: delaySeconds,\n refresh_safety_seconds: UpstreamSessionManager.JWT_REFRESH_SAFETY,\n });\n if (delaySeconds > 0) {\n let timer;\n try {\n await Promise.race([\n new Promise((resolve) => {\n timer = setTimeout(() => {\n timer = undefined;\n resolve();\n }, delaySeconds * 1000);\n timer?.unref?.();\n }),\n this.waitEvent(stopEvt, signal),\n ]);\n }\n finally {\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n }\n }\n if (!stopEvt.isSet()) {\n logger.debug('ttl_expiry_triggered_reconnect', {\n expires_at: earliest.toISOString(),\n current_time: new Date().toISOString(),\n seconds_before_expiry: UpstreamSessionManager.JWT_REFRESH_SAFETY,\n });\n await connector.stop();\n }\n }\n async makeHeartbeatEnvelope() {\n const envelope = this.node.envelopeFactory.createEnvelope({\n frame: { type: 'NodeHeartbeat' },\n corrId: generateId(),\n });\n return envelope;\n }\n makeHeartbeatEnabledHandler(downstream) {\n return async (env, context) => {\n const authorizationContext = this.connector?.authorizationContext;\n if (!context) {\n context = {\n originType: this.inboundOriginType,\n fromConnector: this.connector ?? undefined,\n fromSystemId: this.targetSystemId ?? undefined,\n security: {\n authorization: authorizationContext,\n },\n expectedResponseType: FameResponseType.NONE,\n };\n }\n else {\n context.originType = this.inboundOriginType;\n context.fromConnector = this.connector ?? undefined;\n context.fromSystemId = this.targetSystemId ?? undefined;\n if (!context.security) {\n context.security = {};\n }\n if (!context.security.authorization) {\n context.security.authorization = authorizationContext;\n }\n if (context.expectedResponseType === undefined) {\n context.expectedResponseType = FameResponseType.NONE;\n }\n }\n await this.node.dispatchEnvelopeEvent('onEnvelopeReceived', this.node, env, context);\n if (env.frame.type === 'NodeHeartbeatAck') {\n logger.debug('received_heartbeat_ack', {\n hb_ack_env_id: env.id,\n hb_ack_corr_id: env.corrId,\n hb_routing_epoch: env.frame.routingEpoch,\n });\n await this.node.dispatchEvent('onHeartbeatReceived', this.node, env);\n this.lastHeartbeatAckTime = Date.now();\n const epoch = env.frame.routingEpoch;\n if (epoch && epoch !== this.lastSeenEpoch) {\n this.lastSeenEpoch = epoch;\n if (this.onEpochChange) {\n await this.onEpochChange(epoch);\n }\n else {\n logger.warning('parent_epoch_changed', { epoch });\n }\n }\n return;\n }\n if (env.frame.type === 'NodeAttachAck') {\n return;\n }\n return await downstream(env, context);\n };\n }\n}\nUpstreamSessionManager.HEARTBEAT_INTERVAL = 15; // seconds\nUpstreamSessionManager.HEARTBEAT_GRACE = 2.0;\nUpstreamSessionManager.JWT_REFRESH_SAFETY = 60; // seconds\nUpstreamSessionManager.TX_QUEUE_MAX = 512;\nUpstreamSessionManager.BACKOFF_INITIAL = 1; // seconds\nUpstreamSessionManager.BACKOFF_CAP = 30; // seconds\n//# sourceMappingURL=upstream-session-manager.js.map","import { createFameEnvelope, } from '@naylence/core';\nimport { getLogger } from '../../util/logging.js';\nconst logger = getLogger('naylence.fame.node.admission.noop_admission_client');\nexport class NoopAdmissionClient {\n constructor(options = {}) {\n this.hasUpstream = false;\n this.defaultSystemId =\n options.systemId ?? options.system_id ?? 'noop-system';\n this.autoAcceptLogicals =\n options.autoAcceptLogicals ?? options.auto_accept_logicals ?? true;\n }\n async hello(systemId, instanceId, requestedLogicals) {\n const effectiveSystemId = systemId && systemId.trim().length > 0 ? systemId : this.defaultSystemId;\n const acceptedLogicals = this.autoAcceptLogicals\n ? [...(requestedLogicals ?? [])]\n : [];\n logger.debug('noop_admission_hello', {\n systemId: effectiveSystemId,\n instanceId,\n requestedLogicals,\n acceptedLogicals,\n });\n const welcomeFrame = {\n type: 'NodeWelcome',\n systemId: effectiveSystemId,\n instanceId,\n acceptedLogicals,\n connectionGrants: [],\n };\n return createFameEnvelope({\n frame: welcomeFrame,\n });\n }\n async close() {\n logger.debug('noop_admission_close');\n }\n}\n//# sourceMappingURL=noop-admission-client.js.map","import { FameServiceProxy, isFameMessageService, isFameRPCService, } from '@naylence/core';\nimport { createResource, ExtensionManager } from '@naylence/factory';\nexport class DefaultServiceManager {\n constructor(options) {\n this.services = new Map();\n this.started = false;\n this.extensionManagerInitialized = false;\n this.invoke = options.invoke;\n this.serve = options.serve;\n this.serveRpc = options.serveRpc;\n this.pollTimeoutMs = options.pollTimeoutMs ?? null;\n this.capabilityMap = this.normalizeCapabilityMap(options.capabilityMap);\n this.defaultServiceConfigs = options.defaultServiceConfigs\n ? [...options.defaultServiceConfigs]\n : [];\n }\n async start() {\n if (this.started) {\n return;\n }\n this.ensureExtensionManager();\n this.started = true;\n if (this.defaultServiceConfigs.length === 0) {\n return;\n }\n await this.registerDefaultServices();\n }\n async stop() {\n if (!this.started) {\n return;\n }\n await Promise.all(Array.from(this.services.values()).map(async ({ service }) => {\n const stopFn = service?.stop;\n if (typeof stopFn === 'function') {\n await this.resolveMaybePromise(stopFn.call(service));\n }\n }));\n this.started = false;\n }\n async registerService(serviceName, service) {\n if (!this.started) {\n await this.start();\n }\n const startFn = service?.start;\n if (typeof startFn === 'function') {\n await this.resolveMaybePromise(startFn.call(service));\n }\n let address;\n if (isFameMessageService(service)) {\n const options = this.buildServeOptions(service.capabilities);\n address = await this.serve(serviceName, this.wrapMessageHandler(service), options);\n }\n else if (isFameRPCService(service)) {\n const options = this.buildServeOptions(service.capabilities);\n address = await this.serveRpc(serviceName, service.handleRpcRequest.bind(service), options);\n }\n else {\n throw new TypeError('Service must implement FameMessageService or FameRPCService');\n }\n this.services.set(address.toString(), { address, service });\n if (service?.address === undefined &&\n this.isAddressable(service)) {\n service.address = address;\n }\n return address;\n }\n getLocalServices() {\n const entries = Array.from(this.services.values()).map(({ address, service }) => [address, service]);\n return new Map(entries);\n }\n resolveByCapability(capability) {\n for (const { address, service } of this.services.values()) {\n const caps = this.extractCapabilities(service);\n if (caps?.includes(capability)) {\n return FameServiceProxy.remoteByAddress(address, {\n invoke: this.invoke,\n });\n }\n }\n if (typeof capability === 'string') {\n const mapped = this.capabilityMap.get(capability);\n if (mapped) {\n return FameServiceProxy.remoteByAddress(mapped, {\n invoke: this.invoke,\n });\n }\n }\n throw new Error(`Capability ${String(capability)} not available`);\n }\n async resolveAddressByCapability(capabilities) {\n for (const { address, service } of this.services.values()) {\n const caps = this.extractCapabilities(service) ?? [];\n if (capabilities.every((cap) => caps.includes(cap))) {\n return address;\n }\n }\n if (capabilities.length === 1) {\n const mapped = this.capabilityMap.get(capabilities[0]);\n if (mapped) {\n return mapped;\n }\n }\n return null;\n }\n async registerDefaultServices() {\n for (const rawConfig of this.defaultServiceConfigs) {\n if (!rawConfig || typeof rawConfig !== 'object') {\n continue;\n }\n const config = rawConfig;\n const name = typeof config.name === 'string' ? config.name : undefined;\n if (!name) {\n continue;\n }\n const service = await createResource('FameServiceFactory', config, {\n validate: false,\n });\n if (!service) {\n continue;\n }\n await this.registerService(name, service);\n }\n }\n ensureExtensionManager() {\n if (this.extensionManagerInitialized) {\n return;\n }\n ExtensionManager.getExtensionManager('naylence.FameServiceFactory', 'FameServiceFactory');\n this.extensionManagerInitialized = true;\n }\n extractCapabilities(service) {\n if (!service) {\n return undefined;\n }\n const caps = service.capabilities ?? service.capabilities;\n return Array.isArray(caps) ? caps : undefined;\n }\n isAddressable(service) {\n return (typeof service?.address === 'undefined' ||\n service?.address === null);\n }\n normalizeCapabilityMap(input) {\n if (!input) {\n return new Map();\n }\n if (input instanceof Map) {\n return new Map(input);\n }\n const entries = Object.entries(input).map(([key, value]) => [key, value]);\n return new Map(entries);\n }\n async resolveMaybePromise(value) {\n return await value;\n }\n wrapMessageHandler(service) {\n return async (envelope, context) => {\n const result = await service.handleMessage(envelope, context);\n return result === undefined ? null : result;\n };\n }\n buildServeOptions(capabilities) {\n const options = {};\n if (capabilities && capabilities.length > 0) {\n options.capabilities = capabilities;\n }\n if (this.pollTimeoutMs !== null) {\n options.pollTimeoutMs = this.pollTimeoutMs;\n }\n return options;\n }\n}\n//# sourceMappingURL=default-service-manager.js.map","import { DEFAULT_INVOKE_TIMEOUT_MILLIS, DeliveryOriginType, FameResponseType, createChannelMessage, formatAddress, localDeliveryContext, parseAddress, } from '@naylence/core';\nimport { generateId } from '@naylence/core';\nimport { secureDigest } from '../util/util.js';\nimport { InMemoryStorageProvider } from '../storage/in-memory-storage.js';\nimport { NodeEnvelopeFactory } from './node-envelope-factory.js';\nimport { BindingManager } from './binding-manager.js';\nimport { EnvelopeListenerManager } from './envelope-listener-manager.js';\nimport { DefaultDeliveryTracker } from '../delivery/default-delivery-tracker.js';\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { pushNode } from './node-context-stack.js';\nimport { getLogger } from '../util/logging.js';\nimport { RootSessionManager } from './root-session-manager.js';\nimport { UpstreamSessionManager } from './upstream-session-manager.js';\nimport { NoopAdmissionClient } from './admission/noop-admission-client.js';\nimport { NodeMetaRecord, NODE_META_NAMESPACE } from './node-meta.js';\nimport { DefaultServiceManager } from '../service/default-service-manager.js';\nconst SYSTEM_INBOX = '__sys__';\nconst logger = getLogger('naylence.fame.node.node');\nfunction isSnakeCase(name) {\n return name.includes('_');\n}\nfunction camelToSnake(name) {\n return name\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1_$2')\n .toLowerCase();\n}\nfunction snakeToCamel(name) {\n return name.replace(/_([a-z])/g, (_match, char) => char.toUpperCase());\n}\nfunction getCandidateNames(eventName) {\n const candidates = new Set();\n candidates.add(eventName);\n if (isSnakeCase(eventName)) {\n candidates.add(snakeToCamel(eventName));\n }\n else {\n candidates.add(camelToSnake(eventName));\n }\n return Array.from(candidates);\n}\nfunction resolveListenerMethod(listener, eventName) {\n for (const candidate of getCandidateNames(eventName)) {\n const handler = listener[candidate];\n if (typeof handler === 'function') {\n return handler.bind(listener);\n }\n }\n return undefined;\n}\nclass DefaultRetryHandler {\n constructor(deliveryFn) {\n this.deliveryFn = deliveryFn;\n }\n async onRetryNeeded(envelope, _attempt, _nextDelayMs, context) {\n await this.deliveryFn(envelope, context);\n }\n}\nfunction resolveOption(options, primary, ...aliases) {\n const primaryValue = options[primary];\n if (primaryValue !== undefined) {\n return primaryValue;\n }\n for (const alias of aliases) {\n if (alias in options) {\n const aliasValue = options[alias];\n if (aliasValue !== undefined) {\n return aliasValue;\n }\n }\n }\n return undefined;\n}\nfunction resolveBooleanOption(options, primary, ...aliases) {\n const value = resolveOption(options, primary, ...aliases);\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n return undefined;\n}\nfunction resolveStringOption(options, primary, ...aliases) {\n const value = resolveOption(options, primary, ...aliases);\n if (value === undefined) {\n return undefined;\n }\n if (value === null || typeof value === 'string') {\n return value;\n }\n return undefined;\n}\nfunction resolveNumberOption(options, primary, ...aliases) {\n const value = resolveOption(options, primary, ...aliases);\n if (value === undefined || value === null) {\n return value;\n }\n if (typeof value === 'number') {\n return value;\n }\n return undefined;\n}\nfunction resolveArrayOption(options, primary, ...aliases) {\n const value = resolveOption(options, primary, ...aliases);\n if (value === undefined || value === null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value;\n }\n return undefined;\n}\nfunction resolveStringArrayOption(options, primary, ...aliases) {\n const value = resolveArrayOption(options, primary, ...aliases);\n if (!value) {\n return undefined;\n }\n return value.filter((item) => typeof item === 'string');\n}\nfunction sortListeners(listeners) {\n return [...listeners].sort((a, b) => a.priority - b.priority);\n}\nexport class FameNode extends TaskSpawner {\n constructor(options = {}) {\n super();\n this._sessionManager = null;\n this._upstreamConnector = null;\n this._isStarted = false;\n this._releaseNodeContext = null;\n this._lastHeartbeatAt = null;\n const systemIdOption = resolveStringOption(options, 'systemId', 'system_id');\n this._id = systemIdOption ?? generateId();\n const physicalPathOption = resolveStringOption(options, 'physicalPath', 'physical_path');\n this._physicalPath = physicalPathOption ?? `/${this._id}`;\n const hasParentOption = resolveBooleanOption(options, 'hasParent', 'has_parent');\n this._hasParent = hasParentOption ?? false;\n const storageProviderOption = resolveOption(options, 'storageProvider', 'storage_provider');\n this._storageProvider =\n storageProviderOption ?? new InMemoryStorageProvider();\n const acceptedLogicalsOption = resolveStringArrayOption(options, 'acceptedLogicals', 'accepted_logicals') ?? [];\n this._acceptedLogicals = new Set(acceptedLogicalsOption);\n const deliveryPolicyOption = resolveOption(options, 'deliveryPolicy', 'delivery_policy');\n this._deliveryPolicy = deliveryPolicyOption ?? null;\n const admissionClientOption = resolveOption(options, 'admissionClient', 'admission_client');\n this._admissionClient = admissionClientOption ?? null;\n const attachClientOption = resolveOption(options, 'attachClient', 'attach_client');\n this._attachClient = attachClientOption ?? null;\n const requestedLogicalsOption = resolveStringArrayOption(options, 'requestedLogicals', 'requested_logicals') ?? [];\n this._requestedLogicals = [...requestedLogicalsOption];\n const securityManagerOption = resolveOption(options, 'securityManager', 'security_manager');\n this._securityManager = securityManagerOption ?? null;\n const publicUrlOption = resolveStringOption(options, 'publicUrl', 'public_url');\n this._publicUrl = publicUrlOption ?? null;\n const cryptoProviderOption = resolveOption(options, 'cryptoProvider', 'crypto_provider');\n const fallbackCryptoProvider = {};\n this._cryptoProvider = cryptoProviderOption ?? fallbackCryptoProvider;\n const envelopeFactoryOption = resolveOption(options, 'envelopeFactory', 'envelope_factory');\n const envelopeFactory = envelopeFactoryOption ?? new NodeEnvelopeFactory(() => this.sid ?? '');\n this._envelopeFactory = envelopeFactory;\n const deliveryTrackerOption = resolveOption(options, 'deliveryTracker', 'delivery_tracker');\n const tracker = deliveryTrackerOption ??\n new DefaultDeliveryTracker(this._storageProvider);\n this._deliveryTracker = tracker;\n const nodeMetaStoreOption = resolveOption(options, 'nodeMetaStore', 'node_meta_store');\n this._nodeMetaStorePromise = nodeMetaStoreOption\n ? Promise.resolve(nodeMetaStoreOption)\n : this._storageProvider.getKeyValueStore(NodeMetaRecord, NODE_META_NAMESPACE);\n const transportListenersResolved = resolveArrayOption(options, 'transportListeners', 'transport_listeners') ?? [];\n const transportListeners = [...transportListenersResolved];\n this._transportListeners = transportListeners;\n const listenersResolved = resolveArrayOption(options, 'eventListeners', 'event_listeners') ?? [];\n const listeners = [...listenersResolved];\n if (this._securityManager && !listeners.includes(this._securityManager)) {\n listeners.push(this._securityManager);\n }\n for (const listener of transportListeners) {\n if (!listeners.includes(listener)) {\n listeners.push(listener);\n }\n }\n if (!listeners.includes(tracker)) {\n listeners.push(tracker);\n }\n this._eventListeners = sortListeners(listeners);\n const bindingStoreOption = resolveOption(options, 'bindingStore', 'binding_store');\n const bindingManagerOptions = {\n hasUpstream: this._hasParent,\n getId: () => this._id,\n getPhysicalPath: () => this._physicalPath,\n getAcceptedLogicals: () => this._acceptedLogicals,\n forwardUpstream: (envelope, context) => this.forwardUpstream(envelope, context),\n envelopeFactory: this._envelopeFactory,\n deliveryTracker: this._deliveryTracker,\n getEncryptionKeyId: () => this._securityManager?.getEncryptionKeyId() ?? null,\n ...(bindingStoreOption ? { bindingStore: bindingStoreOption } : {}),\n };\n this._bindingManager = new BindingManager(bindingManagerOptions);\n this._binding_manager = this._bindingManager;\n this._envelopeListenerManager = new EnvelopeListenerManager({\n bindingManager: this._bindingManager,\n nodeLike: this,\n envelopeFactory: this._envelopeFactory,\n deliveryTracker: this._deliveryTracker,\n });\n const serviceManagerOption = resolveOption(options, 'serviceManager', 'service_manager');\n const defaultServiceConfigs = resolveArrayOption(options, 'defaultServiceConfigs', 'default_service_configs', 'service_configs') ?? [];\n const serviceCapabilityMapOption = resolveOption(options, 'serviceCapabilityMap', 'service_capability_map');\n const servicePollTimeoutOption = resolveNumberOption(options, 'servicePollTimeoutMs', 'service_poll_timeout_ms');\n const serviceManager = serviceManagerOption ??\n new DefaultServiceManager({\n invoke: (targetAddr, method, params, timeoutMs) => this.invoke(targetAddr, method, params, timeoutMs ?? DEFAULT_INVOKE_TIMEOUT_MILLIS),\n serve: (serviceName, handler, serveOptions) => this._envelopeListenerManager.listen(serviceName, handler, serveOptions ?? {}),\n serveRpc: (serviceName, handler, serveOptions) => this._envelopeListenerManager.listenRpc(serviceName, handler, serveOptions ?? {}),\n capabilityMap: serviceCapabilityMapOption ?? undefined,\n pollTimeoutMs: servicePollTimeoutOption ?? null,\n defaultServiceConfigs,\n });\n this._serviceManager = serviceManager;\n this._defaultBindingPath = this._physicalPath;\n const physicalPathProvided = options.physicalPath !== undefined ||\n options['physical_path'] !== undefined;\n this._sid =\n this._hasParent && !physicalPathProvided\n ? null\n : this.computeSid(this._physicalPath);\n this._handshakeCompleted = !this._hasParent;\n this._welcomeExpiresAt = null;\n this._attachExpiresAt = null;\n }\n async initializeSessionManager() {\n if (this._sessionManager) {\n return;\n }\n if (this._hasParent) {\n await this.initializeUpstreamSessionManager();\n }\n else {\n await this.initializeRootSessionManager();\n }\n }\n async initializeRootSessionManager() {\n const admissionClient = this._admissionClient ?? new NoopAdmissionClient({ systemId: this._id });\n const manager = new RootSessionManager({\n node: this,\n admissionClient,\n requestedLogicals: [...this._requestedLogicals],\n onWelcome: (frame) => this.handleWelcome(frame),\n onEpochChange: (epoch) => this.handleEpochChange(epoch),\n });\n this._sessionManager = manager;\n await manager.start();\n }\n async initializeUpstreamSessionManager() {\n if (!this._attachClient) {\n throw new Error('Attach client is required for upstream nodes');\n }\n if (!this._admissionClient) {\n throw new Error('Admission client is required for upstream nodes');\n }\n const manager = new UpstreamSessionManager({\n node: this,\n attachClient: this._attachClient,\n requestedLogicals: [...this._requestedLogicals],\n outboundOriginType: DeliveryOriginType.DOWNSTREAM,\n inboundOriginType: DeliveryOriginType.UPSTREAM,\n inboundHandler: (envelope, context) => this.handleInboundFromUpstream(envelope, context),\n onWelcome: (frame) => this.handleWelcome(frame),\n onAttach: (info, connector) => this.handleAttach(info, connector),\n onEpochChange: (epoch) => this.handleEpochChange(epoch),\n admissionClient: this._admissionClient,\n });\n this._sessionManager = manager;\n await manager.start();\n }\n async handleInboundFromUpstream(envelope, context) {\n await this.deliver(envelope, context);\n return null;\n }\n async handleWelcome(welcome) {\n if (welcome.systemId) {\n this._id = welcome.systemId;\n }\n if (welcome.acceptedLogicals) {\n this._acceptedLogicals = new Set(welcome.acceptedLogicals);\n }\n this._welcomeExpiresAt = welcome.expiresAt ?? null;\n if (!this._hasParent) {\n if (welcome.assignedPath) {\n this._physicalPath = welcome.assignedPath;\n }\n else if (welcome.systemId) {\n this._physicalPath = `/${welcome.systemId}`;\n }\n this._defaultBindingPath = this._physicalPath;\n this._sid = this.computeSid(this._physicalPath);\n this._upstreamConnector = null;\n this._handshakeCompleted = true;\n }\n await this.dispatchEvent('onWelcome', welcome);\n }\n async handleAttach(info, connector) {\n this._id = info.systemId;\n this._physicalPath =\n info.assignedPath ?? info.targetPhysicalPath ?? this._physicalPath;\n this._upstreamConnector = connector;\n if (info.acceptedLogicals) {\n this._acceptedLogicals = new Set(info.acceptedLogicals);\n }\n this._attachExpiresAt = info.attachExpiresAt ?? null;\n this._handshakeCompleted = true;\n if (this._physicalPath) {\n this._defaultBindingPath = this._physicalPath;\n this._sid = this.computeSid(this._physicalPath);\n }\n await this.dispatchEvent('onNodeAttachToUpstream', this, info);\n }\n async handleEpochChange(epoch) {\n await this._bindingManager.rebindAddressesUpstream();\n await this._bindingManager.readvertiseCapabilitiesUpstream();\n await this.dispatchEvent('onEpochChange', this, epoch);\n }\n async stopSessionManager() {\n const manager = this._sessionManager;\n if (!manager) {\n return;\n }\n try {\n await manager.stop();\n }\n finally {\n this._sessionManager = null;\n this._upstreamConnector = null;\n }\n }\n async handleSystemFrame(envelope, context) {\n const frameType = envelope.frame?.type;\n if (!frameType) {\n return;\n }\n if (frameType === 'NodeHeartbeat') {\n logger.debug('received_heartbeat_frame', {\n envelopeId: envelope.id,\n corrId: envelope.corrId ?? null,\n });\n this._lastHeartbeatAt = Date.now();\n await this.dispatchEvent('onHeartbeatReceived', envelope);\n return;\n }\n if (frameType === 'DeliveryAck') {\n await this.handleDeliveryAck(envelope, context);\n return;\n }\n logger.debug('unhandled_system_frame', {\n envelopeId: envelope.id,\n frameType,\n });\n }\n async handleDeliveryAck(envelope, context) {\n const frame = envelope.frame;\n if (!frame || frame.type !== 'DeliveryAck') {\n return;\n }\n await this._deliveryTracker.onEnvelopeDelivered(SYSTEM_INBOX, envelope, context);\n if (frame.ok !== false) {\n logger.debug('delivery_ack_received', {\n envelopeId: envelope.id,\n corrId: envelope.corrId ?? null,\n });\n return;\n }\n logger.warning('delivery_nack_received', {\n envelopeId: envelope.id,\n corrId: envelope.corrId ?? null,\n code: frame.code ?? null,\n reason: frame.reason ?? null,\n fromSystemId: context?.fromSystemId ?? null,\n });\n await this.onDeliveryNack(frame, envelope, context);\n }\n async onDeliveryNack(frame, envelope, _context) {\n logger.debug('delivery_nack_processed', {\n envelopeId: envelope.id,\n code: frame.code ?? null,\n reason: frame.reason ?? null,\n });\n }\n get id() {\n return this._id;\n }\n get sid() {\n return this._sid;\n }\n get physicalPath() {\n return this._physicalPath;\n }\n get acceptedLogicals() {\n return this._acceptedLogicals;\n }\n get envelopeFactory() {\n return this._envelopeFactory;\n }\n get deliveryPolicy() {\n return this._deliveryPolicy;\n }\n get bindingManager() {\n return this._bindingManager;\n }\n get defaultBindingPath() {\n return this._defaultBindingPath;\n }\n get hasParent() {\n return this._hasParent;\n }\n get securityManager() {\n return this._securityManager;\n }\n get admissionClient() {\n return this._admissionClient;\n }\n get eventListeners() {\n return this._eventListeners;\n }\n get upstreamConnector() {\n const manager = this._sessionManager;\n if (manager instanceof UpstreamSessionManager) {\n const activeConnector = manager.getActiveConnector();\n if (activeConnector) {\n return activeConnector;\n }\n }\n return this._upstreamConnector;\n }\n get publicUrl() {\n return this._publicUrl;\n }\n get storageProvider() {\n return this._storageProvider;\n }\n get cryptoProvider() {\n return this._cryptoProvider;\n }\n get lastHeartbeatAt() {\n return this._lastHeartbeatAt;\n }\n get serviceManager() {\n return this._serviceManager;\n }\n get handshakeCompleted() {\n return this._handshakeCompleted;\n }\n get welcomeExpiresAt() {\n return this._welcomeExpiresAt;\n }\n get attachExpiresAt() {\n return this._attachExpiresAt;\n }\n addEventListener(listener) {\n if (this._eventListeners.includes(listener)) {\n return;\n }\n this._eventListeners.push(listener);\n this._eventListeners.sort((a, b) => a.priority - b.priority);\n }\n removeEventListener(listener) {\n const index = this._eventListeners.indexOf(listener);\n if (index >= 0) {\n this._eventListeners.splice(index, 1);\n }\n }\n async start() {\n if (this._isStarted) {\n throw new Error('Node already started');\n }\n const release = pushNode(this);\n try {\n await this.dispatchEvent('onNodeInitialized', this);\n await this.initializeSessionManager();\n if (!this._sid && this._physicalPath) {\n this._sid = this.computeSid(this._physicalPath);\n }\n await this.persistNodeMeta();\n await this.listen(SYSTEM_INBOX, async (env, ctx) => {\n await this.handleSystemFrame(env, ctx);\n return null;\n });\n await this._serviceManager.start();\n await this.dispatchEvent('onNodeStarted', this);\n await this._bindingManager.restore();\n await this._envelopeListenerManager.start();\n this._releaseNodeContext = release;\n this._isStarted = true;\n logger.debug('node_started', {\n node_id: this.id,\n sid: this.sid,\n path: this.physicalPath,\n logicals: this.acceptedLogicals,\n });\n }\n catch (error) {\n release();\n try {\n await this._serviceManager.stop();\n }\n catch {\n // Best-effort cleanup\n }\n await this.stopSessionManager();\n throw error;\n }\n }\n async prepareToStop() {\n await this.dispatchEvent('onNodePreparingToStop', this);\n }\n async stop() {\n if (!this._isStarted) {\n return;\n }\n await this.prepareToStop();\n await this.shutdownTasks({ gracePeriod: 100, joinTimeout: 100 });\n await this._envelopeListenerManager.stop();\n await this.stopSessionManager();\n await this._serviceManager.stop();\n await this.dispatchEvent('onNodeStopped', this);\n this._isStarted = false;\n if (this._releaseNodeContext) {\n this._releaseNodeContext();\n this._releaseNodeContext = null;\n }\n logger.debug('node_stopped', {\n node_id: this.id,\n });\n }\n async bind(participant) {\n return this._bindingManager.bind(participant);\n }\n async unbind(participant) {\n await this._bindingManager.unbind(participant);\n }\n async listen(recipient, handler, pollTimeoutMs) {\n return this._envelopeListenerManager.listen(recipient, handler, {\n pollTimeoutMs: pollTimeoutMs ?? null,\n });\n }\n async listenRpc(serviceName, handler, pollTimeoutMs) {\n return this._envelopeListenerManager.listenRpc(serviceName, handler, {\n pollTimeoutMs: pollTimeoutMs ?? null,\n });\n }\n async invoke(targetAddr, method, params, timeoutMs) {\n return this._envelopeListenerManager.invoke({\n targetAddr,\n method,\n params,\n timeoutMs,\n });\n }\n async invokeByCapability(capabilities, method, params, timeoutMs) {\n return this._envelopeListenerManager.invoke({\n capabilities,\n method,\n params,\n timeoutMs,\n });\n }\n async *invokeStream(targetAddr, method, params, timeoutMs) {\n const stream = await this._envelopeListenerManager.invokeStream({\n targetAddr,\n method,\n params,\n timeoutMs,\n });\n for await (const item of stream) {\n yield item;\n }\n }\n async *invokeByCapabilityStream(capabilities, method, params, timeoutMs) {\n const stream = await this._envelopeListenerManager.invokeStream({\n capabilities,\n method,\n params,\n timeoutMs,\n });\n for await (const item of stream) {\n yield item;\n }\n }\n async send(envelope, context, _deliveryPolicy, deliveryFn, timeoutMs) {\n let effectiveContext;\n if (!context) {\n effectiveContext = localDeliveryContext(this.id);\n }\n else {\n if (context.originType &&\n context.originType !== DeliveryOriginType.LOCAL) {\n throw new Error('Can only send with LOCAL origin context');\n }\n if (context.fromConnector) {\n throw new Error('fromConnector must be null in LOCAL context');\n }\n effectiveContext = {\n ...context,\n originType: DeliveryOriginType.LOCAL,\n fromConnector: null,\n };\n }\n const deliveryPolicy = _deliveryPolicy ?? this._deliveryPolicy ?? null;\n const deliverFn = deliveryFn ??\n ((env, ctx) => this.deliver(env, ctx));\n const ackRequired = Boolean(deliveryPolicy?.isAckRequired(envelope));\n if (ackRequired) {\n envelope.rtype = envelope.rtype\n ? envelope.rtype | FameResponseType.ACK\n : FameResponseType.ACK;\n }\n const replyRequired = Boolean(envelope.rtype &&\n ((envelope.rtype & FameResponseType.REPLY) !== 0 ||\n (envelope.rtype & FameResponseType.STREAM) !== 0));\n if (!envelope.traceId) {\n envelope.traceId = generateId();\n }\n if (!ackRequired && !replyRequired) {\n await deliverFn(envelope, effectiveContext);\n return null;\n }\n const retryPolicy = deliveryPolicy?.senderRetryPolicy;\n if (!envelope.corrId) {\n envelope.corrId = generateId();\n }\n if (!envelope.replyTo) {\n envelope.replyTo = formatAddress(SYSTEM_INBOX, this._physicalPath ?? '');\n }\n const retryHandler = retryPolicy\n ? new DefaultRetryHandler(deliverFn)\n : null;\n const effectiveTimeout = timeoutMs ?? DEFAULT_INVOKE_TIMEOUT_MILLIS;\n const expectedResponseType = envelope.rtype ?? FameResponseType.ACK;\n await this._deliveryTracker.track(envelope, {\n timeoutMs: effectiveTimeout,\n expectedResponseType,\n retryPolicy: retryPolicy ?? null,\n retryHandler,\n });\n await deliverFn(envelope, effectiveContext);\n if (!ackRequired) {\n return null;\n }\n const ackEnvelope = await this._deliveryTracker.awaitAck(envelope.id, effectiveTimeout);\n const ackFrame = ackEnvelope.frame;\n if (!ackFrame || ackFrame.type !== 'DeliveryAck') {\n throw new Error('Expected DeliveryAck frame in acknowledgement');\n }\n return ackFrame;\n }\n async deliver(envelope, context) {\n const processedEnvelope = await this.runEnvelopeListeners('onDeliver', 1, [\n this,\n envelope,\n context,\n ]);\n if (!processedEnvelope) {\n return;\n }\n const frameType = processedEnvelope.frame?.type ?? null;\n if (frameType &&\n [\n 'AddressBind',\n 'AddressUnbind',\n 'CapabilityAdvertise',\n 'CapabilityWithdraw',\n 'NodeHeartbeat',\n ].includes(frameType)) {\n await this.forwardUpstream(processedEnvelope, context);\n return;\n }\n if (frameType &&\n [\n 'AddressBindAck',\n 'AddressUnbindAck',\n 'CapabilityAdvertiseAck',\n 'CapabilityWithdrawAck',\n ].includes(frameType)) {\n await this._deliveryTracker.onEnvelopeDelivered(SYSTEM_INBOX, processedEnvelope, context);\n return;\n }\n // if (frameType === 'DeliveryAck') {\n // if (!context || context.originType !== DeliveryOriginType.LOCAL) {\n // await this._deliveryTracker.onEnvelopeDelivered(SYSTEM_INBOX, processedEnvelope, context);\n // return;\n // }\n // }\n if (frameType &&\n [\n 'Data',\n 'DeliveryAck',\n 'SecureOpen',\n 'SecureAccept',\n 'SecureClose',\n ].includes(frameType)) {\n if (processedEnvelope.to && this.hasLocal(processedEnvelope.to)) {\n await this.deliverLocal(processedEnvelope.to, processedEnvelope, context);\n return;\n }\n if (processedEnvelope.capabilities &&\n processedEnvelope.capabilities.length > 0) {\n const resolved = await this._serviceManager.resolveAddressByCapability(processedEnvelope.capabilities);\n if (resolved) {\n await this.deliverLocal(resolved, processedEnvelope, context);\n return;\n }\n }\n }\n if (this._upstreamConnector &&\n context?.originType === DeliveryOriginType.LOCAL) {\n if (!context.fromConnector ||\n context.fromConnector !== this._upstreamConnector) {\n await this.forwardUpstream(processedEnvelope, context);\n }\n else {\n logger.error('attempted_upstream_loop', {\n envelopeId: processedEnvelope.id,\n });\n }\n return;\n }\n if (!processedEnvelope.to) {\n logger.error('dropping_envelope_without_destination', {\n envelopeId: processedEnvelope.id,\n capabilities: processedEnvelope.capabilities ?? [],\n });\n return;\n }\n logger.warning('no_local_handler_for_address', {\n address: processedEnvelope.to.toString?.() ?? String(processedEnvelope.to),\n originType: context?.originType ?? null,\n });\n }\n async deliverLocal(address, envelope, context) {\n const processedEnvelope = await this.runEnvelopeListeners('onDeliverLocal', 2, [this, address, envelope, context]);\n if (!processedEnvelope) {\n return;\n }\n const binding = this._bindingManager.getBinding(address);\n if (!binding) {\n throw new Error(`No local binding for address: ${address.toString()}`);\n }\n const channelMessage = createChannelMessage(processedEnvelope, context);\n await binding.channel.send(channelMessage);\n await this.runEnvelopeListeners('onDeliverLocalComplete', 2, [\n this,\n address,\n processedEnvelope,\n context,\n ]);\n }\n async forwardUpstream(envelope, context) {\n if (context?.originType === DeliveryOriginType.UPSTREAM) {\n return;\n }\n let processedEnvelope = null;\n try {\n processedEnvelope = await this.runEnvelopeListeners('onForwardUpstream', 1, [this, envelope, context]);\n if (!processedEnvelope) {\n return;\n }\n if (!this._upstreamConnector) {\n await this.runEnvelopeListeners('onForwardUpstreamComplete', 1, [\n this,\n processedEnvelope,\n undefined,\n undefined,\n context,\n ]);\n return;\n }\n const manager = this._sessionManager;\n if (!manager || !(manager instanceof UpstreamSessionManager)) {\n await this.runEnvelopeListeners('onForwardUpstreamComplete', 1, [\n this,\n processedEnvelope,\n undefined,\n undefined,\n context,\n ]);\n return;\n }\n await manager.send(processedEnvelope);\n await this.runEnvelopeListeners('onForwardUpstreamComplete', 1, [\n this,\n processedEnvelope,\n undefined,\n undefined,\n context,\n ]);\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n await this.runEnvelopeListeners('onForwardUpstreamComplete', 1, [\n this,\n processedEnvelope ?? envelope,\n undefined,\n err,\n context,\n ]);\n throw err;\n }\n }\n hasLocal(address) {\n if (this._bindingManager.hasBinding(address)) {\n return true;\n }\n try {\n const [, location] = parseAddress(address.toString());\n return location === this._physicalPath;\n }\n catch {\n return false;\n }\n }\n gatherSupportedCallbackGrants() {\n const grants = [];\n const seen = new Set();\n const addGrant = (grant) => {\n let signature = null;\n try {\n signature = JSON.stringify(grant);\n }\n catch {\n // Non-serializable grant; allow duplicates to ensure availability\n }\n if (signature !== null) {\n if (seen.has(signature)) {\n return;\n }\n seen.add(signature);\n }\n grants.push(grant);\n };\n const processCandidate = (candidate) => {\n if (!candidate || typeof candidate !== 'object') {\n return;\n }\n try {\n const asAny = candidate;\n let grant;\n if (typeof asAny.asCallbackGrant === 'function') {\n grant = asAny.asCallbackGrant();\n }\n else if (typeof asAny.getCallbackGrant === 'function') {\n grant = asAny.getCallbackGrant();\n }\n if (grant) {\n addGrant(grant);\n }\n }\n catch (error) {\n logger.warning('callback_grant_collection_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n };\n for (const listener of this._transportListeners) {\n processCandidate(listener);\n }\n for (const listener of this._eventListeners) {\n if (this._transportListeners.includes(listener)) {\n continue;\n }\n processCandidate(listener);\n }\n return grants;\n }\n async dispatchEvent(eventName, ...args) {\n for (const listener of this._eventListeners) {\n const handler = resolveListenerMethod(listener, eventName);\n if (handler) {\n await handler(...args);\n }\n }\n }\n async dispatchEnvelopeEvent(eventName, ...args) {\n const argsWithNode = args.length > 0 && args[0] === this ? args : [this, ...args];\n const envelopeIndex = argsWithNode.findIndex((value) => value && typeof value === 'object' && 'frame' in value);\n if (envelopeIndex === -1) {\n throw new Error(`dispatchEnvelopeEvent(${eventName}) requires an envelope argument`);\n }\n return this.runEnvelopeListeners(eventName, envelopeIndex, argsWithNode);\n }\n computeSid(physicalPath) {\n return secureDigest(physicalPath);\n }\n async runEnvelopeListeners(eventName, envelopeIndex, args) {\n let currentEnvelope = args[envelopeIndex] ?? null;\n for (const listener of this._eventListeners) {\n const handler = resolveListenerMethod(listener, eventName);\n if (!handler) {\n continue;\n }\n const result = await handler(...args);\n if (result === null) {\n return null;\n }\n if (result !== undefined) {\n currentEnvelope = result;\n args[envelopeIndex] = currentEnvelope;\n }\n }\n return currentEnvelope;\n }\n async persistNodeMeta() {\n try {\n const store = await this._nodeMetaStorePromise;\n const existing = await store.get('self');\n const record = existing\n ? Object.assign(existing, { id: this._id })\n : new NodeMetaRecord(this._id);\n await store.set('self', record);\n }\n catch (error) {\n logger.warning('node_meta_persist_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n}\n//# sourceMappingURL=node.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nimport { InMemoryKeyValueStore } from '../../storage/in-memory-storage.js';\nexport const ROUTE_STORE_FACTORY_BASE_TYPE = 'RouteStoreFactory';\nexport class RouteStoreFactory extends AbstractResourceFactory {\n static async createRouteStore(config, options = {}) {\n const configRecord = (config ?? null);\n const store = configRecord\n ? await createResource(ROUTE_STORE_FACTORY_BASE_TYPE, configRecord, options)\n : await createDefaultResource(ROUTE_STORE_FACTORY_BASE_TYPE, null, options);\n return store ?? null;\n }\n}\nexport const FACTORY_META = {\n base: ROUTE_STORE_FACTORY_BASE_TYPE,\n key: 'InMemoryRouteStore',\n};\nexport class InMemoryRouteStoreFactory extends RouteStoreFactory {\n constructor() {\n super(...arguments);\n this.type = 'InMemoryRouteStore';\n this.isDefault = true;\n this.priority = 100;\n }\n async create(_config, ..._factoryArgs) {\n return new InMemoryKeyValueStore();\n }\n}\nexport default InMemoryRouteStoreFactory;\n//# sourceMappingURL=route-store-factory.js.map","import { InMemoryKeyValueStore } from '../../storage/in-memory-storage.js';\nlet defaultRouteStore = null;\nexport function getDefaultRouteStore() {\n if (!defaultRouteStore) {\n const lazyStore = new LazyKeyValueStore(() => Promise.resolve(new InMemoryKeyValueStore()));\n defaultRouteStore = new RouteStoreAdapter(lazyStore);\n }\n return defaultRouteStore;\n}\nexport class RouteEntryRecord {\n static from(entry) {\n return normalizeRouteEntryForStorage(entry);\n }\n toRouteEntry() {\n return { ...this };\n }\n}\nclass LazyKeyValueStore {\n constructor(factory) {\n this.factory = factory;\n this.storePromise = null;\n }\n getStore() {\n if (!this.storePromise) {\n this.storePromise = this.factory();\n }\n return this.storePromise;\n }\n async set(key, value) {\n const store = await this.getStore();\n await store.set(key, value);\n }\n async update(key, value) {\n const store = await this.getStore();\n await store.update(key, value);\n }\n async get(key) {\n const store = await this.getStore();\n return store.get(key);\n }\n async delete(key) {\n const store = await this.getStore();\n await store.delete(key);\n }\n async list() {\n const store = await this.getStore();\n return store.list();\n }\n}\nclass RouteStoreAdapter {\n constructor(store) {\n this.store = store;\n }\n async set(key, value) {\n await this.store.set(key, RouteEntryRecord.from(value));\n }\n async update(key, value) {\n await this.store.update(key, RouteEntryRecord.from(value));\n }\n async get(key) {\n const record = await this.store.get(key);\n return record ? record.toRouteEntry() : undefined;\n }\n async delete(key) {\n await this.store.delete(key);\n }\n async list() {\n const records = await this.store.list();\n const result = {};\n for (const [key, value] of Object.entries(records)) {\n result[key] = value.toRouteEntry();\n }\n return result;\n }\n}\nconst ROUTE_STORE_NAMESPACE = 'fame.sentinel.routes';\nexport function createPersistentRouteStore(storageProvider, namespace = ROUTE_STORE_NAMESPACE) {\n const lazyStore = new LazyKeyValueStore(() => storageProvider.getKeyValueStore(RouteEntryRecord, namespace));\n return new RouteStoreAdapter(lazyStore);\n}\nexport { RouteStoreFactory, ROUTE_STORE_FACTORY_BASE_TYPE, } from './route-store-factory.js';\nexport function normalizeRouteEntry(entry) {\n const systemId = pickString(entry.systemId ?? entry.system_id) ?? '';\n const assignedPath = pickString(entry.assignedPath ?? entry.assigned_path);\n const instanceId = pickString(entry.instanceId ?? entry.instance_id);\n const connectorConfig = pickConnectorConfig(entry.connectorConfig ?? entry.connector_config);\n const attachExpiresAt = pickDate(entry.attachExpiresAt ?? entry.attach_expires_at);\n const metadata = pickRecord(entry.metadata);\n const callbackGrants = pickRecordArray(entry.callbackGrants ?? entry.callback_grants);\n const durable = Boolean(entry.durable);\n return {\n systemId,\n assignedPath: assignedPath ?? null,\n instanceId: instanceId ?? null,\n connectorConfig: connectorConfig ?? null,\n durable,\n attachExpiresAt,\n metadata,\n callbackGrants,\n };\n}\nfunction pickString(value) {\n if (typeof value === 'string' && value.length) {\n return value;\n }\n return null;\n}\nfunction pickConnectorConfig(value) {\n if (value &&\n typeof value === 'object' &&\n 'type' in value &&\n typeof value.type === 'string') {\n return value;\n }\n return null;\n}\nfunction pickDate(value) {\n if (!value && value !== 0) {\n return null;\n }\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n if (typeof value === 'string' || typeof value === 'number') {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n return null;\n}\nfunction pickRecord(value) {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return value;\n }\n return null;\n}\nfunction pickRecordArray(value) {\n if (!Array.isArray(value)) {\n return null;\n }\n const records = [];\n for (const item of value) {\n if (item && typeof item === 'object' && !Array.isArray(item)) {\n records.push(item);\n }\n }\n return records.length ? records : null;\n}\nfunction normalizeRouteEntryForStorage(entry) {\n const record = new RouteEntryRecord();\n Object.assign(record, entry);\n assignPairedField(record, 'systemId', 'system_id', resolveStringField(entry.systemId, entry.system_id));\n assignPairedField(record, 'assignedPath', 'assigned_path', resolveStringField(entry.assignedPath, entry.assigned_path, true));\n assignPairedField(record, 'instanceId', 'instance_id', resolveStringField(entry.instanceId, entry.instance_id, true));\n assignPairedField(record, 'connectorConfig', 'connector_config', resolveConnectorConfig(entry.connectorConfig, entry.connector_config));\n assignPairedField(record, 'attachExpiresAt', 'attach_expires_at', resolveAttachExpiresAt(entry.attachExpiresAt, entry.attach_expires_at));\n assignPairedField(record, 'metadata', 'metadata', resolveRecordField(entry.metadata));\n assignPairedField(record, 'callbackGrants', 'callback_grants', resolveRecordArray(entry.callbackGrants, entry.callback_grants));\n if ('durable' in entry) {\n record.durable = entry.durable === true;\n }\n return record;\n}\nfunction assignPairedField(record, camelKey, snakeKey, value) {\n const target = record;\n if (value === undefined) {\n delete target[camelKey];\n delete target[snakeKey];\n return;\n }\n target[camelKey] = value;\n target[snakeKey] = value;\n}\nfunction resolveStringField(primary, secondary, allowNull = false) {\n if (primary !== undefined) {\n if (primary === null) {\n return allowNull ? null : undefined;\n }\n return typeof primary === 'string' ? primary : undefined;\n }\n if (secondary !== undefined) {\n if (secondary === null) {\n return allowNull ? null : undefined;\n }\n return typeof secondary === 'string' ? secondary : undefined;\n }\n return undefined;\n}\nfunction resolveConnectorConfig(primary, secondary) {\n const candidate = primary !== undefined ? primary : secondary;\n if (candidate === undefined) {\n return undefined;\n }\n if (candidate === null) {\n return null;\n }\n return pickConnectorConfig(candidate) ?? undefined;\n}\nfunction resolveAttachExpiresAt(primary, secondary) {\n const candidate = primary !== undefined ? primary : secondary;\n if (candidate === undefined) {\n return undefined;\n }\n if (candidate === null) {\n return null;\n }\n return pickDate(candidate);\n}\nfunction resolveRecordField(value) {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n return pickRecord(value) ?? undefined;\n}\nfunction resolveRecordArray(primary, secondary) {\n const candidate = primary !== undefined ? primary : secondary;\n if (candidate === undefined) {\n return undefined;\n }\n if (candidate === null) {\n return null;\n }\n return pickRecordArray(candidate) ?? undefined;\n}\n//# sourceMappingURL=route-store.js.map","import { AuthorizationContextSchema, DeliveryOriginType, FameResponseType, } from '@naylence/core';\nimport { ConnectorFactory, createResource, } from '../connector/connector-factory.js';\nimport { FameTransportClose } from '../errors/errors.js';\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { delay } from '../util/task-utils.js';\nimport { getLogger } from '../util/logging.js';\nimport { AsyncLock } from '../util/lock.js';\nimport { getDefaultRouteStore, normalizeRouteEntry, } from './store/route-store.js';\nconst logger = getLogger('naylence.fame.sentinel.route_manager');\nconst DEFAULT_CONNECTOR_CLEANUP_DELAY_MS = 200;\nfunction normalizeRouteManagerOptions(options) {\n const { route_store, get_id, cleanup_delay_ms, retain_address_bindings_on_disconnect, ...rest } = options;\n return {\n ...rest,\n routeStore: rest.routeStore ?? route_store,\n getId: rest.getId ?? get_id,\n cleanupDelayMs: rest.cleanupDelayMs ?? cleanup_delay_ms,\n retainAddressBindingsOnDisconnect: rest.retainAddressBindingsOnDisconnect ??\n retain_address_bindings_on_disconnect,\n };\n}\nfunction normalizeRouteRemovalOptions(options) {\n if (!options) {\n return undefined;\n }\n const { delay_ms, capture_stack, retain_addresses, ...rest } = options;\n return {\n ...rest,\n delayMs: rest.delayMs ?? delay_ms,\n captureStack: rest.captureStack ?? capture_stack,\n retainAddresses: rest.retainAddresses ?? retain_addresses,\n };\n}\nexport class RouteManager extends TaskSpawner {\n constructor(options) {\n super();\n this.downstreamRoutes = new Map();\n this._downstream_addresses_routes = new Map();\n this._downstream_addresses_legacy = new Map();\n this._peer_routes = new Map();\n this._peer_addresses_routes = new Map();\n this._pending_route_metadata = new Map();\n this._pools = new Map();\n this._routesLock = new AsyncLock();\n this.stopController = new AbortController();\n this.pendingCleanupControllers = new Map();\n this.flowRoutes = new Map();\n this._pending_routes = new Map();\n const normalizedOptions = normalizeRouteManagerOptions(options);\n this.deliver = normalizedOptions.deliver;\n this._downstream_route_store =\n normalizedOptions.routeStore ?? getDefaultRouteStore();\n this._peer_route_store =\n normalizedOptions.routeStore ?? getDefaultRouteStore();\n this.getId = normalizedOptions.getId ?? (() => '');\n const configuredDelay = normalizedOptions.cleanupDelayMs;\n this.cleanupDelayMs = Number.isFinite(configuredDelay ?? NaN)\n ? Math.max(0, Number(configuredDelay))\n : DEFAULT_CONNECTOR_CLEANUP_DELAY_MS;\n this.retainAddressBindingsOnDisconnect =\n normalizedOptions.retainAddressBindingsOnDisconnect ?? true;\n }\n get routesLock() {\n return this._routesLock;\n }\n async start() {\n await this.restoreRoutes();\n this.spawn(() => this.janitorLoop(), {\n name: `route-janitor-${this.getId()}`,\n });\n }\n async stop() {\n this.stopController.abort();\n await this._routesLock.runExclusive(async () => {\n for (const connector of this.downstreamRoutes.values()) {\n await this.safeStop(connector);\n }\n for (const connector of this._peer_routes.values()) {\n await this.safeStop(connector);\n }\n this.downstreamRoutes.clear();\n this._downstream_addresses_routes.clear();\n this._downstream_addresses_legacy.clear();\n this._peer_routes.clear();\n this._peer_addresses_routes.clear();\n });\n for (const entry of this._pending_routes.values()) {\n try {\n entry.cancelAttachTimeout?.();\n await this.safeStop(entry.connector);\n }\n catch (error) {\n logger.debug('pending_route_stop_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n this._pending_routes.clear();\n this._pending_route_metadata.clear();\n await this.shutdownTasks({ cancelHanging: true });\n }\n getFlowRoute(flowId) {\n return this.flowRoutes.get(flowId);\n }\n trackFlowRoute(flowId, connector) {\n this.flowRoutes.set(flowId, connector);\n }\n clearFlowRoute(flowId) {\n this.flowRoutes.delete(flowId);\n }\n async registerDownstreamRoute(segment, route) {\n await this._routesLock.runExclusive(async () => {\n this.cancelPendingCleanup(segment);\n this.downstreamRoutes.set(segment, route);\n });\n logger.debug('registered_downstream_route', { route: segment });\n }\n async unregisterDownstreamRoute(segment, options) {\n const normalizedOptions = normalizeRouteRemovalOptions(options);\n await this.removeDownstreamRoute(segment, {\n ...normalizedOptions,\n reason: normalizedOptions?.reason ?? 'unregisterDownstreamRoute',\n retainAddresses: normalizedOptions?.retainAddresses ??\n this.retainAddressBindingsOnDisconnect,\n });\n }\n async registerPeerRoute(segment, route) {\n await this._routesLock.runExclusive(async () => {\n this.cancelPendingCleanup(segment);\n this._peer_routes.set(segment, route);\n });\n logger.debug('registered_peer_route', { route: segment });\n }\n async unregisterPeerRoute(segment, options) {\n const normalizedOptions = normalizeRouteRemovalOptions(options);\n await this.removePeerRoute(segment, {\n ...normalizedOptions,\n reason: normalizedOptions?.reason ?? 'unregisterPeerRoute',\n retainAddresses: normalizedOptions?.retainAddresses ??\n this.retainAddressBindingsOnDisconnect,\n });\n }\n async restoreRoutes() {\n const entries = await this._downstream_route_store.list();\n const now = new Date();\n const entryTuples = Object.entries(entries);\n await Promise.all(entryTuples.map(async ([segment, entry]) => {\n const normalized = this.normalizeEntry(entry);\n if (!normalized.connectorConfig) {\n logger.warning('route_restore_missing_config', { segment });\n return;\n }\n if (normalized.attachExpiresAt && normalized.attachExpiresAt < now) {\n logger.debug('skipping_expired_route', { segment });\n return;\n }\n const authorization = this.parseAuthorization(normalized.metadata);\n const connectorConfig = normalized.connectorConfig;\n let backoff = 2000;\n for (let attempt = 1; attempt <= 3; attempt++) {\n try {\n const connector = await this.createConnector(connectorConfig);\n const deliveryContext = this.buildAuthorizedContext({\n segment,\n connector,\n authorization,\n });\n await connector.start(async (envelope) => {\n await this.deliver(envelope, deliveryContext);\n return null;\n });\n await this._routesLock.runExclusive(async () => {\n this.downstreamRoutes.set(segment, connector);\n });\n if (normalized.attachExpiresAt) {\n const delayMs = normalized.attachExpiresAt.getTime() - now.getTime();\n if (delayMs > 0) {\n this.spawn(() => this.expireRouteLater(segment, delayMs), {\n name: `expire-restore-${this.getId()}`,\n });\n }\n }\n break;\n }\n catch (error) {\n if (this.isTransientError(error)) {\n logger.warning('transient_restore_failure', {\n segment,\n attempt,\n error: error instanceof Error ? error.message : String(error),\n });\n await delay(backoff, this.stopController.signal).catch(() => undefined);\n backoff *= 2;\n continue;\n }\n logger.error('failed_to_restore_route', {\n segment,\n error: error instanceof Error ? error.message : String(error),\n });\n break;\n }\n }\n }));\n }\n async expireRouteLater(segment, delayMs) {\n if (delayMs > 0) {\n try {\n await delay(delayMs, this.stopController.signal);\n }\n catch {\n return;\n }\n }\n let connector;\n await this._routesLock.runExclusive(async () => {\n connector = this.downstreamRoutes.get(segment);\n this.downstreamRoutes.delete(segment);\n });\n if (connector) {\n await this.safeStop(connector);\n }\n await this._downstream_route_store\n .delete(segment)\n .catch((error) => {\n logger.warning('route_expiration_delete_failed', {\n segment,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n this.purgeRouteReferences(segment);\n logger.debug('expired_route', { route: segment });\n }\n async removeDownstreamRoute(segment, options) {\n const normalizedOptions = normalizeRouteRemovalOptions(options);\n const retainAddresses = normalizedOptions?.retainAddresses ??\n this.retainAddressBindingsOnDisconnect;\n await this.removeRoute(segment, this.downstreamRoutes, this._downstream_route_store, {\n ...normalizedOptions,\n retainAddresses,\n });\n }\n async removePeerRoute(segment, options) {\n const normalizedOptions = normalizeRouteRemovalOptions(options);\n const retainAddresses = normalizedOptions?.retainAddresses ??\n this.retainAddressBindingsOnDisconnect;\n await this.removeRoute(segment, this._peer_routes, this._peer_route_store, {\n ...normalizedOptions,\n retainAddresses,\n });\n }\n async removeRoute(segment, routes, store, options) {\n const normalizedOptions = normalizeRouteRemovalOptions(options);\n const stop = normalizedOptions?.stop ?? true;\n const delayMs = normalizedOptions?.delayMs ?? this.cleanupDelayMs;\n const reason = normalizedOptions?.reason ?? 'unspecified';\n const captureStack = normalizedOptions?.captureStack !== false;\n const retainAddresses = normalizedOptions?.retainAddresses ?? false;\n let connector;\n let existed = false;\n await this._routesLock.runExclusive(async () => {\n connector = routes.get(segment);\n existed = routes.delete(segment);\n });\n if (connector && stop) {\n await this.cleanupConnector(segment, connector, delayMs);\n }\n const orphanedDownstream = [];\n for (const [address, info] of this._downstream_addresses_routes.entries()) {\n if (info.segment === segment) {\n orphanedDownstream.push(address);\n }\n }\n const orphanedLegacy = [];\n for (const [address, info] of this._downstream_addresses_legacy.entries()) {\n if (info.segment === segment) {\n orphanedLegacy.push(address);\n }\n }\n const orphanedPeerAddresses = [];\n for (const [address, mappedSegment,] of this._peer_addresses_routes.entries()) {\n if (mappedSegment === segment) {\n orphanedPeerAddresses.push(address);\n }\n }\n if (!retainAddresses) {\n this.purgeRouteReferences(segment);\n }\n await store.delete(segment).catch((error) => {\n logger.warning('route_delete_failed', {\n segment,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n const removalMeta = {\n segment,\n reason,\n stop,\n delay_ms: delayMs,\n existed,\n had_connector: Boolean(connector),\n orphaned_downstream_addresses: orphanedDownstream,\n orphaned_legacy_addresses: orphanedLegacy,\n orphaned_peer_addresses: orphanedPeerAddresses,\n meta: normalizedOptions?.meta,\n caller_stack: captureStack ? captureCallerStack() : undefined,\n retained_addresses: retainAddresses,\n };\n logger.debug('removed_route', removalMeta);\n }\n purgeRouteReferences(segment) {\n for (const [address, info] of this._downstream_addresses_routes.entries()) {\n if (info.segment === segment) {\n this._downstream_addresses_routes.delete(address);\n }\n }\n for (const [address, info] of this._downstream_addresses_legacy.entries()) {\n if (info.segment === segment) {\n this._downstream_addresses_legacy.delete(address);\n }\n }\n for (const [address, mappedSegment,] of this._peer_addresses_routes.entries()) {\n if (mappedSegment === segment) {\n this._peer_addresses_routes.delete(address);\n }\n }\n for (const pool of this._pools.values()) {\n pool.delete(segment);\n }\n }\n cancelPendingCleanup(segment) {\n const controller = this.pendingCleanupControllers.get(segment);\n if (!controller) {\n return;\n }\n controller.abort();\n this.pendingCleanupControllers.delete(segment);\n }\n async cleanupConnector(segment, connector, delayMs) {\n if (!Number.isFinite(delayMs) || delayMs <= 0) {\n await this.safeStop(connector);\n return;\n }\n this.cancelPendingCleanup(segment);\n const controller = new AbortController();\n this.pendingCleanupControllers.set(segment, controller);\n this.spawn(async (taskSignal) => {\n const combined = new AbortController();\n const abortHandler = () => combined.abort();\n controller.signal.addEventListener('abort', abortHandler);\n if (taskSignal) {\n if (taskSignal.aborted) {\n combined.abort();\n }\n else {\n taskSignal.addEventListener('abort', abortHandler);\n }\n }\n try {\n await delay(delayMs, combined.signal);\n }\n catch (error) {\n if (combined.signal.aborted) {\n logger.debug('connector_cleanup_cancelled', { segment });\n }\n else {\n logger.debug('connector_cleanup_delay_failed', {\n segment,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n return;\n }\n finally {\n controller.signal.removeEventListener('abort', abortHandler);\n taskSignal?.removeEventListener('abort', abortHandler);\n if (this.pendingCleanupControllers.get(segment) === controller) {\n this.pendingCleanupControllers.delete(segment);\n }\n }\n await this.safeStop(connector);\n }, { name: `route-cleanup-${segment}-${this.getId()}` });\n }\n async safeStop(connector) {\n try {\n await connector.stop();\n }\n catch (error) {\n if (error instanceof Error) {\n logger.debug('connector_stop_ignored', { error: error.message });\n }\n }\n for (const [flowId, peer] of this.flowRoutes.entries()) {\n if (peer === connector) {\n this.flowRoutes.delete(flowId);\n }\n }\n }\n async janitorLoop() {\n const signal = this.stopController.signal;\n try {\n while (!signal.aborted) {\n const now = new Date();\n await this.scanStoreForExpirations(this._downstream_route_store, now, 'downstream');\n await this.scanStoreForExpirations(this._peer_route_store, now, 'peer');\n try {\n await delay(1000, signal);\n }\n catch {\n break;\n }\n }\n }\n catch (error) {\n logger.error('janitor_loop_error', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n finally {\n logger.debug('janitor_loop_exited');\n }\n }\n async scanStoreForExpirations(store, now, kind) {\n const entries = await store.list();\n const entryTuples = Object.entries(entries);\n await Promise.all(entryTuples.map(async ([segment, entry]) => {\n const normalized = this.normalizeEntry(entry);\n if (!normalized.attachExpiresAt || normalized.attachExpiresAt >= now) {\n return;\n }\n await this._routesLock.runExclusive(async () => {\n const map = kind === 'downstream' ? this.downstreamRoutes : this._peer_routes;\n const connector = map.get(segment);\n if (connector) {\n map.delete(segment);\n await this.safeStop(connector);\n }\n });\n await store.delete(segment).catch((error) => {\n logger.warning('route_auto_expire_delete_failed', {\n segment,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n this.purgeRouteReferences(segment);\n logger.debug('auto_expired_route', { segment });\n }));\n }\n parseAuthorization(metadata) {\n if (!metadata) {\n return null;\n }\n try {\n const base = AuthorizationContextSchema.parse(metadata);\n const record = metadata;\n const extraFields = {\n sub: pickString(record.sub ?? record['sub']),\n aud: pickString(record.aud ?? record['aud']),\n assignedPath: pickString(record.assignedPath ?? record['assigned_path']),\n acceptedCapabilities: pickStringArray(record.acceptedCapabilities ?? record['accepted_capabilities']),\n acceptedLogicals: pickStringArray(record.acceptedLogicals ?? record['accepted_logicals']),\n instanceId: pickString(record.instanceId ?? record['instance_id']),\n scopes: pickStringArray(record.scopes),\n attachExpiresAt: pickDate(record.attachExpiresAt ?? record['attach_expires_at']),\n };\n return { ...base, ...extraFields };\n }\n catch (error) {\n logger.error('corrupt_route_metadata', {\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n }\n buildAuthorizedContext(options) {\n const security = options.authorization\n ? { authorization: options.authorization }\n : undefined;\n return {\n fromSystemId: options.segment,\n fromConnector: options.connector,\n originType: DeliveryOriginType.DOWNSTREAM,\n expectedResponseType: FameResponseType.NONE,\n security,\n };\n }\n normalizeEntry(entry) {\n return normalizeRouteEntry(entry);\n }\n async createConnector(config) {\n if (ConnectorFactory &&\n typeof ConnectorFactory.createConnector === 'function') {\n return await ConnectorFactory.createConnector(config);\n }\n return await createResource(config);\n }\n isTransientError(error) {\n if (error instanceof FameTransportClose) {\n return true;\n }\n if (error instanceof Error) {\n const message = error.message ?? '';\n return (message.includes('Timeout') ||\n message.includes('ECONN') ||\n message.includes('temporary'));\n }\n return false;\n }\n}\nfunction pickString(value) {\n return typeof value === 'string' && value.length ? value : undefined;\n}\nfunction pickStringArray(value) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n const strings = value.filter((entry) => typeof entry === 'string');\n return strings.length ? strings : undefined;\n}\nfunction pickDate(value) {\n if (!value && value !== 0) {\n return undefined;\n }\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? undefined : value;\n }\n if (typeof value === 'string' || typeof value === 'number') {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? undefined : date;\n }\n return undefined;\n}\nfunction captureCallerStack(skip = 3, depth = 6) {\n const stack = new Error('route removal trace').stack;\n if (!stack) {\n return undefined;\n }\n const frames = stack.split('\\n').slice(skip, skip + depth);\n if (!frames.length) {\n return undefined;\n }\n return frames.map((frame) => frame.trim()).join(' | ');\n}\n//# sourceMappingURL=route-manager.js.map","import { FlowFlags, localDeliveryContext, parseAddress, } from '@naylence/core';\nimport { FameTransportClose } from '../errors/errors.js';\nimport { getLogger, summarizeEnvelope } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.sentinel.router');\nconst ZERO_EPH_PUB_BASE64 = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';\nexport class Drop {\n async execute(envelope, router, state, context) {\n await emitDeliveryNack(envelope, router, state, 'NO_ROUTE', context ?? undefined);\n logger.debug('dropped_envelope', Object.assign(summarizeEnvelope(envelope, ''), {\n localAddresses: Array.from(state.local.values()),\n downstreamRoutes: Array.from(state.downstreamAddressRoutes.entries()),\n peerRoutes: Array.from(state.peerAddressRoutes.entries()),\n }));\n }\n}\nexport class ForwardUp {\n async execute(envelope, router, _state, context) {\n await router.forwardUpstream(envelope, context ?? undefined);\n }\n}\nexport class DeliverLocal {\n constructor(recipient) {\n this.recipient = recipient;\n }\n async execute(envelope, router, _state, context) {\n await router.deliverLocal(this.recipient, envelope, context ?? undefined);\n }\n}\nexport class ForwardChild {\n constructor(segment) {\n this.segment = segment;\n }\n async execute(envelope, router, state, context) {\n try {\n await router.forwardToRoute?.(this.segment, envelope, context ?? undefined);\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n logger.error('transport_closed_forward_child', {\n segment: this.segment,\n error: error.message,\n });\n await router.removeDownstreamRoute?.(this.segment, {\n reason: 'transport_closed_forward_child',\n meta: {\n segment: this.segment,\n envelope_id: envelope.id,\n frame_type: envelope.frame?.type ?? null,\n },\n captureStack: false,\n });\n if (!isDeliveryAck(envelope.frame)) {\n await emitDeliveryNack(envelope, router, state, 'ROUTE_CONNECTOR_CLOSED', context ?? undefined);\n }\n return;\n }\n throw error;\n }\n }\n}\nexport class ForwardPeer {\n constructor(segment) {\n this.segment = segment;\n }\n async execute(envelope, router, state, context) {\n try {\n await router.forwardToPeer?.(this.segment, envelope, context ?? undefined);\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n logger.error('transport_closed_forward_peer', {\n segment: this.segment,\n error: error.message,\n });\n await router.removePeerRoute?.(this.segment, {\n reason: 'transport_closed_forward_peer',\n meta: {\n segment: this.segment,\n envelope_id: envelope.id,\n frame_type: envelope.frame?.type ?? null,\n },\n captureStack: false,\n });\n if (!isDeliveryAck(envelope.frame)) {\n await emitDeliveryNack(envelope, router, state, 'ROUTE_CONNECTOR_CLOSED', context ?? undefined);\n }\n return;\n }\n throw error;\n }\n }\n}\nexport class RouterState {\n constructor(options) {\n const normalized = normalizeRouterStateOptions(options);\n this.nodeId = normalized.nodeId;\n this.local = new Set(Array.from(normalized.local, (address) => normalizeAddressKey(address)));\n this.downstreamAddressRoutes = toReadOnlyMap(normalized.downstreamAddressRoutes);\n this.peerAddressRoutes = toReadOnlyMap(normalized.peerAddressRoutes ?? new Map());\n this.childSegments = new Set(normalized.childSegments);\n this.peerSegments = new Set(normalized.peerSegments);\n this.hasParent = normalized.hasParent;\n this.physicalSegments = [...normalized.physicalSegments];\n this.pools = toPoolMap(normalized.pools);\n this.capabilities = normalized.capabilities ?? {};\n this.resolveAddressByCapability =\n normalized.resolveAddressByCapability ?? null;\n this.envelopeFactory = normalized.envelopeFactory ?? null;\n }\n nextHop(fullPath) {\n const relative = stripSelfPrefix(fullPath, this.physicalSegments);\n return relative[0] ?? null;\n }\n}\nexport async function emitDeliveryNack(envelope, routingNode, state, code, context) {\n const targetAddress = envelope.replyTo;\n if (!shouldEmitNack(envelope) || !targetAddress) {\n return;\n }\n if (!state.envelopeFactory) {\n logger.warning('router_missing_envelope_factory', summarizeEnvelope(envelope));\n return;\n }\n const nackFrame = createNackFrame(envelope, code);\n const targetKey = normalizeAddressKey(targetAddress);\n const nackEnvelope = state.envelopeFactory.createEnvelope({\n to: targetAddress,\n frame: nackFrame,\n flags: FlowFlags.RESET,\n corrId: envelope.corrId,\n });\n try {\n if (state.local.has(targetKey)) {\n await routingNode.deliverLocal(targetAddress, nackEnvelope, context);\n return;\n }\n const [, targetPath] = parseAddress(targetKey);\n const remainder = stripSelfPrefix(targetPath, state.physicalSegments);\n const firstSegment = remainder[0];\n const deliveryContext = localDeliveryContext(state.nodeId);\n if (firstSegment && state.childSegments.has(firstSegment)) {\n await routingNode.forwardToRoute?.(firstSegment, nackEnvelope, deliveryContext);\n }\n else if (firstSegment && state.peerSegments.has(firstSegment)) {\n await routingNode.forwardToPeer?.(firstSegment, nackEnvelope, deliveryContext);\n }\n else {\n await routingNode.forwardUpstream(nackEnvelope, deliveryContext);\n }\n }\n catch (error) {\n logger.warning('nack_forward_failed', {\n error: error instanceof Error ? error.message : String(error),\n ...summarizeEnvelope(envelope),\n });\n }\n}\nfunction shouldEmitNack(envelope) {\n return ((isDataFrame(envelope.frame) || isSecureOpenFrame(envelope.frame)) &&\n Boolean(envelope.id) &&\n Boolean(envelope.replyTo) &&\n Boolean(envelope.corrId));\n}\nfunction createNackFrame(envelope, code) {\n if (isSecureOpenFrame(envelope.frame)) {\n return {\n type: 'SecureAccept',\n cid: envelope.frame.cid,\n ephPub: ZERO_EPH_PUB_BASE64,\n ok: false,\n refId: envelope.id,\n reason: `Channel handshake failed: ${code} - Unroutable to ${envelope.to}`,\n alg: envelope.frame.alg,\n };\n }\n return {\n type: 'DeliveryAck',\n ok: false,\n code,\n refId: envelope.id,\n reason: `Unroutable to ${String(envelope.to ?? envelope.replyTo ?? '')}`,\n };\n}\nfunction stripSelfPrefix(path, selfSegments) {\n const segments = path.replace(/^\\/+/, '').split('/').filter(Boolean);\n if (segments.slice(0, selfSegments.length).join('/') === selfSegments.join('/')) {\n return segments.slice(selfSegments.length);\n }\n return segments;\n}\nfunction toReadOnlyMap(source) {\n const map = new Map();\n if (source instanceof Map) {\n for (const [key, value] of source.entries()) {\n map.set(normalizeAddressKey(key), value);\n }\n return map;\n }\n for (const [key, value] of Object.entries(source)) {\n map.set(key, value);\n }\n return map;\n}\nfunction toPoolMap(source) {\n const map = new Map();\n if (source instanceof Map) {\n for (const [key, value] of source.entries()) {\n map.set(key, new Set(value));\n }\n return map;\n }\n for (const [key, value] of Object.entries(source)) {\n const [name, pattern] = key.split('::');\n map.set([name, pattern], new Set(value));\n }\n return map;\n}\nfunction isDeliveryAck(frame) {\n return frame?.type === 'DeliveryAck';\n}\nfunction isDataFrame(frame) {\n return frame?.type === 'Data';\n}\nfunction normalizeRouterStateOptions(options) {\n if ('nodeId' in options) {\n return options;\n }\n return {\n nodeId: options.node_id,\n local: options.local,\n downstreamAddressRoutes: options.downstream_address_routes,\n peerAddressRoutes: options.peer_address_routes,\n childSegments: options.child_segments,\n peerSegments: options.peer_segments,\n hasParent: options.has_parent,\n physicalSegments: options.physical_segments,\n pools: options.pools,\n capabilities: options.capabilities,\n resolveAddressByCapability: options.resolve_address_by_capability,\n envelopeFactory: options.envelope_factory,\n };\n}\nfunction isSecureOpenFrame(frame) {\n return frame?.type === 'SecureOpen';\n}\nfunction normalizeAddressKey(address) {\n return typeof address === 'string' ? address : address.toString();\n}\n//# sourceMappingURL=router.js.map","import { Drop } from './router.js';\n/**\n * Composite routing policy that evaluates child policies in order.\n * Returns the first non-drop action produced by the configured policies.\n */\nexport class CompositeRoutingPolicy {\n constructor(policies) {\n this.policies = Array.from(policies);\n }\n async decide(envelope, state, context = null) {\n for (const policy of this.policies) {\n const action = await policy.decide(envelope, state, context);\n if (!(action instanceof Drop)) {\n return action;\n }\n }\n return new Drop();\n }\n}\n//# sourceMappingURL=composite-routing-policy.js.map","import { sha256 } from '@noble/hashes/sha2.js';\nimport { bytesToHex, utf8ToBytes } from '@noble/hashes/utils.js';\nconst defaultHash = (value) => {\n const digest = sha256(utf8ToBytes(value));\n return BigInt(`0x${bytesToHex(digest)}`);\n};\n/**\n * Highest Random Weight (HRW) load balancing strategy.\n *\n * This strategy deterministically selects the segment that maximizes the hash of\n * the segment identifier combined with a salt. The salt defaults to the envelope id,\n * or a sticky attribute if configured, reproducing the Python implementation semantics.\n */\nfunction normalizeOptions(options = {}) {\n if (!options || typeof options !== 'object') {\n return {};\n }\n const candidate = options;\n const normalized = {\n ...options,\n };\n const hashFuncCandidate = candidate['hash_func'];\n if (typeof hashFuncCandidate === 'function') {\n normalized.hashFunc = hashFuncCandidate;\n }\n const stickyAliasKeys = [\n 'stickyAttribute',\n 'sticky_attribute',\n 'stickyAttr',\n 'sticky_attr',\n ];\n let stickyCandidate = undefined;\n let stickyFound = false;\n for (const key of stickyAliasKeys) {\n if (Object.prototype.hasOwnProperty.call(candidate, key)) {\n stickyCandidate = candidate[key];\n stickyFound = true;\n if (stickyCandidate !== undefined) {\n break;\n }\n }\n }\n if (stickyFound) {\n if (stickyCandidate === null || stickyCandidate === undefined) {\n normalized.stickyAttribute = null;\n }\n else if (typeof stickyCandidate === 'string') {\n normalized.stickyAttribute = stickyCandidate;\n }\n else {\n throw new Error('stickyAttribute must be a string when provided');\n }\n }\n return normalized;\n}\nexport class HRWLoadBalancingStrategy {\n constructor(options = {}) {\n const normalized = normalizeOptions(options);\n this.hash = normalized.hashFunc ?? defaultHash;\n this.stickyAttribute = normalized.stickyAttribute ?? null;\n }\n choose(_poolKey, segments, envelope) {\n if (!segments.length) {\n return null;\n }\n const salt = this.resolveSalt(envelope);\n let bestSegment = null;\n let bestWeight = null;\n for (const segment of segments) {\n const weight = this.hash(`${segment}:${salt}`);\n if (bestSegment === null || bestWeight === null || weight > bestWeight) {\n bestSegment = segment;\n bestWeight = weight;\n }\n }\n return bestSegment;\n }\n resolveSalt(envelope) {\n if (this.stickyAttribute) {\n const candidate = envelope[this.stickyAttribute];\n if (typeof candidate === 'string' && candidate.length > 0) {\n return candidate;\n }\n }\n if (typeof envelope.id === 'string' && envelope.id.length > 0) {\n return envelope.id;\n }\n return '';\n }\n}\n//# sourceMappingURL=hrw-load-balancing-strategy.js.map","import { getLogger, summarizeEnvelope } from '../util/logging.js';\nimport { HRWLoadBalancingStrategy } from './load-balancing/hrw-load-balancing-strategy.js';\nimport { DeliverLocal, Drop, ForwardChild, ForwardUp, } from './router.js';\nconst logger = getLogger('naylence.fame.sentinel.capability_aware_routing_policy');\nfunction normalizeOptions(options) {\n if (!options || typeof options !== 'object') {\n return {};\n }\n const candidate = options;\n const resolved = {\n ...options,\n };\n if ('load_balancing_strategy' in candidate) {\n const strategy = candidate.load_balancing_strategy;\n if (strategy && typeof strategy === 'object') {\n resolved.loadBalancingStrategy = strategy;\n }\n }\n if ('resolve_address_by_capability' in candidate) {\n const resolver = candidate.resolve_address_by_capability;\n if (typeof resolver === 'function') {\n resolved.resolveAddressByCapability =\n resolver;\n }\n }\n return resolved;\n}\nexport class CapabilityAwareRoutingPolicy {\n constructor(options = {}) {\n const normalized = normalizeOptions(options);\n this.loadBalancingStrategy =\n normalized.loadBalancingStrategy ?? new HRWLoadBalancingStrategy();\n this.resolveAddressOverride = normalized.resolveAddressByCapability ?? null;\n }\n async decide(envelope, state, _context) {\n if (envelope.to) {\n return new Drop();\n }\n if (!this.isDataEnvelope(envelope)) {\n return new Drop();\n }\n const capabilities = envelope.capabilities ?? [];\n if (capabilities.length === 0) {\n return new Drop();\n }\n const resolved = await this.tryResolveLocalAddress(capabilities, state);\n if (resolved) {\n return new DeliverLocal(resolved);\n }\n const providerSegments = this.getProviderSegments(capabilities, state);\n if (providerSegments.length > 0) {\n const chosenSegment = this.loadBalancingStrategy.choose(capabilities, providerSegments, envelope);\n if (chosenSegment) {\n return new ForwardChild(chosenSegment);\n }\n logger.warning('capability_policy_lb_failed', {\n segments: providerSegments,\n capabilities,\n ...summarizeEnvelope(envelope),\n });\n }\n if (state.hasParent) {\n return new ForwardUp();\n }\n return new Drop();\n }\n isDataEnvelope(envelope) {\n return envelope.frame?.type === 'Data';\n }\n async tryResolveLocalAddress(capabilities, state) {\n const resolver = state.resolveAddressByCapability ?? this.resolveAddressOverride;\n if (!resolver) {\n return null;\n }\n try {\n const address = await resolver(capabilities);\n if (!address) {\n return null;\n }\n if (this.hasLocalAddress(state, address)) {\n return address;\n }\n }\n catch (error) {\n logger.warning('capability_policy_resolve_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n return null;\n }\n hasLocalAddress(state, candidate) {\n return state.local.has(candidate.toString());\n }\n getProviderSegments(capabilities, state) {\n let intersectingSegments = null;\n for (const capability of capabilities) {\n const routes = state.capabilities[capability];\n if (!routes) {\n intersectingSegments = new Set();\n break;\n }\n const segmentsForCap = new Set(Object.values(routes));\n if (intersectingSegments) {\n const nextSegments = new Set();\n for (const segment of intersectingSegments) {\n if (segmentsForCap.has(segment)) {\n nextSegments.add(segment);\n }\n }\n intersectingSegments = nextSegments;\n }\n else {\n intersectingSegments = segmentsForCap;\n }\n if (intersectingSegments.size === 0) {\n break;\n }\n }\n return intersectingSegments ? [...intersectingSegments] : [];\n }\n}\n//# sourceMappingURL=capability-aware-routing-policy.js.map","import { DeliveryOriginType, FameAddress, parseAddress, parseAddressComponents, } from '@naylence/core';\nimport { isPoolLogical, matchesPoolLogical } from '../util/logicals.js';\nimport { normalizePath } from '../util/util.js';\nimport { HRWLoadBalancingStrategy } from './load-balancing/hrw-load-balancing-strategy.js';\nimport { DeliverLocal, Drop, ForwardChild, ForwardPeer, ForwardUp, } from './router.js';\nconst CONTROL_DROP_FRAMES = new Set(['NodeHello', 'NodeWelcome', 'NodeReject']);\nconst CONTROL_UP_FRAMES = new Set([\n 'AddressBind',\n 'AddressUnbind',\n 'NodeHeartbeat',\n]);\nconst ROUTABLE_FRAMES = new Set([\n 'Data',\n 'DeliveryAck',\n 'SecureOpen',\n 'SecureAccept',\n 'SecureClose',\n 'KeyRequest',\n]);\nexport class HybridPathRoutingPolicy {\n constructor(options = {}) {\n this.loadBalancingStrategy =\n options.loadBalancingStrategy ?? new HRWLoadBalancingStrategy();\n }\n async decide(envelope, state, context = null) {\n const frame = envelope.frame;\n if (!frame?.type) {\n return new Drop();\n }\n const frameType = frame.type;\n if (CONTROL_DROP_FRAMES.has(frameType)) {\n return new Drop();\n }\n if (CONTROL_UP_FRAMES.has(frameType)) {\n if (state.hasParent && !this.isFromUpstream(context)) {\n return new ForwardUp();\n }\n return new Drop();\n }\n let destination = null;\n if (frameType === 'KeyRequest') {\n const keyRequest = frame;\n destination = keyRequest.address ?? null;\n if (!destination) {\n return new Drop();\n }\n }\n else {\n if (!ROUTABLE_FRAMES.has(frameType) || !envelope.to) {\n return new Drop();\n }\n destination = envelope.to;\n }\n const destinationKey = normalizeAddressKey(destination);\n const [name, location] = parseAddress(destinationKey);\n const [, host, parsedPath] = parseAddressComponents(destinationKey);\n let path;\n if (parsedPath === null) {\n path = null;\n }\n else if (host !== null) {\n path = parsedPath;\n }\n else {\n path = location;\n }\n if (state.local.has(destinationKey)) {\n return new DeliverLocal(toFameAddress(destination));\n }\n const childSegment = state.downstreamAddressRoutes.get(destinationKey);\n if (childSegment) {\n if (this.originRouteMatches(context, childSegment)) {\n return new Drop();\n }\n return new ForwardChild(childSegment);\n }\n const peerSegment = state.peerAddressRoutes.get(destinationKey);\n if (peerSegment) {\n return new ForwardPeer(peerSegment);\n }\n if (host) {\n const poolChosen = this.findHostPoolRoute(name, host, state, envelope);\n if (poolChosen) {\n if (this.originRouteMatches(context, poolChosen)) {\n return new Drop();\n }\n return new ForwardChild(poolChosen);\n }\n }\n if (path !== null) {\n const logicalPath = computeLogical(path, state.physicalSegments);\n const normalizedLogical = normalizePath(logicalPath);\n const poolMembers = findPoolMembers(state, name, normalizedLogical);\n if (poolMembers) {\n const chosen = this.loadBalancingStrategy.choose([name, logicalPath], Array.from(poolMembers), envelope);\n if (chosen) {\n if (this.originRouteMatches(context, chosen)) {\n return new Drop();\n }\n return new ForwardChild(chosen);\n }\n }\n }\n if (path !== null) {\n const destSegments = splitPath(path);\n if (destSegments.length > 0) {\n const first = destSegments[0];\n if (state.peerSegments.has(first)) {\n return new ForwardPeer(first);\n }\n if (state.physicalSegments.length > 0 &&\n startsWithSegments(destSegments, state.physicalSegments)) {\n const remainder = destSegments.slice(state.physicalSegments.length);\n if (remainder.length === 0) {\n if (state.local.has(destinationKey)) {\n return new DeliverLocal(toFameAddress(destination));\n }\n return new Drop();\n }\n const nextSegment = remainder[0];\n if (state.childSegments.has(nextSegment)) {\n if (this.originRouteMatches(context, nextSegment)) {\n return new Drop();\n }\n return new ForwardChild(nextSegment);\n }\n }\n else if (state.physicalSegments.length === 0) {\n if (state.childSegments.has(first)) {\n if (this.originRouteMatches(context, first)) {\n return new Drop();\n }\n return new ForwardChild(first);\n }\n }\n }\n }\n if (state.hasParent && !this.isFromUpstream(context)) {\n return new ForwardUp();\n }\n return new Drop();\n }\n originRouteMatches(context, childSegment) {\n return (context?.originType === DeliveryOriginType.DOWNSTREAM &&\n context.fromSystemId === childSegment);\n }\n isFromUpstream(context) {\n return context?.originType === DeliveryOriginType.UPSTREAM;\n }\n findHostPoolRoute(name, host, state, envelope) {\n for (const [[poolName, poolPattern], poolMembers] of state.pools) {\n if (poolName !== name) {\n continue;\n }\n if (!isPoolLogical(poolPattern) ||\n !matchesPoolLogical(host, poolPattern)) {\n continue;\n }\n const chosen = this.loadBalancingStrategy.choose([poolName, poolPattern], Array.from(poolMembers), envelope);\n if (chosen) {\n return chosen;\n }\n }\n return null;\n }\n}\nfunction computeLogical(path, physicalSegments) {\n const segments = splitPath(path);\n if (physicalSegments.length > 0 &&\n startsWithSegments(segments, physicalSegments)) {\n const remainder = segments.slice(physicalSegments.length);\n return '/' + remainder.join('/');\n }\n return '/' + segments.join('/');\n}\nfunction startsWithSegments(pathSegments, prefix) {\n if (prefix.length > pathSegments.length) {\n return false;\n }\n for (let i = 0; i < prefix.length; i++) {\n if (pathSegments[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n}\nfunction splitPath(path) {\n return path.split('/').filter((segment) => segment.length > 0);\n}\nfunction findPoolMembers(state, name, logical) {\n for (const [[poolName, poolPattern], members] of state.pools) {\n if (poolName === name && poolPattern === logical) {\n return members;\n }\n }\n return null;\n}\nfunction normalizeAddressKey(address) {\n return typeof address === 'string' ? address : address.toString();\n}\nfunction toFameAddress(address) {\n return address instanceof FameAddress ? address : new FameAddress(address);\n}\n//# sourceMappingURL=hybrid-path-routing-policy.js.map","import { DeliveryOriginType, FameResponseType, } from '@naylence/core';\nimport { KeyValidationError, } from '../security/keys/attachment-key-validator.js';\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { delay } from '../util/task-utils.js';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.sentinel.node_attach_frame_handler');\nconst DOWNSTREAM_ORIGINS = new Set([\n DeliveryOriginType.DOWNSTREAM,\n DeliveryOriginType.PEER,\n]);\nfunction buildAssignedPath(basePath, systemId) {\n if (!basePath || basePath === '/') {\n return `/${systemId}`;\n }\n return `${basePath.replace(/\\/$/, '')}/${systemId}`;\n}\nfunction resolveOriginType(raw) {\n if (raw == null) {\n return null;\n }\n const values = Object.values(DeliveryOriginType);\n if (values.includes(raw)) {\n return raw;\n }\n if (typeof raw === 'string') {\n const lower = raw.toLowerCase();\n const directMatch = values.find((entry) => entry.toLowerCase() === lower);\n if (directMatch) {\n return directMatch;\n }\n const enumMatch = Object.entries(DeliveryOriginType).find(([key]) => key.toLowerCase() === lower);\n if (enumMatch) {\n return enumMatch[1];\n }\n }\n return null;\n}\nfunction normalizeStickinessAliases(stickiness) {\n if (!stickiness) {\n return stickiness ?? null;\n }\n const record = stickiness;\n const clone = { ...record };\n if (record.supportedModes === undefined && record['supported_modes']) {\n clone.supportedModes = record['supported_modes'];\n }\n if (record['supported_modes'] === undefined && record.supportedModes) {\n clone['supported_modes'] = record.supportedModes;\n }\n if (record.preferredMode === undefined && record['preferred_mode']) {\n clone.preferredMode = record['preferred_mode'];\n }\n if (record['preferred_mode'] === undefined && record.preferredMode) {\n clone['preferred_mode'] = record.preferredMode;\n }\n if (record.maxAge === undefined && record['max_age']) {\n clone.maxAge = record['max_age'];\n }\n if (record['max_age'] === undefined && record.maxAge) {\n clone['max_age'] = record.maxAge;\n }\n return clone;\n}\nfunction mirrorAckFrameAliases(frame) {\n const mutable = frame;\n mutable.ref_id = frame.refId;\n mutable.target_system_id = frame.targetSystemId;\n mutable.target_physical_path = frame.targetPhysicalPath;\n if (frame.routingEpoch !== undefined) {\n mutable.routing_epoch = frame.routingEpoch;\n }\n if (frame.assignedPath !== undefined) {\n mutable.assigned_path = frame.assignedPath;\n }\n if (frame.expiresAt !== undefined) {\n mutable.expires_at = frame.expiresAt;\n }\n if (frame.reason !== undefined) {\n mutable.reason = frame.reason;\n }\n if (frame.stickiness !== undefined) {\n const normalized = normalizeStickinessAliases(frame.stickiness);\n if (normalized) {\n frame.stickiness = normalized;\n mutable.stickiness = normalized;\n }\n }\n}\nexport class NodeAttachFrameHandler extends TaskSpawner {\n constructor(options) {\n super();\n this.routingNode = options.routingNode;\n this.routeManager = options.routeManager;\n this.attachmentKeyValidator = options.attachmentKeyValidator ?? null;\n this.stickinessManager = options.stickinessManager ?? null;\n this.maxTtlSec = options.maxTtlSec ?? null;\n }\n async acceptNodeAttach(envelope, context) {\n logger.debug('handling_node_attach_request');\n const normalizedContext = this.normalizeContext(context);\n const frame = this.normalizeNodeAttachFrame(envelope.frame);\n if (frame.type !== 'NodeAttach') {\n throw new Error(`Invalid envelope frame. Expected: NodeAttachFrame, actual: ${frame?.type ?? 'unknown'}`);\n }\n if (!DOWNSTREAM_ORIGINS.has(frame.originType)) {\n throw new Error(`Invalid attach frame origin type. Expected: DOWNSTREAM or PEER, actual: ${frame.originType}`);\n }\n const attachedSystemId = frame.systemId;\n const connectorConfig = this.takePendingRouteMetadata(attachedSystemId);\n if (!connectorConfig) {\n throw new Error('Missing pending config metadata');\n }\n const pendingRoute = this.takePendingRoute(attachedSystemId);\n if (!pendingRoute) {\n throw new Error(`No pending connector for system_id: ${attachedSystemId}`);\n }\n const { connector, attached, buffer } = pendingRoute;\n pendingRoute.cancelAttachTimeout?.();\n if (connector !== normalizedContext.fromConnector) {\n throw new Error('Connector in context does not match pending connector');\n }\n const validationResult = await this.validateAttachmentKeys(frame, envelope, connector, normalizedContext, attachedSystemId);\n if (validationResult === 'rejected') {\n return;\n }\n let attachExpiresAt = this.computeAttachExpiry(validationResult?.earliestKeyExpiry ?? null);\n attached.set();\n const deliveryContext = {\n fromConnector: connector,\n fromSystemId: attachedSystemId,\n originType: frame.originType,\n expectedResponseType: FameResponseType.NONE,\n security: normalizedContext.security,\n };\n for (const pendingEnvelope of buffer) {\n await this.routingNode.deliver(pendingEnvelope, deliveryContext);\n }\n buffer.length = 0;\n let assignedPath;\n let oldAssignedPath = null;\n let isRebind = false;\n if (frame.originType === DeliveryOriginType.DOWNSTREAM) {\n const hasExistingRoute = this.routeManager.downstreamRoutes.has(attachedSystemId);\n logger.debug('checking_for_existing_route', {\n system_id: attachedSystemId,\n has_existing: hasExistingRoute,\n existing_routes: Array.from(this.routeManager.downstreamRoutes.keys()),\n });\n if (hasExistingRoute) {\n isRebind = true;\n logger.warning('rebinding_existing_downstream_route', {\n system_id: attachedSystemId,\n });\n oldAssignedPath = buildAssignedPath(this.routingNode.physicalPath, attachedSystemId);\n // Before unregistering the route, collect addresses that will become orphaned\n // so we can clean up their associated secure channels\n const orphanedAddresses = [];\n for (const [address, info,] of this.routeManager._downstream_addresses_routes.entries()) {\n if (info.segment === attachedSystemId) {\n orphanedAddresses.push(address);\n }\n }\n await this.routeManager\n .unregisterDownstreamRoute(attachedSystemId, {\n reason: 'rebind_downstream_route',\n delayMs: 0, // Stop old connector immediately during rebind to prevent message loss\n meta: { systemId: attachedSystemId },\n })\n .catch((error) => {\n logger.warning('failed_to_unregister_downstream_route_before_rebind', {\n system_id: attachedSystemId,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n // Clean up secure channels for orphaned addresses to prevent stale channel reuse\n if (orphanedAddresses.length > 0) {\n try {\n // Access encryption manager - CompositeEncryptionManager exposes channel cleanup methods\n const securityMgr = this.routingNode.securityManager;\n const encryptionMgr = securityMgr?.encryption;\n // CompositeEncryptionManager provides clearChannelCacheForDestination and removeChannelsForDestination\n if (typeof encryptionMgr?.clearChannelCacheForDestination ===\n 'function') {\n for (const address of orphanedAddresses) {\n encryptionMgr.clearChannelCacheForDestination(address);\n }\n logger.debug('cleared_channel_cache_for_rebind', {\n system_id: attachedSystemId,\n addresses: orphanedAddresses,\n });\n }\n if (typeof encryptionMgr?.removeChannelsForDestination === 'function') {\n let totalRemoved = 0;\n for (const address of orphanedAddresses) {\n totalRemoved +=\n encryptionMgr.removeChannelsForDestination(address);\n }\n if (totalRemoved > 0) {\n logger.debug('removed_channel_states_for_rebind', {\n system_id: attachedSystemId,\n channels_removed: totalRemoved,\n });\n }\n }\n }\n catch (error) {\n logger.warning('failed_to_cleanup_channels_for_rebind', {\n system_id: attachedSystemId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }\n assignedPath =\n frame.assignedPath ??\n buildAssignedPath(this.routingNode.physicalPath, attachedSystemId);\n }\n else if (frame.originType === DeliveryOriginType.PEER) {\n const hasExistingRoute = this.routeManager._peer_routes.has(attachedSystemId);\n if (hasExistingRoute) {\n isRebind = true;\n oldAssignedPath = frame.assignedPath ?? `/${attachedSystemId}`;\n await this.routeManager\n .unregisterPeerRoute(attachedSystemId, {\n reason: 'rebind_peer_route',\n delayMs: 0, // Stop old connector immediately during rebind to prevent message loss\n meta: { systemId: attachedSystemId },\n })\n .catch((error) => {\n logger.warning('failed_to_unregister_peer_route_before_rebind', {\n system_id: attachedSystemId,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n }\n assignedPath = frame.assignedPath ?? `/${attachedSystemId}`;\n }\n else {\n throw new Error('Unsupported origin type for node attach');\n }\n await this.routingNode.dispatchEvent('onChildAttach', {\n childSystemId: attachedSystemId,\n childKeys: frame.keys,\n nodeLike: this.routingNode,\n originType: frame.originType,\n assignedPath,\n oldAssignedPath: oldAssignedPath ?? undefined,\n isRebind,\n });\n if (frame.originType === DeliveryOriginType.DOWNSTREAM) {\n await this.routeManager.registerDownstreamRoute(attachedSystemId, connector);\n }\n else {\n await this.routeManager.registerPeerRoute(attachedSystemId, connector);\n }\n const negotiatedStickiness = this.negotiateStickiness(frame.stickiness);\n const ackEnvelope = this.createNodeAttachAckEnvelope({\n ok: true,\n originalEnvId: envelope.id ?? 'unknown',\n assignedPath,\n expiresAt: attachExpiresAt,\n ...(envelope.corrId ? { correlationId: envelope.corrId } : {}),\n ...(envelope.traceId ? { traceId: envelope.traceId } : {}),\n ...(negotiatedStickiness !== null && negotiatedStickiness !== undefined\n ? { stickiness: negotiatedStickiness }\n : {}),\n });\n logger.debug('sending_node_attach_ack', {\n env_id: ackEnvelope.id ?? 'unknown',\n });\n await this.sendAndNotify(connector, ackEnvelope, attachedSystemId, normalizedContext);\n if (connectorConfig.durable) {\n const routeStore = frame.originType === DeliveryOriginType.DOWNSTREAM\n ? this.routeManager._downstream_route_store\n : this.routeManager._peer_route_store;\n const routeEntry = {\n systemId: attachedSystemId,\n instanceId: frame.instanceId,\n assignedPath,\n connectorConfig,\n durable: true,\n callbackGrants: frame.callbackGrants ?? null,\n attachExpiresAt: attachExpiresAt ?? null,\n };\n await routeStore.set(attachedSystemId, routeEntry);\n }\n }\n takePendingRouteMetadata(systemId) {\n const map = this.routeManager._pending_route_metadata;\n const value = map.get(systemId) ?? null;\n if (value) {\n map.delete(systemId);\n }\n return value;\n }\n takePendingRoute(systemId) {\n const map = this.routeManager._pending_routes;\n if (!map) {\n return null;\n }\n const entry = map.get(systemId) ?? null;\n if (entry) {\n map.delete(systemId);\n }\n return entry;\n }\n negotiateStickiness(stickiness) {\n if (!this.stickinessManager) {\n return null;\n }\n try {\n return this.stickinessManager.negotiate(stickiness);\n }\n catch (error) {\n logger.debug('stickiness_negotiate_skipped', {\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n }\n computeAttachExpiry(earliestKeyExpiry) {\n let attachExpiresAt = null;\n if (typeof this.maxTtlSec === 'number' && Number.isFinite(this.maxTtlSec)) {\n attachExpiresAt = new Date(Date.now() + this.maxTtlSec * 1000);\n }\n if (!earliestKeyExpiry) {\n return attachExpiresAt;\n }\n if (!attachExpiresAt || earliestKeyExpiry < attachExpiresAt) {\n if (attachExpiresAt) {\n logger.warning('attachment_ttl_limited_by_key_expiry', {\n limited_attach_expires_at: earliestKeyExpiry.toISOString(),\n original_attach_expires_at: attachExpiresAt.toISOString(),\n });\n }\n else {\n logger.debug('attachment_ttl_set_by_key_expiry', {\n attach_expires_at: earliestKeyExpiry.toISOString(),\n reason: 'no_max_ttl_configured',\n });\n }\n return earliestKeyExpiry;\n }\n return attachExpiresAt;\n }\n async validateAttachmentKeys(frame, envelope, connector, context, systemId) {\n if (!this.attachmentKeyValidator) {\n logger.debug('child_key_validation_skipped', {\n child_id: systemId,\n reason: 'no_validator',\n });\n return { earliestKeyExpiry: null };\n }\n try {\n const keyInfos = await this.attachmentKeyValidator.validateKeys(frame.keys ?? []);\n let earliestKeyExpiry = null;\n for (const info of keyInfos) {\n if (info.expiresAt &&\n (!earliestKeyExpiry || info.expiresAt < earliestKeyExpiry)) {\n earliestKeyExpiry = info.expiresAt;\n }\n }\n if (keyInfos.length > 0) {\n logger.debug('node_attach_key_validation_passed', {\n system_id: systemId,\n instance_id: frame.instanceId,\n correlation_id: envelope.corrId,\n validated_keys: keyInfos.length,\n final_attach_expires_at: earliestKeyExpiry?.toISOString() ?? null,\n });\n }\n return { earliestKeyExpiry };\n }\n catch (error) {\n if (error instanceof KeyValidationError) {\n const rejectionAck = this.createNodeAttachAckEnvelope({\n ok: false,\n originalEnvId: envelope.id ?? 'unknown',\n ...(envelope.corrId ? { correlationId: envelope.corrId } : {}),\n ...(envelope.traceId ? { traceId: envelope.traceId } : {}),\n reason: `Certificate validation failed: ${error.message}`,\n });\n await this.sendAndNotify(connector, rejectionAck, systemId, context).catch((sendError) => {\n logger.error('failed_sending_negative_attach_ack', {\n error: sendError instanceof Error\n ? sendError.message\n : String(sendError),\n });\n });\n logger.error('node_attach_key_validation_failed', {\n system_id: systemId,\n instance_id: frame.instanceId,\n correlation_id: envelope.corrId,\n error_code: error.code,\n error_message: error.message,\n kid: error.kid,\n action: 'rejecting_attachment',\n });\n this.spawn(() => this.closeConnectionAfterDelay(connector, 100), {\n name: `close-invalid-key-connection-${systemId}`,\n });\n return 'rejected';\n }\n throw error;\n }\n }\n createNodeAttachAckEnvelope(options) {\n const frame = {\n type: 'NodeAttachAck',\n ok: options.ok,\n refId: options.originalEnvId,\n targetSystemId: this.routingNode.id,\n targetPhysicalPath: this.routingNode.physicalPath,\n routingEpoch: this.routingNode.routingEpoch ?? undefined,\n };\n if (options.reason) {\n frame.reason = options.reason;\n }\n if (options.expiresAt) {\n frame.expiresAt = options.expiresAt.toISOString();\n }\n if (options.assignedPath) {\n frame.assignedPath = options.assignedPath;\n }\n if (options.stickiness !== undefined && options.stickiness !== null) {\n frame.stickiness = options.stickiness;\n }\n const shareableKeys = this.routingNode.securityManager?.getShareableKeys?.();\n if (shareableKeys !== undefined && shareableKeys !== null) {\n if (Array.isArray(shareableKeys)) {\n frame.keys = shareableKeys;\n }\n else {\n frame.keys = [shareableKeys];\n }\n }\n const envelopeOptions = {\n frame,\n };\n if (options.correlationId) {\n envelopeOptions.corrId = options.correlationId;\n }\n if (options.traceId) {\n envelopeOptions.traceId = options.traceId;\n }\n const envelope = this.routingNode.envelopeFactory.createEnvelope(envelopeOptions);\n if (envelope.frame && envelope.frame.type === 'NodeAttachAck') {\n mirrorAckFrameAliases(envelope.frame);\n }\n return envelope;\n }\n async closeConnectionAfterDelay(connector, delaySeconds) {\n try {\n await delay(delaySeconds * 1000);\n await connector.close(1008, 'attach-unauthorized');\n logger.debug('closed_unauthorized_connection');\n }\n catch (error) {\n logger.error('failed_to_close_unauthorized_connection', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n async sendAndNotify(connector, envelope, forwardRoute, context) {\n let processed = null;\n try {\n processed = await this.routingNode.dispatchEnvelopeEvent('onForwardToRoute', this.routingNode, forwardRoute, envelope, context);\n if (!processed) {\n throw new Error('Envelope was blocked by onForwardToRoute event');\n }\n await connector.send(processed);\n await this.routingNode\n .dispatchEnvelopeEvent('onForwardToRouteComplete', this.routingNode, forwardRoute, processed, undefined, undefined, context)\n .catch(() => undefined);\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n await this.routingNode\n .dispatchEnvelopeEvent('onForwardToRouteComplete', this.routingNode, forwardRoute, processed ?? envelope, undefined, err, context)\n .catch(() => undefined);\n throw err;\n }\n }\n normalizeContext(context) {\n if (!context) {\n throw new Error('missing FameDeliveryContext');\n }\n const mutable = context;\n const originCandidate = mutable.originType ?? mutable.origin_type ?? null;\n const resolvedOrigin = resolveOriginType(originCandidate);\n if (resolvedOrigin) {\n mutable.originType = resolvedOrigin;\n mutable.origin_type = resolvedOrigin;\n }\n else if (originCandidate !== null && originCandidate !== undefined) {\n mutable.originType = originCandidate;\n mutable.origin_type = originCandidate;\n }\n const fromConnector = mutable.fromConnector ?? mutable.from_connector ?? undefined;\n if (fromConnector !== undefined) {\n mutable.fromConnector = fromConnector;\n mutable.from_connector = fromConnector;\n }\n const fromSystemId = mutable.fromSystemId ?? mutable.from_system_id ?? undefined;\n if (fromSystemId !== undefined) {\n mutable.fromSystemId = fromSystemId;\n mutable.from_system_id = fromSystemId;\n }\n const expectedResponse = mutable.expectedResponseType ??\n mutable.expected_response_type ??\n undefined;\n if (expectedResponse !== undefined) {\n mutable.expectedResponseType = expectedResponse;\n mutable.expected_response_type = expectedResponse;\n }\n return mutable;\n }\n normalizeNodeAttachFrame(rawFrame) {\n const frame = rawFrame;\n if (!frame) {\n throw new Error('Invalid envelope frame. Expected: NodeAttachFrame, actual: unknown');\n }\n const rawType = frame.type;\n if (typeof rawType === 'string' && rawType !== 'NodeAttach') {\n const lower = rawType.toLowerCase();\n if (lower === 'nodeattach' || lower === 'node_attach') {\n frame.type = 'NodeAttach';\n frame.type = 'NodeAttach';\n }\n }\n const originCandidate = frame.originType ?? frame.origin_type ?? null;\n const resolvedOrigin = resolveOriginType(originCandidate);\n if (resolvedOrigin) {\n frame.originType = resolvedOrigin;\n frame.origin_type = resolvedOrigin;\n }\n else if (originCandidate !== null && originCandidate !== undefined) {\n frame.originType = originCandidate;\n frame.origin_type = originCandidate;\n }\n const systemId = frame.systemId ?? frame.system_id;\n if (!systemId || typeof systemId !== 'string') {\n throw new Error('NodeAttach frame missing systemId');\n }\n frame.systemId = systemId;\n frame.system_id = systemId;\n const instanceId = frame.instanceId ?? frame.instance_id ?? null;\n if (instanceId !== null && instanceId !== undefined) {\n frame.instanceId = instanceId;\n frame.instance_id = instanceId;\n }\n const assignedPath = frame.assignedPath ?? frame.assigned_path ?? null;\n if (assignedPath !== null && assignedPath !== undefined) {\n frame.assignedPath = assignedPath;\n frame.assigned_path = assignedPath;\n }\n const callbackGrants = frame.callbackGrants ?? frame.callback_grants ?? null;\n if (callbackGrants !== null && callbackGrants !== undefined) {\n frame.callbackGrants = callbackGrants;\n frame.callback_grants = callbackGrants;\n }\n const rawStickiness = frame.stickiness;\n const stickiness = normalizeStickinessAliases(rawStickiness);\n if (rawStickiness !== undefined) {\n frame.stickiness = stickiness ?? undefined;\n frame.stickiness = stickiness ?? undefined;\n }\n return frame;\n }\n}\n//# sourceMappingURL=node-attach-frame-handler.js.map","import { DeliveryOriginType, FameResponseType, parseAddress, parseAddressComponents, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nimport { isPoolLogical } from '../util/logicals.js';\nimport { normalizePath } from '../util/util.js';\nconst logger = getLogger('naylence.fame.sentinel.address_bind_frame_handler');\nconst RESERVED_ADDRESS_NAMES = new Set(['__sys__', '__rpc__']);\nfunction pickManagerField(manager, keys) {\n const record = manager;\n for (const key of keys) {\n if (key in record) {\n const value = record[key];\n if (value !== undefined && value !== null) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction resolveDownstreamRoutes(manager) {\n return pickManagerField(manager, [\n 'downstreamRoutes',\n 'downstream_routes',\n '_downstream_routes',\n ]);\n}\nfunction resolvePeerRoutes(manager) {\n return pickManagerField(manager, [\n '_peer_routes',\n 'peerRoutes',\n '_peerRoutes',\n ]);\n}\nfunction resolveDownstreamAddressRoutes(manager) {\n return pickManagerField(manager, [\n '_downstream_addresses_routes',\n 'downstreamAddressesRoutes',\n 'downstream_addresses_routes',\n ]);\n}\nfunction resolvePeerAddressRoutes(manager) {\n return pickManagerField(manager, [\n '_peer_addresses_routes',\n 'peerAddressesRoutes',\n 'peer_addresses_routes',\n ]);\n}\nfunction resolveDownstreamRouteStore(manager) {\n return pickManagerField(manager, [\n '_downstream_route_store',\n 'downstreamRouteStore',\n 'downstream_route_store',\n ]);\n}\nfunction resolveDownstreamLegacyRoutes(manager) {\n return pickManagerField(manager, [\n '_downstream_addresses_legacy',\n 'downstreamAddressesLegacy',\n 'downstream_addresses_legacy',\n ]);\n}\nfunction getContextOriginType(context) {\n if (!context) {\n return null;\n }\n const typed = context;\n return typed.originType ?? typed.origin_type ?? null;\n}\nfunction getEncryptionKeyIdFromFrame(frame) {\n const typed = frame;\n const candidate = typed.encryptionKeyId ?? typed.encryption_key_id ?? null;\n if (typeof candidate === 'string' && candidate.length) {\n return candidate;\n }\n return null;\n}\nfunction hasRoute(container, key) {\n if (!container) {\n return false;\n }\n if (container instanceof Map) {\n return container.has(key);\n }\n if (typeof container === 'object') {\n return Object.prototype.hasOwnProperty.call(container, key);\n }\n return false;\n}\nfunction setAddressRoute(container, key, value) {\n if (!container) {\n return;\n }\n if (container instanceof Map) {\n container.set(key, value);\n }\n else if (typeof container === 'object') {\n container[key] = value;\n }\n}\nfunction getAddressRoute(container, key) {\n if (!container) {\n return null;\n }\n if (container instanceof Map) {\n return container.get(key) ?? null;\n }\n if (typeof container === 'object') {\n return container[key] ?? null;\n }\n return null;\n}\nfunction deleteAddressRoute(container, key) {\n if (!container) {\n return;\n }\n if (container instanceof Map) {\n container.delete(key);\n }\n else if (typeof container === 'object') {\n delete container[key];\n }\n}\nfunction deleteLegacyRoute(container, key) {\n if (!container) {\n return;\n }\n if (container instanceof Map) {\n container.delete(key);\n }\n else if (typeof container === 'object') {\n delete container[key];\n }\n}\nfunction setPeerRoute(container, key, value) {\n if (!container) {\n return;\n }\n if (container instanceof Map) {\n container.set(key, value);\n }\n else if (typeof container === 'object') {\n container[key] = value;\n }\n}\nasync function getDownstreamRouteEntry(store, key) {\n if (!store) {\n return null;\n }\n if (store instanceof Map) {\n return store.get(key) ?? null;\n }\n if (typeof store === 'object' &&\n 'get' in store &&\n typeof store.get === 'function') {\n return await store.get(key);\n }\n if (typeof store === 'object') {\n return store[key] ?? null;\n }\n return null;\n}\nfunction extractAssignedPath(entry) {\n if (!entry) {\n return null;\n }\n if (typeof entry.assignedPath === 'string') {\n return entry.assignedPath;\n }\n if (typeof entry.assigned_path === 'string') {\n return entry.assigned_path;\n }\n return null;\n}\nfunction createPoolKey(name, pattern) {\n return { name, pattern };\n}\nfunction findPoolEntryKey(map, key) {\n for (const existing of map.keys()) {\n if (existing.name === key.name && existing.pattern === key.pattern) {\n return existing;\n }\n }\n return undefined;\n}\nfunction isReservedAddressName(name) {\n if (!name) {\n return false;\n }\n return RESERVED_ADDRESS_NAMES.has(name.toLowerCase());\n}\nexport class AddressBindFrameHandler {\n constructor(options) {\n this.poolsMap = new Map();\n this.routingNode = options.routingNode;\n this.routeManager = options.routeManager;\n this.upstreamConnector = options.upstreamConnector;\n }\n get pools() {\n return this.poolsMap;\n }\n async acceptAddressBind(envelope, context) {\n const originType = getContextOriginType(context);\n if (!originType) {\n throw new Error('AddressBind handling requires delivery context with originType');\n }\n const frame = envelope.frame;\n if (!frame || frame.type !== 'AddressBind') {\n throw new Error(`Expected AddressBindFrame, got ${frame?.type ?? 'unknown'}`);\n }\n const sourceSystemId = this.getSourceSystemId(context);\n if (!sourceSystemId) {\n return;\n }\n const downstreamRoutes = resolveDownstreamRoutes(this.routeManager);\n if (originType === DeliveryOriginType.DOWNSTREAM &&\n !hasRoute(downstreamRoutes, sourceSystemId)) {\n throw new Error(`Cannot accept address bind from unknown downstream system ${sourceSystemId}`);\n }\n const peerRoutes = resolvePeerRoutes(this.routeManager);\n if (originType === DeliveryOriginType.PEER &&\n !hasRoute(peerRoutes, sourceSystemId)) {\n throw new Error(`Cannot accept address bind from unknown peer system ${sourceSystemId}`);\n }\n const addressStr = frame.address.toString();\n const [name, location] = parseAddress(addressStr);\n let host = null;\n let isHostBased = false;\n try {\n const [, parsedHost] = parseAddressComponents(addressStr);\n if (parsedHost) {\n host = parsedHost;\n isHostBased = true;\n }\n }\n catch {\n host = null;\n isHostBased = false;\n }\n const isReservedAddress = isReservedAddressName(name);\n let isPoolBind = false;\n let poolKey = null;\n if (isHostBased && host && isPoolLogical(host)) {\n isPoolBind = true;\n poolKey = createPoolKey(name, host);\n }\n else if (!isHostBased &&\n (location.endsWith('/*') || location.endsWith('/**'))) {\n const trimmed = location.endsWith('/*')\n ? location.slice(0, -2)\n : location.slice(0, -3);\n const root = normalizePath(trimmed);\n isPoolBind = true;\n poolKey = createPoolKey(name, root);\n }\n let ack;\n const upstreamConnector = this.upstreamConnector();\n const shouldForwardUpstream = Boolean(upstreamConnector) && !isReservedAddress;\n if (isPoolBind && poolKey) {\n const existingKey = findPoolEntryKey(this.poolsMap, poolKey) ?? poolKey;\n const segments = this.poolsMap.get(existingKey) ?? new Set();\n segments.add(sourceSystemId);\n if (!this.poolsMap.has(existingKey)) {\n this.poolsMap.set(existingKey, segments);\n }\n ack = {\n type: 'AddressBindAck',\n address: addressStr,\n ok: true,\n refId: envelope.id,\n };\n }\n else {\n let physicalPath = null;\n if (originType === DeliveryOriginType.DOWNSTREAM) {\n const routeEntry = await getDownstreamRouteEntry(resolveDownstreamRouteStore(this.routeManager), sourceSystemId);\n physicalPath = extractAssignedPath(routeEntry);\n }\n const routeInfo = {\n segment: sourceSystemId,\n };\n if (physicalPath) {\n routeInfo.physicalPath = physicalPath;\n }\n const encryptionKeyId = getEncryptionKeyIdFromFrame(frame);\n if (encryptionKeyId) {\n routeInfo.encryptionKeyId = encryptionKeyId;\n }\n if (originType === DeliveryOriginType.DOWNSTREAM) {\n setAddressRoute(resolveDownstreamAddressRoutes(this.routeManager), addressStr, routeInfo);\n }\n else if (originType === DeliveryOriginType.PEER) {\n setPeerRoute(resolvePeerAddressRoutes(this.routeManager), addressStr, sourceSystemId);\n }\n else {\n throw new Error('Unsupported origin type for address bind');\n }\n ack = {\n type: 'AddressBindAck',\n address: addressStr,\n ok: true,\n refId: envelope.id,\n };\n }\n if (originType === DeliveryOriginType.DOWNSTREAM && context) {\n const routingNodeId = typeof this.routingNode.id === 'string' && this.routingNode.id\n ? this.routingNode.id\n : 'sentinel';\n const ackContext = {\n originType: DeliveryOriginType.LOCAL,\n fromSystemId: routingNodeId,\n security: context.security,\n meta: { 'message-type': 'response' },\n expectedResponseType: FameResponseType.NONE,\n };\n const ackEnvelope = this.routingNode.envelopeFactory.createEnvelope({\n frame: ack,\n ...(envelope.corrId ? { corrId: envelope.corrId } : {}),\n });\n if (!this.routingNode.forwardToRoute) {\n throw new Error('Routing node does not support forwardToRoute');\n }\n await this.routingNode.forwardToRoute(sourceSystemId, ackEnvelope, ackContext);\n }\n if (shouldForwardUpstream) {\n await this.routingNode.forwardUpstream(envelope, context);\n }\n if (this.routingNode.forwardToPeers) {\n await this.routingNode.forwardToPeers(envelope, undefined, [sourceSystemId], context);\n }\n logger.debug('address_bound', {\n address: addressStr,\n segment: sourceSystemId,\n });\n }\n async acceptAddressUnbind(envelope, context) {\n const frame = envelope.frame;\n if (!frame || frame.type !== 'AddressUnbind') {\n throw new Error(`Expected AddressUnbindFrame, got ${frame?.type ?? 'unknown'}`);\n }\n const sourceSystemId = this.getSourceSystemId(context);\n if (!sourceSystemId) {\n return;\n }\n const addressStr = frame.address.toString();\n const [name, location] = parseAddress(addressStr);\n let host = null;\n let isHostBased = false;\n try {\n const [, parsedHost] = parseAddressComponents(addressStr);\n if (parsedHost) {\n host = parsedHost;\n isHostBased = true;\n }\n }\n catch {\n host = null;\n isHostBased = false;\n }\n let isPoolUnbind = false;\n let poolKey = null;\n if (isHostBased && host && isPoolLogical(host)) {\n isPoolUnbind = true;\n poolKey = createPoolKey(name, host);\n }\n else if (!isHostBased &&\n (location.endsWith('/*') || location.endsWith('/**'))) {\n const trimmed = location.endsWith('/*')\n ? location.slice(0, -2)\n : location.slice(0, -3);\n const root = normalizePath(trimmed);\n isPoolUnbind = true;\n poolKey = createPoolKey(name, root);\n }\n const upstreamConnector = this.upstreamConnector();\n const originType = getContextOriginType(context);\n const shouldForwardUpstream = Boolean(upstreamConnector) && !isReservedAddressName(name);\n if (isPoolUnbind && poolKey) {\n const existingKey = findPoolEntryKey(this.poolsMap, poolKey);\n if (existingKey) {\n const segments = this.poolsMap.get(existingKey);\n if (segments && segments.has(sourceSystemId)) {\n segments.delete(sourceSystemId);\n if (!segments.size) {\n this.poolsMap.delete(existingKey);\n }\n if (shouldForwardUpstream) {\n await this.routingNode.forwardUpstream(envelope, context);\n }\n }\n }\n }\n else {\n const routeInfo = getAddressRoute(resolveDownstreamAddressRoutes(this.routeManager), addressStr);\n if (routeInfo?.segment === sourceSystemId) {\n deleteAddressRoute(resolveDownstreamAddressRoutes(this.routeManager), addressStr);\n deleteLegacyRoute(resolveDownstreamLegacyRoutes(this.routeManager), addressStr);\n if (shouldForwardUpstream) {\n await this.routingNode.forwardUpstream(envelope, context);\n }\n }\n }\n if (context && originType === DeliveryOriginType.DOWNSTREAM) {\n const routingNodeId = typeof this.routingNode.id === 'string' && this.routingNode.id\n ? this.routingNode.id\n : 'sentinel';\n const ack = {\n type: 'AddressUnbindAck',\n address: addressStr,\n ok: true,\n refId: envelope.id,\n };\n const ackContext = {\n originType: DeliveryOriginType.LOCAL,\n fromSystemId: routingNodeId,\n security: context.security,\n meta: { 'message-type': 'response' },\n expectedResponseType: FameResponseType.NONE,\n };\n const ackEnvelope = this.routingNode.envelopeFactory.createEnvelope({\n frame: ack,\n ...(envelope.corrId ? { corrId: envelope.corrId } : {}),\n });\n if (!this.routingNode.forwardToRoute) {\n throw new Error('Routing node does not support forwardToRoute');\n }\n await this.routingNode.forwardToRoute(sourceSystemId, ackEnvelope, ackContext);\n }\n logger.debug('address_unbound', {\n address: addressStr,\n segment: sourceSystemId,\n });\n }\n getSourceSystemId(context) {\n if (!context) {\n return null;\n }\n const typed = context;\n const candidate = typed.fromSystemId ?? typed.from_system_id ?? null;\n if (typeof candidate === 'string' && candidate.length) {\n return candidate;\n }\n return null;\n }\n}\n//# sourceMappingURL=address-bind-frame-handler.js.map","import { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.sentinel.node_heartbeat_frame_handler');\nfunction normalizeOptions(options) {\n if (!options || typeof options !== 'object') {\n throw new Error('NodeHeartbeatFrameHandler requires a routingNode option');\n }\n const direct = options;\n if (Object.prototype.hasOwnProperty.call(direct, 'routingNode') &&\n direct.routingNode !== undefined &&\n direct.routingNode !== null) {\n if (typeof direct.routingNode !== 'object') {\n throw new Error('routingNode must be an object');\n }\n return { routingNode: direct.routingNode };\n }\n const candidate = options;\n if (Object.prototype.hasOwnProperty.call(candidate, 'routing_node')) {\n const routingNode = candidate['routing_node'];\n if (routingNode === undefined || routingNode === null) {\n throw new Error('routingNode must be provided');\n }\n if (typeof routingNode !== 'object') {\n throw new Error('routingNode must be an object');\n }\n return { routingNode: routingNode };\n }\n throw new Error('routingNode must be provided');\n}\nexport class NodeHeartbeatFrameHandler {\n constructor(options) {\n const normalized = normalizeOptions(options);\n this.routingNode = normalized.routingNode;\n }\n async acceptNodeHeartbeat(envelope, context) {\n const frame = envelope.frame;\n if (!frame || frame.type !== 'NodeHeartbeat') {\n throw new Error(`Invalid envelope frame. Expected: NodeHeartbeatFrame, actual: ${frame?.type ?? 'unknown'}`);\n }\n logger.trace('handling_heartbeat', {\n hb_system_id: frame.systemId ?? 'unknown',\n hb_env_id: envelope.id ?? 'unknown',\n hb_corr_id: envelope.corrId ?? 'unknown',\n });\n if (!context) {\n throw new Error('missing FameDeliveryContext');\n }\n const connector = context.fromConnector;\n if (!connector) {\n throw new Error('Connector in context does not match pending connector');\n }\n const ackFrame = {\n type: 'NodeHeartbeatAck',\n ok: true,\n ...(envelope.id ? { refId: envelope.id } : {}),\n ...(this.routingNode.routingEpoch\n ? { routingEpoch: this.routingNode.routingEpoch }\n : {}),\n };\n if (frame.address) {\n ackFrame.address = frame.address;\n }\n const ackEnvelope = this.routingNode.envelopeFactory.createEnvelope({\n frame: ackFrame,\n ...(envelope.corrId ? { corrId: envelope.corrId } : {}),\n ...(envelope.traceId ? { traceId: envelope.traceId } : {}),\n });\n logger.debug('sending_heartbeat_ack', {\n hb_ack_env_id: ackEnvelope.id ?? 'unknown',\n hb_ack_corr_id: ackEnvelope.corrId ?? 'unknown',\n });\n await this.sendAndNotify(connector, ackEnvelope, frame.systemId ?? 'unknown', context);\n }\n async sendAndNotify(connector, envelope, forwardRoute, context) {\n let processed = null;\n try {\n processed = await this.routingNode.dispatchEnvelopeEvent('onForwardToRoute', this.routingNode, forwardRoute, envelope, context);\n if (!processed) {\n throw new Error('Envelope was blocked by onForwardToRoute event');\n }\n await connector.send(processed);\n await this.routingNode\n .dispatchEnvelopeEvent('onForwardToRouteComplete', this.routingNode, forwardRoute, processed, undefined, undefined, context)\n .catch(() => undefined);\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n await this.routingNode\n .dispatchEnvelopeEvent('onForwardToRouteComplete', this.routingNode, forwardRoute, processed ?? envelope, undefined, err, context)\n .catch(() => undefined);\n throw err;\n }\n }\n}\n//# sourceMappingURL=node-heartbeat-frame-handler.js.map","import { DeliveryOriginType, FameResponseType, } from '@naylence/core';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.sentinel.capability_frame_handler');\nexport class CapabilityFrameHandler {\n constructor(options) {\n this.capabilityRoutes = new Map();\n this.routingNode = options.routingNode;\n this.routeManager = options.routeManager;\n this.getUpstreamConnector = options.upstreamConnector;\n }\n get capRoutes() {\n const result = {};\n for (const [capability, routes] of this.capabilityRoutes.entries()) {\n const capabilityRoutes = {};\n for (const [addressKey, entry] of routes.entries()) {\n capabilityRoutes[addressKey] = entry.segment;\n }\n result[capability] = capabilityRoutes;\n }\n return result;\n }\n async acceptCapabilityAdvertise(envelope, context) {\n const frame = envelope.frame;\n if (!frame || frame.type !== 'CapabilityAdvertise') {\n throw new Error('Expected CapabilityAdvertiseFrame');\n }\n const segment = this.getSourceSystemId(context);\n const downstreamRoutes = getDownstreamRoutes(this.routeManager);\n if (!segment || !hasRoute(downstreamRoutes, segment)) {\n logger.debug('capability_advertise_unknown_segment', { segment });\n return;\n }\n const addressKey = this.normalizeAddress(frame.address);\n let firstGlobal = false;\n for (const capability of frame.capabilities) {\n const routeEntries = this.ensureCapabilityRoutes(capability);\n const previouslyEmpty = routeEntries.size === 0;\n routeEntries.set(addressKey, { address: frame.address, segment });\n if (previouslyEmpty) {\n firstGlobal = true;\n }\n }\n const ackContext = this.buildAckContext(context);\n const ackFrame = {\n type: 'CapabilityAdvertiseAck',\n capabilities: [...frame.capabilities],\n address: frame.address.toString(),\n ok: true,\n refId: envelope.id ?? undefined,\n };\n await this.forwardAckToSegment(segment, ackFrame, envelope, ackContext);\n if (firstGlobal && this.hasUpstream()) {\n await this.routingNode.forwardUpstream(envelope, ackContext);\n }\n }\n async acceptCapabilityWithdraw(envelope, context) {\n const frame = envelope.frame;\n if (!frame || frame.type !== 'CapabilityWithdraw') {\n throw new Error('Expected CapabilityWithdrawFrame');\n }\n const segment = this.getSourceSystemId(context);\n if (!segment) {\n logger.debug('capability_withdraw_missing_segment');\n return;\n }\n const addressKey = this.normalizeAddress(frame.address);\n let vanishedGlobal = false;\n for (const capability of frame.capabilities) {\n const routes = this.capabilityRoutes.get(capability);\n if (!routes) {\n continue;\n }\n const currentOwner = routes.get(addressKey);\n if (currentOwner && currentOwner.segment === segment) {\n routes.delete(addressKey);\n if (routes.size === 0) {\n this.capabilityRoutes.delete(capability);\n vanishedGlobal = true;\n }\n }\n }\n const ackContext = this.buildAckContext(context);\n const ackFrame = {\n type: 'CapabilityWithdrawAck',\n capabilities: [...frame.capabilities],\n address: frame.address.toString(),\n ok: true,\n refId: envelope.id ?? undefined,\n };\n await this.forwardAckToSegment(segment, ackFrame, envelope, ackContext);\n if (vanishedGlobal && this.hasUpstream()) {\n await this.routingNode.forwardUpstream(envelope, ackContext);\n }\n }\n ensureCapabilityRoutes(capability) {\n let routes = this.capabilityRoutes.get(capability);\n if (!routes) {\n routes = new Map();\n this.capabilityRoutes.set(capability, routes);\n }\n return routes;\n }\n getSourceSystemId(context) {\n if (!context) {\n return null;\n }\n const typed = context;\n const candidate = typed.fromSystemId ?? typed.from_system_id ?? null;\n if (typeof candidate === 'string' && candidate.length) {\n return candidate;\n }\n return null;\n }\n async forwardAckToSegment(segment, ackFrame, originalEnvelope, ackContext) {\n const envelopeFactory = this.routingNode.envelopeFactory;\n if (!envelopeFactory) {\n logger.warning('missing_envelope_factory_for_capability_ack');\n return;\n }\n const ackEnvelope = envelopeFactory.createEnvelope({\n frame: ackFrame,\n ...(originalEnvelope.corrId ? { corrId: originalEnvelope.corrId } : {}),\n });\n await this.routingNode.forwardToRoute?.(segment, ackEnvelope, ackContext);\n }\n hasUpstream() {\n try {\n return Boolean(this.getUpstreamConnector());\n }\n catch {\n return false;\n }\n }\n buildAckContext(context) {\n return {\n originType: DeliveryOriginType.LOCAL,\n security: context?.security,\n stickinessRequired: getStickinessRequired(context),\n stickySid: getStickySid(context),\n expectedResponseType: FameResponseType.NONE,\n };\n }\n normalizeAddress(address) {\n return address.toString();\n }\n}\nfunction getDownstreamRoutes(routeManager) {\n const manager = routeManager;\n return (routeManager.downstreamRoutes ??\n manager.downstream_routes ??\n undefined);\n}\nfunction hasRoute(container, segment) {\n if (!container) {\n return false;\n }\n if (container instanceof Map) {\n return container.has(segment);\n }\n if (typeof container === 'object') {\n return Object.prototype.hasOwnProperty.call(container, segment);\n }\n return false;\n}\nfunction getStickinessRequired(context) {\n if (!context) {\n return undefined;\n }\n const typed = context;\n return typed.stickinessRequired ?? typed.stickiness_required ?? undefined;\n}\nfunction getStickySid(context) {\n if (!context) {\n return undefined;\n }\n const typed = context;\n return typed.stickySid ?? typed.sticky_sid ?? undefined;\n}\n//# sourceMappingURL=capability-frame-handler.js.map","import { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.sentinel.credit_update_frame_handler');\nfunction normalizeOptions(options) {\n if (!options || typeof options !== 'object') {\n throw new Error('CreditUpdateFrameHandler requires a routeManager option');\n }\n const candidate = options;\n const routeManager = (candidate.routeManager ?? candidate.route_manager);\n if (!routeManager) {\n throw new Error('CreditUpdateFrameHandler requires a routeManager option');\n }\n return { routeManager };\n}\nexport class CreditUpdateFrameHandler {\n constructor(options) {\n const normalized = normalizeOptions(options);\n this.routeManager = normalized.routeManager;\n }\n async acceptCreditUpdate(envelope, context) {\n const flowId = envelope.flowId;\n if (!flowId) {\n logger.warning('credit_update_missing_flow_id');\n return;\n }\n const targetConnector = this.routeManager.getFlowRoute(flowId);\n if (!targetConnector) {\n logger.warning('credit_update_unknown_flow', { flowId });\n return;\n }\n if (context?.fromConnector && context.fromConnector === targetConnector) {\n return;\n }\n await targetConnector.send(envelope);\n }\n}\n//# sourceMappingURL=credit-update-frame-handler.js.map","import { DeliveryOriginType, FameAddress, FameResponseType, FlowFlags, parseAddress, formatAddress, generateId, localDeliveryContext, withFabric,\n// type NodeAttachAckFrame,\n } from '@naylence/core';\nimport { currentTraceId } from '../util/envelope-context.js';\nimport { FameNode } from '../node/node.js';\nimport { createPersistentRouteStore, getDefaultRouteStore, } from './store/route-store.js';\nimport { RouteManager, } from './route-manager.js';\nimport { CompositeRoutingPolicy } from './composite-routing-policy.js';\nimport { CapabilityAwareRoutingPolicy } from './capability-aware-routing-policy.js';\nimport { HybridPathRoutingPolicy } from './hybrid-path-routing-policy.js';\nimport { NodeAttachFrameHandler } from './node-attach-frame-handler.js';\nimport { AddressBindFrameHandler } from './address-bind-frame-handler.js';\nimport { NodeHeartbeatFrameHandler } from './node-heartbeat-frame-handler.js';\nimport { CapabilityFrameHandler } from './capability-frame-handler.js';\nimport { CreditUpdateFrameHandler } from './credit-update-frame-handler.js';\nimport { LogLevel, basicConfig, getLogger, summarizeEnvelope, } from '../util/logging.js';\n// import { TaskSpawner } from \"../util/task-spawner.js\";\nimport { delay } from '../util/task-utils.js';\nimport { AsyncEvent } from '../util/async-event.js';\nimport { AsyncLock } from '../util/lock.js';\nimport { createResource } from '../connector/connector-factory.js';\nimport { UpstreamSessionManager } from '../node/upstream-session-manager.js';\nimport { emitDeliveryNack, RouterState } from './router.js';\nconst logger = getLogger('naylence.fame.sentinel.sentinel');\nconst ALLOWED_BEFORE_ATTACH = new Set(['NodeAttach']);\nconst SYSTEM_INBOX = '__sys__';\nconst RESERVED_UPSTREAM_ADDRESS_NAMES = new Set(['__sys__', '__rpc__']);\nconst DEFAULT_BINDING_ACK_TIMEOUT_MS = 20000;\nconst DEFAULT_ATTACH_TIMEOUT_SEC = 5;\nconst DEFAULT_CONNECTOR_CLEANUP_DELAY_MS = 200;\nfunction createDeferred() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\nfunction computePhysicalSegments(path) {\n return path.replace(/^\\/+/u, '').split('/').filter(Boolean);\n}\nfunction normalizeSentinelOptions(rawOptions) {\n const normalized = {\n ...(rawOptions ?? {}),\n };\n const assignAlias = (targetKey, aliasKeys) => {\n if (normalized[targetKey] === undefined) {\n for (const alias of aliasKeys) {\n if (alias in normalized) {\n normalized[targetKey] = normalized[alias];\n break;\n }\n }\n }\n for (const alias of aliasKeys) {\n if (alias in normalized) {\n delete normalized[alias];\n }\n }\n };\n assignAlias('routeStore', ['route_store']);\n assignAlias('routingPolicy', ['routing_policy']);\n assignAlias('attachTimeoutSec', ['attach_timeout_sec']);\n assignAlias('maxAttachTtlSec', ['max_attach_ttl_sec']);\n assignAlias('bindingAckTimeoutMs', ['binding_ack_timeout_ms']);\n assignAlias('attachmentKeyValidator', ['attachment_key_validator']);\n assignAlias('stickinessManager', ['stickiness_manager']);\n assignAlias('requestedLogicals', ['requested_logicals']);\n assignAlias('attachClient', ['attach_client']);\n assignAlias('cleanupDelayMs', ['cleanup_delay_ms']);\n assignAlias('rebindOnAttach', ['rebind_on_attach']);\n return normalized;\n}\nfunction normalizeOriginConnectorOptions(rawOptions) {\n const normalized = { ...rawOptions };\n const assignAlias = (targetKey, aliasKeys) => {\n if (normalized[targetKey] === undefined) {\n for (const alias of aliasKeys) {\n if (alias in normalized) {\n normalized[targetKey] = normalized[alias];\n break;\n }\n }\n }\n for (const alias of aliasKeys) {\n if (alias in normalized) {\n delete normalized[alias];\n }\n }\n };\n assignAlias('originType', ['origin_type']);\n assignAlias('systemId', ['system_id']);\n assignAlias('connectorConfig', ['connector_config']);\n assignAlias('authorization', ['authorization_context']);\n return normalized;\n}\nexport class Sentinel extends FameNode {\n constructor(options = {}) {\n const normalizedOptions = normalizeSentinelOptions(options);\n super(normalizedOptions);\n this.pendingBinds = new Map();\n this.pendingLock = new AsyncLock();\n this.peerSessionManagers = new Map();\n this.upstreamConnectorRef = null;\n this.routingEpochValue = generateId();\n this.isPreparedToStop = false;\n const opts = normalizedOptions;\n let routeStore;\n if (opts.routeStore) {\n routeStore = opts.routeStore;\n }\n else {\n try {\n routeStore = createPersistentRouteStore(this.storageProvider);\n }\n catch (error) {\n logger.warning('persistent_route_store_unavailable', {\n error: error instanceof Error ? error.message : String(error),\n });\n routeStore = getDefaultRouteStore();\n }\n }\n const cleanupDelayMs = Number.isFinite(opts.cleanupDelayMs ?? NaN)\n ? Math.max(0, Number(opts.cleanupDelayMs))\n : DEFAULT_CONNECTOR_CLEANUP_DELAY_MS;\n this.cleanupDelayMs = cleanupDelayMs;\n const attachTimeoutSec = opts.attachTimeoutSec ?? DEFAULT_ATTACH_TIMEOUT_SEC;\n this.attachTimeoutMs =\n typeof attachTimeoutSec === 'number' && Number.isFinite(attachTimeoutSec)\n ? Math.max(0, attachTimeoutSec * 1000)\n : null;\n const rebindOnAttach = opts.rebindOnAttach ?? false;\n this.routeManager = new RouteManager({\n deliver: (envelope, context) => this.deliver(envelope, context),\n routeStore,\n getId: () => this.id,\n cleanupDelayMs: this.cleanupDelayMs,\n });\n this.rebindOnAttach = rebindOnAttach;\n this._route_manager =\n this.routeManager;\n this.routingPolicy =\n opts.routingPolicy ??\n new CompositeRoutingPolicy([\n new CapabilityAwareRoutingPolicy(),\n new HybridPathRoutingPolicy(),\n ]);\n this.attachmentKeyValidator = opts.attachmentKeyValidator ?? null;\n this.stickinessManager = opts.stickinessManager ?? null;\n this.peers = opts.peers ?? [];\n this.ackTimeoutMs =\n opts.bindingAckTimeoutMs ?? DEFAULT_BINDING_ACK_TIMEOUT_MS;\n this.maxAttachTtlSec = opts.maxAttachTtlSec ?? null;\n this.requestedLogicals = opts.requestedLogicals ?? [];\n this.attachClient = opts.attachClient ?? null;\n this.nodeAttachFrameHandler = new NodeAttachFrameHandler({\n routingNode: this,\n routeManager: this.routeManager,\n attachmentKeyValidator: this.attachmentKeyValidator,\n stickinessManager: this.stickinessManager,\n maxTtlSec: this.maxAttachTtlSec,\n });\n this.nodeHeartbeatFrameHandler = new NodeHeartbeatFrameHandler({\n routingNode: this,\n });\n this.addressBindFrameHandler = new AddressBindFrameHandler({\n routingNode: this,\n routeManager: this.routeManager,\n upstreamConnector: () => this.upstreamConnector,\n });\n this.capabilityFrameHandler = new CapabilityFrameHandler({\n routingNode: this,\n routeManager: this.routeManager,\n upstreamConnector: () => this.upstreamConnector,\n });\n this.creditUpdateFrameHandler = new CreditUpdateFrameHandler({\n routeManager: this.routeManager,\n });\n const authorizer = this.securityManager?.authorizer ?? null;\n if (!authorizer) {\n throw new Error('Sentinel nodes require a security manager with an authorizer');\n }\n if (this.rebindOnAttach) {\n this.addEventListener({\n priority: 500,\n onNodeAttachToUpstream: async () => {\n await this.propagateAddressBindingsUpstream();\n },\n });\n }\n }\n get routingEpoch() {\n return this.routingEpochValue;\n }\n bumpRoutingEpoch() {\n const previousEpoch = this.routingEpochValue;\n this.routingEpochValue = generateId();\n logger.debug('routing_epoch_bumped', {\n previous_epoch: previousEpoch,\n new_epoch: this.routingEpochValue,\n });\n }\n get upstreamConnector() {\n if (this.upstreamConnectorRef) {\n return this.upstreamConnectorRef;\n }\n const descriptor = Object.getOwnPropertyDescriptor(FameNode.prototype, 'upstreamConnector');\n const baseGetter = descriptor?.get;\n return baseGetter ? baseGetter.call(this) : null;\n }\n setUpstreamConnector(connector) {\n this.upstreamConnectorRef = connector;\n }\n async start() {\n this.isPreparedToStop = false;\n await super.start();\n await this.routeManager.start();\n await this.connectToPeers();\n }\n async prepareToStop() {\n if (this.isPreparedToStop) {\n return;\n }\n super.prepareToStop();\n this.isPreparedToStop = true;\n }\n async stop() {\n await this.prepareToStop();\n // await this.lifecycleTasks.shutdownTasks({ cancelHanging: true }).catch(() => undefined);\n for (const manager of this.peerSessionManagers.values()) {\n await manager.stop().catch(() => undefined);\n }\n this.peerSessionManagers.clear();\n await super.stop();\n await this.routeManager.stop();\n }\n async deliver(envelope, context) {\n const processedEnvelope = await this.dispatchEnvelopeEvent('onDeliver', this, envelope, context);\n if (!processedEnvelope) {\n return;\n }\n const frameType = processedEnvelope.frame?.type ?? null;\n if (frameType &&\n [\n 'AddressBindAck',\n 'AddressUnbindAck',\n 'CapabilityAdvertiseAck',\n 'CapabilityWithdrawAck',\n ].includes(frameType)) {\n await this.deliveryTracker.onEnvelopeDelivered(SYSTEM_INBOX, processedEnvelope, context);\n if (frameType === 'AddressBindAck') {\n const frame = processedEnvelope.frame;\n await this.resolvePendingBind(processedEnvelope, frame?.ok ?? true, frame?.reason ?? null);\n }\n return;\n }\n if (!context || context.originType !== DeliveryOriginType.LOCAL) {\n if (frameType === 'NodeAttach') {\n await this.nodeAttachFrameHandler.acceptNodeAttach(processedEnvelope, context);\n }\n else if (frameType === 'AddressBind') {\n await this.addressBindFrameHandler.acceptAddressBind(processedEnvelope, context);\n }\n else if (frameType === 'AddressUnbind') {\n await this.addressBindFrameHandler.acceptAddressUnbind(processedEnvelope, context);\n }\n else if (frameType === 'CapabilityAdvertise') {\n await this.capabilityFrameHandler.acceptCapabilityAdvertise(processedEnvelope, context);\n }\n else if (frameType === 'CapabilityWithdraw') {\n await this.capabilityFrameHandler.acceptCapabilityWithdraw(processedEnvelope, context);\n }\n else if (frameType === 'CreditUpdate') {\n await this.creditUpdateFrameHandler.acceptCreditUpdate(processedEnvelope, context);\n }\n else if (frameType === 'NodeHeartbeat') {\n await this.nodeHeartbeatFrameHandler.acceptNodeHeartbeat(processedEnvelope, context);\n }\n }\n const state = this.buildRouterState();\n const action = await this.routingPolicy.decide(processedEnvelope, state, context);\n await action.execute(processedEnvelope, this, state, context);\n }\n async forwardToRoute(nextSegment, envelope, context) {\n if (this.originMatches(context, nextSegment, DeliveryOriginType.DOWNSTREAM)) {\n logger.debug('downstream_loop_detected', {\n envp_id: envelope.id,\n segment: nextSegment,\n });\n }\n let processed = null;\n try {\n processed = await this.dispatchEnvelopeEvent('onForwardToRoute', this, nextSegment, envelope, context);\n if (!processed) {\n return;\n }\n const connector = this.routeManager.downstreamRoutes.get(nextSegment);\n if (!connector) {\n logger.warning('no_route_for_child_segment', { segment: nextSegment });\n await this.emitDeliveryNack(processed, {\n code: 'CHILD_UNREACHABLE',\n context: context ?? null,\n });\n return;\n }\n logger.debug('forwarding_downstream', {\n ...summarizeEnvelope(processed, ''),\n route: nextSegment,\n });\n await connector.send(processed);\n this.trackFlowRoute(processed, connector);\n this.maybeForgetFlow(processed);\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n await this.dispatchEnvelopeEvent('onForwardToRouteComplete', this, nextSegment, processed ?? envelope, undefined, err, context).catch(() => undefined);\n throw err;\n }\n await this.dispatchEnvelopeEvent('onForwardToRouteComplete', this, nextSegment, processed ?? envelope, undefined, undefined, context).catch(() => undefined);\n }\n async forwardToPeer(peerSegment, envelope, context) {\n if (this.originMatches(context, peerSegment, DeliveryOriginType.PEER)) {\n logger.debug('peer_loop_detected', {\n envp_id: envelope.id,\n segment: peerSegment,\n });\n }\n const processed = await this.dispatchEnvelopeEvent('onForwardToPeer', this, peerSegment, envelope, context);\n if (!processed) {\n return;\n }\n const connector = this.routeManager._peer_routes.get(peerSegment);\n if (!connector) {\n logger.warning('no_route_for_peer_segment', {\n peer_segment: peerSegment,\n });\n await this.emitDeliveryNack(processed, {\n code: 'PEER_UNREACHABLE',\n context: context ?? null,\n });\n return;\n }\n await connector.send(processed);\n await this.dispatchEnvelopeEvent('onForwardToPeerComplete', this, peerSegment, processed, undefined, undefined, context).catch(() => undefined);\n this.trackFlowRoute(processed, connector);\n this.maybeForgetFlow(processed);\n }\n async forwardToPeers(envelope, peers, excludePeers, context) {\n const processed = await this.dispatchEnvelopeEvent('onForwardToPeers', this, envelope, peers ?? undefined, excludePeers ?? undefined, context);\n if (!processed) {\n return;\n }\n const availablePeers = new Set(peers ?? Array.from(this.routeManager._peer_routes.keys()));\n if (excludePeers) {\n for (const peer of excludePeers) {\n availablePeers.delete(peer);\n }\n }\n for (const peerId of availablePeers) {\n const connector = this.routeManager._peer_routes.get(peerId);\n if (!connector) {\n throw new Error(`No route for peer segment '${peerId}'`);\n }\n const forwarded = await this.dispatchEnvelopeEvent('onForwardToPeer', this, peerId, envelope, context);\n if (!forwarded) {\n continue;\n }\n await connector.send(forwarded);\n await this.dispatchEnvelopeEvent('onForwardToPeerComplete', this, peerId, forwarded, undefined, undefined, context).catch(() => undefined);\n this.trackFlowRoute(forwarded, connector);\n this.maybeForgetFlow(forwarded);\n }\n await this.dispatchEnvelopeEvent('onForwardToPeersComplete', this, processed, peers ?? undefined, excludePeers ?? undefined, undefined, undefined, context).catch(() => undefined);\n }\n async forwardUpstream(envelope, context) {\n if (context?.originType === DeliveryOriginType.UPSTREAM) {\n logger.debug('skipping_forward_upstream', {\n envp_id: envelope.id,\n origin_type: context.originType,\n });\n return;\n }\n let processed = null;\n try {\n processed = await this.dispatchEnvelopeEvent('onForwardUpstream', this, envelope, context);\n if (!processed) {\n return;\n }\n const connector = this.upstreamConnector;\n const sessionManager = this._sessionManager;\n const upstreamManager = sessionManager &&\n typeof sessionManager.send === 'function'\n ? sessionManager\n : null;\n if (!connector || !upstreamManager) {\n await this.dispatchEnvelopeEvent('onForwardUpstreamComplete', this, processed, undefined, undefined, context).catch(() => undefined);\n return;\n }\n await upstreamManager.send(processed);\n this.trackFlowRoute(processed, connector);\n this.maybeForgetFlow(processed);\n await this.dispatchEnvelopeEvent('onForwardUpstreamComplete', this, processed, undefined, undefined, context).catch(() => undefined);\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n await this.dispatchEnvelopeEvent('onForwardUpstreamComplete', this, processed ?? envelope, undefined, err, context).catch(() => undefined);\n throw err;\n }\n }\n async createOriginConnector(options) {\n const normalizedOptions = normalizeOriginConnectorOptions(options);\n const { connectorConfig, originType, systemId, authorization: authorizationOption, ...factoryArgs } = normalizedOptions;\n const connector = await createResource(connectorConfig, factoryArgs);\n const attachedEvent = new AsyncEvent();\n const buffer = [];\n const authorization = (authorizationOption ??\n null);\n const buildContext = (ctx) => {\n const baseSecurity = ctx?.security\n ? { ...ctx.security }\n : undefined;\n const security = baseSecurity || authorization !== null\n ? { ...(baseSecurity ?? {}), authorization }\n : undefined;\n return {\n fromConnector: connector,\n fromSystemId: systemId,\n originType,\n expectedResponseType: ctx?.expectedResponseType ?? FameResponseType.NONE,\n security,\n meta: ctx?.meta,\n stickinessRequired: ctx?.stickinessRequired,\n stickySid: ctx?.stickySid,\n };\n };\n const gatedHandler = async (env, ctx) => {\n if (ctx?.fromConnector && ctx.fromConnector !== connector) {\n throw new Error('Context connector mismatch for origin connector');\n }\n if (ctx?.fromSystemId && ctx.fromSystemId !== systemId) {\n throw new Error('Context system id mismatch for origin connector');\n }\n if (ctx?.originType && ctx.originType !== originType) {\n throw new Error('Context origin type mismatch for origin connector');\n }\n const effectiveContext = buildContext(ctx);\n await this.dispatchEnvelopeEvent('onEnvelopeReceived', this, env, ctx);\n if (!attachedEvent.isSet()) {\n const frameType = env.frame?.type ?? '';\n if (ALLOWED_BEFORE_ATTACH.has(frameType)) {\n await this.deliver(env, effectiveContext);\n }\n else {\n buffer.push(env);\n }\n return null;\n }\n while (buffer.length) {\n const pending = buffer.shift();\n if (pending) {\n await this.deliver(pending, effectiveContext);\n }\n }\n await this.deliver(env, effectiveContext);\n return null;\n };\n await connector.start(gatedHandler);\n const pendingEntry = {\n connector,\n attached: {\n set: () => attachedEvent.set(),\n wait: (options) => attachedEvent.wait(options),\n },\n buffer,\n };\n const timeoutMs = this.attachTimeoutMs;\n if (timeoutMs !== null && timeoutMs > 0) {\n const timeoutController = new AbortController();\n pendingEntry.cancelAttachTimeout = () => timeoutController.abort();\n this.spawn(async (taskSignal) => {\n const combined = new AbortController();\n const abortHandler = () => combined.abort();\n timeoutController.signal.addEventListener('abort', abortHandler);\n if (taskSignal) {\n if (taskSignal.aborted) {\n combined.abort();\n }\n else {\n taskSignal.addEventListener('abort', abortHandler);\n }\n }\n try {\n await delay(timeoutMs, combined.signal);\n }\n catch (error) {\n if (!combined.signal.aborted) {\n logger.debug('attach_timeout_delay_failed', {\n system_id: systemId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n return;\n }\n finally {\n timeoutController.signal.removeEventListener('abort', abortHandler);\n taskSignal?.removeEventListener('abort', abortHandler);\n }\n let removed = false;\n await this.routeManager.routesLock.runExclusive(async () => {\n const current = this.routeManager._pending_routes.get(systemId);\n if (current === pendingEntry) {\n this.routeManager._pending_routes.delete(systemId);\n this.routeManager._pending_route_metadata.delete(systemId);\n removed = true;\n }\n });\n if (!removed) {\n return;\n }\n try {\n await connector.stop();\n }\n catch (error) {\n logger.debug('attach_timeout_stop_failed', {\n system_id: systemId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n logger.warning('attach_timeout_expired', {\n system_id: systemId,\n timeout_ms: timeoutMs,\n });\n }, { name: `attach-timeout-${systemId}` });\n }\n this.routeManager._pending_routes.set(systemId, pendingEntry);\n this.routeManager._pending_route_metadata.set(systemId, connectorConfig);\n return connector;\n }\n childFor(address) {\n const entry = this.routeManager._downstream_addresses_routes.get(address.toString());\n return entry?.segment ?? null;\n }\n buildRouterState() {\n const downstream = new Map();\n for (const [addr, info,] of this.routeManager._downstream_addresses_routes.entries()) {\n if (info?.segment) {\n downstream.set(addr, info.segment);\n }\n }\n return new RouterState({\n nodeId: this.id,\n local: this.bindingManager.getAddresses(),\n downstreamAddressRoutes: downstream,\n peerAddressRoutes: this.routeManager._peer_addresses_routes,\n childSegments: this.routeManager.downstreamRoutes.keys(),\n peerSegments: this.routeManager._peer_routes.keys(),\n hasParent: this.hasParent,\n physicalSegments: computePhysicalSegments(this.physicalPath),\n pools: this.getPoolsForRouter(),\n capabilities: this.capabilityFrameHandler.capRoutes,\n resolveAddressByCapability: this.resolveAddressByCapability.bind(this),\n envelopeFactory: this.envelopeFactory,\n });\n }\n getPoolsForRouter() {\n const result = new Map();\n for (const [poolKey, segments,] of this.addressBindFrameHandler.pools.entries()) {\n result.set([poolKey.name, poolKey.pattern], new Set(segments));\n }\n return result;\n }\n async resolveAddressByCapability(capabilities) {\n for (const capability of capabilities) {\n const routes = this.capabilityFrameHandler.capRoutes[capability];\n if (!routes) {\n continue;\n }\n for (const addressKey of Object.keys(routes)) {\n try {\n return new FameAddress(addressKey);\n }\n catch (error) {\n logger.debug('invalid_capability_address', {\n capability,\n address: addressKey,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }\n return null;\n }\n async emitDeliveryNack(envelope, options) {\n const state = this.buildRouterState();\n await emitDeliveryNack(envelope, this, state, options.code, options.context ?? undefined);\n }\n async removeDownstreamRoute(segment, options = {}) {\n const { stop = true, delayMs, reason, meta, captureStack } = options;\n await this.routeManager.unregisterDownstreamRoute(segment, {\n stop,\n delayMs,\n reason: reason ?? 'sentinel.removeDownstreamRoute',\n meta: {\n ...(meta ?? {}),\n requested_stop: stop,\n caller: 'Sentinel.removeDownstreamRoute',\n },\n captureStack,\n });\n }\n async removePeerRoute(segment, options = {}) {\n const { stop = true, delayMs, reason, meta, captureStack } = options;\n await this.routeManager.unregisterPeerRoute(segment, {\n stop,\n delayMs,\n reason: reason ?? 'sentinel.removePeerRoute',\n meta: {\n ...(meta ?? {}),\n requested_stop: stop,\n caller: 'Sentinel.removePeerRoute',\n },\n captureStack,\n });\n }\n async resolveEncryptionKeyForAddress(_targetAddress) {\n return null;\n }\n async onDeliveryNack(frame, envelope, context) {\n await super.onDeliveryNack(frame, envelope, context);\n const corrId = envelope.corrId;\n if (!corrId || !this.pendingBinds.has(corrId)) {\n return;\n }\n await this.resolvePendingBind(envelope, false, frame.reason ?? null);\n }\n get deliveryTracker() {\n return this\n ._deliveryTracker;\n }\n originMatches(context, segment, originType) {\n return Boolean(context &&\n context.originType === originType &&\n context.fromSystemId === segment);\n }\n trackFlowRoute(envelope, connector) {\n const flowId = envelope.flowId;\n if (!flowId || this.routeManager.getFlowRoute(flowId)) {\n return;\n }\n this.routeManager.trackFlowRoute(flowId, connector);\n }\n maybeForgetFlow(envelope) {\n const flowId = envelope.flowId;\n if (!flowId) {\n return;\n }\n if (envelope.flowFlags && envelope.flowFlags & FlowFlags.RESET) {\n this.routeManager.clearFlowRoute(flowId);\n }\n }\n async resolvePendingBind(envelope, ok, reason) {\n const corrId = envelope.corrId;\n if (!corrId) {\n return;\n }\n await this.pendingLock.runExclusive(async () => {\n const pending = this.pendingBinds.get(corrId);\n if (!pending) {\n return;\n }\n this.pendingBinds.delete(corrId);\n if (ok) {\n pending.resolve(true);\n }\n else {\n pending.reject(new Error(reason ?? 'Bind rejected'));\n }\n });\n }\n async connectToPeers() {\n if (!this.peers.length) {\n return;\n }\n const tasks = this.peers.map((peer) => this.connectToPeer(peer));\n await Promise.all(tasks);\n }\n async connectToPeer(peer) {\n if (!this.attachClient) {\n throw new Error('Missing attach client');\n }\n if (!peer.admissionClient) {\n throw new Error('Missing admission client');\n }\n const sessionManager = new UpstreamSessionManager({\n node: this,\n outboundOriginType: DeliveryOriginType.PEER,\n inboundOriginType: DeliveryOriginType.PEER,\n admissionClient: peer.admissionClient,\n attachClient: this.attachClient,\n requestedLogicals: this.requestedLogicals,\n inboundHandler: (env, ctx) => this.handleInboundFromPeer(env, ctx),\n onAttach: (info, connector) => this.onNodeAttachToPeer(info, connector),\n onEpochChange: (epoch) => this.onEpochChange(epoch),\n onWelcome: async () => undefined,\n });\n await sessionManager.start();\n const systemId = sessionManager.systemId;\n if (!systemId) {\n throw new Error('Peer session manager missing system id');\n }\n this.peerSessionManagers.set(systemId, sessionManager);\n await this.routeManager.registerPeerRoute(systemId, sessionManager);\n }\n async handleInboundFromPeer(envelope, context) {\n const deliveryContext = {\n expectedResponseType: context?.expectedResponseType ?? FameResponseType.NONE,\n fromConnector: context?.fromConnector,\n fromSystemId: context?.fromSystemId,\n originType: DeliveryOriginType.PEER,\n security: context?.security,\n meta: context?.meta,\n stickinessRequired: context?.stickinessRequired,\n stickySid: context?.stickySid,\n };\n await this.deliver(envelope, deliveryContext);\n return null;\n }\n async onNodeAttachToPeer(info, connector) {\n await this.dispatchEvent('onNodeAttachToPeer', this, info, connector).catch(() => undefined);\n }\n async onEpochChange(epoch) {\n this.routingEpochValue = epoch;\n await this.dispatchEvent('onEpochChange', this, epoch).catch(() => undefined);\n await this.propagateAddressBindingsUpstream();\n }\n async propagateAddressBindingsUpstream() {\n if (!this.hasParent) {\n logger.warning('No upstream defined to rebind addresses');\n return;\n }\n const entries = Array.from(this.routeManager._downstream_addresses_routes.entries());\n for (const [address, info] of entries) {\n if (!info) {\n continue;\n }\n let name = null;\n try {\n const [parsedName] = parseAddress(address);\n name = parsedName;\n }\n catch {\n name = null;\n }\n if (name && RESERVED_UPSTREAM_ADDRESS_NAMES.has(name.toLowerCase())) {\n continue;\n }\n try {\n await this.bindAddressUpstream(new FameAddress(address), info);\n }\n catch (error) {\n logger.error('rebind_failed', {\n address,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }\n async bindAddressUpstream(address, info) {\n if (!this.hasParent) {\n return;\n }\n const corrId = generateId();\n const deferred = createDeferred();\n await this.pendingLock.runExclusive(async () => {\n this.pendingBinds.set(corrId, deferred);\n });\n const frame = {\n type: 'AddressBind',\n address: address.toString(),\n };\n if (info.physicalPath) {\n frame.physicalPath = info.physicalPath;\n }\n if (info.encryptionKeyId) {\n frame.encryptionKeyId = info.encryptionKeyId;\n }\n const replyTo = formatAddress(SYSTEM_INBOX, this.physicalPath);\n const envelopeOptions = {\n frame,\n corrId,\n replyTo,\n };\n const traceId = currentTraceId();\n if (traceId) {\n envelopeOptions.traceId = traceId;\n }\n const envelope = this.envelopeFactory.createEnvelope(envelopeOptions);\n await this.forwardUpstream(envelope, localDeliveryContext(this.id));\n let timeoutId = null;\n const timeoutPromise = new Promise((_resolve, reject) => {\n timeoutId = setTimeout(() => {\n reject(new Error(`Timeout waiting for bind ack for ${address.toString()}`));\n }, this.ackTimeoutMs);\n if (typeof timeoutId?.unref === 'function') {\n timeoutId.unref();\n }\n });\n try {\n const result = await Promise.race([deferred.promise, timeoutPromise]);\n if (!result) {\n throw new Error(`Bind to ${address.toString()} was rejected`);\n }\n }\n finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n await this.pendingLock.runExclusive(async () => {\n const pending = this.pendingBinds.get(corrId);\n if (pending === deferred) {\n this.pendingBinds.delete(corrId);\n }\n });\n }\n }\n static async aserve(options = {}) {\n const { logLevel, rootConfig, config, node = null, fabric: providedFabric = null, signals = ['SIGINT', 'SIGTERM'], signal, ...fabricOptions } = options;\n const resolvedLevel = normalizeServeLogLevel(logLevel) ?? LogLevel.INFO;\n basicConfig({ level: resolvedLevel });\n const processRef = typeof globalThis !== 'undefined' &&\n typeof globalThis.process !== 'undefined'\n ? globalThis.process\n : undefined;\n if (!processRef ||\n typeof processRef.once !== 'function' ||\n typeof processRef.removeListener !== 'function') {\n throw new Error('Sentinel.aserve requires a Node.js runtime with signal support');\n }\n const abortSignal = signal ?? null;\n if (abortSignal?.aborted) {\n logger.info('shutdown_signal_received', { signal: 'abort' });\n return;\n }\n // Build fabric options, preferring rootConfig if provided\n const fabricCreateOptions = {\n ...fabricOptions,\n };\n if (rootConfig !== undefined) {\n fabricCreateOptions.rootConfig = rootConfig;\n }\n else if (config !== null && config !== undefined) {\n fabricCreateOptions.rootConfig = config;\n }\n if (node !== null) {\n fabricCreateOptions.node = node;\n }\n logger.debug('fabric_create_options', {\n hasRootConfig: 'rootConfig' in fabricCreateOptions,\n hasNode: 'node' in fabricCreateOptions,\n rootConfigKeys: fabricCreateOptions.rootConfig\n ? Object.keys(fabricCreateOptions.rootConfig).join(',')\n : 'none',\n allKeys: Object.keys(fabricCreateOptions).join(','),\n });\n let stopResolve;\n let stopResolved = false;\n const stopPromise = new Promise((resolve) => {\n stopResolve = () => {\n if (!stopResolved) {\n stopResolved = true;\n resolve();\n }\n };\n });\n const listeners = [];\n let abortListener = null;\n const cleanupListeners = () => {\n while (listeners.length) {\n const { signal: registeredSignal, listener } = listeners.pop();\n processRef.removeListener(registeredSignal, listener);\n }\n if (abortSignal && abortListener) {\n abortSignal.removeEventListener('abort', abortListener);\n abortListener = null;\n }\n };\n const registerSignalListeners = () => {\n for (const sig of signals) {\n const listener = () => {\n logger.info('shutdown_signal_received', { signal: sig });\n cleanupListeners();\n stopResolve();\n };\n listeners.push({ signal: sig, listener });\n processRef.once(sig, listener);\n }\n if (abortSignal) {\n abortListener = () => {\n logger.info('shutdown_signal_received', { signal: 'abort' });\n cleanupListeners();\n stopResolve();\n };\n abortSignal.addEventListener('abort', abortListener, { once: true });\n }\n };\n // Use provided fabric or withFabric pattern for lifecycle management\n if (providedFabric) {\n // If a fabric is provided, use it directly without lifecycle management\n await providedFabric.enter();\n try {\n registerSignalListeners();\n logger.info('sentinel_live', {\n message: 'Node is live! Press Ctrl+C to stop.',\n });\n try {\n await stopPromise;\n logger.info('sentinel_shutdown_begin');\n }\n finally {\n cleanupListeners();\n }\n }\n finally {\n await providedFabric.exit();\n }\n }\n else {\n // Use withFabric pattern for automatic lifecycle management\n await withFabric(fabricCreateOptions, async () => {\n registerSignalListeners();\n logger.info('sentinel_live', {\n message: 'Node is live! Press Ctrl+C to stop.',\n });\n try {\n await stopPromise;\n logger.info('sentinel_shutdown_begin');\n }\n finally {\n cleanupListeners();\n }\n });\n }\n logger.info('sentinel_shutdown_complete');\n }\n}\nfunction normalizeServeLogLevel(level) {\n if (level === null || level === undefined) {\n return undefined;\n }\n if (typeof level === 'number' && Number.isFinite(level)) {\n return level;\n }\n if (typeof level === 'string') {\n const trimmed = level.trim();\n if (!trimmed) {\n return undefined;\n }\n const numeric = Number(trimmed);\n if (!Number.isNaN(numeric)) {\n return numeric;\n }\n const key = trimmed.toUpperCase();\n const value = LogLevel[key];\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=sentinel.js.map","import { z } from 'zod';\nconst PeerConfigSchema = z\n .object({\n directUrl: z.string().trim().min(1).optional().nullable(),\n admission: z.unknown().optional().nullable(),\n})\n .passthrough();\nexport function normalizePeerConfigs(input) {\n if (!input) {\n return [];\n }\n if (!Array.isArray(input)) {\n return [];\n }\n const peers = [];\n for (const candidate of input) {\n if (!candidate || typeof candidate !== 'object') {\n continue;\n }\n const parsed = PeerConfigSchema.safeParse(candidate);\n if (!parsed.success) {\n continue;\n }\n const { directUrl = null, admission = null } = parsed.data;\n peers.push({\n directUrl: typeof directUrl === 'string' ? directUrl : null,\n admission: (admission ?? null),\n });\n }\n return peers;\n}\n//# sourceMappingURL=peer-config.js.map","import { z } from 'zod';\nimport { normalizeFameNodeConfig } from '../node/node-config.js';\nimport { normalizePeerConfigs } from './peer-config.js';\nconst SentinelExtrasSchema = z\n .object({\n type: z.literal('Sentinel').default('Sentinel'),\n routingPolicy: z.unknown().optional().nullable(),\n loadBalancing: z.unknown().optional().nullable(),\n stickiness: z.unknown().optional().nullable(),\n peers: z.unknown().optional().nullable(),\n maxAttachTtlSec: z.number().min(0).optional().nullable(),\n bindingAckTimeoutMs: z.number().min(0).optional().nullable(),\n attachTimeoutSec: z.number().min(0).optional().nullable(),\n routeStore: z.unknown().optional().nullable(),\n})\n .passthrough();\nexport function normalizeSentinelConfig(input) {\n const source = SentinelExtrasSchema.parse(input ?? {});\n const extrasRecord = isPlainRecord(input)\n ? {\n ...input,\n ...source,\n }\n : source;\n const base = normalizeFameNodeConfig({ ...(input ?? {}), type: 'Node' });\n const peersSource = source.peers ?? extrasRecord.peer_configs ?? extrasRecord.peers;\n const peers = normalizePeerConfigs(peersSource);\n const routingPolicyConfig = pickConfigEntry(source.routingPolicy, extrasRecord, 'routing_policy');\n const loadBalancingConfig = pickConfigEntry(source.loadBalancing, extrasRecord, 'load_balancing');\n const stickinessConfig = pickConfigEntry(source.stickiness, extrasRecord, 'stickiness_manager');\n const routeStoreConfig = pickConfigEntry(source.routeStore, extrasRecord, 'route_store');\n const maxAttachTtlSec = pickNumberOption(source.maxAttachTtlSec, extrasRecord, 'max_attach_ttl_sec');\n const bindingAckTimeoutMs = pickNumberOption(source.bindingAckTimeoutMs, extrasRecord, 'binding_ack_timeout_ms');\n const attachTimeoutSec = pickNumberOption(source.attachTimeoutSec, extrasRecord, 'attach_timeout_sec');\n return {\n ...base,\n type: 'Sentinel',\n routingPolicy: routingPolicyConfig,\n loadBalancing: loadBalancingConfig,\n stickiness: stickinessConfig,\n peers,\n maxAttachTtlSec,\n bindingAckTimeoutMs,\n attachTimeoutSec,\n routeStore: routeStoreConfig,\n };\n}\nfunction pickConfigEntry(primary, record, ...aliases) {\n if (primary !== undefined && primary !== null) {\n return primary;\n }\n for (const alias of aliases) {\n if (alias in record) {\n const candidate = record[alias];\n if (candidate === null) {\n return null;\n }\n if (candidate !== undefined) {\n return candidate;\n }\n }\n }\n return null;\n}\nfunction pickNumberOption(primary, record, ...aliases) {\n if (typeof primary === 'number' && Number.isFinite(primary)) {\n return primary;\n }\n if (primary === null) {\n return null;\n }\n for (const alias of aliases) {\n if (!(alias in record)) {\n continue;\n }\n const candidate = record[alias];\n if (candidate === null) {\n return null;\n }\n if (typeof candidate === 'number' && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return null;\n}\nfunction isPlainRecord(value) {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n//# sourceMappingURL=sentinel-config.js.map","import { createDefaultResource, createResource } from '@naylence/factory';\nimport { GRANT_PURPOSE_NODE_ATTACH } from '../grants/grant.js';\nimport { TTL_NEVER_EXPIRES } from '../constants/ttl-constants.js';\nimport { AdmissionClientFactory } from '../node/admission/admission-client-factory.js';\nimport { makeCommonOptions } from '../node/factory-commons.js';\nimport { NODE_LIKE_FACTORY_BASE_TYPE, NodeLikeFactory,\n// registerNodeLikeFactory,\n } from '../node/node-like-factory.js';\nimport { normalizeFameNodeConfig } from '../node/node-config.js';\nimport { TransportListenerFactory } from '../connector/transport-listener-factory.js';\nimport { LoadBalancerStickinessManagerFactory } from '../stickiness/load-balancer-stickiness-manager-factory.js';\nimport { CompositeLoadBalancingStrategy } from './load-balancing/composite-load-balancing-strategy.js';\nimport { StickyLoadBalancingStrategy } from './load-balancing/sticky-load-balancing-strategy.js';\nimport { LOAD_BALANCING_STRATEGY_FACTORY_BASE } from './load-balancing/load-balancing-strategy-factory.js';\nimport { ROUTING_POLICY_FACTORY_BASE, RoutingPolicyFactory, } from './routing-policy.js';\nimport { Peer } from './peer.js';\nimport { Sentinel } from './sentinel.js';\nimport { normalizeSentinelConfig } from './sentinel-config.js';\nimport { RouteStoreFactory, getDefaultRouteStore, } from './store/route-store.js';\nexport const FACTORY_META = {\n base: NODE_LIKE_FACTORY_BASE_TYPE,\n key: 'Sentinel',\n};\nexport class SentinelFactory extends NodeLikeFactory {\n constructor() {\n super(...arguments);\n this.type = 'Sentinel';\n this.priority = 100;\n }\n async create(config) {\n const normalized = normalizeSentinelConfig(config);\n const baseNodeConfig = normalizeFameNodeConfig({\n ...(config ?? {}),\n type: 'Node',\n });\n const components = await makeCommonOptions(baseNodeConfig, config ?? null);\n const eventListeners = [...components.eventListeners];\n const transportListeners = await this.ensureTransportListeners(components.transportListeners, eventListeners);\n const stickinessManager = await this.createStickinessManager(normalized.stickiness, components.keyStore);\n const loadBalancingStrategy = await this.createLoadBalancingStrategy({\n strategyConfig: normalized.loadBalancing,\n stickinessManager,\n });\n const routingPolicy = await this.createRoutingPolicy(normalized.routingPolicy, loadBalancingStrategy);\n const routeStore = await this.resolveRouteStore(normalized.routeStore);\n const peers = await this.createPeers(normalized.peers);\n const serviceConfigs = components.serviceConfigs.filter((service) => Boolean(service && typeof service === 'object'));\n const sentinelOptions = {\n systemId: components.systemId,\n hasParent: components.hasParent,\n acceptedLogicals: components.requestedLogicals,\n requestedLogicals: components.requestedLogicals,\n storageProvider: components.storageProvider,\n deliveryPolicy: components.deliveryPolicy,\n eventListeners,\n admissionClient: components.admissionClient,\n attachClient: components.attachClient,\n securityManager: components.securityManager,\n cryptoProvider: components.cryptoProvider ?? null,\n publicUrl: components.publicUrl ?? null,\n deliveryTracker: components.deliveryTracker,\n bindingStore: components.bindingStore,\n nodeMetaStore: components.nodeMetaStore,\n transportListeners,\n defaultServiceConfigs: serviceConfigs,\n routeStore,\n routingPolicy,\n stickinessManager,\n attachmentKeyValidator: components.attachmentKeyValidator,\n peers,\n };\n if (normalized.maxAttachTtlSec !== undefined) {\n sentinelOptions.maxAttachTtlSec = normalized.maxAttachTtlSec;\n }\n if (normalized.bindingAckTimeoutMs !== null) {\n sentinelOptions.bindingAckTimeoutMs = normalized.bindingAckTimeoutMs;\n }\n return new Sentinel(sentinelOptions);\n }\n async ensureTransportListeners(listeners, eventListeners) {\n const resolved = [...listeners];\n if (!resolved.length) {\n const defaultListener = await TransportListenerFactory.createTransportListener(undefined, eventListeners);\n if (defaultListener) {\n resolved.push(defaultListener);\n this.addEventListenerIfNeeded(defaultListener, eventListeners);\n }\n }\n for (const listener of resolved) {\n this.addEventListenerIfNeeded(listener, eventListeners);\n }\n return resolved;\n }\n addEventListenerIfNeeded(listener, collection) {\n if (!listener || typeof listener !== 'object') {\n return;\n }\n const candidate = listener;\n if (typeof candidate.priority !== 'number') {\n return;\n }\n if (!collection.includes(candidate)) {\n collection.push(candidate);\n collection.sort((a, b) => a.priority - b.priority);\n }\n }\n async createStickinessManager(config, keyProvider) {\n if (!config) {\n return null;\n }\n const manager = await LoadBalancerStickinessManagerFactory.createLoadBalancerStickinessManager(config, {\n factoryArgs: [{ keyProvider }],\n });\n return manager ?? null;\n }\n async createLoadBalancingStrategy(options) {\n const { strategyConfig, stickinessManager } = options;\n const factoryOptions = stickinessManager\n ? { factoryArgs: [{ stickinessManager }], validate: false }\n : { validate: false };\n let strategy = null;\n if (strategyConfig) {\n strategy = await createResource(LOAD_BALANCING_STRATEGY_FACTORY_BASE, strategyConfig, factoryOptions);\n }\n else {\n strategy = await createDefaultResource(LOAD_BALANCING_STRATEGY_FACTORY_BASE, null, factoryOptions);\n }\n if (!strategy) {\n throw new Error('Failed to create load balancing strategy');\n }\n if (!stickinessManager) {\n return strategy;\n }\n const stickyStrategy = new StickyLoadBalancingStrategy(stickinessManager);\n if (strategy instanceof StickyLoadBalancingStrategy) {\n return strategy;\n }\n return new CompositeLoadBalancingStrategy([stickyStrategy, strategy]);\n }\n async createRoutingPolicy(config, loadBalancingStrategy) {\n if (config) {\n const policy = await createResource(ROUTING_POLICY_FACTORY_BASE, config, {\n factoryArgs: [loadBalancingStrategy],\n validate: false,\n });\n if (!policy) {\n throw new Error('Failed to create routing policy from configuration');\n }\n return policy;\n }\n return RoutingPolicyFactory.createRoutingPolicy(loadBalancingStrategy);\n }\n async resolveRouteStore(config) {\n if (config) {\n const store = await RouteStoreFactory.createRouteStore(config);\n if (store) {\n return store;\n }\n }\n return getDefaultRouteStore();\n }\n async createPeers(configs) {\n if (!configs.length) {\n return [];\n }\n const peers = [];\n for (const config of configs) {\n const admissionClient = await this.resolvePeerAdmission(config);\n if (!admissionClient) {\n continue;\n }\n peers.push(new Peer({ admissionClient }));\n }\n return peers;\n }\n async resolvePeerAdmission(config) {\n if (config.admission) {\n return AdmissionClientFactory.createAdmissionClient(config.admission);\n }\n if (!config.directUrl) {\n return null;\n }\n const directAdmissionConfig = {\n type: 'DirectAdmissionClient',\n connectionGrants: [\n {\n type: 'WebSocketConnectionGrant',\n purpose: GRANT_PURPOSE_NODE_ATTACH,\n url: config.directUrl,\n auth: {\n type: 'WebSocketSubprotocolAuth',\n tokenProvider: { type: 'NoneTokenProvider' },\n },\n },\n ],\n ttlSec: TTL_NEVER_EXPIRES,\n };\n return AdmissionClientFactory.createAdmissionClient(directAdmissionConfig);\n }\n}\n// registerNodeLikeFactory(\"Sentinel\", SentinelFactory as unknown as new () => SentinelFactory);\nexport default SentinelFactory;\n//# sourceMappingURL=sentinel-factory.js.map","/**\n * NoopFlowController - Flow control stub that provides infinite credits\n *\n * Used when flow control is disabled. Behaves as if infinite credits exist\n * for all flow IDs, so operations never block on credit availability.\n */\n/**\n * Internal flow controller that provides infinite credits for all flows.\n * Used when BaseAsyncConnector is configured without flow control.\n */\nexport class _NoopFlowController {\n constructor() {\n this._infiniteCredits = 1000000;\n }\n /**\n * Always resolves immediately - infinite credits available.\n */\n async acquire(_flowId) {\n return Promise.resolve();\n }\n /**\n * Returns infinite credits (delta ignored).\n */\n addCredits(_flowId, _delta) {\n return this._infiniteCredits;\n }\n /**\n * Always returns infinite credits.\n */\n getCredits(_flowId) {\n return this._infiniteCredits;\n }\n /**\n * Always returns infinite credits (credits consumed ignored).\n */\n consume(_flowId, _credits = 1) {\n return this._infiniteCredits;\n }\n /**\n * Never needs refill - infinite credits available.\n */\n needsRefill(_flowId) {\n return false;\n }\n}\n//# sourceMappingURL=noop-flow-controller.js.map","/**\n * BaseAsyncConnector - Abstract async transport adapter with optional flow control\n *\n * Enhanced connector with cleaner shutdown, better back-pressure reporting,\n * and richer metrics/logging. Maintains backwards compatibility with subclasses.\n */\n/**\n * Error thrown when a task is cancelled during shutdown - not a critical error\n */\nexport class TaskCancellationError extends Error {\n constructor(message = 'Task cancelled') {\n super(message);\n this.name = 'TaskCancellationError';\n }\n}\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { FlowController } from '../channel/flow-controller.js';\nimport { _NoopFlowController } from './noop-flow-controller.js';\nimport { getLogger } from '../util/logging.js';\nimport { color, AnsiColor } from '../util/formatter.js';\nimport { withEnvelopeContextAsync } from '../util/envelope-context.js';\nimport { formatTimestampForConsole, isEnvelopeLoggingEnabled, prettyModel, } from '../util/util.js';\nimport { ConnectorState, ConnectorStateUtils, createFameEnvelope, generateId, FlowFlags, FameResponseType, } from '@naylence/core';\nimport { FameMessageTooLarge, FameTransportClose, BackPressureFull, } from '../errors/errors.js';\nconst logger = getLogger('naylence.fame.connector.base_async_connector');\n// Environment variables\nconst ENV_VAR_FAME_FLOW_CONTROL = 'FAME_FLOW_CONTROL';\nconst FLOW_CONTROL_ENABLED = typeof process !== 'undefined' && process?.env\n ? process.env[ENV_VAR_FAME_FLOW_CONTROL] !== '0'\n : true;\nconst FAME_MAX_MESSAGE_SIZE = 1024 * 256;\n/**\n * Abstract base class for async transport adapters with optional flow control.\n *\n * Provides:\n * - Async send/receive loops with proper error handling\n * - Optional credit-based flow control\n * - Graceful shutdown with task cleanup\n * - Back-pressure management\n * - Metrics and logging integration\n */\nexport class BaseAsyncConnector extends TaskSpawner {\n constructor(config = {}) {\n super(config.taskSpawner);\n // Send queue for outbound messages\n this._sendQueue = [];\n this._sendLoopShutdown = false; // Flag to indicate send loop should stop\n this._closed = false;\n // Connector state management\n this._state = ConnectorState.INITIALIZED;\n this._maxQueueSize = config.maxQueueSize ?? 1000;\n this._metrics = config.metricsEmitter;\n this._initialWindow = config.initialWindow ?? 32;\n this._connectorFlowId = generateId();\n this._authorizationContext = config.authorizationContext;\n // Initialize shutdown timeouts\n this._shutdownGracePeriod = config.shutdownTimeouts?.gracePeriod ?? 2.0;\n this._shutdownJoinTimeout = config.shutdownTimeouts?.joinTimeout ?? 1000;\n // Initialize flow control\n const useFlowControl = config.flowControl ?? FLOW_CONTROL_ENABLED;\n if (useFlowControl) {\n this._flowCtrl = new FlowController(this._initialWindow);\n this._fcEnabled = true;\n }\n else {\n this._flowCtrl = new _NoopFlowController();\n this._fcEnabled = false;\n }\n }\n // ---------------------------------------------------------------------\n // State Management Properties\n // ---------------------------------------------------------------------\n /** Get the current connector state */\n get state() {\n return this._state;\n }\n /** Get the current connector state (alias for compatibility) */\n get connectorState() {\n return this._state;\n }\n /** Get the close code if connector was closed */\n get closeCode() {\n return this._closeCode;\n }\n /** Get the close reason if connector was closed */\n get closeReason() {\n return this._closeReason;\n }\n /** Get the last error that occurred */\n get lastError() {\n return this._lastError;\n }\n /** Get the current authorization context */\n get authorizationContext() {\n return this._authorizationContext;\n }\n /** Set the authorization context */\n set authorizationContext(context) {\n this._authorizationContext = context;\n }\n /**\n * Update the connector state and log the transition\n */\n _setState(newState) {\n if (this._state !== newState) {\n const oldState = this._state;\n this._state = newState;\n logger.debug('connector_state_transition', {\n connector_id: this._connectorFlowId,\n old_state: oldState,\n new_state: newState,\n });\n }\n }\n // ---------------------------------------------------------------------\n // Lifecycle Methods\n // ---------------------------------------------------------------------\n /**\n * Start the connector with an inbound message handler\n */\n async start(inboundHandler) {\n if (!ConnectorStateUtils.canStart(this._state)) {\n if (this._state === ConnectorState.STARTED) {\n throw new Error('Connector already started');\n }\n throw new Error(`Cannot start connector in state: ${this._state}`);\n }\n if (this._handler !== undefined) {\n throw new Error('Connector already started');\n }\n this._handler = inboundHandler;\n // Start background tasks\n this.spawn((signal) => this._sendLoop(signal), { name: 'send-loop' });\n this.spawn((signal) => this._receiveLoop(signal), { name: 'receive-loop' });\n this._setState(ConnectorState.STARTED);\n }\n /**\n * Replace the current message handler\n */\n async replaceHandler(handler) {\n this._handler = handler;\n }\n /**\n * Stop the connector gracefully\n */\n async stop() {\n if (!ConnectorStateUtils.canStop(this._state)) {\n logger.debug('connector_stop_already_stopped', {\n current_state: this._state,\n connector_id: this._connectorFlowId,\n });\n return;\n }\n this._setState(ConnectorState.STOPPED);\n await this._shutdown(1000, 'normal closure');\n if (this._lastError) {\n throw this._lastError;\n }\n }\n /**\n * Close the connector with optional code and reason\n */\n async close(code = 1000, reason = 'normal closure') {\n if (!ConnectorStateUtils.canClose(this._state)) {\n logger.warning('connector_close_invalid_state', {\n current_state: this._state,\n connector_id: this._connectorFlowId,\n });\n return;\n }\n this._setState(ConnectorState.CLOSED);\n await this._shutdown(code, reason);\n if (this._lastError) {\n throw this._lastError;\n }\n }\n /**\n * Wait until the connector is closed\n */\n async waitUntilClosed() {\n if (!this._closePromise) {\n this._closePromise = new Promise((resolve) => {\n this._closeResolver = resolve;\n });\n }\n await this._closePromise;\n }\n /**\n * Push data to the receive queue for processing.\n * Subclasses should implement this to handle incoming data.\n */\n async pushToReceive(_rawOrEnvelope) {\n throw new Error('Subclasses must implement pushToReceive()');\n }\n // Backwards compatibility alias\n async _receiveLoop(signal) {\n return this._recvLoop(signal);\n }\n // ---------------------------------------------------------------------\n // Public Send Method\n // ---------------------------------------------------------------------\n /**\n * Send a FAME envelope through the transport\n */\n async send(envelope) {\n if (this._closed) {\n throw new FameTransportClose('Connection closed', 1006);\n }\n // Apply flow control if enabled and not a credit update\n if (this._fcEnabled &&\n !(envelope.frame &&\n 'flow_id' in envelope.frame &&\n 'credits' in envelope.frame)) {\n const flowId = envelope.flowId || this._connectorFlowId;\n envelope.flowId = flowId;\n const t0 = this._metrics ? performance.now() : 0;\n await this._flowCtrl.acquire(flowId);\n if (this._metrics) {\n this._metrics.histogram('connector.acquire_latency', performance.now() - t0, {\n flow_id: flowId,\n });\n }\n // Set sequence ID and flow flags if using real flow controller\n if (this._flowCtrl instanceof FlowController) {\n const [wnd, flags] = this._flowCtrl.nextWindow(flowId);\n envelope.seqId = wnd;\n envelope.flowFlags = (envelope.flowFlags || FlowFlags.NONE) | flags;\n }\n }\n // Serialize envelope\n const raw = new TextEncoder().encode(JSON.stringify(envelope));\n const rawSize = raw.length;\n if (rawSize > FAME_MAX_MESSAGE_SIZE) {\n throw new FameMessageTooLarge(`Message size ${rawSize} exceeds maximum ${FAME_MAX_MESSAGE_SIZE}`);\n }\n // Check queue capacity before adding for backpressure\n if (this._sendQueue.length >= this._maxQueueSize) {\n const depth = this._sendQueue.length;\n throw new BackPressureFull(`send-queue full (${depth}/${this._maxQueueSize})`);\n }\n // Add to queue and notify send loop\n this._sendQueue.push(raw);\n // Log for debugging\n logger.debug('send_envelope_queued', {\n queue_length: this._sendQueue.length,\n max_queue_size: this._maxQueueSize,\n });\n this._wakeUpSendLoop();\n if (this._metrics) {\n this._metrics.gauge('connector.send_queue_depth', this._sendQueue.length, {\n connector: this.constructor.name,\n });\n }\n }\n /**\n * Wake up the send loop to process queued items\n */\n _wakeUpSendLoop() {\n if (this._sendPromiseResolve) {\n this._sendPromiseResolve();\n this._sendPromiseResolve = undefined;\n }\n }\n /**\n * Internal send loop that processes the send queue\n */\n async _sendLoop(signal) {\n try {\n while (!this._closed && !this._sendLoopShutdown && !signal?.aborted) {\n // Wait for data in queue with cancellation support\n while (this._sendQueue.length === 0 &&\n !this._closed &&\n !this._sendLoopShutdown &&\n !signal?.aborted) {\n await new Promise((resolve, reject) => {\n // Remove redundant signal check - the event listener handles it\n this._sendPromiseResolve = resolve;\n const timeoutId = setTimeout(resolve, 100); // Fallback timeout\n // Listen for cancellation\n const abortHandler = () => {\n clearTimeout(timeoutId);\n reject(new TaskCancellationError());\n };\n signal?.addEventListener('abort', abortHandler, { once: true });\n });\n }\n if (this._closed || signal?.aborted)\n break;\n // Look at the first item without removing it yet\n const item = this._sendQueue[0];\n if (!item)\n continue;\n logger.debug('send_loop_processing_item', {\n queue_length_before_send: this._sendQueue.length,\n });\n // Send through transport (this may block)\n await this._transportSendBytes(item);\n // Only remove from queue after successful send\n this._sendQueue.shift();\n logger.debug('send_loop_item_sent', {\n queue_length_after_send: this._sendQueue.length,\n });\n }\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n const code = error.code ?? 1006;\n const reason = error.message;\n await this._shutdown(code, reason, undefined, error);\n }\n else if (error instanceof TaskCancellationError) {\n // Task cancellation is expected during shutdown - log as debug, not critical\n logger.debug('send loop cancelled', {\n connector: this.constructor.name,\n reason: error.message,\n });\n // Don't re-throw - this is normal during shutdown\n }\n else {\n logger.critical('unexpected exception in send loop', {\n connector: this.constructor.name,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n }\n /**\n * Internal receive loop that processes incoming messages\n */\n async _recvLoop(signal) {\n if (!this._handler) {\n throw new Error('Handler not set');\n }\n try {\n while (!this._closed && !signal?.aborted) {\n // Remove redundant signal check - loop condition handles it\n const message = await this._transportReceive();\n let messageContext;\n let env;\n // Parse the incoming message\n if (message && typeof message === 'object' && 'envelope' in message) {\n // FameChannelMessage\n const channelMsg = message;\n env = channelMsg.envelope;\n messageContext = channelMsg.context;\n }\n else if (message &&\n typeof message === 'object' &&\n 'frame' in message) {\n // FameEnvelope\n env = message;\n }\n else if (message instanceof Uint8Array) {\n // Raw bytes - parse as JSON\n try {\n const jsonStr = new TextDecoder().decode(message);\n env = JSON.parse(jsonStr);\n }\n catch (error) {\n logger.error('Invalid envelope', {\n message: message.toString(),\n error: error instanceof Error ? error.message : String(error),\n });\n continue;\n }\n }\n else if (message instanceof FameTransportClose) {\n // Transport close - initiate shutdown\n const code = message.code ?? 1006;\n const reason = message.message;\n await this._shutdownWithError(message, code, reason);\n return;\n }\n else {\n throw new Error(`Expected FameEnvelope, Uint8Array, or FameTransportClose, got ${typeof message}`);\n }\n // Process the envelope\n const envelopeContext = {\n ...(env.traceId && { trace_id: env.traceId }),\n ...(env.flowId && { flow_id: env.flowId }),\n };\n await withEnvelopeContextAsync(envelopeContext, async () => {\n const prettyEnvelope = prettyModel(env);\n logger.trace('connector_received_envelope', {\n envelope: env,\n pretty: prettyEnvelope,\n });\n if (isEnvelopeLoggingEnabled()) {\n console.log(`\\n${formatTimestampForConsole()} - ${color('Received envelope 📨', AnsiColor.BLUE)}\\n${prettyEnvelope}`);\n }\n // Handle credit updates\n if (env.frame && env.frame.type === 'CreditUpdate') {\n const creditFrame = env.frame;\n this._flowCtrl.addCredits(creditFrame.flowId, creditFrame.credits);\n return;\n }\n // Deliver to handler\n const context = messageContext || {\n fromConnector: this,\n expectedResponseType: FameResponseType.NONE,\n };\n await this._handler(env, context);\n // Consume credit and emit refill if needed\n const flowId = env.flowId || this._connectorFlowId;\n this._flowCtrl.consume(flowId);\n await this._maybeEmitCredit(flowId, env.traceId);\n });\n }\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n const code = error.code ?? 1006;\n const reason = error.message;\n await this._shutdown(code, reason, undefined, error);\n }\n else if (error instanceof TaskCancellationError) {\n // Task cancellation is expected during shutdown - log as debug, not critical\n logger.debug('receive loop cancelled', {\n connector: this.constructor.name,\n reason: error.message,\n });\n // Don't re-throw - this is normal during shutdown\n }\n else {\n logger.critical('unexpected_error_in recv_loop', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n }\n // ---------------------------------------------------------------------\n // Credit Management\n // ---------------------------------------------------------------------\n /**\n * Emit credit update if flow control needs refill\n */\n async _maybeEmitCredit(flowId, traceId) {\n if (!this._flowCtrl.needsRefill(flowId)) {\n return;\n }\n const delta = this._initialWindow;\n this._flowCtrl.addCredits(flowId, delta);\n const ackEnv = createFameEnvelope({\n ...(traceId && { traceId }),\n flowId,\n windowId: 0,\n frame: {\n type: 'CreditUpdate',\n flowId: flowId,\n credits: delta,\n },\n flags: FlowFlags.ACK,\n });\n await this.send(ackEnv);\n }\n // ---------------------------------------------------------------------\n // Shutdown Management\n // ---------------------------------------------------------------------\n /**\n * Shutdown the connector due to an error\n */\n async _shutdownWithError(exc, code = 1006, reason) {\n const errorReason = reason || `${exc.constructor.name}: ${exc.message}`;\n await this._shutdown(code, errorReason, undefined, exc);\n }\n /**\n * Internal shutdown implementation\n */\n async _shutdown(code, reason, gracePeriod, exc) {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this._closeCode = code;\n this._closeReason = reason;\n // Use provided gracePeriod or fall back to configured value\n const effectiveGracePeriod = gracePeriod ?? this._shutdownGracePeriod;\n if (exc) {\n this._lastError = exc;\n }\n // Set final state if not already stopped/closed\n if (this._state !== ConnectorState.STOPPED &&\n this._state !== ConnectorState.CLOSED) {\n this._setState(ConnectorState.CLOSED);\n }\n // Stop send loop using shutdown flag\n this._sendLoopShutdown = true;\n // Wake up the send loop if it's waiting\n if (this._sendPromiseResolve) {\n this._sendPromiseResolve();\n this._sendPromiseResolve = undefined;\n }\n // Close transport\n await this._transportClose(code, reason);\n // Shutdown spawned tasks\n try {\n await this.shutdownTasks({\n gracePeriod: effectiveGracePeriod * 1000, // Convert to milliseconds\n joinTimeout: this._shutdownJoinTimeout,\n });\n }\n catch (error) {\n logger.warning('task_shutdown_error', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n // Handle last spawner error\n if (this.lastSpawnerError) {\n this._lastError = this._lastError || this.lastSpawnerError;\n }\n // Resolve close promise\n if (this._closeResolver) {\n this._closeResolver();\n }\n }\n /**\n * Close the underlying transport\n */\n async _transportClose(_code, _reason) {\n // Default implementation does nothing - subclasses can override\n }\n}\n//# sourceMappingURL=base-async-connector.js.map","/**\n * Base class for connector settings.\n *\n * • Never serialized to the wire\n * • Contains runtime knobs (queue sizes, timeouts, TLS flags, etc.)\n * • Used by connector factories to configure connectors in this process\n */\n/**\n * Default values for connector configuration\n */\nexport const ConnectorConfigDefaults = {\n durable: false,\n};\n/**\n * Type guard to check if an object is a valid ConnectorConfig\n */\nexport function isConnectorConfig(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n const config = obj;\n return typeof config.type === 'string';\n}\n/**\n * Utility function to create a connector config with defaults applied\n */\nexport function createConnectorConfig(config) {\n return {\n ...ConnectorConfigDefaults,\n ...config,\n };\n}\n//# sourceMappingURL=connector-config.js.map","/**\n * WebSocket Connector Implementation\n *\n * A transport adapter that works with both Node.js and browser WebSocket APIs.\n * Supports both native WebSocket clients and server-side WebSocket connections.\n */\nimport { BaseAsyncConnector, } from './base-async-connector.js';\nimport { FameTransportClose } from '../errors/errors.js';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.connector.websocket_connector');\n/**\n * WebSocket state constants (mirrors standard WebSocket states)\n */\nexport const WebSocketState = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n};\n/**\n * A transport adapter that can work with either:\n * • Browser WebSocket API\n * • Node.js ws library WebSocket\n * • Server-side WebSocket connections (with FastAPI-like interface)\n */\nexport class WebSocketConnector extends BaseAsyncConnector {\n constructor(websocket, config = { type: 'websocket' }) {\n const normalizedConfig = { ...config };\n // Ensure the connector type is always set for factory compatibility\n if (!normalizedConfig.type) {\n normalizedConfig.type = 'websocket';\n }\n const legacyAuthContext = config.authorization_context;\n if (legacyAuthContext !== undefined &&\n normalizedConfig.authorizationContext === undefined) {\n normalizedConfig.authorizationContext = legacyAuthContext;\n }\n super(normalizedConfig);\n this._authHeader = null;\n this._receiveQueue = [];\n this._receiveWaiters = [];\n this._receiveHandlersAttached = false;\n this._removeReceiveHandlers = null;\n this._terminateFallbackTimer = null;\n this._websocket = websocket;\n // Detect if this is a FastAPI-like server WebSocket\n this._isFastApiLike = !!(websocket.receive_bytes &&\n websocket.send_bytes &&\n typeof websocket.receive_bytes === 'function' &&\n typeof websocket.send_bytes === 'function');\n logger.debug('websocket_connector_created', {\n is_fastapi_like: this._isFastApiLike,\n ready_state: websocket.readyState,\n url: websocket.url,\n });\n // For non-FastAPI WebSockets (browser/Node.js ws), attach receive handlers immediately\n // to avoid race conditions where messages arrive before the first _transportReceive() call\n if (!this._isFastApiLike) {\n this._ensureReceiveHandlers();\n }\n }\n /**\n * Update the Authorization header associated with this connector, if provided.\n * For WebSocket transports the header is primarily used during the initial\n * handshake; the stored value is retained for observability or refresh logic.\n */\n setAuthHeader(value) {\n if (typeof value === 'string') {\n this._authHeader = value.trim();\n }\n }\n /**\n * Retrieve the most recently applied Authorization header value, if any.\n */\n get authHeader() {\n return this._authHeader;\n }\n /**\n * Push data to the receive queue for processing (override from base class).\n * This is used to replay buffered messages after authentication.\n */\n async pushToReceive(rawOrEnvelope) {\n // Convert to Uint8Array if needed\n let data;\n if (rawOrEnvelope instanceof Uint8Array) {\n data = rawOrEnvelope;\n }\n else {\n // FameEnvelope or FameChannelMessage - serialize to JSON bytes\n const jsonStr = JSON.stringify(rawOrEnvelope);\n data = new TextEncoder().encode(jsonStr);\n }\n // Push to receive queue - if there's a waiter, resolve it immediately\n if (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.resolve(data);\n }\n else {\n this._receiveQueue.push(data);\n }\n logger.debug('websocket_message_pushed_to_queue', {\n queueLength: this._receiveQueue.length,\n waitersLength: this._receiveWaiters.length,\n });\n }\n // ---------------------------------------------------------------------\n // Transport Implementation\n // ---------------------------------------------------------------------\n /**\n * Send raw bytes through the WebSocket transport\n */\n async _transportSendBytes(data) {\n try {\n if (this._isFastApiLike && this._websocket.send_bytes) {\n // FastAPI-style server WebSocket\n this._websocket.send_bytes(data);\n }\n else {\n // Browser WebSocket or Node.js ws client\n this._websocket.send(data);\n }\n }\n catch (error) {\n // Handle WebSocket disconnection errors\n if (this._isWebSocketDisconnectError(error)) {\n const closeCode = this._extractCloseCode(error);\n const reason = this._extractCloseReason(error) || 'peer closed';\n throw new FameTransportClose(reason, closeCode);\n }\n throw error;\n }\n }\n /**\n * Receive bytes from the WebSocket with enhanced error handling and cancellation safety\n */\n async _transportReceive() {\n try {\n // Validate WebSocket object before attempting to receive\n if (!this._websocket) {\n throw new FameTransportClose('WebSocket object is null', 1006);\n }\n // Use a timeout to prevent hanging during shutdown scenarios\n const receiveTimeout = 30000; // 30 seconds\n if (this._isFastApiLike && this._websocket.receive_bytes) {\n // FastAPI-style server WebSocket\n const receiveMethod = this._websocket.receive_bytes;\n if (typeof receiveMethod !== 'function') {\n throw new FameTransportClose('FastAPI WebSocket receive_bytes method not available', 1006);\n }\n const result = receiveMethod.call(this._websocket);\n // Ensure we have a Promise\n if (!result || typeof result.then !== 'function') {\n logger.error('fastapi_receive_not_awaitable', {\n result_type: typeof result,\n result_str: String(result).substring(0, 100),\n });\n throw new FameTransportClose(`FastAPI receive_bytes returned non-awaitable: ${typeof result}`, 1006);\n }\n // Add timeout protection\n try {\n return await this._withTimeout(result, receiveTimeout);\n }\n catch (error) {\n if (error instanceof Error && error.name === 'TimeoutError') {\n throw new FameTransportClose('FastAPI receive_bytes timed out', 1006);\n }\n // Handle known WebSocket shutdown race condition\n if (this._isAwaitFutureError(error)) {\n logger.debug('websocket_shutdown_race_condition_handled', {\n note: 'Normal WebSocket close timing - converting to cancellation',\n websocket_state: this._websocket.client_state || 'unknown',\n });\n throw new FameTransportClose('WebSocket cancelled during receive operation', 1006);\n }\n throw error;\n }\n }\n else {\n // Browser WebSocket or Node.js ws client - buffered approach to avoid message loss\n this._ensureReceiveHandlers();\n if (this._receiveQueue.length > 0) {\n return this._receiveQueue.shift();\n }\n return await new Promise((resolve, reject) => {\n const waiter = {\n resolve: (value) => {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n resolve(value);\n },\n reject: (reason) => {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n reject(reason);\n },\n };\n waiter.timeoutId = setTimeout(() => {\n const index = this._receiveWaiters.indexOf(waiter);\n if (index !== -1) {\n this._receiveWaiters.splice(index, 1);\n }\n waiter.reject(new FameTransportClose('WebSocket receive timed out', 1006));\n }, receiveTimeout);\n this._receiveWaiters.push(waiter);\n });\n }\n }\n catch (error) {\n if (this._isAwaitFutureError(error)) {\n logger.debug('websocket_shutdown_race_condition_detected', {\n websocket_type: this._websocket.constructor.name,\n is_fastapi: this._isFastApiLike,\n note: 'Normal WebSocket close timing during shutdown',\n });\n throw new FameTransportClose('WebSocket cancelled during receive operation', 1006);\n }\n if (this._isWebSocketDisconnectError(error)) {\n const closeCode = this._extractCloseCode(error);\n const reason = this._extractCloseReason(error) || 'peer closed';\n throw new FameTransportClose(reason, closeCode);\n }\n throw error;\n }\n }\n /**\n * Close the underlying WebSocket transport\n */\n async _transportClose(code, reason) {\n try {\n if (this._isFastApiLike) {\n // FastAPI-style WebSocket has explicit state tracking\n const websocketState = this._websocket.client_state;\n if (websocketState === 'CONNECTED' || websocketState === 1) {\n await this._websocket.close?.(code, reason);\n }\n }\n else {\n // Browser/Node.js WebSocket\n if (this._websocket.readyState === WebSocketState.OPEN) {\n this._websocket.close(code, reason);\n }\n // In Node.js environments (ws library) close() performs a graceful shutdown that\n // may defer socket termination until the peer responds. When shutting down tests we\n // need connections to close promptly to avoid hanging receive loops. If terminate()\n // is available, schedule a fallback to forcefully tear down the socket after a short\n // delay in case the graceful close does not complete in time.\n if (typeof this._websocket.terminate === 'function') {\n const socketAny = this._websocket;\n if (socketAny.readyState !== WebSocketState.CLOSED &&\n this._terminateFallbackTimer === null) {\n this._terminateFallbackTimer = setTimeout(() => {\n this._terminateFallbackTimer = null;\n if (socketAny.readyState !== WebSocketState.CLOSED) {\n try {\n socketAny.terminate();\n logger.debug('websocket_force_terminated', {\n ready_state: socketAny.readyState,\n });\n }\n catch (error) {\n logger.debug('websocket_force_terminate_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }, 250);\n }\n }\n }\n }\n catch (error) {\n logger.error('websocket_close_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n // Don't re-throw - close errors are not critical during shutdown\n }\n finally {\n // If we're shutting down proactively, ensure any pending receivers are released\n this._rejectPendingWaiters(new FameTransportClose(reason, code));\n this._detachReceiveHandlers({ cancelTerminateFallback: false });\n }\n }\n // ---------------------------------------------------------------------\n // Utility Methods\n // ---------------------------------------------------------------------\n /**\n * Check if an error is a WebSocket disconnection error\n */\n _isWebSocketDisconnectError(error) {\n if (error instanceof Error) {\n // Common WebSocket error patterns\n const message = error.message.toLowerCase();\n return (message.includes('websocket') &&\n (message.includes('disconnect') ||\n message.includes('closed') ||\n message.includes('connection') ||\n error.name === 'WebSocketDisconnect'));\n }\n return false;\n }\n /**\n * Check if an error is the \"await wasn't used with future\" error\n */\n _isAwaitFutureError(error) {\n return (error instanceof Error &&\n error.message.includes(\"await wasn't used with future\"));\n }\n /**\n * Extract close code from WebSocket error\n */\n _extractCloseCode(error) {\n if (error && typeof error === 'object') {\n const code = error.code;\n if (typeof code === 'number') {\n return code;\n }\n }\n return 1006; // Default to abnormal closure\n }\n /**\n * Extract close reason from WebSocket error\n */\n _extractCloseReason(error) {\n if (error instanceof Error) {\n return error.message;\n }\n if (error && typeof error === 'object') {\n const reason = error.reason;\n if (typeof reason === 'string') {\n return reason;\n }\n }\n return '';\n }\n /**\n * Add timeout protection to a Promise\n */\n async _withTimeout(promise, timeoutMs) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n const error = new Error('Operation timed out');\n error.name = 'TimeoutError';\n reject(error);\n }, timeoutMs);\n promise\n .then((result) => {\n clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n _ensureReceiveHandlers() {\n if (this._receiveHandlersAttached) {\n return;\n }\n const handleMessage = (data, isBinary) => {\n try {\n const payload = this._normalizeIncomingMessage(data, isBinary);\n if (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.resolve(payload);\n }\n else {\n this._receiveQueue.push(payload);\n }\n }\n catch (error) {\n this._rejectPendingWaiters(error instanceof Error ? error : new Error(String(error)));\n }\n };\n const handleClose = (event, rawReason) => {\n let code;\n let reason;\n if (typeof event === 'number') {\n code = event;\n if (typeof rawReason === 'string') {\n reason = rawReason;\n }\n else if (typeof Buffer !== 'undefined' &&\n Buffer.isBuffer?.(rawReason)) {\n reason = rawReason.toString();\n }\n else {\n reason = 'peer closed';\n }\n }\n else {\n code = typeof event?.code === 'number' ? event.code : 1006;\n if (typeof event?.reason === 'string') {\n reason = event.reason;\n }\n else if (typeof Buffer !== 'undefined' &&\n Buffer.isBuffer?.(event?.reason)) {\n reason = event.reason.toString();\n }\n else {\n reason = 'peer closed';\n }\n }\n // Immediately initiate shutdown to prevent sending on closed socket\n // This ensures _closed flag is set before any send attempts\n const error = new FameTransportClose(reason, code);\n this._rejectPendingWaiters(error);\n this._detachReceiveHandlers();\n // Trigger shutdown asynchronously to set _closed flag immediately\n // Use void to explicitly ignore the promise (shutdown is fire-and-forget here)\n void this['_shutdown'](code, reason, undefined, error);\n };\n const handleError = (event) => {\n const candidate = event?.error ?? event;\n const message = candidate instanceof Error\n ? candidate.message\n : (candidate?.message ?? 'WebSocket error');\n this._rejectPendingWaiters(new FameTransportClose(String(message), 1006));\n this._detachReceiveHandlers();\n };\n const socketAny = this._websocket;\n if (typeof socketAny.addEventListener === 'function') {\n const messageListener = (event) => {\n handleMessage(event?.data ?? event, event?.isBinary);\n };\n const closeListener = (event) => handleClose(event);\n const errorListener = (event) => handleError(event);\n socketAny.addEventListener('message', messageListener);\n socketAny.addEventListener('close', closeListener);\n socketAny.addEventListener('error', errorListener);\n this._removeReceiveHandlers = () => {\n socketAny.removeEventListener('message', messageListener);\n socketAny.removeEventListener('close', closeListener);\n socketAny.removeEventListener('error', errorListener);\n };\n }\n else if (typeof socketAny.on === 'function') {\n const onMessageHandler = (data, isBinary) => {\n handleMessage(data, isBinary);\n };\n socketAny.on('message', onMessageHandler);\n socketAny.on('close', handleClose);\n socketAny.on('error', handleError);\n this._removeReceiveHandlers = () => {\n if (typeof socketAny.off === 'function') {\n socketAny.off('message', onMessageHandler);\n socketAny.off('close', handleClose);\n socketAny.off('error', handleError);\n }\n else if (typeof socketAny.removeListener === 'function') {\n socketAny.removeListener('message', onMessageHandler);\n socketAny.removeListener('close', handleClose);\n socketAny.removeListener('error', handleError);\n }\n };\n }\n else {\n const messageHandler = (event) => handleMessage(event?.data ?? event, event?.isBinary);\n const closeHandler = (event) => handleClose(event);\n const errorHandler = (event) => handleError(event);\n this._websocket.onmessage = messageHandler;\n this._websocket.onclose = closeHandler;\n this._websocket.onerror = errorHandler;\n this._removeReceiveHandlers = () => {\n if (this._websocket.onmessage === messageHandler) {\n this._websocket.onmessage = null;\n }\n if (this._websocket.onclose === closeHandler) {\n this._websocket.onclose = null;\n }\n if (this._websocket.onerror === errorHandler) {\n this._websocket.onerror = null;\n }\n };\n }\n this._receiveHandlersAttached = true;\n }\n _detachReceiveHandlers(options = {}) {\n const { cancelTerminateFallback = true } = options;\n if (cancelTerminateFallback && this._terminateFallbackTimer !== null) {\n clearTimeout(this._terminateFallbackTimer);\n this._terminateFallbackTimer = null;\n }\n if (this._removeReceiveHandlers) {\n try {\n this._removeReceiveHandlers();\n }\n catch (error) {\n logger.debug('websocket_remove_handlers_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n this._removeReceiveHandlers = null;\n }\n this._receiveHandlersAttached = false;\n }\n _normalizeIncomingMessage(data, isBinary) {\n if (data instanceof Uint8Array) {\n return data;\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer?.(data)) {\n return new Uint8Array(data);\n }\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n if (typeof data === 'string' && !isBinary) {\n return new TextEncoder().encode(data);\n }\n if (typeof data === 'string') {\n return new TextEncoder().encode(data);\n }\n if (data &&\n typeof data === 'object' &&\n 'data' in data) {\n return this._normalizeIncomingMessage(data.data, data.isBinary ?? isBinary);\n }\n throw new FameTransportClose(`Unsupported data type: ${typeof data}`, 1003);\n }\n _rejectPendingWaiters(error) {\n while (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.reject(error);\n }\n this._receiveQueue.length = 0;\n }\n}\n//# sourceMappingURL=websocket-connector.js.map","import { FameFabric, FameServiceProxy, } from '@naylence/core';\nconst RPC_REGISTRY = Symbol('naylence.rpc.registry');\nfunction isPlainObject(value) {\n return Boolean(value &&\n typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Object]');\n}\nfunction getOrCreateRegistry(ctor) {\n if (!ctor[RPC_REGISTRY]) {\n const parentRegistry = ctor.__proto__?.[RPC_REGISTRY];\n ctor[RPC_REGISTRY] = parentRegistry\n ? new Map(parentRegistry)\n : new Map();\n }\n return ctor[RPC_REGISTRY];\n}\nfunction normalizeParams(params) {\n if (!params || typeof params !== 'object') {\n return { positional: [], keyword: {} };\n }\n const positional = Array.isArray(params.args) ? [...params.args] : [];\n const keyword = isPlainObject(params.kwargs) ? { ...params.kwargs } : {};\n if (positional.length === 0 &&\n Object.keys(keyword).length === 0 &&\n isPlainObject(params)) {\n return { positional: [], keyword: { ...params } };\n }\n return { positional, keyword };\n}\nexport function operation(targetOrOptions, propertyKey, descriptor) {\n if (typeof propertyKey === 'string' || typeof propertyKey === 'symbol') {\n const decorator = createDecorator();\n decorator(targetOrOptions, propertyKey, descriptor);\n return;\n }\n const options = (targetOrOptions ?? {});\n return createDecorator(options);\n}\nfunction createDecorator(options = {}) {\n return (target, propertyKey, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new TypeError('@operation can only be applied to methods');\n }\n const ctor = target.constructor;\n const registry = getOrCreateRegistry(ctor);\n const rpcName = options.name ?? propertyKey;\n registry.set(rpcName, {\n propertyKey: propertyKey,\n streaming: Boolean(options.streaming),\n });\n };\n}\nexport class RpcMixin {\n static get rpcRegistry() {\n return getOrCreateRegistry(this);\n }\n getRpcRegistry() {\n return this.constructor.rpcRegistry;\n }\n async handleRpcRequest(method, params) {\n const registry = this.getRpcRegistry();\n const entry = registry.get(method);\n if (!entry) {\n throw new Error(`Unknown RPC method: ${method}`);\n }\n const handler = this[entry.propertyKey];\n if (typeof handler !== 'function') {\n throw new TypeError(`RPC handler '${entry.propertyKey}' is not callable`);\n }\n const { positional, keyword } = normalizeParams(params);\n const args = [...positional];\n if (Object.keys(keyword).length > 0) {\n args.push(keyword);\n }\n try {\n const result = handler.apply(this, args);\n if (entry.streaming) {\n return result;\n }\n return await result;\n }\n catch (error) {\n throw error;\n }\n }\n}\nfunction extractStreamFlag(args) {\n if (args.length === 0) {\n return { stream: false, args };\n }\n const last = args[args.length - 1];\n if (isPlainObject(last) &&\n Object.prototype.hasOwnProperty.call(last, '_stream')) {\n const { _stream, ...rest } = last;\n const cleanedArgs = [...args.slice(0, -1)];\n if (Object.keys(rest).length > 0) {\n cleanedArgs.push(rest);\n }\n return { stream: Boolean(_stream), args: cleanedArgs };\n }\n if (args.length === 1 &&\n isPlainObject(args[0]) &&\n Object.prototype.hasOwnProperty.call(args[0], '_stream')) {\n const { _stream, ...rest } = args[0];\n return {\n stream: Boolean(_stream),\n args: Object.keys(rest).length ? [rest] : [],\n };\n }\n return { stream: false, args };\n}\nfunction wrapRpcProxy(target) {\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (typeof prop === 'string' &&\n !prop.startsWith('_') &&\n !(prop in target)) {\n return async (...rawArgs) => {\n const { stream, args } = extractStreamFlag(rawArgs);\n let params;\n if (args.length === 1 && isPlainObject(args[0])) {\n params = args[0];\n }\n else {\n params = { args };\n }\n const internal = target;\n const timeout = internal._timeout;\n if (stream) {\n const fabric = internal._fabric || FameFabric.current();\n if (internal._address) {\n return await fabric.invokeStream(internal._address, prop, params, timeout);\n }\n if (internal._capabilities) {\n return await fabric.invokeByCapabilityStream(internal._capabilities, prop, params, timeout);\n }\n throw new Error('RPC proxy must be bound to an address or capabilities');\n }\n if (internal._address) {\n return await internal._invoke(internal._address, prop, params, timeout);\n }\n if (internal._capabilities) {\n return await internal._invokeByCapability(internal._capabilities, prop, params, timeout);\n }\n throw new Error('RPC proxy must be bound to an address or capabilities');\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nexport function createRpcProxy(options) {\n const base = new FameServiceProxy(options);\n return wrapRpcProxy(base);\n}\nexport class RpcProxy extends FameServiceProxy {\n constructor(options = {}) {\n super(options);\n return wrapRpcProxy(this);\n }\n static remoteByAddress(address, options = {}) {\n const proxy = FameServiceProxy.remoteByAddress(address, options);\n return wrapRpcProxy(proxy);\n }\n static remoteByCapabilities(capabilities, options = {}) {\n const proxy = FameServiceProxy.remoteByCapabilities(capabilities, options);\n return wrapRpcProxy(proxy);\n }\n}\n//# sourceMappingURL=rpc.js.map","/**\n * AUTO-GENERATED FILE. DO NOT EDIT DIRECTLY.\n * Generated by scripts/generate-factory-manifest.mjs\n *\n * Provides the list of runtime factory modules for registration.\n */\nexport const MODULES = [\n \"./connector/http-listener-factory.js\",\n \"./connector/http-stateless-connector-factory.js\",\n \"./connector/websocket-connector-factory.js\",\n \"./connector/websocket-listener-factory.js\",\n \"./delivery/at-least-once-delivery-policy-factory.js\",\n \"./delivery/at-most-once-delivery-policy-factory.js\",\n \"./delivery/delivery-profile-factory.js\",\n \"./fabric/in-process-fame-fabric-factory.js\",\n \"./node/admission/admission-profile-factory.js\",\n \"./node/admission/direct-admission-client-factory.js\",\n \"./node/admission/noop-admission-client-factory.js\",\n \"./node/admission/welcome-service-client-factory.js\",\n \"./node/node-factory.js\",\n \"./placement/static-node-placement-strategy-factory.js\",\n \"./placement/websocket-node-placement-strategy-factory.js\",\n \"./security/auth/bearer-token-header-auth-injection-strategy-factory.js\",\n \"./security/auth/default-authorizer-factory.js\",\n \"./security/auth/jwks-jwt-token-verifier-factory.js\",\n \"./security/auth/jwt-token-issuer-factory.js\",\n \"./security/auth/jwt-token-verifier-factory.js\",\n \"./security/auth/no-auth-injection-strategy-factory.js\",\n \"./security/auth/none-token-provider-factory.js\",\n \"./security/auth/noop-authorizer-factory.js\",\n \"./security/auth/noop-token-issuer-factory.js\",\n \"./security/auth/noop-token-verifier-factory.js\",\n \"./security/auth/oauth2-authorizer-factory.js\",\n \"./security/auth/oauth2-client-credentials-token-provider-factory.js\",\n \"./security/auth/query-param-auth-injection-strategy-factory.js\",\n \"./security/auth/shared-secret-authorizer-factory.js\",\n \"./security/auth/shared-secret-token-provider-factory.js\",\n \"./security/auth/shared-secret-token-verifier-factory.js\",\n \"./security/auth/static-token-provider-factory.js\",\n \"./security/auth/websocket-subprotocol-auth-injection-strategy-factory.js\",\n \"./security/credential/dev-fixed-key-credential-provider-factory.js\",\n \"./security/credential/env-credential-provider-factory.js\",\n \"./security/credential/none-credential-provider-factory.js\",\n \"./security/credential/prompt-credential-provider-factory.js\",\n \"./security/credential/secret-store-credential-provider-factory.js\",\n \"./security/credential/session-key-credential-provider-factory.js\",\n \"./security/credential/static-credential-provider-factory.js\",\n \"./security/default-security-manager-factory.js\",\n \"./security/encryption/noop-encryption-manager-factory.js\",\n \"./security/encryption/noop-secure-channel-manager-factory.js\",\n \"./security/keys/default-key-manager-factory.js\",\n \"./security/keys/in-memory-key-store-factory.js\",\n \"./security/keys/noop-key-validator-factory.js\",\n \"./security/node-security-profile-factory.js\",\n \"./security/policy/default-security-policy-factory.js\",\n \"./security/policy/no-security-policy-factory.js\",\n \"./security/signing/eddsa-envelope-signer-factory.js\",\n \"./security/signing/eddsa-envelope-verifier-factory.js\",\n \"./sentinel/capability-aware-routing-policy-factory.js\",\n \"./sentinel/composite-routing-policy-factory.js\",\n \"./sentinel/hybrid-path-routing-policy-factory.js\",\n \"./sentinel/load-balancing/composite-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/hrw-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/load-balancing-profile-factory.js\",\n \"./sentinel/load-balancing/random-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/round-robin-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/sticky-load-balancing-strategy-factory.js\",\n \"./sentinel/routing-profile-factory.js\",\n \"./sentinel/sentinel-factory.js\",\n \"./sentinel/store/route-store-factory.js\",\n \"./stickiness/simple-load-balancer-stickiness-manager-factory.js\",\n \"./telemetry/noop-trace-emitter-factory.js\",\n \"./telemetry/open-telemetry-trace-emitter-factory.js\",\n \"./telemetry/trace-emitter-profile-factory.js\",\n \"./welcome/default-welcome-service-factory.js\"\n];\n//# sourceMappingURL=factory-manifest.js.map","import { Registry as DefaultRegistry } from '@naylence/factory';\nimport { MODULES } from '../factory-manifest.js';\nconst FACTORY_MODULE_PREFIX = '@naylence/runtime/naylence/fame/';\nconst BROWSER_DIST_SEGMENT = '/dist/browser/';\nfunction detectModuleUrl() {\n // Prefer Node-friendly __filename when available.\n if (typeof __filename === 'string') {\n try {\n const normalized = __filename.startsWith('file://')\n ? __filename\n : `file://${__filename}`;\n return normalized;\n }\n catch {\n // fall through to stack parsing\n }\n }\n // Fallback to parsing the current stack trace to discover the executing module URL.\n try {\n throw new Error();\n }\n catch (error) {\n const stack = typeof error === 'object' && error && 'stack' in error\n ? String(error.stack ?? '')\n : '';\n const lines = stack.split('\\n');\n for (const line of lines) {\n const match = line.match(/(https?:\\/\\/[^\\s)]+|file:\\/\\/[^\\s)]+|\\/[^\\s)]+\\.(?:js|ts))/u);\n if (!match) {\n continue;\n }\n const candidate = match[1];\n if (candidate.startsWith('http://') || candidate.startsWith('https://')) {\n return candidate;\n }\n if (candidate.startsWith('file://')) {\n return candidate;\n }\n return `file://${candidate}`;\n }\n }\n return null;\n}\nfunction computeBrowserFactoryBase(rawUrl) {\n if (!rawUrl) {\n return null;\n }\n const sanitized = rawUrl.split('?')[0]?.split('#')[0] ?? rawUrl;\n const esmMarker = '/dist/esm/naylence/fame/';\n const browserMarker = '/dist/browser/';\n const distMarker = '/dist/';\n if (sanitized.includes(esmMarker)) {\n return sanitized.slice(0, sanitized.indexOf(esmMarker) + esmMarker.length);\n }\n if (rawUrl.includes(BROWSER_DIST_SEGMENT)) {\n return new URL('../esm/naylence/fame/', rawUrl).href;\n }\n if (rawUrl.startsWith('http://') || rawUrl.startsWith('https://')) {\n try {\n const parsed = new URL(rawUrl);\n const viteDepsSegment = '/node_modules/.vite/deps/';\n if (parsed.pathname.includes(viteDepsSegment)) {\n const baseOrigin = `${parsed.protocol}//${parsed.host}`;\n return `${baseOrigin}/node_modules/@naylence/runtime/dist/esm/naylence/fame/`;\n }\n }\n catch {\n // ignore and fall through to null\n }\n }\n if (sanitized.includes(browserMarker)) {\n const base = sanitized.slice(0, sanitized.indexOf(browserMarker) + browserMarker.length);\n return `${base.replace(/browser\\/?$/u, '')}esm/naylence/fame/`;\n }\n if (sanitized.includes(distMarker)) {\n const index = sanitized.indexOf(distMarker);\n const base = sanitized.slice(0, index + distMarker.length);\n return `${base}esm/naylence/fame/`;\n }\n // Fallback for development: if this is a source file path, compute dist/esm path\n const srcMarker = '/src/naylence/fame/';\n if (sanitized.includes(srcMarker)) {\n const index = sanitized.indexOf(srcMarker);\n const projectRoot = sanitized.slice(0, index);\n return `${projectRoot}/dist/esm/naylence/fame/`;\n }\n return null;\n}\nconst moduleUrl = detectModuleUrl();\nconst browserFactoryBase = computeBrowserFactoryBase(moduleUrl);\nfunction resolveFactoryModuleSpecifier(specifier) {\n if (specifier.startsWith('../')) {\n const relativePath = specifier.slice('../'.length);\n return `${FACTORY_MODULE_PREFIX}${relativePath}`;\n }\n if (specifier.startsWith('./')) {\n const relativePath = specifier.slice('./'.length);\n return `${FACTORY_MODULE_PREFIX}${relativePath}`;\n }\n return null;\n}\nfunction resolveModuleCandidates(spec) {\n const packageSpecifier = resolveFactoryModuleSpecifier(spec);\n const candidates = [];\n const preferSource = typeof moduleUrl === 'string' && moduleUrl.includes('/src/');\n const addCandidate = (candidate) => {\n if (!candidate) {\n return;\n }\n if (!candidates.includes(candidate)) {\n candidates.push(candidate);\n }\n };\n if (preferSource && spec.startsWith('./')) {\n const baseSource = `../${spec.slice(2)}`;\n addCandidate(baseSource);\n if (baseSource.endsWith('.js')) {\n addCandidate(baseSource.replace(/\\.js$/u, '.ts'));\n }\n }\n if (browserFactoryBase && spec.startsWith('./')) {\n const browserCandidate = new URL(spec.slice('./'.length), browserFactoryBase).href;\n addCandidate(browserCandidate);\n if (browserCandidate.endsWith('.js')) {\n addCandidate(browserCandidate.replace(/\\.js$/u, '.ts'));\n }\n }\n if (packageSpecifier) {\n addCandidate(packageSpecifier);\n if (packageSpecifier.endsWith('.js')) {\n addCandidate(packageSpecifier.replace(/\\.js$/u, '.ts'));\n }\n }\n const baseFallback = spec.startsWith('./') ? `../${spec.slice(2)}` : spec;\n addCandidate(baseFallback);\n if (baseFallback.endsWith('.js')) {\n addCandidate(baseFallback.replace(/\\.js$/u, '.ts'));\n }\n return candidates;\n}\nexport async function registerDefaultFactories(registry = DefaultRegistry) {\n await Promise.all(MODULES.map(async (spec) => {\n try {\n const candidates = resolveModuleCandidates(spec);\n let mod;\n let lastError;\n for (const [index, candidate] of candidates.entries()) {\n try {\n mod = await import(/* @vite-ignore */ candidate);\n lastError = undefined;\n break;\n }\n catch (error) {\n lastError = error;\n const isLastCandidate = index === candidates.length - 1;\n if (isLastCandidate) {\n throw error;\n }\n const message = error instanceof Error ? error.message : String(error);\n const moduleNotFound = message.includes('Cannot find module') ||\n message.includes('ERR_MODULE_NOT_FOUND') ||\n message.includes('Unknown file extension') ||\n message.includes('Failed to fetch dynamically imported module') ||\n message.includes('Importing a module script failed');\n if (!moduleNotFound) {\n throw error;\n }\n }\n }\n if (!mod) {\n throw (lastError ?? new Error(`Unable to import factory module: ${spec}`));\n }\n const meta = mod.FACTORY_META;\n const Ctor = mod.default;\n if (!meta?.base || !meta?.key || typeof Ctor !== 'function') {\n console.warn('[factory-manifest] skipped', spec, '— missing FACTORY_META or default export ctor');\n return;\n }\n registry.registerFactory(meta.base, meta.key, Ctor);\n }\n catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n console.warn('[factory-manifest] skipped', spec, '-', reason);\n }\n }));\n}\n/**\n * Register all default Naylence runtime factories into the supplied registry.\n *\n * @param registry Registry implementation to receive the default runtime factories.\n */\nexport async function registerRuntimeFactories(registry = DefaultRegistry) {\n await registerDefaultFactories(registry);\n}\n//# sourceMappingURL=register-runtime-factories.js.map","let webCryptoAvailable = null;\nfunction detectWebCrypto() {\n if (webCryptoAvailable !== null) {\n return webCryptoAvailable;\n }\n webCryptoAvailable =\n typeof globalThis.crypto !== 'undefined' &&\n typeof globalThis.crypto.subtle !== 'undefined';\n return webCryptoAvailable;\n}\nfunction detectNativeNodeCrypto() {\n if (typeof globalThis.process === 'undefined' ||\n typeof globalThis.process.versions?.node !== 'string') {\n return false;\n }\n const moduleId = `node:${'crypto'}`;\n try {\n const directRequire = typeof require === 'function'\n ? require\n : globalThis.require;\n if (typeof directRequire === 'function') {\n const { webcrypto } = directRequire(moduleId);\n return Boolean(webcrypto?.subtle);\n }\n const lazyRequire = Function('return typeof require === \"function\" ? require : null')();\n if (typeof lazyRequire === 'function') {\n const { webcrypto } = lazyRequire(moduleId);\n return Boolean(webcrypto?.subtle);\n }\n }\n catch {\n // Ignore resolution errors and fall through to false\n }\n return false;\n}\nexport function hasCryptoSupport() {\n return detectWebCrypto() || detectNativeNodeCrypto();\n}\nexport function requireCryptoSupport() {\n if (!hasCryptoSupport()) {\n throw new Error(\"This functionality requires WebCrypto support. Ensure 'crypto.subtle' is available in your runtime or include a compatible polyfill.\");\n }\n}\n//# sourceMappingURL=crypto-dependencies.js.map","const DEFAULT_DB_NAME = 'naylence-secrets';\nconst DEFAULT_STORE_NAME = 'wrapped-master-key';\nconst DEFAULT_KEY_ID = 'master';\nconst DEFAULT_ITERATIONS = 200000;\nconst WRAPPED_RECORD_VERSION = 1;\nconst MASTER_KEY_LENGTH = 32;\nconst SALT_LENGTH = 16;\nconst GCM_IV_LENGTH = 12;\nexport class InvalidPassphraseError extends Error {\n constructor(message = 'Unable to decrypt master key with provided passphrase') {\n super(message);\n this.name = 'InvalidPassphraseError';\n }\n}\nlet cachedNodeCrypto;\nlet cachedCrypto;\nasync function loadNodeCrypto() {\n if (cachedNodeCrypto !== undefined) {\n return cachedNodeCrypto;\n }\n try {\n cachedNodeCrypto = await import('node:crypto');\n return cachedNodeCrypto;\n }\n catch {\n cachedNodeCrypto = null;\n return null;\n }\n}\nasync function getCrypto() {\n if (cachedCrypto) {\n return cachedCrypto;\n }\n if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto.subtle) {\n const cryptoObject = globalThis.crypto;\n cachedCrypto = cryptoObject;\n return cryptoObject;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.webcrypto?.subtle) {\n const cryptoObject = nodeCrypto.webcrypto;\n cachedCrypto = cryptoObject;\n return cryptoObject;\n }\n throw new Error('Web Crypto API is not available in this environment');\n}\nasync function getRandomBytes(length) {\n const cryptoObject = await getCrypto();\n if (typeof cryptoObject.getRandomValues === 'function') {\n const buffer = new Uint8Array(length);\n cryptoObject.getRandomValues(buffer);\n return buffer;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.randomBytes) {\n const buffer = nodeCrypto.randomBytes(length);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n throw new Error('Unable to generate secure random bytes in this environment');\n}\nfunction toArrayBuffer(data) {\n const buffer = new ArrayBuffer(data.byteLength);\n new Uint8Array(buffer).set(data);\n return buffer;\n}\nfunction base64Encode(data) {\n if (typeof btoa === 'function') {\n let binary = '';\n for (let i = 0; i < data.length; i++) {\n binary += String.fromCharCode(data[i]);\n }\n return btoa(binary);\n }\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(data).toString('base64');\n }\n throw new Error('Base64 encoding is not available in this environment');\n}\nfunction base64Decode(value) {\n if (typeof atob === 'function') {\n const binary = atob(value);\n const buffer = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n buffer[i] = binary.charCodeAt(i);\n }\n return buffer;\n }\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(value, 'base64'));\n }\n throw new Error('Base64 decoding is not available in this environment');\n}\nconst UTF8_ENCODER = new TextEncoder();\nasync function deriveKEK(passphrase, salt, iterations) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const baseKey = await subtle.importKey('raw', UTF8_ENCODER.encode(passphrase), { name: 'PBKDF2' }, false, ['deriveKey']);\n return subtle.deriveKey({\n name: 'PBKDF2',\n salt: toArrayBuffer(salt),\n iterations,\n hash: 'SHA-256',\n }, baseKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);\n}\nasync function aesGcmEncrypt(key, data) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const iv = await getRandomBytes(GCM_IV_LENGTH);\n const ciphertextBuffer = await subtle.encrypt({ name: 'AES-GCM', iv: toArrayBuffer(iv) }, key, toArrayBuffer(data));\n return { iv, ciphertext: new Uint8Array(ciphertextBuffer) };\n}\nasync function aesGcmDecrypt(key, iv, data) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const plaintextBuffer = await subtle.decrypt({ name: 'AES-GCM', iv: toArrayBuffer(iv) }, key, toArrayBuffer(data));\n return new Uint8Array(plaintextBuffer);\n}\nasync function openDatabase(factory, dbName, storeName) {\n return new Promise((resolve, reject) => {\n const request = factory.open(dbName, 1);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to open IndexedDB'));\n };\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n });\n}\nasync function readWrappedRecord(db, storeName, keyId) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to read wrapped master key'));\n };\n request.onsuccess = () => {\n resolve(request.result ?? null);\n };\n });\n}\nasync function writeWrappedRecord(db, storeName, keyId, record) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const request = store.put(record, keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to persist wrapped master key'));\n };\n tx.oncomplete = () => resolve();\n tx.onerror = () => {\n reject(tx.error ?? new Error('Failed to persist wrapped master key'));\n };\n });\n}\nexport class BrowserWrappedKeyCredentialProvider {\n constructor(options) {\n this.cachedKey = null;\n this.inflight = null;\n if (!options?.promptPassphrase) {\n throw new Error('promptPassphrase callback is required');\n }\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName ?? DEFAULT_STORE_NAME;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n this.iterations = options.iterations ?? DEFAULT_ITERATIONS;\n this.promptPassphrase = options.promptPassphrase;\n if (options.idbFactory) {\n this.idbFactory = options.idbFactory;\n }\n else if (typeof indexedDB !== 'undefined') {\n this.idbFactory = indexedDB;\n }\n else {\n throw new Error('IndexedDB is not available in this environment');\n }\n }\n async get() {\n if (this.cachedKey) {\n return this.cachedKey;\n }\n if (this.inflight) {\n return this.inflight;\n }\n this.inflight = this.loadOrCreateKey();\n try {\n const key = await this.inflight;\n this.cachedKey = key;\n return key;\n }\n finally {\n this.inflight = null;\n }\n }\n async loadOrCreateKey() {\n const db = await openDatabase(this.idbFactory, this.dbName, this.storeName);\n try {\n const existing = await readWrappedRecord(db, this.storeName, this.keyId);\n if (!existing) {\n return await this.createAndPersistKey(db);\n }\n return await this.unwrapExistingKey(existing);\n }\n finally {\n db.close();\n }\n }\n async createAndPersistKey(db) {\n const passphrase = (await this.promptPassphrase()).trim();\n if (!passphrase) {\n throw new Error('Passphrase must not be empty');\n }\n const salt = await getRandomBytes(SALT_LENGTH);\n const kek = await deriveKEK(passphrase, salt, this.iterations);\n const masterKey = await getRandomBytes(MASTER_KEY_LENGTH);\n const { iv, ciphertext } = await aesGcmEncrypt(kek, masterKey);\n const record = {\n version: WRAPPED_RECORD_VERSION,\n kdf: {\n algo: 'PBKDF2',\n hash: 'SHA-256',\n iterations: this.iterations,\n saltB64: base64Encode(salt),\n },\n wrap: {\n algo: 'AES-GCM',\n ivB64: base64Encode(iv),\n ciphertextB64: base64Encode(ciphertext),\n },\n };\n await writeWrappedRecord(db, this.storeName, this.keyId, record);\n return masterKey;\n }\n async unwrapExistingKey(record) {\n if (record.version !== WRAPPED_RECORD_VERSION) {\n throw new Error(`Unsupported wrapped key version: ${record.version}`);\n }\n if (record.kdf.algo !== 'PBKDF2' || record.kdf.hash !== 'SHA-256') {\n throw new Error('Unsupported KDF configuration for wrapped master key');\n }\n if (record.wrap.algo !== 'AES-GCM') {\n throw new Error('Unsupported wrapping algorithm for wrapped master key');\n }\n const passphrase = (await this.promptPassphrase()).trim();\n if (!passphrase) {\n throw new InvalidPassphraseError();\n }\n const { saltB64, iterations } = record.kdf;\n const { ivB64, ciphertextB64 } = record.wrap;\n const salt = base64Decode(saltB64);\n const iv = base64Decode(ivB64);\n const ciphertext = base64Decode(ciphertextB64);\n try {\n const kek = await deriveKEK(passphrase, salt, iterations);\n return await aesGcmDecrypt(kek, iv, ciphertext);\n }\n catch (error) {\n throw new InvalidPassphraseError(error instanceof Error ? error.message : 'Unable to decrypt master key');\n }\n }\n}\n//# sourceMappingURL=browser-wrapped-key-credential-provider.js.map","/**\n * Browser-friendly entry point for Naylence Runtime.\n *\n * Exposes utilities, channels, connectors, and cross-platform helpers that\n * do not rely on Node.js-only dependencies. This file purposefully excludes\n * modules such as the SQLite storage providers and any prompt utilities that\n * expect access to the Node.js standard library.\n */\n// Re-export everything from naylence-core for protocol primitives\nexport * from '@naylence/core';\n// Cross-platform Fame runtime exports\nexport * from './naylence/fame/errors/index.js';\nexport * from './naylence/fame/util/index.js';\nexport * from './naylence/fame/channel/index.js';\n// Storage providers that are safe for browsers (in-memory + IndexedDB)\nexport * from './naylence/fame/storage/index.js';\nexport { getNode, getCurrentNode, withNodeContextAsync, runWithNodeContext, } from './naylence/fame/node/node-context-stack.js';\n// Sentinel (cross-platform routing node)\nexport * from './naylence/fame/sentinel/index.js';\n// Connector layer exports trimmed to browser-safe components\nexport { BaseAsyncConnector, } from './naylence/fame/connector/base-async-connector.js';\nexport { ConnectorConfigDefaults, isConnectorConfig, createConnectorConfig, } from './naylence/fame/connector/connector-config.js';\nexport { ConnectorFactory, createResource, } from './naylence/fame/connector/connector-factory.js';\nexport { WebSocketConnector, WebSocketState, } from './naylence/fame/connector/websocket-connector.js';\nexport { _NoopFlowController } from './naylence/fame/connector/noop-flow-controller.js';\n// RPC helpers are shared\nexport { RpcProxy, createRpcProxy, RpcMixin, operation, } from './naylence/fame/service/rpc.js';\n// Runtime factory registration exposes no Node.js specifics\nexport { registerDefaultFactories, registerRuntimeFactories, } from './naylence/fame/util/register-runtime-factories.js';\n// Browser-facing crypto helpers\nexport { hasCryptoSupport, requireCryptoSupport, } from './naylence/fame/security/crypto/crypto-dependencies.js';\nexport { BrowserWrappedKeyCredentialProvider, InvalidPassphraseError, } from './naylence/fame/security/credential/browser-wrapped-key-credential-provider.js';\nconst runtimePluginModulePromise = import('./plugin.js');\nconst globalScope = globalThis;\nconst FACTORY_MODULE_PREFIX = '@naylence/runtime/naylence/fame/';\nconst resolveFactoryModuleSpecifier = (specifier) => {\n if (specifier.startsWith('../')) {\n const relativePath = specifier.slice('../'.length);\n return `${FACTORY_MODULE_PREFIX}${relativePath}`;\n }\n if (specifier.startsWith('./')) {\n const relativePath = specifier.slice('./'.length);\n return `${FACTORY_MODULE_PREFIX}${relativePath}`;\n }\n return null;\n};\nconst ensureRuntimePluginLoader = () => {\n const existing = Reflect.get(globalScope, '__naylenceFactoryDynamicImporter');\n if (typeof existing === 'function') {\n return existing;\n }\n const loader = async (specifier) => {\n if (specifier === '@naylence/runtime' ||\n specifier === '@naylence/runtime/' ||\n specifier === '@naylence/runtime/plugin' ||\n specifier === '@naylence/runtime/plugin.js' ||\n specifier === '@naylence/runtime/dist/esm/plugin.js') {\n return runtimePluginModulePromise;\n }\n const remapped = resolveFactoryModuleSpecifier(specifier);\n if (remapped) {\n return import(/* @vite-ignore */ remapped);\n }\n return import(/* @vite-ignore */ specifier);\n };\n Reflect.set(globalScope, '__naylenceFactoryDynamicImporter', loader);\n return loader;\n};\nexport const __runtimePluginLoader = ensureRuntimePluginLoader();\n//# sourceMappingURL=runtime-isomorphic.js.map","/**\n * Node event listener interface for clean, event-driven node lifecycle management.\n */\n/**\n * Abstract base class providing default implementations for NodeEventListener.\n *\n * This class provides a convenient base for implementing node event listeners\n * where you only need to override specific lifecycle methods. All methods\n * have sensible default implementations.\n */\nexport class BaseNodeEventListener {\n constructor(priority = 1000) {\n this.priority = priority;\n }\n async onNodeStarted(_node) {\n // Default implementation does nothing\n }\n async onWelcome(_welcomeFrame) {\n // Default implementation does nothing\n }\n async onHeartbeatReceived(_envelope) {\n // Default implementation does nothing\n }\n async onHeartbeatSent(_node, _envelope) {\n // Default implementation does nothing\n }\n async onNodeInitialized(_node) {\n // Default implementation does nothing\n }\n async onNodeAttachToPeer(_node, _attachInfo, _connector) {\n // Default implementation does nothing\n }\n async onNodeAttachToUpstream(_node, _attachInfo) {\n // Default implementation does nothing\n }\n async onEnvelopeReceived(_node, envelope, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onDeliverLocal(_node, _address, envelope, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onDeliver(_node, envelope, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onForwardUpstream(_node, envelope, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onForwardToRoute(_node, _nextSegment, envelope, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onForwardToPeer(_node, _peerSegment, envelope, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onForwardUpstreamComplete(_node, envelope, _result, _error, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onForwardToRouteComplete(_node, _nextSegment, envelope, _result, _error, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onForwardToPeerComplete(_node, _peerSegment, envelope, _result, _error, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onForwardToPeers(_node, envelope, _peers, _excludePeers, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onForwardToPeersComplete(_node, envelope, _peers, _excludePeers, _result, _error, _context) {\n // Default implementation passes envelope through unchanged\n return envelope;\n }\n async onChildAttach(_options) {\n // Default implementation does nothing\n }\n async onEpochChange(_node, _epoch) {\n // Default implementation does nothing\n }\n async onNodePreparingToStop(_node) {\n // Default implementation does nothing\n }\n async onNodeStopped(_node) {\n // Default implementation does nothing\n }\n}\n//# sourceMappingURL=node-event-listener.js.map","import { BaseNodeEventListener } from '../node/node-event-listener.js';\nimport { getLogger } from '../util/logging.js';\nconst telemetryLogger = getLogger('naylence.fame.telemetry.base_trace_emitter');\nfunction logTelemetryFailure(event, error, context = {}) {\n telemetryLogger.warning(event, {\n ...context,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error && error.stack ? error.stack : undefined,\n });\n}\nfunction buildEnvelopeAttributes(envelope) {\n return {\n 'env.id': envelope.id,\n 'env.trace_id': envelope.traceId,\n 'env.corr_id': envelope.corrId,\n 'env.flow_id': envelope.flowId,\n 'env.seq_id': envelope.seqId,\n 'env.to': envelope.to ?? null,\n 'env.priority': envelope.priority ?? null,\n 'env.sid': envelope.sid ?? null,\n 'env.reply_to': envelope.replyTo ?? null,\n 'env.ts': envelope.ts?.toISOString?.() ?? null,\n 'env.frame_type': envelope.frame\n ? (envelope.frame.type ?? null)\n : null,\n 'env.is_signed': Boolean(envelope.sec?.sig),\n 'env.sign_kid': envelope.sec?.sig?.kid ?? null,\n 'env.is_encrypted': Boolean(envelope.sec?.enc),\n 'env.enc_kid': envelope.sec?.enc?.kid ?? null,\n };\n}\nfunction filterAttributes(attributes) {\n const filtered = {};\n for (const [key, value] of Object.entries(attributes)) {\n if (value !== undefined && value !== null) {\n filtered[key] = value;\n }\n }\n return filtered;\n}\nfunction extractContextValue(context, keys) {\n if (!context) {\n return undefined;\n }\n const source = context;\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const value = source[key];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nexport class BaseTraceEmitter extends BaseNodeEventListener {\n constructor() {\n super(...arguments);\n this.node = null;\n this.inflight = new Map();\n this.priority = 10000;\n }\n getSpanKey(envelope, operationKey) {\n return `${envelope.id}:${operationKey}`;\n }\n startEnvelopeOperationSpan(node, operationName, envelope, operationKey, additionalAttributes = null) {\n try {\n const key = this.getSpanKey(envelope, operationKey);\n const previous = this.inflight.get(key);\n if (previous) {\n this.inflight.delete(key);\n try {\n previous.scope.exit();\n }\n catch (cleanupError) {\n logTelemetryFailure('trace_span_scope_exit_failed', cleanupError, {\n operation: operationName,\n span_key: key,\n });\n }\n }\n const attributes = buildEnvelopeAttributes(envelope);\n if (additionalAttributes) {\n for (const [attrKey, attrValue] of Object.entries(additionalAttributes)) {\n attributes[attrKey] = attrValue;\n }\n }\n const effectiveNode = node ?? this.node;\n if (effectiveNode) {\n attributes['node.id'] = effectiveNode.id;\n attributes['node.sid'] = effectiveNode.sid ?? null;\n }\n const scope = this.startSpan(operationName, {\n attributes: filterAttributes(attributes),\n });\n const span = scope.enter();\n this.inflight.set(key, { scope, span });\n }\n catch (error) {\n logTelemetryFailure('trace_span_start_failed', error, {\n operation: operationName,\n envelope_id: envelope.id,\n });\n }\n return envelope;\n }\n completeEnvelopeOperationSpan(node, operationName, envelope, operationKey, _result = null, error = null, additionalAttributes = null) {\n try {\n const key = this.getSpanKey(envelope, operationKey);\n let active = this.inflight.get(key);\n if (!active) {\n const attributes = buildEnvelopeAttributes(envelope);\n if (additionalAttributes) {\n for (const [attrKey, attrValue] of Object.entries(additionalAttributes)) {\n attributes[attrKey] = attrValue;\n }\n }\n const effectiveNode = node ?? this.node;\n if (effectiveNode) {\n attributes['node.id'] = effectiveNode.id;\n attributes['node.sid'] = effectiveNode.sid ?? null;\n }\n const scope = this.startSpan(operationName, {\n attributes: filterAttributes(attributes),\n });\n const span = scope.enter();\n active = { scope, span };\n }\n else {\n this.inflight.delete(key);\n }\n if (error !== null && error !== undefined) {\n try {\n active.span.recordException(error);\n }\n catch (recordError) {\n logTelemetryFailure('trace_span_record_exception_failed', recordError, {\n operation: operationName,\n envelope_id: envelope.id,\n });\n }\n try {\n const description = error instanceof Error ? error.message : String(error);\n active.span.setStatusError(description);\n }\n catch (statusError) {\n logTelemetryFailure('trace_span_set_status_failed', statusError, {\n operation: operationName,\n envelope_id: envelope.id,\n });\n }\n }\n try {\n active.scope.exit();\n }\n catch (exitError) {\n logTelemetryFailure('trace_span_scope_exit_failed', exitError, {\n operation: operationName,\n envelope_id: envelope.id,\n });\n }\n }\n catch (error) {\n logTelemetryFailure('trace_span_complete_failed', error, {\n operation: operationName,\n envelope_id: envelope.id,\n });\n }\n return envelope;\n }\n async onEnvelopeReceived(node, envelope, context) {\n try {\n const attributes = buildEnvelopeAttributes(envelope);\n attributes['node.id'] = node.id;\n attributes['node.sid'] = node.sid ?? null;\n const fromNodeId = extractContextValue(context, [\n 'fromSystemId',\n 'from_system_id',\n 'fromNodeId',\n 'from_node_id',\n ]);\n if (fromNodeId !== undefined && fromNodeId !== null) {\n attributes['from.node_id'] = String(fromNodeId);\n }\n const originType = extractContextValue(context, [\n 'originType',\n 'origin_type',\n ]);\n if (originType !== undefined && originType !== null) {\n attributes['from.origin_type'] = String(originType);\n }\n const scope = this.startSpan('env.received', {\n attributes: filterAttributes(attributes),\n });\n scope.enter();\n scope.exit();\n }\n catch (error) {\n logTelemetryFailure('trace_span_received_failed', error, {\n envelope_id: envelope.id,\n });\n }\n return envelope;\n }\n async onForwardToRoute(node, nextSegment, envelope, _context) {\n return this.startEnvelopeOperationSpan(node, 'env.fwd_to_route', envelope, nextSegment, {\n 'route.segment': nextSegment,\n });\n }\n async onForwardToRouteComplete(node, nextSegment, envelope, result, error, _context) {\n return this.completeEnvelopeOperationSpan(node, 'env.fwd_to_route', envelope, nextSegment, result, error, {\n 'route.segment': nextSegment,\n });\n }\n async onForwardUpstream(node, envelope, _context) {\n return this.startEnvelopeOperationSpan(node, 'env.fwd_upstream', envelope, 'upstream', {\n direction: 'upstream',\n });\n }\n async onForwardUpstreamComplete(node, envelope, result, error, _context) {\n return this.completeEnvelopeOperationSpan(node, 'env.fwd_upstream', envelope, 'upstream', result, error, {\n direction: 'upstream',\n });\n }\n async onForwardToPeer(node, peerSegment, envelope, _context) {\n return this.startEnvelopeOperationSpan(node, 'env.fwd_to_peer', envelope, peerSegment, {\n 'peer.segment': peerSegment,\n });\n }\n async onForwardToPeerComplete(node, peerSegment, envelope, result, error, _context) {\n return this.completeEnvelopeOperationSpan(node, 'env.fwd_to_peer', envelope, peerSegment, result, error, {\n 'peer.segment': peerSegment,\n });\n }\n async onDeliverLocal(node, address, envelope, _context) {\n const addressKey = address ? String(address) : 'unknown';\n return this.startEnvelopeOperationSpan(node, 'env.deliver_local', envelope, addressKey, {\n 'delivery.address': addressKey,\n 'delivery.type': 'local',\n });\n }\n async onDeliverLocalComplete(node, address, envelope, _context) {\n const addressKey = address ? String(address) : 'unknown';\n return this.completeEnvelopeOperationSpan(node, 'env.deliver_local', envelope, addressKey, null, null, {\n 'delivery.address': addressKey,\n 'delivery.type': 'local',\n });\n }\n async onNodeInitialized(node) {\n this.node = node;\n }\n async onNodeStopped(_node) {\n try {\n if (typeof this.flush === 'function') {\n await this.flush();\n }\n if (typeof this.shutdown === 'function') {\n await this.shutdown();\n }\n }\n catch (error) {\n logTelemetryFailure('trace_span_shutdown_failed', error);\n }\n }\n async flush() {\n // Default implementation: no-op\n }\n async shutdown() {\n // Default implementation: no-op\n }\n}\n//# sourceMappingURL=base-trace-emitter.js.map","import { BaseTraceEmitter } from './base-trace-emitter.js';\nclass NoopTraceSpan {\n setAttribute() { }\n recordException() { }\n setStatusError() { }\n}\nclass NoopTraceSpanScope {\n constructor(span) {\n this.span = span;\n }\n enter() {\n return this.span;\n }\n exit() { }\n}\nexport class NoopTraceEmitter extends BaseTraceEmitter {\n startSpan(_name, _options) {\n void _options;\n return new NoopTraceSpanScope(new NoopTraceSpan());\n }\n}\n//# sourceMappingURL=noop-trace-emitter.js.map","import { TRACE_EMITTER_FACTORY_BASE_TYPE, TraceEmitterFactory, } from './trace-emitter-factory.js';\nimport { NoopTraceEmitter } from './noop-trace-emitter.js';\nexport const FACTORY_META = {\n base: TRACE_EMITTER_FACTORY_BASE_TYPE,\n key: 'NoopTraceEmitter',\n};\nexport class NoopTraceEmitterFactory extends TraceEmitterFactory {\n constructor() {\n super(...arguments);\n this.type = 'NoopTraceEmitter';\n this.isDefault = true;\n this.priority = 100;\n }\n async create() {\n return new NoopTraceEmitter();\n }\n}\nexport default NoopTraceEmitterFactory;\n//# sourceMappingURL=noop-trace-emitter-factory.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE = 'AuthInjectionStrategyFactory';\nexport class AuthInjectionStrategyFactory extends AbstractResourceFactory {\n static async createAuthInjectionStrategy(config, options = {}) {\n if (config) {\n const strategy = await createResource(AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, config, options);\n if (!strategy) {\n throw new Error('Failed to create auth injection strategy from configuration');\n }\n return strategy;\n }\n const strategy = await createDefaultResource(AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, null, options);\n if (!strategy) {\n throw new Error('Failed to create default auth injection strategy');\n }\n return strategy;\n }\n}\n//# sourceMappingURL=auth-injection-strategy-factory.js.map","import { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.telemetry.otel_setup');\nlet registeredOtel = null;\nexport async function setupOtel(options) {\n const normalized = normalizeSetupOtelOptions(options);\n try {\n if (registeredOtel) {\n logger.debug('open_telemetry_reusing_provider', {\n service_name: normalized.serviceName,\n });\n return registeredOtel.control;\n }\n const [apiModule, resourcesModule, nodeModule, traceBaseModule] = await Promise.all([\n import('@opentelemetry/api'),\n import('@opentelemetry/resources'),\n import('@opentelemetry/sdk-trace-node'),\n import('@opentelemetry/sdk-trace-base'),\n ]);\n const { trace } = apiModule;\n const { defaultResource, resourceFromAttributes } = resourcesModule;\n const { NodeTracerProvider } = nodeModule;\n const { BatchSpanProcessor, ConsoleSpanExporter, ParentBasedSampler, AlwaysOnSampler, AlwaysOffSampler, TraceIdRatioBasedSampler, } = traceBaseModule;\n const currentProvider = trace.getTracerProvider();\n if (currentProvider && currentProvider instanceof NodeTracerProvider) {\n return null;\n }\n if (currentProvider &&\n currentProvider.constructor?.name === 'NodeTracerProvider') {\n logger.debug('open_telemetry_existing_node_provider', {\n service_name: normalized.serviceName,\n });\n return null;\n }\n logger.debug('open_telemetry_initializing', {\n service_name: normalized.serviceName,\n endpoint: normalized.endpoint ?? null,\n environment: normalized.environment ?? null,\n sampler: normalized.sampler ?? null,\n headers_present: Boolean(normalized.headers && Object.keys(normalized.headers).length),\n });\n const sampler = resolveSampler(normalized.sampler, {\n ParentBasedSampler,\n AlwaysOnSampler,\n AlwaysOffSampler,\n TraceIdRatioBasedSampler,\n });\n const baseResource = defaultResource();\n const mergedResource = resourceFromAttributes({\n 'service.name': normalized.serviceName,\n 'service.instance.id': generateInstanceId(),\n 'deployment.environment': normalized.environment ?? 'dev',\n });\n const resource = baseResource.merge(mergedResource);\n const exporter = await resolveExporter(normalized.endpoint ?? undefined, normalized.headers, ConsoleSpanExporter);\n const spanProcessor = new BatchSpanProcessor(exporter);\n const provider = new NodeTracerProvider({\n resource,\n sampler,\n spanProcessors: [spanProcessor],\n });\n provider.register();\n logger.debug('open_telemetry_initialized', {\n service_name: normalized.serviceName,\n exporter: exporter.constructor?.name ?? 'unknown_exporter',\n });\n const control = {\n forceFlush: async () => {\n try {\n await provider.forceFlush();\n }\n catch (flushError) {\n logger.warning('open_telemetry_force_flush_failed', {\n error: flushError instanceof Error\n ? flushError.message\n : String(flushError),\n });\n }\n },\n shutdown: async () => {\n try {\n await provider.shutdown();\n }\n catch (shutdownError) {\n logger.warning('open_telemetry_shutdown_failed', {\n error: shutdownError instanceof Error\n ? shutdownError.message\n : String(shutdownError),\n });\n }\n finally {\n registeredOtel = null;\n }\n },\n };\n registeredOtel = {\n provider,\n control,\n };\n return control;\n }\n catch (error) {\n logger.error('open_telemetry_not_available', {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error && error.stack ? error.stack : undefined,\n });\n return null;\n }\n}\nfunction normalizeSetupOtelOptions(options) {\n const source = (options ?? {});\n const serviceName = extractNonEmptyString(pickFirst(source, ['serviceName', 'service_name'])) ??\n 'naylence-service';\n const endpoint = extractNonEmptyString(pickFirst(source, ['endpoint', 'otlpEndpoint', 'otlp_endpoint'])) ?? null;\n const environment = extractNonEmptyString(pickFirst(source, [\n 'environment',\n 'deploymentEnvironment',\n 'deployment_environment',\n ])) ?? null;\n const sampler = extractNonEmptyString(pickFirst(source, ['sampler', 'samplingStrategy', 'sampling_strategy'])) ?? null;\n const headers = extractHeaders(pickFirst(source, ['headers', 'otlpHeaders', 'otlp_headers']));\n return {\n serviceName,\n endpoint,\n environment,\n sampler,\n headers: headers ?? undefined,\n };\n}\nfunction pickFirst(source, keys) {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const value = source[key];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction extractNonEmptyString(value) {\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed.length > 0) {\n return trimmed;\n }\n }\n return undefined;\n}\nfunction extractHeaders(value) {\n if (!value || typeof value !== 'object') {\n return null;\n }\n const headers = {};\n for (const [key, raw] of Object.entries(value)) {\n if (typeof raw === 'string') {\n headers[key] = raw;\n }\n }\n return Object.keys(headers).length > 0 ? headers : null;\n}\nfunction generateInstanceId() {\n try {\n if (typeof crypto !== 'undefined' &&\n typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID().replace(/-/g, '');\n }\n }\n catch {\n // Ignore crypto availability errors\n }\n const random = Math.random().toString(16).slice(2);\n return random.padEnd(32, '0').slice(0, 32);\n}\nfunction resolveSampler(samplerSetting, samplers) {\n const normalized = (samplerSetting ?? 'parentbased_always_on').toLowerCase();\n let base;\n if (normalized === 'always_off') {\n base = new samplers.AlwaysOffSampler();\n }\n else if (normalized === 'always_on' ||\n normalized === 'parentbased_always_on') {\n base = new samplers.AlwaysOnSampler();\n }\n else if (normalized.startsWith('ratio:')) {\n const ratioValue = Number.parseFloat(normalized.slice('ratio:'.length));\n const ratio = Number.isFinite(ratioValue)\n ? Math.min(Math.max(ratioValue, 0), 1)\n : 1;\n base = new samplers.TraceIdRatioBasedSampler(ratio);\n }\n else {\n base = new samplers.AlwaysOnSampler();\n }\n return new samplers.ParentBasedSampler({ root: base });\n}\nasync function resolveExporter(endpoint, headers, ConsoleSpanExporter) {\n if (endpoint) {\n try {\n const exporterModule = await import('@opentelemetry/exporter-trace-otlp-http');\n if ('OTLPTraceExporter' in exporterModule) {\n const { OTLPTraceExporter } = exporterModule;\n const exporterOptions = {\n url: endpoint,\n };\n if (headers && Object.keys(headers).length > 0) {\n exporterOptions.headers = headers;\n }\n logger.debug('open_telemetry_using_otlp_http_exporter', {\n endpoint,\n headers_present: Boolean(headers && Object.keys(headers).length),\n });\n return new OTLPTraceExporter(exporterOptions);\n }\n }\n catch (error) {\n logger.error('open_telemetry_exporter_not_available', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n logger.warning('open_telemetry_falling_back_to_console_exporter');\n return new ConsoleSpanExporter();\n}\n//# sourceMappingURL=otel-setup.js.map","import { AuthInjectionStrategyFactory, } from '../security/auth/auth-injection-strategy-factory.js';\nimport { setupOtel } from './otel-setup.js';\nimport { safeImport } from '../util/lazy-import.js';\nimport { TRACE_EMITTER_FACTORY_BASE_TYPE, TraceEmitterFactory, } from './trace-emitter-factory.js';\nimport { getLogger } from '../util/logging.js';\nlet openTelemetryTraceEmitterModulePromise = null;\nconst logger = getLogger('naylence.fame.telemetry.open_telemetry_trace_emitter_factory');\nfunction getOpenTelemetryTraceEmitterModule() {\n if (!openTelemetryTraceEmitterModulePromise) {\n openTelemetryTraceEmitterModulePromise = safeImport(() => import('./open-telemetry-trace-emitter.js'), '@opentelemetry/api', {\n helpMessage: 'Missing optional OpenTelemetry dependency. Install @opentelemetry/api (and related packages) to enable trace emission.',\n });\n }\n return openTelemetryTraceEmitterModulePromise;\n}\nexport const FACTORY_META = {\n base: TRACE_EMITTER_FACTORY_BASE_TYPE,\n key: 'OpenTelemetryTraceEmitter',\n};\nexport class OpenTelemetryTraceEmitterFactory extends TraceEmitterFactory {\n constructor() {\n super(...arguments);\n this.type = 'OpenTelemetryTraceEmitter';\n }\n async create(config, ...factoryArgs) {\n const options = (factoryArgs[0] ??\n {});\n const normalized = normalizeConfig(config);\n const mergedHeaders = {\n ...normalized.headers,\n ...(options.headers ?? {}),\n };\n let authStrategy = null;\n if (normalized.auth) {\n authStrategy =\n await AuthInjectionStrategyFactory.createAuthInjectionStrategy(normalized.auth);\n try {\n await authStrategy.apply(mergedHeaders);\n logger.info('trace_emitter_auth_applied', {\n service_name: normalized.serviceName,\n });\n }\n catch (error) {\n try {\n await authStrategy.cleanup();\n }\n catch {\n // Ignore cleanup errors while propagating original failure\n }\n throw error;\n }\n }\n let lifecycle = null;\n try {\n lifecycle = await setupOtel({\n serviceName: normalized.serviceName,\n endpoint: normalized.endpoint,\n environment: normalized.environment,\n sampler: normalized.sampler,\n headers: Object.keys(mergedHeaders).length > 0 ? mergedHeaders : undefined,\n });\n logger.debug('trace_emitter_lifecycle_acquired', {\n service_name: normalized.serviceName,\n lifecycle_available: Boolean(lifecycle),\n });\n }\n catch (error) {\n if (authStrategy) {\n try {\n await authStrategy.cleanup();\n }\n catch {\n // Ignore cleanup errors while propagating original failure\n }\n }\n throw error;\n }\n const { OpenTelemetryTraceEmitter } = await getOpenTelemetryTraceEmitterModule();\n const emitterOptions = {\n serviceName: normalized.serviceName,\n };\n if (options.tracer) {\n emitterOptions.tracer = options.tracer;\n }\n if (lifecycle) {\n emitterOptions.lifecycle = lifecycle;\n }\n if (authStrategy) {\n emitterOptions.authStrategy = authStrategy;\n }\n try {\n const emitter = new OpenTelemetryTraceEmitter(emitterOptions);\n logger.debug('trace_emitter_created', {\n service_name: normalized.serviceName,\n has_lifecycle: Boolean(lifecycle),\n has_auth_strategy: Boolean(authStrategy),\n });\n return emitter;\n }\n catch (error) {\n if (authStrategy) {\n try {\n await authStrategy.cleanup();\n }\n catch {\n // Best effort cleanup\n }\n }\n throw error;\n }\n }\n}\nfunction normalizeConfig(config) {\n if (!config) {\n return {\n serviceName: 'naylence-service',\n endpoint: null,\n environment: null,\n sampler: null,\n headers: {},\n auth: null,\n };\n }\n const candidate = config;\n const serviceName = extractString(pickFirst(candidate, ['serviceName', 'service_name'])) ??\n 'naylence-service';\n const endpoint = extractString(pickFirst(candidate, ['endpoint', 'otlpEndpoint', 'otlp_endpoint'])) ?? null;\n const environment = extractString(pickFirst(candidate, [\n 'environment',\n 'deploymentEnvironment',\n 'deployment_environment',\n ])) ?? null;\n const sampler = extractString(pickFirst(candidate, ['sampler', 'samplingStrategy', 'sampling_strategy'])) ?? null;\n const headersFromConfig = extractHeaders(pickFirst(candidate, ['headers', 'otlpHeaders', 'otlp_headers']));\n const authConfig = pickFirst(candidate, [\n 'auth',\n ]);\n return {\n serviceName,\n endpoint,\n environment,\n sampler,\n headers: headersFromConfig ?? {},\n auth: authConfig ?? null,\n };\n}\nfunction extractString(value) {\n if (typeof value === 'string' && value.trim().length > 0) {\n return value;\n }\n return undefined;\n}\nfunction pickFirst(source, keys) {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const value = source[key];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction extractHeaders(value) {\n if (!value || typeof value !== 'object') {\n return null;\n }\n const headers = {};\n for (const [key, raw] of Object.entries(value)) {\n if (typeof raw === 'string') {\n headers[key] = raw;\n }\n }\n return Object.keys(headers).length > 0 ? headers : null;\n}\nexport default OpenTelemetryTraceEmitterFactory;\n//# sourceMappingURL=open-telemetry-trace-emitter-factory.js.map","import { Expressions } from '@naylence/factory';\nimport { getLogger } from '../util/logging.js';\nimport { TRACE_EMITTER_FACTORY_BASE_TYPE, TraceEmitterFactory, } from './trace-emitter-factory.js';\nconst logger = getLogger('naylence.fame.telemetry.trace_emitter_profile_factory');\nexport const PROFILE_NAME_NOOP = 'noop';\nexport const PROFILE_NAME_OPEN_TELEMETRY = 'open-telemetry';\nconst ENV_VAR_TELEMETRY_SERVICE_NAME = 'FAME_TELEMETRY_SERVICE_NAME';\nconst NOOP_PROFILE = {\n type: 'NoopTraceEmitter',\n};\nconst OPEN_TELEMETRY_PROFILE = {\n type: 'OpenTelemetryTraceEmitter',\n serviceName: Expressions.env(ENV_VAR_TELEMETRY_SERVICE_NAME, 'naylence-service'),\n headers: {},\n};\nconst PROFILE_MAP = {\n [PROFILE_NAME_NOOP]: NOOP_PROFILE,\n [PROFILE_NAME_OPEN_TELEMETRY]: OPEN_TELEMETRY_PROFILE,\n};\nexport const FACTORY_META = {\n base: TRACE_EMITTER_FACTORY_BASE_TYPE,\n key: 'TraceEmitterProfile',\n};\nexport class TraceEmitterProfileFactory extends TraceEmitterFactory {\n constructor() {\n super(...arguments);\n this.type = 'TraceEmitterProfile';\n }\n async create(config, ...factoryArgs) {\n const normalized = normalizeTraceEmitterProfileConfig(config);\n const profileConfig = resolveProfileConfig(normalized.profile);\n logger.debug('enabling_trace_emitter_profile', {\n profile: normalized.profile,\n });\n const traceEmitter = await TraceEmitterFactory.createTraceEmitter(profileConfig, {\n factoryArgs,\n });\n if (!traceEmitter) {\n throw new Error(`Failed to instantiate trace emitter profile: ${normalized.profile}`);\n }\n return traceEmitter;\n }\n}\nfunction normalizeTraceEmitterProfileConfig(config) {\n if (!config) {\n return { profile: PROFILE_NAME_NOOP };\n }\n const candidate = config;\n const profileValue = resolveProfileName(candidate);\n const canonicalProfile = canonicalizeProfileName(profileValue);\n candidate.profile = canonicalProfile;\n return { profile: canonicalProfile };\n}\nfunction resolveProfileName(candidate) {\n const direct = coerceProfileString(candidate.profile);\n if (direct) {\n return direct;\n }\n const legacyKeys = ['profile_name', 'profileName'];\n for (const legacyKey of legacyKeys) {\n const legacyValue = coerceProfileString(candidate[legacyKey]);\n if (legacyValue) {\n return legacyValue;\n }\n }\n return PROFILE_NAME_NOOP;\n}\nfunction coerceProfileString(value) {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\nconst PROFILE_ALIASES = {\n noop: PROFILE_NAME_NOOP,\n 'no-op': PROFILE_NAME_NOOP,\n no_op: PROFILE_NAME_NOOP,\n 'open-telemetry': PROFILE_NAME_OPEN_TELEMETRY,\n open_telemetry: PROFILE_NAME_OPEN_TELEMETRY,\n opentelemetry: PROFILE_NAME_OPEN_TELEMETRY,\n};\nfunction canonicalizeProfileName(value) {\n const normalized = value.replace(/[\\s_]+/g, '-').toLowerCase();\n return PROFILE_ALIASES[normalized] ?? normalized;\n}\nfunction resolveProfileConfig(profileName) {\n const profile = PROFILE_MAP[profileName];\n if (!profile) {\n throw new Error(`Unknown trace emitter profile: ${profileName}`);\n }\n return deepClone(profile);\n}\nfunction deepClone(value) {\n return JSON.parse(JSON.stringify(value));\n}\nexport default TraceEmitterProfileFactory;\n//# sourceMappingURL=trace-emitter-profile-factory.js.map","import { getLogger } from '../../util/logging.js';\nconst logger = getLogger('naylence.fame.security.auth.jwt_token_issuer');\nlet joseModulePromise = null;\nasync function requireJose() {\n if (!joseModulePromise) {\n joseModulePromise = import('jose').catch(() => {\n joseModulePromise = null;\n throw new Error('The \"jose\" dependency is required for JWT token functionality. Install it with: npm install jose');\n });\n }\n return joseModulePromise;\n}\nfunction isHmacAlgorithm(algorithm) {\n return algorithm.toUpperCase().startsWith('HS');\n}\nfunction isPkcs8Algorithm(algorithm) {\n const upper = algorithm.toUpperCase();\n return (upper === 'EDDSA' ||\n upper.startsWith('RS') ||\n upper.startsWith('PS') ||\n upper.startsWith('ES'));\n}\nfunction normalizeOptions(options) {\n if (!options || typeof options !== 'object') {\n throw new TypeError('JWTTokenIssuer options must be an object');\n }\n const signingKeyPem = typeof options.signingKeyPem === 'string' && options.signingKeyPem.trim()\n ? options.signingKeyPem.trim()\n : typeof options.signing_key_pem === 'string' &&\n options.signing_key_pem.trim().length > 0\n ? options.signing_key_pem.trim()\n : undefined;\n if (!signingKeyPem) {\n throw new Error('JWTTokenIssuer requires signingKeyPem');\n }\n const kid = typeof options.kid === 'string' && options.kid.trim().length > 0\n ? options.kid.trim()\n : undefined;\n if (!kid) {\n throw new Error('JWTTokenIssuer requires kid');\n }\n const issuer = typeof options.issuer === 'string' && options.issuer.trim().length > 0\n ? options.issuer.trim()\n : undefined;\n if (!issuer) {\n throw new Error('JWTTokenIssuer requires issuer');\n }\n const algorithm = typeof options.algorithm === 'string' && options.algorithm.trim().length > 0\n ? options.algorithm.trim()\n : 'EdDSA';\n const ttlCandidate = typeof options.ttlSec === 'number'\n ? options.ttlSec\n : typeof options.ttl_sec === 'number'\n ? options.ttl_sec\n : undefined;\n const ttlSec = Number.isFinite(ttlCandidate) ? Number(ttlCandidate) : 3600;\n const audience = typeof options.audience === 'string' && options.audience.trim().length > 0\n ? options.audience.trim()\n : undefined;\n return {\n signingKeyPem,\n kid,\n issuer,\n algorithm,\n ttlSec,\n audience,\n };\n}\nexport class JWTTokenIssuer {\n constructor(options) {\n const normalized = normalizeOptions(options);\n this.signingKeyPem = normalized.signingKeyPem;\n this.kid = normalized.kid;\n this.issuerId = normalized.issuer;\n this.algorithm = normalized.algorithm;\n this.ttlSec = normalized.ttlSec;\n this.audience = normalized.audience;\n logger.debug('created_jwt_token_issuer', {\n issuer: normalized.issuer,\n kid: normalized.kid,\n audience: normalized.audience ?? null,\n algorithm: normalized.algorithm,\n });\n }\n get issuer() {\n return this.issuerId;\n }\n async issue(claims) {\n const jose = await requireJose();\n const signingKey = await this.resolveSigningKey(jose);\n const nowSeconds = Math.floor(Date.now() / 1000);\n const payload = this.buildTokenClaims(claims, nowSeconds);\n const signer = new jose.SignJWT(payload).setProtectedHeader({\n alg: this.algorithm,\n kid: this.kid,\n typ: 'JWT',\n });\n return signer.sign(signingKey);\n }\n async resolveSigningKey(jose) {\n if (!this.signingKey) {\n this.signingKey = this.loadSigningKey(jose);\n }\n return this.signingKey;\n }\n async loadSigningKey(jose) {\n if (isHmacAlgorithm(this.algorithm)) {\n return new TextEncoder().encode(this.signingKeyPem);\n }\n if (isPkcs8Algorithm(this.algorithm)) {\n return jose.importPKCS8(this.signingKeyPem, this.algorithm);\n }\n throw new Error(`Unsupported JWT algorithm: ${this.algorithm}`);\n }\n buildTokenClaims(claims, nowSeconds) {\n const baseClaims = {\n iss: this.issuerId,\n iat: nowSeconds,\n nbf: nowSeconds,\n exp: nowSeconds + this.ttlSec,\n };\n if (this.audience !== undefined && !('aud' in claims)) {\n baseClaims.aud = this.audience;\n }\n for (const [key, value] of Object.entries(claims)) {\n if (value !== undefined) {\n baseClaims[key] = value;\n }\n }\n return baseClaims;\n }\n}\n//# sourceMappingURL=jwt-token-issuer.js.map","let joseModulePromise = null;\nexport async function requireJose() {\n if (!joseModulePromise) {\n joseModulePromise = import('jose').catch((error) => {\n joseModulePromise = null;\n const dependencyError = new Error('The \"jose\" dependency is required for JWT verification. Install it with: npm install jose');\n dependencyError.cause = error;\n throw dependencyError;\n });\n }\n return joseModulePromise;\n}\n//# sourceMappingURL=jose-loader.js.map","export function extractScopesFromPayload(payload) {\n const scopes = new Set();\n const add = (value) => {\n if (typeof value === 'string') {\n value\n .split(/[\\s,]+/)\n .filter(Boolean)\n .forEach((item) => scopes.add(item));\n }\n else if (Array.isArray(value)) {\n value\n .map((item) => (typeof item === 'string' ? item.trim() : ''))\n .filter(Boolean)\n .forEach((item) => scopes.add(item));\n }\n };\n add(payload.scope);\n add(payload.scopes);\n add(payload.scp);\n return scopes;\n}\nexport function buildAuthorizationContext(payload, kid, overrides) {\n const claims = { ...payload };\n const grantedScopes = Array.from(extractScopesFromPayload(payload));\n if (typeof payload.jti === 'string') {\n claims.jti = payload.jti;\n }\n if (typeof kid === 'string' && kid.length > 0) {\n claims.kid = kid;\n }\n return {\n authenticated: true,\n authorized: true,\n claims,\n grantedScopes,\n restrictions: {},\n ...(typeof payload.sub === 'string' ? { principal: payload.sub } : {}),\n ...overrides,\n };\n}\n//# sourceMappingURL=jwt-authorization-utils.js.map","import { getLogger } from '../../util/logging.js';\nimport { TTL_NEVER_EXPIRES } from '../../constants/ttl-constants.js';\nimport { validateJwtTokenTtlSec } from '../../util/ttl-validation.js';\nimport { requireJose, } from './jose-loader.js';\nimport { buildAuthorizationContext, extractScopesFromPayload, } from './jwt-authorization-utils.js';\nconst logger = getLogger('naylence.fame.security.auth.jwt_token_verifier');\nconst DEFAULT_ALGORITHMS = ['EdDSA', 'RS256', 'HS256'];\nfunction normalizeOptions(options) {\n if (!options || typeof options !== 'object') {\n throw new TypeError('JWTTokenVerifier options must be an object');\n }\n const verificationKey = options.verificationKey ?? options.verification_key ?? undefined;\n if (!verificationKey) {\n throw new Error('JWTTokenVerifier requires a verification key');\n }\n const issuer = typeof options.issuer === 'string' && options.issuer.trim().length > 0\n ? options.issuer.trim()\n : undefined;\n if (!issuer) {\n throw new Error('JWTTokenVerifier requires an issuer');\n }\n const ttlCandidate = typeof options.ttlSec === 'number'\n ? options.ttlSec\n : typeof options.ttl_sec === 'number'\n ? options.ttl_sec\n : undefined;\n const revokedCandidate = typeof options.revokedCapacity === 'number'\n ? options.revokedCapacity\n : typeof options.revoked_capacity === 'number'\n ? options.revoked_capacity\n : undefined;\n const requiredScopes = Array.isArray(options.requiredScopes)\n ? options.requiredScopes\n : Array.isArray(options.required_scopes)\n ? options.required_scopes\n : undefined;\n const algorithms = Array.isArray(options.algorithms)\n ? options.algorithms\n : undefined;\n return {\n verificationKey,\n issuer,\n ttlSec: ttlCandidate,\n revokedCapacity: revokedCandidate,\n requiredScopes,\n algorithms,\n };\n}\nexport class JWTTokenVerifier {\n constructor(options) {\n this.revokedIndex = 0;\n const normalized = normalizeOptions(options);\n this.options = normalized;\n this.issuer = normalized.issuer;\n const requestedTtl = Number.isFinite(normalized.ttlSec)\n ? Number(normalized.ttlSec)\n : 3600;\n const validatedTtl = validateJwtTokenTtlSec(requestedTtl);\n this.ttlSec =\n typeof validatedTtl === 'number' ? validatedTtl : requestedTtl;\n if (this.ttlSec === TTL_NEVER_EXPIRES) {\n throw new Error('JWTTokenVerifier does not support tokens that never expire');\n }\n this.algorithms = (normalized.algorithms && normalized.algorithms.length > 0\n ? normalized.algorithms\n : Array.from(DEFAULT_ALGORITHMS)).map((alg) => alg.toString().trim());\n this.requiredScopes =\n normalized.requiredScopes?.filter((scope) => scope.trim().length > 0) ??\n [];\n this.revokedCapacity = Math.max(0, normalized.revokedCapacity ?? 1000);\n this.revokedTokens = new Array(this.revokedCapacity).fill(null);\n logger.debug('jwt_token_verifier_initialized', {\n issuer: this.issuer,\n ttl_sec: this.ttlSec,\n revoked_capacity: this.revokedCapacity,\n required_scopes: this.requiredScopes,\n algorithms: this.algorithms,\n });\n }\n revoke(jti) {\n if (!this.revokedCapacity) {\n return;\n }\n this.revokedTokens[this.revokedIndex] = jti;\n this.revokedIndex = (this.revokedIndex + 1) % this.revokedCapacity;\n }\n async verify(token, options = {}) {\n const jose = await requireJose();\n const unverified = jose.decodeJwt(token);\n const jti = typeof unverified.jti === 'string' ? unverified.jti : null;\n if (jti && this.isRevoked(jti)) {\n throw new Error('Token has been revoked');\n }\n const key = await this.resolveVerificationKey(jose);\n try {\n const verifyOptions = {\n issuer: this.issuer,\n algorithms: Array.from(this.algorithms),\n maxTokenAge: `${this.ttlSec}s`,\n };\n if (options.expectedAudience !== undefined) {\n verifyOptions.audience = options.expectedAudience;\n }\n const { payload, protectedHeader } = await jose.jwtVerify(token, key, verifyOptions);\n this.ensureRequiredScopes(payload);\n return buildAuthorizationContext(payload, protectedHeader?.kid);\n }\n catch (error) {\n logger.warning('jwt_token_verifier_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw this.normalizeJoseError(error);\n }\n }\n isRevoked(jti) {\n if (!this.revokedCapacity) {\n return false;\n }\n return this.revokedTokens.includes(jti);\n }\n ensureRequiredScopes(payload) {\n if (!this.requiredScopes.length) {\n return;\n }\n const tokenScopes = extractScopesFromPayload(payload);\n const missingScope = this.requiredScopes.find((scope) => !tokenScopes.has(scope));\n if (missingScope) {\n throw new Error(`Token missing required scope: ${missingScope}`);\n }\n }\n async resolveVerificationKey(jose) {\n if (!this.signingKeyPromise) {\n this.signingKeyPromise = this.loadVerificationKey(jose);\n }\n return this.signingKeyPromise;\n }\n async loadVerificationKey(jose) {\n const key = this.options.verificationKey;\n if (typeof key === 'string') {\n if (this.isSymmetricAlgorithm()) {\n return new TextEncoder().encode(key);\n }\n return jose.importSPKI(key, this.algorithms[0] ?? 'EdDSA');\n }\n return key;\n }\n isSymmetricAlgorithm() {\n return this.algorithms.some((alg) => alg.toUpperCase().startsWith('HS'));\n }\n normalizeJoseError(error) {\n if (error instanceof Error) {\n if ('code' in error) {\n switch (error.code) {\n case 'ERR_JWE_INVALID':\n case 'ERR_JWS_INVALID':\n case 'ERR_JWT_INVALID':\n return this.withCause('Invalid token', error);\n default:\n break;\n }\n }\n if (error.name === 'JWTExpired' ||\n /\\b(exp|expired|expiration)\\b/i.test(error.message)) {\n return this.withCause('Token has expired', error);\n }\n if (error.name === 'JWTClaimValidationFailed') {\n const claim = error.claim;\n if (claim === 'aud' || /audience/.test(error.message)) {\n return this.withCause('Invalid audience', error);\n }\n if (claim === 'iss' || /issuer/.test(error.message)) {\n return this.withCause('Invalid issuer', error);\n }\n if (claim === 'sub' || /subject/.test(error.message)) {\n return this.withCause('Invalid subject', error);\n }\n }\n return error;\n }\n return new Error('Token verification failed');\n }\n withCause(message, cause) {\n const err = new Error(message);\n err.cause = cause;\n return err;\n }\n}\n//# sourceMappingURL=jwt-token-verifier.js.map","export async function buildDevKeyPair(jose, keyPair, kid, jwkFields) {\n const privatePem = await jose.exportPKCS8(keyPair.privateKey);\n const publicPem = await jose.exportSPKI(keyPair.publicKey);\n const jwk = await jose.exportJWK(keyPair.publicKey);\n const jwkRecord = {\n ...jwk,\n ...jwkFields,\n kid,\n };\n return {\n privatePem,\n publicPem,\n jwks: {\n keys: [jwkRecord],\n },\n };\n}\n//# sourceMappingURL=key-factory-utils.js.map","import { requireCryptoSupport } from '../crypto-dependencies.js';\nimport { requireJose } from '../../auth/jose-loader.js';\nimport { buildDevKeyPair } from './key-factory-utils.js';\nexport async function createEd25519Keypair(kid = 'dev') {\n requireCryptoSupport();\n const jose = await requireJose();\n const keyPair = await jose.generateKeyPair('Ed25519', { extractable: true });\n return buildDevKeyPair(jose, keyPair, kid, { alg: 'EdDSA', use: 'sig' });\n}\n//# sourceMappingURL=ed25519-key-factory.js.map","import { requireCryptoSupport } from '../crypto-dependencies.js';\nimport { requireJose } from '../../auth/jose-loader.js';\nimport { buildDevKeyPair } from './key-factory-utils.js';\nexport async function createRsaKeypair(kid = 'dev') {\n requireCryptoSupport();\n const jose = await requireJose();\n const keyPair = await jose.generateKeyPair('RS256', {\n modulusLength: 2048,\n extractable: true,\n });\n return buildDevKeyPair(jose, keyPair, kid, { alg: 'RS256', use: 'sig' });\n}\n//# sourceMappingURL=rsa-key-factory.js.map","import { requireCryptoSupport } from '../crypto-dependencies.js';\nimport { requireJose } from '../../auth/jose-loader.js';\nexport async function createX25519Keypair(kid = 'dev-x25519') {\n requireCryptoSupport();\n const jose = await requireJose();\n void kid;\n const keyPair = await jose.generateKeyPair('ECDH-ES', {\n extractable: true,\n crv: 'X25519',\n });\n const privatePem = await jose.exportPKCS8(keyPair.privateKey);\n const publicPem = await jose.exportSPKI(keyPair.publicKey);\n return {\n privatePem,\n publicPem,\n jwks: { keys: [] },\n };\n}\n//# sourceMappingURL=x25519-key-factory.js.map","import { AsnConvert, OctetString } from '@peculiar/asn1-schema';\nimport { AlgorithmIdentifier, Attribute, AttributeTypeAndValue, AttributeValue, Extension, Extensions, GeneralName, Name, RelativeDistinguishedName, SubjectAlternativeName, SubjectPublicKeyInfo, id_ce_subjectAltName, } from '@peculiar/asn1-x509';\nimport { Attributes, CertificationRequest, CertificationRequestInfo, } from '@peculiar/asn1-csr';\nimport { generateId } from '@naylence/core';\nimport { getLogger } from '../../../util/logging.js';\nimport { secureDigest } from '../../../util/util.js';\nimport { JWTTokenIssuer } from '../../auth/jwt-token-issuer.js';\nimport { JWTTokenVerifier } from '../../auth/jwt-token-verifier.js';\nimport { requireJose } from '../../auth/jose-loader.js';\nimport { createEd25519Keypair, createRsaKeypair, createX25519Keypair, } from '../key-factories/index.js';\nconst logger = getLogger('naylence.fame.security.crypto.providers.default_crypto_provider');\nconst ENV_VAR_CRYPTO_ALGORITHM = 'FAME_CRYPTO_ALGORITHM';\nconst DEFAULT_CRYPTO_ALGORITHM = 'EdDSA';\nconst DEFAULT_ISSUER = 'dev.naylence.ai';\nconst DEFAULT_AUDIENCE = 'router-dev';\nconst DEFAULT_TTL_SEC = 3600;\nconst DEFAULT_HMAC_SECRET_BYTES = 32;\nconst ENCRYPTION_ALG = 'ECDH-ES';\nconst EXTENSION_REQUEST_OID = '1.2.840.113549.1.9.14';\nconst COMMON_NAME_OID = '2.5.4.3';\nconst ED25519_OID = '1.3.101.112';\nconst CSR_PEM_TAG = 'CERTIFICATE REQUEST';\nconst LOGICAL_URI_PREFIX = 'naylence://';\nfunction normalizeDefaultCryptoProviderOptions(options) {\n if (!options) {\n return {};\n }\n const source = options;\n const normalized = {};\n const readNullableString = (...keys) => {\n for (const key of keys) {\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\n continue;\n }\n const value = source[key];\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n if (typeof value === 'string') {\n return value;\n }\n return String(value);\n }\n return undefined;\n };\n const readNullableNumber = (...keys) => {\n for (const key of keys) {\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\n continue;\n }\n const value = source[key];\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n const parsed = Number(trimmed);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n }\n return undefined;\n };\n const assignStringOption = (targetKey, ...keys) => {\n const value = readNullableString(...keys);\n if (value !== undefined) {\n normalized[targetKey] = value;\n }\n };\n assignStringOption('signaturePrivatePem', 'signaturePrivatePem', 'signature_private_pem');\n assignStringOption('signaturePublicPem', 'signaturePublicPem', 'signature_public_pem');\n assignStringOption('signatureKeyId', 'signatureKeyId', 'signature_key_id');\n assignStringOption('encryptionPrivatePem', 'encryptionPrivatePem', 'encryption_private_pem');\n assignStringOption('encryptionPublicPem', 'encryptionPublicPem', 'encryption_public_pem');\n assignStringOption('encryptionKeyId', 'encryptionKeyId', 'encryption_key_id');\n assignStringOption('hmacSecret', 'hmacSecret', 'hmac_secret');\n assignStringOption('issuer', 'issuer', 'iss');\n assignStringOption('audience', 'audience', 'aud');\n assignStringOption('algorithm', 'algorithm', 'alg');\n const ttlSec = readNullableNumber('ttlSec', 'ttl_sec');\n if (ttlSec !== undefined) {\n normalized.ttlSec = ttlSec;\n }\n return normalized;\n}\nexport class DefaultCryptoProvider {\n static async create(options = {}) {\n const normalized = normalizeDefaultCryptoProviderOptions(options);\n const artifacts = await buildProviderArtifacts(normalized);\n return new DefaultCryptoProvider(artifacts);\n }\n constructor(artifacts) {\n this.artifacts = artifacts;\n this.tokenIssuerInstance = null;\n this.tokenVerifierInstance = null;\n this.nodeCertPem = null;\n this.nodeCertChainPem = null;\n this.certContext = null;\n logger.debug('default_crypto_provider_initialized', {\n signature_key_id: artifacts.signing.keyId,\n encryption_key_id: artifacts.encryption.keyId,\n issuer: artifacts.issuer,\n audience: artifacts.audience,\n algorithm: artifacts.signing.algorithm,\n });\n }\n get signingPrivatePem() {\n return this.artifacts.signing.privatePem;\n }\n get signingPublicPem() {\n return this.artifacts.signing.publicPem;\n }\n get signatureKeyId() {\n return this.artifacts.signing.keyId;\n }\n get encryptionPrivatePem() {\n return this.artifacts.encryption.privatePem;\n }\n get encryptionPublicPem() {\n return this.artifacts.encryption.publicPem;\n }\n get encryptionKeyId() {\n return this.artifacts.encryption.keyId;\n }\n get hmacSecret() {\n return this.artifacts.hmacSecret;\n }\n get issuer() {\n return this.artifacts.issuer;\n }\n get audience() {\n return this.artifacts.audience;\n }\n get ttlSec() {\n return this.artifacts.ttlSec;\n }\n getTokenIssuer() {\n if (this.tokenIssuerInstance) {\n return this.tokenIssuerInstance;\n }\n const algorithm = this.artifacts.signing.algorithm;\n if (algorithm.startsWith('HS')) {\n this.tokenIssuerInstance = new JWTTokenIssuer({\n signingKeyPem: this.hmacSecret,\n kid: this.signatureKeyId,\n issuer: this.issuer,\n algorithm,\n ttlSec: this.ttlSec,\n audience: this.audience,\n });\n return this.tokenIssuerInstance;\n }\n this.tokenIssuerInstance = new JWTTokenIssuer({\n signingKeyPem: this.signingPrivatePem,\n kid: this.signatureKeyId,\n issuer: this.issuer,\n algorithm,\n ttlSec: this.ttlSec,\n audience: this.audience,\n });\n return this.tokenIssuerInstance;\n }\n getTokenVerifier() {\n if (this.tokenVerifierInstance) {\n return this.tokenVerifierInstance;\n }\n const algorithm = this.artifacts.signing.algorithm;\n const verificationKey = algorithm.startsWith('HS')\n ? this.hmacSecret\n : this.signingPublicPem;\n this.tokenVerifierInstance = new JWTTokenVerifier({\n verificationKey,\n issuer: this.issuer,\n ttlSec: this.ttlSec,\n algorithms: [algorithm],\n });\n return this.tokenVerifierInstance;\n }\n getJwks() {\n const { signing, encryption } = this.artifacts;\n const keys = [cloneJson(signing.jwk)];\n if (encryption.jwk) {\n keys.push(cloneJson(encryption.jwk));\n }\n return { keys };\n }\n nodeJwk() {\n const signing = cloneJson(this.artifacts.signing.jwk);\n if (this.nodeCertPem) {\n signing.x5c = buildX5cChain(this.nodeCertPem, this.nodeCertChainPem);\n }\n return signing;\n }\n nodeCertificatePem() {\n return this.nodeCertPem;\n }\n certificateChainPem() {\n return this.nodeCertChainPem;\n }\n hasCertificate() {\n return Boolean(this.nodeCertPem);\n }\n getCertificateContext() {\n return this.certContext ? cloneJson(this.certContext) : null;\n }\n hasNodeContext() {\n return this.certContext !== null;\n }\n setNodeContext(nodeId, physicalPath, logicals, _parentPath) {\n const nodeSid = secureDigest(physicalPath);\n this.certContext = {\n nodeId,\n nodeSid,\n physicalPath,\n logicals: [...logicals],\n };\n logger.debug('node_context_set', {\n node_id: nodeId,\n physical_path: physicalPath,\n logicals,\n message: 'Certificate generation via external CA service required',\n });\n }\n setNodeContextFromNodeLike(nodeLike) {\n this.setNodeContext(nodeLike.id, nodeLike.physicalPath, Array.from(nodeLike.acceptedLogicals));\n if (this.certContext &&\n nodeLike.sid &&\n nodeLike.sid !== this.certContext.nodeSid) {\n this.certContext = {\n ...this.certContext,\n nodeSid: nodeLike.sid,\n };\n logger.debug('node_context_updated_with_nodelike_sid', {\n node_id: nodeLike.id,\n provided_sid: nodeLike.sid,\n message: 'Certificate generation via external CA service required',\n });\n }\n }\n prepareForAttach(nodeId, physicalPath, logicals) {\n const nodeSid = secureDigest(physicalPath);\n this.certContext = {\n nodeId,\n nodeSid,\n physicalPath,\n logicals: [...logicals],\n };\n logger.debug('prepared_context_for_attach', {\n node_id: nodeId,\n physical_path: physicalPath,\n node_sid: nodeSid,\n logicals,\n message: 'Certificate generation via external CA service required',\n });\n }\n setLogicals(logicals) {\n if (!this.certContext) {\n return;\n }\n this.certContext = {\n ...this.certContext,\n logicals: [...logicals],\n };\n logger.debug('logicals_updated', {\n node_id: this.certContext.nodeId,\n logicals,\n message: 'Certificate regeneration via external CA service required',\n });\n }\n storeSignedCertificate(certificatePem, certificateChainPem) {\n this.nodeCertPem = certificatePem;\n this.nodeCertChainPem = certificateChainPem ?? null;\n logger.debug('certificate_stored', {\n has_certificate: Boolean(certificatePem),\n has_chain: Boolean(certificateChainPem),\n });\n }\n async createCsr(nodeId, physicalPath, logicals, subjectName) {\n const trimmedNodeId = assertNonEmptyString(nodeId, 'nodeId');\n const trimmedPhysicalPath = assertNonEmptyString(physicalPath, 'physicalPath');\n try {\n if (this.artifacts.signing.algorithm !== 'EdDSA') {\n throw new Error('CSR creation only supported for Ed25519 signing keys in the default crypto provider');\n }\n const cryptoImpl = await ensureWebCrypto();\n const privateKey = await cryptoImpl.subtle.importKey('pkcs8', pemToArrayBuffer(this.signingPrivatePem), {\n name: 'Ed25519',\n }, false, ['sign']);\n const publicKeyDer = pemToArrayBuffer(this.signingPublicPem);\n const subjectPkInfo = AsnConvert.parse(publicKeyDer, SubjectPublicKeyInfo);\n const sanitizedLogicals = Array.isArray(logicals)\n ? logicals.filter((value) => typeof value === 'string' && value.trim().length > 0)\n : [];\n const commonName = typeof subjectName === 'string' && subjectName.trim().length > 0\n ? subjectName.trim()\n : trimmedNodeId;\n const subject = buildSubjectName(commonName);\n const attributes = new Attributes();\n if (sanitizedLogicals.length > 0) {\n const san = new SubjectAlternativeName(sanitizedLogicals.map((logical) => new GeneralName({\n uniformResourceIdentifier: `${LOGICAL_URI_PREFIX}${logical}`,\n })));\n const extensions = new Extensions([\n new Extension({\n extnID: id_ce_subjectAltName,\n critical: false,\n extnValue: new OctetString(AsnConvert.serialize(san)),\n }),\n ]);\n attributes.push(new Attribute({\n type: EXTENSION_REQUEST_OID,\n values: [AsnConvert.serialize(extensions)],\n }));\n }\n const requestInfo = new CertificationRequestInfo({\n subject,\n subjectPKInfo: subjectPkInfo,\n attributes,\n });\n const requestInfoDer = AsnConvert.serialize(requestInfo);\n const signature = await cryptoImpl.subtle.sign('Ed25519', privateKey, requestInfoDer);\n const certificationRequest = new CertificationRequest({\n certificationRequestInfo: requestInfo,\n signatureAlgorithm: new AlgorithmIdentifier({\n algorithm: ED25519_OID,\n }),\n signature: encodeBitString(signature),\n });\n certificationRequest.certificationRequestInfoRaw = requestInfoDer;\n const csrDer = AsnConvert.serialize(certificationRequest);\n const csrPem = arrayBufferToPem(csrDer, CSR_PEM_TAG);\n logger.debug('csr_created', {\n node_id: trimmedNodeId,\n physical_path: trimmedPhysicalPath,\n logical_count: sanitizedLogicals.length,\n });\n return csrPem;\n }\n catch (error) {\n logger.error('csr_creation_failed', {\n node_id: trimmedNodeId,\n physical_path: trimmedPhysicalPath,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n}\nasync function buildProviderArtifacts(options) {\n const algorithm = normalizeAlgorithm(options.algorithm ?? readEnvAlgorithm());\n const signatureKeyId = options.signatureKeyId?.trim() || generateId();\n const encryptionKeyId = options.encryptionKeyId?.trim() || generateId();\n const issuer = options.issuer?.trim() || DEFAULT_ISSUER;\n const audience = options.audience?.trim() || DEFAULT_AUDIENCE;\n const ttlSec = typeof options.ttlSec === 'number' && options.ttlSec > 0\n ? options.ttlSec\n : DEFAULT_TTL_SEC;\n const signingParams = {\n algorithm,\n keyId: signatureKeyId,\n };\n if (options.signaturePrivatePem) {\n signingParams.privatePem = options.signaturePrivatePem;\n }\n if (options.signaturePublicPem) {\n signingParams.publicPem = options.signaturePublicPem;\n }\n const signing = await resolveSigningArtifacts(signingParams);\n const encryptionParams = {\n keyId: encryptionKeyId,\n };\n if (options.encryptionPrivatePem) {\n encryptionParams.privatePem = options.encryptionPrivatePem;\n }\n if (options.encryptionPublicPem) {\n encryptionParams.publicPem = options.encryptionPublicPem;\n }\n const encryption = await resolveEncryptionArtifacts(encryptionParams);\n const hmacSecret = options.hmacSecret?.trim() ||\n (await generateRandomSecretBase64(DEFAULT_HMAC_SECRET_BYTES));\n return {\n signing,\n encryption,\n hmacSecret,\n issuer,\n audience,\n ttlSec,\n };\n}\nasync function resolveSigningArtifacts(params) {\n const normalizedAlg = mapAlgorithmToJwt(params.algorithm);\n if (params.privatePem && params.publicPem) {\n const jwk = await buildSigningJwkFromPem(params.publicPem, params.keyId, normalizedAlg);\n return {\n privatePem: params.privatePem,\n publicPem: params.publicPem,\n keyId: params.keyId,\n jwk,\n algorithm: normalizedAlg,\n };\n }\n let keyPair;\n if (normalizedAlg === 'EdDSA') {\n keyPair = await createEd25519Keypair(params.keyId);\n }\n else if (normalizedAlg.startsWith('RS')) {\n keyPair = await createRsaKeypair(params.keyId);\n }\n else {\n throw new Error(`Unsupported signing algorithm: ${params.algorithm}`);\n }\n const baseJwk = Array.isArray(keyPair.jwks.keys)\n ? keyPair.jwks.keys[0]\n : undefined;\n const jwk = cloneJson(baseJwk ?? {});\n jwk.kid = params.keyId;\n jwk.alg = normalizedAlg;\n jwk.use = 'sig';\n return {\n privatePem: keyPair.privatePem,\n publicPem: keyPair.publicPem,\n keyId: params.keyId,\n jwk,\n algorithm: normalizedAlg,\n };\n}\nasync function resolveEncryptionArtifacts(params) {\n if (params.privatePem && params.publicPem) {\n const jwk = await buildEncryptionJwkFromPem(params.publicPem, params.keyId);\n return {\n privatePem: params.privatePem,\n publicPem: params.publicPem,\n keyId: params.keyId,\n jwk,\n };\n }\n const keyPair = await createX25519Keypair(params.keyId);\n const jwk = await buildEncryptionJwkFromPem(keyPair.publicPem, params.keyId);\n return {\n privatePem: keyPair.privatePem,\n publicPem: keyPair.publicPem,\n keyId: params.keyId,\n jwk,\n };\n}\nfunction normalizeAlgorithm(value) {\n if (!value) {\n return DEFAULT_CRYPTO_ALGORITHM;\n }\n const trimmed = value.trim();\n if (!trimmed) {\n return DEFAULT_CRYPTO_ALGORITHM;\n }\n const upper = trimmed.toUpperCase();\n if (upper === 'EDDSA' || upper === 'ED25519') {\n return 'EdDSA';\n }\n if (upper === 'RSA') {\n return 'RSA';\n }\n if (upper.startsWith('RS') ||\n upper.startsWith('PS') ||\n upper.startsWith('ES') ||\n upper.startsWith('HS')) {\n return upper;\n }\n return trimmed;\n}\nfunction mapAlgorithmToJwt(value) {\n const upper = value.toUpperCase();\n if (upper === 'RSA') {\n return 'RS256';\n }\n return value;\n}\nfunction readEnvAlgorithm() {\n if (typeof process === 'undefined' || !process.env) {\n return null;\n }\n const envValue = process.env[ENV_VAR_CRYPTO_ALGORITHM];\n return envValue ?? null;\n}\nasync function buildSigningJwkFromPem(publicPem, kid, preferredAlg) {\n const jose = await requireJose();\n const candidates = preferredAlg\n ? [preferredAlg, 'EdDSA', 'RS256', 'ES256', 'ES384', 'ES512']\n : ['EdDSA', 'RS256', 'ES256', 'ES384', 'ES512'];\n for (const alg of candidates) {\n try {\n const key = await jose.importSPKI(publicPem, alg);\n const jwk = await jose.exportJWK(key);\n if (jwk && typeof jwk === 'object') {\n const result = {\n ...jwk,\n kid,\n use: 'sig',\n alg,\n };\n return result;\n }\n }\n catch {\n continue;\n }\n }\n throw new Error('Unable to derive JWK from signing public key PEM');\n}\nasync function buildEncryptionJwkFromPem(publicPem, kid) {\n const jose = await requireJose();\n try {\n const key = await jose.importSPKI(publicPem, ENCRYPTION_ALG);\n const jwk = await jose.exportJWK(key);\n if (jwk && typeof jwk === 'object') {\n return {\n ...jwk,\n kid,\n use: 'enc',\n alg: ENCRYPTION_ALG,\n };\n }\n }\n catch (error) {\n logger.warning('x25519_jwk_from_pem_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n throw new Error('Unable to derive JWK from X25519 public key PEM');\n}\nasync function generateRandomSecretBase64(length) {\n if (typeof globalThis !== 'undefined' &&\n globalThis.crypto &&\n typeof globalThis.crypto.getRandomValues === 'function') {\n const bytes = new Uint8Array(length);\n globalThis.crypto.getRandomValues(bytes);\n return bytesToBase64(bytes);\n }\n if (typeof process !== 'undefined') {\n const { randomBytes } = await import('crypto');\n return randomBytes(length).toString('base64');\n }\n throw new Error('No cryptographic random source available to generate HMAC secret');\n}\nfunction bytesToBase64(bytes) {\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(bytes).toString('base64');\n }\n let binary = '';\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\nfunction buildX5cChain(certificatePem, chainPem) {\n const chain = [];\n const seen = new Set();\n const appendIfNew = (pem) => {\n const derBase64 = pemToDerBase64(pem);\n if (seen.has(derBase64)) {\n return;\n }\n seen.add(derBase64);\n chain.push(derBase64);\n };\n appendIfNew(certificatePem);\n if (chainPem) {\n for (const cert of splitPemCertificates(chainPem)) {\n appendIfNew(cert);\n }\n }\n return chain;\n}\nfunction splitPemCertificates(pem) {\n const matches = pem.match(/-----BEGIN CERTIFICATE-----[\\s\\S]*?-----END CERTIFICATE-----/g);\n return matches ? matches : [];\n}\nfunction pemToDerBase64(pem) {\n const lines = pem.replace(/\\r/g, '').split('\\n');\n const base64Lines = lines.filter((line) => !line.startsWith('-----') && line.trim().length > 0);\n const base64 = base64Lines.join('');\n // Ensure the output is valid base64 without whitespace\n return base64.replace(/\\s+/g, '');\n}\nlet cryptoPromise = null;\nasync function ensureWebCrypto() {\n if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto?.subtle) {\n return globalThis.crypto;\n }\n if (!cryptoPromise) {\n if (typeof process !== 'undefined' &&\n typeof process.versions?.node === 'string') {\n cryptoPromise = import('node:crypto').then((module) => {\n const webcrypto = module.webcrypto;\n if (!webcrypto || !webcrypto.subtle) {\n throw new Error('WebCrypto API is not available in this Node.js runtime');\n }\n globalThis.crypto = webcrypto;\n return webcrypto;\n });\n }\n else {\n cryptoPromise = Promise.reject(new Error('WebCrypto API is not available in this environment'));\n }\n }\n return cryptoPromise;\n}\nfunction pemToArrayBuffer(pem) {\n const normalized = pem\n .replace(/-----BEGIN[^-]+-----/g, '')\n .replace(/-----END[^-]+-----/g, '')\n .replace(/\\s+/g, '');\n const bytes = base64ToBytes(normalized);\n return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);\n}\nfunction base64ToBytes(base64) {\n if (typeof Buffer !== 'undefined') {\n const buffer = Buffer.from(base64, 'base64');\n const bytes = new Uint8Array(buffer.length);\n for (let i = 0; i < buffer.length; i += 1) {\n bytes[i] = buffer[i];\n }\n return bytes;\n }\n if (typeof atob === 'function') {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i += 1) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n throw new Error('No base64 decoder available in this environment');\n}\nfunction arrayBufferToPem(buffer, tag) {\n const base64 = bytesToBase64(new Uint8Array(buffer));\n return `-----BEGIN ${tag}-----\\n${formatPem(base64)}\\n-----END ${tag}-----\\n`;\n}\nfunction formatPem(base64) {\n const lines = [];\n for (let i = 0; i < base64.length; i += 64) {\n lines.push(base64.slice(i, i + 64));\n }\n return lines.join('\\n');\n}\nfunction encodeBitString(signature) {\n const bytes = new Uint8Array(signature);\n const bitString = new Uint8Array(bytes.length + 1);\n bitString.set(bytes, 1);\n return bitString.buffer;\n}\nfunction buildSubjectName(commonName) {\n const attribute = new AttributeTypeAndValue({\n type: COMMON_NAME_OID,\n value: new AttributeValue({ utf8String: commonName }),\n });\n return new Name([new RelativeDistinguishedName([attribute])]);\n}\nfunction assertNonEmptyString(value, name) {\n if (typeof value !== 'string') {\n throw new TypeError(`${name} must be a string`);\n }\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n throw new TypeError(`${name} must be a non-empty string`);\n }\n return trimmed;\n}\nfunction cloneJson(value) {\n return JSON.parse(JSON.stringify(value));\n}\n//# sourceMappingURL=default-crypto-provider.js.map","import { registerRuntimeFactories } from './naylence/fame/util/register-runtime-factories.js';\nlet initialized = false;\nconst runtimePlugin = {\n name: 'naylence:runtime',\n async register() {\n // console.log('[naylence:runtime] register() called, initialized=', initialized);\n if (initialized) {\n // console.log('[naylence:runtime] already initialized, skipping');\n return;\n }\n initialized = true;\n // console.log('[naylence:runtime] registering runtime factories...');\n // Register factories from manifest\n await registerRuntimeFactories();\n // Import modules with side-effect registrations (not in manifest)\n await import('./naylence/fame/transport/websocket-transport-provisioner.js');\n // console.log('[naylence:runtime] runtime factories registered');\n },\n};\nexport default runtimePlugin;\nexport const RUNTIME_PLUGIN_SPECIFIER = runtimePlugin.name;\n//# sourceMappingURL=plugin.js.map","let currentTraceId = null;\nlet currentSpanId = null;\nexport function getOtelTraceId() {\n return currentTraceId;\n}\nexport function getOtelSpanId() {\n return currentSpanId;\n}\nexport function setOtelTraceId(traceId) {\n const previous = currentTraceId;\n currentTraceId = traceId;\n return previous;\n}\nexport function setOtelSpanId(spanId) {\n const previous = currentSpanId;\n currentSpanId = spanId;\n return previous;\n}\nexport function resetOtelTraceId(previous) {\n currentTraceId = previous;\n}\nexport function resetOtelSpanId(previous) {\n currentSpanId = previous;\n}\n//# sourceMappingURL=otel-context.js.map","import { SpanStatusCode, trace } from '@opentelemetry/api';\nimport { BaseTraceEmitter } from './base-trace-emitter.js';\nimport { resetOtelSpanId, resetOtelTraceId, setOtelSpanId, setOtelTraceId, } from './otel-context.js';\nclass OpenTelemetryTraceSpan {\n constructor(span) {\n this.span = span;\n }\n setAttribute(key, value) {\n try {\n this.span.setAttribute(key, normalizeAttributeValue(value));\n }\n catch {\n // Ignore telemetry attribute errors\n }\n }\n recordException(error) {\n try {\n if (error instanceof Error) {\n this.span.recordException(error);\n }\n else {\n this.span.recordException(new Error(String(error)));\n }\n }\n catch {\n // Ignore telemetry recording errors\n }\n }\n setStatusError(description) {\n try {\n const status = {\n code: SpanStatusCode.ERROR,\n };\n if (description !== undefined) {\n status.message = description;\n }\n this.span.setStatus(status);\n }\n catch {\n // Ignore telemetry status errors\n }\n }\n}\nclass OpenTelemetrySpanScope {\n constructor(span) {\n this.span = span;\n this.entered = false;\n this.wrapper = new OpenTelemetryTraceSpan(span);\n }\n enter() {\n if (!this.entered) {\n this.entered = true;\n const spanContext = this.span.spanContext();\n this.traceToken = setOtelTraceId(spanContext?.traceId ?? null);\n this.spanToken = setOtelSpanId(spanContext?.spanId ?? null);\n }\n return this.wrapper;\n }\n exit() {\n try {\n this.span.end();\n }\n catch {\n // Ignore span termination errors\n }\n finally {\n if (this.traceToken !== undefined) {\n resetOtelTraceId(this.traceToken);\n this.traceToken = undefined;\n }\n if (this.spanToken !== undefined) {\n resetOtelSpanId(this.spanToken);\n this.spanToken = undefined;\n }\n }\n }\n}\nexport class OpenTelemetryTraceEmitter extends BaseTraceEmitter {\n constructor(options) {\n super();\n this.shutdownInvoked = false;\n const normalized = normalizeOpenTelemetryTraceEmitterOptions(options);\n this.tracer = normalized.tracer ?? trace.getTracer(normalized.serviceName);\n this.lifecycle = normalized.lifecycle ?? null;\n this.authStrategy = normalized.authStrategy ?? null;\n }\n startSpan(name, options) {\n const attributes = normalizeAttributes(options?.attributes);\n const spanOptions = {};\n if (attributes) {\n spanOptions.attributes = attributes;\n }\n if (options?.links) {\n spanOptions.links = options.links;\n }\n const span = this.tracer.startSpan(name, spanOptions);\n const envelopeTraceId = options?.attributes?.['env.trace_id'];\n if (typeof envelopeTraceId === 'string') {\n this.applyEnvelopeTraceId(span, envelopeTraceId);\n }\n return new OpenTelemetrySpanScope(span);\n }\n async flush() {\n if (this.lifecycle?.forceFlush) {\n try {\n await this.lifecycle.forceFlush();\n return;\n }\n catch {\n // fall through to global flush fallback\n }\n }\n try {\n const provider = trace.getTracerProvider();\n if (provider && typeof provider.forceFlush === 'function') {\n await provider.forceFlush();\n }\n }\n catch {\n // Ignore flush errors\n }\n }\n async shutdown() {\n if (this.shutdownInvoked) {\n return;\n }\n this.shutdownInvoked = true;\n const cleanupTasks = [];\n const strategy = this.authStrategy;\n if (strategy) {\n this.authStrategy = null;\n cleanupTasks.push(strategy.cleanup().catch(() => {\n // Ignore auth cleanup failures\n }));\n }\n if (this.lifecycle?.shutdown) {\n try {\n await this.lifecycle.shutdown();\n this.lifecycle = null;\n await Promise.all(cleanupTasks);\n return;\n }\n catch {\n // fall through to global shutdown fallback\n this.lifecycle = null;\n }\n }\n try {\n const provider = trace.getTracerProvider();\n if (provider && typeof provider.shutdown === 'function') {\n await provider.shutdown();\n }\n }\n catch {\n // Ignore shutdown errors\n }\n finally {\n if (cleanupTasks.length > 0) {\n await Promise.all(cleanupTasks);\n }\n }\n }\n applyEnvelopeTraceId(span, envelopeTraceId) {\n try {\n const targetTraceId = this.convertEnvTraceIdToOtel(envelopeTraceId);\n const internalSpan = span;\n if (internalSpan?._spanContext) {\n internalSpan._spanContext.traceId = targetTraceId;\n }\n }\n catch {\n // Ignore trace-id coercion errors\n }\n }\n convertEnvTraceIdToOtel(envTraceId) {\n const normalized = envTraceId.slice(0, 16).padEnd(16, '0');\n let hex = '';\n for (let i = 0; i < 16; i += 1) {\n const code = normalized.charCodeAt(i);\n const byte = Number.isNaN(code) ? 0 : code & 0xff;\n hex += byte.toString(16).padStart(2, '0');\n }\n return hex;\n }\n}\nfunction normalizeOpenTelemetryTraceEmitterOptions(input) {\n const source = (input ?? {});\n const serviceName = extractNonEmptyString(pickFirst(source, ['serviceName', 'service_name'])) ?? 'naylence-service';\n const tracer = pickFirst(source, ['tracer']);\n const lifecycle = pickFirst(source, [\n 'lifecycle',\n 'lifeCycle',\n 'life_cycle',\n ]) ?? null;\n const authStrategy = pickFirst(source, [\n 'authStrategy',\n 'auth_strategy',\n ]) ?? null;\n return {\n serviceName,\n tracer,\n lifecycle,\n authStrategy,\n };\n}\nfunction pickFirst(source, keys) {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const value = source[key];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction extractNonEmptyString(value) {\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed.length > 0) {\n return trimmed;\n }\n }\n return undefined;\n}\nfunction normalizeAttributeValue(value) {\n if (Array.isArray(value)) {\n return value.map((item) => String(normalizePrimitiveAttribute(item, true)));\n }\n return normalizePrimitiveAttribute(value, false);\n}\nfunction normalizePrimitiveAttribute(value, forceString) {\n if (!forceString) {\n if (typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean') {\n return value;\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (!forceString && typeof value === 'number') {\n return value;\n }\n return String(value);\n}\nfunction normalizeAttributes(source) {\n if (!source) {\n return undefined;\n }\n const entries = [];\n for (const [key, raw] of Object.entries(source)) {\n entries.push([key, normalizeAttributeValue(raw)]);\n }\n return entries.length > 0 ? Object.fromEntries(entries) : undefined;\n}\n//# sourceMappingURL=open-telemetry-trace-emitter.js.map","import { assertGrant, isGrant } from './grant.js';\nconst AUTH_INJECTION_STRATEGY_TYPE_ALIASES = {\n BearerTokenHeaderAuthInjectionStrategy: 'BearerTokenHeaderAuth',\n BearerTokenHeaderAuthStrategy: 'BearerTokenHeaderAuth',\n NoAuthInjectionStrategy: 'NoAuth',\n QueryParamAuthInjectionStrategy: 'QueryParamAuth',\n QueryParamAuthStrategy: 'QueryParamAuth',\n WebSocketSubprotocolAuthInjectionStrategy: 'WebSocketSubprotocolAuth',\n WebSocketSubprotocolAuthStrategy: 'WebSocketSubprotocolAuth',\n};\nexport function canonicalizeAuthConfig(auth) {\n if (!auth || typeof auth !== 'object' || Array.isArray(auth)) {\n return undefined;\n }\n const typeValue = auth.type;\n if (typeof typeValue !== 'string') {\n return auth;\n }\n const normalizedType = AUTH_INJECTION_STRATEGY_TYPE_ALIASES[typeValue] ?? typeValue;\n if (normalizedType === typeValue) {\n return auth;\n }\n return {\n ...auth,\n type: normalizedType,\n };\n}\nexport function isConnectionGrant(candidate) {\n return isGrant(candidate);\n}\nexport function assertConnectionGrant(candidate, message = 'Invalid connection grant') {\n assertGrant(candidate, message);\n}\n//# sourceMappingURL=connection-grant.js.map","import { GRANT_PURPOSE_NODE_ATTACH } from './grant.js';\nimport { canonicalizeAuthConfig, assertConnectionGrant, isConnectionGrant, } from './connection-grant.js';\nexport const WEBSOCKET_CONNECTION_GRANT_TYPE = 'WebSocketConnectionGrant';\nexport function isWebSocketConnectionGrant(candidate) {\n return (isConnectionGrant(candidate) &&\n candidate.type ===\n WEBSOCKET_CONNECTION_GRANT_TYPE &&\n (typeof candidate.url === 'string' ||\n typeof candidate.url ===\n 'undefined'));\n}\nexport function normalizeWebSocketConnectionGrant(candidate) {\n const type = typeof candidate.type === 'string'\n ? candidate.type\n : WEBSOCKET_CONNECTION_GRANT_TYPE;\n if (type !== WEBSOCKET_CONNECTION_GRANT_TYPE) {\n throw new TypeError(`WebSocketConnectionGrant expected type \"${WEBSOCKET_CONNECTION_GRANT_TYPE}\", received \"${type}\"`);\n }\n const purpose = typeof candidate.purpose === 'string' && candidate.purpose.length > 0\n ? candidate.purpose\n : GRANT_PURPOSE_NODE_ATTACH;\n assertConnectionGrant({ ...candidate, type, purpose }, 'WebSocketConnectionGrant requires a valid base grant');\n const urlValue = candidate.url;\n if (urlValue !== undefined &&\n (typeof urlValue !== 'string' || urlValue.trim().length === 0)) {\n throw new TypeError('WebSocketConnectionGrant \"url\" must be a non-empty string when provided');\n }\n const base = {\n type,\n purpose,\n };\n if (typeof urlValue === 'string') {\n base.url = urlValue;\n }\n const authConfig = canonicalizeAuthConfig(candidate.auth);\n if (authConfig) {\n base.auth = authConfig;\n }\n return base;\n}\nexport function websocketGrantToConnectorConfig(grant) {\n const normalized = normalizeWebSocketConnectionGrant(grant);\n const config = {\n type: 'WebSocketConnector',\n };\n if (normalized.url) {\n config.url = normalized.url;\n }\n if (normalized.auth !== undefined) {\n config.auth = normalized.auth;\n }\n return config;\n}\n//# sourceMappingURL=websocket-connection-grant.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE = 'TransportProvisionerFactory';\nexport class TransportProvisionerFactory extends AbstractResourceFactory {\n static async createTransportProvisioner(config, options = {}) {\n if (config) {\n const provisioner = await createResource(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, config, options);\n if (!provisioner) {\n throw new Error('Failed to create transport provisioner from configuration');\n }\n return provisioner;\n }\n let provisioner = null;\n try {\n provisioner = await createDefaultResource(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, null, options);\n }\n catch (error) {\n const message = 'Failed to create default transport provisioner' +\n (error instanceof Error && error.message ? `: ${error.message}` : '');\n throw new Error(message);\n }\n if (!provisioner) {\n throw new Error('Failed to create default transport provisioner');\n }\n return provisioner;\n }\n}\n//# sourceMappingURL=transport-provisioner.js.map","import { registerFactory } from '@naylence/factory';\nimport { GRANT_PURPOSE_NODE_ATTACH } from '../grants/grant.js';\nimport { WEBSOCKET_CONNECTION_GRANT_TYPE, normalizeWebSocketConnectionGrant, } from '../grants/websocket-connection-grant.js';\nimport { TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TransportProvisionerFactory, } from './transport-provisioner.js';\nexport class WebSocketTransportProvisioner {\n constructor(options) {\n this.url = options.url;\n this.ttlSec = options.ttlSec;\n }\n async provision(_decision, hello, _fullMetadata, attachToken) {\n const supportedTransports = hello.supportedTransports;\n if (Array.isArray(supportedTransports) && supportedTransports.length > 0) {\n const hasWebSocket = supportedTransports.includes(WebSocketTransportProvisioner.TRANSPORT_TYPE);\n if (!hasWebSocket) {\n throw new Error(`Unsupported transports: ${supportedTransports.join(', ')}`);\n }\n }\n let authConfig;\n if (attachToken) {\n const tokenProviderConfig = {\n type: 'StaticTokenProvider',\n token: attachToken,\n };\n authConfig = {\n type: 'WebSocketSubprotocolAuth',\n tokenProvider: tokenProviderConfig,\n };\n }\n const grant = normalizeWebSocketConnectionGrant({\n type: WEBSOCKET_CONNECTION_GRANT_TYPE,\n purpose: GRANT_PURPOSE_NODE_ATTACH,\n url: this.url,\n auth: authConfig,\n });\n const result = {\n connectionGrant: grant,\n cleanupHandle: null,\n };\n if (this.ttlSec !== undefined) {\n result.metadata = {\n ...(result.metadata ?? {}),\n ttlSec: this.ttlSec,\n };\n }\n return result;\n }\n async deprovision(_cleanupHandle) {\n // No-op for stateless WebSocket transport provisioners\n }\n}\nWebSocketTransportProvisioner.TRANSPORT_TYPE = 'websocket';\nexport class WebSocketTransportProvisionerFactory extends TransportProvisionerFactory {\n constructor() {\n super(...arguments);\n this.type = 'WebSocketTransportProvisioner';\n this.isDefault = true;\n }\n async create(config) {\n const options = normalizeConfig(config);\n return new WebSocketTransportProvisioner(options);\n }\n}\nfunction normalizeConfig(config) {\n if (!config) {\n throw new Error('WebSocketTransportProvisioner requires configuration');\n }\n const candidate = config;\n const typeValue = typeof candidate.type === 'string' ? candidate.type : undefined;\n if (typeValue !== 'WebSocketTransportProvisioner') {\n throw new Error(`WebSocketTransportProvisionerFactory expects type \"WebSocketTransportProvisioner\", got \"${typeValue ?? 'undefined'}\"`);\n }\n const urlValue = candidate.url;\n if (typeof urlValue !== 'string' || urlValue.trim().length === 0) {\n throw new Error('WebSocketTransportProvisioner configuration must include a non-empty \"url\" string');\n }\n const ttlCandidate = (() => {\n const raw = candidate.ttlSec ?? candidate.ttl_sec ?? candidate.ttlSEC;\n if (typeof raw === 'number') {\n return raw;\n }\n if (typeof raw === 'string') {\n const parsed = Number(raw.trim());\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n })();\n const options = {\n url: urlValue.trim(),\n };\n if (typeof ttlCandidate === 'number' && Number.isFinite(ttlCandidate)) {\n options.ttlSec = ttlCandidate;\n }\n return options;\n}\nregisterFactory(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, 'WebSocketTransportProvisioner', WebSocketTransportProvisionerFactory, {\n isDefault: true,\n});\n//# sourceMappingURL=websocket-transport-provisioner.js.map"],"names":["LogLevel","currentTraceId","logger","AnsiColor","sha256","isPlainObject","parseAddressComponents","FlowFlags","FameAddress","DEFAULT_POLLING_TIMEOUT_MS","extractEnvelopeAndContext","createChannelMessage","AbstractResourceFactory","createResource","createDefaultResource","DEFAULT_DB_NAME","DEFAULT_STORE_NAME","DEFAULT_KEY_ID","MASTER_KEY_LENGTH","openDatabase","getRandomBytes","GCM_IV_LENGTH","cachedNodeCrypto","loadNodeCrypto","toArrayBuffer","globalScope","generateId","createFameEnvelope","DeliveryOriginType","FameResponseType","ConnectorState","SYSTEM_INBOX","parseAddress","formatAddress","formatAddressFromComponents","localDeliveryContext","Binding","createDeferred","isPlainRecord","coerceStringArray","pickOption","pickString","generateIdAsync","z","snakeToCamelObject","parseYaml","getDefaultFameConfigResolver","setDefaultFameConfigResolver","normalizeOptions","makeResponse","isFameMessageResponse","parseRequest","makeRequest","DEFAULT_INVOKE_TIMEOUT_MILLIS","parseResponse","resolveOption","resolveStringArrayOption","resolveBooleanOption","ExtensionManager","factory","ExpressionEvaluationPolicy","resolveOriginType","FameFabric","isFameMessageService","isFameRPCService","FameServiceProxy","pickDate","DEFAULT_CONNECTOR_CLEANUP_DELAY_MS","AuthorizationContextSchema","normalizeAddressKey","utf8ToBytes","bytesToHex","hasRoute","withFabric","ConnectorStateUtils","FACTORY_MODULE_PREFIX","resolveFactoryModuleSpecifier","DefaultRegistry","FACTORY_META","extractNonEmptyString","pickFirst","extractHeaders","normalizeConfig","Expressions","joseModulePromise","requireJose","AsnConvert","SubjectPublicKeyInfo","Attributes","SubjectAlternativeName","GeneralName","Extensions","Extension","id_ce_subjectAltName","OctetString","Attribute","CertificationRequestInfo","CertificationRequest","AlgorithmIdentifier","AttributeTypeAndValue","AttributeValue","Name","RelativeDistinguishedName","SpanStatusCode","trace","registerFactory"],"mappings":"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"}
|