@cadenza.io/service 2.18.2 → 2.19.0
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/README.md +258 -0
- package/dist/Cadenza-DCMs7q97.d.mts +1666 -0
- package/dist/Cadenza-DCMs7q97.d.ts +1666 -0
- package/dist/browser/chunk-4XOTT2KM.mjs +31 -0
- package/dist/browser/chunk-4XOTT2KM.mjs.map +1 -0
- package/dist/browser/index.js +15295 -7234
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.mjs +15279 -7234
- package/dist/browser/index.mjs.map +1 -1
- package/dist/browser/nuxt/index.js +166 -0
- package/dist/browser/nuxt/index.js.map +1 -0
- package/dist/browser/nuxt/index.mjs +121 -0
- package/dist/browser/nuxt/index.mjs.map +1 -0
- package/dist/browser/react/index.js +179 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/index.mjs +140 -0
- package/dist/browser/react/index.mjs.map +1 -0
- package/dist/browser/vue/index.js +178 -0
- package/dist/browser/vue/index.js.map +1 -0
- package/dist/browser/vue/index.mjs +140 -0
- package/dist/browser/vue/index.mjs.map +1 -0
- package/dist/chunk-DBCS4XXY.mjs +31 -0
- package/dist/chunk-DBCS4XXY.mjs.map +1 -0
- package/dist/index.d.mts +244 -22947
- package/dist/index.d.ts +244 -22947
- package/dist/index.js +19432 -10213
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +19382 -10214
- package/dist/index.mjs.map +1 -1
- package/dist/nuxt/index.d.mts +42 -0
- package/dist/nuxt/index.d.ts +42 -0
- package/dist/nuxt/index.js +173 -0
- package/dist/nuxt/index.js.map +1 -0
- package/dist/nuxt/index.mjs +121 -0
- package/dist/nuxt/index.mjs.map +1 -0
- package/dist/react/index.d.mts +52 -0
- package/dist/react/index.d.ts +52 -0
- package/dist/react/index.js +188 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/index.mjs +140 -0
- package/dist/react/index.mjs.map +1 -0
- package/dist/runtimeProjectionState-CitON2P3.d.mts +6 -0
- package/dist/runtimeProjectionState-CitON2P3.d.ts +6 -0
- package/dist/vue/index.d.mts +48 -0
- package/dist/vue/index.d.ts +48 -0
- package/dist/vue/index.js +187 -0
- package/dist/vue/index.js.map +1 -0
- package/dist/vue/index.mjs +140 -0
- package/dist/vue/index.mjs.map +1 -0
- package/package.json +64 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Cadenza.ts","../../src/graph/definition/DeputyTask.ts","../../src/graph/definition/DatabaseTask.ts","../../src/registry/ServiceRegistry.ts","../../src/utils/environment.ts","../../src/utils/inquiry.ts","../../src/utils/transport.ts","../../src/utils/serviceInstance.ts","../../src/utils/delegation.ts","../../src/utils/readiness.ts","../../src/utils/runtimeStatus.ts","../../src/graph/definition/SignalTransmissionTask.ts","../../src/network/RestController.browser.ts","../../src/network/SocketController.ts","../../src/network/socketClientUtils.ts","../../src/utils/tools.ts","../../src/signals/SignalController.ts","../../src/runtime/RuntimeValidationController.ts","../../src/graph/controllers/registerActorSessionPersistence.ts","../../src/graph/controllers/GraphMetadataController.ts","../../src/database/DatabaseController.browser.ts","../../src/graph/controllers/GraphSyncController.ts","../../src/utils/bootstrap.ts","../../src/ssr/createSSRInquiryBridge.ts"],"sourcesContent":["import CadenzaService, {\n NetworkMode,\n SecurityProfile,\n ServerOptions,\n} from \"./Cadenza\";\nimport {\n Actor,\n type ActorDefinition,\n type ActorSpec,\n type ActorStateDefinition,\n type ActorKeyDefinition,\n type ActorTaskBindingDefinition,\n type ActorFactoryOptions,\n type ActorLoadPolicy,\n type ActorWriteContract,\n type ActorRuntimeReadGuard,\n type ActorTaskMode,\n type ActorKind,\n type ActorConsistencyProfileName,\n type ActorInvocationOptions,\n type ActorStateStore,\n type ActorTaskBindingOptions,\n type ActorTaskContext,\n type ActorTaskHandler,\n type ActorStateReducer,\n type RetryPolicy,\n type IdempotencyPolicy,\n type SessionPolicy,\n type RuntimeValidationPolicy,\n type RuntimeValidationScope,\n DebounceTask,\n EphemeralTask,\n GraphRoutine,\n Task,\n} from \"@cadenza.io/core\";\nimport type {\n AnyObject,\n DebounceOptions,\n EphemeralTaskOptions,\n TaskFunction,\n TaskOptions,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport GraphMetadataController from \"./graph/controllers/GraphMetadataController\";\nimport DatabaseTask from \"./graph/definition/DatabaseTask\";\nimport DeputyTask from \"./graph/definition/DeputyTask\";\nimport SignalTransmissionTask from \"./graph/definition/SignalTransmissionTask\";\nimport RestController from \"@service-rest-controller\";\nimport SocketController from \"./network/SocketController\";\nimport ServiceRegistry, {\n DeputyDescriptor,\n} from \"./registry/ServiceRegistry\";\nimport SignalController from \"./signals/SignalController\";\nimport {\n RUNTIME_VALIDATION_INTENTS,\n RUNTIME_VALIDATION_SIGNALS,\n} from \"./runtime/RuntimeValidationController\";\nimport DatabaseController from \"@service-database-controller\";\nimport {\n BootstrapOptions,\n HydrationOptions,\n ResolvedBootstrapEndpoint,\n} from \"./utils/bootstrap\";\nimport {\n createSSRInquiryBridge,\n SSRInquiryBridge,\n SSRInquiryBridgeOptions,\n} from \"./ssr/createSSRInquiryBridge\";\nimport {\n AggregateDefinition,\n AggregateFunction,\n DbOperationType,\n DbOperationPayload,\n JoinDefinition,\n OpEffect,\n QueryMode,\n SortDirection,\n SubOperation,\n SubOperationType,\n ValueOrSubOp,\n} from \"./types/queryData\";\nimport type {\n DistributedInquiryMeta,\n DistributedInquiryOptions,\n InquiryResponderDescriptor,\n InquiryResponderStatus,\n} from \"./types/inquiry\";\nimport type { ServiceInstanceDescriptor } from \"./types/serviceRegistry\";\nimport type {\n ServiceTransportConfig,\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n ServiceTransportSecurityProfile,\n} from \"./types/transport\";\n\nexport default CadenzaService;\nexport type {\n BootstrapOptions,\n HydrationOptions,\n ResolvedBootstrapEndpoint,\n SSRInquiryBridge,\n SSRInquiryBridgeOptions,\n ActorDefinition,\n ActorSpec,\n ActorStateDefinition,\n ActorKeyDefinition,\n ActorTaskBindingDefinition,\n ActorFactoryOptions,\n ActorLoadPolicy,\n ActorWriteContract,\n ActorRuntimeReadGuard,\n ActorTaskMode,\n ActorKind,\n ActorConsistencyProfileName,\n ActorInvocationOptions,\n ActorStateStore,\n ActorTaskBindingOptions,\n ActorTaskContext,\n ActorTaskHandler,\n ActorStateReducer,\n RetryPolicy,\n IdempotencyPolicy,\n SessionPolicy,\n ServiceInstanceDescriptor,\n ServiceTransportConfig,\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n ServiceTransportSecurityProfile,\n DeputyDescriptor,\n DbOperationType,\n QueryMode,\n AggregateFunction,\n AggregateDefinition,\n SortDirection,\n JoinDefinition,\n SubOperationType,\n SubOperation,\n OpEffect,\n ValueOrSubOp,\n DbOperationPayload,\n SecurityProfile,\n NetworkMode,\n ServerOptions,\n DistributedInquiryOptions,\n DistributedInquiryMeta,\n InquiryResponderDescriptor,\n InquiryResponderStatus,\n AnyObject,\n TaskOptions,\n ThrottleTagGetter,\n TaskFunction,\n DebounceOptions,\n EphemeralTaskOptions,\n RuntimeValidationPolicy,\n RuntimeValidationScope,\n};\nexport {\n Actor,\n GraphMetadataController,\n DeputyTask,\n DatabaseController,\n DatabaseTask,\n SignalTransmissionTask,\n RestController,\n SocketController,\n ServiceRegistry,\n SignalController,\n createSSRInquiryBridge,\n Task,\n DebounceTask,\n EphemeralTask,\n GraphRoutine,\n RUNTIME_VALIDATION_INTENTS,\n RUNTIME_VALIDATION_SIGNALS,\n};\n","import Cadenza, {\n Actor,\n ActorDefinition,\n ActorFactoryOptions,\n ActorSpec,\n AnyObject,\n CadenzaMode,\n DebounceOptions,\n DebounceTask,\n EmitOptions,\n EphemeralTask,\n EphemeralTaskOptions,\n GraphRegistry,\n GraphRoutine,\n GraphRunner,\n InquiryBroker,\n Intent,\n RuntimeValidationPolicy,\n RuntimeValidationScope,\n SignalBroker,\n Task,\n TaskFunction,\n TaskOptions,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport DeputyTask from \"./graph/definition/DeputyTask\";\nimport DatabaseTask from \"./graph/definition/DatabaseTask\";\nimport ServiceRegistry from \"./registry/ServiceRegistry\";\nimport SignalTransmissionTask from \"./graph/definition/SignalTransmissionTask\";\nimport RestController from \"@service-rest-controller\";\nimport SocketController from \"./network/SocketController\";\nimport SignalController from \"./signals/SignalController\";\nimport RuntimeValidationController from \"./runtime/RuntimeValidationController\";\nimport { DbOperationPayload, DbOperationType } from \"./types/queryData\";\nimport GraphMetadataController from \"./graph/controllers/GraphMetadataController\";\nimport { registerActorSessionPersistenceTasks } from \"./graph/controllers/registerActorSessionPersistence\";\nimport { DatabaseSchemaDefinition } from \"./types/database\";\nimport { camelCase, snakeCase } from \"lodash-es\";\nimport DatabaseController from \"@service-database-controller\";\nimport { v4 as uuid } from \"uuid\";\nimport GraphSyncController from \"./graph/controllers/GraphSyncController\";\nimport { isBrowser } from \"./utils/environment\";\nimport { formatTimestamp } from \"./utils/tools\";\nimport {\n BootstrapOptions,\n HydrationOptions,\n readIntegerEnv,\n readListEnv,\n readStringEnv,\n resolveBootstrapEndpoint,\n} from \"./utils/bootstrap\";\nimport {\n DistributedInquiryMeta,\n DistributedInquiryOptions,\n InquiryResponderDescriptor,\n InquiryResponderStatus,\n} from \"./types/inquiry\";\nimport type {\n ServiceTransportConfig,\n ServiceTransportRole,\n} from \"./types/transport\";\nimport {\n compareResponderDescriptors,\n isMetaIntentName,\n mergeInquiryContexts,\n shouldExecuteInquiryResponder,\n summarizeResponderStatuses,\n} from \"./utils/inquiry\";\nimport { normalizeServiceTransportConfig } from \"./utils/transport\";\n\nexport type SecurityProfile = \"low\" | \"medium\" | \"high\";\nexport type NetworkMode =\n | \"internal\"\n | \"exposed\"\n | \"exposed-high-sec\"\n | \"auto\"\n | \"dev\";\n\nexport type ServerOptions = {\n customServiceId?: string; // TODO\n loadBalance?: boolean;\n useSocket?: boolean;\n log?: boolean;\n displayName?: string;\n isMeta?: boolean;\n port?: number; // for internal network\n securityProfile?: SecurityProfile;\n networkMode?: NetworkMode;\n retryCount?: number;\n cadenzaDB?: { connect?: boolean; address?: string; port?: number };\n bootstrap?: BootstrapOptions;\n hydration?: HydrationOptions;\n transports?: ServiceTransportConfig[];\n relatedServices?: string[][];\n isDatabase?: boolean;\n isFrontend?: boolean;\n};\n\nexport interface DatabaseOptions {\n databaseType?: \"postgres\";\n databaseName?: string;\n poolSize?: number;\n ownerServiceName?: string | null;\n}\n\n/**\n * The CadenzaService class serves as a central service layer providing various utility methods for managing tasks, signals, logging, and service interactions.\n * This class handles the initialization (`bootstrap`) and validation of services, as well as the creation of tasks associated with services and signals.\n */\nexport default class CadenzaService {\n public static signalBroker: SignalBroker;\n public static inquiryBroker: InquiryBroker;\n public static runner: GraphRunner;\n public static metaRunner: GraphRunner;\n public static registry: GraphRegistry;\n public static serviceRegistry: ServiceRegistry;\n protected static isBootstrapped = false;\n protected static serviceCreated = false;\n protected static defaultDatabaseServiceName: string | null = null;\n protected static warnedInvalidMetaIntentResponderKeys: Set<string> = new Set();\n protected static hydratedInquiryResults: Map<string, AnyObject> = new Map();\n protected static frontendSyncScheduled = false;\n\n private static replayRegisteredTaskIntentAssociations(): void {\n for (const task of this.registry.tasks.values()) {\n if (!task.register || task.isHidden || task.handlesIntents.size === 0) {\n continue;\n }\n\n for (const intentName of task.handlesIntents) {\n task.emitWithMetadata(\"meta.task.intent_associated\", {\n data: {\n intentName,\n taskName: task.name,\n taskVersion: task.version,\n },\n taskInstance: task,\n __isSubMeta: task.isSubMeta,\n });\n }\n }\n }\n\n private static replayRegisteredTaskSignalObservations(): void {\n for (const task of this.registry.tasks.values()) {\n if (!task.register || task.isHidden || task.observedSignals.size === 0) {\n continue;\n }\n\n for (const signalName of task.observedSignals) {\n task.emitWithMetadata(\"meta.task.observed_signal\", {\n data: {\n signalName,\n taskName: task.name,\n taskVersion: task.version,\n },\n taskInstance: task,\n signalName,\n __isSubMeta: task.isSubMeta,\n });\n }\n }\n }\n\n private static replayRegisteredTaskGraphMetadata(): void {\n this.replayRegisteredTaskSignalObservations();\n this.replayRegisteredTaskIntentAssociations();\n }\n\n private static buildLegacyLocalCadenzaDBTaskName(\n tableName: string,\n operation: DbOperationType,\n ): string {\n const operationPrefix =\n operation.charAt(0).toUpperCase() + operation.slice(1);\n const helperSuffix = camelCase(String(tableName ?? \"\").trim());\n\n return `db${operationPrefix}${helperSuffix.charAt(0).toUpperCase() + helperSuffix.slice(1)}`;\n }\n\n private static buildGeneratedLocalCadenzaDBTaskName(\n tableName: string,\n operation: DbOperationType,\n ): string {\n const operationPrefix =\n operation.charAt(0).toUpperCase() + operation.slice(1);\n return `${operationPrefix} ${String(tableName ?? \"\").trim()}`;\n }\n\n /**\n * Initializes the application by setting up necessary components and configurations.\n * This method ensures the initialization process is only executed once throughout the application lifecycle.\n *\n * @return {void} This method does not return any value.\n */\n static bootstrap(): void {\n if (this.isBootstrapped) return;\n this.isBootstrapped = true;\n\n Cadenza.bootstrap();\n Cadenza.setRuntimeInquiryDelegate((inquiry, context, options) =>\n this.inquire(\n inquiry,\n context,\n (options ?? {}) as DistributedInquiryOptions,\n ),\n );\n this.signalBroker = Cadenza.signalBroker;\n this.inquiryBroker = Cadenza.inquiryBroker;\n this.runner = Cadenza.runner;\n this.metaRunner = Cadenza.metaRunner;\n this.registry = Cadenza.registry;\n this.serviceRegistry = ServiceRegistry.instance;\n RestController.instance;\n SocketController.instance;\n RuntimeValidationController.instance;\n }\n\n private static ensureTransportControllers(isFrontend: boolean): void {\n if (!isFrontend) {\n SignalController.instance;\n }\n }\n\n private static setHydrationResults(\n hydration?: HydrationOptions,\n ): void {\n this.hydratedInquiryResults = new Map();\n\n const initialInquiryResults = hydration?.initialInquiryResults ?? {};\n for (const [key, value] of Object.entries(initialInquiryResults)) {\n this.hydratedInquiryResults.set(key, value as AnyObject);\n }\n }\n\n private static consumeHydratedInquiryResult(\n hydrationKey?: string,\n ): AnyObject | undefined {\n if (!hydrationKey) {\n return undefined;\n }\n\n const result = this.hydratedInquiryResults.get(hydrationKey);\n if (result === undefined) {\n return undefined;\n }\n\n this.hydratedInquiryResults.delete(hydrationKey);\n return result;\n }\n\n private static ensureFrontendSyncLoop(): void {\n if (this.frontendSyncScheduled) {\n return;\n }\n\n this.frontendSyncScheduled = true;\n Cadenza.interval(\"meta.sync_requested\", { __syncing: false }, 180000);\n Cadenza.schedule(\"meta.sync_requested\", { __syncing: false }, 250);\n }\n\n private static normalizeDeclaredTransports(\n transports: ServiceTransportConfig[] | undefined,\n serviceId: string,\n useSocket: boolean,\n ): Array<\n ServiceTransportConfig & {\n uuid: string;\n }\n > {\n return (transports ?? [])\n .map((transport) => normalizeServiceTransportConfig(transport))\n .filter(\n (\n transport,\n ): transport is ServiceTransportConfig =>\n !!transport,\n )\n .map((transport) => ({\n ...transport,\n protocols:\n transport.protocols && transport.protocols.length > 0\n ? transport.protocols\n : useSocket\n ? [\"rest\", \"socket\"]\n : [\"rest\"],\n uuid: uuid(),\n }));\n }\n\n private static createBootstrapTransport(\n serviceInstanceId: string,\n role: ServiceTransportRole,\n endpoint: ReturnType<typeof resolveBootstrapEndpoint>,\n ) {\n return {\n uuid: `${serviceInstanceId}-${role}-bootstrap`,\n service_instance_id: serviceInstanceId,\n role,\n origin: endpoint.url,\n protocols: [\"rest\", \"socket\"] as const,\n security_profile: null,\n auth_strategy: null,\n };\n }\n\n /**\n * Validates the provided service name based on specific rules.\n *\n * @param {string} serviceName - The service name to validate. Must be less than 100 characters,\n * must not contain spaces, dots, or backslashes, and must start with a capital letter.\n * @return {void} Throws an error if the service name does not meet the validation criteria.\n * @throws {Error} If the service name exceeds 100 characters.\n * @throws {Error} If the service name contains spaces.\n * @throws {Error} If the service name contains dots.\n * @throws {Error} If the service name contains backslashes.\n * @throws {Error} If the service name does not start with a capital letter.\n */\n protected static validateServiceName(serviceName: string) {\n if (serviceName.length > 100) {\n throw new Error(\"Service name must be less than 100 characters\");\n }\n\n if (serviceName.includes(\" \")) {\n throw new Error(\"Service name must not contain spaces\");\n }\n\n if (serviceName.includes(\".\")) {\n throw new Error(\"Service name must not contain dots\");\n }\n\n if (serviceName.includes(\"\\\\\")) {\n throw new Error(\"Service name must not contain backslashes\");\n }\n\n if (\n serviceName.charAt(0) !== serviceName.charAt(0).toUpperCase() &&\n serviceName.charAt(0) === serviceName.charAt(0).toLowerCase()\n ) {\n throw new Error(\"Service name must start with a capital letter\");\n }\n }\n\n /**\n * Validates the provided name to ensure it meets the required criteria.\n *\n * @param {string} name - The name to be validated.\n * @return {void} Does not return any value.\n */\n protected static validateName(name: string): void {\n Cadenza.validateName(name);\n }\n\n /**\n * Gets the current run strategy from the Cadenza configuration.\n *\n * @return {Function} The run strategy function defined in the Cadenza configuration.\n */\n public static get runStrategy() {\n return Cadenza.runStrategy;\n }\n\n /**\n * Sets the mode for the Cadenza application.\n *\n * @param {CadenzaMode} mode - The mode to be set for the application.\n * @return {void} This method does not return a value.\n */\n public static setMode(mode: CadenzaMode) {\n Cadenza.setMode(mode);\n }\n\n /**\n * Emits a signal with the specified data using the associated broker.\n *\n * @param {string} signal - The name of the event or signal to emit.\n * @param {AnyObject} [data={}] - The data to be emitted along with the signal.\n * @param options\n * @return {void} No return value.\n *\n * @example\n * This is meant to be used as a global event emitter.\n * If you want to emit an event from within a task, you can use the `emit` method provided to the task function. See {@link TaskFunction}.\n * ```ts\n * Cadenza.emit('main.my_event', { foo: 'bar' });\n * ```\n */\n static emit(signal: string, data: AnyObject = {}, options: EmitOptions = {}) {\n Cadenza.emit(signal, data, options);\n }\n\n static debounce(signal: string, context: any = {}, delayMs: number = 500) {\n Cadenza.debounce(signal, context, delayMs);\n }\n\n public static schedule(\n signal: string,\n context: AnyObject,\n timeoutMs: number,\n exactDateTime?: Date,\n ) {\n Cadenza.schedule(signal, context, timeoutMs, exactDateTime);\n }\n\n public static interval(\n signal: string,\n context: AnyObject,\n intervalMs: number,\n leading = false,\n startDateTime?: Date,\n ) {\n Cadenza.interval(signal, context, intervalMs, leading, startDateTime);\n }\n\n public static defineIntent(intent: Intent): Intent {\n this.inquiryBroker?.addIntent(intent);\n return intent;\n }\n\n public static getRuntimeValidationPolicy(): RuntimeValidationPolicy {\n this.bootstrap();\n return Cadenza.getRuntimeValidationPolicy();\n }\n\n public static setRuntimeValidationPolicy(\n policy: RuntimeValidationPolicy = {},\n ): RuntimeValidationPolicy {\n this.bootstrap();\n return Cadenza.setRuntimeValidationPolicy(policy);\n }\n\n public static replaceRuntimeValidationPolicy(\n policy: RuntimeValidationPolicy = {},\n ): RuntimeValidationPolicy {\n this.bootstrap();\n return Cadenza.replaceRuntimeValidationPolicy(policy);\n }\n\n public static clearRuntimeValidationPolicy(): void {\n this.bootstrap();\n Cadenza.clearRuntimeValidationPolicy();\n }\n\n public static getRuntimeValidationScopes(): RuntimeValidationScope[] {\n this.bootstrap();\n return Cadenza.getRuntimeValidationScopes();\n }\n\n public static upsertRuntimeValidationScope(\n scope: RuntimeValidationScope,\n ): RuntimeValidationScope {\n this.bootstrap();\n return Cadenza.upsertRuntimeValidationScope(scope);\n }\n\n public static removeRuntimeValidationScope(id: string): void {\n this.bootstrap();\n Cadenza.removeRuntimeValidationScope(id);\n }\n\n public static clearRuntimeValidationScopes(): void {\n this.bootstrap();\n Cadenza.clearRuntimeValidationScopes();\n }\n\n private static getInquiryResponderDescriptor(task: Task): InquiryResponderDescriptor {\n return this.serviceRegistry.getInquiryResponderDescriptor(task);\n }\n\n private static compareInquiryResponders(\n left: { task: Task; descriptor: InquiryResponderDescriptor },\n right: { task: Task; descriptor: InquiryResponderDescriptor },\n ) {\n return compareResponderDescriptors(left.descriptor, right.descriptor);\n }\n\n private static buildInquirySummary(\n inquiry: string,\n startedAt: number,\n statuses: InquiryResponderStatus[],\n totalResponders: number,\n ): DistributedInquiryMeta {\n const counts = summarizeResponderStatuses(statuses);\n const isMetaInquiry = isMetaIntentName(inquiry);\n const eligibleResponders = statuses.length;\n return {\n inquiry,\n isMetaInquiry,\n totalResponders,\n eligibleResponders,\n filteredOutResponders: Math.max(0, totalResponders - eligibleResponders),\n responded: counts.responded,\n failed: counts.failed,\n timedOut: counts.timedOut,\n pending: counts.pending,\n durationMs: Date.now() - startedAt,\n responders: statuses,\n };\n }\n\n public static async inquire(\n inquiry: string,\n context: AnyObject,\n options: DistributedInquiryOptions = {},\n ): Promise<AnyObject> {\n this.bootstrap();\n\n const hydratedResult = this.consumeHydratedInquiryResult(\n options.hydrationKey,\n );\n if (hydratedResult !== undefined) {\n return hydratedResult;\n }\n\n const observer = this.inquiryBroker?.inquiryObservers.get(inquiry);\n const allResponders = observer\n ? Array.from(observer.tasks).map((task) => ({\n task,\n descriptor: this.getInquiryResponderDescriptor(task),\n }))\n : [];\n const isMetaInquiry = isMetaIntentName(inquiry);\n const responders = allResponders.filter(({ task, descriptor }) => {\n const shouldExecute = shouldExecuteInquiryResponder(inquiry, task.isMeta);\n\n if (shouldExecute) {\n return true;\n }\n\n const warningKey = `${inquiry}|${descriptor.serviceName}|${descriptor.taskName}|${descriptor.taskVersion}|${descriptor.localTaskName}`;\n if (!this.warnedInvalidMetaIntentResponderKeys.has(warningKey)) {\n this.warnedInvalidMetaIntentResponderKeys.add(warningKey);\n this.log(\n \"Skipping non-meta task for meta intent inquiry.\",\n {\n inquiry,\n responder: descriptor,\n },\n \"warning\",\n descriptor.serviceName,\n );\n }\n\n return false;\n });\n\n if (responders.length === 0) {\n const inquiryMeta = {\n inquiry,\n isMetaInquiry,\n totalResponders: allResponders.length,\n eligibleResponders: 0,\n filteredOutResponders: allResponders.length,\n responded: 0,\n failed: 0,\n timedOut: 0,\n pending: 0,\n durationMs: 0,\n responders: [],\n } as DistributedInquiryMeta;\n\n if (options.requireComplete) {\n throw {\n __inquiryMeta: inquiryMeta,\n __error: `Inquiry '${inquiry}' had no eligible responders`,\n errored: true,\n };\n }\n\n return {\n __inquiryMeta: inquiryMeta,\n };\n }\n\n responders.sort(this.compareInquiryResponders.bind(this));\n\n const overallTimeoutMs = options.overallTimeoutMs ?? options.timeout ?? 0;\n const requireComplete = options.requireComplete ?? false;\n const perResponderTimeoutMs = options.perResponderTimeoutMs;\n\n const startedAt = Date.now();\n const statuses: InquiryResponderStatus[] = [];\n const statusByTask = new Map<Task, InquiryResponderStatus>();\n for (const responder of responders) {\n const status: InquiryResponderStatus = {\n ...responder.descriptor,\n status: \"timed_out\",\n durationMs: 0,\n };\n statuses.push(status);\n statusByTask.set(responder.task, status);\n }\n\n const resultsByTask = new Map<Task, AnyObject>();\n const resolverTasks: Task[] = [];\n const pending = new Set(responders.map((r) => r.task));\n const startTimeByTask = new Map<Task, number>();\n\n this.emit(\"meta.inquiry_broker.inquire\", { inquiry, context });\n\n return new Promise((resolve, reject) => {\n let finalized = false;\n let timeoutId: NodeJS.Timeout | undefined;\n\n const finalize = (timedOut: boolean) => {\n if (finalized) return;\n finalized = true;\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n\n for (const resolverTask of resolverTasks) {\n resolverTask.destroy();\n }\n\n if (timedOut && pending.size > 0) {\n for (const task of pending) {\n const status = statusByTask.get(task);\n if (!status) continue;\n status.status = \"timed_out\";\n status.durationMs = Date.now() - (startTimeByTask.get(task) ?? startedAt);\n }\n }\n\n const fulfilledContexts = responders\n .filter((responder) => resultsByTask.has(responder.task))\n .map((responder) => resultsByTask.get(responder.task)!);\n\n const mergedContext = mergeInquiryContexts(fulfilledContexts);\n const inquiryMeta = this.buildInquirySummary(\n inquiry,\n startedAt,\n statuses,\n allResponders.length,\n );\n const responseContext = {\n ...mergedContext,\n __inquiryMeta: inquiryMeta,\n };\n\n if (\n requireComplete &&\n (timedOut ||\n inquiryMeta.failed > 0 ||\n inquiryMeta.timedOut > 0 ||\n inquiryMeta.pending > 0)\n ) {\n reject({\n ...responseContext,\n __error: `Inquiry '${inquiry}' did not complete successfully`,\n errored: true,\n });\n return;\n }\n\n resolve(responseContext);\n };\n\n if (overallTimeoutMs > 0) {\n timeoutId = setTimeout(() => finalize(true), overallTimeoutMs);\n }\n\n for (const responder of responders) {\n const { task, descriptor } = responder;\n const inquiryId = uuid();\n startTimeByTask.set(task, Date.now());\n\n const resolverTask = this.createEphemeralMetaTask(\n `Resolve inquiry ${inquiry} for ${descriptor.localTaskName}`,\n (resultCtx) => {\n if (finalized) {\n return;\n }\n\n pending.delete(task);\n\n const status = statusByTask.get(task);\n\n if (status) {\n status.durationMs =\n Date.now() -\n (startTimeByTask.get(task) ?? startedAt);\n\n if (resultCtx?.errored || resultCtx?.failed) {\n status.status = \"failed\";\n status.error = String(\n resultCtx?.__error ?? resultCtx?.error ?? \"Inquiry responder failed\",\n );\n } else {\n status.status = \"fulfilled\";\n resultsByTask.set(task, resultCtx);\n }\n }\n\n if (pending.size === 0) {\n finalize(false);\n }\n },\n \"Resolves distributed inquiry responder result\",\n { register: false },\n ).doOn(`meta.node.graph_completed:${inquiryId}`);\n\n resolverTasks.push(resolverTask);\n\n const executionContext: AnyObject = {\n ...context,\n __routineExecId: inquiryId,\n __isInquiry: true,\n };\n\n if (perResponderTimeoutMs !== undefined) {\n executionContext.__timeout = perResponderTimeoutMs;\n }\n\n if (task.isMeta) {\n this.metaRunner?.run(task, executionContext);\n } else {\n this.runner?.run(task, executionContext);\n }\n }\n });\n }\n\n /**\n * Executes the given task or graph routine within the provided context using the configured runner.\n *\n * @param {Task | GraphRoutine} task - The task or graph routine to be executed.\n * @param {AnyObject} context - The context within which the task will be executed.\n * @return {void}\n *\n * @example\n * ```ts\n * const task = Cadenza.createTask('My task', (ctx) => {\n * console.log('My task executed with context:', ctx);\n * });\n *\n * Cadenza.run(task, { foo: 'bar' });\n *\n * const routine = Cadenza.createRoutine('My routine', [task], 'My routine description');\n *\n * Cadenza.run(routine, { foo: 'bar' });\n * ```\n */\n static run(task: Task | GraphRoutine, context: AnyObject) {\n this.runner?.run(task, context);\n }\n /**\n * Logs a message with a specified log level and additional contextual data.\n * Records in the CadenzaDB when available.\n *\n * @param {string} message - The main message to be logged.\n * @param {any} [data={}] - Additional data or metadata to include with the log.\n * @param {\"info\"|\"warning\"|\"error\"|\"critical\"} [level=\"info\"] - The severity level of the log message.\n * @param {string|null} [subjectServiceName=null] - The name of the subject service related to the log.\n * @param {string|null} [subjectServiceInstanceId=null] - The instance ID of the subject service related to the log.\n * @return {void} No return value.\n */\n static log(\n message: string,\n data: any = {},\n level: \"info\" | \"warning\" | \"error\" | \"critical\" = \"info\",\n subjectServiceName: string | null = null,\n subjectServiceInstanceId: string | null = null,\n ) {\n if (level === \"critical\") {\n console.error(\"CRITICAL:\", message, data);\n } else if (level === \"error\") {\n console.error(message, data);\n } else if (level === \"warning\") {\n console.warn(message, data);\n } else {\n console.log(message, data);\n }\n\n this.emit(\"global.meta.system_log.log\", {\n data: {\n data,\n level,\n message,\n serviceName: this.serviceRegistry?.serviceName,\n serviceInstanceId: this.serviceRegistry?.serviceInstanceId,\n subjectServiceName,\n subjectServiceInstanceId,\n created: formatTimestamp(Date.now()),\n },\n });\n }\n\n public static get(taskName: string): Task | undefined {\n return Cadenza.get(taskName);\n }\n\n public static getLocalCadenzaDBTask(\n tableName: string,\n operation: DbOperationType,\n ): Task | undefined {\n const generatedTaskName = this.buildGeneratedLocalCadenzaDBTaskName(\n tableName,\n operation,\n );\n const legacyTaskName = this.buildLegacyLocalCadenzaDBTaskName(\n tableName,\n operation,\n );\n\n return Cadenza.get(generatedTaskName) ?? Cadenza.get(legacyTaskName);\n }\n\n public static getLocalCadenzaDBInsertTask(\n tableName: string,\n ): Task | undefined {\n return this.getLocalCadenzaDBTask(tableName, \"insert\");\n }\n\n public static getLocalCadenzaDBQueryTask(\n tableName: string,\n ): Task | undefined {\n return this.getLocalCadenzaDBTask(tableName, \"query\");\n }\n\n public static getActor<\n D extends Record<string, any> = AnyObject,\n R = AnyObject,\n >(actorName: string): Actor<D, R> | undefined {\n const cadenzaWithActors = Cadenza as unknown as {\n getActor?: <D extends Record<string, any>, R = AnyObject>(\n actorName: string,\n ) => Actor<D, R> | undefined;\n };\n return cadenzaWithActors.getActor?.<D, R>(actorName);\n }\n\n public static getAllActors<\n D extends Record<string, any> = AnyObject,\n R = AnyObject,\n >(): Actor<D, R>[] {\n const cadenzaWithActors = Cadenza as unknown as {\n getAllActors?: <D extends Record<string, any>, R = AnyObject>() => Actor<\n D,\n R\n >[];\n };\n return cadenzaWithActors.getAllActors?.<D, R>() ?? [];\n }\n\n public static getRoutine(routineName: string): GraphRoutine | undefined {\n return Cadenza.getRoutine(routineName);\n }\n\n /**\n * Creates a new DeputyTask instance based on the provided routine name, service name, and options.\n * This method ensures proper task initialization, including setting a unique name,\n * validation of the routine name, and applying default option values.\n *\n * @param {string} routineName - The name of the routine the task references. This is mandatory and should be a valid string.\n * @param {string|undefined} [serviceName] - The name of the service that the routine belongs to. This is optional and defaults to undefined.\n * @param {TaskOptions} [options={}] - A configuration object for the task, allowing various properties such as concurrency, timeout, and retry settings to be customized.\n * @return {DeputyTask} - A new DeputyTask instance initialized with the specified parameters.\n *\n * @example\n * Let's say we are writing the code for a Service called \"Service1\".\n * We also have an additional service called \"Service2\" with a routine called \"My Routine\".\n * A flow on Service1 depends on the result of \"My Routine\" on Service2.\n * We can create a deputy task for the routine using the following code:\n * ```ts\n * Cadenza.createDeputyTask(\"My Routine\", \"Service2\").then(\n * Cadenza.createTask(\"Handle result\", (ctx) => {\n * console.log(\"'Handle result' executed with context:\", ctx);\n * }),\n * );\n * ```\n * Internally, this will send a request to an available \"Service2\" instance to execute the \"My Routine\" routine.\n * The deputy task will wait for the response and then execute the next task(s) in the chain.\n *\n * You can visualize the execution of the deputy task as follows:\n * ```\n * Service1 flow = [Deputy tasks for \"My Routine\"] -> [\"Handle result\"]\n * || A\n * V ||\n * Service2 flow = [[My Routine]]\n * ```\n *\n * Deputy tasks are useful for delegating flows to other services, allowing for parallel execution and load balancing.\n * But it creates tight coupling between the services, which may not be desirable in some cases.\n * In cases where an event on one service should simply trigger a flow on another service, without the need for a result,\n * it is recommended to use signals instead. Like this:\n *\n * Service1\n * ```ts\n * Cadenza.createTask(\"Generate event\", (ctx, emit) => {\n * // Do something\n * emit(\"some.event\");\n * });\n * ```\n *\n * Service2\n * ```ts\n * Cadenza.createTask(\"Handle event\", (ctx) => {\n * console.log(\"Handle event executed with context:\", ctx);\n * }).doOn(\"Service1.some.event\");\n * ```\n *\n * Every time the \"Generate event\" task is executed, it will emit a signal \"Service1.some.event\" to one Service2 instance and trigger the \"Handle event\" task.\n */\n static createDeputyTask(\n routineName: string,\n serviceName: string | undefined = undefined,\n options: TaskOptions = {},\n ): DeputyTask {\n this.bootstrap();\n this.validateName(routineName);\n const name = `${routineName} (Proxy)`;\n\n options = {\n concurrency: 100,\n timeout: 0,\n register: true,\n isUnique: false,\n isMeta: false,\n isSubMeta: false,\n isHidden: false,\n getTagCallback: undefined,\n inputSchema: undefined,\n validateInputContext: false,\n outputSchema: undefined,\n validateOutputContext: false,\n retryCount: 0,\n retryDelay: 0,\n retryDelayMax: 0,\n retryDelayFactor: 1,\n ...options,\n };\n\n return new DeputyTask(\n name,\n routineName,\n serviceName,\n `Referencing routine in service: ${routineName} on service: ${serviceName}.`,\n options.concurrency,\n options.timeout,\n options.register,\n options.isUnique,\n options.isMeta,\n options.isSubMeta,\n options.isHidden,\n options.getTagCallback,\n options.inputSchema,\n options.validateInputContext,\n options.outputSchema,\n options.validateOutputContext,\n options.retryCount,\n options.retryDelay,\n options.retryDelayMax,\n options.retryDelayFactor,\n );\n }\n\n /**\n * Creates a meta deputy task by setting the `isMeta` property in the options to true,\n * and delegating task creation to the `createDeputyTask` method.\n * See {@link createDeputyTask} and {@link createMetaTask} for more information.\n *\n * @param {string} routineName - The name of the routine associated with the task.\n * @param {string | undefined} [serviceName] - The optional name of the service associated with the task.\n * @param {TaskOptions} [options={}] - Additional options for the task. Defaults to an empty object if not provided.\n * @return {DeputyTask} - The created meta deputy task.\n */\n static createMetaDeputyTask(\n routineName: string,\n serviceName: string | undefined = undefined,\n options: TaskOptions = {},\n ): DeputyTask {\n options.isMeta = true;\n return this.createDeputyTask(routineName, serviceName, options);\n }\n\n /**\n * Creates a throttled deputy task with the specified parameters.\n * See {@link createThrottledTask} and {@link createDeputyTask} for more information.\n *\n * @param {string} routineName - The name of the routine to be executed.\n * @param {string | undefined} [serviceName=undefined] - The name of the service, if applicable.\n * @param {ThrottleTagGetter} [throttledIdGetter=() => \"default\"] - A function to get the throttled tag for the task.\n * @param {TaskOptions} [options={}] - The options for task configuration, including concurrency and callbacks.\n * @return {DeputyTask} The created throttled deputy task.\n */\n static createThrottledDeputyTask(\n routineName: string,\n serviceName: string | undefined = undefined,\n throttledIdGetter: ThrottleTagGetter = () => \"default\",\n options: TaskOptions = {},\n ) {\n options.concurrency = 1;\n options.getTagCallback = throttledIdGetter;\n return this.createDeputyTask(routineName, serviceName, options);\n }\n\n /**\n * Creates a throttled deputy task with meta-task settings enabled.\n * See {@link createThrottledTask},{@link createDeputyTask} and {@link createMetaTask} for more information.\n *\n * @param {string} routineName - The name of the routine for which the task is being created.\n * @param {string|undefined} [serviceName=undefined] - The name of the service associated with the task, or undefined if not applicable.\n * @param {ThrottleTagGetter} [throttledIdGetter=() => \"default\"] - A function to compute or return the throttling identifier.\n * @param {TaskOptions} [options={}] - Additional options for the task configuration.\n * @return {any} Returns the created throttled deputy task instance.\n */\n static createMetaThrottledDeputyTask(\n routineName: string,\n serviceName: string | undefined = undefined,\n throttledIdGetter: ThrottleTagGetter = () => \"default\",\n options: TaskOptions = {},\n ) {\n options.isMeta = true;\n return this.createThrottledDeputyTask(\n routineName,\n serviceName,\n throttledIdGetter,\n options,\n );\n }\n\n /**\n * Creates and configures a signal transmission task that handles the transmission\n * of a specified signal to a target service with a set of customizable options.\n * This is only used for internal purposes and is not exposed to the business logic layer.\n *\n * @param {string} signalName - The name of the signal to be transmitted.\n * @param {string} serviceName - The name of the target service to transmit the signal to.\n * @param {TaskOptions} [options={}] - A set of optional parameters to further configure the task.\n * @return {SignalTransmissionTask} A new instance of SignalTransmissionTask configured with the given parameters.\n */\n static createSignalTransmissionTask(\n signalName: string,\n serviceName: string,\n options: TaskOptions = {},\n ): SignalTransmissionTask | undefined {\n this.bootstrap();\n this.validateName(signalName);\n this.validateName(serviceName);\n\n const name = `Transmit signal: ${signalName} to ${serviceName}`;\n if (this.get(name)) {\n return;\n }\n\n options = {\n concurrency: 100,\n timeout: 0,\n register: true,\n isUnique: false,\n isMeta: true,\n isSubMeta: false,\n isHidden: false,\n getTagCallback: undefined,\n inputSchema: undefined,\n validateInputContext: false,\n outputSchema: undefined,\n validateOutputContext: false,\n retryCount: 1,\n retryDelay: 0,\n retryDelayMax: 0,\n retryDelayFactor: 1,\n ...options,\n };\n\n options.isMeta = true;\n\n return new SignalTransmissionTask(\n name,\n signalName,\n serviceName,\n `Transmits signal ${signalName} to ${serviceName} service.`,\n options.concurrency,\n options.timeout,\n options.register,\n options.isUnique,\n options.isMeta,\n options.isSubMeta,\n options.isHidden,\n options.getTagCallback,\n options.inputSchema,\n options.validateInputContext,\n options.outputSchema,\n options.validateOutputContext,\n options.retryCount,\n options.retryDelay,\n options.retryDelayMax,\n options.retryDelayFactor,\n );\n }\n\n /**\n * Creates and configures a database task that performs an operation on a specified table.\n *\n * @param {string} tableName - The name of the database table on which the operation will be performed.\n * @param {DbOperationType} operation - The type of database operation to execute (e.g., insert, update, delete).\n * @param {string|undefined} [databaseServiceName=undefined] - The name of the database service; defaults to \"default database service\" if not provided.\n * @param {DbOperationPayload} queryData - The data payload required for executing the specified database operation.\n * @param {TaskOptions} [options={}] - Optional configuration for the task, including concurrency, timeout, and retry policies.\n * @return {DatabaseTask} A configured database task instance ready for execution.\n */\n static createDatabaseTask(\n tableName: string,\n operation: DbOperationType,\n databaseServiceName: string | undefined = undefined,\n queryData: DbOperationPayload,\n options: TaskOptions = {},\n ) {\n this.bootstrap();\n this.validateName(tableName);\n this.validateName(operation);\n const resolvedDatabaseServiceName =\n databaseServiceName ?? this.defaultDatabaseServiceName ?? undefined;\n const targetDatabaseServiceName =\n resolvedDatabaseServiceName ?? \"default database service\";\n const name = `${operation.charAt(0).toUpperCase() + operation.slice(1)} ${tableName} in ${targetDatabaseServiceName}`;\n const description = `Executes a ${operation} on table ${tableName} in ${targetDatabaseServiceName}`;\n const taskName = `${operation.charAt(0).toUpperCase() + operation.slice(1)} ${tableName}`;\n\n options = {\n concurrency: 100,\n timeout: 0,\n register: true,\n isUnique: false,\n isMeta: false,\n isSubMeta: false,\n isHidden: false,\n getTagCallback: undefined,\n inputSchema: undefined,\n validateInputContext: false,\n outputSchema: undefined,\n validateOutputContext: false,\n retryCount: 3,\n retryDelay: 100,\n retryDelayMax: 0,\n retryDelayFactor: 1,\n ...options,\n };\n\n return new DatabaseTask(\n name,\n taskName,\n resolvedDatabaseServiceName,\n description,\n queryData,\n options.concurrency,\n options.timeout,\n options.register,\n options.isUnique,\n options.isMeta,\n options.isSubMeta,\n options.isHidden,\n options.getTagCallback,\n options.inputSchema,\n options.validateInputContext,\n options.outputSchema,\n options.validateOutputContext,\n options.retryCount,\n options.retryDelay,\n options.retryDelayMax,\n options.retryDelayFactor,\n );\n }\n\n /**\n * Creates a task for performing a database insert operation.\n *\n * @param {string} tableName - The name of the table where the insert operation will be performed.\n * @param {string | undefined} [databaseServiceName=undefined] - The name of the database service to use. Optional parameter, defaults to undefined.\n * @param {DbOperationPayload} [queryData={}] - The data payload for the insert operation. Defaults to an empty object.\n * @param {TaskOptions} [options={}] - Additional task options to configure the insert operation. Defaults to an empty object.\n * @return {object} A task configuration object for the database insert operation.\n */\n static createDatabaseInsertTask(\n tableName: string,\n databaseServiceName: string | undefined = undefined,\n queryData: DbOperationPayload = {},\n options: TaskOptions = {},\n ) {\n return this.createDatabaseTask(\n tableName,\n \"insert\",\n databaseServiceName,\n queryData,\n options,\n );\n }\n\n /**\n * Creates a database query task for the specified table and configuration.\n *\n * @param {string} tableName - The name of the database table to execute the query on.\n * @param {string | undefined} [databaseServiceName=undefined] - The name of the database service to use. If undefined, the default service will be used.\n * @param {DbOperationPayload} queryData - The payload containing the query data to be executed.\n * @param {TaskOptions} [options={}] - Optional parameters to configure the task execution.\n * @return {Task} The created database query task.\n */\n static createDatabaseQueryTask(\n tableName: string,\n databaseServiceName: string | undefined = undefined,\n queryData: DbOperationPayload,\n options: TaskOptions = {},\n ) {\n return this.createDatabaseTask(\n tableName,\n \"query\",\n databaseServiceName,\n queryData,\n options,\n );\n }\n\n /**\n * Creates a database task for the CadenzaDB with the specified parameters.\n *\n * @param {string} tableName - The name of the database table on which the operation will be performed.\n * @param {DbOperationType} operation - The type of database operation to execute (e.g., INSERT, UPDATE, DELETE).\n * @param {DbOperationPayload} queryData - The payload or data required to perform the database operation.\n * @param {TaskOptions} [options={}] - Additional options for the task, such as configuration settings.\n * @return {any} The result of creating the database task.\n */\n static createCadenzaDBTask(\n tableName: string,\n operation: DbOperationType,\n queryData: DbOperationPayload,\n options: TaskOptions = {},\n ) {\n options.isMeta = true;\n return this.createDatabaseTask(\n tableName,\n operation,\n \"CadenzaDB\",\n queryData,\n options,\n );\n }\n\n /**\n * Creates a database insert task specifically for the CadenzaDB database.\n *\n * @param {string} tableName - The name of the table into which the data will be inserted.\n * @param {DbOperationPayload} [queryData={}] - An object representing the data to be inserted.\n * @param {TaskOptions} [options={}] - Additional options to customize the task. The `isMeta` property is set to true by default.\n * @return {Task} A task object configured to perform an insert operation in the CadenzaDB database.\n */\n static createCadenzaDBInsertTask(\n tableName: string,\n queryData: DbOperationPayload = {},\n options: TaskOptions = {},\n ) {\n options.isMeta = true;\n return this.createDatabaseInsertTask(\n tableName,\n \"CadenzaDB\",\n queryData,\n options,\n );\n }\n\n /**\n * Creates a database query task specifically for the CadenzaDB.\n *\n * @param {string} tableName - The name of the database table to execute the query on.\n * @param {DbOperationPayload} queryData - The payload containing data and parameters for the database operation.\n * @param {TaskOptions} [options={}] - Additional options for the task configuration.\n * @return {any} The created task for executing a database query.\n */\n static createCadenzaDBQueryTask(\n tableName: string,\n queryData: DbOperationPayload,\n options: TaskOptions = {},\n ) {\n options.isMeta = true;\n return this.createDatabaseQueryTask(\n tableName,\n \"CadenzaDB\",\n queryData,\n options,\n );\n }\n\n /**\n * Creates a new Cadenza service with the specified configuration.\n *\n * @param {string} serviceName - The unique name of the service to create.\n * @param {string} [description] - An optional description of the service.\n * @param {ServerOptions} [options] - An optional object containing configuration options for the service.\n * @return {boolean} Returns true when the service is successfully created.\n */\n static createCadenzaService(\n serviceName: string,\n description: string = \"\",\n options: ServerOptions = {},\n ) {\n if (this.serviceCreated) return;\n this.bootstrap();\n this.validateName(serviceName);\n this.validateServiceName(serviceName);\n\n const serviceId = options.customServiceId ?? uuid();\n this.serviceRegistry.serviceName = serviceName;\n this.serviceRegistry.serviceInstanceId = serviceId;\n this.serviceRegistry.connectsToCadenzaDB = !!options.cadenzaDB?.connect;\n this.setHydrationResults(options.hydration);\n\n const explicitFrontendMode = options.isFrontend;\n\n options = {\n loadBalance: true,\n useSocket: true,\n displayName: undefined,\n isMeta: false,\n port: readIntegerEnv(\"HTTP_PORT\", 3000),\n securityProfile:\n (readStringEnv(\"SECURITY_PROFILE\") as SecurityProfile) ?? \"medium\",\n networkMode: (readStringEnv(\"NETWORK_MODE\") as NetworkMode) ?? \"dev\",\n retryCount: 3,\n cadenzaDB: {\n connect: true,\n },\n relatedServices: readListEnv(\"RELATED_SERVICES\"),\n isFrontend:\n typeof explicitFrontendMode === \"boolean\"\n ? explicitFrontendMode\n : isBrowser,\n ...options,\n };\n\n const isFrontend = !!options.isFrontend;\n const declaredTransports = this.normalizeDeclaredTransports(\n options.transports,\n serviceId,\n !!options.useSocket,\n );\n this.serviceRegistry.isFrontend = isFrontend;\n this.serviceRegistry.useSocket = !!options.useSocket;\n this.serviceRegistry.retryCount = options.retryCount ?? 3;\n this.ensureTransportControllers(isFrontend);\n\n if (!isFrontend) {\n this.createMetaTask(\n \"Initialize graph metadata controller after initial sync\",\n () => {\n GraphMetadataController.instance;\n return true;\n },\n \"Delays direct graph-metadata registration until the bootstrap sync has completed.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.initial_sync_complete\");\n GraphSyncController.instance.isCadenzaDBReady =\n serviceName === \"CadenzaDB\";\n GraphSyncController.instance.init();\n }\n\n const resolvedBootstrapEndpoint = options.cadenzaDB?.connect\n ? resolveBootstrapEndpoint({\n runtime: isFrontend ? \"browser\" : \"server\",\n bootstrap: options.bootstrap,\n cadenzaDB: options.cadenzaDB,\n })\n : undefined;\n\n if (resolvedBootstrapEndpoint) {\n options.cadenzaDB = {\n ...options.cadenzaDB,\n connect: true,\n address: resolvedBootstrapEndpoint.address,\n port: resolvedBootstrapEndpoint.port,\n };\n }\n\n if (options.cadenzaDB?.connect) {\n this.emit(\"meta.initializing_service\", {\n // Seed the CadenzaDB\n serviceInstance: {\n uuid: \"cadenza-db\",\n serviceName: \"CadenzaDB\",\n numberOfRunningGraphs: 0,\n isActive: true, // Assume it is deployed\n isNonResponsive: false,\n isBlocked: false,\n health: {},\n isFrontend: false,\n isBootstrapPlaceholder: true,\n transports: resolvedBootstrapEndpoint\n ? [\n this.createBootstrapTransport(\n \"cadenza-db\",\n isFrontend ? \"public\" : \"internal\",\n resolvedBootstrapEndpoint,\n ),\n ]\n : [],\n },\n });\n }\n\n options.relatedServices?.forEach((service) => {\n const relatedTransport = normalizeServiceTransportConfig({\n role: isFrontend ? \"public\" : \"internal\",\n origin: service[2].includes(\"://\") ? service[2] : `http://${service[2]}`,\n protocols: options.useSocket ? [\"rest\", \"socket\"] : [\"rest\"],\n });\n this.emit(\"meta.initializing_service\", {\n serviceInstance: {\n uuid: service[0],\n serviceName: service[1],\n numberOfRunningGraphs: 0,\n isActive: true, // Assume it is deployed\n isNonResponsive: false,\n isBlocked: false,\n health: {},\n isFrontend: false,\n isBootstrapPlaceholder: true,\n transports: relatedTransport\n ? [\n {\n uuid: `${service[0]}-${relatedTransport.role}`,\n service_instance_id: service[0],\n role: relatedTransport.role,\n origin: relatedTransport.origin,\n protocols: relatedTransport.protocols ?? [\"rest\", \"socket\"],\n security_profile: relatedTransport.securityProfile ?? null,\n auth_strategy: relatedTransport.authStrategy ?? null,\n },\n ]\n : [],\n },\n });\n });\n\n const initContext = {\n data: {\n name: serviceName,\n description: description,\n displayName: options.displayName ?? \"\",\n isMeta: options.isMeta,\n },\n __registrationData: {\n name: serviceName,\n description: description,\n displayName: options.displayName ?? \"\",\n isMeta: options.isMeta,\n },\n __serviceName: serviceName,\n __serviceInstanceId: serviceId,\n __port: options.port,\n __loadBalance: options.loadBalance,\n __useSocket: options.useSocket,\n __securityProfile: options.securityProfile,\n __networkMode: options.networkMode,\n __retryCount: options.retryCount,\n __cadenzaDBConnect: options.cadenzaDB?.connect,\n __isDatabase: options.isDatabase,\n __isFrontend: isFrontend,\n __declaredTransports: declaredTransports,\n };\n\n if (options.cadenzaDB?.connect) {\n this.createEphemeralMetaTask(\"Create service\", async (context, emit) => {\n emit(\"meta.create_service_requested\", initContext);\n }).doOn(\"meta.fetch.handshake_complete\");\n } else {\n this.emit(\"meta.create_service_requested\", initContext);\n this.createMetaTask(\"Create signal transmission for sync\", (ctx, emit) => {\n emit(\n \"meta.service_registry.gathered_sync_transmission_reconcile_requested\",\n {\n serviceName: ctx.serviceName,\n __reason: \"handshake\",\n },\n );\n }).doOn(\"meta.rest.handshake\", \"meta.socket.handshake\");\n }\n\n this.createMetaTask(\"Handle service setup completion\", (ctx, emit) => {\n if (options.cadenzaDB?.connect) {\n this.serviceRegistry.bootstrapFullSync(emit, ctx, \"service_setup_completed\");\n }\n\n if (isFrontend) {\n registerActorSessionPersistenceTasks();\n this.ensureFrontendSyncLoop();\n }\n\n this.log(\"Service created.\");\n\n return true;\n }).doOn(\"meta.service_registry.instance_inserted\");\n\n if (!options.cadenzaDB?.connect && isFrontend) {\n Cadenza.schedule(\n \"meta.service_registry.instance_registration_requested\",\n {\n data: {\n uuid: serviceId,\n process_pid: 1,\n service_name: serviceName,\n is_frontend: true,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n },\n __registrationData: {\n uuid: serviceId,\n process_pid: 1,\n service_name: serviceName,\n is_frontend: true,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n },\n __transportData: declaredTransports.map((transport) => ({\n uuid: transport.uuid,\n service_instance_id: serviceId,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols ?? [\"rest\", \"socket\"],\n ...(transport.securityProfile\n ? { security_profile: transport.securityProfile }\n : {}),\n ...(transport.authStrategy\n ? { auth_strategy: transport.authStrategy }\n : {}),\n })),\n __serviceName: serviceName,\n __serviceInstanceId: serviceId,\n __useSocket: options.useSocket,\n __retryCount: options.retryCount,\n __isFrontend: true,\n __skipRemoteExecution: true,\n },\n 0,\n );\n }\n\n this.serviceCreated = true;\n }\n\n /**\n * Creates a Cadenza metadata service with the specified name, description, and options.\n *\n * @param {string} serviceName - The name of the metadata service to be created.\n * @param {string} description - A brief description of the metadata service.\n * @param {ServerOptions} [options={}] - Optional configuration for the metadata service. Defaults to an empty object.\n * @return {void} Does not return a value.\n */\n static createCadenzaMetaService(\n serviceName: string,\n description: string,\n options: ServerOptions = {},\n ) {\n options.isMeta = true;\n this.createCadenzaService(serviceName, description, options);\n }\n\n /**\n * Creates and initializes a specialized PostgresActor.\n * This is actor-only and does not create or register a network service.\n *\n * @param {string} name - Logical PostgresActor name.\n * @param {DatabaseSchemaDefinition} schema - Database schema definition.\n * @param {string} [description=\"\"] - Optional human-readable actor description.\n * @param {ServerOptions & DatabaseOptions} [options={}] - Actor/database runtime options.\n * @return {void}\n */\n static createPostgresActor(\n name: string,\n schema: DatabaseSchemaDefinition,\n description: string = \"\",\n options: ServerOptions & DatabaseOptions = {},\n ) {\n if (isBrowser || options.isFrontend) {\n console.warn(\n \"PostgresActor creation is not supported in frontend mode.\",\n );\n return;\n }\n\n this.bootstrap();\n this.validateName(name);\n const databaseController = DatabaseController.instance;\n\n const normalizedOptions = this.normalizePostgresActorOptions(name, options);\n\n const registration = databaseController.createPostgresActor(\n name,\n schema,\n description,\n normalizedOptions,\n );\n\n console.log(\"Creating PostgresActor\", {\n name,\n actorName: registration.actorName,\n ownerServiceName: normalizedOptions.ownerServiceName ?? null,\n options: normalizedOptions,\n });\n\n databaseController.requestPostgresActorSetup(registration, {\n actorName: registration.actorName,\n actorToken: registration.actorToken,\n databaseName: normalizedOptions.databaseName,\n ownerServiceName: normalizedOptions.ownerServiceName ?? null,\n });\n }\n\n /**\n * Creates a meta PostgresActor.\n *\n * @param {string} name - Logical PostgresActor name.\n * @param {DatabaseSchemaDefinition} schema - Database schema definition.\n * @param {string} [description=\"\"] - Optional description.\n * @param {ServerOptions & DatabaseOptions} [options={}] - Optional actor/database options.\n * @return {void}\n */\n static createMetaPostgresActor(\n name: string,\n schema: DatabaseSchemaDefinition,\n description: string = \"\",\n options: ServerOptions & DatabaseOptions = {},\n ) {\n this.bootstrap();\n options.isMeta = true;\n this.createPostgresActor(name, schema, description, options);\n }\n\n /**\n * Creates a dedicated database service by composing a PostgresActor and a Cadenza service.\n */\n static createDatabaseService(\n name: string,\n schema: DatabaseSchemaDefinition,\n description: string = \"\",\n options: ServerOptions & DatabaseOptions = {},\n ) {\n if (isBrowser || options.isFrontend) {\n console.warn(\n \"Database service creation is not supported in frontend mode. Use the CadenzaDB service instead.\",\n );\n return;\n }\n if (this.serviceCreated) return;\n\n this.bootstrap();\n this.validateName(name);\n this.validateServiceName(name);\n this.defaultDatabaseServiceName = name;\n\n const databaseController = DatabaseController.instance;\n const actorOptions = this.normalizePostgresActorOptions(name, {\n ...options,\n ownerServiceName: options.ownerServiceName ?? name,\n });\n const serviceOptions = this.normalizeDatabaseServiceOptions(name, {\n ...options,\n ownerServiceName: actorOptions.ownerServiceName,\n });\n\n const registration = databaseController.createPostgresActor(\n name,\n schema,\n description,\n actorOptions,\n );\n\n this.registerDatabaseServiceBridgeTask(\n name,\n description,\n schema,\n Boolean(serviceOptions.isMeta),\n registration.actorName,\n );\n\n const createServiceTaskName = `Create database service ${name} after ${registration.actorName} setup`;\n if (!this.get(createServiceTaskName)) {\n this.createMetaTask(\n createServiceTaskName,\n () => {\n this.createCadenzaService(name, description, serviceOptions);\n return true;\n },\n \"Creates the networked database service after PostgresActor setup completes.\",\n ).doOn(registration.setupDoneSignal);\n }\n\n const setupFailureTaskName = `Handle database service ${name} bootstrap failure`;\n if (!this.get(setupFailureTaskName)) {\n this.createMetaTask(\n setupFailureTaskName,\n (ctx) => {\n this.log(\n \"Database service bootstrap failed before service creation.\",\n {\n serviceName: name,\n actorName: registration.actorName,\n databaseName: registration.databaseName,\n error: ctx.__error,\n },\n \"error\",\n );\n return true;\n },\n \"Logs PostgresActor setup failures for database service bootstrap.\",\n ).doOn(registration.setupFailedSignal);\n }\n\n console.log(\"Creating database service wrapper\", {\n serviceName: name,\n actorName: registration.actorName,\n actorOptions,\n serviceOptions,\n });\n\n databaseController.requestPostgresActorSetup(registration, {\n actorName: registration.actorName,\n actorToken: registration.actorToken,\n databaseName: actorOptions.databaseName,\n ownerServiceName: actorOptions.ownerServiceName ?? name,\n });\n }\n\n /**\n * Creates a meta database service with the specified configuration.\n *\n * @param {string} name - The name of the database service to be created.\n * @param {DatabaseSchemaDefinition} schema - The schema definition for the database.\n * @param {string} [description=\"\"] - An optional description of the database service.\n * @param {ServerOptions & DatabaseOptions} [options={}] - Optional server and database configuration options. The `isMeta` flag will be automatically set to true.\n * @return {void} - This method does not return a value.\n */\n static createMetaDatabaseService(\n name: string,\n schema: DatabaseSchemaDefinition,\n description: string = \"\",\n options: ServerOptions & DatabaseOptions = {},\n ) {\n this.createDatabaseService(name, schema, description, {\n ...options,\n isMeta: true,\n });\n }\n\n private static normalizePostgresActorOptions(\n name: string,\n options: ServerOptions & DatabaseOptions = {},\n ): ServerOptions & DatabaseOptions {\n return {\n isMeta: false,\n retryCount: 3,\n databaseType: \"postgres\",\n databaseName: snakeCase(name),\n poolSize: readIntegerEnv(\"DATABASE_POOL_SIZE\", 10),\n ownerServiceName:\n options.ownerServiceName ?? this.serviceRegistry?.serviceName ?? null,\n ...options,\n };\n }\n\n private static normalizeDatabaseServiceOptions(\n name: string,\n options: ServerOptions & DatabaseOptions = {},\n ): ServerOptions & DatabaseOptions {\n return {\n loadBalance: true,\n useSocket: true,\n displayName: undefined,\n isMeta: false,\n port: readIntegerEnv(\"HTTP_PORT\", 3000),\n securityProfile:\n (readStringEnv(\"SECURITY_PROFILE\") as SecurityProfile) ?? \"medium\",\n networkMode: (readStringEnv(\"NETWORK_MODE\") as NetworkMode) ?? \"dev\",\n retryCount: 3,\n cadenzaDB: {\n connect: true,\n },\n databaseType: \"postgres\",\n databaseName: snakeCase(name),\n poolSize: readIntegerEnv(\"DATABASE_POOL_SIZE\", 10),\n isDatabase: true,\n ownerServiceName: options.ownerServiceName ?? name,\n ...options,\n };\n }\n\n private static registerDatabaseServiceBridgeTask(\n serviceName: string,\n description: string,\n schema: DatabaseSchemaDefinition,\n isMeta: boolean,\n actorName: string,\n ): void {\n const taskName = `Insert database service bridge ${serviceName}`;\n if (this.get(taskName)) {\n return;\n }\n\n this.createMetaTask(\n taskName,\n (ctx, emit) => {\n if (ctx.__serviceName && ctx.__serviceName !== serviceName) {\n return false;\n }\n\n emit(\"global.meta.created_database_service\", {\n data: {\n service_name: serviceName,\n description,\n schema,\n is_meta: isMeta,\n },\n });\n this.log(\"Database service created\", {\n name: serviceName,\n isMeta,\n actorName,\n });\n return true;\n },\n \"Bridges database service creation into the global metadata signal.\",\n ).doOn(\"meta.service_registry.service_inserted\");\n }\n\n static createActor<\n D extends Record<string, any> = AnyObject,\n R = AnyObject,\n >(\n spec: ActorSpec<D, R>,\n options: ActorFactoryOptions = {},\n ): Actor<D, R> {\n this.bootstrap();\n return Cadenza.createActor(spec, options as ActorFactoryOptions<D, R>);\n }\n\n static createActorFromDefinition<\n D extends Record<string, any> = AnyObject,\n R = AnyObject,\n >(\n definition: ActorDefinition<D, R>,\n options: ActorFactoryOptions<D, R> = {},\n ): Actor<D, R> {\n this.bootstrap();\n return Cadenza.createActorFromDefinition(definition, options);\n }\n\n /**\n * Creates and registers a new task with the provided name, function, and optional details.\n *\n * @param {string} name - The name of the task to be created.\n * @param {TaskFunction} func - The function that contains the task execution logic.\n * @param {string} [description] - An optional description of what the task does.\n * @param {TaskOptions} [options={}] - An optional configuration object specifying additional task options.\n * @return {Task} - The created task instance.\n *\n * @example\n * You can use arrow functions to create tasks.\n * ```ts\n * const task = Cadenza.createTask('My task', (ctx) => {\n * console.log('My task executed with context:', ctx);\n * }, 'My task description');\n * ```\n *\n * You can also use named functions to create tasks.\n * This is the preferred way to create tasks since it allows for code inspection in the CadenzaUI.\n * ```ts\n * function myTask(ctx) {\n * console.log('My task executed with context:', ctx);\n * }\n *\n * const task = Cadenza.createTask('My task', myTask);\n * ```\n *\n * ** Use the TaskOptions object to configure the task. **\n *\n * With concurrency limit, timeout limit and retry settings.\n * ```ts\n * Cadenza.createTask('My task', (ctx) => {\n * console.log('My task executed with context:', ctx);\n * }, 'My task description', {\n * concurrency: 10,\n * timeout: 10000,\n * retryCount: 3,\n * retryDelay: 1000,\n * retryDelayFactor: 1.5,\n * });\n * ```\n *\n * You can specify the input and output context schemas for the task.\n * ```ts\n * Cadenza.createTask('My task', (ctx) => {\n * return { bar: 'foo' + ctx.foo };\n * }, 'My task description', {\n * inputContextSchema: {\n * type: 'object',\n * properties: {\n * foo: {\n * type: 'string',\n * },\n * },\n * required: ['foo'],\n * },\n * validateInputContext: true, // default is false\n * outputContextSchema: {\n * type: 'object',\n * properties: {\n * bar: {\n * type: 'string',\n * },\n * },\n * required: ['bar'],\n * },\n * validateOutputContext: true, // default is false\n * });\n * ```\n */\n static createTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createTask(name, func, description, options);\n }\n\n /**\n * Creates a meta task with the specified name, functionality, description, and options.\n * This is used for creating tasks that lives on the meta layer.\n * The meta layer is a special layer that is executed separately from the business logic layer and is used for extending Cadenzas core functionality.\n * See {@link Task} or {@link createTask} for more information.\n *\n * @param {string} name - The name of the meta task.\n * @param {TaskFunction} func - The function to be executed by the meta task.\n * @param {string} [description] - An optional description of the meta task.\n * @param {TaskOptions} [options={}] - Additional optional task configuration. Automatically sets `isMeta` to true.\n * @return {Task} A task instance configured as a meta task.\n */\n static createMetaTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createMetaTask(name, func, description, options);\n }\n\n /**\n * Creates a unique task by wrapping the provided task function with a uniqueness constraint.\n * Unique tasks are designed to execute once per execution ID, merging parents. This is useful for\n * tasks that require fan-in/joins after parallel branches.\n * See {@link Task} for more information.\n * @param {string} name Unique identifier.\n * @param {TaskFunction} func Function receiving joinedContexts as a list (context.joinedContexts).\n * @param {string} [description] Optional description.\n * @param {TaskOptions} [options={}] Optional task options.\n * @returns {Task} The created UniqueTask.\n *\n * @example\n * ```ts\n * const splitTask = Cadenza.createTask('Split foos', function* (ctx) {\n * for (const foo of ctx.foos) {\n * yield { foo };\n * }\n * }, 'Splits a list of foos into multiple sub-branches');\n *\n * const processTask = Cadenza.createTask('Process foo', (ctx) => {\n * return { bar: 'foo' + ctx.foo };\n * }, 'Process a foo');\n *\n * const uniqueTask = Cadenza.createUniqueTask('Gather processed foos', (ctx) => {\n * // A unique task will always be provided with a list of contexts (ctx.joinedContexts) from its predecessors.\n * const processedFoos = ctx.joinedContexts.map((c) => c.bar);\n * return { foos: processedFoos };\n * }, 'Gathers together the processed foos.');\n *\n * splitTask.then(\n * processTask.then(\n * uniqueTask,\n * ),\n * );\n *\n * // Give the flow a name using a routine\n * Cadenza.createRoutine(\n * 'Process foos',\n * [splitTask],\n * 'Processes a list of foos'\n * ).doOn('main.received_foos'); // Subscribe to a signal\n *\n * // Trigger the flow from anywhere\n * Cadenza.emit('main.received_foos', { foos: ['foo1', 'foo2', 'foo3'] });\n * ```\n */\n static createUniqueTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createUniqueTask(name, func, description, options);\n }\n\n /**\n * Creates a unique meta task with the specified name, function, description, and options.\n * See {@link createUniqueTask} and {@link createMetaTask} for more information.\n *\n * @param {string} name - The name of the task to create.\n * @param {TaskFunction} func - The function to execute when the task is run.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions} [options={}] - Optional settings for the task. Defaults to an empty object. Automatically sets `isMeta` and `isUnique` to true.\n * @return {Task} The created unique meta task.\n */\n static createUniqueMetaTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createUniqueMetaTask(name, func, description, options);\n }\n\n /**\n * Creates a throttled task with a concurrency limit of 1, ensuring that only one instance of the task can run at a time for a specific throttle tag.\n * This is useful for ensuring execution order and preventing race conditions.\n * See {@link Task} for more information.\n *\n * @param {string} name - The name of the task.\n * @param {TaskFunction} func - The function to be executed when the task runs.\n * @param {ThrottleTagGetter} [throttledIdGetter=() => \"default\"] - A function that generates a throttle tag identifier to group tasks for throttling.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions} [options={}] - Additional options to customize the task behavior.\n * @return {Task} The created throttled task.\n *\n * @example\n * ```ts\n * const task = Cadenza.createThrottledTask(\n * 'My task',\n * async (ctx) => {\n * await new Promise((resolve) => setTimeout(resolve, 1000));\n * console.log('My task executed with context:', ctx);\n * },\n * // Will throttle by the value of ctx.foo to make sure tasks with the same value are executed sequentially\n * (ctx) => ctx.foo,\n * );\n *\n * Cadenza.run(task, { foo: 'bar' }); // (First execution)\n * Cadenza.run(task, { foo: 'bar' }); // This will be executed after the first execution is finished\n * Cadenza.run(task, { foo: 'baz' }); // This will be executed in parallel with the first execution\n * ```\n */\n static createThrottledTask(\n name: string,\n func: TaskFunction,\n throttledIdGetter: ThrottleTagGetter = () => \"default\",\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createThrottledTask(\n name,\n func,\n throttledIdGetter,\n description,\n options,\n );\n }\n\n /**\n * Creates a throttled meta task with the specified configuration.\n * See {@link createThrottledTask} and {@link createMetaTask} for more information.\n *\n * @param {string} name - The name of the throttled meta task.\n * @param {TaskFunction} func - The task function to be executed.\n * @param {ThrottleTagGetter} throttledIdGetter - A function to retrieve the throttling identifier.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions} [options={}] - Additional options for configuring the task.\n * @return {Task} The created throttled meta task.\n */\n static createThrottledMetaTask(\n name: string,\n func: TaskFunction,\n throttledIdGetter: ThrottleTagGetter = () => \"default\",\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createThrottledMetaTask(\n name,\n func,\n throttledIdGetter,\n description,\n options,\n );\n }\n\n /**\n * Creates and returns a new debounced task with the specified parameters.\n * This is useful to prevent rapid execution of tasks that may be triggered by multiple events within a certain time frame.\n * See {@link DebounceTask} for more information.\n *\n * @param {string} name - The unique name of the task to be created.\n * @param {TaskFunction} func - The function to be executed by the task.\n * @param {string} [description] - An optional description of the task.\n * @param {number} [debounceTime=1000] - The debounce time in milliseconds to delay the execution of the task.\n * @param {TaskOptions & DebounceOptions} [options={}] - Additional configuration options for the task, including debounce behavior and other task properties.\n * @return {DebounceTask} A new instance of the DebounceTask with the specified configuration.\n *\n * @example\n * ```ts\n * const task = Cadenza.createDebounceTask(\n * 'My debounced task',\n * (ctx) => {\n * console.log('My task executed with context:', ctx);\n * },\n * 'My debounced task description',\n * 100, // Debounce time in milliseconds. Default is 1000\n * {\n * leading: false, // Should the first execution of a burst be executed immediately? Default is false\n * trailing: true, // Should the last execution of a burst be executed? Default is true\n * maxWait: 1000, // Maximum time in milliseconds to wait for the next execution. Default is 0\n * },\n * );\n *\n * Cadenza.run(task, { foo: 'bar' }); // This will not be executed\n * Cadenza.run(task, { foo: 'bar' }); // This will not be executed\n * Cadenza.run(task, { foo: 'baz' }); // This execution will be delayed by 100ms\n * ```\n */\n static createDebounceTask(\n name: string,\n func: TaskFunction,\n description?: string,\n debounceTime: number = 1000,\n options: TaskOptions & DebounceOptions = {},\n ): DebounceTask {\n this.bootstrap();\n return Cadenza.createDebounceTask(\n name,\n func,\n description,\n debounceTime,\n options,\n );\n }\n\n /**\n * Creates a debounced meta task with the specified parameters.\n * See {@link createDebounceTask} and {@link createMetaTask} for more information.\n *\n * @param {string} name - The name of the task.\n * @param {TaskFunction} func - The function to be executed by the task.\n * @param {string} [description] - Optional description of the task.\n * @param {number} [debounceTime=1000] - The debounce delay in milliseconds.\n * @param {TaskOptions & DebounceOptions} [options={}] - Additional configuration options for the task.\n * @return {DebounceTask} Returns an instance of the debounced meta task.\n */\n static createDebounceMetaTask(\n name: string,\n func: TaskFunction,\n description?: string,\n debounceTime: number = 1000,\n options: TaskOptions & DebounceOptions = {},\n ): DebounceTask {\n this.bootstrap();\n return Cadenza.createDebounceMetaTask(\n name,\n func,\n description,\n debounceTime,\n options,\n );\n }\n\n /**\n * Creates an ephemeral task with the specified configuration.\n * Ephemeral tasks are designed to self-destruct after execution or a certain condition is met.\n * This is useful for transient tasks such as resolving promises or performing cleanup operations.\n * They are not registered by default.\n * See {@link EphemeralTask} for more information.\n *\n * @param {string} name - The name of the task to be created.\n * @param {TaskFunction} func - The function that defines the logic of the task.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions & EphemeralTaskOptions} [options={}] - The configuration options for the task, including concurrency, timeouts, and retry policies.\n * @return {EphemeralTask} The created ephemeral task instance.\n *\n * @example\n * By default, ephemeral tasks are executed once and destroyed after execution.\n * ```ts\n * const task = Cadenza.createEphemeralTask('My ephemeral task', (ctx) => {\n * console.log('My task executed with context:', ctx);\n * });\n *\n * Cadenza.run(task); // Executes the task once and destroys it after execution\n * Cadenza.run(task); // Does nothing, since the task is destroyed\n * ```\n *\n * Use destroy condition to conditionally destroy the task\n * ```ts\n * const task = Cadenza.createEphemeralTask(\n * 'My ephemeral task',\n * (ctx) => {\n * console.log('My task executed with context:', ctx);\n * },\n * 'My ephemeral task description',\n * {\n * once: false, // Should the task be executed only once? Default is true\n * destroyCondition: (ctx) => ctx.foo > 10, // Should the task be destroyed after execution? Default is undefined\n * },\n * );\n *\n * Cadenza.run(task, { foo: 5 }); // The task will not be destroyed and can still be executed\n * Cadenza.run(task, { foo: 10 }); // The task will not be destroyed and can still be executed\n * Cadenza.run(task, { foo: 20 }); // The task will be destroyed after execution and cannot be executed anymore\n * Cadenza.run(task, { foo: 30 }); // This will not be executed\n * ```\n *\n * A practical use case for ephemeral tasks is to resolve a promise upon some external event.\n * ```ts\n * const task = Cadenza.createTask('Confirm something', (ctx, emit) => {\n * return new Promise((resolve) => {\n * ctx.foo = uuid();\n *\n * Cadenza.createEphemeralTask(`Resolve promise of ${ctx.foo}`, (c) => {\n * console.log('My task executed with context:', ctx);\n * resolve(c);\n * }).doOn(`socket.confirmation_received:${ctx.foo}`);\n *\n * emit('this_domain.confirmation_requested', ctx);\n * });\n * });\n * ```\n */\n static createEphemeralTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions & EphemeralTaskOptions = {},\n ): EphemeralTask {\n this.bootstrap();\n return Cadenza.createEphemeralTask(name, func, description, options);\n }\n\n /**\n * Creates an ephemeral meta-task with the specified name, function, description, and options.\n * See {@link createEphemeralTask} and {@link createMetaTask} for more details.\n *\n * @param {string} name - The name of the task to be created.\n * @param {TaskFunction} func - The function to be executed as part of the task.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions & EphemeralTaskOptions} [options={}] - Additional options for configuring the task.\n * @return {EphemeralTask} The created ephemeral meta-task.\n */\n static createEphemeralMetaTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions & EphemeralTaskOptions = {},\n ): EphemeralTask {\n this.bootstrap();\n return Cadenza.createEphemeralMetaTask(name, func, description, options);\n }\n\n /**\n * Creates a new routine with the specified name, tasks, and an optional description.\n * Routines are named entry points to starting tasks and are registered in the GraphRegistry.\n * They are used to group tasks together and provide a high-level structure for organizing and managing the execution of a set of tasks.\n * See {@link GraphRoutine} for more information.\n *\n * @param {string} name - The name of the routine to create.\n * @param {Task[]} tasks - A list of tasks to include in the routine.\n * @param {string} [description=\"\"] - An optional description for the routine.\n * @return {GraphRoutine} A new instance of the GraphRoutine containing the specified tasks and description.\n *\n * @example\n * ```ts\n * const task1 = Cadenza.createTask(\"Task 1\", () => {});\n * const task2 = Cadenza.createTask(\"Task 2\", () => {});\n *\n * task1.then(task2);\n *\n * const routine = Cadenza.createRoutine(\"Some routine\", [task1]);\n *\n * Cadenza.run(routine);\n *\n * // Or, routines can be triggered by signals\n * routine.doOn(\"some.signal\");\n *\n * Cadenza.emit(\"some.signal\", {});\n * ```\n */\n static createRoutine(\n name: string,\n tasks: Task[],\n description: string = \"\",\n ): GraphRoutine {\n this.bootstrap();\n return Cadenza.createRoutine(name, tasks, description);\n }\n\n /**\n * Creates a meta routine with a given name, tasks, and optional description.\n * Routines are named entry points to starting tasks and are registered in the GraphRegistry.\n * They are used to group tasks together and provide a high-level structure for organizing and managing the execution of a set of tasks.\n * See {@link GraphRoutine} and {@link createRoutine} for more information.\n *\n * @param {string} name - The name of the routine to be created.\n * @param {Task[]} tasks - An array of tasks that the routine will consist of.\n * @param {string} [description=\"\"] - An optional description for the routine.\n * @return {GraphRoutine} A new instance of the `GraphRoutine` representing the created routine.\n */\n static createMetaRoutine(\n name: string,\n tasks: Task[],\n description: string = \"\",\n ): GraphRoutine {\n this.bootstrap();\n return Cadenza.createMetaRoutine(name, tasks, description);\n }\n\n static reset() {\n Cadenza.reset();\n this.serviceRegistry?.reset();\n this.isBootstrapped = false;\n this.serviceCreated = false;\n this.defaultDatabaseServiceName = null;\n this.warnedInvalidMetaIntentResponderKeys = new Set();\n this.hydratedInquiryResults = new Map();\n this.frontendSyncScheduled = false;\n }\n}\n","import { v4 as uuid } from \"uuid\";\nimport { GraphContext, InquiryOptions, Task } from \"@cadenza.io/core\";\nimport type {\n AnyObject,\n Schema,\n TaskResult,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport Cadenza from \"../../Cadenza\";\n\n/**\n * Represents a task that delegates execution of a routine to a remote system or service.\n * The `DeputyTask` serves as a proxy to perform and track the progress of a remote workflow.\n * It extends the `Task` class with additional delegation capabilities.\n *\n * Emits various meta-signals for monitoring delegation progress and resolution.\n */\nexport default class DeputyTask extends Task {\n readonly isDeputy: boolean = true;\n\n protected readonly remoteRoutineName: string;\n protected serviceName: string | undefined;\n\n registeredDeputyMap: boolean = false;\n\n /**\n * Constructs a new instance of the class with the specified parameters.\n *\n * @param {string} name - The name of the task.\n * @param {string} remoteRoutineName - The name of the remote routine to delegate tasks to.\n * @param {string | undefined} [serviceName=undefined] - The name of the service associated with the task.\n * @param {string} [description=\"\"] - A brief description of the task.\n * @param {number} [concurrency=0] - The concurrency level of the task.\n * @param {number} [timeout=0] - The timeout duration for the task.\n * @param {boolean} [register=true] - Whether the task should be registered in the system.\n * @param {boolean} [isUnique=false] - Whether the task is unique.\n * @param {boolean} [isMeta=false] - Whether the task is a meta task.\n * @param {boolean} [isSubMeta=false] - Whether the task is a sub-meta task.\n * @param {boolean} [isHidden=false] - Whether the task is hidden from the system.\n * @param {ThrottleTagGetter | undefined} [getTagCallback=undefined] - A callback function to retrieve throttle tags.\n * @param {SchemaDefinition | undefined} [inputSchema=undefined] - The input schema definition for the task.\n * @param {boolean} [validateInputContext=false] - Whether to validate the input context against the input schema.\n * @param {SchemaDefinition | undefined} [outputSchema=undefined] - The output schema definition for the task.\n * @param {boolean} [validateOutputContext=false] - Whether to validate the output context against the output schema.\n * @param {number} [retryCount=0] - The number of retries allowed for task execution.\n * @param {number} [retryDelay=0] - The initial delay between retries in milliseconds.\n * @param {number} [retryDelayMax=0] - The maximum retry delay in milliseconds.\n * @param {number} [retryDelayFactor=1] - The factor by which to increase the retry delay for subsequent retries.\n * @return {void} This constructor does not return a value.\n */\n constructor(\n name: string,\n remoteRoutineName: string,\n serviceName: string | undefined = undefined,\n description: string = \"\",\n concurrency: number = 0,\n timeout: number = 0,\n register: boolean = true,\n isUnique: boolean = false,\n isMeta: boolean = false,\n isSubMeta: boolean = false,\n isHidden: boolean = false,\n getTagCallback: ThrottleTagGetter | undefined = undefined,\n inputSchema: Schema | undefined = undefined,\n validateInputContext: boolean = false,\n outputSchema: Schema | undefined = undefined,\n validateOutputContext: boolean = false,\n retryCount: number = 0,\n retryDelay: number = 0,\n retryDelayMax: number = 0,\n retryDelayFactor: number = 1,\n ) {\n const taskFunction = (\n context: AnyObject,\n emit: (signal: string, ctx: AnyObject) => void,\n inquire: (\n inquiry: string,\n context: AnyObject,\n options: InquiryOptions,\n ) => Promise<AnyObject>,\n progressCallback: (progress: number) => void,\n ): Promise<TaskResult> => {\n return new Promise((resolve, reject) => {\n if (context.__metadata.__blockRemoteExecution) {\n reject(new Error(\"Blocked remote execution\"));\n return;\n }\n\n if (context.__metadata.__skipRemoteExecution) {\n resolve(context);\n return;\n }\n\n const processId = uuid();\n\n context.__metadata.__deputyExecId = processId;\n emit(\"meta.deputy.delegation_requested\", {\n ...context,\n });\n\n // Ephemeral meta-task for progress\n Cadenza.createEphemeralMetaTask(\n `On progress deputy ${this.remoteRoutineName}`,\n (ctx) => {\n if (ctx.progress) progressCallback(ctx.progress * ctx.weight);\n },\n `Ephemeral task for deputy process ${processId}`,\n {\n once: false,\n destroyCondition: (ctx: AnyObject) =>\n ctx.progress === 1 || ctx.progress === undefined,\n register: false,\n },\n ).doOn(\n `meta.socket_client.delegation_progress:${processId}`,\n `meta.socket_client.delegated:${processId}`,\n `meta.fetch.delegated:${processId}`,\n `meta.service_registry.load_balance_failed:${processId}`,\n );\n\n // Ephemeral meta-task for resolution\n Cadenza.createEphemeralMetaTask(\n `Resolve deputy ${this.remoteRoutineName}`,\n (responseCtx) => {\n if (responseCtx?.errored) {\n reject(new Error(responseCtx.__error));\n } else {\n // TODO clean up metadata\n delete responseCtx.__isDeputy;\n resolve(responseCtx);\n }\n },\n `Ephemeral resolver for deputy process ${processId}`,\n { register: false },\n ).doOn(\n `meta.socket_client.delegated:${processId}`,\n `meta.fetch.delegated:${processId}`,\n `meta.service_registry.load_balance_failed:${processId}`,\n );\n });\n };\n\n super(\n name,\n taskFunction,\n description,\n concurrency,\n timeout,\n register,\n isUnique,\n isMeta,\n isSubMeta,\n isHidden,\n getTagCallback,\n inputSchema,\n validateInputContext,\n outputSchema,\n validateOutputContext,\n retryCount,\n retryDelay,\n retryDelayMax,\n retryDelayFactor,\n );\n\n this.remoteRoutineName = remoteRoutineName;\n this.serviceName = serviceName;\n\n this.attachSignal(\"meta.deputy.delegation_requested\");\n\n this.emit(\"meta.deputy.created\", {\n localTaskName: this.name,\n localTaskVersion: this.version,\n remoteRoutineName: this.remoteRoutineName,\n serviceName: this.serviceName,\n communicationType: \"delegation\",\n });\n }\n\n /**\n * Executes the specified task function within the provided execution context.\n *\n * @param {GraphContext} context - The execution context containing methods and metadata for task execution.\n * @param {function(string, AnyObject): void} emit - A function for emitting signals with associated data during execution.\n * @param inquire\n * @param {function(number): void} progressCallback - A callback function to report progress updates during task processing.\n * @param {{ nodeId: string, routineExecId: string }} nodeData - Object containing identifiers for the node and routine execution.\n * @return {TaskResult} Returns the result of the task function execution.\n */\n execute(\n context: GraphContext,\n emit: (signal: string, ctx: AnyObject) => void,\n inquire: (\n inquiry: string,\n context: AnyObject,\n options: InquiryOptions,\n ) => Promise<AnyObject>,\n progressCallback: (progress: number) => void,\n nodeData: { nodeId: string; routineExecId: string },\n ): TaskResult {\n const ctx = context.getContext();\n const metadata = context.getMetadata();\n\n const deputyContext = {\n __timeout: this.timeout,\n __localTaskName: this.name,\n __localTaskVersion: this.version,\n __localServiceName: Cadenza.serviceRegistry.serviceName,\n __previousTaskExecutionId: nodeData.nodeId,\n __remoteRoutineName: this.remoteRoutineName,\n __serviceName: this.serviceName,\n __localRoutineExecId:\n metadata.__routineExecId ?? metadata.__metadata?.__routineExecId,\n __executionTraceId: metadata.__executionTraceId ?? null,\n __metadata: {\n ...metadata,\n __skipRemoteExecution:\n metadata.__skipRemoteExecution ?? ctx.__skipRemoteExecution ?? false,\n __blockRemoteExecution:\n metadata.__blockRemoteExecution ?? ctx.__blockRemoteExecution ?? false,\n __deputyTaskName: this.name,\n },\n ...ctx,\n };\n\n return this.taskFunction(deputyContext, emit, inquire, progressCallback);\n }\n}\n","import DeputyTask from \"./DeputyTask\";\nimport { GraphContext, InquiryOptions } from \"@cadenza.io/core\";\nimport type {\n AnyObject,\n Schema,\n TaskResult,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport { DbOperationPayload } from \"../../types/queryData\";\nimport Cadenza from \"../../Cadenza\";\n\n/**\n * Represents a specialized task for delegating database operations. Extends `DeputyTask`.\n * This class is designed to abstract database operation requests, delegating execution to a meta-layer system.\n */\nexport default class DatabaseTask extends DeputyTask {\n private readonly queryData: DbOperationPayload;\n\n /**\n * Constructs an instance of the class with the provided parameters, defining\n * various configuration options and behaviors for the task.\n *\n * @param {string} name - The unique name of the task.\n * @param {string} taskName - The specific name of the task.\n * @param {string | undefined} serviceName - The associated service name. Defaults to undefined.\n * @param {string} description - A brief description of the task. Defaults to an empty string.\n * @param {DbOperationPayload} queryData - The data payload for database operations.\n * @param {number} concurrency - The level of concurrency allowed. Defaults to 0.\n * @param {number} timeout - The timeout duration in milliseconds. Defaults to 0.\n * @param {boolean} register - A flag indicating whether to register the task. Defaults to true.\n * @param {boolean} isUnique - Indicates if the task instance is unique. Defaults to false.\n * @param {boolean} isMeta - Indicates if the task is meta. Defaults to false.\n * @param {boolean} isSubMeta - Indicates if the task is a sub-meta task. Defaults to false.\n * @param {boolean} isHidden - Indicates if the task is hidden. Defaults to false.\n * @param {ThrottleTagGetter | undefined} getTagCallback - A callback used for throttling. Defaults to undefined.\n * @param {SchemaDefinition | undefined} inputSchema - The schema definition for input validation. Defaults to undefined.\n * @param {boolean} validateInputContext - Whether to validate the input context. Defaults to false.\n * @param {SchemaDefinition | undefined} outputSchema - The schema definition for output validation. Defaults to undefined.\n * @param {boolean} validateOutputContext - Whether to validate the output context. Defaults to false.\n * @param {number} retryCount - The maximum number of retry attempts. Defaults to 0.\n * @param {number} retryDelay - The delay between retries in milliseconds. Defaults to 0.\n * @param {number} retryDelayMax - The maximum delay between retries in milliseconds. Defaults to 0.\n * @param {number} retryDelayFactor - The factor for exponential backoff. Defaults to 1.\n * @return {void}\n */\n constructor(\n name: string,\n taskName: string,\n serviceName: string | undefined = undefined,\n description: string = \"\",\n queryData: DbOperationPayload,\n concurrency: number = 0,\n timeout: number = 0,\n register: boolean = true,\n isUnique: boolean = false,\n isMeta: boolean = false,\n isSubMeta: boolean = false,\n isHidden: boolean = false,\n getTagCallback: ThrottleTagGetter | undefined = undefined,\n inputSchema: Schema | undefined = undefined,\n validateInputContext: boolean = false,\n outputSchema: Schema | undefined = undefined,\n validateOutputContext: boolean = false,\n retryCount: number = 0,\n retryDelay: number = 0,\n retryDelayMax: number = 0,\n retryDelayFactor: number = 1,\n ) {\n super(\n name,\n taskName,\n serviceName,\n description,\n concurrency,\n timeout,\n register,\n isUnique,\n isMeta,\n isSubMeta,\n isHidden,\n getTagCallback,\n inputSchema,\n validateInputContext,\n outputSchema,\n validateOutputContext,\n retryCount,\n retryDelay,\n retryDelayMax,\n retryDelayFactor,\n );\n this.queryData = queryData;\n }\n\n /**\n * Executes the specified task within the given context.\n *\n * @param {GraphContext} context - The execution context for the current task, which includes data and metadata required for processing.\n * @param {(signal: string, ctx: AnyObject) => void} emit - A function used to send signals or events during task execution.\n * @param inquire\n * @param {(progress: number) => void} progressCallback - A function to report execution progress as a percentage (0-100).\n * @param {{ nodeId: string; routineExecId: string }} nodeData - An object containing identifiers for the current node and routine execution.\n * @return {TaskResult} The result of the task execution.\n */\n execute(\n context: GraphContext,\n emit: (signal: string, ctx: AnyObject) => void,\n inquire: (\n inquiry: string,\n context: AnyObject,\n options: InquiryOptions,\n ) => Promise<AnyObject>,\n progressCallback: (progress: number) => void,\n nodeData: { nodeId: string; routineExecId: string },\n ): TaskResult {\n const ctx = context.getContext();\n const metadata = context.getMetadata();\n const dynamicQueryData = ctx.queryData ?? {};\n delete ctx.queryData;\n const nextQueryData: DbOperationPayload = {\n ...this.queryData,\n data: {\n ...ctx.data,\n },\n ...dynamicQueryData,\n };\n\n const deputyContext = {\n ...ctx,\n __localTaskName: this.name,\n __localTaskVersion: this.version,\n __localServiceName: Cadenza.serviceRegistry.serviceName,\n __previousTaskExecutionId: nodeData.nodeId,\n __remoteRoutineName: this.remoteRoutineName,\n __serviceName: this.serviceName,\n __executionTraceId: metadata.__executionTraceId ?? null,\n __localRoutineExecId:\n metadata.__routineExecId ?? metadata.__metadata?.__routineExecId,\n __metadata: {\n ...metadata,\n __skipRemoteExecution:\n metadata.__skipRemoteExecution ?? ctx.__skipRemoteExecution ?? false,\n __blockRemoteExecution:\n metadata.__blockRemoteExecution ?? ctx.__blockRemoteExecution ?? false,\n __deputyTaskName: this.name,\n },\n data: nextQueryData.data ?? ctx.data,\n batch: nextQueryData.batch ?? ctx.batch,\n transaction: nextQueryData.transaction ?? ctx.transaction,\n onConflict: Object.prototype.hasOwnProperty.call(nextQueryData, \"onConflict\")\n ? nextQueryData.onConflict\n : undefined,\n filter: nextQueryData.filter ?? ctx.filter,\n fields: nextQueryData.fields ?? ctx.fields,\n queryData: nextQueryData,\n };\n\n return this.taskFunction(deputyContext, emit, inquire, progressCallback);\n }\n}\n","import { GraphRoutine, Task } from \"@cadenza.io/core\";\nimport type { AnyObject } from \"@cadenza.io/core\";\nimport { v4 as uuid } from \"uuid\";\nimport Cadenza from \"../Cadenza\";\nimport { isBrowser } from \"../utils/environment\";\nimport { InquiryResponderDescriptor } from \"../types/inquiry\";\nimport type { ServiceInstanceDescriptor } from \"../types/serviceRegistry\";\nimport type {\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n} from \"../types/transport\";\nimport {\n isMetaIntentName,\n META_READINESS_INTENT,\n META_RUNTIME_STATUS_INTENT,\n META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT,\n} from \"../utils/inquiry\";\nimport {\n getRouteableTransport,\n normalizeServiceInstanceDescriptor,\n} from \"../utils/serviceInstance\";\nimport {\n buildTransportClientKey,\n normalizeServiceTransportDescriptor,\n transportSupportsProtocol,\n} from \"../utils/transport\";\nimport { ensureDelegationContextMetadata } from \"../utils/delegation\";\nimport {\n evaluateDependencyReadiness,\n resolveServiceReadinessState,\n summarizeDependencyReadiness,\n type DependencyReadinessState,\n type ReadinessState,\n} from \"../utils/readiness\";\nimport {\n hasSignificantRuntimeStatusChange,\n resolveRuntimeStatus,\n runtimeStatusPriority,\n type RuntimeStatusSnapshot,\n type RuntimeStatusState,\n} from \"../utils/runtimeStatus\";\n\nconst META_SERVICE_REGISTRY_FULL_SYNC_INTENT =\n \"meta-service-registry-full-sync\";\nconst CADENZA_DB_GATHERED_SYNC_SIGNAL =\n \"global.meta.cadenza_db.gathered_sync_data\";\nconst META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL =\n \"meta.service_registry.gathered_sync_transmission_reconcile_requested\";\nconst META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL =\n \"meta.service_registry.runtime_status.heartbeat_tick\";\nconst META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL =\n \"meta.service_registry.runtime_status.monitor_tick\";\nconst EARLY_FULL_SYNC_DELAYS_MS = [\n 100,\n 1500,\n 5000,\n 12000,\n 25000,\n 45000,\n 70000,\n] as const;\nconst BOOTSTRAP_FULL_SYNC_RESPONDER_TASKS = [\n \"Query service_instance\",\n \"Query service_instance_transport\",\n \"Query signal_to_task_map\",\n \"Query intent_to_task_map\",\n] as const;\nconst INTERNAL_RUNTIME_STATUS_TASK_NAMES = new Set([\n \"Track local routine start\",\n \"Track local routine end\",\n \"Start runtime status sharing intervals\",\n \"Broadcast runtime status\",\n \"Monitor dependee heartbeat freshness\",\n \"Resolve runtime status fallback inquiry\",\n \"Respond runtime status inquiry\",\n \"Respond readiness inquiry\",\n \"Collect distributed readiness\",\n \"Get status\",\n]);\n\nfunction buildServiceRegistryInsertQueryData(\n ctx: AnyObject,\n queryData: Record<string, unknown>,\n): Record<string, unknown> {\n const joinedContexts = Array.isArray((ctx as AnyObject).joinedContexts)\n ? ((ctx as AnyObject).joinedContexts as AnyObject[])\n : [];\n const getJoinedValue = (key: \"data\" | \"batch\" | \"__registrationData\") => {\n for (let index = joinedContexts.length - 1; index >= 0; index -= 1) {\n const joinedContext = joinedContexts[index];\n if (\n joinedContext &&\n typeof joinedContext === \"object\" &&\n (Object.prototype.hasOwnProperty.call(joinedContext, key) ||\n joinedContext[key] !== undefined)\n ) {\n return joinedContext[key];\n }\n }\n\n return undefined;\n };\n const registrationData =\n Object.prototype.hasOwnProperty.call(ctx, \"__registrationData\") &&\n ctx.__registrationData !== undefined\n ? ctx.__registrationData\n : getJoinedValue(\"__registrationData\");\n const existingQueryData =\n ctx.queryData && typeof ctx.queryData === \"object\" ? ctx.queryData : {};\n const nextQueryData: Record<string, unknown> = {\n ...existingQueryData,\n ...queryData,\n };\n if (!Object.prototype.hasOwnProperty.call(queryData, \"onConflict\")) {\n delete nextQueryData.onConflict;\n }\n const resolvedData =\n Object.prototype.hasOwnProperty.call(ctx, \"data\") || ctx.data !== undefined\n ? ctx.data\n : getJoinedValue(\"data\");\n const resolvedBatch =\n Object.prototype.hasOwnProperty.call(ctx, \"batch\") || ctx.batch !== undefined\n ? ctx.batch\n : getJoinedValue(\"batch\");\n const nextData =\n resolvedData !== undefined\n ? resolvedData && typeof resolvedData === \"object\"\n ? { ...resolvedData }\n : resolvedData\n : registrationData &&\n typeof registrationData === \"object\" &&\n !Array.isArray(registrationData)\n ? { ...registrationData }\n : registrationData;\n\n if (nextData !== undefined) {\n nextQueryData.data = nextData;\n }\n\n if (resolvedBatch !== undefined) {\n nextQueryData.batch = Array.isArray(resolvedBatch)\n ? resolvedBatch.map((row) =>\n row && typeof row === \"object\" ? { ...row } : row,\n )\n : resolvedBatch;\n }\n\n return nextQueryData;\n}\n\nfunction normalizeServiceRegistryInsertResult(\n tableName: string,\n ctx: AnyObject,\n queryData: Record<string, unknown>,\n rawResult: unknown,\n): unknown {\n if (!rawResult || typeof rawResult !== \"object\") {\n return rawResult;\n }\n\n const result = { ...(rawResult as AnyObject) };\n delete result.__resolverOriginalContext;\n delete result.__resolverQueryData;\n const normalizedQueryData =\n result.queryData && typeof result.queryData === \"object\"\n ? { ...(result.queryData as AnyObject) }\n : { ...queryData };\n const resolvedData =\n result.data ??\n normalizedQueryData.data ??\n queryData.data ??\n ctx.data ??\n ctx.__registrationData;\n\n if (resolvedData !== undefined && result.data === undefined) {\n result.data = resolvedData;\n }\n\n if (\n resolvedData !== undefined &&\n (normalizedQueryData.data === undefined || normalizedQueryData.data === null)\n ) {\n normalizedQueryData.data = resolvedData;\n }\n\n result.queryData = normalizedQueryData;\n\n if (tableName === \"service\") {\n const resolvedServiceName = String(\n ctx.__serviceName ??\n result.__serviceName ??\n (resolvedData as AnyObject | undefined)?.name ??\n (resolvedData as AnyObject | undefined)?.service_name ??\n \"\",\n ).trim();\n\n if (resolvedServiceName) {\n result.__serviceName = resolvedServiceName;\n }\n }\n\n const resolvedLocalServiceInstanceId = String(\n ctx.__serviceInstanceId ??\n (resolvedData as AnyObject | undefined)?.uuid ??\n (resolvedData as AnyObject | undefined)?.service_instance_id ??\n \"\",\n ).trim();\n\n if (resolvedLocalServiceInstanceId) {\n result.__serviceInstanceId = resolvedLocalServiceInstanceId;\n }\n\n if (\n tableName === \"service_instance\" ||\n tableName === \"service_instance_transport\"\n ) {\n const resolvedUuid = String(\n result.uuid ??\n (resolvedData as AnyObject | undefined)?.uuid ??\n ctx.__serviceInstanceId ??\n \"\",\n ).trim();\n\n if (resolvedUuid) {\n result.uuid = resolvedUuid;\n }\n }\n\n return result;\n}\n\nfunction summarizeTransportDescriptors(\n transports: Array<\n Pick<\n ServiceTransportDescriptor,\n \"uuid\" | \"serviceInstanceId\" | \"role\" | \"origin\" | \"protocols\"\n >\n >,\n) {\n return transports.map((transport) => ({\n uuid: transport.uuid,\n serviceInstanceId: transport.serviceInstanceId,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols,\n }));\n}\n\nfunction resolveServiceRegistryInsertTask(\n tableName: string,\n queryData: Record<string, unknown> = {},\n options: Record<string, unknown> = {},\n): Task {\n const remoteInsertTask = Cadenza.createCadenzaDBInsertTask(\n tableName,\n queryData,\n options,\n );\n\n const localExecutionRequestedSignal = `meta.service_registry.insert_execution_requested:${tableName}:local`;\n const remoteExecutionRequestedSignal = `meta.service_registry.insert_execution_requested:${tableName}:remote`;\n const executionResolvedSignal = `meta.service_registry.insert_execution_resolved:${tableName}`;\n const executionFailedSignal = `meta.service_registry.insert_execution_failed:${tableName}`;\n\n const createPrepareExecutionTask = (signalName: string) =>\n Cadenza.createMetaTask(\n `Prepare service registry insert execution for ${tableName} (${signalName})`,\n (ctx) => {\n const nextQueryData = buildServiceRegistryInsertQueryData(ctx, queryData);\n\n const delegationContext = ensureDelegationContextMetadata({\n ...ctx,\n data:\n nextQueryData.data !== undefined ? nextQueryData.data : ctx.data,\n batch:\n nextQueryData.batch !== undefined ? nextQueryData.batch : ctx.batch,\n onConflict:\n Object.prototype.hasOwnProperty.call(nextQueryData, \"onConflict\")\n ? nextQueryData.onConflict\n : undefined,\n transaction:\n nextQueryData.transaction !== undefined\n ? nextQueryData.transaction\n : ctx.transaction,\n queryData: nextQueryData,\n }) as AnyObject & {\n __deputyExecId: string;\n __metadata: AnyObject;\n };\n delegationContext.__metadata.__skipRemoteExecution =\n delegationContext.__metadata.__skipRemoteExecution ??\n delegationContext.__skipRemoteExecution ??\n false;\n delegationContext.__metadata.__blockRemoteExecution =\n delegationContext.__metadata.__blockRemoteExecution ??\n delegationContext.__blockRemoteExecution ??\n false;\n\n return {\n ...delegationContext,\n __resolverOriginalContext: {\n ...ctx,\n },\n __resolverQueryData: nextQueryData,\n };\n },\n `Prepares ${tableName} service-registry insert payloads for runner execution.`,\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(signalName)\n .emitsOnFail(executionFailedSignal);\n\n const prepareLocalExecutionTask = createPrepareExecutionTask(\n localExecutionRequestedSignal,\n );\n const prepareRemoteExecutionTask = createPrepareExecutionTask(\n remoteExecutionRequestedSignal,\n );\n\n const finalizeExecutionTask = Cadenza.createMetaTask(\n `Finalize service registry insert execution for ${tableName}`,\n (ctx, emit) => {\n if (!ctx.__resolverRequestId) {\n return false;\n }\n\n const normalized = normalizeServiceRegistryInsertResult(\n tableName,\n (ctx.__resolverOriginalContext as AnyObject) ?? ctx,\n (ctx.__resolverQueryData as Record<string, unknown>) ?? ctx.queryData ?? {},\n ctx,\n );\n\n if (\n tableName === \"service_instance\" &&\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\")\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] finalize_service_registry_insert\", {\n tableName,\n hasNormalized: !!normalized,\n normalizedKeys:\n normalized && typeof normalized === \"object\"\n ? Object.keys(normalized as AnyObject)\n : [],\n uuid:\n normalized && typeof normalized === \"object\"\n ? (normalized as AnyObject).uuid ??\n (normalized as AnyObject).data?.uuid ??\n (normalized as AnyObject).queryData?.data?.uuid ??\n null\n : null,\n serviceName:\n normalized && typeof normalized === \"object\"\n ? (normalized as AnyObject).__serviceName ??\n (normalized as AnyObject).data?.service_name ??\n (normalized as AnyObject).queryData?.data?.service_name ??\n null\n : null,\n errored:\n normalized && typeof normalized === \"object\"\n ? (normalized as AnyObject).errored === true\n : false,\n error:\n normalized && typeof normalized === \"object\"\n ? (normalized as AnyObject).__error ?? null\n : null,\n inquiryMeta:\n normalized && typeof normalized === \"object\"\n ? (normalized as AnyObject).__inquiryMeta ?? null\n : null,\n });\n }\n\n if (!normalized || typeof normalized !== \"object\") {\n return normalized as any;\n }\n\n emit(executionResolvedSignal, normalized as AnyObject);\n return normalized;\n },\n `Normalizes ${tableName} service-registry insert results for resolver callers.`,\n {\n register: false,\n isHidden: true,\n },\n );\n\n const wiredLocalTaskNames = new Set<string>();\n const wireExecutionTarget = (targetTask: Task, prepareTask: Task) => {\n targetTask.then(finalizeExecutionTask).emitsOnFail(executionFailedSignal);\n prepareTask.then(targetTask);\n };\n\n wireExecutionTarget(remoteInsertTask, prepareRemoteExecutionTask);\n\n return Cadenza.createMetaTask(\n `Resolve service registry insert for ${tableName}`,\n (ctx, emit) =>\n new Promise((resolve) => {\n const resolverRequestId = uuid();\n\n Cadenza.createEphemeralMetaTask(\n `Resolve service registry insert execution for ${tableName} (${resolverRequestId})`,\n (resultCtx) => {\n if (resultCtx.__resolverRequestId !== resolverRequestId) {\n return false;\n }\n\n const normalizedResult = {\n ...resultCtx,\n };\n delete normalizedResult.__resolverRequestId;\n delete normalizedResult.__resolverOriginalContext;\n delete normalizedResult.__resolverQueryData;\n\n resolve(normalizedResult);\n return normalizedResult;\n },\n `Resolves signal-driven ${tableName} service-registry insert execution.`,\n {\n register: false,\n },\n ).doOn(executionResolvedSignal, executionFailedSignal);\n\n const localInsertTask = Cadenza.getLocalCadenzaDBInsertTask(tableName);\n const executionSignal = localInsertTask\n ? localExecutionRequestedSignal\n : remoteExecutionRequestedSignal;\n\n if (\n tableName === \"service_instance\" &&\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\")\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] resolve_service_registry_insert\", {\n tableName,\n executionSignal,\n hasLocalInsertTask: !!localInsertTask,\n serviceName: ctx.__serviceName ?? ctx.data?.service_name ?? null,\n serviceInstanceId: ctx.__serviceInstanceId ?? ctx.data?.uuid ?? null,\n hasData: !!ctx.data,\n dataKeys:\n ctx.data && typeof ctx.data === \"object\"\n ? Object.keys(ctx.data)\n : [],\n registrationKeys:\n ctx.__registrationData &&\n typeof ctx.__registrationData === \"object\"\n ? Object.keys(ctx.__registrationData)\n : [],\n });\n }\n\n if (\n localInsertTask &&\n !wiredLocalTaskNames.has(localInsertTask.name)\n ) {\n wireExecutionTarget(localInsertTask, prepareLocalExecutionTask);\n wiredLocalTaskNames.add(localInsertTask.name);\n }\n\n emit(executionSignal, {\n ...ctx,\n __resolverRequestId: resolverRequestId,\n });\n }),\n `Resolves ${tableName} inserts through the local CadenzaDB task when available.`,\n options,\n );\n}\n\nfunction readPositiveIntegerEnv(name: string, fallback: number): number {\n if (typeof process === \"undefined\") {\n return fallback;\n }\n\n const raw = process.env?.[name];\n const parsed = Number(raw);\n if (!Number.isFinite(parsed)) {\n return fallback;\n }\n\n const normalized = Math.trunc(parsed);\n if (normalized <= 0) {\n return fallback;\n }\n\n return normalized;\n}\n\nexport interface DeputyDescriptor {\n serviceName: string;\n remoteRoutineName?: string;\n signalName?: string;\n localTaskName: string;\n communicationType: string;\n}\n\ninterface RemoteIntentDeputyDescriptor {\n key: string;\n intentName: string;\n serviceName: string;\n remoteTaskName: string;\n remoteTaskVersion: number;\n localTaskName: string;\n localTask: Task;\n}\n\ninterface RuntimeStatusReport {\n serviceName: string;\n serviceInstanceId: string;\n transportId?: string;\n transportRole?: ServiceTransportRole;\n transportOrigin?: string;\n transportProtocols?: ServiceTransportProtocol[];\n isFrontend?: boolean;\n reportedAt: string;\n state: RuntimeStatusState;\n acceptingWork: boolean;\n numberOfRunningGraphs: number;\n isActive: boolean;\n isNonResponsive: boolean;\n isBlocked: boolean;\n health?: AnyObject;\n}\n\ninterface RuntimeStatusFallbackRestDiagnostic {\n attempted: boolean;\n outcome:\n | \"instance_missing\"\n | \"fetch_unavailable\"\n | \"no_rest_transport\"\n | \"http_error\"\n | \"invalid_report\"\n | \"identity_mismatch\"\n | \"fetch_error\"\n | \"matched\";\n transport?: {\n uuid: string;\n role: ServiceTransportRole;\n origin: string;\n protocols: ServiceTransportProtocol[];\n clientCreated?: boolean;\n };\n responseStatus?: number;\n responseStatusText?: string;\n payloadServiceName?: string;\n payloadServiceInstanceId?: string;\n payloadKeys?: string[];\n error?: string;\n}\n\ninterface RuntimeStatusFallbackFailureDiagnostics {\n target: {\n serviceName: string;\n serviceInstanceId: string;\n };\n instance: {\n exists: boolean;\n runtimeState?: RuntimeStatusState;\n acceptingWork?: boolean;\n reportedAt?: string | null;\n isDatabase?: boolean;\n isFrontend?: boolean;\n isBootstrapPlaceholder?: boolean;\n transports: Array<{\n uuid: string;\n role: ServiceTransportRole;\n origin: string;\n protocols: ServiceTransportProtocol[];\n clientCreated?: boolean;\n }>;\n };\n directStatusCheck: RuntimeStatusFallbackRestDiagnostic;\n inquiry: {\n meta: AnyObject;\n reportTargets: Array<{\n serviceName?: string;\n serviceInstanceId?: string;\n transportId?: string;\n state?: RuntimeStatusState;\n acceptingWork?: boolean;\n reportedAt?: string;\n }>;\n };\n}\n\ninterface DependencyReadinessDetail {\n serviceName: string;\n serviceInstanceId: string;\n dependencyState: DependencyReadinessState;\n runtimeState: RuntimeStatusState;\n acceptingWork: boolean;\n missedHeartbeats: number;\n stale: boolean;\n blocked: boolean;\n reason:\n | \"missing\"\n | \"heartbeat-timeout\"\n | \"heartbeat-stale\"\n | \"runtime-unavailable\"\n | \"runtime-overloaded\"\n | \"runtime-degraded\"\n | \"runtime-healthy\";\n lastHeartbeatAt: string | null;\n reportedAt: string | null;\n}\n\ninterface ReadinessReport {\n serviceName: string;\n serviceInstanceId: string;\n reportedAt: string;\n readinessState: ReadinessState;\n runtimeState: RuntimeStatusState;\n acceptingWork: boolean;\n dependencySummary: {\n total: number;\n ready: number;\n degraded: number;\n overloaded: number;\n unavailable: number;\n stale: number;\n };\n dependencies?: DependencyReadinessDetail[];\n}\n\n/**\n * The ServiceRegistry class is a singleton that manages the registration and lifecycle of\n * service instances, deputies, and remote signals in a distributed service architecture.\n * It handles various tasks such as instance updates, remote signal registration,\n * service status synchronization, and error/event broadcasting.\n */\nexport default class ServiceRegistry {\n private static _instance: ServiceRegistry;\n public static get instance(): ServiceRegistry {\n if (!this._instance) this._instance = new ServiceRegistry();\n return this._instance;\n }\n\n private instances: Map<string, ServiceInstanceDescriptor[]> = new Map();\n private deputies: Map<string, DeputyDescriptor[]> = new Map();\n private remoteSignals: Map<string, Set<string>> = new Map();\n private remoteIntents: Map<string, Set<string>> = new Map();\n private gatheredSyncTransmissionServices: Set<string> = new Set();\n private remoteIntentDeputiesByKey: Map<string, RemoteIntentDeputyDescriptor> =\n new Map();\n private remoteIntentDeputiesByTask: Map<Task, RemoteIntentDeputyDescriptor> =\n new Map();\n private dependeesByService: Map<string, Set<string>> = new Map();\n private dependeeByInstance: Map<string, string> = new Map();\n private readinessDependeesByService: Map<string, Set<string>> = new Map();\n private readinessDependeeByInstance: Map<string, string> = new Map();\n private lastHeartbeatAtByInstance: Map<string, number> = new Map();\n private missedHeartbeatsByInstance: Map<string, number> = new Map();\n private runtimeStatusFallbackInFlightByInstance: Set<string> = new Set();\n private activeRoutineExecutionIds: Set<string> = new Set();\n private runtimeStatusHeartbeatStarted = false;\n private lastRuntimeStatusSnapshot: RuntimeStatusSnapshot | null = null;\n private readonly runtimeStatusHeartbeatIntervalMs = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_HEARTBEAT_MS\",\n 30_000,\n );\n private readonly runtimeStatusMissThreshold = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_MISSED_HEARTBEATS\",\n 3,\n );\n private readonly runtimeStatusFallbackTimeoutMs = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_FALLBACK_TIMEOUT_MS\",\n 1_500,\n );\n private readonly degradedGraphThreshold = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_DEGRADED_GRAPH_THRESHOLD\",\n 10,\n );\n private readonly overloadedGraphThreshold = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_OVERLOADED_GRAPH_THRESHOLD\",\n 20,\n );\n serviceName: string | null = null;\n serviceInstanceId: string | null = null;\n numberOfRunningGraphs: number = 0;\n useSocket: boolean = false;\n retryCount: number = 3;\n isFrontend: boolean = false;\n connectsToCadenzaDB: boolean = false;\n\n handleInstanceUpdateTask: Task;\n handleTransportUpdateTask: Task;\n handleGlobalSignalRegistrationTask: Task;\n handleGlobalIntentRegistrationTask: Task;\n reconcileGatheredSyncTransmissionsTask: Task;\n handleSocketStatusUpdateTask: Task;\n fullSyncTask: GraphRoutine | Task;\n getAllInstances: Task;\n doForEachInstance: Task;\n deleteInstance: Task;\n getBalancedInstance: Task;\n getInstanceById: Task;\n getInstancesByServiceName: Task;\n handleDeputyRegistrationTask: Task;\n getStatusTask: Task;\n insertServiceTask: Task;\n insertServiceInstanceTask: Task;\n insertServiceTransportTask: Task;\n handleServiceNotRespondingTask: Task;\n handleServiceHandshakeTask: Task;\n collectTransportDiagnosticsTask: Task;\n collectReadinessTask: Task;\n\n private buildRemoteIntentDeputyKey(map: {\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion?: number;\n }): string {\n return `${map.intentName}|${map.serviceName}|${map.taskName}|${map.taskVersion ?? 1}`;\n }\n\n private readArrayPayload(\n ctx: AnyObject,\n keys: string[],\n ): Array<Record<string, unknown>> {\n for (const key of keys) {\n const value = (ctx as any)?.[key];\n if (Array.isArray(value)) {\n return value as Array<Record<string, unknown>>;\n }\n }\n\n if (Array.isArray((ctx as any)?.rows)) {\n return (ctx as any).rows as Array<Record<string, unknown>>;\n }\n\n if (Array.isArray((ctx as any)?.data)) {\n return (ctx as any).data as Array<Record<string, unknown>>;\n }\n\n return [];\n }\n\n private normalizeSignalMaps(ctx: AnyObject): Array<{\n signalName: string;\n serviceName: string;\n isGlobal: boolean;\n deleted?: boolean;\n }> {\n const arrayPayload = this.readArrayPayload(ctx, [\n \"signalToTaskMaps\",\n \"signal_to_task_maps\",\n \"signalToTaskMap\",\n \"signal_to_task_map\",\n ]);\n\n if (arrayPayload.length > 0) {\n return arrayPayload\n .map((map) => ({\n signalName: String(\n map.signalName ?? map.signal_name ?? \"\",\n ).trim(),\n serviceName: String(\n map.serviceName ?? map.service_name ?? \"\",\n ).trim(),\n isGlobal: Boolean(map.isGlobal ?? map.is_global ?? false),\n deleted: Boolean(map.deleted),\n }))\n .filter((map) => map.signalName && map.serviceName);\n }\n\n const single =\n (ctx as any).signalToTaskMap ??\n (ctx as any).signal_to_task_map ??\n (ctx as any).data ??\n (((ctx as any).signalName ?? (ctx as any).signal_name)\n ? ctx\n : undefined);\n\n if (!single || typeof single !== \"object\") {\n return [];\n }\n\n return [\n {\n signalName: String(\n (single as any).signalName ?? (single as any).signal_name ?? \"\",\n ).trim(),\n serviceName: String(\n (single as any).serviceName ?? (single as any).service_name ?? \"\",\n ).trim(),\n isGlobal: Boolean((single as any).isGlobal ?? (single as any).is_global ?? false),\n deleted: Boolean((single as any).deleted),\n },\n ].filter((map) => map.signalName && map.serviceName);\n }\n\n private normalizeIntentMaps(ctx: AnyObject): Array<{\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n deleted?: boolean;\n }> {\n const arrayPayload = this.readArrayPayload(ctx, [\n \"intentToTaskMaps\",\n \"intent_to_task_maps\",\n \"intentToTaskMap\",\n \"intent_to_task_map\",\n ]);\n\n if (arrayPayload.length > 0) {\n return arrayPayload\n .map((m: any) => ({\n intentName: m.intentName ?? m.intent_name,\n serviceName: m.serviceName ?? m.service_name,\n taskName: m.taskName ?? m.task_name,\n taskVersion: m.taskVersion ?? m.task_version ?? 1,\n deleted: !!m.deleted,\n }))\n .filter((m: any) => m.intentName && m.serviceName && m.taskName);\n }\n\n const single =\n (ctx as any).intentToTaskMap ??\n (ctx as any).intent_to_task_map ??\n (ctx as any).data ??\n ((ctx as any).intentName ? ctx : undefined);\n\n if (!single) return [];\n\n const normalized = {\n intentName: single.intentName ?? single.intent_name,\n serviceName: single.serviceName ?? single.service_name,\n taskName: single.taskName ?? single.task_name,\n taskVersion: single.taskVersion ?? single.task_version ?? 1,\n deleted: !!single.deleted,\n };\n\n if (!normalized.intentName || !normalized.serviceName || !normalized.taskName)\n return [];\n\n return [normalized];\n }\n\n private normalizeServiceInstancesFromSync(\n ctx: AnyObject,\n ): ServiceInstanceDescriptor[] {\n const rawTransports = this.readArrayPayload(ctx, [\n \"serviceInstanceTransports\",\n \"service_instance_transports\",\n \"serviceInstanceTransport\",\n \"service_instance_transport\",\n ])\n .map((transport) => normalizeServiceTransportDescriptor(transport))\n .filter(\n (transport): transport is ServiceTransportDescriptor =>\n !!transport && !transport.deleted,\n );\n\n const transportsByInstance = new Map<string, ServiceTransportDescriptor[]>();\n for (const transport of rawTransports) {\n if (!transportsByInstance.has(transport.serviceInstanceId)) {\n transportsByInstance.set(transport.serviceInstanceId, []);\n }\n\n transportsByInstance.get(transport.serviceInstanceId)!.push(transport);\n }\n\n return this.readArrayPayload(ctx, [\n \"serviceInstances\",\n \"service_instances\",\n \"serviceInstance\",\n \"service_instance\",\n ])\n .map((instance: AnyObject) =>\n normalizeServiceInstanceDescriptor({\n ...instance,\n transports:\n Array.isArray((instance as any)?.transports) &&\n (instance as any).transports.length > 0\n ? (instance as any).transports\n : transportsByInstance.get(\n String(\n (instance as any)?.uuid ??\n (instance as any)?.serviceInstanceId ??\n (instance as any)?.service_instance_id ??\n \"\",\n ).trim(),\n ) ?? [],\n }),\n )\n .filter(\n (instance: ServiceInstanceDescriptor | null): instance is ServiceInstanceDescriptor =>\n !!instance &&\n !!instance.isActive &&\n !instance.isNonResponsive &&\n !instance.isBlocked,\n );\n }\n\n private shouldReconcileGatheredSyncTransmissions(): boolean {\n return this.serviceName === \"CadenzaDB\";\n }\n\n private collectGatheredSyncTransmissionRecipients(\n ctx: AnyObject,\n ): Set<string> {\n const recipients = new Set<string>();\n const addRecipient = (serviceName: unknown) => {\n const normalizedServiceName = String(serviceName ?? \"\").trim();\n if (\n !normalizedServiceName ||\n normalizedServiceName === this.serviceName\n ) {\n return;\n }\n\n recipients.add(normalizedServiceName);\n };\n\n addRecipient(ctx.serviceName ?? ctx.__serviceName);\n\n for (const instance of this.normalizeServiceInstancesFromSync(ctx)) {\n addRecipient(instance.serviceName);\n }\n\n for (const [serviceName, instances] of this.instances.entries()) {\n if (!instances?.length) {\n continue;\n }\n\n addRecipient(serviceName);\n }\n\n return recipients;\n }\n\n private reconcileGatheredSyncTransmissions(ctx: AnyObject, emit: any): boolean {\n if (!this.shouldReconcileGatheredSyncTransmissions()) {\n return false;\n }\n\n const desiredRecipients =\n this.collectGatheredSyncTransmissionRecipients(ctx);\n const createdRecipients: string[] = [];\n\n for (const serviceName of desiredRecipients) {\n if (this.gatheredSyncTransmissionServices.has(serviceName)) {\n continue;\n }\n\n Cadenza.createSignalTransmissionTask(\n CADENZA_DB_GATHERED_SYNC_SIGNAL,\n serviceName,\n );\n this.gatheredSyncTransmissionServices.add(serviceName);\n createdRecipients.push(serviceName);\n }\n\n for (const serviceName of Array.from(this.gatheredSyncTransmissionServices)) {\n if (desiredRecipients.has(serviceName)) {\n continue;\n }\n\n Cadenza.get(\n `Transmit signal: ${CADENZA_DB_GATHERED_SYNC_SIGNAL} to ${serviceName}`,\n )?.destroy();\n this.gatheredSyncTransmissionServices.delete(serviceName);\n }\n\n if (createdRecipients.length > 0) {\n emit(\"meta.cadenza_db.sync_tick\", {\n __syncing: true,\n __reason: \"gathered_sync_transmissions_reconciled\",\n });\n }\n\n return (\n createdRecipients.length > 0 ||\n this.gatheredSyncTransmissionServices.size > 0\n );\n }\n\n private registerRemoteIntentDeputy(map: {\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n }) {\n if (!this.serviceName || map.serviceName === this.serviceName) {\n return;\n }\n\n const key = this.buildRemoteIntentDeputyKey(map);\n if (this.remoteIntentDeputiesByKey.has(key)) {\n return;\n }\n\n const deputyTaskName = `Inquire ${map.intentName} via ${map.serviceName} (${map.taskName} v${map.taskVersion})`;\n\n const deputyTask = isMetaIntentName(map.intentName)\n ? Cadenza.createMetaDeputyTask(map.taskName, map.serviceName, {\n register: false,\n isHidden: true,\n retryCount: 1,\n retryDelay: 50,\n retryDelayFactor: 1.2,\n })\n : Cadenza.createDeputyTask(map.taskName, map.serviceName, {\n register: false,\n isHidden: true,\n retryCount: 1,\n retryDelay: 50,\n retryDelayFactor: 1.2,\n });\n\n deputyTask.respondsTo(map.intentName);\n\n if (!this.remoteIntents.has(map.serviceName)) {\n this.remoteIntents.set(map.serviceName, new Set());\n }\n this.remoteIntents.get(map.serviceName)!.add(map.intentName);\n\n const descriptor: RemoteIntentDeputyDescriptor = {\n key,\n intentName: map.intentName,\n serviceName: map.serviceName,\n remoteTaskName: map.taskName,\n remoteTaskVersion: map.taskVersion,\n localTaskName: deputyTask.name || deputyTaskName,\n localTask: deputyTask,\n };\n\n this.remoteIntentDeputiesByKey.set(key, descriptor);\n this.remoteIntentDeputiesByTask.set(deputyTask, descriptor);\n }\n\n private unregisterRemoteIntentDeputy(map: {\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion?: number;\n }) {\n const key = this.buildRemoteIntentDeputyKey(map);\n const descriptor = this.remoteIntentDeputiesByKey.get(key);\n if (!descriptor) {\n return;\n }\n\n const task = descriptor.localTask;\n if (task) {\n Cadenza.inquiryBroker.unsubscribe(descriptor.intentName, task);\n task.destroy();\n }\n\n this.remoteIntentDeputiesByTask.delete(descriptor.localTask);\n this.remoteIntentDeputiesByKey.delete(key);\n\n this.remoteIntents.get(descriptor.serviceName)?.delete(descriptor.intentName);\n if (!this.remoteIntents.get(descriptor.serviceName)?.size) {\n this.remoteIntents.delete(descriptor.serviceName);\n }\n\n const deputies = this.deputies.get(descriptor.serviceName);\n if (deputies) {\n this.deputies.set(\n descriptor.serviceName,\n deputies.filter((d) => d.localTaskName !== descriptor.localTaskName),\n );\n\n if (this.deputies.get(descriptor.serviceName)?.length === 0) {\n this.deputies.delete(descriptor.serviceName);\n }\n }\n }\n\n private registerBootstrapFullSyncDeputies(\n emit: (signal: string, ctx: AnyObject) => void,\n ctx?: AnyObject,\n ): boolean {\n if (!this.serviceName || this.serviceName === \"CadenzaDB\") {\n return false;\n }\n\n Cadenza.inquiryBroker.addIntent({\n name: META_SERVICE_REGISTRY_FULL_SYNC_INTENT,\n });\n\n for (const taskName of BOOTSTRAP_FULL_SYNC_RESPONDER_TASKS) {\n this.registerRemoteIntentDeputy({\n intentName: META_SERVICE_REGISTRY_FULL_SYNC_INTENT,\n serviceName: \"CadenzaDB\",\n taskName,\n taskVersion: 1,\n });\n }\n\n this.ensureDependeeClientsForService(\"CadenzaDB\", emit, ctx);\n return true;\n }\n\n private hasBootstrapFullSyncDeputies(): boolean {\n if (!this.serviceName || this.serviceName === \"CadenzaDB\") {\n return true;\n }\n\n return BOOTSTRAP_FULL_SYNC_RESPONDER_TASKS.every((taskName) =>\n this.remoteIntentDeputiesByKey.has(\n this.buildRemoteIntentDeputyKey({\n intentName: META_SERVICE_REGISTRY_FULL_SYNC_INTENT,\n serviceName: \"CadenzaDB\",\n taskName,\n taskVersion: 1,\n }),\n ),\n );\n }\n\n private scheduleEarlyFullSyncRequests(reason: string): boolean {\n for (const delayMs of EARLY_FULL_SYNC_DELAYS_MS) {\n Cadenza.schedule(\n \"meta.sync_requested\",\n {\n __syncing: false,\n __reason: reason,\n },\n delayMs,\n );\n }\n\n return true;\n }\n\n public bootstrapFullSync(\n emit: (signal: string, ctx: AnyObject) => void,\n ctx?: AnyObject,\n reason = \"local_instance_inserted\",\n ): boolean {\n this.registerBootstrapFullSyncDeputies(emit, ctx);\n return this.scheduleEarlyFullSyncRequests(reason);\n }\n\n public getInquiryResponderDescriptor(task: Task): InquiryResponderDescriptor {\n const remote = this.remoteIntentDeputiesByTask.get(task);\n\n if (remote) {\n return {\n isRemote: true,\n serviceName: remote.serviceName,\n taskName: remote.remoteTaskName,\n taskVersion: remote.remoteTaskVersion,\n localTaskName: remote.localTaskName,\n };\n }\n\n return {\n isRemote: false,\n serviceName: this.serviceName ?? \"UnknownService\",\n taskName: task.name,\n taskVersion: task.version,\n localTaskName: task.name,\n };\n }\n\n private getInstance(serviceName: string, instanceId: string) {\n return this.instances\n .get(serviceName)\n ?.find((instance) => instance.uuid === instanceId);\n }\n\n private getLocalInstance() {\n if (!this.serviceName || !this.serviceInstanceId) {\n return undefined;\n }\n\n return this.getInstance(this.serviceName, this.serviceInstanceId);\n }\n\n hasLocalInstanceRegistered() {\n return Boolean(this.getLocalInstance());\n }\n\n private summarizeTransportForDebug(\n transport: ServiceTransportDescriptor | undefined,\n ) {\n if (!transport) {\n return undefined;\n }\n\n return {\n uuid: transport.uuid,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols,\n clientCreated: transport.clientCreated,\n };\n }\n\n private summarizeInstanceForRuntimeStatusFallback(\n instance: ServiceInstanceDescriptor | undefined,\n ): RuntimeStatusFallbackFailureDiagnostics[\"instance\"] {\n return {\n exists: Boolean(instance),\n runtimeState: instance?.runtimeState,\n acceptingWork: instance?.acceptingWork,\n reportedAt: instance?.reportedAt ?? null,\n isDatabase: instance?.isDatabase,\n isFrontend: instance?.isFrontend,\n isBootstrapPlaceholder: instance?.isBootstrapPlaceholder,\n transports: (instance?.transports ?? []).map((transport) => ({\n uuid: transport.uuid,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols,\n clientCreated: transport.clientCreated,\n })),\n };\n }\n\n private summarizeRuntimeStatusInquiryReports(inquiryResult: AnyObject) {\n const reports = Array.isArray(inquiryResult.runtimeStatusReports)\n ? inquiryResult.runtimeStatusReports\n : [];\n\n return reports.map((candidate) => {\n const normalized = this.normalizeRuntimeStatusReport(candidate);\n if (normalized) {\n return {\n serviceName: normalized.serviceName,\n serviceInstanceId: normalized.serviceInstanceId,\n transportId: normalized.transportId,\n state: normalized.state,\n acceptingWork: normalized.acceptingWork,\n reportedAt: normalized.reportedAt,\n };\n }\n\n const raw =\n candidate && typeof candidate === \"object\"\n ? (candidate as Record<string, unknown>)\n : {};\n const rawState: RuntimeStatusState | undefined =\n raw.state === \"healthy\" ||\n raw.state === \"degraded\" ||\n raw.state === \"overloaded\" ||\n raw.state === \"unavailable\"\n ? raw.state\n : undefined;\n\n return {\n serviceName:\n typeof raw.serviceName === \"string\"\n ? raw.serviceName\n : typeof raw.__serviceName === \"string\"\n ? raw.__serviceName\n : undefined,\n serviceInstanceId:\n typeof raw.serviceInstanceId === \"string\"\n ? raw.serviceInstanceId\n : typeof raw.__serviceInstanceId === \"string\"\n ? raw.__serviceInstanceId\n : undefined,\n transportId:\n typeof raw.transportId === \"string\"\n ? raw.transportId\n : typeof raw.serviceTransportId === \"string\"\n ? raw.serviceTransportId\n : undefined,\n state: rawState,\n acceptingWork:\n typeof raw.acceptingWork === \"boolean\" ? raw.acceptingWork : undefined,\n reportedAt:\n typeof raw.reportedAt === \"string\" ? raw.reportedAt : undefined,\n };\n });\n }\n\n private createRuntimeStatusFallbackError(\n message: string,\n diagnostics: RuntimeStatusFallbackFailureDiagnostics,\n ): Error & { runtimeStatusFallback: RuntimeStatusFallbackFailureDiagnostics } {\n return Object.assign(new Error(message), {\n runtimeStatusFallback: diagnostics,\n });\n }\n\n public resolveLocalStatusCheck(ctx: AnyObject = {}) {\n if (!this.serviceName) {\n return {\n __status: \"error\",\n __error: \"No service name defined\",\n errored: true,\n };\n }\n\n if (!this.serviceInstanceId) {\n return {\n __status: \"error\",\n __error: \"No service instance id defined\",\n errored: true,\n };\n }\n\n const report = this.buildLocalRuntimeStatusReport(\"full\");\n if (!report) {\n return {\n ...ctx,\n __status: \"error\",\n __error: \"No local service instance available for status check\",\n errored: true,\n };\n }\n\n return {\n ...ctx,\n __status: \"ok\",\n __serviceName: report.serviceName,\n __serviceInstanceId: report.serviceInstanceId,\n __numberOfRunningGraphs: report.numberOfRunningGraphs,\n __health: report.health ?? {},\n __active: report.isActive,\n reportedAt: report.reportedAt,\n serviceName: report.serviceName,\n serviceInstanceId: report.serviceInstanceId,\n numberOfRunningGraphs: report.numberOfRunningGraphs,\n health: report.health ?? {},\n isActive: report.isActive,\n isNonResponsive: report.isNonResponsive,\n isBlocked: report.isBlocked,\n state: report.state,\n acceptingWork: report.acceptingWork,\n };\n }\n\n private resolveTransportProtocolOrder(\n ctx: AnyObject,\n ): ServiceTransportProtocol[] {\n const explicit =\n ctx.__preferredTransportProtocol === \"rest\" ||\n ctx.__preferredTransportProtocol === \"socket\"\n ? ctx.__preferredTransportProtocol\n : undefined;\n\n const preferred = explicit ?? (this.useSocket ? \"socket\" : \"rest\");\n const fallback = preferred === \"socket\" ? \"rest\" : \"socket\";\n\n return [preferred, fallback];\n }\n\n private selectTransportForInstance(\n instance: ServiceInstanceDescriptor,\n ctx: AnyObject,\n role: ServiceTransportRole = this.getRoutingTransportRole(),\n ): ServiceTransportDescriptor | undefined {\n for (const protocol of this.resolveTransportProtocolOrder(ctx)) {\n const transport = this.getRouteableTransport(instance, protocol, role);\n if (transport) {\n return transport;\n }\n }\n\n return undefined;\n }\n\n private getRoutingTransportRole(): ServiceTransportRole {\n return this.isFrontend ? \"public\" : \"internal\";\n }\n\n private getTransportById(\n instance: ServiceInstanceDescriptor,\n transportId: string,\n ): ServiceTransportDescriptor | undefined {\n return instance.transports.find((transport) => transport.uuid === transportId);\n }\n\n private getRouteableTransport(\n instance: ServiceInstanceDescriptor,\n protocol?: ServiceTransportProtocol,\n role: ServiceTransportRole = this.getRoutingTransportRole(),\n ): ServiceTransportDescriptor | undefined {\n return getRouteableTransport(instance, role, protocol);\n }\n\n private getTransportClientKey(\n instance: ServiceInstanceDescriptor,\n protocol?: ServiceTransportProtocol,\n role: ServiceTransportRole = this.getRoutingTransportRole(),\n ): string | null {\n const transport = this.getRouteableTransport(instance, protocol, role);\n if (!transport) {\n return null;\n }\n\n return buildTransportClientKey(transport);\n }\n\n private resolveCommunicationTypesForService(serviceName: string): string[] {\n const communicationTypes = Array.from(\n new Set(\n this.deputies\n .get(serviceName)\n ?.map((descriptor) => descriptor.communicationType) ?? [],\n ),\n );\n\n if (\n !communicationTypes.includes(\"signal\") &&\n this.remoteSignals.has(serviceName)\n ) {\n communicationTypes.push(\"signal\");\n }\n\n return communicationTypes;\n }\n\n private ensureDependeeClientForInstance(\n instance: ServiceInstanceDescriptor,\n emit: (signal: string, ctx: AnyObject) => void,\n ctx?: AnyObject,\n ): boolean {\n if (\n !instance ||\n instance.uuid === this.serviceInstanceId ||\n instance.isFrontend ||\n !instance.isActive ||\n instance.isNonResponsive ||\n instance.isBlocked\n ) {\n return false;\n }\n\n if (\n !this.deputies.has(instance.serviceName) &&\n !this.remoteIntents.has(instance.serviceName) &&\n !this.remoteSignals.has(instance.serviceName)\n ) {\n return false;\n }\n\n const transport = this.selectTransportForInstance(\n instance,\n ctx ?? {},\n this.getRoutingTransportRole(),\n );\n\n if (!transport || this.hasTransportClientCreated(instance, transport.uuid)) {\n return false;\n }\n\n emit(\"meta.service_registry.dependee_registered\", {\n serviceName: instance.serviceName,\n serviceInstanceId: instance.uuid,\n serviceTransportId: transport.uuid,\n serviceOrigin: transport.origin,\n transportProtocols: transport.protocols,\n communicationTypes: this.resolveCommunicationTypesForService(\n instance.serviceName,\n ),\n });\n this.markTransportClientCreated(instance, transport.uuid);\n return true;\n }\n\n private ensureDependeeClientsForService(\n serviceName: string,\n emit: (signal: string, ctx: AnyObject) => void,\n ctx?: AnyObject,\n ): void {\n for (const instance of this.instances.get(serviceName) ?? []) {\n this.ensureDependeeClientForInstance(instance, emit, ctx);\n }\n }\n\n private hasTransportClientCreated(\n instance: ServiceInstanceDescriptor,\n transportId: string,\n ): boolean {\n return (instance.clientCreatedTransportIds ?? []).includes(transportId);\n }\n\n private markTransportClientCreated(\n instance: ServiceInstanceDescriptor,\n transportId: string,\n ): void {\n if (!instance.clientCreatedTransportIds) {\n instance.clientCreatedTransportIds = [];\n }\n\n if (!instance.clientCreatedTransportIds.includes(transportId)) {\n instance.clientCreatedTransportIds.push(transportId);\n }\n }\n\n private registerDependee(\n serviceName: string,\n serviceInstanceId: string,\n options: {\n requiredForReadiness?: boolean;\n } = {},\n ) {\n if (!serviceName || !serviceInstanceId) {\n return;\n }\n\n if (!this.dependeesByService.has(serviceName)) {\n this.dependeesByService.set(serviceName, new Set());\n }\n\n this.dependeesByService.get(serviceName)!.add(serviceInstanceId);\n this.dependeeByInstance.set(serviceInstanceId, serviceName);\n\n if (options.requiredForReadiness) {\n if (!this.readinessDependeesByService.has(serviceName)) {\n this.readinessDependeesByService.set(serviceName, new Set());\n }\n this.readinessDependeesByService.get(serviceName)!.add(serviceInstanceId);\n this.readinessDependeeByInstance.set(serviceInstanceId, serviceName);\n }\n\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n }\n\n private unregisterDependee(serviceInstanceId: string, serviceName?: string) {\n const dependeeServiceName =\n serviceName ?? this.dependeeByInstance.get(serviceInstanceId);\n if (dependeeServiceName) {\n this.dependeesByService.get(dependeeServiceName)?.delete(serviceInstanceId);\n if (!this.dependeesByService.get(dependeeServiceName)?.size) {\n this.dependeesByService.delete(dependeeServiceName);\n }\n }\n\n this.dependeeByInstance.delete(serviceInstanceId);\n const readinessDependeeServiceName =\n serviceName ?? this.readinessDependeeByInstance.get(serviceInstanceId);\n if (readinessDependeeServiceName) {\n this.readinessDependeesByService\n .get(readinessDependeeServiceName)\n ?.delete(serviceInstanceId);\n if (!this.readinessDependeesByService.get(readinessDependeeServiceName)?.size) {\n this.readinessDependeesByService.delete(readinessDependeeServiceName);\n }\n }\n\n this.readinessDependeeByInstance.delete(serviceInstanceId);\n this.lastHeartbeatAtByInstance.delete(serviceInstanceId);\n this.missedHeartbeatsByInstance.delete(serviceInstanceId);\n this.runtimeStatusFallbackInFlightByInstance.delete(serviceInstanceId);\n }\n\n private reconcileBootstrapPlaceholderInstance(\n serviceName: string,\n resolvedInstanceId: string,\n emit: (signalName: string, ctx: AnyObject) => void,\n ) {\n const instances = this.instances.get(serviceName);\n if (!instances?.length) {\n return;\n }\n\n const resolvedInstance = instances.find(\n (instance) => instance.uuid === resolvedInstanceId,\n );\n const frontendRoutingRole = this.isFrontend\n ? this.getRoutingTransportRole()\n : null;\n\n const placeholders = instances.filter(\n (instance) =>\n instance.uuid !== resolvedInstanceId && instance.isBootstrapPlaceholder,\n );\n\n if (!placeholders.length) {\n return;\n }\n\n for (const placeholder of placeholders) {\n const wasDependee = this.dependeeByInstance.has(placeholder.uuid);\n const requiredForReadiness = this.readinessDependeeByInstance.has(\n placeholder.uuid,\n );\n const preservedTransportIds = new Set<string>();\n\n if (resolvedInstance && frontendRoutingRole) {\n const resolvedHasFrontendRoute = resolvedInstance.transports.some(\n (transport) => transport.role === frontendRoutingRole && !transport.deleted,\n );\n\n if (!resolvedHasFrontendRoute) {\n const transportsToPreserve = placeholder.transports.filter(\n (transport) =>\n transport.role === frontendRoutingRole && !transport.deleted,\n );\n\n for (const transport of transportsToPreserve) {\n if (\n resolvedInstance.transports.some(\n (existingTransport) =>\n existingTransport.role === transport.role &&\n existingTransport.origin === transport.origin,\n )\n ) {\n continue;\n }\n\n resolvedInstance.transports.push({\n ...transport,\n serviceInstanceId: resolvedInstanceId,\n });\n preservedTransportIds.add(transport.uuid);\n }\n }\n }\n\n for (const transport of placeholder.transports) {\n if (preservedTransportIds.has(transport.uuid)) {\n continue;\n }\n const transportKey = buildTransportClientKey(transport);\n emit(`meta.socket_shutdown_requested:${transportKey}`, {});\n emit(`meta.fetch.destroy_requested:${transportKey}`, {});\n }\n\n this.unregisterDependee(placeholder.uuid, serviceName);\n\n if (wasDependee) {\n this.registerDependee(serviceName, resolvedInstanceId, {\n requiredForReadiness,\n });\n }\n }\n\n this.instances.set(\n serviceName,\n instances.filter((instance) => !instance.isBootstrapPlaceholder),\n );\n }\n\n private adoptBootstrapPlaceholderInstanceId(\n serviceName: string,\n placeholderInstanceId: string,\n resolvedInstanceId: string,\n ): ServiceInstanceDescriptor | undefined {\n if (!serviceName || !placeholderInstanceId || !resolvedInstanceId) {\n return undefined;\n }\n\n const instances = this.instances.get(serviceName);\n if (!instances?.length) {\n return undefined;\n }\n\n const resolvedInstance = instances.find(\n (instance) => instance.uuid === resolvedInstanceId,\n );\n if (resolvedInstance) {\n return resolvedInstance;\n }\n\n const placeholder = instances.find(\n (instance) =>\n instance.uuid === placeholderInstanceId && instance.isBootstrapPlaceholder,\n );\n if (!placeholder) {\n return undefined;\n }\n\n const wasDependee = this.dependeeByInstance.has(placeholderInstanceId);\n const dependeeServiceName =\n this.dependeeByInstance.get(placeholderInstanceId) ?? serviceName;\n const requiredForReadiness = this.readinessDependeeByInstance.has(\n placeholderInstanceId,\n );\n const lastHeartbeatAt =\n this.lastHeartbeatAtByInstance.get(placeholderInstanceId) ?? Date.now();\n const missedHeartbeats =\n this.missedHeartbeatsByInstance.get(placeholderInstanceId) ?? 0;\n const inFlight = this.runtimeStatusFallbackInFlightByInstance.has(\n placeholderInstanceId,\n );\n\n this.dependeeByInstance.delete(placeholderInstanceId);\n this.readinessDependeeByInstance.delete(placeholderInstanceId);\n this.lastHeartbeatAtByInstance.delete(placeholderInstanceId);\n this.missedHeartbeatsByInstance.delete(placeholderInstanceId);\n this.runtimeStatusFallbackInFlightByInstance.delete(placeholderInstanceId);\n\n placeholder.uuid = resolvedInstanceId;\n placeholder.isBootstrapPlaceholder = false;\n placeholder.transports = placeholder.transports.map((transport) => ({\n ...transport,\n serviceInstanceId: resolvedInstanceId,\n }));\n\n if (wasDependee) {\n this.dependeeByInstance.set(resolvedInstanceId, dependeeServiceName);\n if (this.dependeesByService.has(dependeeServiceName)) {\n this.dependeesByService.get(dependeeServiceName)!.delete(\n placeholderInstanceId,\n );\n this.dependeesByService.get(dependeeServiceName)!.add(resolvedInstanceId);\n }\n this.lastHeartbeatAtByInstance.set(resolvedInstanceId, lastHeartbeatAt);\n this.missedHeartbeatsByInstance.set(resolvedInstanceId, missedHeartbeats);\n }\n\n if (requiredForReadiness) {\n this.readinessDependeeByInstance.set(resolvedInstanceId, serviceName);\n if (this.readinessDependeesByService.has(serviceName)) {\n this.readinessDependeesByService.get(serviceName)!.delete(\n placeholderInstanceId,\n );\n this.readinessDependeesByService.get(serviceName)!.add(resolvedInstanceId);\n }\n }\n\n if (inFlight) {\n this.runtimeStatusFallbackInFlightByInstance.add(resolvedInstanceId);\n }\n\n return placeholder;\n }\n\n private getHeartbeatMisses(serviceInstanceId: string, now = Date.now()): number {\n const observedMisses = this.missedHeartbeatsByInstance.get(serviceInstanceId) ?? 0;\n const lastHeartbeatAt = this.lastHeartbeatAtByInstance.get(serviceInstanceId) ?? 0;\n if (lastHeartbeatAt <= 0) {\n return Math.max(observedMisses, this.runtimeStatusMissThreshold);\n }\n\n const estimatedMisses = Math.max(\n 0,\n Math.floor((now - lastHeartbeatAt) / this.runtimeStatusHeartbeatIntervalMs),\n );\n\n return Math.max(observedMisses, estimatedMisses);\n }\n\n private shouldRequireReadinessFromCommunicationTypes(\n communicationTypes: unknown,\n ): boolean {\n if (!Array.isArray(communicationTypes)) {\n return false;\n }\n\n return communicationTypes.some((type) => {\n const normalized = String(type).toLowerCase();\n return normalized === \"delegation\" || normalized === \"inquiry\";\n });\n }\n\n private resolveRuntimeStatusSnapshot(\n numberOfRunningGraphs: number,\n isActive: boolean,\n isNonResponsive: boolean,\n isBlocked: boolean,\n ): RuntimeStatusSnapshot {\n return resolveRuntimeStatus({\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n degradedGraphThreshold: this.degradedGraphThreshold,\n overloadedGraphThreshold: this.overloadedGraphThreshold,\n });\n }\n\n private normalizeRuntimeStatusReport(ctx: AnyObject): RuntimeStatusReport | null {\n const serviceName =\n ctx.serviceName ?? ctx.__serviceName ?? ctx.serviceInstance?.serviceName;\n const serviceInstanceId =\n ctx.serviceInstanceId ??\n ctx.__serviceInstanceId ??\n ctx.serviceInstance?.uuid;\n if (!serviceName || !serviceInstanceId) {\n return null;\n }\n const transportId =\n ctx.transportId ??\n ctx.serviceTransportId ??\n ctx.serviceTransport?.uuid ??\n undefined;\n const transportRole =\n ctx.transportRole ??\n ctx.transport_role ??\n ctx.serviceTransport?.role ??\n undefined;\n const transportOrigin =\n ctx.transportOrigin ??\n ctx.serviceOrigin ??\n ctx.serviceTransport?.origin ??\n undefined;\n const transportProtocols = Array.isArray(\n ctx.transportProtocols ?? ctx.serviceTransport?.protocols,\n )\n ? ((ctx.transportProtocols ?? ctx.serviceTransport?.protocols) as unknown[])\n .map((entry) => String(entry))\n .filter(\n (entry): entry is ServiceTransportProtocol =>\n entry === \"rest\" || entry === \"socket\",\n )\n : undefined;\n\n const numberOfRunningGraphs = Math.max(\n 0,\n Math.trunc(\n Number(ctx.numberOfRunningGraphs ?? ctx.__numberOfRunningGraphs ?? 0),\n ),\n );\n const isActive = Boolean(ctx.isActive ?? ctx.__active ?? true);\n const isNonResponsive = Boolean(ctx.isNonResponsive ?? false);\n const isBlocked = Boolean(ctx.isBlocked ?? false);\n\n const resolved = this.resolveRuntimeStatusSnapshot(\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n );\n\n return {\n serviceName,\n serviceInstanceId,\n transportId:\n typeof transportId === \"string\" && transportId.trim().length > 0\n ? transportId\n : undefined,\n transportRole:\n transportRole === \"internal\" || transportRole === \"public\"\n ? transportRole\n : undefined,\n transportOrigin:\n typeof transportOrigin === \"string\" && transportOrigin.trim().length > 0\n ? transportOrigin\n : undefined,\n transportProtocols:\n transportProtocols && transportProtocols.length > 0\n ? Array.from(new Set(transportProtocols))\n : undefined,\n isFrontend:\n typeof ctx.isFrontend === \"boolean\"\n ? ctx.isFrontend\n : typeof ctx.serviceInstance?.isFrontend === \"boolean\"\n ? ctx.serviceInstance.isFrontend\n : undefined,\n reportedAt:\n ctx.reportedAt ??\n (typeof ctx.__reportedAt === \"string\" ? ctx.__reportedAt : undefined) ??\n new Date().toISOString(),\n state:\n ctx.state === \"healthy\" ||\n ctx.state === \"degraded\" ||\n ctx.state === \"overloaded\" ||\n ctx.state === \"unavailable\"\n ? ctx.state\n : resolved.state,\n acceptingWork:\n typeof ctx.acceptingWork === \"boolean\"\n ? ctx.acceptingWork\n : resolved.acceptingWork,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n health: (ctx.health ?? ctx.__health ?? {}) as AnyObject,\n };\n }\n\n private applyRuntimeStatusReport(report: RuntimeStatusReport): boolean {\n const instance = this.getInstance(report.serviceName, report.serviceInstanceId);\n if (!instance) {\n return false;\n }\n\n if (report.transportId && report.transportOrigin) {\n const protocols =\n report.transportProtocols && report.transportProtocols.length > 0\n ? report.transportProtocols\n : ([\"rest\", \"socket\"] as ServiceTransportProtocol[]);\n const existingTransport = this.getTransportById(instance, report.transportId);\n if (existingTransport) {\n if (report.transportRole) {\n existingTransport.role = report.transportRole;\n }\n existingTransport.origin = report.transportOrigin;\n existingTransport.protocols = protocols;\n } else {\n instance.transports.push({\n uuid: report.transportId,\n serviceInstanceId: report.serviceInstanceId,\n role: report.transportRole ?? this.getRoutingTransportRole(),\n origin: report.transportOrigin,\n protocols,\n securityProfile: null,\n authStrategy: null,\n });\n }\n }\n\n if (typeof report.isFrontend === \"boolean\") {\n instance.isFrontend = report.isFrontend;\n }\n\n instance.numberOfRunningGraphs = report.numberOfRunningGraphs;\n instance.isActive = report.isActive;\n instance.isNonResponsive = report.isNonResponsive;\n instance.isBlocked = report.isBlocked;\n instance.runtimeState = report.state;\n instance.acceptingWork = report.acceptingWork;\n instance.reportedAt = report.reportedAt;\n instance.health = {\n ...(instance.health ?? {}),\n ...(report.health ?? {}),\n runtimeStatus: {\n state: report.state,\n acceptingWork: report.acceptingWork,\n reportedAt: report.reportedAt,\n },\n };\n\n return true;\n }\n\n private buildLocalRuntimeStatusReport(\n detailLevel: \"minimal\" | \"full\" = \"minimal\",\n ): RuntimeStatusReport | null {\n if (!this.serviceName || !this.serviceInstanceId) {\n return null;\n }\n\n const localInstance = this.getLocalInstance();\n if (!localInstance) {\n return null;\n }\n\n const numberOfRunningGraphs =\n this.activeRoutineExecutionIds.size || this.numberOfRunningGraphs || 0;\n this.numberOfRunningGraphs = numberOfRunningGraphs;\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n numberOfRunningGraphs,\n localInstance.isActive,\n localInstance.isNonResponsive,\n localInstance.isBlocked,\n );\n const reportedAt = new Date().toISOString();\n\n const transport = this.getRouteableTransport(\n localInstance,\n this.useSocket ? \"socket\" : \"rest\",\n \"internal\",\n );\n\n const report: RuntimeStatusReport = {\n serviceName: this.serviceName,\n serviceInstanceId: this.serviceInstanceId,\n transportId: transport?.uuid ?? undefined,\n transportRole: transport?.role ?? undefined,\n transportOrigin: transport?.origin ?? undefined,\n transportProtocols: transport?.protocols ?? undefined,\n isFrontend: localInstance.isFrontend,\n reportedAt,\n state: snapshot.state,\n acceptingWork: snapshot.acceptingWork,\n numberOfRunningGraphs: snapshot.numberOfRunningGraphs,\n isActive: snapshot.isActive,\n isNonResponsive: snapshot.isNonResponsive,\n isBlocked: snapshot.isBlocked,\n health: {\n ...(localInstance.health ?? {}),\n runtimeStatus: {\n state: snapshot.state,\n acceptingWork: snapshot.acceptingWork,\n reportedAt,\n },\n },\n };\n\n this.applyRuntimeStatusReport(report);\n if (detailLevel !== \"full\") {\n delete report.health;\n }\n\n return report;\n }\n\n private selectRuntimeStatusReportForTarget(\n inquiryResult: AnyObject,\n targetServiceName: string,\n targetServiceInstanceId: string,\n ): RuntimeStatusReport | null {\n const reports = Array.isArray(inquiryResult.runtimeStatusReports)\n ? inquiryResult.runtimeStatusReports\n : [];\n\n for (const candidate of reports) {\n const report = this.normalizeRuntimeStatusReport(candidate);\n if (!report) {\n continue;\n }\n\n if (\n report.serviceName === targetServiceName &&\n report.serviceInstanceId === targetServiceInstanceId\n ) {\n return report;\n }\n }\n\n return null;\n }\n\n private async resolveRuntimeStatusFallbackInquiry(\n serviceName: string,\n serviceInstanceId: string,\n options: {\n detailLevel?: \"minimal\" | \"full\";\n overallTimeoutMs?: number;\n perResponderTimeoutMs?: number;\n requireComplete?: boolean;\n } = {},\n ): Promise<{ report: RuntimeStatusReport; inquiryMeta: AnyObject }> {\n const instance = this.getInstance(serviceName, serviceInstanceId);\n const directStatusCheck = instance\n ? await this.requestRuntimeStatusViaRest(\n instance,\n serviceName,\n serviceInstanceId,\n )\n : {\n report: null,\n diagnostic: {\n attempted: false,\n outcome: \"instance_missing\",\n } satisfies RuntimeStatusFallbackRestDiagnostic,\n };\n\n if (directStatusCheck.report) {\n if (!this.applyRuntimeStatusReport(directStatusCheck.report)) {\n throw this.createRuntimeStatusFallbackError(\n `No tracked instance for runtime fallback ${serviceName}/${serviceInstanceId}`,\n {\n target: {\n serviceName,\n serviceInstanceId,\n },\n instance: this.summarizeInstanceForRuntimeStatusFallback(instance),\n directStatusCheck: directStatusCheck.diagnostic,\n inquiry: {\n meta: {},\n reportTargets: [],\n },\n },\n );\n }\n\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n\n return {\n report: directStatusCheck.report,\n inquiryMeta: {\n inquiry: META_RUNTIME_STATUS_INTENT,\n responded: 1,\n failed: 0,\n timedOut: 0,\n pending: 0,\n directStatusCheck: true,\n },\n };\n }\n\n const inquiryResult = await Cadenza.inquire(\n META_RUNTIME_STATUS_INTENT,\n {\n targetServiceName: serviceName,\n targetServiceInstanceId: serviceInstanceId,\n detailLevel: options.detailLevel ?? \"minimal\",\n __preferredTransportProtocol: \"rest\",\n },\n {\n overallTimeoutMs:\n options.overallTimeoutMs ?? this.runtimeStatusFallbackTimeoutMs,\n perResponderTimeoutMs:\n options.perResponderTimeoutMs ??\n Math.max(250, Math.floor(this.runtimeStatusFallbackTimeoutMs * 0.75)),\n requireComplete: options.requireComplete ?? false,\n },\n );\n\n const report = this.selectRuntimeStatusReportForTarget(\n inquiryResult,\n serviceName,\n serviceInstanceId,\n );\n\n if (!report) {\n throw this.createRuntimeStatusFallbackError(\n `No runtime status report for ${serviceName}/${serviceInstanceId}`,\n {\n target: {\n serviceName,\n serviceInstanceId,\n },\n instance: this.summarizeInstanceForRuntimeStatusFallback(instance),\n directStatusCheck: directStatusCheck.diagnostic,\n inquiry: {\n meta:\n inquiryResult.__inquiryMeta &&\n typeof inquiryResult.__inquiryMeta === \"object\"\n ? inquiryResult.__inquiryMeta\n : {},\n reportTargets: this.summarizeRuntimeStatusInquiryReports(inquiryResult),\n },\n },\n );\n }\n\n if (!this.applyRuntimeStatusReport(report)) {\n throw this.createRuntimeStatusFallbackError(\n `No tracked instance for runtime fallback ${serviceName}/${serviceInstanceId}`,\n {\n target: {\n serviceName,\n serviceInstanceId,\n },\n instance: this.summarizeInstanceForRuntimeStatusFallback(instance),\n directStatusCheck: directStatusCheck.diagnostic,\n inquiry: {\n meta:\n inquiryResult.__inquiryMeta &&\n typeof inquiryResult.__inquiryMeta === \"object\"\n ? inquiryResult.__inquiryMeta\n : {},\n reportTargets: this.summarizeRuntimeStatusInquiryReports(inquiryResult),\n },\n },\n );\n }\n\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n\n return {\n report,\n inquiryMeta: inquiryResult.__inquiryMeta ?? {},\n };\n }\n\n private async requestRuntimeStatusViaRest(\n instance: ServiceInstanceDescriptor,\n serviceName: string,\n serviceInstanceId: string,\n ): Promise<{\n report: RuntimeStatusReport | null;\n diagnostic: RuntimeStatusFallbackRestDiagnostic;\n }> {\n if (typeof globalThis.fetch !== \"function\") {\n return {\n report: null,\n diagnostic: {\n attempted: false,\n outcome: \"fetch_unavailable\",\n },\n };\n }\n\n const transport = this.getRouteableTransport(instance, \"rest\");\n if (!transport) {\n return {\n report: null,\n diagnostic: {\n attempted: false,\n outcome: \"no_rest_transport\",\n },\n };\n }\n\n const controller =\n typeof AbortController === \"function\" ? new AbortController() : null;\n const timeoutId = controller\n ? setTimeout(() => controller.abort(), this.runtimeStatusFallbackTimeoutMs)\n : null;\n\n try {\n const response = await globalThis.fetch(`${transport.origin}/status`, {\n method: \"GET\",\n signal: controller?.signal,\n });\n\n if (\"ok\" in response && response.ok === false) {\n return {\n report: null,\n diagnostic: {\n attempted: true,\n outcome: \"http_error\",\n transport: this.summarizeTransportForDebug(transport),\n responseStatus:\n typeof response.status === \"number\" ? response.status : undefined,\n responseStatusText:\n typeof response.statusText === \"string\"\n ? response.statusText\n : undefined,\n },\n };\n }\n\n const payload =\n typeof response.json === \"function\" ? await response.json() : response;\n const report = this.normalizeRuntimeStatusReport({\n ...payload,\n serviceTransportId: payload?.serviceTransportId ?? transport.uuid,\n serviceOrigin: payload?.serviceOrigin ?? transport.origin,\n transportProtocols: payload?.transportProtocols ?? transport.protocols,\n });\n\n if (!report) {\n return {\n report: null,\n diagnostic: {\n attempted: true,\n outcome: \"invalid_report\",\n transport: this.summarizeTransportForDebug(transport),\n payloadKeys:\n payload && typeof payload === \"object\"\n ? Object.keys(payload as Record<string, unknown>).sort()\n : [],\n },\n };\n }\n\n if (\n report.serviceName !== serviceName ||\n report.serviceInstanceId !== serviceInstanceId\n ) {\n return {\n report: null,\n diagnostic: {\n attempted: true,\n outcome: \"identity_mismatch\",\n transport: this.summarizeTransportForDebug(transport),\n payloadServiceName: report.serviceName,\n payloadServiceInstanceId: report.serviceInstanceId,\n },\n };\n }\n\n return {\n report,\n diagnostic: {\n attempted: true,\n outcome: \"matched\",\n transport: this.summarizeTransportForDebug(transport),\n },\n };\n } catch (error) {\n return {\n report: null,\n diagnostic: {\n attempted: true,\n outcome: \"fetch_error\",\n transport: this.summarizeTransportForDebug(transport),\n error: error instanceof Error ? error.message : String(error),\n },\n };\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n }\n\n private evaluateDependencyReadinessDetail(\n serviceName: string,\n serviceInstanceId: string,\n now = Date.now(),\n ): DependencyReadinessDetail {\n const instance = this.getInstance(serviceName, serviceInstanceId);\n const missedHeartbeats = this.getHeartbeatMisses(serviceInstanceId, now);\n const runtimeState = instance\n ? (instance.runtimeState ??\n this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n ).state)\n : \"unavailable\";\n const acceptingWork = instance\n ? (typeof instance.acceptingWork === \"boolean\"\n ? instance.acceptingWork\n : this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n ).acceptingWork)\n : false;\n\n const evaluation = evaluateDependencyReadiness({\n exists: Boolean(instance),\n runtimeState,\n acceptingWork,\n missedHeartbeats,\n missThreshold: this.runtimeStatusMissThreshold,\n });\n\n const lastHeartbeat = this.lastHeartbeatAtByInstance.get(serviceInstanceId);\n return {\n serviceName,\n serviceInstanceId,\n dependencyState: evaluation.state,\n runtimeState,\n acceptingWork,\n missedHeartbeats,\n stale: evaluation.stale,\n blocked: evaluation.blocked,\n reason: evaluation.reason,\n lastHeartbeatAt: lastHeartbeat\n ? new Date(lastHeartbeat).toISOString()\n : null,\n reportedAt: instance?.reportedAt ?? null,\n };\n }\n\n private async buildLocalReadinessReport(\n options: {\n detailLevel?: \"minimal\" | \"full\";\n includeDependencies?: boolean;\n refreshStaleDependencies?: boolean;\n } = {},\n ): Promise<ReadinessReport | null> {\n const localRuntime = this.buildLocalRuntimeStatusReport(\"minimal\");\n if (!localRuntime) {\n return null;\n }\n\n const detailLevel = options.detailLevel ?? \"minimal\";\n const includeDependencies =\n options.includeDependencies ?? detailLevel === \"full\";\n const refreshStaleDependencies = options.refreshStaleDependencies ?? true;\n const dependencyPairs = Array.from(this.readinessDependeesByService.entries())\n .flatMap(([serviceName, instanceIds]) =>\n Array.from(instanceIds).map((serviceInstanceId) => ({\n serviceName,\n serviceInstanceId,\n })),\n )\n .sort((left, right) => {\n if (left.serviceName !== right.serviceName) {\n return left.serviceName.localeCompare(right.serviceName);\n }\n return left.serviceInstanceId.localeCompare(right.serviceInstanceId);\n });\n\n if (refreshStaleDependencies) {\n for (const dependency of dependencyPairs) {\n const misses = this.getHeartbeatMisses(dependency.serviceInstanceId);\n if (misses < this.runtimeStatusMissThreshold) {\n continue;\n }\n\n if (\n this.runtimeStatusFallbackInFlightByInstance.has(\n dependency.serviceInstanceId,\n )\n ) {\n continue;\n }\n\n this.runtimeStatusFallbackInFlightByInstance.add(\n dependency.serviceInstanceId,\n );\n try {\n await this.resolveRuntimeStatusFallbackInquiry(\n dependency.serviceName,\n dependency.serviceInstanceId,\n );\n } catch (error) {\n Cadenza.log(\n \"Readiness dependency fallback failed.\",\n {\n serviceName: dependency.serviceName,\n serviceInstanceId: dependency.serviceInstanceId,\n error: error instanceof Error ? error.message : String(error),\n },\n \"warning\",\n );\n } finally {\n this.runtimeStatusFallbackInFlightByInstance.delete(\n dependency.serviceInstanceId,\n );\n }\n }\n }\n\n const now = Date.now();\n const dependencyDetails = dependencyPairs.map((dependency) =>\n this.evaluateDependencyReadinessDetail(\n dependency.serviceName,\n dependency.serviceInstanceId,\n now,\n ),\n );\n const dependencySummary = summarizeDependencyReadiness(\n dependencyDetails.map((detail) => ({\n state: detail.dependencyState,\n stale: detail.stale,\n blocked: detail.blocked,\n reason: detail.reason,\n })),\n );\n const readinessState = resolveServiceReadinessState(\n localRuntime.state,\n localRuntime.acceptingWork,\n dependencySummary,\n );\n\n return {\n serviceName: localRuntime.serviceName,\n serviceInstanceId: localRuntime.serviceInstanceId,\n reportedAt: new Date(now).toISOString(),\n readinessState,\n runtimeState: localRuntime.state,\n acceptingWork: localRuntime.acceptingWork,\n dependencySummary,\n ...(includeDependencies ? { dependencies: dependencyDetails } : {}),\n };\n }\n\n /**\n * Initializes a private constructor for managing service instances, remote signals,\n * service health, and handling updates or synchronization tasks. The constructor\n * creates a variety of meta tasks that process different lifecycle events and\n * service-related updates in a distributed service registry model.\n *\n * @return {Object} An instance of the constructed class with initialized tasks\n * and state management necessary to process service-related events.\n */\n private constructor() {\n Cadenza.defineIntent({\n name: META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT,\n description:\n \"Gather transport diagnostics across all services and communication clients.\",\n input: {\n type: \"object\",\n properties: {\n detailLevel: {\n type: \"string\",\n constraints: {\n oneOf: [\"summary\", \"full\"],\n },\n },\n includeErrorHistory: {\n type: \"boolean\",\n },\n errorHistoryLimit: {\n type: \"number\",\n constraints: {\n min: 1,\n max: 200,\n },\n },\n },\n },\n output: {\n type: \"object\",\n properties: {\n transportDiagnostics: {\n type: \"object\",\n },\n },\n },\n });\n\n Cadenza.defineIntent({\n name: META_RUNTIME_STATUS_INTENT,\n description:\n \"Gather lightweight runtime status reports from services in the distributed runtime.\",\n input: {\n type: \"object\",\n properties: {\n detailLevel: {\n type: \"string\",\n constraints: {\n oneOf: [\"minimal\", \"full\"],\n },\n },\n targetServiceName: {\n type: \"string\",\n },\n targetServiceInstanceId: {\n type: \"string\",\n },\n },\n },\n output: {\n type: \"object\",\n properties: {\n runtimeStatusReports: {\n type: \"array\",\n },\n },\n },\n });\n\n Cadenza.createMetaTask(\n \"Respond runtime status inquiry\",\n (ctx) => {\n const targetServiceName = ctx.targetServiceName;\n const targetServiceInstanceId = ctx.targetServiceInstanceId;\n const detailLevel: \"minimal\" | \"full\" =\n ctx.detailLevel === \"full\" ? \"full\" : \"minimal\";\n const report = this.buildLocalRuntimeStatusReport(detailLevel);\n if (!report) {\n return {};\n }\n\n if (\n targetServiceName &&\n targetServiceName !== report.serviceName\n ) {\n return {};\n }\n\n if (\n targetServiceInstanceId &&\n targetServiceInstanceId !== report.serviceInstanceId\n ) {\n return {};\n }\n\n return {\n runtimeStatusReports: [report],\n };\n },\n \"Responds to runtime-status inquiries with local service instance status.\",\n ).respondsTo(META_RUNTIME_STATUS_INTENT);\n\n Cadenza.defineIntent({\n name: META_READINESS_INTENT,\n description:\n \"Gather service readiness reports derived from local runtime status and required dependees.\",\n input: {\n type: \"object\",\n properties: {\n detailLevel: {\n type: \"string\",\n constraints: {\n oneOf: [\"minimal\", \"full\"],\n },\n },\n includeDependencies: {\n type: \"boolean\",\n },\n refreshStaleDependencies: {\n type: \"boolean\",\n },\n targetServiceName: {\n type: \"string\",\n },\n targetServiceInstanceId: {\n type: \"string\",\n },\n },\n },\n output: {\n type: \"object\",\n properties: {\n readinessReports: {\n type: \"array\",\n },\n },\n },\n });\n\n Cadenza.createMetaTask(\n \"Respond readiness inquiry\",\n async (ctx) => {\n const targetServiceName = ctx.targetServiceName;\n const targetServiceInstanceId = ctx.targetServiceInstanceId;\n const report = await this.buildLocalReadinessReport({\n detailLevel: ctx.detailLevel === \"full\" ? \"full\" : \"minimal\",\n includeDependencies: ctx.includeDependencies,\n refreshStaleDependencies: ctx.refreshStaleDependencies,\n });\n if (!report) {\n return {};\n }\n\n if (targetServiceName && targetServiceName !== report.serviceName) {\n return {};\n }\n\n if (\n targetServiceInstanceId &&\n targetServiceInstanceId !== report.serviceInstanceId\n ) {\n return {};\n }\n\n return {\n readinessReports: [report],\n };\n },\n \"Responds to distributed readiness inquiries using required dependee health.\",\n ).respondsTo(META_READINESS_INTENT);\n\n this.handleInstanceUpdateTask = Cadenza.createMetaTask(\n \"Handle Instance Update\",\n (ctx, emit) => {\n const serviceInstance = normalizeServiceInstanceDescriptor(\n ctx.serviceInstance ??\n ctx.data ??\n ctx.queryData?.data ??\n (ctx.__serviceInstanceId || ctx.serviceInstanceId\n ? {\n uuid: ctx.__serviceInstanceId ?? ctx.serviceInstanceId,\n serviceName: ctx.__serviceName ?? ctx.serviceName,\n isFrontend: !!ctx.isFrontend,\n isActive:\n typeof ctx.isActive === \"boolean\"\n ? ctx.isActive\n : typeof ctx.__active === \"boolean\"\n ? ctx.__active\n : true,\n isNonResponsive: !!ctx.isNonResponsive,\n isBlocked: !!ctx.isBlocked,\n health: (ctx.health ?? ctx.__health ?? {}) as AnyObject,\n numberOfRunningGraphs:\n ctx.numberOfRunningGraphs ?? ctx.__numberOfRunningGraphs ?? 0,\n isPrimary: false,\n isBootstrapPlaceholder: !!ctx.isBootstrapPlaceholder,\n transports: ctx.transports ?? [],\n }\n : undefined),\n );\n if (!serviceInstance) {\n return false;\n }\n const uuid = serviceInstance.uuid;\n const serviceName = serviceInstance.serviceName;\n const deleted = Boolean(\n ctx.deleted ?? ctx.serviceInstance?.deleted ?? ctx.data?.deleted,\n );\n if (uuid === this.serviceInstanceId) return;\n\n if (deleted) {\n const existingInstance = this.instances\n .get(serviceName)\n ?.find((instance) => instance.uuid === uuid);\n const indexToDelete =\n this.instances.get(serviceName)?.findIndex((i) => i.uuid === uuid) ?? -1;\n if (indexToDelete >= 0 && existingInstance) {\n this.instances.get(serviceName)?.splice(indexToDelete, 1);\n for (const transport of existingInstance.transports) {\n const transportKey = buildTransportClientKey(transport);\n emit(`meta.socket_shutdown_requested:${transportKey}`, {});\n emit(`meta.fetch.destroy_requested:${transportKey}`, {});\n }\n }\n\n if (this.instances.get(serviceName)?.length === 0) {\n this.instances.delete(serviceName);\n }\n\n this.unregisterDependee(uuid, serviceName);\n\n return;\n }\n\n if (!this.instances.has(serviceName))\n this.instances.set(serviceName, []);\n const instances = this.instances.get(serviceName)!;\n const existing = instances.find((i) => i.uuid === uuid);\n\n if (existing) {\n Object.assign(existing, {\n ...serviceInstance,\n transports:\n serviceInstance.transports.length > 0\n ? serviceInstance.transports\n : existing.transports,\n clientCreatedTransportIds: existing.clientCreatedTransportIds ?? [],\n });\n } else {\n instances.push(serviceInstance);\n }\n\n const trackedInstance =\n existing ?? instances.find((instance) => instance.uuid === uuid);\n if (trackedInstance) {\n const snapshot = this.resolveRuntimeStatusSnapshot(\n trackedInstance.numberOfRunningGraphs ?? 0,\n trackedInstance.isActive,\n trackedInstance.isNonResponsive,\n trackedInstance.isBlocked,\n );\n trackedInstance.runtimeState = snapshot.state;\n trackedInstance.acceptingWork = snapshot.acceptingWork;\n trackedInstance.reportedAt =\n trackedInstance.reportedAt ?? new Date().toISOString();\n }\n\n if (!serviceInstance.isBootstrapPlaceholder) {\n this.reconcileBootstrapPlaceholderInstance(serviceName, uuid, emit);\n }\n\n if (this.serviceName === serviceName) {\n return false;\n }\n\n if (trackedInstance?.isFrontend) {\n return true;\n }\n\n if (\n this.deputies.has(serviceName) ||\n this.remoteIntents.has(serviceName) ||\n this.remoteSignals.has(serviceName)\n ) {\n const connected = this.ensureDependeeClientForInstance(\n trackedInstance!,\n emit,\n ctx,\n );\n\n if (!connected) {\n emit(\"meta.service_registry.routeable_transport_missing\", {\n serviceName,\n serviceInstanceId: uuid,\n requiredRole: this.getRoutingTransportRole(),\n isFrontend: this.isFrontend,\n });\n }\n }\n\n return true;\n },\n \"Handles instance updates to service instances\",\n )\n .emits(\"meta.service_registry.service_discovered\")\n .doOn(\n \"meta.initializing_service\",\n \"global.meta.service_instance.inserted\",\n \"global.meta.service_instance.updated\",\n \"meta.service_instance.inserted\",\n \"meta.service_instance.updated\",\n )\n .attachSignal(\n \"meta.service_registry.dependee_registered\",\n \"meta.socket_shutdown_requested\",\n \"meta.fetch.destroy_requested\",\n );\n\n this.handleTransportUpdateTask = Cadenza.createMetaTask(\n \"Handle Transport Update\",\n (ctx, emit) => {\n const transport = normalizeServiceTransportDescriptor(\n ctx.serviceTransport ?? ctx.data ?? ctx.queryData?.data ?? ctx,\n );\n if (!transport) {\n return false;\n }\n\n let ownerInstance: ServiceInstanceDescriptor | undefined;\n for (const instances of this.instances.values()) {\n ownerInstance = instances.find(\n (instance) => instance.uuid === transport.serviceInstanceId,\n );\n if (ownerInstance) {\n break;\n }\n }\n\n if (!ownerInstance) {\n return false;\n }\n\n if (transport.deleted) {\n ownerInstance.transports = ownerInstance.transports.filter(\n (existingTransport) => existingTransport.uuid !== transport.uuid,\n );\n const transportKey = buildTransportClientKey(transport);\n emit(`meta.socket_shutdown_requested:${transportKey}`, {});\n emit(`meta.fetch.destroy_requested:${transportKey}`, {});\n return true;\n }\n\n const existingTransport = this.getTransportById(ownerInstance, transport.uuid);\n if (existingTransport) {\n Object.assign(existingTransport, transport);\n } else {\n ownerInstance.transports.push(transport);\n }\n\n if (ownerInstance.uuid === this.serviceInstanceId) {\n return true;\n }\n\n const hasRemoteInterest =\n !ownerInstance.isFrontend &&\n (this.deputies.has(ownerInstance.serviceName) ||\n this.remoteIntents.has(ownerInstance.serviceName) ||\n this.remoteSignals.has(ownerInstance.serviceName)) &&\n transport.role === this.getRoutingTransportRole();\n\n if (!hasRemoteInterest) {\n return true;\n }\n\n this.ensureDependeeClientForInstance(ownerInstance, emit, ctx);\n\n return true;\n },\n \"Handles service transport updates independently from instance rows.\",\n )\n .doOn(\n \"global.meta.service_instance_transport.inserted\",\n \"global.meta.service_instance_transport.updated\",\n \"meta.service_instance_transport.inserted\",\n \"meta.service_instance_transport.updated\",\n )\n .attachSignal(\n \"meta.service_registry.dependee_registered\",\n \"meta.socket_shutdown_requested\",\n \"meta.fetch.destroy_requested\",\n );\n\n Cadenza.createMetaTask(\n \"Track dependee registration\",\n (ctx) => {\n if (!ctx.serviceName || !ctx.serviceInstanceId) {\n return false;\n }\n\n this.registerDependee(ctx.serviceName, ctx.serviceInstanceId, {\n requiredForReadiness: this.shouldRequireReadinessFromCommunicationTypes(\n ctx.communicationTypes,\n ),\n });\n return true;\n },\n \"Tracks remote dependency instances for runtime heartbeat monitoring.\",\n ).doOn(\"meta.service_registry.dependee_registered\");\n\n const normalizeServiceInstancesFromSync = (ctx: AnyObject) =>\n this.normalizeServiceInstancesFromSync(ctx);\n Cadenza.createMetaTask(\"Split service instances\", function* (ctx: any) {\n const serviceInstances = normalizeServiceInstancesFromSync(ctx);\n if (serviceInstances.length === 0) {\n return;\n }\n\n for (const serviceInstance of serviceInstances) {\n yield { serviceInstance };\n }\n })\n .doOn(\n \"meta.service_registry.registered_global_signals\",\n \"meta.service_registry.registered_global_intents\",\n )\n .then(this.handleInstanceUpdateTask);\n\n this.handleGlobalSignalRegistrationTask = Cadenza.createMetaTask(\n \"Handle global Signal Registration\",\n (ctx) => {\n const sortedSignalToTaskMap = this.normalizeSignalMaps(ctx).sort(\n (a: any, b: any) => {\n if (a.deleted && !b.deleted) return -1;\n if (!a.deleted && b.deleted) return 1;\n return 0;\n },\n );\n\n const locallyEmittedSignals = Cadenza.signalBroker\n .listEmittedSignals()\n .filter((s: any) => s.startsWith(\"global.\"));\n\n for (const map of sortedSignalToTaskMap) {\n if (map.deleted) {\n this.remoteSignals.get(map.serviceName)?.delete(map.signalName);\n\n if (!this.remoteSignals.get(map.serviceName)?.size) {\n this.remoteSignals.delete(map.serviceName);\n }\n\n Cadenza.get(\n `Transmit signal: ${map.signalName} to ${map.serviceName}`,\n )?.destroy();\n continue;\n }\n\n if (locallyEmittedSignals.includes(map.signalName)) {\n if (!this.remoteSignals.get(map.serviceName)) {\n this.remoteSignals.set(map.serviceName, new Set());\n }\n\n if (!this.remoteSignals.get(map.serviceName)?.has(map.signalName)) {\n Cadenza.createSignalTransmissionTask(\n map.signalName,\n map.serviceName,\n );\n }\n\n this.remoteSignals.get(map.serviceName)?.add(map.signalName);\n }\n }\n\n return true;\n },\n \"Handles registration of remote signals\",\n )\n .emits(\"meta.service_registry.registered_global_signals\")\n .doOn(\n \"global.meta.cadenza_db.gathered_sync_data\",\n \"global.meta.graph_metadata.task_signal_observed\",\n );\n\n this.reconcileGatheredSyncTransmissionsTask = Cadenza.createMetaTask(\n \"Reconcile gathered sync signal transmissions\",\n (ctx, emit) => this.reconcileGatheredSyncTransmissions(ctx, emit),\n \"Keeps gathered sync transmitters aligned with known remote service instances.\",\n ).doOn(\n CADENZA_DB_GATHERED_SYNC_SIGNAL,\n META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL,\n \"meta.service_registry.service_discovered\",\n );\n\n this.handleGlobalIntentRegistrationTask = Cadenza.createMetaTask(\n \"Handle global intent registration\",\n (ctx, emit) => {\n const intentToTaskMaps = this.normalizeIntentMaps(ctx);\n const sorted = intentToTaskMaps.sort((a, b) => {\n if (a.deleted && !b.deleted) return -1;\n if (!a.deleted && b.deleted) return 1;\n return 0;\n });\n\n for (const map of sorted) {\n try {\n if (map.deleted) {\n this.unregisterRemoteIntentDeputy(map);\n continue;\n }\n\n Cadenza.inquiryBroker.addIntent({\n name: map.intentName,\n });\n\n this.registerRemoteIntentDeputy(map);\n\n this.ensureDependeeClientsForService(map.serviceName, emit);\n } catch (error) {\n throw error;\n }\n }\n\n return true;\n },\n \"Handles registration of remote inquiry intent responders\",\n )\n .emits(\"meta.service_registry.registered_global_intents\")\n .doOn(\n \"global.meta.cadenza_db.gathered_sync_data\",\n \"global.meta.graph_metadata.task_intent_associated\",\n );\n\n this.handleServiceNotRespondingTask = Cadenza.createMetaTask(\n \"Handle service not responding\",\n (ctx, emit) => {\n const { serviceName, serviceInstanceId, serviceTransportId } = ctx;\n const serviceInstances = this.instances.get(serviceName);\n const instances = serviceInstances?.filter((instance) => {\n if (serviceInstanceId && instance.uuid === serviceInstanceId) {\n return true;\n }\n\n if (serviceTransportId) {\n return instance.transports.some(\n (transport) => transport.uuid === serviceTransportId,\n );\n }\n\n return false;\n });\n\n Cadenza.log(\n \"Service not responding.\",\n {\n serviceName,\n serviceInstanceId,\n serviceTransportId,\n instances,\n },\n \"warning\",\n serviceName,\n );\n\n for (const instance of instances ?? []) {\n instance.isActive = false;\n instance.isNonResponsive = true;\n const snapshot = this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n );\n instance.runtimeState = snapshot.state;\n instance.acceptingWork = snapshot.acceptingWork;\n instance.reportedAt = new Date().toISOString();\n emit(\"global.meta.service_registry.service_not_responding\", {\n data: {\n isActive: false,\n isNonResponsive: true,\n },\n filter: {\n uuid: instance.uuid,\n },\n });\n }\n\n return true;\n },\n \"Handles service not responding\",\n )\n .doOn(\n \"meta.fetch.handshake_failed\",\n \"meta.fetch.handshake_failed.*\",\n \"meta.socket_client.disconnected\",\n \"meta.socket_client.disconnected.*\",\n \"meta.service_registry.runtime_status_unreachable\",\n )\n .attachSignal(\"global.meta.service_registry.service_not_responding\");\n\n this.handleServiceHandshakeTask = Cadenza.createMetaTask(\n \"Handle service handshake\",\n (ctx, emit) => {\n const { serviceName, serviceInstanceId } = ctx;\n const serviceInstances = this.instances.get(serviceName);\n let instance = serviceInstances?.find(\n (i) => i.uuid === serviceInstanceId,\n );\n\n if (!instance && serviceName && serviceInstanceId) {\n const bootstrapPlaceholder = serviceInstances?.find(\n (candidate) =>\n candidate.isBootstrapPlaceholder &&\n (!ctx.serviceTransportId ||\n candidate.transports.some(\n (transport) => transport.uuid === ctx.serviceTransportId,\n )),\n );\n\n if (bootstrapPlaceholder) {\n instance = this.adoptBootstrapPlaceholderInstanceId(\n serviceName,\n bootstrapPlaceholder.uuid,\n serviceInstanceId,\n );\n }\n }\n\n if (!instance) {\n return false;\n }\n\n instance.isActive = true;\n instance.isNonResponsive = false;\n const snapshot = this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n );\n instance.runtimeState = snapshot.state;\n instance.acceptingWork = snapshot.acceptingWork;\n instance.reportedAt = new Date().toISOString();\n emit(\"global.meta.service_registry.service_handshake\", {\n data: {\n isActive: instance.isActive,\n isNonResponsive: instance.isNonResponsive,\n },\n filter: {\n uuid: instance.uuid,\n },\n });\n\n return true;\n },\n \"Handles service handshake\",\n )\n .doOn(\"meta.fetch.handshake_complete\")\n .attachSignal(\n \"global.meta.service_registry.service_handshake\",\n \"global.meta.service_registry.deleted\",\n );\n\n this.handleSocketStatusUpdateTask = Cadenza.createMetaTask(\n \"Handle Socket Status Update\",\n (ctx, emit) => {\n const report = this.normalizeRuntimeStatusReport(ctx);\n if (!report) {\n return false;\n }\n\n if (\n report.serviceName === this.serviceName &&\n report.serviceInstanceId === this.serviceInstanceId\n ) {\n return false;\n }\n\n let applied = this.applyRuntimeStatusReport(report);\n if (\n !applied &&\n report.transportId &&\n report.transportOrigin\n ) {\n if (!this.instances.has(report.serviceName)) {\n this.instances.set(report.serviceName, []);\n }\n\n this.instances.get(report.serviceName)!.push({\n uuid: report.serviceInstanceId,\n serviceName: report.serviceName,\n isFrontend: !!report.isFrontend,\n isActive: report.isActive,\n isNonResponsive: report.isNonResponsive,\n isBlocked: report.isBlocked,\n numberOfRunningGraphs: report.numberOfRunningGraphs,\n runtimeState: report.state,\n acceptingWork: report.acceptingWork,\n reportedAt: report.reportedAt,\n health: report.health ?? {},\n isPrimary: false,\n transports: [\n {\n uuid: report.transportId,\n serviceInstanceId: report.serviceInstanceId,\n role: report.transportRole ?? this.getRoutingTransportRole(),\n origin: report.transportOrigin,\n protocols:\n report.transportProtocols && report.transportProtocols.length > 0\n ? report.transportProtocols\n : ([\"rest\", \"socket\"] as ServiceTransportProtocol[]),\n securityProfile: null,\n authStrategy: null,\n },\n ],\n });\n applied = true;\n }\n\n if (!applied) {\n return false;\n }\n\n const updatedInstance = this.getInstance(\n report.serviceName,\n report.serviceInstanceId,\n );\n if (\n updatedInstance &&\n !updatedInstance.isFrontend &&\n (this.deputies.has(report.serviceName) ||\n this.remoteIntents.has(report.serviceName) ||\n this.remoteSignals.has(report.serviceName))\n ) {\n this.ensureDependeeClientForInstance(updatedInstance, emit, ctx);\n }\n\n this.registerDependee(report.serviceName, report.serviceInstanceId);\n this.lastHeartbeatAtByInstance.set(report.serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(report.serviceInstanceId, 0);\n this.runtimeStatusFallbackInFlightByInstance.delete(\n report.serviceInstanceId,\n );\n return true;\n },\n \"Handles status update from socket broadcast\",\n ).doOn(\"meta.socket_client.status_received\");\n\n Cadenza.createMetaTask(\n \"Request full sync after CadenzaDB fetch handshake\",\n (ctx) => {\n const serviceName =\n typeof ctx.serviceName === \"string\"\n ? ctx.serviceName.trim()\n : typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName.trim()\n : \"\";\n\n if (serviceName !== \"CadenzaDB\") {\n return false;\n }\n\n return this.scheduleEarlyFullSyncRequests(\"cadenza_db_fetch_handshake\");\n },\n \"Schedules a few early service-registry full-sync retries after the authority fetch transport comes up.\",\n ).doOn(\"meta.fetch.handshake_complete\");\n\n this.fullSyncTask = Cadenza.createMetaTask(\n \"Full sync\",\n async (ctx) => {\n if (\n this.connectsToCadenzaDB &&\n this.serviceName !== \"CadenzaDB\" &&\n !this.hasBootstrapFullSyncDeputies()\n ) {\n return false;\n }\n\n const inquiryResult = await Cadenza.inquire(\n META_SERVICE_REGISTRY_FULL_SYNC_INTENT,\n {\n syncScope: \"service-registry-full-sync\",\n },\n ctx.inquiryOptions ?? ctx.__inquiryOptions ?? {},\n );\n\n const signalToTaskMaps = this.normalizeSignalMaps(\n inquiryResult as AnyObject,\n ).filter((m) => !!m.isGlobal);\n\n const intentToTaskMaps = this.normalizeIntentMaps(\n inquiryResult as AnyObject,\n );\n\n const serviceInstances = this.normalizeServiceInstancesFromSync(\n inquiryResult as AnyObject,\n );\n\n return {\n ...ctx,\n signalToTaskMaps,\n intentToTaskMaps,\n serviceInstances,\n __inquiryMeta: inquiryResult.__inquiryMeta,\n };\n },\n \"Runs service registry full sync through one distributed inquiry intent.\",\n )\n .doOn(\"meta.sync_requested\")\n .emits(\"meta.service_registry.initial_sync_complete\")\n .then(\n this.handleGlobalSignalRegistrationTask,\n this.handleGlobalIntentRegistrationTask,\n );\n\n this.getInstanceById = Cadenza.createMetaTask(\n \"Get instance by id\",\n (context) => {\n const { __id } = context;\n let instance;\n for (const instances of this.instances.values()) {\n instance = instances.find((i) => i.uuid === __id);\n if (instance) break;\n }\n return { ...context, __instance: instance };\n },\n \"Gets instance by id.\",\n );\n\n this.getInstancesByServiceName = Cadenza.createMetaTask(\n \"Get instances by name\",\n (context) => {\n const { __serviceName } = context;\n const instances = this.instances.get(__serviceName);\n if (!instances) {\n return false;\n }\n\n return { ...context, __instances: instances };\n },\n \"Gets instances by name.\",\n );\n\n this.handleDeputyRegistrationTask = Cadenza.createMetaTask(\n \"Handle Deputy Registration\",\n (ctx, emit) => {\n const { serviceName } = ctx;\n\n if (!this.deputies.has(serviceName)) this.deputies.set(serviceName, []);\n\n this.deputies.get(serviceName)!.push({\n serviceName,\n remoteRoutineName: ctx.remoteRoutineName,\n signalName: ctx.signalName,\n localTaskName: ctx.localTaskName,\n communicationType: ctx.communicationType,\n });\n\n this.ensureDependeeClientsForService(serviceName, emit, ctx);\n },\n ).doOn(\"meta.deputy.created\");\n\n this.getAllInstances = Cadenza.createMetaTask(\n \"Get all instances\",\n (context) => ({\n ...context,\n __instances: Array.from(this.instances.values()).flat(),\n }),\n \"Gets all instances.\",\n );\n\n this.doForEachInstance = Cadenza.createMetaTask(\n \"Do for each instance\",\n function* (context: AnyObject) {\n // @ts-ignore\n for (const instances of this.instances.values()) {\n for (const instance of instances) {\n yield { ...context, __instance: instance };\n }\n }\n }.bind(this),\n \"Yields each instance for branching.\",\n );\n\n this.deleteInstance = Cadenza.createMetaTask(\n \"Delete instance\",\n (context) => {\n const { __id } = context;\n this.instances.delete(__id);\n return context;\n },\n \"Deletes instance.\",\n ).doOn(\"global.meta.service_instance.deleted\");\n\n this.getBalancedInstance = Cadenza.createMetaTask(\n \"Get balanced instance\",\n (context, emit) => {\n if (context.__remoteRoutineName !== undefined) {\n context = ensureDelegationContextMetadata(context);\n }\n\n const {\n __serviceName,\n __triedInstances,\n __retries,\n __broadcast,\n targetServiceInstanceId,\n } = context;\n let retries = __retries ?? 0;\n let triedInstances = __triedInstances ?? [];\n const preferredRole = this.getRoutingTransportRole();\n const instances = this.instances\n .get(__serviceName)\n ?.filter((instance) => {\n if (\n targetServiceInstanceId &&\n instance.uuid !== targetServiceInstanceId\n ) {\n return false;\n }\n\n if (\n !instance.isActive ||\n instance.isNonResponsive ||\n instance.isBlocked\n ) {\n return false;\n }\n\n if (instance.isFrontend) {\n return true;\n }\n\n return Boolean(\n this.selectTransportForInstance(instance, context, preferredRole),\n );\n })\n .sort((a, b) => {\n const leftStatus = this.resolveRuntimeStatusSnapshot(\n a.numberOfRunningGraphs ?? 0,\n a.isActive,\n a.isNonResponsive,\n a.isBlocked,\n );\n const rightStatus = this.resolveRuntimeStatusSnapshot(\n b.numberOfRunningGraphs ?? 0,\n b.isActive,\n b.isNonResponsive,\n b.isBlocked,\n );\n\n const priorityDelta =\n runtimeStatusPriority(leftStatus.state) -\n runtimeStatusPriority(rightStatus.state);\n if (priorityDelta !== 0) {\n return priorityDelta;\n }\n\n return (\n (a.numberOfRunningGraphs ?? 0) - (b.numberOfRunningGraphs ?? 0)\n );\n });\n\n if (!instances || instances.length === 0 || retries > this.retryCount) {\n context.errored = true;\n context.__error =\n this.isFrontend && preferredRole === \"public\"\n ? `No public transport available for ${__serviceName}.`\n : `No routeable ${preferredRole} transport available for ${__serviceName}. Retries: ${retries}.`;\n emit(\n `meta.service_registry.load_balance_failed:${context.__metadata.__deputyExecId}`,\n context,\n );\n return context;\n }\n\n if (__broadcast || instances[0].isFrontend) {\n for (const instance of instances) {\n if (instance.isFrontend) {\n const fetchId = `browser:${instance.uuid}`;\n emit(\n `meta.service_registry.selected_instance_for_socket:${fetchId}`,\n {\n ...context,\n __instance: instance.uuid,\n __transportId: undefined,\n __transportOrigin: undefined,\n __transportProtocols: [\"socket\"],\n __fetchId: fetchId,\n },\n );\n continue;\n }\n\n const selectedTransport = this.selectTransportForInstance(\n instance,\n context,\n preferredRole,\n );\n if (!selectedTransport) {\n continue;\n }\n\n const transportKey = buildTransportClientKey(selectedTransport);\n emit(\n `${\n this.resolveTransportProtocolOrder(context)[0] === \"socket\" &&\n transportSupportsProtocol(selectedTransport, \"socket\")\n ? \"meta.service_registry.selected_instance_for_socket\"\n : \"meta.service_registry.selected_instance_for_fetch\"\n }:${transportKey}`,\n {\n ...context,\n __instance: instance.uuid,\n __transportId: selectedTransport.uuid,\n __transportOrigin: selectedTransport.origin,\n __transportProtocols: selectedTransport.protocols,\n __fetchId: transportKey,\n },\n );\n }\n\n return context;\n }\n\n let instancesToTry = instances.filter(\n (i) => !__triedInstances?.includes(i.uuid),\n );\n\n if (instancesToTry.length === 0) {\n if (this.useSocket) {\n emit(\n `meta.service_registry.socket_failed:${context.__fetchId}`,\n context,\n );\n }\n retries++;\n instancesToTry = instances;\n triedInstances = [];\n }\n\n let selected = instancesToTry[0];\n if (retries > 0) {\n selected =\n instancesToTry[Math.floor(Math.random() * instancesToTry.length)];\n }\n\n if (selected.isFrontend) {\n context.__instance = selected.uuid;\n context.__transportId = undefined;\n context.__transportOrigin = undefined;\n context.__transportProtocols = [\"socket\"];\n context.__fetchId = `browser:${selected.uuid}`;\n context.__triedInstances = triedInstances;\n context.__triedInstances.push(selected.uuid);\n context.__retries = retries;\n\n emit(\n `meta.service_registry.selected_instance_for_socket:${context.__fetchId}`,\n context,\n );\n return context;\n }\n\n const selectedTransport = this.selectTransportForInstance(\n selected,\n context,\n preferredRole,\n );\n\n if (!selectedTransport) {\n context.errored = true;\n context.__error = `No routeable ${preferredRole} transport available for ${selected.serviceName}/${selected.uuid}.`;\n emit(\n `meta.service_registry.load_balance_failed:${context.__metadata.__deputyExecId}`,\n context,\n );\n return context;\n }\n\n context.__instance = selected.uuid;\n context.__transportId = selectedTransport.uuid;\n context.__transportOrigin = selectedTransport.origin;\n context.__transportProtocols = selectedTransport.protocols;\n context.__fetchId = buildTransportClientKey(selectedTransport);\n context.__triedInstances = triedInstances;\n context.__triedInstances.push(selected.uuid);\n context.__retries = retries;\n\n if (\n this.resolveTransportProtocolOrder(context)[0] === \"socket\" &&\n transportSupportsProtocol(selectedTransport, \"socket\")\n ) {\n emit(\n `meta.service_registry.selected_instance_for_socket:${context.__fetchId}`,\n context,\n );\n } else {\n emit(\n `meta.service_registry.selected_instance_for_fetch:${context.__fetchId}`,\n context,\n );\n }\n\n return context;\n },\n \"Gets a balanced instance for load balancing\",\n )\n .doOn(\n \"meta.deputy.delegation_requested\",\n \"meta.signal_transmission.requested\",\n \"meta.socket_client.delegate_failed\",\n \"meta.fetch.delegate_failed\",\n \"meta.socket_client.signal_transmission_failed\",\n )\n .attachSignal(\n \"meta.service_registry.load_balance_failed\",\n \"meta.service_registry.selected_instance_for_socket\",\n \"meta.service_registry.selected_instance_for_fetch\",\n \"meta.service_registry.socket_failed\",\n );\n\n this.getStatusTask = Cadenza.createMetaTask(\n \"Get status\",\n (ctx) => this.resolveLocalStatusCheck(ctx),\n ).doOn(\n \"meta.socket.status_check_requested\",\n \"meta.rest.status_check_requested\",\n );\n\n Cadenza.createMetaTask(\n \"Track local routine start\",\n (ctx, emit) => {\n const sourceTaskName = String(ctx.__signalEmission?.taskName ?? \"\");\n if (INTERNAL_RUNTIME_STATUS_TASK_NAMES.has(sourceTaskName)) {\n return false;\n }\n\n const routineId = String(\n ctx.filter?.uuid ?? ctx.__routineExecId ?? \"\",\n );\n if (!routineId) {\n return false;\n }\n\n this.activeRoutineExecutionIds.add(routineId);\n this.numberOfRunningGraphs = this.activeRoutineExecutionIds.size;\n const localInstance = this.getLocalInstance();\n if (!localInstance) {\n return true;\n }\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n this.numberOfRunningGraphs,\n localInstance.isActive,\n localInstance.isNonResponsive,\n localInstance.isBlocked,\n );\n if (\n hasSignificantRuntimeStatusChange(this.lastRuntimeStatusSnapshot, snapshot)\n ) {\n emit(\"meta.service_registry.runtime_status_broadcast_requested\", {\n reason: \"runtime-state-change\",\n });\n }\n return true;\n },\n \"Tracks local routine starts for runtime load status.\",\n ).doOn(\"meta.node.started_routine_execution\");\n\n Cadenza.createMetaTask(\n \"Track local routine end\",\n (ctx, emit) => {\n const sourceTaskName = String(ctx.__signalEmission?.taskName ?? \"\");\n if (INTERNAL_RUNTIME_STATUS_TASK_NAMES.has(sourceTaskName)) {\n return false;\n }\n\n const routineId = String(\n ctx.filter?.uuid ?? ctx.__routineExecId ?? \"\",\n );\n if (!routineId) {\n return false;\n }\n\n this.activeRoutineExecutionIds.delete(routineId);\n this.numberOfRunningGraphs = this.activeRoutineExecutionIds.size;\n const localInstance = this.getLocalInstance();\n if (!localInstance) {\n return true;\n }\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n this.numberOfRunningGraphs,\n localInstance.isActive,\n localInstance.isNonResponsive,\n localInstance.isBlocked,\n );\n if (\n hasSignificantRuntimeStatusChange(this.lastRuntimeStatusSnapshot, snapshot)\n ) {\n emit(\"meta.service_registry.runtime_status_broadcast_requested\", {\n reason: \"runtime-state-change\",\n });\n }\n return true;\n },\n \"Tracks local routine completion for runtime load status.\",\n ).doOn(\"meta.node.ended_routine_execution\");\n\n Cadenza.createMetaTask(\n \"Start runtime status sharing intervals\",\n () => {\n if (this.runtimeStatusHeartbeatStarted) {\n return false;\n }\n\n this.runtimeStatusHeartbeatStarted = true;\n Cadenza.interval(\n META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL,\n { reason: \"heartbeat\" },\n this.runtimeStatusHeartbeatIntervalMs,\n true,\n );\n Cadenza.interval(\n META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL,\n {},\n this.runtimeStatusHeartbeatIntervalMs,\n );\n return true;\n },\n \"Starts runtime status heartbeat and heartbeat-monitor loops once per service instance.\",\n ).doOn(\"meta.service_registry.instance_inserted\");\n\n Cadenza.createMetaTask(\n \"Broadcast runtime status\",\n (ctx, emit) => {\n const report = this.buildLocalRuntimeStatusReport(\n ctx.detailLevel === \"full\" ? \"full\" : \"minimal\",\n );\n if (!report) {\n return false;\n }\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n report.numberOfRunningGraphs,\n report.isActive,\n report.isNonResponsive,\n report.isBlocked,\n );\n const force =\n ctx.reason === \"heartbeat\" ||\n ctx.force === true ||\n this.lastRuntimeStatusSnapshot === null;\n\n if (\n !force &&\n !hasSignificantRuntimeStatusChange(this.lastRuntimeStatusSnapshot, snapshot)\n ) {\n return false;\n }\n\n this.lastRuntimeStatusSnapshot = snapshot;\n emit(\"meta.service.updated\", {\n __serviceName: report.serviceName,\n __serviceInstanceId: report.serviceInstanceId,\n __reportedAt: report.reportedAt,\n __numberOfRunningGraphs: report.numberOfRunningGraphs,\n __health: report.health ?? {},\n __active: report.isActive,\n serviceName: report.serviceName,\n serviceInstanceId: report.serviceInstanceId,\n transportId: report.transportId,\n transportRole: report.transportRole,\n transportOrigin: report.transportOrigin,\n transportProtocols: report.transportProtocols,\n isFrontend: report.isFrontend,\n reportedAt: report.reportedAt,\n numberOfRunningGraphs: report.numberOfRunningGraphs,\n health: report.health ?? {},\n isActive: report.isActive,\n isNonResponsive: report.isNonResponsive,\n isBlocked: report.isBlocked,\n state: report.state,\n acceptingWork: report.acceptingWork,\n });\n return true;\n },\n \"Broadcasts local runtime status to connected dependees.\",\n ).doOn(\n META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL,\n \"meta.service_registry.runtime_status_broadcast_requested\",\n );\n\n Cadenza.createMetaTask(\n \"Monitor dependee heartbeat freshness\",\n (ctx, emit) => {\n if (!this.useSocket) {\n return false;\n }\n\n const now = Date.now();\n for (const [serviceName, instanceIds] of this.dependeesByService) {\n for (const serviceInstanceId of instanceIds) {\n const instance = this.getInstance(serviceName, serviceInstanceId);\n if (!instance || !instance.isActive || instance.isBlocked) {\n continue;\n }\n\n const lastHeartbeat =\n this.lastHeartbeatAtByInstance.get(serviceInstanceId) ?? 0;\n const misses = this.missedHeartbeatsByInstance.get(serviceInstanceId) ?? 0;\n const heartbeatBudget =\n this.runtimeStatusHeartbeatIntervalMs * (misses + 1);\n\n if (lastHeartbeat > 0 && now - lastHeartbeat < heartbeatBudget) {\n continue;\n }\n\n const nextMisses = misses + 1;\n this.missedHeartbeatsByInstance.set(serviceInstanceId, nextMisses);\n\n if (\n nextMisses < this.runtimeStatusMissThreshold ||\n this.runtimeStatusFallbackInFlightByInstance.has(serviceInstanceId)\n ) {\n continue;\n }\n\n this.runtimeStatusFallbackInFlightByInstance.add(serviceInstanceId);\n const transport = this.getRouteableTransport(\n instance,\n this.useSocket ? \"socket\" : \"rest\",\n );\n emit(\"meta.service_registry.runtime_status_fallback_requested\", {\n ...ctx,\n serviceName,\n serviceInstanceId,\n serviceTransportId: transport?.uuid,\n serviceOrigin: transport?.origin,\n transportProtocols: transport?.protocols,\n });\n }\n }\n\n return true;\n },\n \"Monitors dependee heartbeat freshness and requests inquiry fallback after repeated misses.\",\n ).doOn(META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Resolve runtime status fallback inquiry\",\n async (ctx, emit) => {\n const serviceName = ctx.serviceName;\n const serviceInstanceId = ctx.serviceInstanceId;\n if (!serviceName || !serviceInstanceId) {\n return false;\n }\n\n try {\n const { report, inquiryMeta } =\n await this.resolveRuntimeStatusFallbackInquiry(\n serviceName,\n serviceInstanceId,\n {\n detailLevel: ctx.detailLevel === \"full\" ? \"full\" : \"minimal\",\n overallTimeoutMs: ctx.overallTimeoutMs,\n perResponderTimeoutMs: ctx.perResponderTimeoutMs,\n requireComplete: ctx.requireComplete,\n },\n );\n\n return {\n ...ctx,\n runtimeStatusReport: report,\n __inquiryMeta: inquiryMeta,\n };\n } catch (error) {\n const instance = this.getInstance(serviceName, serviceInstanceId);\n const transport = instance\n ? this.getRouteableTransport(\n instance,\n this.useSocket ? \"socket\" : \"rest\",\n )\n : undefined;\n const message =\n error instanceof Error ? error.message : String(error);\n const diagnostics =\n error &&\n typeof error === \"object\" &&\n \"runtimeStatusFallback\" in error &&\n (error as AnyObject).runtimeStatusFallback &&\n typeof (error as AnyObject).runtimeStatusFallback === \"object\"\n ? (error as AnyObject).runtimeStatusFallback\n : undefined;\n\n Cadenza.log(\n \"Runtime status fallback inquiry failed.\",\n {\n serviceName,\n serviceInstanceId,\n error: message,\n diagnostics,\n },\n \"warning\",\n );\n\n emit(\"meta.service_registry.runtime_status_unreachable\", {\n ...ctx,\n serviceName,\n serviceInstanceId,\n serviceTransportId: transport?.uuid ?? ctx.serviceTransportId,\n serviceOrigin: transport?.origin ?? ctx.serviceOrigin,\n transportProtocols: transport?.protocols ?? ctx.transportProtocols,\n __error: message,\n errored: true,\n });\n\n return {\n ...ctx,\n __error: message,\n errored: true,\n };\n } finally {\n this.runtimeStatusFallbackInFlightByInstance.delete(serviceInstanceId);\n }\n },\n \"Runs runtime-status inquiry fallback for a dependee instance after missed heartbeats.\",\n )\n .doOn(\"meta.service_registry.runtime_status_fallback_requested\")\n .emits(\"meta.service_registry.runtime_status_fallback_resolved\")\n .emitsOnFail(\"meta.service_registry.runtime_status_fallback_failed\");\n\n this.collectReadinessTask = Cadenza.createMetaTask(\n \"Collect distributed readiness\",\n async (ctx) => {\n const inquiryResult = await Cadenza.inquire(\n META_READINESS_INTENT,\n {\n detailLevel: ctx.detailLevel === \"full\" ? \"full\" : \"minimal\",\n includeDependencies: ctx.includeDependencies,\n refreshStaleDependencies: ctx.refreshStaleDependencies,\n targetServiceName: ctx.targetServiceName,\n targetServiceInstanceId: ctx.targetServiceInstanceId,\n },\n ctx.inquiryOptions ?? ctx.__inquiryOptions ?? {},\n );\n\n return {\n ...ctx,\n ...inquiryResult,\n };\n },\n \"Collects distributed readiness reports from services.\",\n )\n .doOn(\"meta.service_registry.readiness_requested\")\n .emits(\"meta.service_registry.readiness_collected\")\n .emitsOnFail(\"meta.service_registry.readiness_failed\");\n\n this.collectTransportDiagnosticsTask = Cadenza.createMetaTask(\n \"Collect transport diagnostics\",\n async (ctx) => {\n const inquiryResult = await Cadenza.inquire(\n META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT,\n {\n detailLevel: ctx.detailLevel,\n includeErrorHistory: ctx.includeErrorHistory,\n errorHistoryLimit: ctx.errorHistoryLimit,\n },\n ctx.inquiryOptions ?? ctx.__inquiryOptions ?? {},\n );\n\n return {\n ...ctx,\n ...inquiryResult,\n };\n },\n \"Collects distributed transport diagnostics using inquiry responders.\",\n )\n .doOn(\"meta.service_registry.transport_diagnostics_requested\")\n .emits(\"meta.service_registry.transport_diagnostics_collected\")\n .emitsOnFail(\"meta.service_registry.transport_diagnostics_failed\");\n\n this.insertServiceTask = resolveServiceRegistryInsertTask(\n \"service\",\n {\n onConflict: {\n target: [\"name\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n {\n // validateInputContext: true,\n inputSchema: {\n type: \"object\",\n properties: {\n data: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n description: {\n type: \"string\",\n },\n display_name: {\n type: \"string\",\n },\n is_meta: {\n type: \"boolean\",\n },\n },\n required: [\"name\"],\n },\n },\n required: [\"data\"],\n },\n outputSchema: {\n type: \"object\",\n properties: {\n __serviceName: {\n type: \"string\",\n },\n },\n required: [\"__serviceName\"],\n },\n retryCount: 100,\n retryDelay: 10000,\n retryDelayMax: 60000,\n retryDelayFactor: 1.3,\n },\n )\n .emits(\"meta.service_registry.service_inserted\")\n .emitsOnFail(\"meta.service_registry.service_insertion_failed\");\n\n const insertServiceInstanceResolverTask = resolveServiceRegistryInsertTask(\n \"service_instance\",\n {\n onConflict: {\n target: [\"uuid\"],\n action: {\n do: \"update\",\n set: {\n process_pid: \"excluded\",\n is_primary: \"excluded\",\n service_name: \"excluded\",\n is_database: \"excluded\",\n is_frontend: \"excluded\",\n is_blocked: \"excluded\",\n is_non_responsive: \"excluded\",\n is_active: \"excluded\",\n last_active: \"excluded\",\n health: \"excluded\",\n deleted: \"false\",\n },\n },\n },\n },\n {\n inputSchema: {\n type: \"object\",\n properties: {\n data: {\n type: \"object\",\n properties: {\n uuid: {\n type: \"string\",\n },\n process_pid: {\n type: \"number\",\n },\n is_primary: {\n type: \"boolean\",\n },\n service_name: {\n type: \"string\",\n },\n is_active: {\n type: \"boolean\",\n },\n is_frontend: {\n type: \"boolean\",\n },\n is_database: {\n type: \"boolean\",\n },\n is_non_responsive: {\n type: \"boolean\",\n },\n is_blocked: {\n type: \"boolean\",\n },\n health: {\n type: \"object\",\n },\n },\n required: [\"uuid\", \"process_pid\", \"service_name\"],\n },\n },\n required: [\"data\"],\n },\n outputSchema: {\n type: \"object\",\n properties: {\n uuid: {\n type: \"string\",\n },\n },\n required: [\"uuid\"],\n },\n retryCount: 5,\n retryDelay: 1000,\n },\n ).emitsOnFail(\"meta.service_registry.instance_insertion_failed\");\n\n this.insertServiceInstanceTask = insertServiceInstanceResolverTask.then(\n Cadenza.createMetaTask(\n \"Setup service\",\n (ctx) => {\n const {\n serviceInstance,\n data,\n queryData,\n __useSocket,\n __retryCount,\n __isFrontend,\n } = ctx;\n const normalizedLocalInstance = normalizeServiceInstanceDescriptor({\n ...(serviceInstance ?? data ?? queryData?.data ?? {}),\n transports: ctx.__transportData ?? ctx.transportData ?? [],\n });\n\n if (\n !normalizedLocalInstance?.uuid ||\n !normalizedLocalInstance.serviceName\n ) {\n if (\n process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] setup_service_rejected_instance\", {\n hasServiceInstance: !!serviceInstance,\n hasData: !!data,\n hasQueryDataData: !!queryData?.data,\n serviceInstanceKeys:\n serviceInstance && typeof serviceInstance === \"object\"\n ? Object.keys(serviceInstance)\n : [],\n dataKeys:\n data && typeof data === \"object\" ? Object.keys(data) : [],\n queryDataDataKeys:\n queryData?.data && typeof queryData.data === \"object\"\n ? Object.keys(queryData.data)\n : [],\n normalizedLocalInstance,\n transportCount: Array.isArray(ctx.__transportData)\n ? ctx.__transportData.length\n : Array.isArray(ctx.transportData)\n ? ctx.transportData.length\n : 0,\n errored: ctx.errored === true,\n error: ctx.__error ?? null,\n inquiryMeta: ctx.__inquiryMeta ?? null,\n });\n }\n return false;\n }\n\n this.serviceInstanceId = normalizedLocalInstance.uuid;\n this.instances.set(\n normalizedLocalInstance.serviceName,\n [{ ...normalizedLocalInstance }],\n );\n this.useSocket = __useSocket;\n this.retryCount = __retryCount;\n this.isFrontend =\n typeof __isFrontend === \"boolean\"\n ? __isFrontend\n : !!normalizedLocalInstance.isFrontend;\n return {\n ...ctx,\n serviceInstance: normalizedLocalInstance,\n data: {\n ...(ctx.data ?? {}),\n uuid: normalizedLocalInstance.uuid,\n service_name: normalizedLocalInstance.serviceName,\n },\n __serviceName: normalizedLocalInstance.serviceName,\n __serviceInstanceId: normalizedLocalInstance.uuid,\n };\n },\n \"Sets service instance id after insertion\",\n )\n .emits(\"meta.service_registry.instance_inserted\")\n .then(\n Cadenza.createMetaTask(\n \"Prepare service transport inserts\",\n function* (ctx: AnyObject, emit) {\n const transportData = Array.isArray(ctx.__transportData)\n ? ctx.__transportData\n : Array.isArray(ctx.transportData)\n ? ctx.transportData\n : [];\n\n for (const transport of transportData) {\n const transportContext = {\n ...ctx,\n data: {\n ...transport,\n service_instance_id:\n transport.service_instance_id ?? ctx.__serviceInstanceId,\n },\n __registrationData: {\n ...transport,\n service_instance_id:\n transport.service_instance_id ?? ctx.__serviceInstanceId,\n },\n };\n emit(\n \"meta.service_registry.transport_registration_requested\",\n transportContext,\n );\n yield transportContext;\n }\n },\n \"Splits declared service transports into individual insert payloads.\",\n ).attachSignal(\"meta.service_registry.transport_registration_requested\"),\n ),\n );\n\n Cadenza.createMetaTask(\n \"Retry local service instance registration after failed insert\",\n (ctx) => {\n const serviceName = String(\n ctx.__serviceName ?? ctx.data?.service_name ?? this.serviceName ?? \"\",\n ).trim();\n\n if (!serviceName || serviceName !== this.serviceName) {\n return false;\n }\n\n Cadenza.schedule(\n \"meta.service_registry.instance_registration_requested\",\n { ...ctx },\n 5000,\n );\n\n return true;\n },\n \"Retries local service instance registration only after the previous insert attempt has failed.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.instance_insertion_failed\");\n\n Cadenza.createMetaTask(\n \"Prepare service instance registration\",\n (ctx) => {\n if (\n process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] prepare_service_instance_registration\", {\n serviceName:\n ctx.data?.service_name ?? ctx.__serviceName ?? this.serviceName ?? null,\n serviceInstanceId:\n ctx.data?.uuid ?? ctx.__serviceInstanceId ?? this.serviceInstanceId ?? null,\n hasData: !!ctx.data,\n dataKeys:\n ctx.data && typeof ctx.data === \"object\"\n ? Object.keys(ctx.data)\n : [],\n transportCount: Array.isArray(ctx.__transportData)\n ? ctx.__transportData.length\n : Array.isArray(ctx.transportData)\n ? ctx.transportData.length\n : 0,\n skipRemoteExecution: ctx.__skipRemoteExecution === true,\n });\n }\n\n const serviceName = String(\n ctx.data?.service_name ?? ctx.__serviceName ?? this.serviceName ?? \"\",\n ).trim();\n\n if (\n serviceName === \"CadenzaDB\" &&\n !Cadenza.getLocalCadenzaDBInsertTask(\"service_instance\")\n ) {\n Cadenza.schedule(\n \"meta.service_registry.instance_registration_requested\",\n { ...ctx },\n 250,\n );\n return false;\n }\n\n return ctx;\n },\n \"Waits for the exact local CadenzaDB service instance insert task during self-bootstrap.\",\n )\n .doOn(\"meta.service_registry.instance_registration_requested\")\n .then(this.insertServiceInstanceTask);\n\n this.insertServiceTransportTask = resolveServiceRegistryInsertTask(\n \"service_instance_transport\",\n {\n onConflict: {\n target: [\"service_instance_id\", \"role\", \"origin\"],\n action: {\n do: \"update\",\n set: {\n protocols: \"excluded\",\n security_profile: \"excluded\",\n auth_strategy: \"excluded\",\n deleted: \"false\",\n },\n },\n },\n },\n {\n inputSchema: {\n type: \"object\",\n properties: {\n data: {\n type: \"object\",\n properties: {\n uuid: {\n type: \"string\",\n },\n service_instance_id: {\n type: \"string\",\n },\n role: {\n type: \"string\",\n },\n origin: {\n type: \"string\",\n },\n protocols: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n security_profile: {\n type: \"string\",\n },\n auth_strategy: {\n type: \"string\",\n },\n },\n required: [\"uuid\", \"service_instance_id\", \"role\", \"origin\"],\n },\n },\n required: [\"data\"],\n },\n outputSchema: {\n type: \"object\",\n properties: {\n uuid: {\n type: \"string\",\n },\n },\n required: [\"uuid\"],\n },\n retryCount: 5,\n retryDelay: 1000,\n },\n )\n .emits(\"meta.service_registry.transport_registered\")\n .emitsOnFail(\"meta.service_registry.transport_registration_failed\");\n\n Cadenza.createMetaTask(\n \"Prepare service transport registration\",\n (ctx) => {\n const serviceName = String(\n ctx.__serviceName ?? this.serviceName ?? \"\",\n ).trim();\n\n if (\n serviceName === \"CadenzaDB\" &&\n !Cadenza.getLocalCadenzaDBInsertTask(\"service_instance_transport\")\n ) {\n Cadenza.schedule(\n \"meta.service_registry.transport_registration_requested\",\n { ...ctx },\n 250,\n );\n return false;\n }\n\n return ctx;\n },\n \"Waits for the exact local CadenzaDB service transport insert task during self-bootstrap.\",\n )\n .doOn(\"meta.service_registry.transport_registration_requested\")\n .then(this.insertServiceTransportTask);\n\n Cadenza.createMetaTask(\n \"Handle service creation\",\n (ctx) => {\n if (!ctx.__cadenzaDBConnect) {\n ctx.__skipRemoteExecution = true;\n }\n\n if (isBrowser || ctx.__isFrontend) {\n Cadenza.createMetaTask(\"Prepare for signal sync\", () => {\n return {};\n })\n // .doAfter(this.fullSyncTask)\n .then(\n Cadenza.createCadenzaDBQueryTask(\"signal_registry\", {\n fields: [\"name\"],\n filter: {\n global: true,\n },\n }).then(\n Cadenza.createMetaTask(\n // TODO this is outdated. Fix it.\n \"Create signal transmission tasks\",\n (ctx, emit) => {\n const signalRegistry = ctx.signalRegistry;\n for (const signal of signalRegistry) {\n emit(\"meta.service_registry.foreign_signal_registered\", {\n __emitterSignalName: signal.name,\n __listenerServiceName: signal.serviceName,\n });\n }\n\n return true;\n },\n ).then(\n Cadenza.createMetaTask(\"Connect to services\", (ctx, emit) => {\n const services: string[] = Array.from(\n new Set(\n ctx.signalRegistry.map((s: any) => s.serviceName),\n ),\n );\n for (const service of services) {\n const instances = this.instances\n .get(service)!\n .filter((i) => i.isActive && !i.isFrontend);\n for (const instance of instances) {\n const transport = this.getRouteableTransport(\n instance,\n this.useSocket ? \"socket\" : \"rest\",\n );\n if (!transport) {\n continue;\n }\n\n if (\n !this.hasTransportClientCreated(instance, transport.uuid)\n ) {\n emit(\"meta.service_registry.dependee_registered\", {\n serviceName: service,\n serviceInstanceId: instance.uuid,\n serviceTransportId: transport.uuid,\n serviceOrigin: transport.origin,\n transportProtocols: transport.protocols,\n communicationTypes: [\"signal\"],\n });\n this.markTransportClientCreated(instance, transport.uuid);\n }\n }\n }\n return {};\n }),\n ),\n ),\n );\n }\n\n return ctx;\n },\n \"Handles the request to create a service instance\",\n )\n .doOn(\"meta.create_service_requested\")\n .then(this.insertServiceTask);\n }\n\n reset() {\n this.instances.clear();\n this.deputies.clear();\n this.remoteSignals.clear();\n this.remoteIntents.clear();\n this.gatheredSyncTransmissionServices.clear();\n this.remoteIntentDeputiesByKey.clear();\n this.remoteIntentDeputiesByTask.clear();\n this.dependeesByService.clear();\n this.dependeeByInstance.clear();\n this.readinessDependeesByService.clear();\n this.readinessDependeeByInstance.clear();\n this.lastHeartbeatAtByInstance.clear();\n this.missedHeartbeatsByInstance.clear();\n this.runtimeStatusFallbackInFlightByInstance.clear();\n this.activeRoutineExecutionIds.clear();\n this.numberOfRunningGraphs = 0;\n this.runtimeStatusHeartbeatStarted = false;\n this.lastRuntimeStatusSnapshot = null;\n this.isFrontend = false;\n }\n}\n","/**\n * A boolean variable indicating whether the current runtime environment is Node.js.\n *\n * This variable checks for the presence of the `process` object, which is specific to Node.js,\n * and verifies if the `process.versions.node` property is defined to confirm the environment.\n *\n * If the runtime is Node.js, `isNode` will be `true`; otherwise, it will be `false`.\n */\nexport const isNode =\n typeof process !== \"undefined\" && process.versions?.node != null;\n\n/**\n * A boolean variable that indicates whether the current runtime environment\n * is a browser. It checks for the presence of the `window` object and the\n * `document` property within it to determine if the code is running in a\n * browser context.\n *\n * - Returns `true` if the `window` object and its `document` property are\n * both defined, which typically indicates a browser environment.\n * - Returns `false` if the `window` object or `document` property is\n * undefined, which typically signifies a non-browser environment such\n * as a Node.js environment.\n */\nexport const isBrowser =\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport type {\n InquiryResponderDescriptor,\n InquiryResponderStatus,\n} from \"../types/inquiry\";\n\nexport const META_INTENT_PREFIX = \"meta-\";\nexport const META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT =\n \"meta-runtime-transport-diagnostics\";\nexport const META_RUNTIME_STATUS_INTENT = \"meta-runtime-status\";\nexport const META_READINESS_INTENT = \"meta-readiness\";\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.getPrototypeOf(value) === Object.prototype\n );\n}\n\nfunction deepMergeDeterministic(left: any, right: any): any {\n if (Array.isArray(left) && Array.isArray(right)) {\n return [...left, ...right];\n }\n\n if (isPlainObject(left) && isPlainObject(right)) {\n const merged: Record<string, any> = { ...left };\n const keys = Array.from(new Set([...Object.keys(left), ...Object.keys(right)])).sort();\n\n for (const key of keys) {\n if (!(key in left)) {\n merged[key] = right[key];\n continue;\n }\n\n if (!(key in right)) {\n merged[key] = left[key];\n continue;\n }\n\n merged[key] = deepMergeDeterministic(left[key], right[key]);\n }\n\n return merged;\n }\n\n return right;\n}\n\nexport function mergeInquiryContexts(contexts: AnyObject[]): AnyObject {\n return contexts.reduce((acc, next) => deepMergeDeterministic(acc, next), {});\n}\n\nexport function isMetaIntentName(intentName: string): boolean {\n return intentName.startsWith(META_INTENT_PREFIX);\n}\n\nexport function shouldExecuteInquiryResponder(\n inquiry: string,\n responderIsMeta: boolean,\n): boolean {\n if (!isMetaIntentName(inquiry)) {\n return true;\n }\n\n return responderIsMeta;\n}\n\nexport function compareResponderDescriptors(\n left: InquiryResponderDescriptor,\n right: InquiryResponderDescriptor,\n): number {\n if (left.serviceName !== right.serviceName) {\n return left.serviceName.localeCompare(right.serviceName);\n }\n\n if (left.taskName !== right.taskName) {\n return left.taskName.localeCompare(right.taskName);\n }\n\n if (left.taskVersion !== right.taskVersion) {\n return left.taskVersion - right.taskVersion;\n }\n\n return left.localTaskName.localeCompare(right.localTaskName);\n}\n\nexport function summarizeResponderStatuses(\n statuses: InquiryResponderStatus[],\n): {\n responded: number;\n failed: number;\n timedOut: number;\n pending: number;\n} {\n let responded = 0;\n let failed = 0;\n let timedOut = 0;\n let pending = 0;\n\n for (const status of statuses) {\n if (status.status === \"fulfilled\") responded++;\n if (status.status === \"failed\") failed++;\n if (status.status === \"timed_out\") timedOut++;\n }\n\n pending = Math.max(0, statuses.length - responded - failed - timedOut);\n\n return { responded, failed, timedOut, pending };\n}\n","import type {\n ServiceTransportConfig,\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n ServiceTransportSecurityProfile,\n} from \"../types/transport\";\n\nconst DEFAULT_PROTOCOLS: ServiceTransportProtocol[] = [\"rest\", \"socket\"];\n\nfunction normalizeString(value: unknown): string {\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n\nexport function normalizeTransportProtocols(\n value: unknown,\n): ServiceTransportProtocol[] {\n const rawValues = Array.isArray(value)\n ? value\n : typeof value === \"string\"\n ? value.split(\",\")\n : [];\n\n const normalized = rawValues\n .map((entry) => normalizeString(entry))\n .filter(\n (entry): entry is ServiceTransportProtocol =>\n entry === \"rest\" || entry === \"socket\",\n );\n\n return Array.from(new Set(normalized));\n}\n\nexport function normalizeTransportOrigin(origin: unknown): string | null {\n const raw = normalizeString(origin);\n if (!raw) {\n return null;\n }\n\n let parsed: URL;\n try {\n parsed = new URL(raw);\n } catch {\n return null;\n }\n\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return null;\n }\n\n if (parsed.pathname && parsed.pathname !== \"/\") {\n return null;\n }\n\n if (parsed.search || parsed.hash) {\n return null;\n }\n\n return parsed.origin;\n}\n\nfunction normalizeSecurityProfile(\n value: unknown,\n): ServiceTransportSecurityProfile | null {\n const normalized = normalizeString(value);\n if (\n normalized === \"low\" ||\n normalized === \"medium\" ||\n normalized === \"high\"\n ) {\n return normalized;\n }\n\n return null;\n}\n\nexport function normalizeServiceTransportConfig(\n value: unknown,\n): ServiceTransportConfig | null {\n const raw = (value ?? {}) as Record<string, unknown>;\n const role = normalizeString(raw.role) as ServiceTransportRole;\n const origin = normalizeTransportOrigin(raw.origin);\n const protocols = normalizeTransportProtocols(raw.protocols);\n\n if (!origin) {\n return null;\n }\n\n if (role !== \"internal\" && role !== \"public\") {\n return null;\n }\n\n return {\n role,\n origin,\n protocols: protocols.length > 0 ? protocols : [...DEFAULT_PROTOCOLS],\n securityProfile: normalizeSecurityProfile(raw.securityProfile),\n authStrategy: normalizeString(raw.authStrategy) || null,\n };\n}\n\nexport function normalizeServiceTransportDescriptor(\n value: unknown,\n): ServiceTransportDescriptor | null {\n const raw = (value ?? {}) as Record<string, unknown>;\n const uuid = normalizeString(raw.uuid);\n const serviceInstanceId = normalizeString(\n raw.serviceInstanceId ?? raw.service_instance_id,\n );\n const config = normalizeServiceTransportConfig(raw);\n\n if (!uuid || !serviceInstanceId || !config) {\n return null;\n }\n\n return {\n uuid,\n serviceInstanceId,\n role: config.role,\n origin: config.origin,\n protocols: config.protocols ?? [...DEFAULT_PROTOCOLS],\n securityProfile: config.securityProfile ?? null,\n authStrategy: config.authStrategy ?? null,\n deleted: Boolean(raw.deleted),\n clientCreated: Boolean(raw.clientCreated ?? raw.client_created ?? false),\n };\n}\n\nexport function transportSupportsProtocol(\n transport: ServiceTransportDescriptor | null | undefined,\n protocol: ServiceTransportProtocol,\n): boolean {\n return !!transport && transport.protocols.includes(protocol);\n}\n\nexport function selectTransportForRole(\n transports: ServiceTransportDescriptor[],\n role: ServiceTransportRole,\n protocol?: ServiceTransportProtocol,\n): ServiceTransportDescriptor | undefined {\n const filtered = transports.filter(\n (transport) =>\n !transport.deleted &&\n transport.role === role &&\n (!protocol || transportSupportsProtocol(transport, protocol)),\n );\n\n return filtered.sort((left, right) => {\n const leftIsBootstrap = left.uuid.endsWith(\"-bootstrap\") ? 1 : 0;\n const rightIsBootstrap = right.uuid.endsWith(\"-bootstrap\") ? 1 : 0;\n if (leftIsBootstrap !== rightIsBootstrap) {\n return leftIsBootstrap - rightIsBootstrap;\n }\n\n return left.origin.localeCompare(right.origin);\n })[0];\n}\n\nexport function buildTransportClientKey(\n transport: Pick<ServiceTransportDescriptor, \"uuid\">,\n): string {\n return transport.uuid;\n}\n\nexport function parseTransportOrigin(\n origin: string,\n): { protocol: \"http\" | \"https\"; hostname: string; port: number } | null {\n const normalized = normalizeTransportOrigin(origin);\n if (!normalized) {\n return null;\n }\n\n const parsed = new URL(normalized);\n const protocol = parsed.protocol === \"https:\" ? \"https\" : \"http\";\n const port = parsed.port\n ? Number(parsed.port)\n : protocol === \"https\"\n ? 443\n : 80;\n\n return {\n protocol,\n hostname: parsed.hostname,\n port,\n };\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport type { ServiceInstanceDescriptor } from \"../types/serviceRegistry\";\nimport type {\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n} from \"../types/transport\";\nimport {\n buildTransportClientKey,\n normalizeServiceTransportDescriptor,\n selectTransportForRole,\n} from \"./transport\";\n\nfunction normalizeString(value: unknown): string {\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n\nfunction normalizeTransportArray(\n value: unknown,\n serviceInstanceId: string,\n): ServiceTransportDescriptor[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((entry) =>\n normalizeServiceTransportDescriptor({\n ...((entry ?? {}) as Record<string, unknown>),\n service_instance_id:\n (entry as Record<string, unknown> | undefined)?.service_instance_id ??\n (entry as Record<string, unknown> | undefined)?.serviceInstanceId ??\n serviceInstanceId,\n }),\n )\n .filter((transport): transport is ServiceTransportDescriptor => !!transport)\n .sort((left, right) => left.origin.localeCompare(right.origin));\n}\n\nexport function normalizeServiceInstanceDescriptor(\n value: unknown,\n): ServiceInstanceDescriptor | null {\n const raw = (value ?? {}) as Record<string, unknown>;\n const uuid = normalizeString(raw.uuid);\n const serviceName = normalizeString(raw.serviceName ?? raw.service_name);\n\n if (!uuid || !serviceName) {\n return null;\n }\n\n const transports = normalizeTransportArray(raw.transports, uuid);\n\n return {\n uuid,\n serviceName,\n numberOfRunningGraphs: Math.max(\n 0,\n Math.trunc(\n Number(raw.numberOfRunningGraphs ?? raw.number_of_running_graphs ?? 0) ||\n 0,\n ),\n ),\n isPrimary: Boolean(raw.isPrimary ?? raw.is_primary ?? false),\n isActive: Boolean(raw.isActive ?? raw.is_active ?? true),\n isNonResponsive: Boolean(\n raw.isNonResponsive ?? raw.is_non_responsive ?? false,\n ),\n isBlocked: Boolean(raw.isBlocked ?? raw.is_blocked ?? false),\n runtimeState:\n raw.runtimeState === \"healthy\" ||\n raw.runtimeState === \"degraded\" ||\n raw.runtimeState === \"overloaded\" ||\n raw.runtimeState === \"unavailable\"\n ? raw.runtimeState\n : undefined,\n acceptingWork:\n typeof raw.acceptingWork === \"boolean\" ? raw.acceptingWork : undefined,\n reportedAt:\n typeof raw.reportedAt === \"string\"\n ? raw.reportedAt\n : typeof raw.reported_at === \"string\"\n ? raw.reported_at\n : undefined,\n health: (raw.health ?? {}) as AnyObject,\n isFrontend: Boolean(raw.isFrontend ?? raw.is_frontend ?? false),\n isDatabase: Boolean(raw.isDatabase ?? raw.is_database ?? false),\n isBootstrapPlaceholder: Boolean(\n raw.isBootstrapPlaceholder ?? raw.is_bootstrap_placeholder ?? false,\n ),\n transports,\n clientCreatedTransportIds: Array.isArray(raw.clientCreatedTransportIds)\n ? raw.clientCreatedTransportIds\n .map((entry) => normalizeString(entry))\n .filter((entry) => entry.length > 0)\n : undefined,\n };\n}\n\nexport function getRouteableTransport(\n instance: ServiceInstanceDescriptor,\n role: ServiceTransportRole,\n protocol?: ServiceTransportProtocol,\n): ServiceTransportDescriptor | undefined {\n return selectTransportForRole(instance.transports ?? [], role, protocol);\n}\n\nexport function getTransportClientKeyForRole(\n instance: ServiceInstanceDescriptor,\n role: ServiceTransportRole,\n protocol?: ServiceTransportProtocol,\n): string | null {\n const transport = getRouteableTransport(instance, role, protocol);\n if (!transport) {\n return null;\n }\n\n return buildTransportClientKey(transport);\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport { v4 as uuid } from \"uuid\";\n\nexport function ensureDelegationContextMetadata<T extends AnyObject>(\n input: T | undefined,\n): T & {\n __deputyExecId: string;\n __metadata: AnyObject;\n} {\n const context =\n input && typeof input === \"object\" ? ({ ...input } as T) : ({} as T);\n const metadata =\n context.__metadata && typeof context.__metadata === \"object\"\n ? { ...context.__metadata }\n : {};\n const deputyExecId =\n typeof metadata.__deputyExecId === \"string\" &&\n metadata.__deputyExecId.length > 0\n ? metadata.__deputyExecId\n : typeof context.__deputyExecId === \"string\" &&\n context.__deputyExecId.length > 0\n ? context.__deputyExecId\n : uuid();\n\n return {\n ...context,\n __deputyExecId: deputyExecId,\n __metadata: {\n ...metadata,\n __deputyExecId: deputyExecId,\n },\n };\n}\n","import type { RuntimeStatusState } from \"./runtimeStatus\";\n\nexport type ReadinessState = \"ready\" | \"degraded\" | \"blocked\";\nexport type DependencyReadinessState =\n | \"ready\"\n | \"degraded\"\n | \"overloaded\"\n | \"unavailable\";\n\nexport interface DependencyReadinessEvaluationInput {\n exists: boolean;\n runtimeState: RuntimeStatusState;\n acceptingWork: boolean;\n missedHeartbeats: number;\n missThreshold: number;\n}\n\nexport interface DependencyReadinessEvaluation {\n state: DependencyReadinessState;\n stale: boolean;\n blocked: boolean;\n reason:\n | \"missing\"\n | \"heartbeat-timeout\"\n | \"heartbeat-stale\"\n | \"runtime-unavailable\"\n | \"runtime-overloaded\"\n | \"runtime-degraded\"\n | \"runtime-healthy\";\n}\n\nexport interface DependencyReadinessSummary {\n total: number;\n ready: number;\n degraded: number;\n overloaded: number;\n unavailable: number;\n stale: number;\n}\n\nexport function evaluateDependencyReadiness(\n input: DependencyReadinessEvaluationInput,\n): DependencyReadinessEvaluation {\n const missedHeartbeats = Math.max(\n 0,\n Math.trunc(Number(input.missedHeartbeats) || 0),\n );\n const stale = missedHeartbeats > 0;\n const timeoutReached = missedHeartbeats >= Math.max(1, input.missThreshold);\n\n if (!input.exists) {\n return {\n state: \"unavailable\",\n stale: true,\n blocked: true,\n reason: \"missing\",\n };\n }\n\n if (timeoutReached) {\n return {\n state: \"unavailable\",\n stale: true,\n blocked: true,\n reason: \"heartbeat-timeout\",\n };\n }\n\n if (input.runtimeState === \"unavailable\" || !input.acceptingWork) {\n return {\n state: \"unavailable\",\n stale,\n blocked: true,\n reason: \"runtime-unavailable\",\n };\n }\n\n if (stale) {\n return {\n state: \"degraded\",\n stale: true,\n blocked: false,\n reason: \"heartbeat-stale\",\n };\n }\n\n if (input.runtimeState === \"overloaded\") {\n return {\n state: \"overloaded\",\n stale: false,\n blocked: false,\n reason: \"runtime-overloaded\",\n };\n }\n\n if (input.runtimeState === \"degraded\") {\n return {\n state: \"degraded\",\n stale: false,\n blocked: false,\n reason: \"runtime-degraded\",\n };\n }\n\n return {\n state: \"ready\",\n stale: false,\n blocked: false,\n reason: \"runtime-healthy\",\n };\n}\n\nexport function summarizeDependencyReadiness(\n evaluations: DependencyReadinessEvaluation[],\n): DependencyReadinessSummary {\n const summary: DependencyReadinessSummary = {\n total: evaluations.length,\n ready: 0,\n degraded: 0,\n overloaded: 0,\n unavailable: 0,\n stale: 0,\n };\n\n for (const evaluation of evaluations) {\n if (evaluation.state === \"ready\") summary.ready++;\n if (evaluation.state === \"degraded\") summary.degraded++;\n if (evaluation.state === \"overloaded\") summary.overloaded++;\n if (evaluation.state === \"unavailable\") summary.unavailable++;\n if (evaluation.stale) summary.stale++;\n }\n\n return summary;\n}\n\nexport function resolveServiceReadinessState(\n localRuntimeState: RuntimeStatusState,\n localAcceptingWork: boolean,\n dependencySummary: DependencyReadinessSummary,\n): ReadinessState {\n if (localRuntimeState === \"unavailable\" || !localAcceptingWork) {\n return \"blocked\";\n }\n\n if (dependencySummary.unavailable > 0) {\n return \"blocked\";\n }\n\n if (\n dependencySummary.degraded > 0 ||\n dependencySummary.overloaded > 0 ||\n dependencySummary.stale > 0\n ) {\n return \"degraded\";\n }\n\n return \"ready\";\n}\n","export type RuntimeStatusState =\n | \"healthy\"\n | \"degraded\"\n | \"overloaded\"\n | \"unavailable\";\n\nexport interface RuntimeStatusSnapshot {\n state: RuntimeStatusState;\n acceptingWork: boolean;\n numberOfRunningGraphs: number;\n isActive: boolean;\n isNonResponsive: boolean;\n isBlocked: boolean;\n}\n\nexport interface ResolveRuntimeStatusInput {\n numberOfRunningGraphs: number;\n isActive: boolean;\n isNonResponsive: boolean;\n isBlocked: boolean;\n degradedGraphThreshold: number;\n overloadedGraphThreshold: number;\n}\n\nexport function resolveRuntimeStatus(\n input: ResolveRuntimeStatusInput,\n): RuntimeStatusSnapshot {\n const numberOfRunningGraphs = Math.max(\n 0,\n Math.trunc(Number(input.numberOfRunningGraphs) || 0),\n );\n\n const isActive = Boolean(input.isActive);\n const isNonResponsive = Boolean(input.isNonResponsive);\n const isBlocked = Boolean(input.isBlocked);\n\n if (!isActive || isNonResponsive || isBlocked) {\n return {\n state: \"unavailable\",\n acceptingWork: false,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n };\n }\n\n if (numberOfRunningGraphs >= input.overloadedGraphThreshold) {\n return {\n state: \"overloaded\",\n acceptingWork: true,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n };\n }\n\n if (numberOfRunningGraphs >= input.degradedGraphThreshold) {\n return {\n state: \"degraded\",\n acceptingWork: true,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n };\n }\n\n return {\n state: \"healthy\",\n acceptingWork: true,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n };\n}\n\nexport function runtimeStatusPriority(state: RuntimeStatusState): number {\n switch (state) {\n case \"healthy\":\n return 0;\n case \"degraded\":\n return 1;\n case \"overloaded\":\n return 2;\n case \"unavailable\":\n return 3;\n default:\n return 4;\n }\n}\n\nexport function hasSignificantRuntimeStatusChange(\n previous: RuntimeStatusSnapshot | null,\n next: RuntimeStatusSnapshot,\n): boolean {\n if (!previous) {\n return true;\n }\n\n return (\n previous.state !== next.state ||\n previous.acceptingWork !== next.acceptingWork ||\n previous.isActive !== next.isActive ||\n previous.isNonResponsive !== next.isNonResponsive ||\n previous.isBlocked !== next.isBlocked\n );\n}\n","import { GraphContext, InquiryOptions, Task } from \"@cadenza.io/core\";\nimport type {\n AnyObject,\n Schema,\n TaskResult,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport { v4 as uuid } from \"uuid\";\nimport Cadenza from \"../../Cadenza\";\n\n/**\n * Represents a task responsible for transmitting signals to a remote service\n * through the meta-layer for operations delegation.\n *\n * @class\n * @extends Task\n */\nexport default class SignalTransmissionTask extends Task {\n readonly isDeputy: boolean = true;\n\n protected readonly signalName: string;\n protected readonly serviceName: string;\n\n /**\n * Constructs a new instance of the class and initializes it with the provided parameters.\n *\n * @param {string} name - The name of the task being created.\n * @param {string} signalName - The name of the signal associated with this task.\n * @param {string} serviceName - The name of the service associated with this task.\n * @param {string} [description=\"\"] - An optional description of the task.\n * @param {number} [concurrency=0] - The maximum allowed concurrency for this task.\n * @param {number} [timeout=0] - The maximum execution time for this task, in milliseconds.\n * @param {boolean} [register=true] - Whether the task should be registered upon creation.\n * @param {boolean} [isUnique=false] - Indicates if the task should enforce uniqueness.\n * @param {boolean} [isMeta=false] - Specifies if the task is a meta-task.\n * @param {boolean} [isSubMeta=false] - Specifies if the task is a sub-meta-task.\n * @param {boolean} [isHidden=false] - Indicates if the task is hidden from visibility.\n * @param {ThrottleTagGetter|undefined} [getTagCallback=undefined] - A callback for tag throttling logic.\n * @param {SchemaDefinition|undefined} [inputSchema=undefined] - An optional schema for validating input data.\n * @param {boolean} [validateInputContext=false] - Whether to validate the input context against the input schema.\n * @param {SchemaDefinition|undefined} [outputSchema=undefined] - An optional schema for validating output data.\n * @param {boolean} [validateOutputContext=false] - Whether to validate the output context against the output schema.\n * @param {number} [retryCount=0] - The number of retry attempts allowed in case of task failure.\n * @param {number} [retryDelay=0] - The initial delay before retrying a failed task, in milliseconds.\n * @param {number} [retryDelayMax=0] - The maximum delay between retry attempts, in milliseconds.\n * @param {number} [retryDelayFactor=1] - A multiplier applied to retry delay for exponential backoff.\n * @return {void} Does not return a value.\n */\n constructor(\n name: string,\n signalName: string,\n serviceName: string,\n description: string = \"\",\n concurrency: number = 0,\n timeout: number = 0,\n register: boolean = true,\n isUnique: boolean = false,\n isMeta: boolean = true,\n isSubMeta: boolean = false,\n isHidden: boolean = false,\n getTagCallback: ThrottleTagGetter | undefined = undefined,\n inputSchema: Schema | undefined = undefined,\n validateInputContext: boolean = false,\n outputSchema: Schema | undefined = undefined,\n validateOutputContext: boolean = false,\n retryCount: number = 0,\n retryDelay: number = 0,\n retryDelayMax: number = 0,\n retryDelayFactor: number = 1,\n ) {\n const taskFunction = (context: AnyObject): TaskResult => {\n context.__routineExecId = uuid();\n return context;\n };\n\n super(\n name,\n taskFunction,\n description,\n concurrency,\n timeout,\n register,\n isUnique,\n isMeta,\n isSubMeta,\n isHidden,\n getTagCallback,\n inputSchema,\n validateInputContext,\n outputSchema,\n validateOutputContext,\n retryCount,\n retryDelay,\n retryDelayMax,\n retryDelayFactor,\n );\n\n this.serviceName = serviceName;\n this.signalName = signalName;\n\n this.doOn(signalName);\n this.then(Cadenza.serviceRegistry.getBalancedInstance);\n }\n\n /**\n * Executes the given task function within the provided execution context.\n *\n * @param {GraphContext} context - The context object providing the graph execution environment and metadata.\n * @param {Function} emit - A function to emit signals with the provided name and context.\n * @param inquire\n * @param {Function} progressCallback - A callback function to report the progress of the task execution as a number between 0 and 1.\n * @return {TaskResult} The result of the executed task function.\n */\n execute(\n context: GraphContext,\n emit: (signal: string, ctx: AnyObject) => void,\n inquire: (\n inquiry: string,\n context: AnyObject,\n options: InquiryOptions,\n ) => Promise<AnyObject>,\n progressCallback: (progress: number) => void,\n ): TaskResult {\n const ctx = context.getContext();\n const metadata = context.getMetadata();\n\n const deputyContext = {\n __localTaskName: this.name,\n __localServiceName: Cadenza.serviceRegistry.serviceName,\n __serviceName: this.serviceName,\n __executionTraceId: metadata.__executionTraceId ?? null,\n __localRoutineExecId:\n metadata.__routineExecId ?? metadata.__metadata?.__routineExecId,\n __metadata: {\n ...metadata,\n __deputyTaskName: this.name,\n },\n __signalName: this.signalName,\n __signalEmissionId: metadata.__signalEmission?.uuid,\n ...ctx,\n };\n\n return this.taskFunction(deputyContext, emit, inquire, progressCallback);\n }\n}\n","import Cadenza from \"../Cadenza\";\nimport { META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT } from \"../utils/inquiry\";\nimport { ensureDelegationContextMetadata } from \"../utils/delegation\";\nimport type { AnyObject } from \"@cadenza.io/core\";\n\ntype TransportDetailLevel = \"summary\" | \"full\";\n\ninterface TransportDiagnosticErrorEntry {\n at: string;\n message: string;\n}\n\ninterface FetchClientDiagnosticsState {\n fetchId: string;\n serviceName: string;\n url: string;\n connected: boolean;\n destroyed: boolean;\n lastHandshakeAt: string | null;\n lastHandshakeError: string | null;\n lastError: string | null;\n lastErrorAt: number;\n errorHistory: TransportDiagnosticErrorEntry[];\n delegationRequests: number;\n delegationFailures: number;\n signalTransmissions: number;\n signalFailures: number;\n statusChecks: number;\n statusFailures: number;\n updatedAt: number;\n}\n\ninterface ParsedFetchResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n data: any;\n}\n\nconst FETCH_HANDSHAKE_TIMEOUT_MS = 5000;\n\nexport default class RestController {\n private static _instance: RestController;\n public static get instance(): RestController {\n if (!this._instance) this._instance = new RestController();\n return this._instance;\n }\n\n private fetchClientDiagnostics: Map<string, FetchClientDiagnosticsState> =\n new Map();\n private readonly diagnosticsErrorHistoryLimit = 100;\n private readonly diagnosticsMaxClientEntries = 500;\n private readonly destroyedDiagnosticsTtlMs = 15 * 60_000;\n\n private pruneFetchClientDiagnostics(now = Date.now()): void {\n for (const [fetchId, state] of this.fetchClientDiagnostics.entries()) {\n if (state.destroyed && now - state.updatedAt > this.destroyedDiagnosticsTtlMs) {\n this.fetchClientDiagnostics.delete(fetchId);\n }\n }\n\n if (this.fetchClientDiagnostics.size <= this.diagnosticsMaxClientEntries) {\n return;\n }\n\n const entriesByEvictionPriority = Array.from(\n this.fetchClientDiagnostics.entries(),\n ).sort((left, right) => {\n if (left[1].destroyed !== right[1].destroyed) {\n return left[1].destroyed ? -1 : 1;\n }\n\n return left[1].updatedAt - right[1].updatedAt;\n });\n\n while (\n this.fetchClientDiagnostics.size > this.diagnosticsMaxClientEntries &&\n entriesByEvictionPriority.length > 0\n ) {\n const [fetchId] = entriesByEvictionPriority.shift()!;\n this.fetchClientDiagnostics.delete(fetchId);\n }\n }\n\n private resolveTransportDiagnosticsOptions(ctx: AnyObject): {\n detailLevel: TransportDetailLevel;\n includeErrorHistory: boolean;\n errorHistoryLimit: number;\n } {\n const detailLevel: TransportDetailLevel =\n ctx.detailLevel === \"full\" ? \"full\" : \"summary\";\n const includeErrorHistory = Boolean(ctx.includeErrorHistory);\n const requestedLimit = Number(ctx.errorHistoryLimit);\n const errorHistoryLimit = Number.isFinite(requestedLimit)\n ? Math.max(1, Math.min(200, Math.trunc(requestedLimit)))\n : 10;\n\n return {\n detailLevel,\n includeErrorHistory,\n errorHistoryLimit,\n };\n }\n\n private ensureFetchClientDiagnostics(\n fetchId: string,\n serviceName: string,\n url: string,\n ): FetchClientDiagnosticsState {\n const now = Date.now();\n this.pruneFetchClientDiagnostics(now);\n\n let state = this.fetchClientDiagnostics.get(fetchId);\n if (!state) {\n state = {\n fetchId,\n serviceName,\n url,\n connected: false,\n destroyed: false,\n lastHandshakeAt: null,\n lastHandshakeError: null,\n lastError: null,\n lastErrorAt: 0,\n errorHistory: [],\n delegationRequests: 0,\n delegationFailures: 0,\n signalTransmissions: 0,\n signalFailures: 0,\n statusChecks: 0,\n statusFailures: 0,\n updatedAt: now,\n };\n this.fetchClientDiagnostics.set(fetchId, state);\n } else {\n state.serviceName = serviceName;\n state.url = url;\n }\n\n this.pruneFetchClientDiagnostics(now);\n return state;\n }\n\n private getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === \"string\") {\n return error;\n }\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n }\n\n private async parseFetchResponse(response: Response): Promise<ParsedFetchResponse> {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const rawText = await response.text();\n const headers = Object.fromEntries(response.headers.entries());\n\n if (rawText.length === 0) {\n return {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers,\n data: {},\n };\n }\n\n if (!contentType.toLowerCase().includes(\"application/json\")) {\n throw new Error(\n `Expected JSON response from ${response.url ?? \"remote service\"} but received ${contentType || \"unknown content type\"} (HTTP ${response.status}). Body preview: ${rawText.slice(0, 200)}`,\n );\n }\n\n try {\n return {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers,\n data: JSON.parse(rawText),\n };\n } catch (error) {\n throw new Error(\n `Failed to parse JSON response from ${response.url ?? \"remote service\"} (HTTP ${response.status}). Body preview: ${rawText.slice(0, 200)}. Parse error: ${this.getErrorMessage(error)}`,\n );\n }\n }\n\n private recordFetchClientError(\n fetchId: string,\n serviceName: string,\n url: string,\n error: unknown,\n ): void {\n const state = this.ensureFetchClientDiagnostics(fetchId, serviceName, url);\n const message = this.getErrorMessage(error);\n const now = Date.now();\n\n state.lastError = message;\n state.lastErrorAt = now;\n state.updatedAt = now;\n state.errorHistory.push({ at: new Date(now).toISOString(), message });\n\n if (state.errorHistory.length > this.diagnosticsErrorHistoryLimit) {\n state.errorHistory.splice(\n 0,\n state.errorHistory.length - this.diagnosticsErrorHistoryLimit,\n );\n }\n }\n\n private collectFetchTransportDiagnostics(ctx: AnyObject): AnyObject {\n this.pruneFetchClientDiagnostics();\n const { detailLevel, includeErrorHistory, errorHistoryLimit } =\n this.resolveTransportDiagnosticsOptions(ctx);\n const serviceName = Cadenza.serviceRegistry.serviceName ?? \"UnknownService\";\n const states = Array.from(this.fetchClientDiagnostics.values()).sort((a, b) =>\n a.fetchId.localeCompare(b.fetchId),\n );\n\n const summary = {\n detailLevel,\n totalClients: states.length,\n connectedClients: states.filter((state) => state.connected).length,\n destroyedClients: states.filter((state) => state.destroyed).length,\n delegationRequests: states.reduce(\n (acc, state) => acc + state.delegationRequests,\n 0,\n ),\n delegationFailures: states.reduce(\n (acc, state) => acc + state.delegationFailures,\n 0,\n ),\n signalTransmissions: states.reduce(\n (acc, state) => acc + state.signalTransmissions,\n 0,\n ),\n signalFailures: states.reduce((acc, state) => acc + state.signalFailures, 0),\n statusChecks: states.reduce((acc, state) => acc + state.statusChecks, 0),\n statusFailures: states.reduce((acc, state) => acc + state.statusFailures, 0),\n latestError:\n states\n .slice()\n .sort((a, b) => b.lastErrorAt - a.lastErrorAt)\n .find((state) => state.lastError)?.lastError ?? null,\n };\n\n if (detailLevel === \"summary\") {\n return {\n transportDiagnostics: {\n [serviceName]: {\n fetchClient: summary,\n },\n },\n };\n }\n\n return {\n transportDiagnostics: {\n [serviceName]: {\n fetchClient: {\n ...summary,\n clients: states.map((state) => {\n const details: AnyObject = {\n fetchId: state.fetchId,\n serviceName: state.serviceName,\n url: state.url,\n connected: state.connected,\n destroyed: state.destroyed,\n lastHandshakeAt: state.lastHandshakeAt,\n lastHandshakeError: state.lastHandshakeError,\n latestError: state.lastError,\n delegationRequests: state.delegationRequests,\n delegationFailures: state.delegationFailures,\n signalTransmissions: state.signalTransmissions,\n signalFailures: state.signalFailures,\n statusChecks: state.statusChecks,\n statusFailures: state.statusFailures,\n };\n\n if (includeErrorHistory) {\n details.errorHistory = state.errorHistory.slice(-errorHistoryLimit);\n }\n\n return details;\n }),\n },\n },\n },\n };\n }\n\n fetchDataWithTimeout = async (\n url: string,\n requestInit: RequestInit,\n timeoutMs: number,\n ): Promise<any> => {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"Browser REST controller requires global fetch.\");\n }\n\n const signal = AbortSignal.timeout(timeoutMs);\n const response = await globalThis.fetch(url, { ...requestInit, signal });\n const parsedResponse = await this.parseFetchResponse(response);\n return parsedResponse.data;\n };\n\n constructor() {\n Cadenza.createMetaTask(\n \"Collect fetch transport diagnostics\",\n (ctx) => this.collectFetchTransportDiagnostics(ctx),\n \"Responds to distributed transport diagnostics inquiries with REST/fetch client data.\",\n ).respondsTo(META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT);\n\n Cadenza.createMetaTask(\n \"Declare browser network\",\n (ctx, emit) => {\n emit(\"meta.service_registry.instance_registration_requested\", {\n ...ctx,\n data: {\n uuid: ctx.__serviceInstanceId,\n process_pid: 1,\n service_name: ctx.__serviceName,\n is_frontend: true,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n },\n __registrationData: {\n uuid: ctx.__serviceInstanceId,\n process_pid: 1,\n service_name: ctx.__serviceName,\n is_frontend: true,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n },\n __transportData: Array.isArray(ctx.__declaredTransports)\n ? ctx.__declaredTransports.map((transport: any) => ({\n uuid: transport.uuid,\n service_instance_id: ctx.__serviceInstanceId,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols ?? [\"rest\", \"socket\"],\n ...(transport.securityProfile\n ? { security_profile: transport.securityProfile }\n : {}),\n ...(transport.authStrategy\n ? { auth_strategy: transport.authStrategy }\n : {}),\n }))\n : [],\n });\n\n return true;\n },\n \"Declares frontend runtime network metadata without creating a server.\",\n ).doOn(\"meta.service_registry.service_inserted\");\n\n Cadenza.createMetaTask(\n \"Setup fetch client\",\n (ctx) => {\n const serviceName = String(ctx.serviceName ?? \"\");\n const URL = String(ctx.serviceOrigin ?? \"\");\n const fetchId = String(ctx.serviceTransportId ?? \"\");\n if (!serviceName || !URL || !fetchId) {\n return false;\n }\n const clientTaskSuffix = `${URL} (${fetchId})`;\n const fetchDiagnostics = this.ensureFetchClientDiagnostics(\n fetchId,\n serviceName,\n URL,\n );\n fetchDiagnostics.destroyed = false;\n fetchDiagnostics.updatedAt = Date.now();\n\n if (Cadenza.get(`Send Handshake to ${clientTaskSuffix}`)) {\n return;\n }\n\n const handshakeTask = Cadenza.createMetaTask(\n `Send Handshake to ${clientTaskSuffix}`,\n async (handshakeCtx, emit) => {\n try {\n const response = await this.fetchDataWithTimeout(\n `${URL}/handshake`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify(handshakeCtx.handshakeData),\n },\n FETCH_HANDSHAKE_TIMEOUT_MS,\n );\n if (response.__status !== \"success\") {\n const error =\n response.__error ??\n `Failed to connect to service ${serviceName} ${handshakeCtx.serviceInstanceId}`;\n fetchDiagnostics.connected = false;\n fetchDiagnostics.lastHandshakeError = error;\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n emit(`meta.fetch.handshake_failed:${fetchId}`, response);\n return { ...handshakeCtx, __error: error, errored: true };\n }\n\n handshakeCtx.serviceInstanceId = response.__serviceInstanceId;\n fetchDiagnostics.connected = true;\n fetchDiagnostics.destroyed = false;\n fetchDiagnostics.lastHandshakeAt = new Date().toISOString();\n fetchDiagnostics.lastHandshakeError = null;\n fetchDiagnostics.updatedAt = Date.now();\n\n for (const communicationType of handshakeCtx.communicationTypes) {\n emit(\"global.meta.fetch.service_communication_established\", {\n data: {\n serviceInstanceId: handshakeCtx.serviceInstanceId,\n serviceInstanceClientId:\n Cadenza.serviceRegistry.serviceInstanceId,\n communicationType,\n },\n });\n }\n } catch (error) {\n fetchDiagnostics.connected = false;\n fetchDiagnostics.lastHandshakeError = this.getErrorMessage(error);\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n return { ...handshakeCtx, __error: error, errored: true };\n }\n\n return handshakeCtx;\n },\n \"Sends handshake request\",\n { retryCount: 5, retryDelay: 1000, retryDelayFactor: 1.5 },\n )\n .doOn(`meta.fetch.handshake_requested:${fetchId}`)\n .emits(\"meta.fetch.handshake_complete\")\n .attachSignal(\n \"meta.fetch.handshake_failed\",\n \"global.meta.fetch.service_communication_established\",\n );\n\n const delegateTask = Cadenza.createMetaTask(\n `Delegate flow to REST server ${clientTaskSuffix}`,\n async (delegateCtx, emit) => {\n if (delegateCtx.__remoteRoutineName === undefined) {\n return;\n }\n\n const normalizedDelegateCtx =\n ensureDelegationContextMetadata(delegateCtx);\n const deputyExecId =\n normalizedDelegateCtx.__metadata.__deputyExecId;\n\n fetchDiagnostics.delegationRequests++;\n fetchDiagnostics.updatedAt = Date.now();\n\n let resultContext;\n try {\n resultContext = await this.fetchDataWithTimeout(\n `${URL}/delegation`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify(normalizedDelegateCtx),\n },\n 30_000,\n );\n } catch (error) {\n fetchDiagnostics.delegationFailures++;\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n resultContext = {\n __error: `Error: ${error}`,\n errored: true,\n ...normalizedDelegateCtx,\n ...normalizedDelegateCtx.__metadata,\n };\n } finally {\n emit(`meta.fetch.delegated:${deputyExecId}`, resultContext);\n }\n\n return resultContext;\n },\n \"Sends delegation request\",\n )\n .doOn(\n `meta.service_registry.selected_instance_for_fetch:${fetchId}`,\n `meta.service_registry.socket_failed:${fetchId}`,\n )\n .emitsOnFail(\"meta.fetch.delegate_failed\")\n .attachSignal(\"meta.fetch.delegated\");\n\n const transmitTask = Cadenza.createMetaTask(\n `Transmit signal to server ${clientTaskSuffix}`,\n async (signalCtx, emit) => {\n if (signalCtx.__signalName === undefined) {\n return;\n }\n\n fetchDiagnostics.signalTransmissions++;\n fetchDiagnostics.updatedAt = Date.now();\n\n let response;\n try {\n response = await this.fetchDataWithTimeout(\n `${URL}/signal`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify(signalCtx),\n },\n 1000,\n );\n\n if (signalCtx.__routineExecId) {\n emit(`meta.fetch.transmitted:${signalCtx.__routineExecId}`, response);\n }\n } catch (error) {\n fetchDiagnostics.signalFailures++;\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n response = {\n __error: `Error: ${error}`,\n errored: true,\n ...signalCtx,\n };\n }\n\n return response;\n },\n \"Sends signal request\",\n )\n .doOn(`meta.service_registry.selected_instance_for_fetch:${fetchId}`)\n .emitsOnFail(\"meta.fetch.signal_transmission_failed\")\n .attachSignal(\"meta.fetch.transmitted\");\n\n const statusTask = Cadenza.createMetaTask(\n `Request status from ${clientTaskSuffix}`,\n async (statusCtx) => {\n fetchDiagnostics.statusChecks++;\n fetchDiagnostics.updatedAt = Date.now();\n\n try {\n return await this.fetchDataWithTimeout(\n `${URL}/status`,\n {\n method: \"GET\",\n },\n 1000,\n );\n } catch (error) {\n fetchDiagnostics.statusFailures++;\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n return {\n __error: `Error: ${error}`,\n errored: true,\n ...statusCtx,\n };\n }\n },\n \"Requests status\",\n )\n .doOn(\"meta.fetch.status_check_requested\")\n .emits(\"meta.fetch.status_checked\")\n .emitsOnFail(\"meta.fetch.status_check_failed\");\n\n Cadenza.createEphemeralMetaTask(`Destroy fetch client ${fetchId}`, () => {\n fetchDiagnostics.connected = false;\n fetchDiagnostics.destroyed = true;\n fetchDiagnostics.updatedAt = Date.now();\n handshakeTask.destroy();\n delegateTask.destroy();\n transmitTask.destroy();\n statusTask.destroy();\n })\n .doOn(\n `meta.fetch.destroy_requested:${fetchId}`,\n `meta.socket_client.disconnected:${fetchId}`,\n `meta.fetch.handshake_failed:${fetchId}`,\n )\n .emits(\"meta.fetch.destroyed\");\n\n return true;\n },\n \"Manages REST client requests as fallback\",\n )\n .then(\n Cadenza.createMetaTask(\n \"Prepare handshake\",\n (ctx, emit) => {\n const {\n serviceName,\n serviceInstanceId,\n communicationTypes,\n serviceTransportId,\n serviceOrigin,\n transportProtocols,\n } = ctx;\n\n const fetchId = String(serviceTransportId ?? \"\");\n\n emit(`meta.fetch.handshake_requested:${fetchId}`, {\n serviceInstanceId,\n serviceName,\n communicationTypes,\n serviceTransportId,\n serviceOrigin,\n transportProtocols,\n handshakeData: {\n instanceId: Cadenza.serviceRegistry.serviceInstanceId,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n });\n },\n \"Prepares handshake\",\n ).attachSignal(\"meta.fetch.handshake_requested\"),\n )\n .doOn(\"meta.service_registry.dependee_registered\")\n .emitsOnFail(\"meta.fetch.connect_failed\");\n }\n}\n","import Cadenza from \"../Cadenza\";\nimport { IRateLimiterOptions, RateLimiterMemory } from \"rate-limiter-flexible\";\nimport type { AnyObject, Task } from \"@cadenza.io/core\";\nimport { io, Socket } from \"socket.io-client\";\nimport { isBrowser } from \"../utils/environment\";\nimport { waitForSocketConnection } from \"./socketClientUtils\";\nimport { META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT } from \"../utils/inquiry\";\nimport { ensureDelegationContextMetadata } from \"../utils/delegation\";\nimport { parseTransportOrigin } from \"../utils/transport\";\n\nconst dynamicImport = new Function(\n \"specifier\",\n \"return import(specifier);\",\n) as <T>(specifier: string) => Promise<T>;\n\nasync function importNodeModule<T>(specifier: string): Promise<T> {\n return dynamicImport(specifier);\n}\n\ntype TransportDetailLevel = \"summary\" | \"full\";\n\ninterface TransportDiagnosticErrorEntry {\n at: string;\n message: string;\n}\n\ninterface SocketClientDiagnosticsState {\n fetchId: string;\n serviceName: string;\n url: string;\n socketId: string | null;\n connected: boolean;\n handshake: boolean;\n reconnectAttempts: number;\n connectErrors: number;\n reconnectErrors: number;\n socketErrors: number;\n pendingDelegations: number;\n pendingTimers: number;\n destroyed: boolean;\n lastHandshakeAt: string | null;\n lastHandshakeError: string | null;\n lastDisconnectAt: string | null;\n lastError: string | null;\n lastErrorAt: number;\n errorHistory: TransportDiagnosticErrorEntry[];\n updatedAt: number;\n}\n\ntype SocketClientSessionOperation =\n | \"connect\"\n | \"handshake\"\n | \"delegate\"\n | \"transmit\"\n | \"shutdown\";\n\ninterface SocketClientSessionState {\n fetchId: string;\n serviceInstanceId: string;\n communicationTypes: string[];\n serviceName: string;\n serviceTransportId: string;\n serviceOrigin: string;\n transportProtocols: string[];\n url: string;\n socketId: string | null;\n connected: boolean;\n handshake: boolean;\n pendingDelegations: number;\n pendingTimers: number;\n reconnectAttempts: number;\n connectErrors: number;\n reconnectErrors: number;\n socketErrors: number;\n errorCount: number;\n destroyed: boolean;\n lastHandshakeAt: string | null;\n lastHandshakeError: string | null;\n lastDisconnectAt: string | null;\n updatedAt: number;\n}\n\ntype SocketEmitWhenReady = <T>(\n event: string,\n data: AnyObject,\n timeoutMs: number,\n ack?: (response: T) => void,\n) => Promise<T>;\n\nfunction isSocketAckCallback<T = AnyObject>(\n value: unknown,\n): value is (context: T) => void {\n return typeof value === \"function\";\n}\n\ninterface SocketClientRuntimeHandle {\n url: string;\n socket: Socket;\n initialized: boolean;\n handshake: boolean;\n errorCount: number;\n pendingDelegationIds: Set<string>;\n pendingTimers: Set<NodeJS.Timeout>;\n emitWhenReady: SocketEmitWhenReady | null;\n handshakeTask: Task | null;\n delegateTask: Task | null;\n transmitTask: Task | null;\n}\n\ninterface SocketServerSessionState {\n serverKey: string;\n useSocket: boolean;\n status: \"inactive\" | \"active\" | \"shutdown\";\n securityProfile: string;\n networkType: string;\n connectionCount: number;\n lastStartedAt: string | null;\n lastConnectedAt: string | null;\n lastDisconnectedAt: string | null;\n lastShutdownAt: string | null;\n updatedAt: number;\n}\n\ninterface SocketServerRuntimeHandle {\n server: any;\n initialized: boolean;\n connectedSocketIds: Set<string>;\n broadcastStatusTask: Task | null;\n shutdownTask: Task | null;\n}\n\n/**\n * Socket transport orchestration in the Cadenza primitive ecosystem.\n *\n * - setup is signal-triggered\n * - state/runtime ownership is actor-backed\n * - dynamic runtime tasks are still allowed for advanced orchestration (ephemeral resolvers etc.)\n */\nexport default class SocketController {\n private static _instance: SocketController;\n public static get instance(): SocketController {\n if (!this._instance) this._instance = new SocketController();\n return this._instance;\n }\n\n private readonly diagnosticsErrorHistoryLimit = 100;\n private readonly diagnosticsMaxClientEntries = 500;\n private readonly destroyedDiagnosticsTtlMs = 15 * 60_000;\n private readonly socketServerDefaultKey = \"socket-server-default\";\n private readonly socketServerInitialSessionState: SocketServerSessionState = {\n serverKey: this.socketServerDefaultKey,\n useSocket: false,\n status: \"inactive\",\n securityProfile: \"medium\",\n networkType: \"internal\",\n connectionCount: 0,\n lastStartedAt: null,\n lastConnectedAt: null,\n lastDisconnectedAt: null,\n lastShutdownAt: null,\n updatedAt: 0,\n };\n private readonly socketClientInitialSessionState: SocketClientSessionState = {\n fetchId: \"\",\n serviceInstanceId: \"\",\n communicationTypes: [],\n serviceName: \"\",\n serviceTransportId: \"\",\n serviceOrigin: \"\",\n transportProtocols: [],\n url: \"\",\n socketId: null,\n connected: false,\n handshake: false,\n pendingDelegations: 0,\n pendingTimers: 0,\n reconnectAttempts: 0,\n connectErrors: 0,\n reconnectErrors: 0,\n socketErrors: 0,\n errorCount: 0,\n destroyed: false,\n lastHandshakeAt: null,\n lastHandshakeError: null,\n lastDisconnectAt: null,\n updatedAt: 0,\n };\n\n private readonly socketServerActor = Cadenza.createActor<\n SocketServerSessionState,\n SocketServerRuntimeHandle | null\n >(\n {\n name: \"SocketServerActor\",\n description:\n \"Holds durable socket server session state and runtime socket server handle\",\n defaultKey: this.socketServerDefaultKey,\n keyResolver: (input) => this.resolveSocketServerKey(input),\n loadPolicy: \"lazy\",\n writeContract: \"overwrite\",\n initState: this.socketServerInitialSessionState,\n },\n { isMeta: true },\n );\n\n private readonly socketClientActor = Cadenza.createActor<\n SocketClientSessionState,\n SocketClientRuntimeHandle | null\n >(\n {\n name: \"SocketClientActor\",\n description:\n \"Holds durable socket client session state and runtime socket connection handles\",\n defaultKey: \"socket-client-default\",\n keyResolver: (input) => this.resolveSocketClientFetchId(input),\n loadPolicy: \"lazy\",\n writeContract: \"overwrite\",\n initState: this.socketClientInitialSessionState,\n },\n { isMeta: true },\n );\n\n private readonly socketClientDiagnosticsActor = Cadenza.createActor<{\n entries: Record<string, SocketClientDiagnosticsState>;\n }>(\n {\n name: \"SocketClientDiagnosticsActor\",\n description:\n \"Tracks socket client diagnostics snapshots per fetchId for transport observability\",\n defaultKey: \"socket-client-diagnostics\",\n loadPolicy: \"eager\",\n writeContract: \"overwrite\",\n initState: {\n entries: {},\n },\n },\n { isMeta: true },\n );\n\n constructor() {\n Cadenza.registry.getTaskByName.doOn(\"meta.socket.delegation_requested\");\n Cadenza.registry.getRoutineByName.doOn(\"meta.socket.delegation_requested\");\n Cadenza.createMetaTask(\n \"Forward socket delegations to runner\",\n (context, emit: any) => {\n if (!isBrowser && !Cadenza.serviceRegistry.isFrontend) {\n return false;\n }\n\n if (context.task || context.routine) {\n const routine = context.task ?? context.routine;\n delete context.task;\n delete context.routine;\n context.__routineExecId = context.__metadata?.__deputyExecId ?? null;\n context.__isDeputy = true;\n Cadenza.runner.run(routine, context);\n return true;\n }\n\n const deputyExecId =\n context.__metadata?.__deputyExecId ?? context.__deputyExecId;\n const remoteRoutineName =\n context.__remoteRoutineName ?? context.__name ?? \"unknown\";\n context.errored = true;\n context.__error = `No task or routine registered for delegation target ${remoteRoutineName}.`;\n if (deputyExecId) {\n emit(`meta.socket.delegation_target_not_found:${deputyExecId}`, context);\n }\n emit(\"meta.runner.failed\", context);\n return false;\n },\n \"Forwards socket delegated lookups to the local runner in frontend runtimes.\",\n )\n .attachSignal(\"meta.runner.failed\")\n .doAfter(Cadenza.registry.getTaskByName, Cadenza.registry.getRoutineByName);\n\n this.registerDiagnosticsTasks();\n this.registerSocketServerTasks();\n this.registerSocketClientTasks();\n\n Cadenza.createMetaTask(\n \"Collect socket transport diagnostics\",\n this.socketClientDiagnosticsActor.task(\n ({ state, input }) =>\n this.collectSocketTransportDiagnostics(input, state.entries),\n { mode: \"read\" },\n ),\n \"Responds to distributed transport diagnostics inquiries with socket client data.\",\n ).respondsTo(META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT);\n }\n\n private registerDiagnosticsTasks(): void {\n Cadenza.createThrottledMetaTask(\n \"SocketClientDiagnosticsActor.Upsert\",\n this.socketClientDiagnosticsActor.task(\n ({ state, input, setState }) => {\n const fetchId = String(input.fetchId ?? \"\").trim();\n if (!fetchId) {\n return;\n }\n\n const now = Date.now();\n const entries = { ...state.entries };\n const existing = entries[fetchId];\n\n const base: SocketClientDiagnosticsState = existing\n ? {\n ...existing,\n errorHistory: [...existing.errorHistory],\n }\n : {\n fetchId,\n serviceName: String(input.serviceName ?? \"\"),\n url: String(input.url ?? \"\"),\n socketId: null,\n connected: false,\n handshake: false,\n reconnectAttempts: 0,\n connectErrors: 0,\n reconnectErrors: 0,\n socketErrors: 0,\n pendingDelegations: 0,\n pendingTimers: 0,\n destroyed: false,\n lastHandshakeAt: null,\n lastHandshakeError: null,\n lastDisconnectAt: null,\n lastError: null,\n lastErrorAt: 0,\n errorHistory: [],\n updatedAt: now,\n };\n\n if (input.serviceName !== undefined) {\n base.serviceName = String(input.serviceName);\n }\n if (input.url !== undefined) {\n base.url = String(input.url);\n }\n\n const patch =\n input.patch && typeof input.patch === \"object\"\n ? (input.patch as Partial<SocketClientDiagnosticsState>)\n : {};\n\n Object.assign(base, patch);\n base.fetchId = fetchId;\n base.updatedAt = now;\n\n const errorMessage =\n input.error !== undefined ? this.getErrorMessage(input.error) : undefined;\n if (errorMessage) {\n base.lastError = errorMessage;\n base.lastErrorAt = now;\n base.errorHistory.push({\n at: new Date(now).toISOString(),\n message: errorMessage,\n });\n if (base.errorHistory.length > this.diagnosticsErrorHistoryLimit) {\n base.errorHistory.splice(\n 0,\n base.errorHistory.length - this.diagnosticsErrorHistoryLimit,\n );\n }\n }\n\n entries[fetchId] = base;\n\n this.pruneDiagnosticsEntries(entries, now);\n\n setState({ entries });\n },\n { mode: \"write\" },\n ),\n (context) => String(context?.fetchId ?? \"default\"),\n \"Upserts socket client diagnostics in actor state.\",\n ).doOn(\"meta.socket_client.diagnostics_upsert_requested\");\n }\n\n private registerSocketServerTasks(): void {\n Cadenza.createThrottledMetaTask(\n \"SocketServerActor.PatchSession\",\n this.socketServerActor.task(\n ({ state, input, setState }) => {\n const patch =\n input.patch && typeof input.patch === \"object\"\n ? (input.patch as Partial<SocketServerSessionState>)\n : {};\n setState({\n ...state,\n ...patch,\n updatedAt: Date.now(),\n });\n },\n { mode: \"write\" },\n ),\n (context) => String(context?.serverKey ?? this.socketServerDefaultKey),\n \"Applies partial durable session updates for socket server actor.\",\n ).doOn(\"meta.socket_server.session_patch_requested\");\n\n Cadenza.createMetaTask(\n \"SocketServerActor.ClearRuntime\",\n this.socketServerActor.task(\n ({ setRuntimeState }) => {\n setRuntimeState(null);\n },\n { mode: \"write\" },\n ),\n \"Clears socket server runtime handle after shutdown.\",\n ).doOn(\"meta.socket_server.runtime_clear_requested\");\n\n const setupSocketServerTask = Cadenza.createMetaTask(\n \"Setup SocketServer\",\n this.socketServerActor.task(\n async ({ state, runtimeState, input, actor, setState, setRuntimeState, emit }) => {\n const serverKey =\n this.resolveSocketServerKey(input) ?? actor.key ?? this.socketServerDefaultKey;\n const shouldUseSocket = Boolean(input.__useSocket);\n\n if (!shouldUseSocket) {\n this.destroySocketServerRuntimeHandle(runtimeState);\n setRuntimeState(null);\n setState({\n ...state,\n serverKey,\n useSocket: false,\n status: \"inactive\",\n connectionCount: 0,\n lastShutdownAt: new Date().toISOString(),\n updatedAt: Date.now(),\n });\n return;\n }\n\n let runtimeHandle = runtimeState;\n if (!runtimeHandle) {\n runtimeHandle = await this.createSocketServerRuntimeHandleFromContext(\n input,\n );\n setRuntimeState(runtimeHandle);\n }\n\n const profile = String(input.__securityProfile ?? state.securityProfile ?? \"medium\");\n const networkType = String(input.__networkType ?? state.networkType ?? \"internal\");\n\n const schedulePatch = (patch: Partial<SocketServerSessionState>) => {\n Cadenza.emit(\"meta.socket_server.session_patch_requested\", {\n serverKey,\n patch,\n });\n };\n\n if (runtimeHandle.initialized) {\n schedulePatch({\n status: \"active\",\n useSocket: true,\n securityProfile: profile,\n networkType,\n connectionCount: runtimeHandle.connectedSocketIds.size,\n lastStartedAt: state.lastStartedAt ?? new Date().toISOString(),\n });\n return;\n }\n\n const server = runtimeHandle.server;\n runtimeHandle.initialized = true;\n\n setState({\n ...state,\n serverKey,\n useSocket: true,\n status: \"active\",\n securityProfile: profile,\n networkType,\n connectionCount: runtimeHandle.connectedSocketIds.size,\n lastStartedAt: state.lastStartedAt ?? new Date().toISOString(),\n updatedAt: Date.now(),\n });\n\n server.use((socket: any, next: any) => {\n const origin = socket?.handshake?.headers?.origin;\n const allowedOrigins = [\"*\"];\n let effectiveOrigin = origin || \"unknown\";\n if (networkType === \"internal\") effectiveOrigin = \"internal\";\n\n if (\n profile !== \"low\" &&\n !allowedOrigins.includes(effectiveOrigin) &&\n !allowedOrigins.includes(\"*\")\n ) {\n return next(new Error(\"Unauthorized origin\"));\n }\n\n const limiterOptions: { [key: string]: IRateLimiterOptions } = {\n low: { points: Infinity, duration: 1 },\n medium: { points: 10000, duration: 10 },\n high: { points: 1000, duration: 60, blockDuration: 300 },\n };\n\n const limiter = new RateLimiterMemory(\n limiterOptions[profile] ?? limiterOptions.medium,\n );\n const clientKey = socket?.handshake?.address || \"unknown\";\n\n socket.use((packet: any, packetNext: any) => {\n limiter\n .consume(clientKey)\n .then(() => packetNext())\n .catch((rej) => {\n if (rej.msBeforeNext > 0) {\n Cadenza.log(\n \"SocketServer: Rate limit exceeded\",\n {\n retryAfter: rej.msBeforeNext / 1000,\n clientKey,\n socketId: socket.id,\n },\n \"warning\",\n );\n socket.emit(\"error\", {\n message: \"Rate limit exceeded\",\n retryAfter: rej.msBeforeNext / 1000,\n });\n packetNext(new Error(\"Rate limit exceeded\"));\n } else {\n Cadenza.log(\n \"SocketServer: Rate limit exceeded, blocked\",\n {\n clientKey,\n socketId: socket.id,\n },\n \"critical\",\n );\n socket.disconnect(true);\n packetNext(new Error(\"Blocked\"));\n }\n });\n });\n\n next();\n });\n\n server.on(\"connection\", (ws: any) => {\n runtimeHandle.connectedSocketIds.add(ws.id);\n schedulePatch({\n connectionCount: runtimeHandle.connectedSocketIds.size,\n lastConnectedAt: new Date().toISOString(),\n status: \"active\",\n });\n\n try {\n ws.on(\"handshake\", (ctx: AnyObject, callback: (result: AnyObject) => void) => {\n Cadenza.log(\"SocketServer: New connection\", {\n ...ctx,\n socketId: ws.id,\n });\n\n callback({\n status: \"success\",\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n\n if (ctx.isFrontend) {\n const fetchId = `browser:${ctx.serviceInstanceId}`;\n const frontendDelegateTaskName = `Delegate flow to frontend ${fetchId}`;\n const frontendTransmitTaskName = `Transmit signal to ${fetchId}`;\n\n Cadenza.get(frontendDelegateTaskName)?.destroy();\n Cadenza.get(frontendTransmitTaskName)?.destroy();\n\n Cadenza.createMetaTask(\n frontendDelegateTaskName,\n async (delegateCtx, emitter) => {\n if (delegateCtx.__remoteRoutineName === undefined) {\n return;\n }\n\n const normalizedDelegateCtx =\n ensureDelegationContextMetadata(delegateCtx);\n delete normalizedDelegateCtx.__isSubMeta;\n delete normalizedDelegateCtx.__broadcast;\n\n const deputyExecId =\n normalizedDelegateCtx.__metadata?.__deputyExecId;\n\n const resultContext = await new Promise<AnyObject>((resolve) => {\n ws.timeout(normalizedDelegateCtx.__timeout ?? 60_000).emit(\n \"delegation\",\n normalizedDelegateCtx,\n (err: AnyObject, response: AnyObject) => {\n if (err) {\n resolve({\n ...normalizedDelegateCtx,\n errored: true,\n __error: `Frontend delegation timed out: ${err.message ?? err}`,\n });\n return;\n }\n\n resolve(\n response ?? {\n errored: true,\n __error: \"Frontend delegation returned no response\",\n },\n );\n },\n );\n });\n\n if (deputyExecId) {\n const metadata = resultContext.__metadata;\n delete resultContext.__metadata;\n\n emitter(`meta.socket_client.delegated:${deputyExecId}`, {\n ...resultContext,\n ...(metadata && typeof metadata === \"object\"\n ? metadata\n : {}),\n });\n }\n\n return resultContext;\n },\n \"Delegates work to a connected frontend runtime through its active websocket.\",\n )\n .doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`)\n .attachSignal(\"meta.socket_client.delegated\");\n\n Cadenza.createMetaTask(\n frontendTransmitTaskName,\n (c, emitter) => {\n if (c.__signalName === undefined) {\n return;\n }\n\n ws.emit(\"signal\", c);\n\n if (c.__routineExecId) {\n emitter(`meta.socket_client.transmitted:${c.__routineExecId}`, {});\n }\n },\n \"Transmit frontend bound signal through active websocket.\",\n )\n .doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`)\n .attachSignal(\"meta.socket_client.transmitted\");\n }\n\n Cadenza.emit(\"meta.socket.handshake\", ctx);\n });\n\n ws.on(\"delegation\", (ctx: AnyObject, callback: (context: AnyObject) => void) => {\n const delegationCtx = ensureDelegationContextMetadata(ctx);\n const deputyExecId = delegationCtx.__metadata.__deputyExecId;\n\n Cadenza.createEphemeralMetaTask(\n \"Resolve delegation\",\n (delegationCtx: AnyObject) => {\n callback(delegationCtx);\n },\n \"Resolves a delegation request using client callback.\",\n { register: false },\n )\n .doOn(`meta.node.graph_completed:${deputyExecId}`)\n .emits(`meta.socket.delegation_resolved:${deputyExecId}`);\n\n Cadenza.createEphemeralMetaTask(\n \"Delegation progress update\",\n (progressCtx) => {\n if (progressCtx.__progress !== undefined) {\n ws.emit(\"delegation_progress\", progressCtx);\n }\n },\n \"Updates delegation progress to client.\",\n {\n once: false,\n destroyCondition: (progressCtx: AnyObject) =>\n progressCtx.data.progress === 1.0 ||\n progressCtx.data?.progress === undefined,\n register: false,\n },\n )\n .doOn(\n `meta.node.routine_execution_progress:${deputyExecId}`,\n `meta.node.graph_completed:${deputyExecId}`,\n )\n .emitsOnFail(`meta.socket.progress_failed:${deputyExecId}`);\n\n Cadenza.emit(\"meta.socket.delegation_requested\", {\n ...delegationCtx,\n __name: delegationCtx.__remoteRoutineName,\n });\n });\n\n ws.on(\"signal\", (ctx: AnyObject, callback: unknown) => {\n if (Cadenza.signalBroker.listObservedSignals().includes(ctx.__signalName)) {\n if (isSocketAckCallback(callback)) {\n callback({\n __status: \"success\",\n __signalName: ctx.__signalName,\n });\n }\n\n Cadenza.emit(ctx.__signalName, ctx);\n } else {\n Cadenza.log(\n `No such signal ${ctx.__signalName} on ${ctx.__serviceName}`,\n \"warning\",\n );\n if (isSocketAckCallback(callback)) {\n callback({\n ...ctx,\n __status: \"error\",\n __error: `No such signal: ${ctx.__signalName}`,\n errored: true,\n });\n }\n }\n });\n\n ws.on(\n \"status_check\",\n (ctx: AnyObject, callback: (context: AnyObject) => void) => {\n callback(Cadenza.serviceRegistry.resolveLocalStatusCheck(ctx));\n },\n );\n\n ws.on(\"disconnect\", () => {\n runtimeHandle.connectedSocketIds.delete(ws.id);\n schedulePatch({\n connectionCount: runtimeHandle.connectedSocketIds.size,\n lastDisconnectedAt: new Date().toISOString(),\n });\n Cadenza.log(\n \"Socket client disconnected\",\n { socketId: ws.id },\n \"warning\",\n );\n Cadenza.emit(\"meta.socket.disconnected\", {\n __wsId: ws.id,\n });\n });\n } catch (error) {\n Cadenza.log(\n \"SocketServer: Error in socket event\",\n { error },\n \"error\",\n );\n }\n\n Cadenza.emit(\"meta.socket.connected\", { __wsId: ws.id });\n });\n\n runtimeHandle.broadcastStatusTask = Cadenza.createMetaTask(\n `Broadcast status ${serverKey}`,\n (ctx) => server.emit(\"status_update\", ctx),\n \"Broadcasts the status of the server to all clients\",\n ).doOn(\"meta.service.updated\");\n\n runtimeHandle.shutdownTask = Cadenza.createMetaTask(\n `Shutdown SocketServer ${serverKey}`,\n async () => {\n this.destroySocketServerRuntimeHandle(runtimeHandle);\n\n Cadenza.emit(\"meta.socket_server.runtime_clear_requested\", {\n serverKey,\n });\n Cadenza.emit(\"meta.socket_server.session_patch_requested\", {\n serverKey,\n patch: {\n useSocket: false,\n status: \"shutdown\",\n connectionCount: 0,\n lastShutdownAt: new Date().toISOString(),\n },\n });\n },\n \"Shuts down the socket server\",\n )\n .doOn(\"meta.socket_server_shutdown_requested\")\n .emits(\"meta.socket.shutdown\");\n\n return true;\n },\n { mode: \"write\" },\n ),\n \"Initializes socket server runtime through actor state.\",\n );\n\n setupSocketServerTask.doOn(\"global.meta.rest.network_configured\");\n }\n\n private registerSocketClientTasks(): void {\n Cadenza.createThrottledMetaTask(\n \"SocketClientActor.ApplySessionOperation\",\n this.socketClientActor.task(\n ({ state, input, setState }) => {\n const operation = String(\n input.operation ?? \"transmit\",\n ) as SocketClientSessionOperation;\n const patch =\n input.patch && typeof input.patch === \"object\"\n ? (input.patch as Partial<SocketClientSessionState>)\n : {};\n\n let next: SocketClientSessionState = {\n ...state,\n ...patch,\n communicationTypes:\n patch.communicationTypes !== undefined\n ? this.normalizeCommunicationTypes(patch.communicationTypes)\n : state.communicationTypes,\n updatedAt: Date.now(),\n };\n\n if (input.serviceName !== undefined) {\n next.serviceName = String(input.serviceName);\n }\n if (input.serviceTransportId !== undefined) {\n next.serviceTransportId = String(input.serviceTransportId);\n }\n if (input.serviceInstanceId !== undefined) {\n next.serviceInstanceId = String(input.serviceInstanceId);\n }\n if (input.serviceOrigin !== undefined) {\n next.serviceOrigin = String(input.serviceOrigin);\n }\n if (input.transportProtocols !== undefined) {\n next.transportProtocols = Array.isArray(input.transportProtocols)\n ? input.transportProtocols.map((entry: unknown) => String(entry))\n : [];\n }\n if (input.url !== undefined) {\n next.url = String(input.url);\n }\n if (input.fetchId !== undefined) {\n next.fetchId = String(input.fetchId);\n }\n\n if (operation === \"connect\") {\n next.destroyed = false;\n } else if (operation === \"handshake\") {\n next.destroyed = false;\n next.connected = patch.connected ?? true;\n next.handshake = patch.handshake ?? true;\n } else if (operation === \"shutdown\") {\n next.connected = false;\n next.handshake = false;\n next.destroyed = true;\n next.pendingDelegations = 0;\n next.pendingTimers = 0;\n }\n\n setState(next);\n return next;\n },\n { mode: \"write\" },\n ),\n (context) =>\n String(this.resolveSocketClientFetchId(context ?? {}) ?? \"default\"),\n \"Applies socket client session operation patch in actor durable state.\",\n ).doOn(\"meta.socket_client.session_operation_requested\");\n\n Cadenza.createMetaTask(\n \"SocketClientActor.ClearRuntime\",\n this.socketClientActor.task(\n ({ setRuntimeState }) => {\n setRuntimeState(null);\n },\n { mode: \"write\" },\n ),\n \"Clears socket client runtime handle.\",\n ).doOn(\"meta.socket_client.runtime_clear_requested\");\n\n Cadenza.createMetaTask(\n \"Connect to socket server\",\n this.socketClientActor.task(\n ({ state, runtimeState, input, setState, setRuntimeState, emit }) => {\n const serviceInstanceId = String(input.serviceInstanceId ?? \"\");\n const communicationTypes = this.normalizeCommunicationTypes(\n input.communicationTypes,\n );\n const transportProtocols = Array.isArray(input.transportProtocols)\n ? input.transportProtocols.map((entry: unknown) => String(entry))\n : [];\n const serviceName = String(input.serviceName ?? \"\");\n const serviceTransportId = String(input.serviceTransportId ?? \"\");\n const serviceOrigin = String(input.serviceOrigin ?? \"\");\n const parsedOrigin = parseTransportOrigin(serviceOrigin);\n\n if (!transportProtocols.includes(\"socket\")) {\n return false;\n }\n\n if (!serviceTransportId || !serviceOrigin || !parsedOrigin) {\n Cadenza.log(\n \"Socket client setup skipped due to missing transport origin\",\n {\n serviceName,\n serviceTransportId,\n serviceOrigin,\n },\n \"warning\",\n );\n return false;\n }\n\n const socketProtocol =\n parsedOrigin.protocol === \"https\" ? \"wss\" : \"ws\";\n const url = `${socketProtocol}://${parsedOrigin.hostname}:${parsedOrigin.port}`;\n const fetchId = serviceTransportId;\n\n const applySessionOperation = (\n operation: SocketClientSessionOperation,\n patch: Partial<SocketClientSessionState> = {},\n ) => {\n Cadenza.emit(\"meta.socket_client.session_operation_requested\", {\n fetchId,\n operation,\n patch,\n serviceInstanceId,\n communicationTypes,\n serviceName,\n serviceTransportId,\n serviceOrigin,\n transportProtocols,\n url,\n });\n };\n\n const upsertDiagnostics = (\n patch: Partial<SocketClientDiagnosticsState>,\n error?: unknown,\n ) => {\n Cadenza.emit(\"meta.socket_client.diagnostics_upsert_requested\", {\n fetchId,\n serviceName,\n url,\n patch,\n error,\n });\n };\n\n setState({\n ...state,\n fetchId,\n serviceInstanceId,\n communicationTypes,\n serviceName,\n serviceTransportId,\n serviceOrigin,\n transportProtocols,\n url,\n destroyed: false,\n updatedAt: Date.now(),\n });\n\n let runtimeHandle = runtimeState;\n if (!runtimeHandle || runtimeHandle.url !== url) {\n this.destroySocketClientRuntimeHandle(runtimeHandle);\n runtimeHandle = this.createSocketClientRuntimeHandle(url);\n setRuntimeState(runtimeHandle);\n }\n\n upsertDiagnostics({\n destroyed: false,\n connected: false,\n handshake: false,\n socketId: runtimeHandle.socket.id ?? null,\n });\n applySessionOperation(\"connect\", {\n destroyed: false,\n connected: false,\n handshake: false,\n socketId: runtimeHandle.socket.id ?? null,\n pendingDelegations: runtimeHandle.pendingDelegationIds.size,\n pendingTimers: runtimeHandle.pendingTimers.size,\n errorCount: runtimeHandle.errorCount,\n });\n\n if (runtimeHandle.initialized) {\n return true;\n }\n\n runtimeHandle.initialized = true;\n runtimeHandle.handshake = false;\n runtimeHandle.errorCount = 0;\n\n const syncPendingCounts = () => {\n const pendingDelegations = runtimeHandle.pendingDelegationIds.size;\n const pendingTimers = runtimeHandle.pendingTimers.size;\n upsertDiagnostics({\n pendingDelegations,\n pendingTimers,\n });\n applySessionOperation(\"delegate\", {\n pendingDelegations,\n pendingTimers,\n });\n };\n\n runtimeHandle.emitWhenReady = <T>(\n event: string,\n data: AnyObject,\n timeoutMs: number = 60_000,\n ack?: (response: T) => void,\n ): Promise<T> => {\n return new Promise((resolve) => {\n const parsedTimeout = Number(timeoutMs);\n const normalizedTimeoutMs =\n Number.isFinite(parsedTimeout) && parsedTimeout > 0\n ? Math.trunc(parsedTimeout)\n : 60_000;\n\n let timer: NodeJS.Timeout | null = null;\n let settled = false;\n\n const clearPendingTimer = () => {\n if (!timer) {\n return;\n }\n clearTimeout(timer);\n runtimeHandle.pendingTimers.delete(timer);\n syncPendingCounts();\n timer = null;\n };\n\n const settle = (response: T) => {\n if (settled) {\n return;\n }\n settled = true;\n clearPendingTimer();\n if (ack) ack(response);\n resolve(response);\n };\n\n const resolveWithError = (errorMessage: string, fallbackError?: unknown) => {\n settle({\n ...data,\n errored: true,\n __error: errorMessage,\n error:\n fallbackError instanceof Error\n ? fallbackError.message\n : errorMessage,\n socketId: runtimeHandle.socket.id,\n serviceName,\n url,\n } as T);\n };\n\n const tryEmit = async () => {\n const waitResult = await waitForSocketConnection(\n runtimeHandle.socket,\n normalizedTimeoutMs + 10,\n (reason, error) => {\n if (reason === \"connect_timeout\") {\n return `Socket connect timed out before '${event}'`;\n }\n if (reason === \"connect_error\") {\n const errMessage =\n error instanceof Error ? error.message : String(error);\n return `Socket connect error before '${event}': ${errMessage}`;\n }\n return `Socket disconnected before '${event}'`;\n },\n );\n\n if (!waitResult.ok) {\n Cadenza.log(\n waitResult.error,\n {\n socketId: runtimeHandle.socket.id,\n serviceName,\n url,\n event,\n },\n \"error\",\n );\n upsertDiagnostics({}, waitResult.error);\n resolveWithError(waitResult.error);\n return;\n }\n\n timer = setTimeout(() => {\n if (settled) {\n return;\n }\n clearPendingTimer();\n const message = `Socket event '${event}' timed out`;\n Cadenza.log(\n message,\n { socketId: runtimeHandle.socket.id, serviceName, url },\n \"error\",\n );\n upsertDiagnostics(\n {\n lastHandshakeError: message,\n },\n message,\n );\n applySessionOperation(\"transmit\", {\n lastHandshakeError: message,\n });\n resolveWithError(message);\n }, normalizedTimeoutMs + 10);\n\n runtimeHandle.pendingTimers.add(timer);\n syncPendingCounts();\n\n runtimeHandle.socket\n .timeout(normalizedTimeoutMs)\n .emit(event, data, (err: any, response: T) => {\n if (err) {\n Cadenza.log(\n \"Socket timeout.\",\n {\n event,\n error: err.message,\n socketId: runtimeHandle.socket.id,\n serviceName,\n },\n \"warning\",\n );\n upsertDiagnostics(\n {\n lastHandshakeError: err.message,\n },\n err,\n );\n applySessionOperation(\"transmit\", {\n lastHandshakeError: err.message,\n });\n response = {\n __error: `Timeout error: ${err}`,\n errored: true,\n ...data,\n } as T;\n }\n settle(response);\n });\n };\n\n void tryEmit().catch((error) => {\n Cadenza.log(\n \"Socket emit failed unexpectedly\",\n {\n event,\n error:\n error instanceof Error ? error.message : String(error),\n socketId: runtimeHandle.socket.id,\n serviceName,\n url,\n },\n \"error\",\n );\n const message = `Socket event '${event}' failed`;\n upsertDiagnostics(\n {\n lastHandshakeError:\n error instanceof Error ? error.message : String(error),\n },\n error,\n );\n applySessionOperation(\"transmit\", {\n lastHandshakeError:\n error instanceof Error ? error.message : String(error),\n });\n resolveWithError(message, error);\n });\n });\n };\n\n const socket = runtimeHandle.socket;\n\n socket.on(\"connect\", () => {\n if (runtimeHandle.handshake) return;\n upsertDiagnostics({\n connected: true,\n destroyed: false,\n socketId: socket.id ?? null,\n });\n applySessionOperation(\"connect\", {\n connected: true,\n destroyed: false,\n socketId: socket.id ?? null,\n });\n Cadenza.emit(`meta.socket_client.connected:${fetchId}`, input);\n });\n\n socket.on(\"delegation_progress\", (delegationCtx) => {\n Cadenza.emit(\n `meta.socket_client.delegation_progress:${delegationCtx.__metadata.__deputyExecId}`,\n delegationCtx,\n );\n });\n\n socket.on(\"delegation\", (delegationCtx, callback) => {\n const normalizedDelegationCtx =\n ensureDelegationContextMetadata(delegationCtx);\n const deputyExecId = normalizedDelegationCtx.__metadata.__deputyExecId;\n const targetNotFoundSignal =\n `meta.socket.delegation_target_not_found:${deputyExecId}`;\n\n Cadenza.createEphemeralMetaTask(\n `Resolve frontend socket delegation ${deputyExecId}`,\n (completedCtx: AnyObject) => {\n callback(completedCtx);\n return completedCtx;\n },\n \"Resolves a server-routed delegation request through the frontend runtime.\",\n {\n register: false,\n },\n ).doOn(`meta.node.graph_completed:${deputyExecId}`, targetNotFoundSignal);\n\n if (\n !Cadenza.get(normalizedDelegationCtx.__remoteRoutineName) &&\n !Cadenza.registry.routines.get(\n normalizedDelegationCtx.__remoteRoutineName,\n )\n ) {\n Cadenza.emit(targetNotFoundSignal, {\n ...normalizedDelegationCtx,\n __error: `No task or routine registered for delegation target ${normalizedDelegationCtx.__remoteRoutineName}.`,\n errored: true,\n });\n return;\n }\n\n Cadenza.emit(\"meta.socket.delegation_requested\", {\n ...normalizedDelegationCtx,\n __name: normalizedDelegationCtx.__remoteRoutineName,\n });\n });\n\n socket.on(\"signal\", (signalCtx, callback?: unknown) => {\n if (Cadenza.signalBroker.listObservedSignals().includes(signalCtx.__signalName)) {\n if (isSocketAckCallback(callback)) {\n callback({\n __status: \"success\",\n __signalName: signalCtx.__signalName,\n });\n }\n Cadenza.emit(signalCtx.__signalName, signalCtx);\n return;\n }\n\n if (isSocketAckCallback(callback)) {\n callback({\n ...signalCtx,\n __status: \"error\",\n __error: `No such signal: ${signalCtx.__signalName}`,\n errored: true,\n });\n }\n });\n\n socket.on(\"status_check\", (statusCtx, callback) => {\n callback(Cadenza.serviceRegistry.resolveLocalStatusCheck(statusCtx));\n });\n\n socket.on(\"status_update\", (status) => {\n Cadenza.emit(\"meta.socket_client.status_received\", status);\n });\n\n socket.on(\"connect_error\", (err) => {\n runtimeHandle.handshake = false;\n upsertDiagnostics(\n {\n connected: false,\n handshake: false,\n connectErrors: state.connectErrors + 1,\n lastHandshakeError: err.message,\n },\n err,\n );\n applySessionOperation(\"connect\", {\n connected: false,\n handshake: false,\n connectErrors: state.connectErrors + 1,\n lastHandshakeError: err.message,\n });\n Cadenza.log(\n \"Socket connect error\",\n {\n error: err.message,\n serviceName,\n socketId: socket.id,\n url,\n },\n \"error\",\n );\n Cadenza.emit(`meta.socket_client.connect_error:${fetchId}`, err);\n });\n\n socket.on(\"reconnect_attempt\", (attempt) => {\n upsertDiagnostics({ reconnectAttempts: attempt });\n applySessionOperation(\"connect\", {\n reconnectAttempts: attempt,\n });\n Cadenza.log(`Reconnect attempt: ${attempt}`);\n });\n\n socket.on(\"reconnect\", (attempt) => {\n upsertDiagnostics({ connected: true });\n applySessionOperation(\"connect\", {\n connected: true,\n });\n Cadenza.log(`Socket reconnected after ${attempt} tries`, {\n socketId: socket.id,\n url,\n serviceName,\n });\n });\n\n socket.on(\"reconnect_error\", (err) => {\n runtimeHandle.handshake = false;\n upsertDiagnostics(\n {\n connected: false,\n handshake: false,\n reconnectErrors: state.reconnectErrors + 1,\n lastHandshakeError: err.message,\n },\n err,\n );\n applySessionOperation(\"connect\", {\n connected: false,\n handshake: false,\n reconnectErrors: state.reconnectErrors + 1,\n lastHandshakeError: err.message,\n });\n Cadenza.log(\n \"Socket reconnect failed.\",\n { error: err.message, serviceName, url, socketId: socket.id },\n \"warning\",\n );\n });\n\n socket.on(\"error\", (err) => {\n runtimeHandle.errorCount += 1;\n upsertDiagnostics(\n {\n socketErrors: state.socketErrors + 1,\n lastHandshakeError: this.getErrorMessage(err),\n },\n err,\n );\n applySessionOperation(\"transmit\", {\n socketErrors: state.socketErrors + 1,\n errorCount: runtimeHandle.errorCount,\n lastHandshakeError: this.getErrorMessage(err),\n });\n Cadenza.log(\n \"Socket error\",\n { error: err, socketId: socket.id, url, serviceName },\n \"error\",\n );\n Cadenza.emit(\"meta.socket_client.error\", err);\n });\n\n socket.on(\"disconnect\", () => {\n const disconnectedAt = new Date().toISOString();\n upsertDiagnostics({\n connected: false,\n handshake: false,\n lastDisconnectAt: disconnectedAt,\n });\n applySessionOperation(\"connect\", {\n connected: false,\n handshake: false,\n lastDisconnectAt: disconnectedAt,\n });\n Cadenza.log(\n \"Socket disconnected.\",\n { url, serviceName, socketId: socket.id },\n \"warning\",\n );\n Cadenza.emit(`meta.socket_client.disconnected:${fetchId}`, {\n serviceName,\n serviceTransportId,\n serviceOrigin,\n });\n runtimeHandle.handshake = false;\n });\n\n socket.connect();\n\n runtimeHandle.handshakeTask = Cadenza.createMetaTask(\n `Socket handshake with ${url}`,\n async (_ctx, emitter) => {\n if (runtimeHandle.handshake) return;\n runtimeHandle.handshake = true;\n\n upsertDiagnostics({\n handshake: true,\n });\n applySessionOperation(\"handshake\", {\n handshake: true,\n });\n\n await runtimeHandle.emitWhenReady?.(\n \"handshake\",\n {\n serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n serviceName: Cadenza.serviceRegistry.serviceName,\n isFrontend: Cadenza.serviceRegistry.isFrontend || isBrowser,\n __status: \"success\",\n },\n 10_000,\n (result: any) => {\n if (result.status === \"success\") {\n const handshakeAt = new Date().toISOString();\n upsertDiagnostics({\n connected: true,\n handshake: true,\n lastHandshakeAt: handshakeAt,\n lastHandshakeError: null,\n socketId: socket.id ?? null,\n });\n applySessionOperation(\"handshake\", {\n connected: true,\n handshake: true,\n lastHandshakeAt: handshakeAt,\n lastHandshakeError: null,\n socketId: socket.id ?? null,\n });\n Cadenza.log(\"Socket client connected\", {\n result,\n serviceName,\n socketId: socket.id,\n url,\n });\n } else {\n const errorMessage =\n result?.__error ?? result?.error ?? \"Socket handshake failed\";\n upsertDiagnostics(\n {\n connected: false,\n handshake: false,\n lastHandshakeError: errorMessage,\n },\n errorMessage,\n );\n applySessionOperation(\"handshake\", {\n connected: false,\n handshake: false,\n lastHandshakeError: errorMessage,\n });\n Cadenza.log(\n \"Socket handshake failed\",\n { result, serviceName, socketId: socket.id, url },\n \"warning\",\n );\n }\n\n // If needed in future:\n // runtimeHandle.errorCount threshold can request shutdown signal.\n void emitter;\n },\n );\n },\n \"Handshakes with socket server\",\n ).doOn(`meta.socket_client.connected:${fetchId}`);\n\n runtimeHandle.delegateTask = Cadenza.createMetaTask(\n `Delegate flow to Socket service ${url}`,\n async (delegateCtx, emitter) => {\n if (delegateCtx.__remoteRoutineName === undefined) {\n return;\n }\n\n const normalizedDelegateCtx =\n ensureDelegationContextMetadata(delegateCtx);\n delete normalizedDelegateCtx.__isSubMeta;\n delete normalizedDelegateCtx.__broadcast;\n\n const deputyExecId =\n normalizedDelegateCtx.__metadata?.__deputyExecId;\n const requestSentAt = Date.now();\n if (deputyExecId) {\n runtimeHandle.pendingDelegationIds.add(deputyExecId);\n syncPendingCounts();\n }\n\n try {\n const resultContext =\n ((await runtimeHandle.emitWhenReady?.(\n \"delegation\",\n normalizedDelegateCtx,\n normalizedDelegateCtx.__timeout ?? 60_000,\n )) as AnyObject | undefined) ??\n ({\n errored: true,\n __error: \"Socket delegation returned no response\",\n } as AnyObject);\n\n const requestDuration = Date.now() - requestSentAt;\n const metadata = resultContext.__metadata;\n delete resultContext.__metadata;\n\n if (deputyExecId) {\n emitter(`meta.socket_client.delegated:${deputyExecId}`, {\n ...resultContext,\n ...metadata,\n __requestDuration: requestDuration,\n });\n }\n\n if (resultContext?.errored || resultContext?.failed) {\n const errorMessage =\n resultContext?.__error ??\n resultContext?.error ??\n \"Socket delegation failed\";\n upsertDiagnostics(\n {\n lastHandshakeError: String(errorMessage),\n },\n errorMessage,\n );\n applySessionOperation(\"delegate\", {\n lastHandshakeError: String(errorMessage),\n });\n }\n\n return resultContext;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const failedContext = {\n errored: true,\n __error: message,\n };\n\n if (deputyExecId) {\n emitter(`meta.socket_client.delegated:${deputyExecId}`, {\n ...failedContext,\n __requestDuration: Date.now() - requestSentAt,\n });\n }\n\n upsertDiagnostics(\n {\n lastHandshakeError: message,\n },\n error,\n );\n applySessionOperation(\"delegate\", {\n lastHandshakeError: message,\n });\n return failedContext;\n } finally {\n if (deputyExecId) {\n runtimeHandle.pendingDelegationIds.delete(deputyExecId);\n syncPendingCounts();\n }\n }\n },\n `Delegate flow to service ${serviceName} with address ${url}`,\n )\n .doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`)\n .attachSignal(\n \"meta.socket_client.delegated\",\n \"meta.socket_shutdown_requested\",\n );\n\n runtimeHandle.transmitTask = Cadenza.createMetaTask(\n `Transmit signal to socket server ${url}`,\n async (signalCtx, emitter) => {\n if (signalCtx.__signalName === undefined) {\n return;\n }\n\n delete signalCtx.__broadcast;\n\n const response =\n ((await runtimeHandle.emitWhenReady?.(\"signal\", signalCtx, 5_000)) as\n | AnyObject\n | undefined) ??\n ({\n errored: true,\n __error: \"Socket signal transmission returned no response\",\n } as AnyObject);\n\n applySessionOperation(\"transmit\", {});\n\n if (signalCtx.__routineExecId) {\n emitter(`meta.socket_client.transmitted:${signalCtx.__routineExecId}`, {\n ...response,\n });\n }\n\n return response;\n },\n `Transmits signal to service ${serviceName} with address ${url}`,\n )\n .doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`)\n .attachSignal(\"meta.socket_client.transmitted\");\n\n Cadenza.createEphemeralMetaTask(\n `Shutdown SocketClient ${url}`,\n (_ctx, emitter) => {\n runtimeHandle.handshake = false;\n\n upsertDiagnostics({\n connected: false,\n handshake: false,\n destroyed: true,\n pendingDelegations: 0,\n pendingTimers: 0,\n });\n applySessionOperation(\"shutdown\", {\n connected: false,\n handshake: false,\n destroyed: true,\n pendingDelegations: 0,\n pendingTimers: 0,\n });\n\n Cadenza.log(\"Shutting down socket client\", { url, serviceName });\n\n emitter(`meta.fetch.handshake_requested:${fetchId}`, {\n serviceInstanceId,\n serviceName,\n communicationTypes,\n serviceTransportId,\n serviceOrigin,\n transportProtocols,\n handshakeData: {\n instanceId: Cadenza.serviceRegistry.serviceInstanceId,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n });\n\n for (const id of runtimeHandle.pendingDelegationIds) {\n emitter(`meta.socket_client.delegated:${id}`, {\n errored: true,\n __error: \"Shutting down socket client\",\n });\n }\n\n this.destroySocketClientRuntimeHandle(runtimeHandle);\n emitter(\"meta.socket_client.runtime_clear_requested\", {\n fetchId,\n });\n },\n \"Shuts down the socket client\",\n )\n .doOn(\n `meta.socket_shutdown_requested:${fetchId}`,\n `meta.socket_client.disconnected:${fetchId}`,\n `meta.fetch.handshake_failed:${fetchId}`,\n `meta.socket_client.connect_error:${fetchId}`,\n )\n .attachSignal(\"meta.fetch.handshake_requested\")\n .emits(\"meta.socket_client_shutdown_complete\");\n\n return true;\n },\n { mode: \"write\" },\n ),\n \"Connects to a specified socket server and wires runtime tasks.\",\n )\n .doOn(\"meta.fetch.handshake_complete\")\n .emitsOnFail(\"meta.socket_client.connect_failed\");\n }\n\n private resolveSocketServerKey(input: AnyObject): string {\n return (\n String(input.serverKey ?? input.__socketServerKey ?? this.socketServerDefaultKey)\n .trim() || this.socketServerDefaultKey\n );\n }\n\n private resolveSocketClientFetchId(input: AnyObject): string | undefined {\n const explicitFetchId = String(input.fetchId ?? \"\").trim();\n if (explicitFetchId) {\n return explicitFetchId;\n }\n\n const transportId = String(\n input.serviceTransportId ?? input.transportId ?? \"\",\n ).trim();\n return transportId || undefined;\n }\n\n private async createSocketServerRuntimeHandleFromContext(\n context: AnyObject,\n ): Promise<SocketServerRuntimeHandle> {\n const baseServer = context.httpsServer ?? context.httpServer;\n if (!baseServer) {\n throw new Error(\n \"Socket server runtime setup requires either httpsServer or httpServer\",\n );\n }\n\n const socketServerModule = await importNodeModule<{\n Server: new (server: any, options: AnyObject) => any;\n }>(\"socket.io\");\n const Server = socketServerModule.Server;\n const server = new Server(baseServer, {\n pingInterval: 30_000,\n pingTimeout: 20_000,\n maxHttpBufferSize: 1e7,\n connectionStateRecovery: {\n maxDisconnectionDuration: 2 * 60 * 1000,\n skipMiddlewares: true,\n },\n });\n\n return {\n server,\n initialized: false,\n connectedSocketIds: new Set<string>(),\n broadcastStatusTask: null,\n shutdownTask: null,\n };\n }\n\n private destroySocketServerRuntimeHandle(\n runtimeHandle: SocketServerRuntimeHandle | null,\n ): void {\n if (!runtimeHandle) {\n return;\n }\n\n runtimeHandle.broadcastStatusTask?.destroy();\n runtimeHandle.shutdownTask?.destroy();\n runtimeHandle.broadcastStatusTask = null;\n runtimeHandle.shutdownTask = null;\n runtimeHandle.connectedSocketIds.clear();\n runtimeHandle.initialized = false;\n runtimeHandle.server.close();\n runtimeHandle.server.removeAllListeners();\n }\n\n private createSocketClientRuntimeHandle(url: string): SocketClientRuntimeHandle {\n return {\n url,\n socket: io(url, {\n reconnection: true,\n reconnectionAttempts: 5,\n reconnectionDelay: 2000,\n reconnectionDelayMax: 10000,\n randomizationFactor: 0.5,\n transports: [\"websocket\"],\n autoConnect: false,\n }),\n initialized: false,\n handshake: false,\n errorCount: 0,\n pendingDelegationIds: new Set<string>(),\n pendingTimers: new Set<NodeJS.Timeout>(),\n emitWhenReady: null,\n handshakeTask: null,\n delegateTask: null,\n transmitTask: null,\n };\n }\n\n private destroySocketClientRuntimeHandle(\n runtimeHandle: SocketClientRuntimeHandle | null,\n ): void {\n if (!runtimeHandle) {\n return;\n }\n\n runtimeHandle.initialized = false;\n runtimeHandle.handshake = false;\n runtimeHandle.emitWhenReady = null;\n\n runtimeHandle.handshakeTask?.destroy();\n runtimeHandle.delegateTask?.destroy();\n runtimeHandle.transmitTask?.destroy();\n\n runtimeHandle.handshakeTask = null;\n runtimeHandle.delegateTask = null;\n runtimeHandle.transmitTask = null;\n\n for (const timer of runtimeHandle.pendingTimers) {\n clearTimeout(timer);\n }\n\n runtimeHandle.pendingTimers.clear();\n runtimeHandle.pendingDelegationIds.clear();\n\n runtimeHandle.socket.close();\n runtimeHandle.socket.removeAllListeners();\n }\n\n private normalizeCommunicationTypes(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((item) => String(item))\n .filter((item) => item.trim().length > 0);\n }\n\n private getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n if (typeof error === \"string\") {\n return error;\n }\n\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n }\n\n private pruneDiagnosticsEntries(\n entries: Record<string, SocketClientDiagnosticsState>,\n now = Date.now(),\n ): void {\n for (const [fetchId, state] of Object.entries(entries)) {\n if (state.destroyed && now - state.updatedAt > this.destroyedDiagnosticsTtlMs) {\n delete entries[fetchId];\n }\n }\n\n if (Object.keys(entries).length <= this.diagnosticsMaxClientEntries) {\n return;\n }\n\n const entriesByEvictionPriority = Object.entries(entries).sort((left, right) => {\n if (left[1].destroyed !== right[1].destroyed) {\n return left[1].destroyed ? -1 : 1;\n }\n\n return left[1].updatedAt - right[1].updatedAt;\n });\n\n while (\n Object.keys(entries).length > this.diagnosticsMaxClientEntries &&\n entriesByEvictionPriority.length > 0\n ) {\n const [fetchId] = entriesByEvictionPriority.shift()!;\n delete entries[fetchId];\n }\n }\n\n public async getSocketClientDiagnosticsEntry(\n fetchId: string,\n ): Promise<SocketClientDiagnosticsState | undefined> {\n const normalized = String(fetchId ?? \"\").trim();\n if (!normalized) {\n return undefined;\n }\n\n const snapshot = this.socketClientDiagnosticsActor.getState();\n const entries = { ...snapshot.entries };\n this.pruneDiagnosticsEntries(entries);\n return entries[normalized];\n }\n\n private resolveTransportDiagnosticsOptions(ctx: AnyObject): {\n detailLevel: TransportDetailLevel;\n includeErrorHistory: boolean;\n errorHistoryLimit: number;\n } {\n const detailLevel: TransportDetailLevel =\n ctx.detailLevel === \"full\" ? \"full\" : \"summary\";\n const includeErrorHistory = Boolean(ctx.includeErrorHistory);\n\n const requestedLimit = Number(ctx.errorHistoryLimit);\n const errorHistoryLimit = Number.isFinite(requestedLimit)\n ? Math.max(1, Math.min(200, Math.trunc(requestedLimit)))\n : 10;\n\n return {\n detailLevel,\n includeErrorHistory,\n errorHistoryLimit,\n };\n }\n\n private collectSocketTransportDiagnostics(\n ctx: AnyObject,\n diagnosticsEntries: Record<string, SocketClientDiagnosticsState>,\n ): AnyObject {\n const { detailLevel, includeErrorHistory, errorHistoryLimit } =\n this.resolveTransportDiagnosticsOptions(ctx);\n const serviceName = Cadenza.serviceRegistry.serviceName ?? \"UnknownService\";\n\n const entries = { ...diagnosticsEntries };\n this.pruneDiagnosticsEntries(entries);\n\n const states = Object.values(entries).sort((a, b) =>\n a.fetchId.localeCompare(b.fetchId),\n );\n\n const summary = {\n detailLevel,\n totalClients: states.length,\n connectedClients: states.filter((state) => state.connected).length,\n activeHandshakes: states.filter((state) => state.handshake).length,\n pendingDelegations: states.reduce(\n (acc, state) => acc + state.pendingDelegations,\n 0,\n ),\n pendingTimers: states.reduce((acc, state) => acc + state.pendingTimers, 0),\n reconnectAttempts: states.reduce(\n (acc, state) => acc + state.reconnectAttempts,\n 0,\n ),\n connectErrors: states.reduce((acc, state) => acc + state.connectErrors, 0),\n reconnectErrors: states.reduce((acc, state) => acc + state.reconnectErrors, 0),\n socketErrors: states.reduce((acc, state) => acc + state.socketErrors, 0),\n latestError:\n states\n .slice()\n .sort((a, b) => b.lastErrorAt - a.lastErrorAt)\n .find((state) => state.lastError)?.lastError ?? null,\n };\n\n if (detailLevel === \"summary\") {\n return {\n transportDiagnostics: {\n [serviceName]: {\n socketClient: summary,\n },\n },\n };\n }\n\n const clients = states.map((state) => {\n const details: AnyObject = {\n fetchId: state.fetchId,\n serviceName: state.serviceName,\n url: state.url,\n socketId: state.socketId,\n connected: state.connected,\n handshake: state.handshake,\n reconnectAttempts: state.reconnectAttempts,\n connectErrors: state.connectErrors,\n reconnectErrors: state.reconnectErrors,\n socketErrors: state.socketErrors,\n pendingDelegations: state.pendingDelegations,\n pendingTimers: state.pendingTimers,\n destroyed: state.destroyed,\n lastHandshakeAt: state.lastHandshakeAt,\n lastHandshakeError: state.lastHandshakeError,\n lastDisconnectAt: state.lastDisconnectAt,\n latestError: state.lastError,\n };\n\n if (includeErrorHistory) {\n details.errorHistory = state.errorHistory.slice(-errorHistoryLimit);\n }\n\n return details;\n });\n\n return {\n transportDiagnostics: {\n [serviceName]: {\n socketClient: {\n ...summary,\n clients,\n },\n },\n },\n };\n }\n}\n","type WaitOutcome<TError> =\n | { ok: true }\n | { ok: false; error: TError };\n\ntype SocketLike = {\n connected?: boolean;\n once: (event: string, listener: (...args: any[]) => void) => any;\n off: (event: string, listener: (...args: any[]) => void) => any;\n};\n\n/**\n * Waits for a socket to become connected with explicit timeout/error outcomes.\n * Ensures listeners are removed in all exit paths to avoid accumulation across retries.\n */\nexport const waitForSocketConnection = async <TError>(\n socket: SocketLike | null,\n timeoutMs: number,\n createError: (reason: \"connect_timeout\" | \"connect_error\" | \"disconnected\", error?: unknown) => TError,\n): Promise<WaitOutcome<TError>> => {\n if (!socket) {\n return { ok: false, error: createError(\"disconnected\") };\n }\n\n if (socket.connected) {\n return { ok: true };\n }\n\n return new Promise((resolve) => {\n let timer: NodeJS.Timeout | null = null;\n let settled = false;\n\n const cleanup = () => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n socket.off(\"connect\", onConnect);\n socket.off(\"connect_error\", onConnectError);\n socket.off(\"disconnect\", onDisconnect);\n };\n\n const settle = (outcome: WaitOutcome<TError>) => {\n if (settled) return;\n settled = true;\n cleanup();\n resolve(outcome);\n };\n\n const onConnect = () => settle({ ok: true });\n const onConnectError = (error: unknown) =>\n settle({ ok: false, error: createError(\"connect_error\", error) });\n const onDisconnect = () =>\n settle({ ok: false, error: createError(\"disconnected\") });\n\n socket.once(\"connect\", onConnect);\n socket.once(\"connect_error\", onConnectError);\n socket.once(\"disconnect\", onDisconnect);\n\n timer = setTimeout(() => {\n settle({ ok: false, error: createError(\"connect_timeout\") });\n }, timeoutMs);\n });\n};\n","/**\n * Formats a given timestamp into an ISO 8601 date string.\n *\n * @param {number} timestamp - The timestamp to format, represented as the number of milliseconds since the UNIX epoch.\n * @return {string} The formatted ISO 8601 string representing the date and time corresponding to the provided timestamp.\n */\nexport function formatTimestamp(timestamp: number) {\n return new Date(timestamp).toISOString();\n}\n\n/**\n * Decomposes a signal name into its constituent parts such as metadata indicator, source service name, domain, and action.\n *\n * @param {string} signalName - The signal name string to be decomposed. Typically a dot-separated string.\n * @return {Object} An object containing the decomposed parts:\n * - `isMeta` {boolean} - Indicates whether the signal is a metadata signal.\n * - `sourceServiceName` {string|null} - The name of the source service, or null if not applicable.\n * - `domain` {string} - The domain extracted from the signal name.\n * - `action` {string} - The action or last component of the signal name.\n */\nexport function decomposeSignalName(signalName: string) {\n const parts = signalName.split(\".\");\n let isMeta =\n parts[0] === \"meta\" ||\n parts[0] === \"sub_meta\" ||\n parts[1] === \"meta\" ||\n parts[1] === \"sub_meta\";\n let isGlobal = parts[0] === \"global\";\n let domain = isGlobal\n ? isMeta\n ? parts.length === 4\n ? parts[2]\n : \"\"\n : parts.length === 3\n ? parts[1]\n : \"\"\n : isMeta\n ? parts.length === 3\n ? parts[1]\n : \"\"\n : parts.length === 2\n ? parts[0]\n : \"\";\n const action = parts[parts.length - 1];\n\n return {\n isMeta,\n isGlobal,\n domain,\n action,\n };\n}\n","import Cadenza from \"../Cadenza\";\nimport { decomposeSignalName } from \"../utils/tools\";\n\nfunction buildSignalDatabaseTriggerContext(\n data: Record<string, unknown>,\n): Record<string, unknown> {\n return {\n data: { ...data },\n queryData: {\n data: { ...data },\n },\n };\n}\n\n/**\n * SignalController is a singleton class that manages signal registration, transmission,\n * and metadata handling within a service instance.\n *\n * This class utilizes the Cadenza framework to handle various tasks related to signals,\n * such as registering signals, transmitting signals to remote services, adding metadata,\n * and maintaining clean-forwarding and processing of signals.\n *\n * Features:\n * - Ensures signals are properly registered and metadata is propagated.\n * - Handles foreign signal registration for cross-service communication.\n * - Forwards signal observations and manages their metadata.\n * - Adds metadata during signal emission and consumption.\n * - Implements a meta-task-based system for handling complex workflows.\n *\n * Constructor initializes the necessary meta-tasks and tasks required for signal management.\n */\nexport default class SignalController {\n private static _instance: SignalController;\n public static get instance(): SignalController {\n if (!this._instance) this._instance = new SignalController();\n return this._instance;\n }\n\n /**\n * Constructor method for initializing the signal registration and data transmission process.\n * This method defines multiple meta tasks to manage signals, forwarding, and adding metadata\n * for service instances in a distributed system.\n *\n * Some key functionalities include:\n * - Registering signals from a service instance.\n * - Handling foreign signal registration from remote services.\n * - Forwarding signal observations between services.\n * - Adding metadata to signal emissions for better traceability.\n * - Adding metadata to signal consumption events.\n *\n * It serves as an initializer for signals and tasks.\n */\n constructor() {\n Cadenza.createMetaTask(\n \"Handle Signal Registration\",\n (ctx, emit) => {\n const { signalName } = ctx;\n const { isMeta, isGlobal, domain, action } =\n decomposeSignalName(signalName);\n\n emit(\n \"global.meta.signal_controller.signal_added\",\n buildSignalDatabaseTriggerContext({\n name: signalName,\n isGlobal,\n domain,\n action,\n isMeta,\n }),\n );\n\n return ctx;\n },\n \"Handles signal registration from a service instance\",\n )\n .doOn(\"meta.signal_broker.added\")\n .attachSignal(\"global.meta.signal_controller.signal_added\");\n\n Cadenza.createMetaTask(\n \"Add data to signal emission\",\n (ctx) => {\n const signalEmission = ctx.__signalEmission;\n delete ctx.__signalEmission;\n\n if (!signalEmission) {\n return false;\n }\n\n return {\n data: {\n uuid: signalEmission.uuid,\n signal_name: signalEmission.signalName,\n signal_tag: signalEmission.signalTag,\n task_name: signalEmission.taskName,\n task_version: signalEmission.taskVersion,\n task_execution_id: signalEmission.taskExecutionId,\n is_meta: signalEmission.isMeta,\n is_metric: signalEmission.isMetric ?? false,\n routine_execution_id: signalEmission.routineExecutionId,\n execution_trace_id: signalEmission.executionTraceId,\n context: ctx,\n metadata: signalEmission,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id: Cadenza.serviceRegistry.serviceInstanceId,\n },\n };\n },\n \"\",\n { isSubMeta: true, concurrency: 100 },\n )\n .doOn(\"sub_meta.signal_broker.emitting_signal\")\n .emits(\"global.sub_meta.signal_controller.signal_emitted\");\n }\n}\n","import type {\n RuntimeValidationPolicy,\n RuntimeValidationScope,\n} from \"@cadenza.io/core\";\nimport Cadenza from \"../Cadenza\";\n\nexport const RUNTIME_VALIDATION_INTENTS = {\n getPolicy: \"meta-runtime-validation-policy-get\",\n setPolicy: \"meta-runtime-validation-policy-set\",\n replacePolicy: \"meta-runtime-validation-policy-replace\",\n clearPolicy: \"meta-runtime-validation-policy-clear\",\n listScopes: \"meta-runtime-validation-scope-list\",\n upsertScope: \"meta-runtime-validation-scope-upsert\",\n removeScope: \"meta-runtime-validation-scope-remove\",\n clearScopes: \"meta-runtime-validation-scope-clear\",\n} as const;\n\nexport const RUNTIME_VALIDATION_SIGNALS = {\n setPolicyRequested: \"meta.runtime_validation.policy_set_requested\",\n replacePolicyRequested: \"meta.runtime_validation.policy_replace_requested\",\n clearPolicyRequested: \"meta.runtime_validation.policy_clear_requested\",\n upsertScopeRequested: \"meta.runtime_validation.scope_upsert_requested\",\n removeScopeRequested: \"meta.runtime_validation.scope_remove_requested\",\n clearScopesRequested: \"meta.runtime_validation.scope_clear_requested\",\n policyUpdated: \"meta.runtime_validation.policy_updated\",\n policyCleared: \"meta.runtime_validation.policy_cleared\",\n scopeUpserted: \"meta.runtime_validation.scope_upserted\",\n scopeRemoved: \"meta.runtime_validation.scope_removed\",\n scopesCleared: \"meta.runtime_validation.scopes_cleared\",\n} as const;\n\nfunction normalizePolicyContext(ctx: Record<string, any>): RuntimeValidationPolicy {\n const source =\n ctx.policy && typeof ctx.policy === \"object\" && !Array.isArray(ctx.policy)\n ? ctx.policy\n : ctx;\n const policy: RuntimeValidationPolicy = {};\n\n for (const key of [\n \"metaInput\",\n \"metaOutput\",\n \"businessInput\",\n \"businessOutput\",\n \"warnOnMissingMetaInputSchema\",\n \"warnOnMissingMetaOutputSchema\",\n \"warnOnMissingBusinessInputSchema\",\n \"warnOnMissingBusinessOutputSchema\",\n ] as const) {\n if (source[key] !== undefined) {\n policy[key] = source[key];\n }\n }\n\n return policy;\n}\n\nfunction normalizeScopeContext(ctx: Record<string, any>): RuntimeValidationScope {\n const source =\n ctx.scope && typeof ctx.scope === \"object\" && !Array.isArray(ctx.scope)\n ? ctx.scope\n : ctx;\n\n return {\n id: source.id,\n active: source.active,\n startTaskNames: Array.isArray(source.startTaskNames)\n ? source.startTaskNames\n : undefined,\n startRoutineNames: Array.isArray(source.startRoutineNames)\n ? source.startRoutineNames\n : undefined,\n policy:\n source.policy && typeof source.policy === \"object\"\n ? normalizePolicyContext({ policy: source.policy })\n : undefined,\n };\n}\n\nexport default class RuntimeValidationController {\n private static _instance: RuntimeValidationController;\n\n public static get instance(): RuntimeValidationController {\n if (!this._instance) {\n this._instance = new RuntimeValidationController();\n }\n\n return this._instance;\n }\n\n constructor() {\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.getPolicy,\n description: \"Get the active runtime validation policy.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.setPolicy,\n description: \"Merge fields into the active runtime validation policy.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.replacePolicy,\n description: \"Replace the active runtime validation policy.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.clearPolicy,\n description: \"Clear the active runtime validation policy.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.listScopes,\n description: \"List active runtime validation scopes.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.upsertScope,\n description:\n \"Create or update a runtime validation scope for targeted subflow validation.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.removeScope,\n description: \"Remove a runtime validation scope by id.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.clearScopes,\n description: \"Clear all runtime validation scopes.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n\n Cadenza.createMetaTask(\"Get runtime validation policy\", () => {\n return {\n policy: Cadenza.getRuntimeValidationPolicy(),\n };\n }).respondsTo(RUNTIME_VALIDATION_INTENTS.getPolicy);\n\n Cadenza.createMetaTask(\n \"Set runtime validation policy\",\n (ctx, emit) => {\n const policy = normalizePolicyContext(ctx);\n const nextPolicy = Cadenza.setRuntimeValidationPolicy(policy);\n emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {\n policy: nextPolicy,\n });\n return {\n policy: nextPolicy,\n };\n },\n \"Merges runtime validation policy fields at runtime.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.setPolicy)\n .doOn(RUNTIME_VALIDATION_SIGNALS.setPolicyRequested);\n\n Cadenza.createMetaTask(\n \"Replace runtime validation policy\",\n (ctx, emit) => {\n const policy = normalizePolicyContext(ctx);\n const nextPolicy = Cadenza.replaceRuntimeValidationPolicy(policy);\n emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {\n policy: nextPolicy,\n });\n return {\n policy: nextPolicy,\n };\n },\n \"Replaces runtime validation policy fields at runtime.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.replacePolicy)\n .doOn(RUNTIME_VALIDATION_SIGNALS.replacePolicyRequested);\n\n Cadenza.createMetaTask(\n \"Clear runtime validation policy\",\n (_ctx, emit) => {\n Cadenza.clearRuntimeValidationPolicy();\n emit(RUNTIME_VALIDATION_SIGNALS.policyCleared, {});\n return {\n policy: Cadenza.getRuntimeValidationPolicy(),\n };\n },\n \"Clears the runtime validation policy.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.clearPolicy)\n .doOn(RUNTIME_VALIDATION_SIGNALS.clearPolicyRequested);\n\n Cadenza.createMetaTask(\"List runtime validation scopes\", () => {\n return {\n scopes: Cadenza.getRuntimeValidationScopes(),\n };\n }).respondsTo(RUNTIME_VALIDATION_INTENTS.listScopes);\n\n Cadenza.createMetaTask(\n \"Upsert runtime validation scope\",\n (ctx, emit) => {\n const scope = normalizeScopeContext(ctx);\n const nextScope = Cadenza.upsertRuntimeValidationScope(scope);\n emit(RUNTIME_VALIDATION_SIGNALS.scopeUpserted, {\n scope: nextScope,\n });\n return {\n scope: nextScope,\n };\n },\n \"Upserts a runtime validation scope for targeted debugging.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.upsertScope)\n .doOn(RUNTIME_VALIDATION_SIGNALS.upsertScopeRequested);\n\n Cadenza.createMetaTask(\n \"Remove runtime validation scope\",\n (ctx, emit) => {\n if (!ctx.id) {\n throw new Error(\"Runtime validation scope id is required\");\n }\n\n Cadenza.removeRuntimeValidationScope(ctx.id);\n emit(RUNTIME_VALIDATION_SIGNALS.scopeRemoved, {\n id: ctx.id,\n });\n return {\n id: ctx.id,\n scopes: Cadenza.getRuntimeValidationScopes(),\n };\n },\n \"Removes a runtime validation scope.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.removeScope)\n .doOn(RUNTIME_VALIDATION_SIGNALS.removeScopeRequested);\n\n Cadenza.createMetaTask(\n \"Clear runtime validation scopes\",\n (_ctx, emit) => {\n Cadenza.clearRuntimeValidationScopes();\n emit(RUNTIME_VALIDATION_SIGNALS.scopesCleared, {});\n return {\n scopes: Cadenza.getRuntimeValidationScopes(),\n };\n },\n \"Clears all runtime validation scopes.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.clearScopes)\n .doOn(RUNTIME_VALIDATION_SIGNALS.clearScopesRequested);\n }\n}\n","import { META_ACTOR_SESSION_STATE_PERSIST_INTENT } from \"@cadenza.io/core\";\nimport Cadenza from \"../../Cadenza\";\n\nexport function registerActorSessionPersistenceTasks(): void {\n if (Cadenza.get(\"Persist actor session state\")) {\n return;\n }\n\n const actorSessionStateInsertTask =\n Cadenza.getLocalCadenzaDBInsertTask(\"actor_session_state\") ??\n Cadenza.get(\"dbInsertActorSessionState\") ??\n Cadenza.get(\"Insert actor_session_state in CadenzaDB\") ??\n Cadenza.createCadenzaDBInsertTask(\n \"actor_session_state\",\n {},\n { concurrency: 100, isSubMeta: true },\n );\n\n const validateActorSessionStatePersistenceTask =\n Cadenza.createMetaTask(\n \"Validate actor session state persistence\",\n (ctx) => {\n if (ctx.errored || ctx.failed || ctx.__success !== true) {\n throw new Error(\n String(\n ctx.__error ??\n ctx.error ??\n \"actor_session_state persistence query failed\",\n ),\n );\n }\n\n const rowCount = Number(ctx.rowCount ?? 0);\n if (!Number.isFinite(rowCount) || rowCount <= 0) {\n throw new Error(\n \"actor_session_state persistence did not affect any rows (possible stale durable_version)\",\n );\n }\n\n return {\n __success: true,\n persisted: true,\n actor_name: ctx.actor_name,\n actor_version: ctx.actor_version,\n actor_key: ctx.actor_key,\n service_name: ctx.service_name,\n durable_version: ctx.durable_version,\n };\n },\n \"Enforces strict actor session persistence success contract.\",\n { isSubMeta: true, concurrency: 100 },\n );\n\n const insertAndValidateActorSessionStateTask = actorSessionStateInsertTask.then(\n validateActorSessionStatePersistenceTask,\n );\n\n Cadenza.createMetaTask(\n \"Persist actor session state\",\n (ctx) => {\n const actorName =\n typeof ctx.actor_name === \"string\" ? ctx.actor_name.trim() : \"\";\n const actorKey =\n typeof ctx.actor_key === \"string\" ? ctx.actor_key.trim() : \"\";\n const actorVersion = Number(ctx.actor_version ?? 1);\n const durableVersion = Number(ctx.durable_version);\n\n if (!actorName) {\n throw new Error(\"actor_name is required for actor session persistence\");\n }\n\n if (!actorKey) {\n throw new Error(\"actor_key is required for actor session persistence\");\n }\n\n if (!Number.isInteger(actorVersion) || actorVersion < 1) {\n throw new Error(\"actor_version must be a positive integer\");\n }\n\n if (!Number.isInteger(durableVersion) || durableVersion < 0) {\n throw new Error(\"durable_version must be a non-negative integer\");\n }\n\n if (\n typeof ctx.durable_state !== \"object\" ||\n ctx.durable_state === null ||\n Array.isArray(ctx.durable_state)\n ) {\n throw new Error(\"durable_state must be a non-null object\");\n }\n\n const serviceName = Cadenza.serviceRegistry.serviceName;\n if (!serviceName) {\n throw new Error(\"service_name is not available for actor session persistence\");\n }\n\n let expiresAt: string | null = null;\n if (ctx.expires_at !== undefined && ctx.expires_at !== null) {\n if (ctx.expires_at instanceof Date) {\n expiresAt = ctx.expires_at.toISOString();\n } else if (\n typeof ctx.expires_at === \"string\" &&\n ctx.expires_at.trim().length > 0\n ) {\n expiresAt = ctx.expires_at;\n } else {\n throw new Error(\"expires_at must be null, Date, or non-empty string\");\n }\n }\n\n const updatedAt = new Date().toISOString();\n\n return {\n ...ctx,\n actor_name: actorName,\n actor_key: actorKey,\n actor_version: actorVersion,\n durable_version: durableVersion,\n expires_at: expiresAt,\n service_name: serviceName,\n queryData: {\n data: {\n actor_name: actorName,\n actor_version: actorVersion,\n actor_key: actorKey,\n service_name: serviceName,\n durable_state: ctx.durable_state,\n durable_version: durableVersion,\n expires_at: expiresAt,\n updated: updatedAt,\n },\n onConflict: {\n target: [\n \"actor_name\",\n \"actor_version\",\n \"actor_key\",\n \"service_name\",\n ],\n action: {\n do: \"update\",\n set: {\n durable_state: \"excluded\",\n durable_version: \"excluded\",\n expires_at: \"excluded\",\n updated: \"excluded\",\n },\n where:\n \"actor_session_state.durable_version <= excluded.durable_version\",\n },\n },\n },\n };\n },\n \"Validates and prepares actor_session_state payload for strict write-through persistence.\",\n { isSubMeta: true, concurrency: 100 },\n )\n .then(insertAndValidateActorSessionStateTask)\n .respondsTo(META_ACTOR_SESSION_STATE_PERSIST_INTENT);\n}\n","import Cadenza from \"../../Cadenza\";\nimport { formatTimestamp } from \"../../utils/tools\";\nimport { isMetaIntentName } from \"../../utils/inquiry\";\nimport { registerActorSessionPersistenceTasks } from \"./registerActorSessionPersistence\";\n\nfunction buildDatabaseTriggerContext(\n data?: Record<string, unknown> | null,\n filter?: Record<string, unknown> | null,\n extra: Record<string, unknown> = {},\n): Record<string, unknown> {\n const nextData =\n data && typeof data === \"object\" ? { ...data } : undefined;\n const nextFilter =\n filter && typeof filter === \"object\" ? { ...filter } : undefined;\n const queryData: Record<string, unknown> = {};\n\n if (nextData !== undefined) {\n queryData.data = nextData;\n }\n\n if (nextFilter !== undefined) {\n queryData.filter = nextFilter;\n }\n\n return {\n ...extra,\n ...(nextData !== undefined ? { data: nextData } : {}),\n ...(nextFilter !== undefined ? { filter: nextFilter } : {}),\n ...(Object.keys(queryData).length > 0 ? { queryData } : {}),\n };\n}\n\nexport default class GraphMetadataController {\n private static _instance: GraphMetadataController;\n public static get instance(): GraphMetadataController {\n if (!this._instance) this._instance = new GraphMetadataController();\n return this._instance;\n }\n\n constructor() {\n Cadenza.createMetaTask(\"Handle task creation\", (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.task.created\")\n .emits(\"global.meta.graph_metadata.task_created\");\n\n Cadenza.createMetaTask(\"Handle task update\", (ctx) => {\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.task.layer_index_changed\", \"meta.task.destroyed\")\n .emits(\"global.meta.graph_metadata.task_updated\");\n\n Cadenza.createMetaTask(\"Handle task relationship creation\", (ctx) => {\n const taskName = ctx.data?.taskName ?? ctx.data?.task_name;\n const predecessorTaskName =\n ctx.data?.predecessorTaskName ?? ctx.data?.predecessor_task_name;\n const task = taskName ? Cadenza.get(taskName) : undefined;\n const predecessorTask = predecessorTaskName\n ? Cadenza.get(predecessorTaskName)\n : undefined;\n\n if (!task?.registered || !predecessorTask?.registered) {\n return false;\n }\n\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n predecessorServiceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.task.relationship_added\")\n .emits(\"global.meta.graph_metadata.task_relationship_created\");\n\n Cadenza.createMetaTask(\"Handle task error\", (ctx) => {\n Cadenza.log(`Error in task ${ctx.data.taskName}`, ctx.data, \"error\");\n }).doOn(\"meta.node.errored\");\n\n Cadenza.createMetaTask(\"Handle task signal observation\", (ctx) => {\n const isGlobal = ctx.signalName.startsWith(\"global.\");\n return buildDatabaseTriggerContext({\n ...ctx.data,\n isGlobal,\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.task.observed_signal\")\n .emits(\"global.meta.graph_metadata.task_signal_observed\");\n\n Cadenza.createMetaTask(\"Handle task signal attachment\", (ctx) => {\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.task.attached_signal\")\n .emits(\"global.meta.graph_metadata.task_attached_signal\");\n\n Cadenza.createMetaTask(\"Handle task intent association\", (ctx) => {\n return buildDatabaseTriggerContext({\n ...(ctx.data as Record<string, unknown> | undefined),\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.task.intent_associated\")\n .emits(\"global.meta.graph_metadata.task_intent_associated\");\n\n Cadenza.createMetaTask(\"Handle task unsubscribing signal\", (ctx) => {\n return buildDatabaseTriggerContext(\n {\n deleted: true,\n },\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.task.unsubscribed_signal\")\n .emits(\"meta.graph_metadata.task_unsubscribed_signal\");\n\n Cadenza.createMetaTask(\"Handle task detaching signal\", (ctx) => {\n return buildDatabaseTriggerContext(\n {\n deleted: true,\n },\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.task.detached_signal\")\n .emits(\"global.meta.graph_metadata.task_detached_signal\");\n\n Cadenza.createMetaTask(\"Handle routine creation\", (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doAfter(Cadenza.registry.registerRoutine)\n .emits(\"global.meta.graph_metadata.routine_created\");\n\n Cadenza.createMetaTask(\"Handle routine update\", (ctx) => {\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.routine.destroyed\")\n .emits(\"global.meta.graph_metadata.routine_updated\");\n\n Cadenza.createMetaTask(\"Handle adding task to routine\", (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.routine.task_added\")\n .emits(\"global.meta.graph_metadata.task_added_to_routine\");\n\n Cadenza.createMetaTask(\"Handle new trace\", (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id: Cadenza.serviceRegistry.serviceInstanceId,\n });\n })\n .doOn(\"meta.runner.new_trace\", \"sub_meta.signal_broker.new_trace\")\n .emits(\"global.meta.graph_metadata.execution_trace_created\");\n\n Cadenza.createMetaTask(\n \"Handle routine execution creation\",\n (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n });\n },\n \"Handles routine execution creation\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.runner.added_tasks\")\n .emits(\"global.meta.graph_metadata.routine_execution_created\");\n\n Cadenza.createMetaTask(\n \"Handle routine execution started\",\n (ctx) => {\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles routine execution started\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.started_routine_execution\")\n .emits(\"global.meta.graph_metadata.routine_execution_started\");\n\n Cadenza.createMetaTask(\n \"Handle routine execution ended\",\n (ctx) => {\n return buildDatabaseTriggerContext(\n {\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n },\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles routine execution ended\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.ended_routine_execution\")\n .emits(\"global.meta.graph_metadata.routine_execution_ended\");\n\n Cadenza.createMetaTask(\n \"Handle task execution creation\",\n (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n });\n },\n \"Handles task execution creation\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.scheduled\")\n .emits(\"global.meta.graph_metadata.task_execution_created\");\n\n Cadenza.createMetaTask(\n \"Handle task execution mapped\",\n (ctx) => {\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles task execution mapping\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.mapped\", \"meta.node.detected_previous_task_execution\")\n .emits(\"global.meta.graph_metadata.task_execution_mapped\");\n\n Cadenza.createMetaTask(\n \"Handle task execution started\",\n (ctx) => {\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles task execution started\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.started\")\n .emits(\"global.meta.graph_metadata.task_execution_started\");\n\n Cadenza.createMetaTask(\n \"Handle task execution ended\",\n (ctx) => {\n return buildDatabaseTriggerContext(\n {\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n },\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles task execution ended\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.ended\")\n .emits(\"global.meta.graph_metadata.task_execution_ended\");\n\n Cadenza.createMetaTask(\n \"Handle task execution relationship creation\",\n (ctx) => {\n return buildDatabaseTriggerContext(\n {\n executionCount: \"increment\",\n lastExecuted: formatTimestamp(Date.now()),\n },\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n },\n \"Handles task execution relationship creation\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.mapped\", \"meta.node.detected_previous_task_execution\")\n .emits(\"global.meta.graph_metadata.relationship_executed\");\n\n Cadenza.createMetaTask(\"Handle actor creation\", (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n service_name: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.actor.created\")\n .emits(\"global.meta.graph_metadata.actor_created\");\n\n Cadenza.createMetaTask(\"Handle actor task association\", (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n service_name: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.actor.task_associated\")\n .emits(\"global.meta.graph_metadata.actor_task_associated\");\n\n registerActorSessionPersistenceTasks();\n\n Cadenza.createMetaTask(\"Handle Intent Creation\", (ctx) => {\n const intentName = ctx.data?.name;\n return buildDatabaseTriggerContext({\n ...ctx.data,\n isMeta: intentName ? isMetaIntentName(intentName) : false,\n });\n })\n .doOn(\"meta.inquiry_broker.added\")\n .emits(\"global.meta.graph_metadata.intent_created\");\n }\n}\n","export default class DatabaseController {\n private static _instance: DatabaseController;\n\n public static get instance(): DatabaseController {\n if (!this._instance) {\n this._instance = new DatabaseController();\n }\n\n return this._instance;\n }\n\n private unsupported(message: string): never {\n throw new Error(message);\n }\n\n createPostgresActor(): never {\n return this.unsupported(\n \"PostgresActor creation is not supported in the browser runtime.\",\n );\n }\n\n requestPostgresActorSetup(): never {\n return this.unsupported(\n \"PostgresActor setup is not supported in the browser runtime.\",\n );\n }\n}\n","import Cadenza from \"../../Cadenza\";\nimport {\n META_ACTOR_SESSION_STATE_PERSIST_INTENT,\n Task,\n} from \"@cadenza.io/core\";\nimport ServiceRegistry from \"../../registry/ServiceRegistry\";\nimport { decomposeSignalName, formatTimestamp } from \"../../utils/tools\";\nimport { DeputyTask } from \"../../index\";\nimport { isMetaIntentName } from \"../../utils/inquiry\";\n\ntype ActorTaskRuntimeMetadata = {\n actorName: string;\n actorDescription?: string;\n actorKind: \"standard\" | \"meta\";\n mode: \"read\" | \"write\" | \"meta\";\n forceMeta: boolean;\n};\n\nconst ACTOR_TASK_METADATA = Symbol.for(\"@cadenza.io/core/actor-task-meta\");\n\nfunction getActorTaskRuntimeMetadata(\n taskFunction: unknown,\n): ActorTaskRuntimeMetadata | undefined {\n if (typeof taskFunction !== \"function\") {\n return undefined;\n }\n\n return (taskFunction as { [ACTOR_TASK_METADATA]?: ActorTaskRuntimeMetadata })[\n ACTOR_TASK_METADATA\n ];\n}\n\nfunction sanitizeActorMetadataValue(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n if (value === undefined || typeof value === \"function\") {\n return undefined;\n }\n if (Array.isArray(value)) {\n const items: unknown[] = [];\n for (const item of value) {\n const sanitizedItem = sanitizeActorMetadataValue(item);\n if (sanitizedItem !== undefined) {\n items.push(sanitizedItem);\n }\n }\n return items;\n }\n if (typeof value === \"object\") {\n const output: Record<string, unknown> = {};\n for (const [key, nestedValue] of Object.entries(value)) {\n const sanitizedNestedValue = sanitizeActorMetadataValue(nestedValue);\n if (sanitizedNestedValue !== undefined) {\n output[key] = sanitizedNestedValue;\n }\n }\n return output;\n }\n\n return value;\n}\n\nfunction buildActorRegistrationData(actor: any): Record<string, unknown> {\n const definition = sanitizeActorMetadataValue(\n typeof actor?.toDefinition === \"function\" ? actor.toDefinition() : {},\n ) as Record<string, unknown>;\n const stateDefinition =\n definition?.state && typeof definition.state === \"object\"\n ? definition.state\n : {};\n const actorKind =\n typeof definition?.kind === \"string\" ? definition.kind : actor?.kind;\n\n return {\n name: definition?.name ?? actor?.spec?.name ?? \"\",\n description: definition?.description ?? actor?.spec?.description ?? \"\",\n default_key:\n definition?.defaultKey ?? actor?.spec?.defaultKey ?? \"default\",\n load_policy: definition?.loadPolicy ?? actor?.spec?.loadPolicy ?? \"eager\",\n write_contract:\n definition?.writeContract ?? actor?.spec?.writeContract ?? \"overwrite\",\n runtime_read_guard:\n definition?.runtimeReadGuard ?? actor?.spec?.runtimeReadGuard ?? \"none\",\n consistency_profile:\n definition?.consistencyProfile ?? actor?.spec?.consistencyProfile ?? null,\n key_definition: definition?.key ?? null,\n state_definition: stateDefinition,\n retry_policy: definition?.retry ?? {},\n idempotency_policy: definition?.idempotency ?? {},\n session_policy: definition?.session ?? {},\n is_meta: actorKind === \"meta\",\n version: 1,\n };\n}\n\nfunction resolveSyncServiceName(\n task?:\n | {\n serviceName?: string;\n ownerServiceName?: string | null;\n isDeputy?: boolean;\n }\n | null,\n):\n | string\n | undefined {\n const ownerServiceName =\n typeof task?.ownerServiceName === \"string\"\n ? task.ownerServiceName.trim()\n : \"\";\n const taskServiceName =\n typeof task?.serviceName === \"string\" ? task.serviceName.trim() : \"\";\n const registryServiceName =\n typeof ServiceRegistry.instance.serviceName === \"string\"\n ? ServiceRegistry.instance.serviceName.trim()\n : \"\";\n\n if (task?.isDeputy) {\n return ownerServiceName || registryServiceName || taskServiceName || undefined;\n }\n\n return ownerServiceName || taskServiceName || registryServiceName || undefined;\n}\n\nfunction isLocalOnlySyncIntent(intentName: string): boolean {\n return intentName === META_ACTOR_SESSION_STATE_PERSIST_INTENT;\n}\n\nfunction buildIntentRegistryData(intent: any): Record<string, unknown> | null {\n const name = String(intent?.name ?? \"\").trim();\n if (!name) {\n return null;\n }\n\n return {\n name,\n description:\n typeof intent?.description === \"string\" ? intent.description : \"\",\n input:\n intent?.input && typeof intent.input === \"object\"\n ? intent.input\n : { type: \"object\" },\n output:\n intent?.output && typeof intent.output === \"object\"\n ? intent.output\n : { type: \"object\" },\n isMeta: isMetaIntentName(name),\n };\n}\n\nfunction getJoinedContextValue(\n ctx: Record<string, any>,\n key: \"data\" | \"batch\" | \"queryData\",\n): unknown {\n const joinedContexts = Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : [];\n for (let index = joinedContexts.length - 1; index >= 0; index -= 1) {\n const joinedContext = joinedContexts[index];\n if (\n joinedContext &&\n typeof joinedContext === \"object\" &&\n (Object.prototype.hasOwnProperty.call(joinedContext, key) ||\n joinedContext[key] !== undefined)\n ) {\n return joinedContext[key];\n }\n }\n\n return undefined;\n}\n\nfunction didSyncInsertSucceed(ctx: Record<string, any>): boolean {\n if (ctx.errored || ctx.__success === false) {\n return false;\n }\n\n const inquiryMeta =\n ctx.__inquiryMeta && typeof ctx.__inquiryMeta === \"object\"\n ? (ctx.__inquiryMeta as Record<string, unknown>)\n : null;\n\n if (!inquiryMeta) {\n return true;\n }\n\n const eligibleResponders = Number(inquiryMeta.eligibleResponders);\n if (Number.isFinite(eligibleResponders) && eligibleResponders === 0) {\n return false;\n }\n\n const responded = Number(inquiryMeta.responded);\n if (Number.isFinite(responded) && responded === 0) {\n return false;\n }\n\n return true;\n}\n\nfunction buildMinimalSyncSignalContext(\n ctx: Record<string, unknown>,\n extra: Record<string, unknown> = {},\n): Record<string, unknown> {\n const nextContext: Record<string, unknown> = {\n __syncing: ctx.__syncing === true,\n ...extra,\n };\n\n if (typeof ctx.__reason === \"string\" && ctx.__reason.trim().length > 0) {\n nextContext.__reason = ctx.__reason;\n }\n\n return nextContext;\n}\n\nfunction buildSyncInsertQueryData(\n ctx: Record<string, any>,\n queryData: Record<string, unknown> = {},\n): Record<string, unknown> {\n const pickQueryData = (\n source: Record<string, unknown>,\n allowedKeys: string[],\n ): Record<string, unknown> => {\n const next: Record<string, unknown> = {};\n\n for (const key of allowedKeys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n next[key] = source[key];\n }\n }\n\n return next;\n };\n const joinedQueryData = getJoinedContextValue(ctx, \"queryData\");\n const existingQueryData =\n ctx.queryData && typeof ctx.queryData === \"object\"\n ? ctx.queryData\n : joinedQueryData && typeof joinedQueryData === \"object\"\n ? joinedQueryData\n : {};\n const nextQueryData: Record<string, unknown> = {\n ...pickQueryData(existingQueryData, [\"transaction\"]),\n ...queryData,\n };\n const resolvedData =\n Object.prototype.hasOwnProperty.call(ctx, \"data\") || ctx.data !== undefined\n ? ctx.data\n : getJoinedContextValue(ctx, \"data\");\n const resolvedBatch =\n Object.prototype.hasOwnProperty.call(ctx, \"batch\") || ctx.batch !== undefined\n ? ctx.batch\n : getJoinedContextValue(ctx, \"batch\");\n\n if (resolvedData !== undefined) {\n nextQueryData.data =\n resolvedData && typeof resolvedData === \"object\" && !Array.isArray(resolvedData)\n ? { ...resolvedData }\n : resolvedData;\n } else {\n delete nextQueryData.data;\n }\n\n if (resolvedBatch !== undefined) {\n nextQueryData.batch = Array.isArray(resolvedBatch)\n ? resolvedBatch.map((row: unknown) =>\n row && typeof row === \"object\"\n ? { ...(row as Record<string, unknown>) }\n : row,\n )\n : resolvedBatch;\n } else {\n delete nextQueryData.batch;\n }\n\n return nextQueryData;\n}\n\nfunction buildSyncQueryQueryData(\n ctx: Record<string, any>,\n queryData: Record<string, unknown> = {},\n): Record<string, unknown> {\n const joinedQueryData = getJoinedContextValue(ctx, \"queryData\");\n const existingQueryData =\n ctx.queryData && typeof ctx.queryData === \"object\"\n ? ctx.queryData\n : joinedQueryData && typeof joinedQueryData === \"object\"\n ? joinedQueryData\n : {};\n const nextQueryData: Record<string, unknown> = {};\n const allowedKeys = [\n \"transaction\",\n \"filter\",\n \"fields\",\n \"joins\",\n \"sort\",\n \"limit\",\n \"offset\",\n \"queryMode\",\n \"aggregates\",\n \"groupBy\",\n ];\n\n for (const key of allowedKeys) {\n if (Object.prototype.hasOwnProperty.call(existingQueryData, key)) {\n nextQueryData[key] = existingQueryData[key];\n }\n }\n\n return {\n ...nextQueryData,\n ...queryData,\n };\n}\n\ntype SyncTaskGraph = {\n entryTask: Task;\n completionTask: Task;\n};\n\nconst REMOTE_AUTHORITY_SYNC_INSERT_CONCURRENCY = 5;\nconst REMOTE_AUTHORITY_SYNC_QUERY_CONCURRENCY = 3;\n\nfunction wireSyncTaskGraph(\n predecessorTask: Task,\n graph: SyncTaskGraph | undefined,\n ...completionTasks: (Task | undefined)[]\n): Task | undefined {\n if (!graph) {\n return undefined;\n }\n\n predecessorTask.then(graph.entryTask);\n if (completionTasks.length > 0) {\n graph.completionTask.then(...completionTasks);\n }\n\n return graph.completionTask;\n}\n\nfunction buildSyncExecutionEnvelope(\n ctx: Record<string, any>,\n queryData: Record<string, unknown>,\n): Record<string, unknown> {\n const originalContext = { ...ctx };\n const syncSourceServiceName =\n typeof ctx.__syncSourceServiceName === \"string\" &&\n ctx.__syncSourceServiceName.trim().length > 0\n ? ctx.__syncSourceServiceName\n : typeof ctx.__serviceName === \"string\" && ctx.__serviceName.trim().length > 0\n ? ctx.__serviceName\n : resolveSyncServiceName();\n const rootDbOperationFields: Record<string, unknown> = {};\n for (const key of [\n \"data\",\n \"batch\",\n \"transaction\",\n \"onConflict\",\n \"filter\",\n \"fields\",\n ] as const) {\n if (Object.prototype.hasOwnProperty.call(queryData, key)) {\n rootDbOperationFields[key] = queryData[key];\n }\n }\n const nextContext: Record<string, unknown> = {\n __syncing:\n ctx.__syncing === true || ctx.__metadata?.__syncing === true || false,\n __syncSourceServiceName: syncSourceServiceName,\n __preferredTransportProtocol: \"rest\",\n __resolverOriginalContext: originalContext,\n __resolverQueryData: queryData,\n ...rootDbOperationFields,\n queryData,\n };\n\n if (typeof ctx.__reason === \"string\" && ctx.__reason.trim().length > 0) {\n nextContext.__reason = ctx.__reason;\n }\n\n return nextContext;\n}\n\nfunction markCompletedSyncCycle(\n completedCycles: Set<string>,\n cycleId: string,\n limit = 32,\n): boolean {\n if (!cycleId) {\n return false;\n }\n\n if (completedCycles.has(cycleId)) {\n return false;\n }\n\n completedCycles.add(cycleId);\n while (completedCycles.size > limit) {\n const oldestCycleId = completedCycles.values().next().value as\n | string\n | undefined;\n if (!oldestCycleId) {\n break;\n }\n\n completedCycles.delete(oldestCycleId);\n }\n\n return true;\n}\n\nfunction resolveSyncInsertTask(\n isCadenzaDBReady: boolean,\n tableName: string,\n queryData: Record<string, unknown> = {},\n options: Record<string, unknown> = {},\n): SyncTaskGraph | undefined {\n const localInsertTask = Cadenza.getLocalCadenzaDBInsertTask(tableName);\n\n if (isCadenzaDBReady && !localInsertTask) {\n return undefined;\n }\n const targetTask =\n localInsertTask ??\n Cadenza.createCadenzaDBInsertTask(tableName, queryData, {\n ...options,\n concurrency:\n Number(options.concurrency) > 0\n ? Math.min(\n Number(options.concurrency),\n REMOTE_AUTHORITY_SYNC_INSERT_CONCURRENCY,\n )\n : REMOTE_AUTHORITY_SYNC_INSERT_CONCURRENCY,\n register: false,\n isHidden: true,\n });\n\n const prepareExecutionTask = Cadenza.createMetaTask(\n `Prepare graph sync insert for ${tableName}`,\n (ctx) => {\n const originalQueryData = buildSyncInsertQueryData(\n ctx as Record<string, any>,\n queryData,\n );\n\n if (\n (tableName === \"signal_registry\" ||\n tableName === \"directional_task_graph_map\") &&\n originalQueryData.data &&\n typeof originalQueryData.data === \"object\" &&\n !Array.isArray(originalQueryData.data) &&\n Object.keys(originalQueryData.data as Record<string, unknown>).length === 0\n ) {\n console.warn(\n \"[CADENZA_SYNC_EMPTY_INSERT]\",\n {\n tableName,\n queryData: originalQueryData,\n ctx,\n joinedContexts: Array.isArray((ctx as Record<string, any>).joinedContexts)\n ? (ctx as Record<string, any>).joinedContexts\n : [],\n },\n );\n }\n\n return buildSyncExecutionEnvelope(\n ctx as Record<string, any>,\n originalQueryData,\n );\n },\n `Prepares ${tableName} graph-sync insert payloads for runner execution.`,\n {\n register: false,\n isHidden: true,\n },\n );\n\n const finalizeExecutionTask = Cadenza.createMetaTask(\n `Finalize graph sync insert for ${tableName}`,\n (ctx) => {\n const originalContext =\n ctx.__resolverOriginalContext &&\n typeof ctx.__resolverOriginalContext === \"object\"\n ? (ctx.__resolverOriginalContext as Record<string, unknown>)\n : {};\n const originalQueryData =\n ctx.__resolverQueryData && typeof ctx.__resolverQueryData === \"object\"\n ? (ctx.__resolverQueryData as Record<string, unknown>)\n : undefined;\n const normalizedContext = {\n ...originalContext,\n ...ctx,\n queryData:\n ctx.queryData && typeof ctx.queryData === \"object\"\n ? ctx.queryData\n : originalQueryData,\n };\n\n if (\n originalContext.__syncing === true &&\n !didSyncInsertSucceed(normalizedContext as Record<string, any>)\n ) {\n Cadenza.debounce(\"meta.sync_requested\", {\n delayMs: 1000,\n });\n }\n\n return normalizedContext;\n },\n `Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,\n {\n register: false,\n isHidden: true,\n },\n );\n\n prepareExecutionTask.then(targetTask);\n targetTask.then(finalizeExecutionTask);\n\n return {\n entryTask: prepareExecutionTask,\n completionTask: finalizeExecutionTask,\n };\n}\n\nconst CADENZA_DB_REQUIRED_LOCAL_SYNC_INSERT_TABLES = [\n \"intent_registry\",\n \"routine\",\n \"task_to_routine_map\",\n \"signal_registry\",\n \"task\",\n \"actor\",\n \"actor_task_map\",\n \"signal_to_task_map\",\n \"intent_to_task_map\",\n \"directional_task_graph_map\",\n] as const;\n\nconst BOOTSTRAP_SYNC_STALE_CYCLE_MS = 15000;\nconst EARLY_SYNC_TICK_DELAYS_MS = [\n 400,\n BOOTSTRAP_SYNC_STALE_CYCLE_MS + 1000,\n BOOTSTRAP_SYNC_STALE_CYCLE_MS * 2 + 2000,\n BOOTSTRAP_SYNC_STALE_CYCLE_MS * 3 + 3000,\n] as const;\n\nfunction getRegistrableTasks(): Task[] {\n return Array.from(Cadenza.registry.tasks.values()).filter(\n (task) => task.register && !task.isHidden && !task.isDeputy,\n );\n}\n\nfunction getRegistrableRoutines() {\n return Array.from(Cadenza.registry.routines.values());\n}\n\nfunction isAuthoritySyncSignal(signalName: string): boolean {\n return decomposeSignalName(signalName).isGlobal;\n}\n\nfunction getRegistrableSignalObservers(): Array<{\n signalName: string;\n registered?: boolean;\n}> {\n const signalObservers = (Cadenza.signalBroker as any)\n .signalObservers as Map<string, { registered?: boolean }> | undefined;\n if (!signalObservers) {\n return [];\n }\n\n return Array.from(signalObservers.entries())\n .filter(([signalName]) => isAuthoritySyncSignal(signalName))\n .map(([signalName, observer]) => ({\n signalName,\n ...observer,\n }));\n}\n\nfunction getRegistrableIntentNames(): string[] {\n return Array.from(Cadenza.inquiryBroker.intents.values())\n .map((intent) => buildIntentRegistryData(intent))\n .filter(\n (intentDefinition): intentDefinition is Record<string, unknown> =>\n intentDefinition !== null,\n )\n .map((intentDefinition) => String(intentDefinition.name));\n}\n\nfunction buildActorRegistrationKey(\n actor: any,\n serviceName: string,\n): string | null {\n const data = buildActorRegistrationData(actor);\n const name =\n typeof data.name === \"string\" && data.name.trim().length > 0\n ? data.name.trim()\n : \"\";\n\n if (!name) {\n return null;\n }\n\n return `${name}|${data.version}|${serviceName}`;\n}\n\nfunction resolveLocalTaskFromSyncContext(ctx: Record<string, any>): Task | undefined {\n const taskName =\n typeof ctx.__taskName === \"string\" && ctx.__taskName.trim().length > 0\n ? ctx.__taskName\n : typeof ctx.data?.name === \"string\" && ctx.data.name.trim().length > 0\n ? ctx.data.name\n : undefined;\n\n return taskName ? Cadenza.get(taskName) : undefined;\n}\n\nfunction resolveLocalRoutineFromSyncContext(\n ctx: Record<string, any>,\n): ReturnType<typeof Cadenza.getRoutine> | undefined {\n const routineName =\n typeof ctx.__routineName === \"string\" && ctx.__routineName.trim().length > 0\n ? ctx.__routineName\n : typeof ctx.data?.name === \"string\" && ctx.data.name.trim().length > 0\n ? ctx.data.name\n : undefined;\n\n return routineName ? Cadenza.getRoutine(routineName) : undefined;\n}\n\nfunction resolveSignalNameFromSyncContext(ctx: Record<string, any>): string | undefined {\n const candidateSignalNames = [\n ctx.signalName,\n ctx.__signal,\n ctx.data?.name,\n ctx.queryData?.data?.name,\n getJoinedContextValue(ctx, \"data\") &&\n typeof getJoinedContextValue(ctx, \"data\") === \"object\"\n ? (getJoinedContextValue(ctx, \"data\") as Record<string, unknown>).name\n : undefined,\n ];\n\n for (const candidate of candidateSignalNames) {\n if (typeof candidate === \"string\" && candidate.trim().length > 0) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nexport default class GraphSyncController {\n private static _instance: GraphSyncController;\n public static get instance(): GraphSyncController {\n if (!this._instance) this._instance = new GraphSyncController();\n return this._instance;\n }\n\n splitSignalsTask: Task | undefined;\n splitTasksForRegistration: Task | undefined;\n splitIntentsTask: Task | undefined;\n registerSignalToTaskMapTask: Task | undefined;\n registerIntentToTaskMapTask: Task | undefined;\n registerTaskMapTask: Task | undefined;\n registerDeputyRelationshipTask: Task | undefined;\n splitRoutinesTask: Task | undefined;\n splitTasksInRoutines: Task | undefined;\n splitActorsForRegistration: Task | undefined;\n registerActorTaskMapTask: Task | undefined;\n\n registeredActors: Set<string> = new Set();\n registeredActorTaskMaps: Set<string> = new Set();\n registeredIntentDefinitions: Set<string> = new Set();\n tasksSynced: boolean = false;\n actorsSynced: boolean = false;\n signalsSynced: boolean = false;\n intentsSynced: boolean = false;\n routinesSynced: boolean = false;\n directionalTaskMapsSynced: boolean = false;\n signalTaskMapsSynced: boolean = false;\n intentTaskMapsSynced: boolean = false;\n actorTaskMapsSynced: boolean = false;\n routineTaskMapsSynced: boolean = false;\n\n isCadenzaDBReady: boolean = false;\n initialized: boolean = false;\n initRetryScheduled: boolean = false;\n initRetryTask: Task | undefined;\n lastMissingLocalCadenzaDBInsertTablesKey: string = \"\";\n syncCycleCounter: number = 0;\n primitivePhaseCompletedCycles: Set<string> = new Set();\n mapPhaseCompletedCycles: Set<string> = new Set();\n activeSyncCycleId: string | null = null;\n activeSyncCycleStartedAt: number = 0;\n pendingBootstrapSyncRerun: boolean = false;\n localServiceInserted: boolean = false;\n localServiceInstanceInserted: boolean = false;\n\n private getMissingLocalCadenzaDBInsertTables(): string[] {\n return CADENZA_DB_REQUIRED_LOCAL_SYNC_INSERT_TABLES.filter(\n (tableName) => !Cadenza.getLocalCadenzaDBInsertTask(tableName),\n );\n }\n\n private ensureRetryInitTask(): Task {\n if (this.initRetryTask) {\n return this.initRetryTask;\n }\n\n this.initRetryTask =\n Cadenza.get(\"Retry graph sync init\") ??\n Cadenza.createUniqueMetaTask(\n \"Retry graph sync init\",\n () => {\n this.initRetryScheduled = false;\n this.init();\n return true;\n },\n \"Retries graph sync controller initialization once local authority tasks exist.\",\n ).doOn(\"meta.sync_controller.init_retry\");\n\n return this.initRetryTask;\n }\n\n init() {\n if (this.initialized) {\n return;\n }\n\n const serviceName = resolveSyncServiceName();\n if (serviceName === \"CadenzaDB\") {\n const missingLocalInsertTables = this.getMissingLocalCadenzaDBInsertTables();\n if (missingLocalInsertTables.length > 0) {\n this.ensureRetryInitTask();\n const missingKey = missingLocalInsertTables.join(\",\");\n if (missingKey !== this.lastMissingLocalCadenzaDBInsertTablesKey) {\n this.lastMissingLocalCadenzaDBInsertTablesKey = missingKey;\n Cadenza.log(\n \"Waiting for local CadenzaDB sync insert tasks before initializing graph sync controller.\",\n {\n missingLocalInsertTables,\n },\n \"info\",\n );\n }\n\n if (!this.initRetryScheduled) {\n this.initRetryScheduled = true;\n Cadenza.schedule(\n \"meta.sync_controller.init_retry\",\n {\n __missingLocalInsertTables: missingLocalInsertTables,\n },\n 250,\n );\n }\n return;\n }\n\n this.lastMissingLocalCadenzaDBInsertTablesKey = \"\";\n }\n\n this.initialized = true;\n const insertIntentRegistryTask = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"intent_registry\",\n {\n onConflict: {\n target: [\"name\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const finalizeTaskSync = (emit: any, ctx: Record<string, unknown>) => {\n const pendingTasks = getRegistrableTasks().filter((task) => !task.registered);\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (pendingTasks.length > 0) {\n this.tasksSynced = false;\n return false;\n }\n\n const shouldEmit = !this.tasksSynced;\n this.tasksSynced = true;\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_tasks\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const finalizeRoutineSync = (emit: any, ctx: Record<string, unknown>) => {\n const pendingRoutines = getRegistrableRoutines().filter(\n (routine) => !routine.registered,\n );\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (pendingRoutines.length > 0) {\n this.routinesSynced = false;\n return false;\n }\n\n const shouldEmit = !this.routinesSynced;\n this.routinesSynced = true;\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_routines\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const finalizeSignalSync = (emit: any, ctx: Record<string, unknown>) => {\n const pendingSignals = getRegistrableSignalObservers().filter(\n (observer) => observer.registered !== true,\n );\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (pendingSignals.length > 0) {\n this.signalsSynced = false;\n return false;\n }\n\n const shouldEmit = !this.signalsSynced;\n this.signalsSynced = true;\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_signals\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const finalizeIntentSync = (emit: any, ctx: Record<string, unknown>) => {\n const pendingIntentNames = getRegistrableIntentNames().filter(\n (intentName) => !this.registeredIntentDefinitions.has(intentName),\n );\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (pendingIntentNames.length > 0) {\n this.intentsSynced = false;\n return false;\n }\n\n const shouldEmit = !this.intentsSynced;\n this.intentsSynced = true;\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_intents\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const finalizeActorSync = (emit: any, ctx: Record<string, unknown>) => {\n const syncServiceName = resolveSyncServiceName();\n if (!syncServiceName) {\n this.actorsSynced = false;\n return false;\n }\n\n const pendingActorKeys = Cadenza.getAllActors()\n .map((actor) => buildActorRegistrationKey(actor, syncServiceName))\n .filter((registrationKey): registrationKey is string => Boolean(registrationKey))\n .filter((registrationKey) => !this.registeredActors.has(registrationKey));\n\n if (pendingActorKeys.length > 0) {\n this.actorsSynced = false;\n return false;\n }\n\n const shouldEmit = !this.actorsSynced;\n this.actorsSynced = true;\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_actors\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const gatherTaskRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather task registration\",\n (ctx, emit) => finalizeTaskSync(emit, ctx),\n \"Completes task registration when all registrable tasks are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherRoutineRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather routine registration\",\n (ctx, emit) => finalizeRoutineSync(emit, ctx),\n \"Completes routine registration when all registrable routines are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherSignalRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather signal registration\",\n (ctx, emit) => finalizeSignalSync(emit, ctx),\n \"Completes signal registration when all signal observers are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherIntentRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather intent registration\",\n (ctx, emit) => finalizeIntentSync(emit, ctx),\n \"Completes intent registration when all registrable intents are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherActorRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather actor registration\",\n (ctx, emit) => finalizeActorSync(emit, ctx),\n \"Completes actor registration when all registrable actors are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n this.splitRoutinesTask = Cadenza.createMetaTask(\n \"Split routines for registration\",\n function* (this: GraphSyncController, ctx: any) {\n const { routines } = ctx;\n if (!routines) return;\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return;\n }\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 2000,\n });\n\n for (const routine of routines) {\n if (routine.registered) continue;\n this.routinesSynced = false;\n yield {\n __syncing: ctx.__syncing,\n data: {\n name: routine.name,\n version: routine.version,\n description: routine.description,\n serviceName,\n isMeta: routine.isMeta,\n },\n __routineName: routine.name,\n };\n }\n }.bind(this),\n );\n\n const routineRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"routine\",\n {\n onConflict: {\n target: [\"name\", \"version\", \"service_name\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const registerRoutineTask = Cadenza.createMetaTask(\"Register routine\", (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n const routine = resolveLocalRoutineFromSyncContext(ctx);\n if (!routine) {\n return true;\n }\n routine.registered = true;\n\n return true;\n }).then(gatherRoutineRegistrationTask);\n wireSyncTaskGraph(this.splitRoutinesTask, routineRegistrationGraph, registerRoutineTask);\n\n this.splitTasksInRoutines = Cadenza.createMetaTask(\n \"Split tasks in routines\",\n function* (ctx: any) {\n const { routines } = ctx;\n if (!routines) return;\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return;\n }\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n for (const routine of routines) {\n if (!routine.registered) continue;\n\n for (const task of routine.tasks) {\n if (!task) {\n continue;\n }\n\n if (routine.registeredTasks.has(task.name)) continue;\n\n const tasks = task.getIterator();\n\n while (tasks.hasNext()) {\n const nextTask = tasks.next();\n if (!nextTask?.registered) {\n continue;\n }\n\n yield {\n __syncing: ctx.__syncing,\n data: {\n taskName: nextTask.name,\n taskVersion: nextTask.version,\n routineName: routine.name,\n routineVersion: routine.version,\n serviceName,\n },\n __routineName: routine.name,\n __taskName: nextTask.name,\n };\n }\n }\n }\n },\n );\n\n const registerTaskToRoutineMapGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"task_to_routine_map\",\n {\n onConflict: {\n target: [\n \"task_name\",\n \"routine_name\",\n \"task_version\",\n \"routine_version\",\n \"service_name\",\n ],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const registerTaskToRoutineMapTask = Cadenza.createMetaTask(\n \"Register routine task\",\n (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 2000,\n });\n const routine = resolveLocalRoutineFromSyncContext(ctx);\n if (!routine) {\n return true;\n }\n routine.registeredTasks.add(ctx.__taskName);\n },\n );\n wireSyncTaskGraph(\n this.splitTasksInRoutines,\n registerTaskToRoutineMapGraph,\n registerTaskToRoutineMapTask,\n );\n\n this.splitSignalsTask = Cadenza.createMetaTask(\n \"Split signals for registration\",\n function* (this: GraphSyncController, ctx: any) {\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n const { signals } = ctx;\n if (!signals) return;\n\n const filteredSignals = signals\n .filter((signal: { signal: string; data: any }) => {\n if (signal.data.registered) {\n return false;\n }\n\n return isAuthoritySyncSignal(signal.signal);\n })\n .map((signal: { signal: string; data: any }) => signal.signal);\n\n for (const signal of filteredSignals) {\n const { isMeta, isGlobal, domain, action } =\n decomposeSignalName(signal);\n this.signalsSynced = false;\n\n yield {\n __syncing: ctx.__syncing,\n data: {\n name: signal,\n isGlobal,\n domain,\n action,\n isMeta,\n },\n __signal: signal,\n };\n }\n }.bind(this),\n );\n\n const signalRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"signal_registry\",\n {\n onConflict: {\n target: [\"name\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const processSignalRegistrationTask = Cadenza.createMetaTask(\n \"Process signal registration\",\n (ctx, emit) => {\n const insertSucceeded = didSyncInsertSucceed(ctx);\n const signalName = resolveSignalNameFromSyncContext(ctx);\n\n if (!insertSucceeded) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n if (!signalName) {\n return false;\n }\n\n const signalObservers = (Cadenza.signalBroker as any).signalObservers;\n if (!signalObservers?.has(signalName)) {\n Cadenza.signalBroker.addSignal(signalName);\n }\n\n const observer = signalObservers?.get(signalName);\n if (observer) {\n observer.registered = true;\n }\n\n emit(\n \"meta.sync_controller.signal_registered\",\n buildMinimalSyncSignalContext(ctx, {\n __signal: signalName,\n }),\n );\n\n return { signalName };\n },\n )\n .then(Cadenza.signalBroker.registerSignalTask!)\n .then(gatherSignalRegistrationTask);\n wireSyncTaskGraph(\n this.splitSignalsTask,\n signalRegistrationGraph,\n processSignalRegistrationTask,\n );\n\n this.splitTasksForRegistration = Cadenza.createMetaTask(\n \"Split tasks for registration\",\n function* (this: GraphSyncController, ctx: any) {\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n const tasks = ctx.tasks;\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return;\n }\n\n for (const task of tasks) {\n if (task.hidden || !task.register || task.isDeputy) continue;\n if (task.registered) continue;\n const { __functionString, __getTagCallback } = task.export();\n this.tasksSynced = false;\n\n yield {\n __syncing: ctx.__syncing,\n data: {\n name: task.name,\n version: task.version,\n description: task.description,\n functionString: __functionString,\n tagIdGetter: __getTagCallback,\n layerIndex: task.layerIndex,\n concurrency: task.concurrency,\n timeout: task.timeout,\n isUnique: task.isUnique,\n isSignal: task.isSignal,\n isThrottled: task.isThrottled,\n isDebounce: task.isDebounce,\n isEphemeral: task.isEphemeral,\n isMeta: task.isMeta,\n isSubMeta: task.isSubMeta,\n isHidden: task.isHidden,\n validateInputContext: task.validateInputContext,\n validateOutputContext: task.validateOutputContext,\n retryCount: task.retryCount,\n retryDelay: task.retryDelay,\n retryDelayMax: task.retryDelayMax,\n retryDelayFactor: task.retryDelayFactor,\n service_name: serviceName,\n signals: {\n emits: Array.from(task.emitsSignals),\n signalsToEmitAfter: Array.from(task.signalsToEmitAfter),\n signalsToEmitOnFail: Array.from(task.signalsToEmitOnFail),\n observed: Array.from(task.observedSignals),\n },\n intents: Array.from(task.handlesIntents),\n },\n __taskName: task.name,\n };\n }\n }.bind(this),\n );\n\n const registerTaskGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"task\",\n {\n onConflict: {\n target: [\"name\", \"service_name\", \"version\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const registerTaskTask = Cadenza.createMetaTask(\n \"Record registration\",\n (ctx, emit) => {\n const task = resolveLocalTaskFromSyncContext(ctx);\n const serviceName = resolveSyncServiceName(task);\n const insertSucceeded = didSyncInsertSucceed(ctx);\n\n if (!insertSucceeded) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n if (!task) {\n return true;\n }\n\n task.registered = true;\n emit(\n \"meta.sync_controller.task_registered\",\n buildMinimalSyncSignalContext(ctx, {\n __taskName: ctx.__taskName,\n }),\n );\n\n return true;\n },\n ).then(gatherTaskRegistrationTask);\n wireSyncTaskGraph(this.splitTasksForRegistration, registerTaskGraph, registerTaskTask);\n\n this.splitActorsForRegistration = Cadenza.createMetaTask(\n \"Split actors for registration\",\n function* (this: GraphSyncController, ctx: any) {\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return;\n }\n\n const actors = ctx.actors ?? [];\n for (const actor of actors) {\n const data: Record<string, any> = {\n ...buildActorRegistrationData(actor),\n service_name: serviceName,\n };\n if (!data.name) {\n continue;\n }\n\n const registrationKey = `${data.name}|${data.version}|${data.service_name}`;\n if (this.registeredActors.has(registrationKey)) {\n continue;\n }\n this.actorsSynced = false;\n\n yield {\n data,\n __actorRegistrationKey: registrationKey,\n };\n }\n }.bind(this),\n );\n const actorRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"actor\",\n {\n onConflict: {\n target: [\"name\", \"service_name\", \"version\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const recordActorRegistrationTask = Cadenza.createMetaTask(\n \"Record actor registration\",\n (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n this.registeredActors.add(ctx.__actorRegistrationKey);\n return true;\n },\n ).then(gatherActorRegistrationTask);\n wireSyncTaskGraph(\n this.splitActorsForRegistration,\n actorRegistrationGraph,\n recordActorRegistrationTask,\n );\n\n this.registerActorTaskMapTask = Cadenza.createMetaTask(\n \"Split actor task maps\",\n function* (this: GraphSyncController, ctx: any) {\n const task = ctx.task;\n if (!this.tasksSynced || !this.actorsSynced) {\n return;\n }\n\n if (task.hidden || !task.register || !task.registered) {\n return;\n }\n\n const metadata = getActorTaskRuntimeMetadata(task.taskFunction);\n if (!metadata?.actorName) {\n return;\n }\n\n const serviceName = resolveSyncServiceName(task);\n if (!serviceName) {\n return;\n }\n\n const registrationKey = `${metadata.actorName}|${task.name}|${task.version}|${serviceName}`;\n if (this.registeredActorTaskMaps.has(registrationKey)) {\n return;\n }\n\n yield {\n data: {\n actor_name: metadata.actorName,\n actor_version: 1,\n task_name: task.name,\n task_version: task.version,\n service_name: serviceName,\n mode: metadata.mode,\n description: task.description ?? metadata.actorDescription ?? \"\",\n is_meta: metadata.actorKind === \"meta\" || task.isMeta === true,\n },\n __actorTaskMapRegistrationKey: registrationKey,\n };\n }.bind(this),\n );\n const actorTaskMapRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"actor_task_map\",\n {\n onConflict: {\n target: [\n \"actor_name\",\n \"actor_version\",\n \"task_name\",\n \"task_version\",\n \"service_name\",\n ],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const recordActorTaskMapRegistrationTask = Cadenza.createMetaTask(\n \"Record actor task map registration\",\n (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n this.registeredActorTaskMaps.add(ctx.__actorTaskMapRegistrationKey);\n },\n );\n wireSyncTaskGraph(\n this.registerActorTaskMapTask,\n actorTaskMapRegistrationGraph,\n recordActorTaskMapRegistrationTask,\n );\n\n const registerSignalTask = Cadenza.createMetaTask(\n \"Record signal registration\",\n (ctx) => {\n const task = resolveLocalTaskFromSyncContext(ctx);\n const serviceName = resolveSyncServiceName(task);\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n const signalName = resolveSignalNameFromSyncContext(ctx);\n if (!task || !signalName) {\n return true;\n }\n\n task.registeredSignals.add(signalName);\n },\n );\n\n this.registerSignalToTaskMapTask = Cadenza.createMetaTask(\n \"Split observed signals of task\",\n function* (ctx) {\n const task = ctx.task;\n if (task.hidden || !task.register || task.isDeputy || !task.registered)\n return false;\n\n const serviceName = resolveSyncServiceName(task);\n if (!serviceName) {\n return false;\n }\n\n let emittedCount = 0;\n for (const signal of task.observedSignals) {\n const _signal = signal.split(\":\")[0];\n if (task.registeredSignals.has(signal)) continue;\n if (\n !(Cadenza.signalBroker as any).signalObservers?.get(_signal)\n ?.registered\n ) {\n continue;\n }\n\n const { isGlobal } = decomposeSignalName(_signal);\n if (!isGlobal) {\n continue;\n }\n\n yield {\n __syncing: ctx.__syncing,\n data: {\n signalName: _signal,\n isGlobal,\n taskName: task.name,\n taskVersion: task.version,\n serviceName,\n },\n __taskName: task.name,\n __signal: signal,\n };\n emittedCount += 1;\n }\n return emittedCount > 0;\n },\n );\n const signalToTaskMapGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"signal_to_task_map\",\n {\n onConflict: {\n target: [\n \"task_name\",\n \"task_version\",\n \"service_name\",\n \"signal_name\",\n ],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n wireSyncTaskGraph(\n this.registerSignalToTaskMapTask,\n signalToTaskMapGraph,\n registerSignalTask,\n );\n\n this.splitIntentsTask = Cadenza.createMetaTask(\n \"Split intents for registration\",\n function* (this: GraphSyncController, ctx: any) {\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n const intents = Array.isArray(ctx.intents)\n ? ctx.intents\n : Array.from(Cadenza.inquiryBroker.intents.values());\n\n for (const intent of intents) {\n const intentData = buildIntentRegistryData(intent);\n if (!intentData) {\n continue;\n }\n\n if (this.registeredIntentDefinitions.has(intentData.name as string)) {\n continue;\n }\n\n this.intentsSynced = false;\n yield {\n __syncing: ctx.__syncing,\n data: intentData,\n __intentName: intentData.name,\n };\n }\n }.bind(this),\n );\n\n const recordIntentDefinitionRegistrationTask = Cadenza.createMetaTask(\n \"Record intent definition registration\",\n (ctx, emit) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n this.registeredIntentDefinitions.add(ctx.__intentName);\n\n emit(\n \"meta.sync_controller.intent_registered\",\n buildMinimalSyncSignalContext(ctx, {\n __intentName: ctx.__intentName,\n }),\n );\n\n return true;\n },\n ).then(gatherIntentRegistrationTask);\n wireSyncTaskGraph(\n this.splitIntentsTask,\n insertIntentRegistryTask,\n recordIntentDefinitionRegistrationTask,\n );\n\n const registerIntentTask = Cadenza.createMetaTask(\n \"Record intent registration\",\n (ctx) => {\n const task = resolveLocalTaskFromSyncContext(ctx) as any;\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n if (!task) {\n return true;\n }\n task.__registeredIntents = task.__registeredIntents ?? new Set<string>();\n task.__registeredIntents.add(ctx.__intent);\n },\n );\n\n this.registerIntentToTaskMapTask = Cadenza.createMetaTask(\n \"Split intents of task\",\n function* (this: GraphSyncController, ctx: any) {\n const task = ctx.task as any;\n if (task.hidden || !task.register || task.isDeputy || !task.registered)\n return false;\n\n const serviceName = resolveSyncServiceName(task);\n if (!serviceName) {\n return false;\n }\n\n task.__registeredIntents = task.__registeredIntents ?? new Set<string>();\n task.__invalidMetaIntentWarnings =\n task.__invalidMetaIntentWarnings ?? new Set<string>();\n let emittedCount = 0;\n for (const intent of task.handlesIntents as Set<string>) {\n if (task.__registeredIntents.has(intent)) continue;\n\n if (isLocalOnlySyncIntent(intent)) {\n continue;\n }\n\n if (isMetaIntentName(intent) && !task.isMeta) {\n if (!task.__invalidMetaIntentWarnings.has(intent)) {\n task.__invalidMetaIntentWarnings.add(intent);\n Cadenza.log(\n \"Skipping intent-to-task registration: non-meta task cannot handle meta intent.\",\n {\n intent,\n taskName: task.name,\n taskVersion: task.version,\n },\n \"warning\",\n );\n }\n continue;\n }\n\n const intentDefinition =\n buildIntentRegistryData(Cadenza.inquiryBroker.intents.get(intent)) ??\n buildIntentRegistryData({ name: intent });\n if (!intentDefinition) {\n continue;\n }\n\n yield {\n __syncing: ctx.__syncing,\n data: {\n intentName: intent,\n taskName: task.name,\n taskVersion: task.version,\n serviceName,\n },\n __taskName: task.name,\n __intent: intent,\n __intentDefinition: intentDefinition,\n __intentMapData: {\n intentName: intent,\n taskName: task.name,\n taskVersion: task.version,\n serviceName,\n },\n };\n emittedCount += 1;\n }\n\n return emittedCount > 0;\n }.bind(this),\n );\n const intentToTaskMapGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"intent_to_task_map\",\n {\n onConflict: {\n target: [\n \"intent_name\",\n \"task_name\",\n \"task_version\",\n \"service_name\",\n ],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n wireSyncTaskGraph(\n this.registerIntentToTaskMapTask,\n intentToTaskMapGraph,\n registerIntentTask,\n );\n\n this.registerTaskMapTask = Cadenza.createMetaTask(\n \"Register task map to DB\",\n function* (ctx) {\n const task = ctx.task;\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n if (task.hidden || !task.register || task.isDeputy) return;\n\n const predecessorServiceName = resolveSyncServiceName(task);\n if (!predecessorServiceName) {\n return;\n }\n for (const t of task.nextTasks) {\n if (\n task.taskMapRegistration.has(t.name) ||\n t.hidden ||\n !t.register ||\n !t.registered\n ) {\n continue;\n }\n\n const serviceName = resolveSyncServiceName(t as any);\n if (!serviceName) {\n continue;\n }\n\n yield {\n data: {\n taskName: t.name,\n taskVersion: t.version,\n predecessorTaskName: task.name,\n predecessorTaskVersion: task.version,\n serviceName,\n predecessorServiceName,\n },\n __taskName: task.name,\n __nextTaskName: t.name,\n };\n }\n },\n );\n const taskMapRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"directional_task_graph_map\",\n {\n onConflict: {\n target: [\n \"task_name\",\n \"predecessor_task_name\",\n \"task_version\",\n \"predecessor_task_version\",\n \"service_name\",\n \"predecessor_service_name\",\n ],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const recordTaskMapRegistrationTask = Cadenza.createMetaTask(\n \"Record task map registration\",\n (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n Cadenza.get(ctx.__taskName)?.taskMapRegistration.add(\n ctx.__nextTaskName,\n );\n },\n );\n wireSyncTaskGraph(\n this.registerTaskMapTask,\n taskMapRegistrationGraph,\n recordTaskMapRegistrationTask,\n );\n\n this.registerDeputyRelationshipTask = Cadenza.createMetaTask(\n \"Register deputy relationship\",\n (ctx) => {\n const task = ctx.task;\n if (task.hidden || !task.register) return;\n\n if (task.isDeputy && !task.signalName) {\n if (task.registeredDeputyMap) return;\n\n const serviceName = resolveSyncServiceName(task);\n const predecessorServiceName = resolveSyncServiceName();\n if (!serviceName || !predecessorServiceName) {\n return;\n }\n\n return {\n data: {\n task_name: task.remoteRoutineName,\n task_version: 1,\n service_name: serviceName,\n predecessor_task_name: task.name,\n predecessor_task_version: task.version,\n predecessor_service_name: predecessorServiceName,\n },\n __taskName: task.name,\n };\n }\n },\n );\n const deputyRelationshipRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"directional_task_graph_map\",\n {\n onConflict: {\n target: [\n \"task_name\",\n \"predecessor_task_name\",\n \"task_version\",\n \"predecessor_task_version\",\n \"service_name\",\n \"predecessor_service_name\",\n ],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const recordDeputyRelationshipRegistrationTask = Cadenza.createMetaTask(\n \"Record deputy relationship registration\",\n (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n Cadenza.debounce(\"meta.sync_controller.synced_resource\", {\n delayMs: 3000,\n });\n\n const task = resolveLocalTaskFromSyncContext(ctx) as DeputyTask | undefined;\n if (!task) {\n return true;\n }\n task.registeredDeputyMap = true;\n },\n );\n wireSyncTaskGraph(\n this.registerDeputyRelationshipTask,\n deputyRelationshipRegistrationGraph,\n recordDeputyRelationshipRegistrationTask,\n );\n\n const hasPendingDirectionalTaskMaps = () =>\n getRegistrableTasks().some((task) => {\n const taskWithDeputyState = task as Task & {\n signalName?: string;\n registeredDeputyMap?: boolean;\n };\n if (task.isHidden || !task.register || !task.registered) {\n return false;\n }\n\n const predecessorServiceName = resolveSyncServiceName(task);\n if (!predecessorServiceName) {\n return false;\n }\n\n for (const nextTask of task.nextTasks) {\n if (\n task.taskMapRegistration.has(nextTask.name) ||\n nextTask.isHidden ||\n !nextTask.register ||\n !nextTask.registered\n ) {\n continue;\n }\n\n if (resolveSyncServiceName(nextTask)) {\n return true;\n }\n }\n\n if (\n task.isDeputy &&\n !taskWithDeputyState.signalName &&\n !taskWithDeputyState.registeredDeputyMap\n ) {\n return Boolean(resolveSyncServiceName(task) && resolveSyncServiceName());\n }\n\n return false;\n });\n\n const hasPendingSignalTaskMaps = () =>\n getRegistrableTasks().some((task) => {\n if (task.isHidden || !task.register || !task.registered) {\n return false;\n }\n\n for (const signal of task.observedSignals) {\n if (task.registeredSignals.has(signal)) {\n continue;\n }\n\n const signalName = signal.split(\":\")[0];\n if (!decomposeSignalName(signalName).isGlobal) {\n continue;\n }\n\n if (\n !(Cadenza.signalBroker as any).signalObservers?.get(signalName)\n ?.registered\n ) {\n continue;\n }\n\n return true;\n }\n\n return false;\n });\n\n const hasPendingIntentTaskMaps = () =>\n getRegistrableTasks().some((task) => {\n if (task.isHidden || !task.register || !task.registered) {\n return false;\n }\n\n const registeredIntents =\n ((task as any).__registeredIntents as Set<string> | undefined) ??\n new Set<string>();\n\n for (const intent of task.handlesIntents) {\n if (registeredIntents.has(intent) || isLocalOnlySyncIntent(intent)) {\n continue;\n }\n\n if (isMetaIntentName(intent) && !task.isMeta) {\n continue;\n }\n\n const intentDefinition =\n buildIntentRegistryData(Cadenza.inquiryBroker.intents.get(intent)) ??\n buildIntentRegistryData({ name: intent });\n\n if (!intentDefinition) {\n continue;\n }\n\n return true;\n }\n\n return false;\n });\n\n const hasPendingActorTaskMaps = () =>\n getRegistrableTasks().some((task) => {\n if (task.isHidden || !task.register || !task.registered) {\n return false;\n }\n\n const metadata = getActorTaskRuntimeMetadata(task.taskFunction);\n if (!metadata?.actorName) {\n return false;\n }\n\n const serviceName = resolveSyncServiceName(task);\n if (!serviceName) {\n return false;\n }\n\n const registrationKey = `${metadata.actorName}|${task.name}|${task.version}|${serviceName}`;\n return !this.registeredActorTaskMaps.has(registrationKey);\n });\n\n const hasPendingRoutineTaskMaps = () =>\n getRegistrableRoutines().some((routine: any) => {\n if (!routine.registered) {\n return false;\n }\n\n for (const task of routine.tasks) {\n if (!task) {\n continue;\n }\n\n const tasks = task.getIterator();\n while (tasks.hasNext()) {\n const nextTask = tasks.next();\n if (!nextTask?.registered) {\n continue;\n }\n\n if (!routine.registeredTasks.has(nextTask.name)) {\n return true;\n }\n }\n }\n\n return false;\n });\n\n const gatherDirectionalTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather directional task map registration\",\n (ctx) => {\n if (hasPendingDirectionalTaskMaps()) {\n this.directionalTaskMapsSynced = false;\n return false;\n }\n\n this.directionalTaskMapsSynced = true;\n return ctx;\n },\n \"Completes directional task graph registration when task edges and deputy edges are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherSignalTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather signal task map registration\",\n (ctx) => {\n if (hasPendingSignalTaskMaps()) {\n this.signalTaskMapsSynced = false;\n return false;\n }\n\n this.signalTaskMapsSynced = true;\n return ctx;\n },\n \"Completes signal-to-task map registration when all global observed signal edges are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherIntentTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather intent task map registration\",\n (ctx) => {\n if (hasPendingIntentTaskMaps()) {\n this.intentTaskMapsSynced = false;\n return false;\n }\n\n this.intentTaskMapsSynced = true;\n return ctx;\n },\n \"Completes intent-to-task map registration when all task responders are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherActorTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather actor task map registration\",\n (ctx) => {\n if (hasPendingActorTaskMaps()) {\n this.actorTaskMapsSynced = false;\n return false;\n }\n\n this.actorTaskMapsSynced = true;\n return ctx;\n },\n \"Completes actor-to-task map registration when all actor-backed tasks are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherRoutineTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather routine task map registration\",\n (ctx) => {\n if (hasPendingRoutineTaskMaps()) {\n this.routineTaskMapsSynced = false;\n return false;\n }\n\n this.routineTaskMapsSynced = true;\n return ctx;\n },\n \"Completes task-to-routine map registration when all routine task memberships are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n const finishSyncTask = Cadenza.createUniqueMetaTask(\n \"Finish sync\",\n (ctx, emit) => {\n const syncCycleId =\n typeof ctx.__syncCycleId === \"string\" ? ctx.__syncCycleId.trim() : \"\";\n if (syncCycleId && this.activeSyncCycleId === syncCycleId) {\n this.activeSyncCycleId = null;\n this.activeSyncCycleStartedAt = 0;\n }\n\n if (this.pendingBootstrapSyncRerun) {\n this.pendingBootstrapSyncRerun = false;\n Cadenza.debounce(\"meta.sync_requested\", {\n delayMs: 100,\n });\n }\n\n emit(\"global.meta.sync_controller.synced\", {\n data: {\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n last_active: formatTimestamp(Date.now()),\n },\n filter: {\n uuid: Cadenza.serviceRegistry.serviceInstanceId,\n },\n });\n\n return true;\n },\n \"Marks the current bootstrap sync cycle as complete.\",\n {\n register: false,\n isHidden: true,\n },\n ).attachSignal(\"global.meta.sync_controller.synced\");\n\n const mapPhaseBarrierTask = Cadenza.createUniqueMetaTask(\n \"Complete map sync phase\",\n (ctx) => {\n const syncCycleId =\n typeof ctx.__syncCycleId === \"string\" ? ctx.__syncCycleId.trim() : \"\";\n if (!syncCycleId) {\n return false;\n }\n\n if (\n !this.directionalTaskMapsSynced ||\n !this.signalTaskMapsSynced ||\n !this.intentTaskMapsSynced ||\n !this.actorTaskMapsSynced ||\n !this.routineTaskMapsSynced\n ) {\n return false;\n }\n\n if (!markCompletedSyncCycle(this.mapPhaseCompletedCycles, syncCycleId)) {\n return false;\n }\n\n return ctx;\n },\n \"Fans in map branch completion and ends the current sync cycle once every map branch is complete.\",\n {\n register: false,\n isHidden: true,\n },\n ).then(finishSyncTask);\n\n const startDirectionalTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start directional task map sync\",\n (ctx) => ctx,\n \"Starts the directional task graph map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startSignalTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start signal task map sync\",\n (ctx) => ctx,\n \"Starts the signal-to-task map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startIntentTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start intent task map sync\",\n (ctx) => ctx,\n \"Starts the intent-to-task map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startActorTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start actor task map sync\",\n (ctx) => ctx,\n \"Starts the actor-to-task map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startRoutineTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start routine task map sync\",\n (ctx) => ctx,\n \"Starts the task-to-routine map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n const primitivePhaseBarrierTask = Cadenza.createUniqueMetaTask(\n \"Complete primitive sync phase\",\n (ctx) => {\n const syncCycleId =\n typeof ctx.__syncCycleId === \"string\" ? ctx.__syncCycleId.trim() : \"\";\n if (!syncCycleId) {\n return false;\n }\n\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (\n !this.tasksSynced ||\n !this.signalsSynced ||\n !this.intentsSynced ||\n !this.actorsSynced ||\n !this.routinesSynced\n ) {\n return false;\n }\n\n if (\n !markCompletedSyncCycle(this.primitivePhaseCompletedCycles, syncCycleId)\n ) {\n return false;\n }\n\n this.directionalTaskMapsSynced = false;\n this.signalTaskMapsSynced = false;\n this.intentTaskMapsSynced = false;\n this.actorTaskMapsSynced = false;\n this.routineTaskMapsSynced = false;\n\n return ctx;\n },\n \"Fans in primitive registration and opens the map registration phase once every primitive branch is complete.\",\n {\n register: false,\n isHidden: true,\n },\n ).then(\n startDirectionalTaskMapSyncTask,\n startSignalTaskMapSyncTask,\n startIntentTaskMapSyncTask,\n startActorTaskMapSyncTask,\n startRoutineTaskMapSyncTask,\n );\n\n gatherTaskRegistrationTask.then(primitivePhaseBarrierTask);\n gatherSignalRegistrationTask.then(primitivePhaseBarrierTask);\n gatherIntentRegistrationTask.then(primitivePhaseBarrierTask);\n gatherActorRegistrationTask.then(primitivePhaseBarrierTask);\n gatherRoutineRegistrationTask.then(primitivePhaseBarrierTask);\n\n const markLocalServiceInsertedForBootstrapSyncTask =\n Cadenza.createUniqueMetaTask(\n \"Mark local service inserted for bootstrap sync\",\n (ctx) => {\n const serviceName = resolveSyncServiceName();\n const insertedServiceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : typeof ctx.service_name === \"string\"\n ? ctx.service_name\n : null;\n\n if (!serviceName || insertedServiceName !== serviceName) {\n return false;\n }\n\n this.localServiceInserted = true;\n return true;\n },\n \"Marks that the local service row has been inserted in authority so bootstrap sync can start only after that prerequisite.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.service_inserted\");\n\n const markLocalServiceInstanceInsertedForBootstrapSyncTask =\n Cadenza.createUniqueMetaTask(\n \"Mark local service instance inserted for bootstrap sync\",\n (ctx) => {\n const serviceName = resolveSyncServiceName();\n const insertedServiceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : typeof ctx.service_name === \"string\"\n ? ctx.service_name\n : null;\n\n if (!serviceName || insertedServiceName !== serviceName) {\n return false;\n }\n\n this.localServiceInstanceInserted = true;\n return true;\n },\n \"Marks that the local service instance row has been inserted in authority so bootstrap sync can start only after that prerequisite.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.instance_inserted\");\n\n const startBootstrapSyncTask = Cadenza.createUniqueMetaTask(\n \"Start bootstrap graph sync\",\n (ctx) => {\n const now = Date.now();\n const serviceName = resolveSyncServiceName();\n const serviceInstanceId = Cadenza.serviceRegistry.serviceInstanceId;\n if (!serviceName || !serviceInstanceId) {\n return false;\n }\n\n if (!this.localServiceInserted) {\n return false;\n }\n\n if (!this.localServiceInstanceInserted) {\n return false;\n }\n\n if (!ServiceRegistry.instance.hasLocalInstanceRegistered()) {\n return false;\n }\n\n if (this.activeSyncCycleId) {\n const activeCycleAgeMs = now - this.activeSyncCycleStartedAt;\n if (activeCycleAgeMs < BOOTSTRAP_SYNC_STALE_CYCLE_MS) {\n this.pendingBootstrapSyncRerun = true;\n return false;\n }\n\n }\n\n const syncCycleId = `${now}-${++this.syncCycleCounter}`;\n this.activeSyncCycleId = syncCycleId;\n this.activeSyncCycleStartedAt = now;\n this.pendingBootstrapSyncRerun = false;\n this.tasksSynced = false;\n this.signalsSynced = false;\n this.intentsSynced = false;\n this.actorsSynced = false;\n this.routinesSynced = false;\n return {\n ...ctx,\n __syncing: true,\n __syncCycleId: syncCycleId,\n __serviceName: serviceName,\n __serviceInstanceId: serviceInstanceId,\n };\n },\n \"Starts a deterministic bootstrap sync cycle once the local service instance exists.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\n \"meta.service_registry.service_inserted\",\n \"meta.service_registry.instance_inserted\",\n \"meta.sync_controller.sync_tick\",\n \"meta.sync_requested\",\n );\n\n const startTaskPrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start task primitive sync\",\n (ctx) => ctx,\n \"Starts the task registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startSignalPrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start signal primitive sync\",\n (ctx) => ctx,\n \"Starts the signal registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startIntentPrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start intent primitive sync\",\n (ctx) => ctx,\n \"Starts the intent registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startActorPrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start actor primitive sync\",\n (ctx) => ctx,\n \"Starts the actor registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startRoutinePrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start routine primitive sync\",\n (ctx) => ctx,\n \"Starts the routine registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n startBootstrapSyncTask.then(\n startTaskPrimitiveSyncTask,\n startSignalPrimitiveSyncTask,\n startIntentPrimitiveSyncTask,\n startActorPrimitiveSyncTask,\n startRoutinePrimitiveSyncTask,\n );\n\n const getAllTasksForSyncTask = Cadenza.registry.getAllTasks!.clone();\n startTaskPrimitiveSyncTask.then(\n getAllTasksForSyncTask,\n gatherTaskRegistrationTask,\n );\n getAllTasksForSyncTask.then(this.splitTasksForRegistration);\n\n const getSignalsForSyncTask = Cadenza.signalBroker.getSignalsTask!.clone();\n startSignalPrimitiveSyncTask.then(\n getSignalsForSyncTask,\n gatherSignalRegistrationTask,\n );\n getSignalsForSyncTask.then(this.splitSignalsTask);\n\n const getAllIntentsForSyncTask = Cadenza.createUniqueMetaTask(\n \"Get all intents for sync\",\n (ctx) => ({\n ...ctx,\n intents: Array.from(Cadenza.inquiryBroker.intents.values()),\n }),\n \"Collects local intents for the primitive sync phase.\",\n {\n register: false,\n isHidden: true,\n },\n );\n startIntentPrimitiveSyncTask.then(\n getAllIntentsForSyncTask,\n gatherIntentRegistrationTask,\n );\n getAllIntentsForSyncTask.then(this.splitIntentsTask);\n\n const getAllActorsForSyncTask = Cadenza.createUniqueMetaTask(\n \"Get all actors for sync\",\n (ctx) => ({\n ...ctx,\n actors: Cadenza.getAllActors(),\n }),\n \"Collects local actors for the primitive sync phase.\",\n {\n register: false,\n isHidden: true,\n },\n );\n startActorPrimitiveSyncTask.then(\n getAllActorsForSyncTask,\n gatherActorRegistrationTask,\n );\n getAllActorsForSyncTask.then(this.splitActorsForRegistration);\n\n const getAllRoutinesForSyncTask = Cadenza.registry.getAllRoutines!.clone();\n startRoutinePrimitiveSyncTask.then(\n getAllRoutinesForSyncTask,\n gatherRoutineRegistrationTask,\n );\n getAllRoutinesForSyncTask.then(this.splitRoutinesTask);\n\n const iterateTasksForDirectionalTaskMapSyncTask =\n Cadenza.registry.doForEachTask!.clone();\n startDirectionalTaskMapSyncTask.then(\n iterateTasksForDirectionalTaskMapSyncTask,\n gatherDirectionalTaskMapRegistrationTask,\n );\n iterateTasksForDirectionalTaskMapSyncTask.then(\n this.registerTaskMapTask,\n this.registerDeputyRelationshipTask,\n );\n recordTaskMapRegistrationTask.then(gatherDirectionalTaskMapRegistrationTask);\n recordDeputyRelationshipRegistrationTask.then(\n gatherDirectionalTaskMapRegistrationTask,\n );\n gatherDirectionalTaskMapRegistrationTask.then(mapPhaseBarrierTask);\n\n const iterateTasksForSignalTaskMapSyncTask =\n Cadenza.registry.doForEachTask!.clone();\n startSignalTaskMapSyncTask.then(\n iterateTasksForSignalTaskMapSyncTask,\n gatherSignalTaskMapRegistrationTask,\n );\n iterateTasksForSignalTaskMapSyncTask.then(this.registerSignalToTaskMapTask);\n registerSignalTask.then(gatherSignalTaskMapRegistrationTask);\n gatherSignalTaskMapRegistrationTask.then(mapPhaseBarrierTask);\n\n const iterateTasksForIntentTaskMapSyncTask =\n Cadenza.registry.doForEachTask!.clone();\n startIntentTaskMapSyncTask.then(\n iterateTasksForIntentTaskMapSyncTask,\n gatherIntentTaskMapRegistrationTask,\n );\n iterateTasksForIntentTaskMapSyncTask.then(this.registerIntentToTaskMapTask);\n registerIntentTask.then(gatherIntentTaskMapRegistrationTask);\n gatherIntentTaskMapRegistrationTask.then(mapPhaseBarrierTask);\n\n const iterateTasksForActorTaskMapSyncTask =\n Cadenza.registry.doForEachTask!.clone();\n startActorTaskMapSyncTask.then(\n iterateTasksForActorTaskMapSyncTask,\n gatherActorTaskMapRegistrationTask,\n );\n iterateTasksForActorTaskMapSyncTask.then(this.registerActorTaskMapTask);\n recordActorTaskMapRegistrationTask.then(gatherActorTaskMapRegistrationTask);\n gatherActorTaskMapRegistrationTask.then(mapPhaseBarrierTask);\n\n const getAllRoutinesForTaskMapSyncTask = Cadenza.registry.getAllRoutines!.clone();\n startRoutineTaskMapSyncTask.then(\n getAllRoutinesForTaskMapSyncTask,\n gatherRoutineTaskMapRegistrationTask,\n );\n getAllRoutinesForTaskMapSyncTask.then(this.splitTasksInRoutines);\n registerTaskToRoutineMapTask.then(gatherRoutineTaskMapRegistrationTask);\n gatherRoutineTaskMapRegistrationTask.then(mapPhaseBarrierTask);\n\n Cadenza.createMetaTask(\n \"Request sync after local service instance registration\",\n (ctx) => {\n for (const delayMs of EARLY_SYNC_TICK_DELAYS_MS) {\n Cadenza.schedule(\n \"meta.sync_controller.sync_tick\",\n {\n ...buildMinimalSyncSignalContext(ctx),\n __syncing: true,\n },\n delayMs,\n );\n }\n\n return true;\n },\n \"Schedules the early bootstrap sync burst after local instance registration so startup-defined primitives can converge deterministically.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.instance_inserted\");\n\n Cadenza.interval(\n \"meta.sync_controller.sync_tick\",\n { __syncing: true },\n this.isCadenzaDBReady ? 180000 : 300000,\n );\n }\n}\n","export interface BootstrapOptions {\n url?: string;\n injectedGlobalKey?: string;\n}\n\nexport interface HydrationOptions {\n initialInquiryResults?: Record<string, unknown>;\n}\n\nexport interface ResolvedBootstrapEndpoint {\n url: string;\n protocol: \"http\" | \"https\";\n address: string;\n port: number;\n exposed: boolean;\n injectedGlobalKey: string;\n}\n\nconst DEFAULT_BOOTSTRAP_GLOBAL_KEY = \"__CADENZA_RUNTIME__\";\n\ntype ResolveBootstrapEndpointOptions = {\n runtime: \"browser\" | \"server\";\n bootstrap?: BootstrapOptions;\n cadenzaDB?: { address?: string; port?: number };\n};\n\nfunction normalizeString(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction readEnvString(name: string): string | undefined {\n if (typeof process === \"undefined\") {\n return undefined;\n }\n\n return normalizeString(process.env?.[name]);\n}\n\nfunction readConfiguredPort(value: unknown): number | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Invalid port value: ${String(value)}`);\n }\n\n const normalized = Math.trunc(parsed);\n if (normalized <= 0) {\n throw new Error(`Port must be a positive integer: ${String(value)}`);\n }\n\n return normalized;\n}\n\nfunction buildBootstrapUrl(\n protocol: \"http\" | \"https\",\n address: string,\n port: number,\n): string {\n return `${protocol}://${address}:${port}`;\n}\n\nfunction readExplicitPortFromOrigin(raw: string): number | undefined {\n const match = raw.match(\n /^[a-z]+:\\/\\/(?:\\[[^\\]]+\\]|[^\\/?#:]+):(\\d+)(?:\\/)?$/i,\n );\n\n if (!match?.[1]) {\n return undefined;\n }\n\n return readConfiguredPort(match[1]);\n}\n\nfunction resolveInjectedBootstrapUrl(injectedGlobalKey: string): string | undefined {\n if (typeof globalThis === \"undefined\") {\n return undefined;\n }\n\n const runtimeConfig = (globalThis as Record<string, any>)[injectedGlobalKey];\n return normalizeString(runtimeConfig?.bootstrapUrl);\n}\n\nfunction resolveExplicitBootstrapValue(options: ResolveBootstrapEndpointOptions): {\n value?: string;\n port?: number;\n injectedGlobalKey: string;\n} {\n const injectedGlobalKey =\n normalizeString(options.bootstrap?.injectedGlobalKey) ??\n DEFAULT_BOOTSTRAP_GLOBAL_KEY;\n\n const explicitBootstrapUrl = normalizeString(options.bootstrap?.url);\n if (explicitBootstrapUrl) {\n return {\n value: explicitBootstrapUrl,\n port: readConfiguredPort(options.cadenzaDB?.port),\n injectedGlobalKey,\n };\n }\n\n if (options.runtime === \"browser\") {\n const injected = resolveInjectedBootstrapUrl(injectedGlobalKey);\n if (injected) {\n return {\n value: injected,\n port: readConfiguredPort(options.cadenzaDB?.port),\n injectedGlobalKey,\n };\n }\n }\n\n const explicitAddress = normalizeString(options.cadenzaDB?.address);\n if (explicitAddress) {\n return {\n value: explicitAddress,\n port: readConfiguredPort(options.cadenzaDB?.port),\n injectedGlobalKey,\n };\n }\n\n const envAddress = readEnvString(\"CADENZA_DB_ADDRESS\");\n return {\n value: envAddress,\n port: readConfiguredPort(options.cadenzaDB?.port ?? readEnvString(\"CADENZA_DB_PORT\")),\n injectedGlobalKey,\n };\n}\n\nexport function readIntegerEnv(name: string, fallback: number): number {\n const raw = readEnvString(name);\n if (!raw) {\n return fallback;\n }\n\n const parsed = Number(raw);\n if (!Number.isFinite(parsed)) {\n return fallback;\n }\n\n const normalized = Math.trunc(parsed);\n if (normalized <= 0) {\n return fallback;\n }\n\n return normalized;\n}\n\nexport function readStringEnv(name: string): string | undefined {\n return readEnvString(name);\n}\n\nexport function readListEnv(name: string): string[][] {\n const raw = readEnvString(name);\n if (!raw) {\n return [];\n }\n\n return raw\n .split(\"|\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0)\n .map((entry) => entry.split(\",\").map((part) => part.trim()));\n}\n\nexport function resolveBootstrapEndpoint(\n options: ResolveBootstrapEndpointOptions,\n): ResolvedBootstrapEndpoint {\n const { value, port: fallbackPort, injectedGlobalKey } =\n resolveExplicitBootstrapValue(options);\n\n if (!value) {\n throw new Error(\n options.runtime === \"browser\"\n ? `No bootstrap URL available. Pass bootstrap.url or inject globalThis.${injectedGlobalKey}.bootstrapUrl.`\n : \"No bootstrap URL available. Set CADENZA_DB_ADDRESS or pass bootstrap.url.\",\n );\n }\n\n const raw = value.trim();\n if (raw.length === 0) {\n throw new Error(\"Bootstrap URL cannot be empty\");\n }\n\n if (raw.includes(\"://\")) {\n const parsed = new URL(raw);\n const protocol = parsed.protocol.replace(\":\", \"\");\n if (protocol !== \"http\" && protocol !== \"https\") {\n throw new Error(`Unsupported bootstrap protocol: ${parsed.protocol}`);\n }\n\n if (\n parsed.pathname &&\n parsed.pathname !== \"/\" &&\n parsed.pathname.trim().length > 0\n ) {\n throw new Error(\n \"Bootstrap URL must be an origin without a path component.\",\n );\n }\n\n const explicitPort = readExplicitPortFromOrigin(raw);\n const port = explicitPort ?? (parsed.port ? readConfiguredPort(parsed.port) : fallbackPort);\n if (!port) {\n throw new Error(\n \"Bootstrap URL must include a port or CADENZA_DB_PORT must be provided.\",\n );\n }\n\n return {\n url: buildBootstrapUrl(protocol, parsed.hostname, port),\n protocol,\n address: parsed.hostname,\n port,\n exposed: protocol === \"https\",\n injectedGlobalKey,\n };\n }\n\n if (raw.includes(\"/\") || raw.includes(\"?\") || raw.includes(\"#\")) {\n throw new Error(\n \"Bootstrap address without protocol must not include a path, query, or hash.\",\n );\n }\n\n const parsed = new URL(`http://${raw}`);\n const protocol: \"http\" = \"http\";\n const port = parsed.port ? readConfiguredPort(parsed.port) : fallbackPort;\n if (!port) {\n throw new Error(\n \"Bootstrap address must include a port or CADENZA_DB_PORT must be provided.\",\n );\n }\n\n return {\n url: buildBootstrapUrl(protocol, parsed.hostname, port),\n protocol,\n address: parsed.hostname,\n port,\n exposed: false,\n injectedGlobalKey,\n };\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport { v4 as uuid } from \"uuid\";\nimport type { BootstrapOptions, HydrationOptions } from \"../utils/bootstrap\";\nimport { resolveBootstrapEndpoint } from \"../utils/bootstrap\";\nimport type {\n DistributedInquiryMeta,\n DistributedInquiryOptions,\n InquiryResponderStatus,\n} from \"../types/inquiry\";\nimport type { ServiceInstanceDescriptor } from \"../types/serviceRegistry\";\nimport {\n isMetaIntentName,\n mergeInquiryContexts,\n summarizeResponderStatuses,\n} from \"../utils/inquiry\";\nimport { normalizeServiceInstanceDescriptor } from \"../utils/serviceInstance\";\nimport { selectTransportForRole } from \"../utils/transport\";\n\nexport interface SSRInquiryBridgeOptions {\n bootstrap?: BootstrapOptions;\n cadenzaDB?: {\n address?: string;\n port?: number;\n };\n}\n\nexport interface SSRInquiryBridge {\n inquire: (\n inquiry: string,\n context?: AnyObject,\n options?: DistributedInquiryOptions,\n ) => Promise<AnyObject>;\n dehydrate: () => HydrationOptions;\n}\n\ntype NormalizedIntentMap = {\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n deleted: boolean;\n};\n\nfunction ensureFetch(): typeof fetch {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"SSR inquiry bridge requires global fetch support.\");\n }\n\n return globalThis.fetch.bind(globalThis);\n}\n\nfunction normalizeArrayResponse(\n value: AnyObject,\n keys: string[],\n): AnyObject[] {\n for (const key of keys) {\n if (Array.isArray((value as any)?.[key])) {\n return (value as any)[key];\n }\n }\n\n if (Array.isArray((value as any)?.rows)) {\n return (value as any).rows;\n }\n\n if (Array.isArray((value as any)?.data)) {\n return (value as any).data;\n }\n\n return [];\n}\n\nfunction buildQueryResponseKeys(tableName: string): string[] {\n const camelCased = tableName.replace(/_([a-z])/g, (_match, char) =>\n char.toUpperCase(),\n );\n\n return [\n `${tableName}Rows`,\n `${tableName}s`,\n tableName,\n `${camelCased}s`,\n camelCased,\n ];\n}\n\nfunction normalizeIntentMap(raw: AnyObject): NormalizedIntentMap | null {\n const intentName = String(raw.intentName ?? raw.intent_name ?? \"\").trim();\n const serviceName = String(raw.serviceName ?? raw.service_name ?? \"\").trim();\n const taskName = String(raw.taskName ?? raw.task_name ?? \"\").trim();\n const taskVersion = Math.max(\n 1,\n Math.trunc(Number(raw.taskVersion ?? raw.task_version ?? 1) || 1),\n );\n\n if (!intentName || !serviceName || !taskName) {\n return null;\n }\n\n return {\n intentName,\n serviceName,\n taskName,\n taskVersion,\n deleted: Boolean(raw.deleted),\n };\n}\n\nfunction buildInquiryMeta(\n inquiry: string,\n startedAt: number,\n statuses: InquiryResponderStatus[],\n): DistributedInquiryMeta {\n const counts = summarizeResponderStatuses(statuses);\n return {\n inquiry,\n isMetaInquiry: isMetaIntentName(inquiry),\n totalResponders: statuses.length,\n eligibleResponders: statuses.length,\n filteredOutResponders: 0,\n responded: counts.responded,\n failed: counts.failed,\n timedOut: counts.timedOut,\n pending: counts.pending,\n durationMs: Date.now() - startedAt,\n responders: statuses,\n };\n}\n\nexport function createSSRInquiryBridge(\n options: SSRInquiryBridgeOptions = {},\n): SSRInquiryBridge {\n const bootstrapEndpoint = resolveBootstrapEndpoint({\n runtime: \"server\",\n bootstrap: options.bootstrap,\n cadenzaDB: options.cadenzaDB,\n });\n const fetchImplementation = ensureFetch();\n const initialInquiryResults: Record<string, unknown> = {};\n\n const postDelegation = async (\n targetUrl: string,\n remoteRoutineName: string,\n context: AnyObject,\n timeoutMs: number,\n ): Promise<AnyObject> => {\n const signal = AbortSignal.timeout(timeoutMs);\n const response = await fetchImplementation(`${targetUrl}/delegation`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...context,\n __remoteRoutineName: remoteRoutineName,\n __metadata: {\n ...(context.__metadata ?? {}),\n __deputyExecId: uuid(),\n },\n }),\n signal,\n });\n\n return (await response.json()) as AnyObject;\n };\n\n const queryTable = async (\n tableName: string,\n queryData: AnyObject,\n timeoutMs: number,\n ): Promise<AnyObject[]> => {\n const response = await postDelegation(\n bootstrapEndpoint.url,\n `Query ${tableName}`,\n { queryData },\n timeoutMs,\n );\n return normalizeArrayResponse(response, buildQueryResponseKeys(tableName));\n };\n\n return {\n async inquire(\n inquiry: string,\n context: AnyObject = {},\n inquiryOptions: DistributedInquiryOptions = {},\n ): Promise<AnyObject> {\n const startedAt = Date.now();\n const overallTimeoutMs =\n inquiryOptions.overallTimeoutMs ?? inquiryOptions.timeout ?? 30_000;\n const perResponderTimeoutMs =\n inquiryOptions.perResponderTimeoutMs ?? overallTimeoutMs;\n\n const intentMaps = (\n await queryTable(\n \"intent_to_task_map\",\n {\n filter: {\n intent_name: inquiry,\n },\n },\n overallTimeoutMs,\n )\n )\n .map(normalizeIntentMap)\n .filter(\n (item): item is NormalizedIntentMap =>\n !!item && item.intentName === inquiry && !item.deleted,\n );\n\n if (intentMaps.length === 0) {\n return {\n __inquiryMeta: buildInquiryMeta(inquiry, startedAt, []),\n };\n }\n\n const relevantServiceNames = Array.from(\n new Set(intentMaps.map((item) => item.serviceName)),\n );\n\n const rawServiceInstances = (\n await queryTable(\n \"service_instance\",\n {\n filter: {\n service_name: relevantServiceNames,\n },\n },\n overallTimeoutMs,\n )\n );\n\n const rawServiceTransports = await queryTable(\n \"service_instance_transport\",\n {\n filter: {\n deleted: false,\n },\n },\n overallTimeoutMs,\n );\n\n const transportsByInstance = new Map<string, AnyObject[]>();\n for (const transport of rawServiceTransports) {\n const serviceInstanceId = String(\n transport.serviceInstanceId ?? transport.service_instance_id ?? \"\",\n ).trim();\n if (!serviceInstanceId) {\n continue;\n }\n\n if (!transportsByInstance.has(serviceInstanceId)) {\n transportsByInstance.set(serviceInstanceId, []);\n }\n transportsByInstance.get(serviceInstanceId)!.push(transport);\n }\n\n const serviceInstances = rawServiceInstances\n .map((instance) =>\n normalizeServiceInstanceDescriptor({\n ...instance,\n transports:\n transportsByInstance.get(String(instance.uuid ?? \"\").trim()) ?? [],\n }),\n )\n .filter(\n (item): item is ServiceInstanceDescriptor =>\n !!item &&\n relevantServiceNames.includes(item.serviceName) &&\n item.isActive &&\n !item.isNonResponsive &&\n !item.isBlocked,\n )\n .sort((left, right) => {\n if (left.serviceName !== right.serviceName) {\n return left.serviceName.localeCompare(right.serviceName);\n }\n if (left.isPrimary !== right.isPrimary) {\n return left.isPrimary ? -1 : 1;\n }\n return (\n (left.numberOfRunningGraphs ?? 0) - (right.numberOfRunningGraphs ?? 0)\n );\n });\n\n const statuses: InquiryResponderStatus[] = intentMaps.map((map) => ({\n isRemote: true,\n serviceName: map.serviceName,\n taskName: map.taskName,\n taskVersion: map.taskVersion,\n localTaskName: `SSR inquiry via ${map.serviceName} (${map.taskName} v${map.taskVersion})`,\n status: \"timed_out\",\n durationMs: 0,\n }));\n\n const fulfilledContexts = await Promise.all(\n intentMaps.map(async (map, index) => {\n const status = statuses[index];\n const startedAtForResponder = Date.now();\n const selectedInstance = serviceInstances.find(\n (instance) => instance.serviceName === map.serviceName,\n );\n\n if (!selectedInstance) {\n status.status = \"failed\";\n status.error = `No active instances for ${map.serviceName}`;\n status.durationMs = Date.now() - startedAtForResponder;\n return null;\n }\n\n const targetTransport = selectTransportForRole(\n selectedInstance.transports,\n \"internal\",\n \"rest\",\n );\n if (!targetTransport) {\n status.status = \"failed\";\n status.error = `No internal transport for ${selectedInstance.serviceName}/${selectedInstance.uuid}`;\n status.durationMs = Date.now() - startedAtForResponder;\n return null;\n }\n\n const targetUrl = targetTransport.origin;\n\n try {\n const result = await postDelegation(\n targetUrl,\n map.taskName,\n context,\n perResponderTimeoutMs,\n );\n status.durationMs = Date.now() - startedAtForResponder;\n if (result?.errored || result?.failed) {\n status.status = \"failed\";\n status.error = String(\n result?.__error ?? result?.error ?? \"Remote inquiry failed\",\n );\n return null;\n }\n\n status.status = \"fulfilled\";\n return result;\n } catch (error) {\n status.durationMs = Date.now() - startedAtForResponder;\n if (\n error instanceof Error &&\n (error.name === \"AbortError\" || /timed out/i.test(error.message))\n ) {\n status.status = \"timed_out\";\n status.error = error.message;\n return null;\n }\n\n status.status = \"failed\";\n status.error =\n error instanceof Error ? error.message : String(error);\n return null;\n }\n }),\n );\n\n const mergedContext = mergeInquiryContexts(\n fulfilledContexts.filter(\n (item): item is AnyObject => item !== null,\n ),\n );\n const responseContext = {\n ...mergedContext,\n __inquiryMeta: buildInquiryMeta(inquiry, startedAt, statuses),\n };\n\n if (inquiryOptions.hydrationKey) {\n initialInquiryResults[inquiryOptions.hydrationKey] = responseContext;\n }\n\n if (\n inquiryOptions.requireComplete &&\n statuses.some((status) => status.status !== \"fulfilled\")\n ) {\n throw {\n ...responseContext,\n __error: `Inquiry '${inquiry}' did not complete successfully`,\n errored: true,\n };\n }\n\n return responseContext;\n },\n\n dehydrate(): HydrationOptions {\n return {\n initialInquiryResults: { ...initialInquiryResults },\n };\n },\n };\n}\n"],"mappings":"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","names":["import_core","uuid","import_uuid","uuid","normalizeString","uuid","import_uuid","uuid","uuid","existingTransport","selectedTransport","ctx","import_core","import_uuid","uuid","URL","delegationCtx","import_core","import_uuid","import_core","serviceName","normalizeString","parsed","protocol","port","Cadenza","uuid","import_core","import_uuid","uuid"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Cadenza.ts","../../src/graph/definition/DeputyTask.ts","../../src/utils/delegation.ts","../../src/utils/routinePersistence.ts","../../src/graph/definition/DatabaseTask.ts","../../src/registry/ServiceRegistry.ts","../../src/database/DatabaseController.browser.ts","../../src/utils/environment.ts","../../src/utils/inquiry.ts","../../src/utils/transport.ts","../../src/utils/serviceInstance.ts","../../src/utils/serviceCommunication.ts","../../src/utils/readiness.ts","../../src/utils/runtimeStatus.ts","../../src/utils/runtimeMetrics.ts","../../src/registry/runtimeStatusContract.ts","../../src/registry/serviceManifestContract.ts","../../src/registry/authorityBootstrapControlPlane.ts","../../src/utils/tools.ts","../../src/registry/serviceManifest.ts","../../src/graph/definition/SignalTransmissionTask.ts","../../src/network/RestController.browser.ts","../../src/network/SocketController.ts","../../src/network/socketClientUtils.ts","../../src/execution/ExecutionPersistenceCoordinator.ts","../../src/signals/SignalController.ts","../../src/runtime/RuntimeValidationController.ts","../../src/graph/controllers/registerActorSessionPersistence.ts","../../src/graph/controllers/GraphSyncController.ts","../../src/graph/controllers/GraphMetadataController.ts","../../src/utils/bootstrap.ts","../../src/frontend/runtimeProjectionState.ts","../../src/frontend/createBrowserRuntimeActor.ts","../../src/ssr/createSSRInquiryBridge.ts"],"sourcesContent":["export { default } from \"./Cadenza\";\nimport CadenzaService, {\n NetworkMode,\n SecurityProfile,\n type ServerOptions,\n} from \"./Cadenza\";\nimport {\n Actor,\n type ActorDefinition,\n type ActorSpec,\n type ActorStateDefinition,\n type ActorKeyDefinition,\n type ActorTaskBindingDefinition,\n type ActorFactoryOptions,\n type ActorLoadPolicy,\n type ActorWriteContract,\n type ActorRuntimeReadGuard,\n type ActorTaskMode,\n type ActorKind,\n type ActorConsistencyProfileName,\n type ActorInvocationOptions,\n type ActorStateStore,\n type ActorTaskBindingOptions,\n type ActorTaskContext,\n type ActorTaskHandler,\n type ActorStateReducer,\n type RetryPolicy,\n type IdempotencyPolicy,\n type SessionPolicy,\n type RuntimeValidationPolicy,\n type RuntimeValidationScope,\n type SignalDefinitionInput,\n type SignalDeliveryMode,\n type SignalMetadata,\n type SignalReceiverFilter,\n DebounceTask,\n EphemeralTask,\n GraphRoutine,\n Task,\n} from \"@cadenza.io/core\";\nimport type {\n AnyObject,\n DebounceOptions,\n EphemeralTaskOptions,\n TaskFunction,\n TaskOptions,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport GraphMetadataController from \"./graph/controllers/GraphMetadataController\";\nimport DatabaseTask from \"./graph/definition/DatabaseTask\";\nimport DeputyTask from \"./graph/definition/DeputyTask\";\nimport SignalTransmissionTask from \"./graph/definition/SignalTransmissionTask\";\nimport RestController from \"@service-rest-controller\";\nimport SocketController from \"./network/SocketController\";\nimport ServiceRegistry, {\n DeputyDescriptor,\n} from \"./registry/ServiceRegistry\";\nimport SignalController from \"./signals/SignalController\";\nimport {\n RUNTIME_VALIDATION_INTENTS,\n RUNTIME_VALIDATION_SIGNALS,\n} from \"./runtime/RuntimeValidationController\";\nimport DatabaseController from \"@service-database-controller\";\nimport {\n buildExecutionPersistenceDependency,\n buildExecutionPersistenceEnsureEvent,\n buildExecutionPersistenceUpdateEvent,\n createExecutionPersistenceBundle,\n EXECUTION_PERSISTENCE_BUNDLE_SIGNAL,\n type ExecutionPersistenceBundle,\n type ExecutionPersistenceEnsureEntityType,\n type ExecutionPersistenceEnsureEvent,\n type ExecutionPersistenceEntityType,\n type ExecutionPersistenceEvent,\n type ExecutionPersistenceUpdateEntityType,\n type ExecutionPersistenceUpdateEvent,\n} from \"./execution/ExecutionPersistenceCoordinator\";\nimport {\n BootstrapOptions,\n HydrationOptions,\n ResolvedBootstrapEndpoint,\n} from \"./utils/bootstrap\";\nimport {\n createSSRInquiryBridge,\n SSRInquiryBridge,\n SSRInquiryBridgeOptions,\n} from \"./ssr/createSSRInquiryBridge\";\nimport type {\n BrowserRuntimeActorHandle,\n BrowserRuntimeActorOptions,\n BrowserRuntimeActorRuntimeState,\n BrowserRuntimeProjectionBinding,\n BrowserRuntimeServiceOptions,\n} from \"./frontend/createBrowserRuntimeActor\";\nimport {\n AggregateDefinition,\n AggregateFunction,\n DbOperationType,\n DbOperationPayload,\n JoinDefinition,\n OpEffect,\n QueryMode,\n SortDirection,\n SubOperation,\n SubOperationType,\n ValueOrSubOp,\n} from \"./types/queryData\";\nimport type {\n DistributedInquiryMeta,\n DistributedInquiryOptions,\n InquiryResponderDescriptor,\n InquiryResponderStatus,\n} from \"./types/inquiry\";\nimport type { ServiceInstanceDescriptor } from \"./types/serviceRegistry\";\nimport type {\n ServiceTransportConfig,\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n ServiceTransportSecurityProfile,\n} from \"./types/transport\";\nimport type {\n DatabaseMigrationConstraintDefinition,\n DatabaseMigrationDefinition,\n DatabaseMigrationPolicy,\n DatabaseMigrationStep,\n DatabaseSchemaDefinition,\n FieldDefinition,\n TableDefinition,\n} from \"./types/database\";\nimport {\n AUTHORITY_RUNTIME_STATUS_REPORT_INTENT,\n RUNTIME_STATUS_AUTHORITY_SYNC_REQUESTED_SIGNAL,\n buildAuthorityRuntimeStatusSignature,\n normalizeAuthorityRuntimeStatusReport,\n type AuthorityRuntimeStatusReport,\n type RuntimeMetricsHealthDetail,\n} from \"./registry/runtimeStatusContract\";\nimport {\n AUTHORITY_BOOTSTRAP_FULL_SYNC_INTENT,\n AUTHORITY_BOOTSTRAP_SIGNAL_NAMES,\n AUTHORITY_SERVICE_INSTANCE_REGISTER_INTENT,\n AUTHORITY_SERVICE_INSTANCE_REGISTER_TASK_NAME,\n AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_INTENT,\n AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_TASK_NAME,\n getAuthorityBootstrapInsertIntentSpecForTable,\n isAuthorityBootstrapIntent,\n isAuthorityBootstrapSignal,\n} from \"./registry/authorityBootstrapControlPlane\";\nimport {\n AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT,\n AUTHORITY_SERVICE_MANIFEST_UPDATED_SIGNAL,\n normalizeServiceManifestSnapshot,\n selectLatestServiceManifestSnapshots,\n} from \"./registry/serviceManifestContract\";\nimport {\n buildServiceManifestSnapshot,\n explodeServiceManifestSnapshots,\n} from \"./registry/serviceManifest\";\nimport type {\n ServiceManifestActorDefinition,\n ServiceManifestActorTaskMap,\n ServiceManifestDirectionalTaskMap,\n ServiceManifestIntentDefinition,\n ServiceManifestIntentTaskMap,\n ServiceManifestRoutineDefinition,\n ServiceManifestSignalDefinition,\n ServiceManifestSignalTaskMap,\n ServiceManifestSnapshot,\n ServiceManifestTaskDefinition,\n ServiceManifestTaskRoutineMap,\n} from \"./types/serviceManifest\";\n\nconst emit = CadenzaService.emit.bind(CadenzaService) as typeof CadenzaService.emit;\nconst log = CadenzaService.log.bind(CadenzaService) as typeof CadenzaService.log;\nconst createTask = CadenzaService.createTask.bind(\n CadenzaService,\n) as typeof CadenzaService.createTask;\nconst createMetaTask = CadenzaService.createMetaTask.bind(\n CadenzaService,\n) as typeof CadenzaService.createMetaTask;\nconst createActor = CadenzaService.createActor.bind(\n CadenzaService,\n) as typeof CadenzaService.createActor;\nconst createCadenzaService = CadenzaService.createCadenzaService.bind(\n CadenzaService,\n) as typeof CadenzaService.createCadenzaService;\nconst createDatabaseService = CadenzaService.createDatabaseService.bind(\n CadenzaService,\n) as typeof CadenzaService.createDatabaseService;\nconst createBrowserRuntimeActor = CadenzaService.createBrowserRuntimeActor.bind(\n CadenzaService,\n) as typeof CadenzaService.createBrowserRuntimeActor;\nconst getServiceReadySignalName = CadenzaService.getServiceReadySignalName.bind(\n CadenzaService,\n) as typeof CadenzaService.getServiceReadySignalName;\nconst inquiryBroker = CadenzaService.inquiryBroker;\nconst serviceRegistry = CadenzaService.serviceRegistry;\n\nexport type {\n BootstrapOptions,\n HydrationOptions,\n ResolvedBootstrapEndpoint,\n SSRInquiryBridge,\n SSRInquiryBridgeOptions,\n BrowserRuntimeActorHandle,\n BrowserRuntimeActorOptions,\n BrowserRuntimeActorRuntimeState,\n BrowserRuntimeProjectionBinding,\n BrowserRuntimeServiceOptions,\n ActorDefinition,\n ActorSpec,\n ActorStateDefinition,\n ActorKeyDefinition,\n ActorTaskBindingDefinition,\n ActorFactoryOptions,\n ActorLoadPolicy,\n ActorWriteContract,\n ActorRuntimeReadGuard,\n ActorTaskMode,\n ActorKind,\n ActorConsistencyProfileName,\n ActorInvocationOptions,\n ActorStateStore,\n ActorTaskBindingOptions,\n ActorTaskContext,\n ActorTaskHandler,\n ActorStateReducer,\n RetryPolicy,\n IdempotencyPolicy,\n SessionPolicy,\n ServiceInstanceDescriptor,\n ServiceTransportConfig,\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n ServiceTransportSecurityProfile,\n DeputyDescriptor,\n DbOperationType,\n QueryMode,\n AggregateFunction,\n AggregateDefinition,\n SortDirection,\n JoinDefinition,\n SubOperationType,\n SubOperation,\n OpEffect,\n ValueOrSubOp,\n DbOperationPayload,\n SecurityProfile,\n NetworkMode,\n ServerOptions,\n DistributedInquiryOptions,\n DistributedInquiryMeta,\n InquiryResponderDescriptor,\n InquiryResponderStatus,\n AnyObject,\n TaskOptions,\n ThrottleTagGetter,\n TaskFunction,\n DebounceOptions,\n EphemeralTaskOptions,\n RuntimeValidationPolicy,\n RuntimeValidationScope,\n SignalDefinitionInput,\n SignalDeliveryMode,\n SignalMetadata,\n SignalReceiverFilter,\n DatabaseMigrationConstraintDefinition,\n DatabaseMigrationDefinition,\n DatabaseMigrationPolicy,\n DatabaseMigrationStep,\n DatabaseSchemaDefinition,\n ExecutionPersistenceBundle,\n ExecutionPersistenceEnsureEntityType,\n ExecutionPersistenceEnsureEvent,\n ExecutionPersistenceEntityType,\n ExecutionPersistenceEvent,\n ExecutionPersistenceUpdateEntityType,\n ExecutionPersistenceUpdateEvent,\n FieldDefinition,\n TableDefinition,\n AuthorityRuntimeStatusReport,\n RuntimeMetricsHealthDetail,\n ServiceManifestActorDefinition,\n ServiceManifestActorTaskMap,\n ServiceManifestDirectionalTaskMap,\n ServiceManifestIntentDefinition,\n ServiceManifestIntentTaskMap,\n ServiceManifestRoutineDefinition,\n ServiceManifestSignalDefinition,\n ServiceManifestSignalTaskMap,\n ServiceManifestSnapshot,\n ServiceManifestTaskDefinition,\n ServiceManifestTaskRoutineMap,\n};\nexport {\n Actor,\n GraphMetadataController,\n DeputyTask,\n DatabaseController,\n DatabaseTask,\n SignalTransmissionTask,\n RestController,\n SocketController,\n ServiceRegistry,\n SignalController,\n createSSRInquiryBridge,\n Task,\n DebounceTask,\n EphemeralTask,\n GraphRoutine,\n emit,\n log,\n createTask,\n createMetaTask,\n createActor,\n createCadenzaService,\n createDatabaseService,\n createBrowserRuntimeActor,\n buildExecutionPersistenceDependency,\n buildExecutionPersistenceEnsureEvent,\n buildExecutionPersistenceUpdateEvent,\n createExecutionPersistenceBundle,\n EXECUTION_PERSISTENCE_BUNDLE_SIGNAL,\n AUTHORITY_BOOTSTRAP_FULL_SYNC_INTENT,\n AUTHORITY_RUNTIME_STATUS_REPORT_INTENT,\n RUNTIME_STATUS_AUTHORITY_SYNC_REQUESTED_SIGNAL,\n AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT,\n AUTHORITY_SERVICE_MANIFEST_UPDATED_SIGNAL,\n AUTHORITY_BOOTSTRAP_SIGNAL_NAMES,\n AUTHORITY_SERVICE_INSTANCE_REGISTER_INTENT,\n AUTHORITY_SERVICE_INSTANCE_REGISTER_TASK_NAME,\n AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_INTENT,\n AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_TASK_NAME,\n getAuthorityBootstrapInsertIntentSpecForTable,\n isAuthorityBootstrapIntent,\n isAuthorityBootstrapSignal,\n normalizeAuthorityRuntimeStatusReport,\n buildAuthorityRuntimeStatusSignature,\n normalizeServiceManifestSnapshot,\n selectLatestServiceManifestSnapshots,\n buildServiceManifestSnapshot,\n explodeServiceManifestSnapshots,\n getServiceReadySignalName,\n inquiryBroker,\n serviceRegistry,\n RUNTIME_VALIDATION_INTENTS,\n RUNTIME_VALIDATION_SIGNALS,\n};\n","import Cadenza, {\n Actor,\n ActorDefinition,\n ActorFactoryOptions,\n ActorSpec,\n AnyObject,\n CadenzaMode,\n DebounceOptions,\n DebounceTask,\n EmitOptions,\n EphemeralTask,\n EphemeralTaskOptions,\n GraphRegistry,\n GraphRoutine,\n GraphRunner,\n InquiryBroker,\n Intent,\n RuntimeValidationPolicy,\n RuntimeValidationScope,\n SignalBroker,\n Task,\n TaskFunction,\n TaskOptions,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport DeputyTask from \"./graph/definition/DeputyTask\";\nimport DatabaseTask from \"./graph/definition/DatabaseTask\";\nimport ServiceRegistry from \"./registry/ServiceRegistry\";\nimport SignalTransmissionTask from \"./graph/definition/SignalTransmissionTask\";\nimport RestController from \"@service-rest-controller\";\nimport SocketController from \"./network/SocketController\";\nimport SignalController from \"./signals/SignalController\";\nimport RuntimeValidationController from \"./runtime/RuntimeValidationController\";\nimport { DbOperationPayload, DbOperationType } from \"./types/queryData\";\nimport GraphMetadataController from \"./graph/controllers/GraphMetadataController\";\nimport { registerActorSessionPersistenceTasks } from \"./graph/controllers/registerActorSessionPersistence\";\nimport { DatabaseSchemaDefinition } from \"./types/database\";\nimport { camelCase, snakeCase } from \"lodash-es\";\nimport DatabaseController from \"@service-database-controller\";\nimport { v4 as uuid } from \"uuid\";\nimport GraphSyncController from \"./graph/controllers/GraphSyncController\";\nimport { isBrowser } from \"./utils/environment\";\nimport { formatTimestamp } from \"./utils/tools\";\nimport {\n BootstrapOptions,\n HydrationOptions,\n readIntegerEnv,\n readListEnv,\n readStringEnv,\n resolveBootstrapEndpoint,\n} from \"./utils/bootstrap\";\nimport {\n DistributedInquiryMeta,\n DistributedInquiryOptions,\n InquiryResponderDescriptor,\n InquiryResponderStatus,\n} from \"./types/inquiry\";\nimport type {\n ServiceTransportConfig,\n ServiceTransportRole,\n} from \"./types/transport\";\nimport {\n compareResponderDescriptors,\n isMetaIntentName,\n mergeInquiryContexts,\n shouldExecuteInquiryResponder,\n summarizeResponderStatuses,\n} from \"./utils/inquiry\";\nimport { normalizeServiceTransportConfig } from \"./utils/transport\";\nimport {\n type BrowserRuntimeActorHandle,\n type BrowserRuntimeActorOptions,\n resetBrowserRuntimeActorHandles,\n createBrowserRuntimeActor as createBrowserRuntimeActorHelper,\n} from \"./frontend/createBrowserRuntimeActor\";\nimport { buildServiceManifestSnapshot } from \"./registry/serviceManifest\";\nimport { AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT } from \"./registry/serviceManifestContract\";\nimport { isAuthorityBootstrapIntent } from \"./registry/authorityBootstrapControlPlane\";\n\nexport type SecurityProfile = \"low\" | \"medium\" | \"high\";\nexport type NetworkMode =\n | \"internal\"\n | \"exposed\"\n | \"exposed-high-sec\"\n | \"auto\"\n | \"dev\";\n\nconst POSTGRES_SETUP_DEBUG_ENABLED =\n process.env.CADENZA_POSTGRES_SETUP_DEBUG === \"1\" ||\n process.env.CADENZA_POSTGRES_SETUP_DEBUG === \"true\";\n\nfunction resolveInquiryFailureError(\n inquiry: string,\n value: unknown,\n depth = 3,\n seen = new Set<unknown>(),\n): string {\n if (depth < 0 || value === null || value === undefined) {\n return `Inquiry '${inquiry}' did not complete successfully`;\n }\n\n if (typeof value === \"string\") {\n return value;\n }\n\n if (value instanceof Error) {\n return value.message;\n }\n\n if (typeof value !== \"object\" || seen.has(value)) {\n return `Inquiry '${inquiry}' did not complete successfully`;\n }\n\n seen.add(value);\n\n const record = value as Record<string, unknown>;\n for (const key of [\"__error\", \"error\", \"message\"] as const) {\n const candidate = record[key];\n\n if (typeof candidate === \"string\" && candidate.trim().length > 0) {\n return candidate;\n }\n\n if (candidate && typeof candidate === \"object\") {\n const resolved = resolveInquiryFailureError(\n inquiry,\n candidate,\n depth - 1,\n seen,\n );\n if (resolved !== `Inquiry '${inquiry}' did not complete successfully`) {\n return resolved;\n }\n }\n }\n\n for (const nested of Object.values(record)) {\n if (!nested || typeof nested !== \"object\") {\n continue;\n }\n\n const resolved = resolveInquiryFailureError(\n inquiry,\n nested,\n depth - 1,\n seen,\n );\n if (resolved !== `Inquiry '${inquiry}' did not complete successfully`) {\n return resolved;\n }\n }\n\n return `Inquiry '${inquiry}' did not complete successfully`;\n}\n\nexport type ServerOptions = {\n customServiceId?: string; // TODO\n loadBalance?: boolean;\n useSocket?: boolean;\n log?: boolean;\n displayName?: string;\n isMeta?: boolean;\n port?: number; // for internal network\n securityProfile?: SecurityProfile;\n networkMode?: NetworkMode;\n retryCount?: number;\n cadenzaDB?: { connect?: boolean; address?: string; port?: number };\n bootstrap?: BootstrapOptions;\n hydration?: HydrationOptions;\n transports?: ServiceTransportConfig[];\n relatedServices?: string[][];\n isDatabase?: boolean;\n isFrontend?: boolean;\n};\n\nexport interface DatabaseOptions {\n databaseType?: \"postgres\";\n databaseName?: string;\n poolSize?: number;\n ownerServiceName?: string | null;\n}\n\nconst DEFAULT_DEPUTY_TASK_CONCURRENCY = 50;\nconst DEFAULT_DEPUTY_TASK_TIMEOUT_MS = 120_000;\nconst DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY = 50;\nconst DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS = 120_000;\n\n/**\n * The CadenzaService class serves as a central service layer providing various utility methods for managing tasks, signals, logging, and service interactions.\n * This class handles the initialization (`bootstrap`) and validation of services, as well as the creation of tasks associated with services and signals.\n */\nexport default class CadenzaService {\n public static signalBroker: SignalBroker;\n public static inquiryBroker: InquiryBroker;\n public static runner: GraphRunner;\n public static metaRunner: GraphRunner;\n public static registry: GraphRegistry;\n public static serviceRegistry: ServiceRegistry;\n protected static isBootstrapped = false;\n protected static serviceCreated = false;\n protected static bootstrapSyncCompleted = false;\n protected static bootstrapSignalRegistrationsCompleted = false;\n protected static bootstrapIntentRegistrationsCompleted = false;\n protected static defaultDatabaseServiceName: string | null = null;\n protected static warnedInvalidMetaIntentResponderKeys: Set<string> = new Set();\n protected static hydratedInquiryResults: Map<string, AnyObject> = new Map();\n protected static frontendSyncScheduled = false;\n protected static serviceManifestRevision = 0;\n protected static lastPublishedServiceManifestHash: string | null = null;\n protected static serviceManifestPublicationInFlight = false;\n protected static serviceManifestPublicationPendingReason: string | null = null;\n private static shutdownHandlersRegistered = false;\n private static shutdownInFlight = false;\n private static shutdownHandlerCleanup: Array<() => void> = [];\n\n private static unregisterGracefulShutdownHandlers(): void {\n for (const cleanup of this.shutdownHandlerCleanup) {\n cleanup();\n }\n this.shutdownHandlerCleanup = [];\n this.shutdownHandlersRegistered = false;\n this.shutdownInFlight = false;\n }\n\n private static registerGracefulShutdownHandlers(): void {\n if (\n isBrowser ||\n this.shutdownHandlersRegistered ||\n typeof process === \"undefined\" ||\n typeof process.once !== \"function\" ||\n typeof process.removeListener !== \"function\"\n ) {\n return;\n }\n\n const gracefulShutdownTimeoutMs = Math.max(\n 1_500,\n readIntegerEnv(\"CADENZA_GRACEFUL_SHUTDOWN_TIMEOUT_MS\", 5_000),\n );\n const transportShutdownDelayMs = Math.min(\n Math.max(500, Math.floor(gracefulShutdownTimeoutMs / 3)),\n Math.max(500, gracefulShutdownTimeoutMs - 500),\n );\n const shutdownSignals = [\"SIGTERM\", \"SIGINT\"] as const;\n\n for (const signal of shutdownSignals) {\n const handler = () => {\n if (this.shutdownInFlight) {\n return;\n }\n\n this.shutdownInFlight = true;\n\n const exitTimer = setTimeout(() => {\n this.unregisterGracefulShutdownHandlers();\n if (typeof process.kill === \"function\") {\n process.kill(process.pid, signal);\n return;\n }\n\n process.exit(0);\n }, gracefulShutdownTimeoutMs);\n\n exitTimer.unref?.();\n\n void (async () => {\n try {\n const shutdownPersisted =\n (await this.serviceRegistry?.reportLocalShutdownToAuthority(\n signal,\n Math.max(1_500, gracefulShutdownTimeoutMs - 750),\n )) ?? false;\n\n if (!shutdownPersisted) {\n this.emit(\"meta.service_registry.instance_shutdown_reported\", {\n serviceName: this.serviceRegistry?.serviceName ?? null,\n serviceInstanceId: this.serviceRegistry?.serviceInstanceId ?? null,\n reason: signal,\n graceful: true,\n });\n }\n } catch {\n try {\n this.emit(\"meta.service_registry.instance_shutdown_reported\", {\n serviceName: this.serviceRegistry?.serviceName ?? null,\n serviceInstanceId: this.serviceRegistry?.serviceInstanceId ?? null,\n reason: signal,\n graceful: true,\n });\n } catch {\n // Best-effort shutdown reporting must not block process termination.\n }\n } finally {\n try {\n this.schedule(\n \"meta.socket_server_shutdown_requested\",\n { reason: signal },\n transportShutdownDelayMs,\n );\n this.schedule(\n \"meta.server_shutdown_requested\",\n { reason: signal },\n transportShutdownDelayMs,\n );\n } catch {\n // Best-effort shutdown reporting must not block process termination.\n }\n }\n })();\n };\n\n process.once(signal, handler);\n this.shutdownHandlerCleanup.push(() =>\n process.removeListener(signal, handler),\n );\n }\n\n this.shutdownHandlersRegistered = true;\n }\n\n private static replayRegisteredTaskIntentAssociations(): void {\n for (const task of this.registry.tasks.values()) {\n if (!task.register || task.isHidden || task.handlesIntents.size === 0) {\n continue;\n }\n\n for (const intentName of task.handlesIntents) {\n task.emitWithMetadata(\"meta.task.intent_associated\", {\n data: {\n intentName,\n taskName: task.name,\n taskVersion: task.version,\n },\n taskInstance: task,\n __isSubMeta: task.isSubMeta,\n });\n }\n }\n }\n\n private static replayRegisteredTaskSignalObservations(): void {\n for (const task of this.registry.tasks.values()) {\n if (!task.register || task.isHidden || task.observedSignals.size === 0) {\n continue;\n }\n\n for (const signalName of task.observedSignals) {\n task.emitWithMetadata(\"meta.task.observed_signal\", {\n data: {\n signalName,\n taskName: task.name,\n taskVersion: task.version,\n },\n taskInstance: task,\n signalName,\n __isSubMeta: task.isSubMeta,\n });\n }\n }\n }\n\n private static replayRegisteredTaskGraphMetadata(): void {\n this.replayRegisteredTaskSignalObservations();\n this.replayRegisteredTaskIntentAssociations();\n }\n\n private static requestServiceManifestPublication(\n reason: string,\n immediate = false,\n ): void {\n if (!this.serviceRegistry.serviceName || !this.serviceRegistry.serviceInstanceId) {\n return;\n }\n\n const signalName = \"meta.service_manifest.publish_requested\";\n const payload = {\n __reason: reason,\n __serviceName: this.serviceRegistry.serviceName,\n __serviceInstanceId: this.serviceRegistry.serviceInstanceId,\n };\n\n if (immediate) {\n this.emit(signalName, payload);\n return;\n }\n\n this.debounce(signalName, payload, 100);\n }\n\n private static scheduleServiceManifestPublicationRetry(reason: string): void {\n if (!this.serviceRegistry.serviceName || !this.serviceRegistry.serviceInstanceId) {\n return;\n }\n\n setTimeout(() => {\n this.requestServiceManifestPublication(reason, false);\n }, 1000);\n }\n\n private static async publishServiceManifestIfNeeded(\n reason: string,\n ): Promise<\n | false\n | {\n serviceManifest: ReturnType<typeof buildServiceManifestSnapshot>;\n published: true;\n }\n > {\n if (\n !this.serviceRegistry.connectsToCadenzaDB ||\n !this.serviceRegistry.serviceName ||\n !this.serviceRegistry.serviceInstanceId\n ) {\n return false;\n }\n\n const publishReason =\n typeof reason === \"string\" && reason.trim().length > 0\n ? reason.trim()\n : \"service_manifest_publish\";\n\n if (this.serviceManifestPublicationInFlight) {\n this.serviceManifestPublicationPendingReason = publishReason;\n return false;\n }\n\n const snapshot = buildServiceManifestSnapshot({\n serviceName: this.serviceRegistry.serviceName,\n serviceInstanceId: this.serviceRegistry.serviceInstanceId,\n revision: this.serviceManifestRevision + 1,\n publishedAt: new Date().toISOString(),\n });\n\n if (\n this.lastPublishedServiceManifestHash &&\n this.lastPublishedServiceManifestHash === snapshot.manifestHash\n ) {\n return false;\n }\n\n this.serviceManifestPublicationInFlight = true;\n try {\n this.serviceRegistry.ensureBootstrapAuthorityControlPlaneForInquiry(\n AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT,\n snapshot,\n );\n if (!this.serviceRegistry.hasAuthorityBootstrapHandshakeEstablished()) {\n this.scheduleServiceManifestPublicationRetry(publishReason);\n return false;\n }\n await this.inquire(AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT, snapshot, {\n timeout: 15_000,\n requireComplete: true,\n });\n this.serviceManifestRevision = snapshot.revision;\n this.lastPublishedServiceManifestHash = snapshot.manifestHash;\n return {\n serviceManifest: snapshot,\n published: true,\n };\n } catch (error) {\n this.log(\"Service manifest publication failed. Scheduling retry.\", {\n serviceName: this.serviceRegistry.serviceName,\n serviceInstanceId: this.serviceRegistry.serviceInstanceId,\n reason: publishReason,\n error: resolveInquiryFailureError(\n AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT,\n error,\n ),\n inquiryMeta:\n error && typeof error === \"object\" && \"__inquiryMeta\" in error\n ? (error as Record<string, unknown>).__inquiryMeta\n : null,\n });\n this.scheduleServiceManifestPublicationRetry(publishReason);\n return false;\n } finally {\n this.serviceManifestPublicationInFlight = false;\n if (this.serviceManifestPublicationPendingReason) {\n const pendingReason = this.serviceManifestPublicationPendingReason;\n this.serviceManifestPublicationPendingReason = null;\n this.debounce(\n \"meta.service_manifest.publish_requested\",\n { __reason: pendingReason },\n 100,\n );\n }\n }\n }\n\n private static ensureServiceManifestPublicationTasks(): void {\n if (this.get(\"Publish service manifest\")) {\n return;\n }\n\n this.createMetaTask(\n \"Publish service manifest\",\n async (ctx) =>\n this.publishServiceManifestIfNeeded(\n typeof ctx.__reason === \"string\" && ctx.__reason.trim().length > 0\n ? ctx.__reason.trim()\n : \"service_manifest_publish\",\n ),\n \"Publishes a full static manifest snapshot to authority when the manifest hash changes.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_manifest.publish_requested\");\n\n this.createMetaTask(\n \"Request manifest publication after structural change\",\n (ctx) => {\n const reason =\n typeof ctx.signal === \"string\" && ctx.signal.trim().length > 0\n ? ctx.signal\n : typeof ctx.__reason === \"string\" && ctx.__reason.trim().length > 0\n ? ctx.__reason\n : \"manifest_structural_update\";\n this.requestServiceManifestPublication(\n reason,\n reason === \"meta.service_registry.instance_inserted\",\n );\n return true;\n },\n \"Requests a manifest publication when a static service primitive changes.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\n \"meta.service_registry.instance_inserted\",\n \"meta.task.created\",\n \"meta.task.destroyed\",\n \"meta.task.relationship_added\",\n \"meta.task.relationship_removed\",\n \"meta.task.intent_associated\",\n \"meta.task.observed_signal\",\n \"meta.task.attached_signal\",\n \"meta.task.detached_signal\",\n \"meta.actor.created\",\n \"meta.actor.task_associated\",\n \"meta.fetch.handshake_complete\",\n \"meta.service_registry.registered_global_signals\",\n \"meta.service_registry.registered_global_intents\",\n \"meta.service_registry.initial_sync_complete\",\n \"global.meta.graph_metadata.routine_created\",\n \"global.meta.graph_metadata.routine_updated\",\n );\n }\n\n private static buildLegacyLocalCadenzaDBTaskName(\n tableName: string,\n operation: DbOperationType,\n ): string {\n const operationPrefix =\n operation.charAt(0).toUpperCase() + operation.slice(1);\n const helperSuffix = camelCase(String(tableName ?? \"\").trim());\n\n return `db${operationPrefix}${helperSuffix.charAt(0).toUpperCase() + helperSuffix.slice(1)}`;\n }\n\n private static buildGeneratedLocalCadenzaDBTaskName(\n tableName: string,\n operation: DbOperationType,\n ): string {\n const operationPrefix =\n operation.charAt(0).toUpperCase() + operation.slice(1);\n return `${operationPrefix} ${String(tableName ?? \"\").trim()}`;\n }\n\n /**\n * Initializes the application by setting up necessary components and configurations.\n * This method ensures the initialization process is only executed once throughout the application lifecycle.\n *\n * @return {void} This method does not return any value.\n */\n static bootstrap(): void {\n if (this.isBootstrapped) return;\n this.isBootstrapped = true;\n\n Cadenza.bootstrap();\n Cadenza.setRuntimeInquiryDelegate((inquiry, context, options) =>\n this.inquire(\n inquiry,\n context,\n (options ?? {}) as DistributedInquiryOptions,\n ),\n );\n this.signalBroker = Cadenza.signalBroker;\n this.inquiryBroker = Cadenza.inquiryBroker;\n this.runner = Cadenza.runner;\n this.metaRunner = Cadenza.metaRunner;\n this.registry = Cadenza.registry;\n this.serviceRegistry = ServiceRegistry.instance;\n RestController.instance;\n SocketController.instance;\n RuntimeValidationController.instance;\n }\n\n private static ensureTransportControllers(isFrontend: boolean): void {\n if (!isFrontend) {\n SignalController.instance;\n }\n }\n\n private static setHydrationResults(\n hydration?: HydrationOptions,\n ): void {\n this.hydratedInquiryResults = new Map();\n\n const initialInquiryResults = hydration?.initialInquiryResults ?? {};\n for (const [key, value] of Object.entries(initialInquiryResults)) {\n this.hydratedInquiryResults.set(key, value as AnyObject);\n }\n }\n\n private static consumeHydratedInquiryResult(\n hydrationKey?: string,\n ): AnyObject | undefined {\n if (!hydrationKey) {\n return undefined;\n }\n\n const result = this.hydratedInquiryResults.get(hydrationKey);\n if (result === undefined) {\n return undefined;\n }\n\n this.hydratedInquiryResults.delete(hydrationKey);\n return result;\n }\n\n private static ensureFrontendSyncLoop(): void {\n if (this.frontendSyncScheduled) {\n return;\n }\n\n this.frontendSyncScheduled = true;\n Cadenza.interval(\"meta.sync_requested\", { __syncing: false }, 180000);\n Cadenza.schedule(\"meta.sync_requested\", { __syncing: false }, 250);\n }\n\n private static normalizeDeclaredTransports(\n transports: ServiceTransportConfig[] | undefined,\n serviceId: string,\n useSocket: boolean,\n ): Array<\n ServiceTransportConfig & {\n uuid: string;\n }\n > {\n return (transports ?? [])\n .map((transport) => normalizeServiceTransportConfig(transport))\n .filter(\n (\n transport,\n ): transport is ServiceTransportConfig =>\n !!transport,\n )\n .map((transport) => ({\n ...transport,\n protocols:\n transport.protocols && transport.protocols.length > 0\n ? transport.protocols\n : useSocket\n ? [\"rest\", \"socket\"]\n : [\"rest\"],\n uuid: uuid(),\n }));\n }\n\n private static createBootstrapTransport(\n serviceInstanceId: string,\n role: ServiceTransportRole,\n endpoint: ReturnType<typeof resolveBootstrapEndpoint>,\n ) {\n return {\n uuid: `${serviceInstanceId}-${role}-bootstrap`,\n service_instance_id: serviceInstanceId,\n role,\n origin: endpoint.url,\n protocols: [\"rest\", \"socket\"] as const,\n security_profile: null,\n auth_strategy: null,\n };\n }\n\n /**\n * Validates the provided service name based on specific rules.\n *\n * @param {string} serviceName - The service name to validate. Must be less than 100 characters,\n * must not contain spaces, dots, or backslashes, and must start with a capital letter.\n * @return {void} Throws an error if the service name does not meet the validation criteria.\n * @throws {Error} If the service name exceeds 100 characters.\n * @throws {Error} If the service name contains spaces.\n * @throws {Error} If the service name contains dots.\n * @throws {Error} If the service name contains backslashes.\n * @throws {Error} If the service name does not start with a capital letter.\n */\n protected static validateServiceName(serviceName: string) {\n if (serviceName.length > 100) {\n throw new Error(\"Service name must be less than 100 characters\");\n }\n\n if (serviceName.includes(\" \")) {\n throw new Error(\"Service name must not contain spaces\");\n }\n\n if (serviceName.includes(\".\")) {\n throw new Error(\"Service name must not contain dots\");\n }\n\n if (serviceName.includes(\"\\\\\")) {\n throw new Error(\"Service name must not contain backslashes\");\n }\n\n if (\n serviceName.charAt(0) !== serviceName.charAt(0).toUpperCase() &&\n serviceName.charAt(0) === serviceName.charAt(0).toLowerCase()\n ) {\n throw new Error(\"Service name must start with a capital letter\");\n }\n }\n\n /**\n * Validates the provided name to ensure it meets the required criteria.\n *\n * @param {string} name - The name to be validated.\n * @return {void} Does not return any value.\n */\n protected static validateName(name: string): void {\n Cadenza.validateName(name);\n }\n\n /**\n * Gets the current run strategy from the Cadenza configuration.\n *\n * @return {Function} The run strategy function defined in the Cadenza configuration.\n */\n public static get runStrategy(): {\n PARALLEL: unknown;\n SEQUENTIAL: unknown;\n } {\n return Cadenza.runStrategy as {\n PARALLEL: unknown;\n SEQUENTIAL: unknown;\n };\n }\n\n /**\n * Sets the mode for the Cadenza application.\n *\n * @param {CadenzaMode} mode - The mode to be set for the application.\n * @return {void} This method does not return a value.\n */\n public static setMode(mode: CadenzaMode) {\n Cadenza.setMode(mode);\n }\n\n public static hasCompletedBootstrapSync(): boolean {\n return !this.serviceCreated || this.bootstrapSyncCompleted;\n }\n\n public static isServiceReady(): boolean {\n return this.serviceCreated && this.bootstrapSyncCompleted;\n }\n\n public static getServiceReadySignalName(serviceName?: string): string {\n const resolvedServiceName =\n serviceName ??\n this.serviceRegistry?.serviceName ??\n \"\";\n\n if (!resolvedServiceName) {\n throw new Error(\"Cannot resolve service-ready signal without a service name\");\n }\n\n return `${snakeCase(resolvedServiceName)}.ready`;\n }\n\n private static getServiceReadyHandoffSignalName(serviceName?: string): string {\n const resolvedServiceName =\n serviceName ??\n this.serviceRegistry?.serviceName ??\n \"\";\n\n if (!resolvedServiceName) {\n throw new Error(\n \"Cannot resolve service-ready handoff signal without a service name\",\n );\n }\n\n return `meta.service_registry.emit_ready_requested:${snakeCase(resolvedServiceName)}`;\n }\n\n public static markBootstrapSyncCompleted(): void {\n this.bootstrapSyncCompleted = true;\n }\n\n /**\n * Emits a signal with the specified data using the associated broker.\n *\n * @param {string} signal - The name of the event or signal to emit.\n * @param {AnyObject} [data={}] - The data to be emitted along with the signal.\n * @param options\n * @return {void} No return value.\n *\n * @example\n * This is meant to be used as a global event emitter.\n * If you want to emit an event from within a task, you can use the `emit` method provided to the task function. See {@link TaskFunction}.\n * ```ts\n * Cadenza.emit('main.my_event', { foo: 'bar' });\n * ```\n */\n static emit(signal: string, data: AnyObject = {}, options: EmitOptions = {}) {\n Cadenza.emit(signal, data, options);\n }\n\n static debounce(signal: string, context: any = {}, delayMs: number = 500) {\n Cadenza.debounce(signal, context, delayMs);\n }\n\n public static schedule(\n signal: string,\n context: AnyObject,\n timeoutMs: number,\n exactDateTime?: Date,\n ) {\n Cadenza.schedule(signal, context, timeoutMs, exactDateTime);\n }\n\n public static interval(\n signal: string,\n context: AnyObject,\n intervalMs: number,\n leading = false,\n startDateTime?: Date,\n ) {\n Cadenza.interval(signal, context, intervalMs, leading, startDateTime);\n }\n\n public static defineIntent(intent: Intent): Intent {\n this.inquiryBroker?.addIntent(intent);\n return intent;\n }\n\n public static getRuntimeValidationPolicy(): RuntimeValidationPolicy {\n this.bootstrap();\n return Cadenza.getRuntimeValidationPolicy();\n }\n\n public static setRuntimeValidationPolicy(\n policy: RuntimeValidationPolicy = {},\n ): RuntimeValidationPolicy {\n this.bootstrap();\n return Cadenza.setRuntimeValidationPolicy(policy);\n }\n\n public static replaceRuntimeValidationPolicy(\n policy: RuntimeValidationPolicy = {},\n ): RuntimeValidationPolicy {\n this.bootstrap();\n return Cadenza.replaceRuntimeValidationPolicy(policy);\n }\n\n public static clearRuntimeValidationPolicy(): void {\n this.bootstrap();\n Cadenza.clearRuntimeValidationPolicy();\n }\n\n public static getRuntimeValidationScopes(): RuntimeValidationScope[] {\n this.bootstrap();\n return Cadenza.getRuntimeValidationScopes();\n }\n\n public static upsertRuntimeValidationScope(\n scope: RuntimeValidationScope,\n ): RuntimeValidationScope {\n this.bootstrap();\n return Cadenza.upsertRuntimeValidationScope(scope);\n }\n\n public static removeRuntimeValidationScope(id: string): void {\n this.bootstrap();\n Cadenza.removeRuntimeValidationScope(id);\n }\n\n public static clearRuntimeValidationScopes(): void {\n this.bootstrap();\n Cadenza.clearRuntimeValidationScopes();\n }\n\n private static getInquiryResponderDescriptor(task: Task): InquiryResponderDescriptor {\n return this.serviceRegistry.getInquiryResponderDescriptor(task);\n }\n\n private static compareInquiryResponders(\n left: { task: Task; descriptor: InquiryResponderDescriptor },\n right: { task: Task; descriptor: InquiryResponderDescriptor },\n ) {\n return compareResponderDescriptors(left.descriptor, right.descriptor);\n }\n\n private static buildInquirySummary(\n inquiry: string,\n startedAt: number,\n statuses: InquiryResponderStatus[],\n totalResponders: number,\n ): DistributedInquiryMeta {\n const counts = summarizeResponderStatuses(statuses);\n const isMetaInquiry = isMetaIntentName(inquiry);\n const eligibleResponders = statuses.length;\n return {\n inquiry,\n isMetaInquiry,\n totalResponders,\n eligibleResponders,\n filteredOutResponders: Math.max(0, totalResponders - eligibleResponders),\n responded: counts.responded,\n failed: counts.failed,\n timedOut: counts.timedOut,\n pending: counts.pending,\n durationMs: Date.now() - startedAt,\n responders: statuses,\n };\n }\n\n private static shouldPersistInquiry(\n inquiry: string,\n _context: AnyObject,\n ): boolean {\n return !isMetaIntentName(inquiry);\n }\n\n private static splitInquiryPersistenceContext(\n context: AnyObject,\n ): { context: AnyObject; metadata: AnyObject } {\n const businessContext: AnyObject = {};\n const metadata: AnyObject =\n context?.__metadata && typeof context.__metadata === \"object\"\n ? { ...context.__metadata }\n : {};\n\n for (const [key, value] of Object.entries(context ?? {})) {\n if (key === \"__metadata\") {\n continue;\n }\n\n if (key.startsWith(\"__\")) {\n metadata[key] = value;\n continue;\n }\n\n businessContext[key] = value;\n }\n\n return {\n context: businessContext,\n metadata,\n };\n }\n\n private static buildInquiryPersistenceStartData(\n inquiryId: string,\n inquiry: string,\n context: AnyObject,\n startedAt: number,\n ): AnyObject {\n const normalizedTaskVersion = Number(context?.__inquirySourceTaskVersion);\n const { context: inquiryContext, metadata } =\n this.splitInquiryPersistenceContext(context);\n\n return {\n uuid: inquiryId,\n name: inquiry,\n taskName:\n typeof context?.__inquirySourceTaskName === \"string\"\n ? context.__inquirySourceTaskName\n : null,\n taskVersion:\n Number.isFinite(normalizedTaskVersion) && normalizedTaskVersion > 0\n ? normalizedTaskVersion\n : null,\n taskExecutionId:\n typeof context?.__inquirySourceTaskExecutionId === \"string\"\n ? context.__inquirySourceTaskExecutionId\n : null,\n serviceName: this.serviceRegistry.serviceName,\n serviceInstanceId: this.serviceRegistry.serviceInstanceId,\n executionTraceId:\n typeof (context?.__metadata?.__executionTraceId ??\n context?.__executionTraceId) === \"string\"\n ? context.__metadata?.__executionTraceId ?? context.__executionTraceId\n : null,\n // Persist the inquiry row first, then attach routine linkage on completion.\n routineExecutionId: null,\n context: inquiryContext,\n metadata,\n isMeta: false,\n sentAt: formatTimestamp(startedAt),\n };\n }\n\n public static async inquire(\n inquiry: string,\n context: AnyObject,\n options: DistributedInquiryOptions = {},\n ): Promise<AnyObject> {\n this.bootstrap();\n\n const hydratedResult = this.consumeHydratedInquiryResult(\n options.hydrationKey,\n );\n if (hydratedResult !== undefined) {\n return hydratedResult;\n }\n\n const collectAllResponders = () => {\n const observer = this.inquiryBroker?.inquiryObservers.get(inquiry);\n return observer\n ? Array.from(observer.tasks).map((task) => ({\n task,\n descriptor: this.getInquiryResponderDescriptor(task),\n }))\n : [];\n };\n\n let allResponders = collectAllResponders();\n if (\n allResponders.length === 0 &&\n isAuthorityBootstrapIntent(inquiry) &&\n this.serviceRegistry?.ensureBootstrapAuthorityControlPlaneForInquiry?.(\n inquiry,\n context,\n )\n ) {\n allResponders = collectAllResponders();\n }\n const isMetaInquiry = isMetaIntentName(inquiry);\n const startedAt = Date.now();\n const persistInquiry = this.shouldPersistInquiry(inquiry, context);\n const logicalInquiryId = persistInquiry ? uuid() : null;\n const inquiryStartData = logicalInquiryId\n ? this.buildInquiryPersistenceStartData(\n logicalInquiryId,\n inquiry,\n context,\n startedAt,\n )\n : null;\n\n if (inquiryStartData) {\n this.emit(\"meta.inquiry_broker.inquiry_started\", {\n data: inquiryStartData,\n });\n }\n\n const responders = allResponders.filter(({ task, descriptor }) => {\n const shouldExecute = shouldExecuteInquiryResponder(inquiry, task.isMeta);\n\n if (shouldExecute) {\n return true;\n }\n\n const warningKey = `${inquiry}|${descriptor.serviceName}|${descriptor.taskName}|${descriptor.taskVersion}|${descriptor.localTaskName}`;\n if (!this.warnedInvalidMetaIntentResponderKeys.has(warningKey)) {\n this.warnedInvalidMetaIntentResponderKeys.add(warningKey);\n this.log(\n \"Skipping non-meta task for meta intent inquiry.\",\n {\n inquiry,\n responder: descriptor,\n },\n \"warning\",\n descriptor.serviceName,\n );\n }\n\n return false;\n });\n\n if (responders.length === 0) {\n const inquiryMeta = {\n inquiry,\n isMetaInquiry,\n totalResponders: allResponders.length,\n eligibleResponders: 0,\n filteredOutResponders: allResponders.length,\n responded: 0,\n failed: 0,\n timedOut: 0,\n pending: 0,\n durationMs: 0,\n responders: [],\n } as DistributedInquiryMeta;\n\n if (logicalInquiryId) {\n this.emit(\"meta.inquiry_broker.inquiry_completed\", {\n insertData: inquiryStartData,\n data: {\n fulfilledAt: formatTimestamp(startedAt),\n duration: 0,\n metadata: {\n ...(inquiryStartData?.metadata ?? {}),\n inquiryMeta,\n },\n },\n filter: {\n uuid: logicalInquiryId,\n },\n });\n }\n\n if (options.requireComplete) {\n throw {\n __inquiryMeta: inquiryMeta,\n __error: `Inquiry '${inquiry}' had no eligible responders`,\n errored: true,\n };\n }\n\n return {\n __inquiryMeta: inquiryMeta,\n };\n }\n\n responders.sort(this.compareInquiryResponders.bind(this));\n\n const overallTimeoutMs = options.overallTimeoutMs ?? options.timeout ?? 0;\n const requireComplete = options.requireComplete ?? false;\n const perResponderTimeoutMs = options.perResponderTimeoutMs;\n const statuses: InquiryResponderStatus[] = [];\n const statusByTask = new Map<Task, InquiryResponderStatus>();\n for (const responder of responders) {\n const status: InquiryResponderStatus = {\n ...responder.descriptor,\n status: \"timed_out\",\n durationMs: 0,\n };\n statuses.push(status);\n statusByTask.set(responder.task, status);\n }\n\n const resultsByTask = new Map<Task, AnyObject>();\n const failedResultsByTask = new Map<Task, AnyObject>();\n const resolverTasks: Task[] = [];\n const pending = new Set(responders.map((r) => r.task));\n const startTimeByTask = new Map<Task, number>();\n\n this.emit(\"meta.inquiry_broker.inquire\", { inquiry, context });\n\n return new Promise((resolve, reject) => {\n let finalized = false;\n let timeoutId: NodeJS.Timeout | undefined;\n\n const finalize = (timedOut: boolean) => {\n if (finalized) return;\n finalized = true;\n\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n\n for (const resolverTask of resolverTasks) {\n resolverTask.destroy();\n }\n\n if (timedOut && pending.size > 0) {\n for (const task of pending) {\n const status = statusByTask.get(task);\n if (!status) continue;\n status.status = \"timed_out\";\n status.durationMs = Date.now() - (startTimeByTask.get(task) ?? startedAt);\n }\n }\n\n const fulfilledContexts = responders\n .filter((responder) => resultsByTask.has(responder.task))\n .map((responder) => resultsByTask.get(responder.task)!);\n\n const mergedContext = mergeInquiryContexts(fulfilledContexts);\n const inquiryMeta = this.buildInquirySummary(\n inquiry,\n startedAt,\n statuses,\n allResponders.length,\n );\n const finishedAt = Date.now();\n const responseContext = {\n ...mergedContext,\n __inquiryMeta: inquiryMeta,\n };\n\n if (logicalInquiryId) {\n this.emit(\"meta.inquiry_broker.inquiry_completed\", {\n insertData: inquiryStartData,\n data: {\n fulfilledAt: formatTimestamp(finishedAt),\n duration: finishedAt - startedAt,\n routineExecutionId:\n typeof inquiryStartData?.metadata?.__inquirySourceRoutineExecutionId ===\n \"string\"\n ? inquiryStartData.metadata.__inquirySourceRoutineExecutionId\n : null,\n metadata: {\n ...(inquiryStartData?.metadata ?? {}),\n inquiryMeta,\n },\n },\n filter: {\n uuid: logicalInquiryId,\n },\n });\n }\n\n if (\n requireComplete &&\n (timedOut ||\n inquiryMeta.failed > 0 ||\n inquiryMeta.timedOut > 0 ||\n inquiryMeta.pending > 0)\n ) {\n const failedResponderResult = responders\n .map((responder) => failedResultsByTask.get(responder.task))\n .find((result): result is AnyObject => Boolean(result));\n const failedResponderError = statuses.find(\n (status) =>\n status.status === \"failed\" &&\n typeof status.error === \"string\" &&\n status.error.trim().length > 0,\n )?.error;\n\n reject({\n ...responseContext,\n __error:\n (failedResponderResult\n ? resolveInquiryFailureError(inquiry, failedResponderResult)\n : undefined) ??\n failedResponderError ??\n resolveInquiryFailureError(inquiry, responseContext),\n errored: true,\n });\n return;\n }\n\n resolve(responseContext);\n };\n\n if (overallTimeoutMs > 0) {\n timeoutId = setTimeout(() => finalize(true), overallTimeoutMs);\n }\n\n for (const responder of responders) {\n const { task, descriptor } = responder;\n const responderInquiryId = uuid();\n startTimeByTask.set(task, Date.now());\n\n const resolverTask = this.createEphemeralMetaTask(\n `Resolve inquiry ${inquiry} for ${descriptor.localTaskName}`,\n (resultCtx) => {\n if (finalized) {\n return;\n }\n\n pending.delete(task);\n\n const status = statusByTask.get(task);\n\n if (status) {\n status.durationMs =\n Date.now() -\n (startTimeByTask.get(task) ?? startedAt);\n\n if (resultCtx?.errored || resultCtx?.failed) {\n status.status = \"failed\";\n status.error = String(\n resultCtx?.__error ?? resultCtx?.error ?? \"Inquiry responder failed\",\n );\n failedResultsByTask.set(task, resultCtx);\n } else {\n status.status = \"fulfilled\";\n resultsByTask.set(task, resultCtx);\n }\n }\n\n if (pending.size === 0) {\n finalize(false);\n }\n },\n \"Resolves distributed inquiry responder result\",\n { register: false },\n ).doOn(`meta.node.graph_completed:${responderInquiryId}`);\n\n resolverTasks.push(resolverTask);\n\n const executionContext: AnyObject = {\n ...context,\n ...(logicalInquiryId ? { __inquiryId: logicalInquiryId } : {}),\n __routineExecId: responderInquiryId,\n __isInquiry: true,\n };\n\n if (perResponderTimeoutMs !== undefined) {\n executionContext.__timeout = perResponderTimeoutMs;\n }\n\n if (task.isMeta) {\n this.metaRunner?.run(task, executionContext);\n } else {\n this.runner?.run(task, executionContext);\n }\n }\n });\n }\n\n /**\n * Executes the given task or graph routine within the provided context using the configured runner.\n *\n * @param {Task | GraphRoutine} task - The task or graph routine to be executed.\n * @param {AnyObject} context - The context within which the task will be executed.\n * @return {void}\n *\n * @example\n * ```ts\n * const task = Cadenza.createTask('My task', (ctx) => {\n * console.log('My task executed with context:', ctx);\n * });\n *\n * Cadenza.run(task, { foo: 'bar' });\n *\n * const routine = Cadenza.createRoutine('My routine', [task], 'My routine description');\n *\n * Cadenza.run(routine, { foo: 'bar' });\n * ```\n */\n static run(task: Task | GraphRoutine, context: AnyObject) {\n this.runner?.run(task, context);\n }\n /**\n * Logs a message with a specified log level and additional contextual data.\n * Records in the CadenzaDB when available.\n *\n * @param {string} message - The main message to be logged.\n * @param {any} [data={}] - Additional data or metadata to include with the log.\n * @param {\"info\"|\"warning\"|\"error\"|\"critical\"} [level=\"info\"] - The severity level of the log message.\n * @param {string|null} [subjectServiceName=null] - The name of the subject service related to the log.\n * @param {string|null} [subjectServiceInstanceId=null] - The instance ID of the subject service related to the log.\n * @return {void} No return value.\n */\n static log(\n message: string,\n data: any = {},\n level: \"info\" | \"warning\" | \"error\" | \"critical\" = \"info\",\n subjectServiceName: string | null = null,\n subjectServiceInstanceId: string | null = null,\n ) {\n if (level === \"critical\") {\n console.error(\"CRITICAL:\", message, data);\n } else if (level === \"error\") {\n console.error(message, data);\n } else if (level === \"warning\") {\n console.warn(message, data);\n } else {\n console.log(message, data);\n }\n\n this.emit(\"global.meta.system_log.log\", {\n data: {\n data,\n level,\n message,\n serviceName: this.serviceRegistry?.serviceName,\n serviceInstanceId: this.serviceRegistry?.serviceInstanceId,\n subjectServiceName,\n subjectServiceInstanceId,\n created: formatTimestamp(Date.now()),\n },\n });\n }\n\n public static get(taskName: string): Task | undefined {\n return Cadenza.get(taskName);\n }\n\n public static getLocalCadenzaDBTask(\n tableName: string,\n operation: DbOperationType,\n ): Task | undefined {\n const generatedTaskName = this.buildGeneratedLocalCadenzaDBTaskName(\n tableName,\n operation,\n );\n const legacyTaskName = this.buildLegacyLocalCadenzaDBTaskName(\n tableName,\n operation,\n );\n\n return Cadenza.get(generatedTaskName) ?? Cadenza.get(legacyTaskName);\n }\n\n public static getLocalCadenzaDBInsertTask(\n tableName: string,\n ): Task | undefined {\n return this.getLocalCadenzaDBTask(tableName, \"insert\");\n }\n\n public static getLocalCadenzaDBQueryTask(\n tableName: string,\n ): Task | undefined {\n return this.getLocalCadenzaDBTask(tableName, \"query\");\n }\n\n public static getActor<\n D extends Record<string, any> = AnyObject,\n R = AnyObject,\n >(actorName: string): Actor<D, R> | undefined {\n const cadenzaWithActors = Cadenza as unknown as {\n getActor?: <D extends Record<string, any>, R = AnyObject>(\n actorName: string,\n ) => Actor<D, R> | undefined;\n };\n return cadenzaWithActors.getActor?.<D, R>(actorName);\n }\n\n public static getAllActors<\n D extends Record<string, any> = AnyObject,\n R = AnyObject,\n >(): Actor<D, R>[] {\n const cadenzaWithActors = Cadenza as unknown as {\n getAllActors?: <D extends Record<string, any>, R = AnyObject>() => Actor<\n D,\n R\n >[];\n };\n return cadenzaWithActors.getAllActors?.<D, R>() ?? [];\n }\n\n public static getRoutine(routineName: string): GraphRoutine | undefined {\n return Cadenza.getRoutine(routineName);\n }\n\n /**\n * Creates a new DeputyTask instance based on the provided routine name, service name, and options.\n * This method ensures proper task initialization, including setting a unique name,\n * validation of the routine name, and applying default option values.\n *\n * @param {string} routineName - The name of the routine the task references. This is mandatory and should be a valid string.\n * @param {string|undefined} [serviceName] - The name of the service that the routine belongs to. This is optional and defaults to undefined.\n * @param {TaskOptions} [options={}] - A configuration object for the task, allowing various properties such as concurrency, timeout, and retry settings to be customized.\n * @return {DeputyTask} - A new DeputyTask instance initialized with the specified parameters.\n *\n * @example\n * Let's say we are writing the code for a Service called \"Service1\".\n * We also have an additional service called \"Service2\" with a routine called \"My Routine\".\n * A flow on Service1 depends on the result of \"My Routine\" on Service2.\n * We can create a deputy task for the routine using the following code:\n * ```ts\n * Cadenza.createDeputyTask(\"My Routine\", \"Service2\").then(\n * Cadenza.createTask(\"Handle result\", (ctx) => {\n * console.log(\"'Handle result' executed with context:\", ctx);\n * }),\n * );\n * ```\n * Internally, this will send a request to an available \"Service2\" instance to execute the \"My Routine\" routine.\n * The deputy task will wait for the response and then execute the next task(s) in the chain.\n *\n * You can visualize the execution of the deputy task as follows:\n * ```\n * Service1 flow = [Deputy tasks for \"My Routine\"] -> [\"Handle result\"]\n * || A\n * V ||\n * Service2 flow = [[My Routine]]\n * ```\n *\n * Deputy tasks are useful for delegating flows to other services, allowing for parallel execution and load balancing.\n * But it creates tight coupling between the services, which may not be desirable in some cases.\n * In cases where an event on one service should simply trigger a flow on another service, without the need for a result,\n * it is recommended to use signals instead. Like this:\n *\n * Service1\n * ```ts\n * Cadenza.createTask(\"Generate event\", (ctx, emit) => {\n * // Do something\n * emit(\"some.event\");\n * });\n * ```\n *\n * Service2\n * ```ts\n * Cadenza.createTask(\"Handle event\", (ctx) => {\n * console.log(\"Handle event executed with context:\", ctx);\n * }).doOn(\"Service1.some.event\");\n * ```\n *\n * Every time the \"Generate event\" task is executed, it will emit a signal \"Service1.some.event\" to one Service2 instance and trigger the \"Handle event\" task.\n */\n static createDeputyTask(\n routineName: string,\n serviceName: string | undefined = undefined,\n options: TaskOptions = {},\n ): DeputyTask {\n this.bootstrap();\n this.validateName(routineName);\n const name = `${routineName} (Proxy)`;\n\n options = {\n concurrency: DEFAULT_DEPUTY_TASK_CONCURRENCY,\n timeout: DEFAULT_DEPUTY_TASK_TIMEOUT_MS,\n register: true,\n isUnique: false,\n isMeta: false,\n isSubMeta: false,\n isHidden: false,\n getTagCallback: undefined,\n inputSchema: undefined,\n validateInputContext: false,\n outputSchema: undefined,\n validateOutputContext: false,\n retryCount: 0,\n retryDelay: 0,\n retryDelayMax: 0,\n retryDelayFactor: 1,\n ...options,\n };\n\n return new DeputyTask(\n name,\n routineName,\n serviceName,\n `Referencing routine in service: ${routineName} on service: ${serviceName}.`,\n options.concurrency,\n options.timeout,\n options.register,\n options.isUnique,\n options.isMeta,\n options.isSubMeta,\n options.isHidden,\n options.getTagCallback,\n options.inputSchema,\n options.validateInputContext,\n options.outputSchema,\n options.validateOutputContext,\n options.retryCount,\n options.retryDelay,\n options.retryDelayMax,\n options.retryDelayFactor,\n );\n }\n\n /**\n * Creates a meta deputy task by setting the `isMeta` property in the options to true,\n * and delegating task creation to the `createDeputyTask` method.\n * See {@link createDeputyTask} and {@link createMetaTask} for more information.\n *\n * @param {string} routineName - The name of the routine associated with the task.\n * @param {string | undefined} [serviceName] - The optional name of the service associated with the task.\n * @param {TaskOptions} [options={}] - Additional options for the task. Defaults to an empty object if not provided.\n * @return {DeputyTask} - The created meta deputy task.\n */\n static createMetaDeputyTask(\n routineName: string,\n serviceName: string | undefined = undefined,\n options: TaskOptions = {},\n ): DeputyTask {\n options.isMeta = true;\n return this.createDeputyTask(routineName, serviceName, options);\n }\n\n /**\n * Creates a throttled deputy task with the specified parameters.\n * See {@link createThrottledTask} and {@link createDeputyTask} for more information.\n *\n * @param {string} routineName - The name of the routine to be executed.\n * @param {string | undefined} [serviceName=undefined] - The name of the service, if applicable.\n * @param {ThrottleTagGetter} [throttledIdGetter=() => \"default\"] - A function to get the throttled tag for the task.\n * @param {TaskOptions} [options={}] - The options for task configuration, including concurrency and callbacks.\n * @return {DeputyTask} The created throttled deputy task.\n */\n static createThrottledDeputyTask(\n routineName: string,\n serviceName: string | undefined = undefined,\n throttledIdGetter: ThrottleTagGetter = () => \"default\",\n options: TaskOptions = {},\n ) {\n options.concurrency = 1;\n options.getTagCallback = throttledIdGetter;\n return this.createDeputyTask(routineName, serviceName, options);\n }\n\n /**\n * Creates a throttled deputy task with meta-task settings enabled.\n * See {@link createThrottledTask},{@link createDeputyTask} and {@link createMetaTask} for more information.\n *\n * @param {string} routineName - The name of the routine for which the task is being created.\n * @param {string|undefined} [serviceName=undefined] - The name of the service associated with the task, or undefined if not applicable.\n * @param {ThrottleTagGetter} [throttledIdGetter=() => \"default\"] - A function to compute or return the throttling identifier.\n * @param {TaskOptions} [options={}] - Additional options for the task configuration.\n * @return {any} Returns the created throttled deputy task instance.\n */\n static createMetaThrottledDeputyTask(\n routineName: string,\n serviceName: string | undefined = undefined,\n throttledIdGetter: ThrottleTagGetter = () => \"default\",\n options: TaskOptions = {},\n ) {\n options.isMeta = true;\n return this.createThrottledDeputyTask(\n routineName,\n serviceName,\n throttledIdGetter,\n options,\n );\n }\n\n /**\n * Creates and configures a signal transmission task that handles the transmission\n * of a specified signal to a target service with a set of customizable options.\n * This is only used for internal purposes and is not exposed to the business logic layer.\n *\n * @param {string} signalName - The name of the signal to be transmitted.\n * @param {string} serviceName - The name of the target service to transmit the signal to.\n * @param {TaskOptions} [options={}] - A set of optional parameters to further configure the task.\n * @return {SignalTransmissionTask} A new instance of SignalTransmissionTask configured with the given parameters.\n */\n static createSignalTransmissionTask(\n signalName: string,\n serviceName: string,\n options: TaskOptions = {},\n ): SignalTransmissionTask | undefined {\n this.bootstrap();\n this.validateName(signalName);\n this.validateName(serviceName);\n\n const name = `Transmit signal: ${signalName} to ${serviceName}`;\n if (this.get(name)) {\n return;\n }\n\n options = {\n concurrency: DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY,\n timeout: DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS,\n register: true,\n isUnique: false,\n isMeta: true,\n isSubMeta: false,\n isHidden: false,\n getTagCallback: undefined,\n inputSchema: undefined,\n validateInputContext: false,\n outputSchema: undefined,\n validateOutputContext: false,\n retryCount: 1,\n retryDelay: 0,\n retryDelayMax: 0,\n retryDelayFactor: 1,\n ...options,\n };\n\n options.isMeta = true;\n\n return new SignalTransmissionTask(\n name,\n signalName,\n serviceName,\n `Transmits signal ${signalName} to ${serviceName} service.`,\n options.concurrency,\n options.timeout,\n options.register,\n options.isUnique,\n options.isMeta,\n options.isSubMeta,\n options.isHidden,\n options.getTagCallback,\n options.inputSchema,\n options.validateInputContext,\n options.outputSchema,\n options.validateOutputContext,\n options.retryCount,\n options.retryDelay,\n options.retryDelayMax,\n options.retryDelayFactor,\n );\n }\n\n /**\n * Creates and configures a database task that performs an operation on a specified table.\n *\n * @param {string} tableName - The name of the database table on which the operation will be performed.\n * @param {DbOperationType} operation - The type of database operation to execute (e.g., insert, update, delete).\n * @param {string|undefined} [databaseServiceName=undefined] - The name of the database service; defaults to \"default database service\" if not provided.\n * @param {DbOperationPayload} queryData - The data payload required for executing the specified database operation.\n * @param {TaskOptions} [options={}] - Optional configuration for the task, including concurrency, timeout, and retry policies.\n * @return {DatabaseTask} A configured database task instance ready for execution.\n */\n static createDatabaseTask(\n tableName: string,\n operation: DbOperationType,\n databaseServiceName: string | undefined = undefined,\n queryData: DbOperationPayload,\n options: TaskOptions = {},\n ) {\n this.bootstrap();\n this.validateName(tableName);\n this.validateName(operation);\n const resolvedDatabaseServiceName =\n databaseServiceName ?? this.defaultDatabaseServiceName ?? undefined;\n const targetDatabaseServiceName =\n resolvedDatabaseServiceName ?? \"default database service\";\n const name = `${operation.charAt(0).toUpperCase() + operation.slice(1)} ${tableName} in ${targetDatabaseServiceName}`;\n const description = `Executes a ${operation} on table ${tableName} in ${targetDatabaseServiceName}`;\n const taskName = `${operation.charAt(0).toUpperCase() + operation.slice(1)} ${tableName}`;\n\n options = {\n concurrency: DEFAULT_DATABASE_PROXY_TASK_CONCURRENCY,\n timeout: DEFAULT_DATABASE_PROXY_TASK_TIMEOUT_MS,\n register: true,\n isUnique: false,\n isMeta: false,\n isSubMeta: false,\n isHidden: false,\n getTagCallback: undefined,\n inputSchema: undefined,\n validateInputContext: false,\n outputSchema: undefined,\n validateOutputContext: false,\n retryCount: 3,\n retryDelay: 100,\n retryDelayMax: 0,\n retryDelayFactor: 1,\n ...options,\n };\n\n return new DatabaseTask(\n name,\n taskName,\n resolvedDatabaseServiceName,\n description,\n queryData,\n options.concurrency,\n options.timeout,\n options.register,\n options.isUnique,\n options.isMeta,\n options.isSubMeta,\n options.isHidden,\n options.getTagCallback,\n options.inputSchema,\n options.validateInputContext,\n options.outputSchema,\n options.validateOutputContext,\n options.retryCount,\n options.retryDelay,\n options.retryDelayMax,\n options.retryDelayFactor,\n );\n }\n\n /**\n * Creates a task for performing a database insert operation.\n *\n * @param {string} tableName - The name of the table where the insert operation will be performed.\n * @param {string | undefined} [databaseServiceName=undefined] - The name of the database service to use. Optional parameter, defaults to undefined.\n * @param {DbOperationPayload} [queryData={}] - The data payload for the insert operation. Defaults to an empty object.\n * @param {TaskOptions} [options={}] - Additional task options to configure the insert operation. Defaults to an empty object.\n * @return {object} A task configuration object for the database insert operation.\n */\n static createDatabaseInsertTask(\n tableName: string,\n databaseServiceName: string | undefined = undefined,\n queryData: DbOperationPayload = {},\n options: TaskOptions = {},\n ) {\n return this.createDatabaseTask(\n tableName,\n \"insert\",\n databaseServiceName,\n queryData,\n options,\n );\n }\n\n /**\n * Creates a database query task for the specified table and configuration.\n *\n * @param {string} tableName - The name of the database table to execute the query on.\n * @param {string | undefined} [databaseServiceName=undefined] - The name of the database service to use. If undefined, the default service will be used.\n * @param {DbOperationPayload} queryData - The payload containing the query data to be executed.\n * @param {TaskOptions} [options={}] - Optional parameters to configure the task execution.\n * @return {Task} The created database query task.\n */\n static createDatabaseQueryTask(\n tableName: string,\n databaseServiceName: string | undefined = undefined,\n queryData: DbOperationPayload,\n options: TaskOptions = {},\n ) {\n return this.createDatabaseTask(\n tableName,\n \"query\",\n databaseServiceName,\n queryData,\n options,\n );\n }\n\n /**\n * Creates a database task for the CadenzaDB with the specified parameters.\n *\n * @param {string} tableName - The name of the database table on which the operation will be performed.\n * @param {DbOperationType} operation - The type of database operation to execute (e.g., INSERT, UPDATE, DELETE).\n * @param {DbOperationPayload} queryData - The payload or data required to perform the database operation.\n * @param {TaskOptions} [options={}] - Additional options for the task, such as configuration settings.\n * @return {any} The result of creating the database task.\n */\n static createCadenzaDBTask(\n tableName: string,\n operation: DbOperationType,\n queryData: DbOperationPayload,\n options: TaskOptions = {},\n ) {\n options.isMeta = true;\n return this.createDatabaseTask(\n tableName,\n operation,\n \"CadenzaDB\",\n queryData,\n options,\n );\n }\n\n /**\n * Creates a database insert task specifically for the CadenzaDB database.\n *\n * @param {string} tableName - The name of the table into which the data will be inserted.\n * @param {DbOperationPayload} [queryData={}] - An object representing the data to be inserted.\n * @param {TaskOptions} [options={}] - Additional options to customize the task. The `isMeta` property is set to true by default.\n * @return {Task} A task object configured to perform an insert operation in the CadenzaDB database.\n */\n static createCadenzaDBInsertTask(\n tableName: string,\n queryData: DbOperationPayload = {},\n options: TaskOptions = {},\n ) {\n options.isMeta = true;\n return this.createDatabaseInsertTask(\n tableName,\n \"CadenzaDB\",\n queryData,\n options,\n );\n }\n\n /**\n * Creates a database query task specifically for the CadenzaDB.\n *\n * @param {string} tableName - The name of the database table to execute the query on.\n * @param {DbOperationPayload} queryData - The payload containing data and parameters for the database operation.\n * @param {TaskOptions} [options={}] - Additional options for the task configuration.\n * @return {any} The created task for executing a database query.\n */\n static createCadenzaDBQueryTask(\n tableName: string,\n queryData: DbOperationPayload,\n options: TaskOptions = {},\n ) {\n options.isMeta = true;\n return this.createDatabaseQueryTask(\n tableName,\n \"CadenzaDB\",\n queryData,\n options,\n );\n }\n\n /**\n * Creates a new Cadenza service with the specified configuration.\n *\n * @param {string} serviceName - The unique name of the service to create.\n * @param {string} [description] - An optional description of the service.\n * @param {ServerOptions} [options] - An optional object containing configuration options for the service.\n * @return {boolean} Returns true when the service is successfully created.\n */\n static createCadenzaService(\n serviceName: string,\n description: string = \"\",\n options: ServerOptions = {},\n ) {\n if (this.serviceCreated) return;\n this.bootstrap();\n this.validateName(serviceName);\n this.validateServiceName(serviceName);\n\n const serviceId = options.customServiceId ?? uuid();\n this.bootstrapSyncCompleted = false;\n this.bootstrapSignalRegistrationsCompleted = false;\n this.bootstrapIntentRegistrationsCompleted = false;\n this.serviceRegistry.serviceName = serviceName;\n this.serviceRegistry.serviceInstanceId = serviceId;\n this.serviceRegistry.connectsToCadenzaDB = !!options.cadenzaDB?.connect;\n this.setHydrationResults(options.hydration);\n this.registerGracefulShutdownHandlers();\n\n const explicitFrontendMode = options.isFrontend;\n\n options = {\n loadBalance: true,\n useSocket: true,\n displayName: undefined,\n isMeta: false,\n port: readIntegerEnv(\"HTTP_PORT\", 3000),\n securityProfile:\n (readStringEnv(\"SECURITY_PROFILE\") as SecurityProfile) ?? \"medium\",\n networkMode: (readStringEnv(\"NETWORK_MODE\") as NetworkMode) ?? \"dev\",\n retryCount: 3,\n cadenzaDB: {\n connect: true,\n },\n relatedServices: readListEnv(\"RELATED_SERVICES\"),\n isFrontend:\n typeof explicitFrontendMode === \"boolean\"\n ? explicitFrontendMode\n : isBrowser,\n ...options,\n };\n\n const isFrontend = !!options.isFrontend;\n const declaredTransports = this.normalizeDeclaredTransports(\n options.transports,\n serviceId,\n !!options.useSocket,\n );\n this.serviceRegistry.seedLocalInstance(\n {\n uuid: serviceId,\n service_name: serviceName,\n number_of_running_graphs: 0,\n is_primary: false,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n is_frontend: isFrontend,\n is_database: !!options.isDatabase,\n transports: declaredTransports.map((transport) => ({\n uuid: transport.uuid,\n service_instance_id: serviceId,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols ?? [\"rest\", \"socket\"],\n security_profile: transport.securityProfile ?? null,\n auth_strategy: transport.authStrategy ?? null,\n })),\n },\n {\n // Local startup truth should be available before the authority echo path.\n markTransportsReady: true,\n },\n );\n this.serviceRegistry.isFrontend = isFrontend;\n this.serviceRegistry.useSocket = !!options.useSocket;\n this.serviceRegistry.retryCount = options.retryCount ?? 3;\n this.ensureTransportControllers(isFrontend);\n this.ensureServiceManifestPublicationTasks();\n\n if (serviceName === \"CadenzaDB\") {\n this.serviceRegistry.ensureAuthorityFullSyncResponderTask();\n this.serviceRegistry.ensureAuthorityServiceCommunicationPersistenceTask();\n }\n\n const finalizeBootstrapReadinessTask = this.createMetaTask(\n \"Initialize graph metadata controller after sync registrations\",\n () => {\n if (\n this.bootstrapSyncCompleted ||\n !this.bootstrapSignalRegistrationsCompleted ||\n !this.bootstrapIntentRegistrationsCompleted\n ) {\n return false;\n }\n\n this.markBootstrapSyncCompleted();\n\n if (!isFrontend) {\n GraphMetadataController.instance;\n this.replayRegisteredTaskGraphMetadata();\n this.serviceRegistry.reconcileKnownGlobalSignalRegistrations();\n }\n\n this.emit(this.getServiceReadyHandoffSignalName(serviceName), {\n serviceName,\n serviceInstanceId: serviceId,\n ready: true,\n });\n\n return true;\n },\n \"Marks the local service ready after bootstrap sync and emits a local ready signal for business flows.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n this.createMetaTask(\n \"Emit service ready signal\",\n (ctx) => {\n // Service readiness is a service-level lifecycle event, so emit it on a\n // fresh trace instead of reusing the bootstrap handoff routine trace.\n this.emit(this.getServiceReadySignalName(serviceName), {\n serviceName:\n typeof ctx.serviceName === \"string\" ? ctx.serviceName : serviceName,\n serviceInstanceId:\n typeof ctx.serviceInstanceId === \"string\"\n ? ctx.serviceInstanceId\n : serviceId,\n ready: true,\n });\n\n return true;\n },\n \"Emits the local business-facing ready signal after bootstrap observability is available.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(this.getServiceReadyHandoffSignalName(serviceName));\n\n this.createMetaTask(\n \"Mark bootstrap global signal registration complete\",\n () => {\n this.bootstrapSignalRegistrationsCompleted = true;\n return true;\n },\n \"Marks the bootstrap global signal registration branch as complete.\",\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(\"meta.service_registry.registered_global_signals\")\n .then(finalizeBootstrapReadinessTask);\n\n this.createMetaTask(\n \"Mark bootstrap global intent registration complete\",\n () => {\n this.bootstrapIntentRegistrationsCompleted = true;\n return true;\n },\n \"Marks the bootstrap global intent registration branch as complete.\",\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(\"meta.service_registry.registered_global_intents\")\n .then(finalizeBootstrapReadinessTask);\n\n if (!isFrontend) {\n GraphSyncController.instance.isCadenzaDBReady =\n serviceName === \"CadenzaDB\";\n GraphSyncController.instance.init();\n }\n\n const resolvedBootstrapEndpoint = options.cadenzaDB?.connect\n ? resolveBootstrapEndpoint({\n runtime: isFrontend ? \"browser\" : \"server\",\n bootstrap: options.bootstrap,\n cadenzaDB: options.cadenzaDB,\n })\n : undefined;\n\n if (resolvedBootstrapEndpoint) {\n this.serviceRegistry.seedAuthorityBootstrapRoute(\n resolvedBootstrapEndpoint.url,\n isFrontend ? \"public\" : \"internal\",\n );\n options.cadenzaDB = {\n ...options.cadenzaDB,\n connect: true,\n address: resolvedBootstrapEndpoint.address,\n port: resolvedBootstrapEndpoint.port,\n };\n }\n\n if (options.cadenzaDB?.connect) {\n this.emit(\"meta.initializing_service\", {\n // Seed the CadenzaDB\n serviceInstance: {\n uuid: \"cadenza-db\",\n serviceName: \"CadenzaDB\",\n numberOfRunningGraphs: 0,\n isActive: true, // Assume it is deployed\n isNonResponsive: false,\n isBlocked: false,\n health: {},\n isFrontend: false,\n isBootstrapPlaceholder: true,\n transports: resolvedBootstrapEndpoint\n ? [\n this.createBootstrapTransport(\n \"cadenza-db\",\n isFrontend ? \"public\" : \"internal\",\n resolvedBootstrapEndpoint,\n ),\n ]\n : [],\n },\n });\n }\n\n options.relatedServices?.forEach((service) => {\n const relatedTransport = normalizeServiceTransportConfig({\n role: isFrontend ? \"public\" : \"internal\",\n origin: service[2].includes(\"://\") ? service[2] : `http://${service[2]}`,\n protocols: options.useSocket ? [\"rest\", \"socket\"] : [\"rest\"],\n });\n this.emit(\"meta.initializing_service\", {\n serviceInstance: {\n uuid: service[0],\n serviceName: service[1],\n numberOfRunningGraphs: 0,\n isActive: true, // Assume it is deployed\n isNonResponsive: false,\n isBlocked: false,\n health: {},\n isFrontend: false,\n isBootstrapPlaceholder: true,\n transports: relatedTransport\n ? [\n {\n uuid: `${service[0]}-${relatedTransport.role}`,\n service_instance_id: service[0],\n role: relatedTransport.role,\n origin: relatedTransport.origin,\n protocols: relatedTransport.protocols ?? [\"rest\", \"socket\"],\n security_profile: relatedTransport.securityProfile ?? null,\n auth_strategy: relatedTransport.authStrategy ?? null,\n },\n ]\n : [],\n },\n });\n });\n\n const initContext = {\n data: {\n name: serviceName,\n description: description,\n display_name: options.displayName ?? \"\",\n is_meta: options.isMeta,\n },\n __registrationData: {\n name: serviceName,\n description: description,\n display_name: options.displayName ?? \"\",\n is_meta: options.isMeta,\n },\n __serviceName: serviceName,\n __serviceInstanceId: serviceId,\n __port: options.port,\n __loadBalance: options.loadBalance,\n __useSocket: options.useSocket,\n __securityProfile: options.securityProfile,\n __networkMode: options.networkMode,\n __retryCount: options.retryCount,\n __cadenzaDBConnect: options.cadenzaDB?.connect,\n __isDatabase: options.isDatabase,\n __isFrontend: isFrontend,\n __declaredTransports: declaredTransports,\n };\n\n if (options.cadenzaDB?.connect) {\n this.createEphemeralMetaTask(\"Create service\", async (context, emit) => {\n emit(\"meta.create_service_requested\", initContext);\n }).doOn(\"meta.fetch.handshake_complete\");\n } else {\n this.emit(\"meta.create_service_requested\", initContext);\n this.createMetaTask(\"Create signal transmission for sync\", (ctx, emit) => {\n emit(\n \"meta.service_registry.gathered_sync_transmission_reconcile_requested\",\n {\n serviceName: ctx.serviceName,\n __reason: \"handshake\",\n },\n );\n }).doOn(\"meta.rest.handshake\", \"meta.socket.handshake\");\n }\n\n this.createMetaTask(\"Handle service setup completion\", (ctx, emit) => {\n if (options.cadenzaDB?.connect) {\n this.serviceRegistry.bootstrapFullSync(emit, ctx, \"service_setup_completed\");\n void this.publishServiceManifestIfNeeded(\"service_setup_completed\");\n }\n\n if (isFrontend) {\n registerActorSessionPersistenceTasks();\n this.ensureFrontendSyncLoop();\n }\n\n this.log(\"Service created.\");\n\n return true;\n }).doOn(\"meta.service_registry.instance_inserted\");\n\n if (!options.cadenzaDB?.connect) {\n Cadenza.schedule(\n \"meta.service_registry.instance_registration_requested\",\n {\n data: {\n uuid: serviceId,\n process_pid: isFrontend ? 1 : process.pid,\n service_name: serviceName,\n is_frontend: isFrontend,\n is_database: !!options.isDatabase,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n },\n __registrationData: {\n uuid: serviceId,\n process_pid: isFrontend ? 1 : process.pid,\n service_name: serviceName,\n is_frontend: isFrontend,\n is_database: !!options.isDatabase,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n },\n __transportData: declaredTransports.map((transport) => ({\n uuid: transport.uuid,\n service_instance_id: serviceId,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols ?? [\"rest\", \"socket\"],\n ...(transport.securityProfile\n ? { security_profile: transport.securityProfile }\n : {}),\n ...(transport.authStrategy\n ? { auth_strategy: transport.authStrategy }\n : {}),\n })),\n __serviceName: serviceName,\n __serviceInstanceId: serviceId,\n __useSocket: options.useSocket,\n __retryCount: options.retryCount,\n __isFrontend: true,\n __skipRemoteExecution: true,\n },\n 0,\n );\n }\n\n this.serviceCreated = true;\n this.requestServiceManifestPublication(\"service_created\", true);\n }\n\n /**\n * Creates a Cadenza metadata service with the specified name, description, and options.\n *\n * @param {string} serviceName - The name of the metadata service to be created.\n * @param {string} description - A brief description of the metadata service.\n * @param {ServerOptions} [options={}] - Optional configuration for the metadata service. Defaults to an empty object.\n * @return {void} Does not return a value.\n */\n static createCadenzaMetaService(\n serviceName: string,\n description: string,\n options: ServerOptions = {},\n ) {\n options.isMeta = true;\n this.createCadenzaService(serviceName, description, options);\n }\n\n /**\n * Creates a framework-agnostic browser runtime actor on top of frontend mode.\n * The actor owns readiness and projected browser runtime state while the caller\n * remains free to adapt that state into any frontend framework.\n */\n static createBrowserRuntimeActor<\n TProjectionState extends Record<string, any>,\n >(\n options: BrowserRuntimeActorOptions<TProjectionState>,\n ): BrowserRuntimeActorHandle<TProjectionState> {\n this.bootstrap();\n return createBrowserRuntimeActorHelper(this as any, options);\n }\n\n /**\n * Creates and initializes a specialized PostgresActor.\n * This is actor-only and does not create or register a network service.\n *\n * @param {string} name - Logical PostgresActor name.\n * @param {DatabaseSchemaDefinition} schema - Database schema definition.\n * @param {string} [description=\"\"] - Optional human-readable actor description.\n * @param {ServerOptions & DatabaseOptions} [options={}] - Actor/database runtime options.\n * @return {void}\n */\n static createPostgresActor(\n name: string,\n schema: DatabaseSchemaDefinition,\n description: string = \"\",\n options: ServerOptions & DatabaseOptions = {},\n ) {\n if (isBrowser || options.isFrontend) {\n console.warn(\n \"PostgresActor creation is not supported in frontend mode.\",\n );\n return;\n }\n\n this.bootstrap();\n this.validateName(name);\n const databaseController = DatabaseController.instance;\n\n const normalizedOptions = this.normalizePostgresActorOptions(name, options);\n\n const registration = databaseController.createPostgresActor(\n name,\n schema,\n description,\n normalizedOptions,\n );\n\n console.log(\"Creating PostgresActor\", {\n name,\n actorName: registration.actorName,\n ownerServiceName: normalizedOptions.ownerServiceName ?? null,\n options: normalizedOptions,\n });\n\n databaseController.requestPostgresActorSetup(registration, {\n actorName: registration.actorName,\n actorToken: registration.actorToken,\n databaseName: normalizedOptions.databaseName,\n ownerServiceName: normalizedOptions.ownerServiceName ?? null,\n });\n }\n\n /**\n * Creates a meta PostgresActor.\n *\n * @param {string} name - Logical PostgresActor name.\n * @param {DatabaseSchemaDefinition} schema - Database schema definition.\n * @param {string} [description=\"\"] - Optional description.\n * @param {ServerOptions & DatabaseOptions} [options={}] - Optional actor/database options.\n * @return {void}\n */\n static createMetaPostgresActor(\n name: string,\n schema: DatabaseSchemaDefinition,\n description: string = \"\",\n options: ServerOptions & DatabaseOptions = {},\n ) {\n this.bootstrap();\n options.isMeta = true;\n this.createPostgresActor(name, schema, description, options);\n }\n\n /**\n * Creates a dedicated database service by composing a PostgresActor and a Cadenza service.\n */\n static createDatabaseService(\n name: string,\n schema: DatabaseSchemaDefinition,\n description: string = \"\",\n options: ServerOptions & DatabaseOptions = {},\n ) {\n if (isBrowser || options.isFrontend) {\n console.warn(\n \"Database service creation is not supported in frontend mode. Use the CadenzaDB service instead.\",\n );\n return;\n }\n if (this.serviceCreated) return;\n\n this.bootstrap();\n this.validateName(name);\n this.validateServiceName(name);\n this.defaultDatabaseServiceName = name;\n\n const databaseController = DatabaseController.instance;\n const actorOptions = this.normalizePostgresActorOptions(name, {\n ...options,\n ownerServiceName: options.ownerServiceName ?? name,\n });\n const serviceOptions = this.normalizeDatabaseServiceOptions(name, {\n ...options,\n ownerServiceName: actorOptions.ownerServiceName,\n });\n\n const registration = databaseController.createPostgresActor(\n name,\n schema,\n description,\n actorOptions,\n );\n\n this.registerDatabaseServiceBridgeTask(\n name,\n description,\n schema,\n Boolean(serviceOptions.isMeta),\n registration.actorName,\n );\n\n const createServiceTaskName = `Create database service ${name} after ${registration.actorName} setup`;\n const traceSetupDoneTaskName = `Trace database service ${name} setup done`;\n if (POSTGRES_SETUP_DEBUG_ENABLED && !this.get(traceSetupDoneTaskName)) {\n this.createMetaTask(\n traceSetupDoneTaskName,\n (ctx) => {\n console.log(\"[CADENZA_POSTGRES_SETUP_DEBUG] setup_done_signal_observed\", {\n serviceName: name,\n actorName: registration.actorName,\n payloadKeys: Object.keys(ctx ?? {}),\n });\n return true;\n },\n \"Debug trace for PostgresActor setup-done signal delivery.\",\n { isHidden: true, register: false },\n ).doOn(registration.setupDoneSignal);\n }\n if (!this.get(createServiceTaskName)) {\n this.createMetaTask(\n createServiceTaskName,\n () => {\n if (POSTGRES_SETUP_DEBUG_ENABLED) {\n console.log(\n \"[CADENZA_POSTGRES_SETUP_DEBUG] create_database_service_task_fired\",\n {\n serviceName: name,\n actorName: registration.actorName,\n },\n );\n }\n this.createCadenzaService(name, description, serviceOptions);\n return true;\n },\n \"Creates the networked database service after PostgresActor setup completes.\",\n ).doOn(registration.setupDoneSignal);\n }\n\n const setupFailureTaskName = `Handle database service ${name} bootstrap failure`;\n if (!this.get(setupFailureTaskName)) {\n this.createMetaTask(\n setupFailureTaskName,\n (ctx) => {\n this.log(\n \"Database service bootstrap failed before service creation.\",\n {\n serviceName: name,\n actorName: registration.actorName,\n databaseName: registration.databaseName,\n error: ctx.__error,\n },\n \"error\",\n );\n return true;\n },\n \"Logs PostgresActor setup failures for database service bootstrap.\",\n ).doOn(registration.setupFailedSignal);\n }\n\n console.log(\"Creating database service wrapper\", {\n serviceName: name,\n actorName: registration.actorName,\n actorOptions,\n serviceOptions,\n });\n\n databaseController.requestPostgresActorSetup(registration, {\n actorName: registration.actorName,\n actorToken: registration.actorToken,\n databaseName: actorOptions.databaseName,\n ownerServiceName: actorOptions.ownerServiceName ?? name,\n });\n }\n\n /**\n * Creates a meta database service with the specified configuration.\n *\n * @param {string} name - The name of the database service to be created.\n * @param {DatabaseSchemaDefinition} schema - The schema definition for the database.\n * @param {string} [description=\"\"] - An optional description of the database service.\n * @param {ServerOptions & DatabaseOptions} [options={}] - Optional server and database configuration options. The `isMeta` flag will be automatically set to true.\n * @return {void} - This method does not return a value.\n */\n static createMetaDatabaseService(\n name: string,\n schema: DatabaseSchemaDefinition,\n description: string = \"\",\n options: ServerOptions & DatabaseOptions = {},\n ) {\n this.createDatabaseService(name, schema, description, {\n ...options,\n isMeta: true,\n });\n }\n\n private static normalizePostgresActorOptions(\n name: string,\n options: ServerOptions & DatabaseOptions = {},\n ): ServerOptions & DatabaseOptions {\n return {\n isMeta: false,\n retryCount: 3,\n databaseType: \"postgres\",\n databaseName: snakeCase(name),\n poolSize: readIntegerEnv(\"DATABASE_POOL_SIZE\", 10),\n ownerServiceName:\n options.ownerServiceName ?? this.serviceRegistry?.serviceName ?? null,\n ...options,\n };\n }\n\n private static normalizeDatabaseServiceOptions(\n name: string,\n options: ServerOptions & DatabaseOptions = {},\n ): ServerOptions & DatabaseOptions {\n return {\n loadBalance: true,\n useSocket: true,\n displayName: undefined,\n isMeta: false,\n port: readIntegerEnv(\"HTTP_PORT\", 3000),\n securityProfile:\n (readStringEnv(\"SECURITY_PROFILE\") as SecurityProfile) ?? \"medium\",\n networkMode: (readStringEnv(\"NETWORK_MODE\") as NetworkMode) ?? \"dev\",\n retryCount: 3,\n cadenzaDB: {\n connect: true,\n },\n databaseType: \"postgres\",\n databaseName: snakeCase(name),\n poolSize: readIntegerEnv(\"DATABASE_POOL_SIZE\", 10),\n isDatabase: true,\n ownerServiceName: options.ownerServiceName ?? name,\n ...options,\n };\n }\n\n private static registerDatabaseServiceBridgeTask(\n serviceName: string,\n description: string,\n schema: DatabaseSchemaDefinition,\n isMeta: boolean,\n actorName: string,\n ): void {\n const taskName = `Insert database service bridge ${serviceName}`;\n if (this.get(taskName)) {\n return;\n }\n\n this.createMetaTask(\n taskName,\n (ctx, emit) => {\n if (ctx.__serviceName && ctx.__serviceName !== serviceName) {\n return false;\n }\n\n emit(\"global.meta.created_database_service\", {\n data: {\n service_name: serviceName,\n description,\n schema,\n is_meta: isMeta,\n },\n });\n this.log(\"Database service created\", {\n name: serviceName,\n isMeta,\n actorName,\n });\n return true;\n },\n \"Bridges database service creation into the global metadata signal.\",\n ).doOn(\"meta.service_registry.service_inserted\");\n }\n\n static createActor<\n D extends Record<string, any> = AnyObject,\n R = AnyObject,\n >(\n spec: ActorSpec<D, R>,\n options: ActorFactoryOptions = {},\n ): Actor<D, R> {\n this.bootstrap();\n return Cadenza.createActor(spec, options as ActorFactoryOptions<D, R>);\n }\n\n static createActorFromDefinition<\n D extends Record<string, any> = AnyObject,\n R = AnyObject,\n >(\n definition: ActorDefinition<D, R>,\n options: ActorFactoryOptions<D, R> = {},\n ): Actor<D, R> {\n this.bootstrap();\n return Cadenza.createActorFromDefinition(definition, options);\n }\n\n /**\n * Creates and registers a new task with the provided name, function, and optional details.\n *\n * @param {string} name - The name of the task to be created.\n * @param {TaskFunction} func - The function that contains the task execution logic.\n * @param {string} [description] - An optional description of what the task does.\n * @param {TaskOptions} [options={}] - An optional configuration object specifying additional task options.\n * @return {Task} - The created task instance.\n *\n * @example\n * You can use arrow functions to create tasks.\n * ```ts\n * const task = Cadenza.createTask('My task', (ctx) => {\n * console.log('My task executed with context:', ctx);\n * }, 'My task description');\n * ```\n *\n * You can also use named functions to create tasks.\n * This is the preferred way to create tasks since it allows for code inspection in the CadenzaUI.\n * ```ts\n * function myTask(ctx) {\n * console.log('My task executed with context:', ctx);\n * }\n *\n * const task = Cadenza.createTask('My task', myTask);\n * ```\n *\n * ** Use the TaskOptions object to configure the task. **\n *\n * With concurrency limit, timeout limit and retry settings.\n * ```ts\n * Cadenza.createTask('My task', (ctx) => {\n * console.log('My task executed with context:', ctx);\n * }, 'My task description', {\n * concurrency: 10,\n * timeout: 10000,\n * retryCount: 3,\n * retryDelay: 1000,\n * retryDelayFactor: 1.5,\n * });\n * ```\n *\n * You can specify the input and output context schemas for the task.\n * ```ts\n * Cadenza.createTask('My task', (ctx) => {\n * return { bar: 'foo' + ctx.foo };\n * }, 'My task description', {\n * inputContextSchema: {\n * type: 'object',\n * properties: {\n * foo: {\n * type: 'string',\n * },\n * },\n * required: ['foo'],\n * },\n * validateInputContext: true, // default is false\n * outputContextSchema: {\n * type: 'object',\n * properties: {\n * bar: {\n * type: 'string',\n * },\n * },\n * required: ['bar'],\n * },\n * validateOutputContext: true, // default is false\n * });\n * ```\n */\n static createTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createTask(name, func, description, options);\n }\n\n /**\n * Creates a meta task with the specified name, functionality, description, and options.\n * This is used for creating tasks that lives on the meta layer.\n * The meta layer is a special layer that is executed separately from the business logic layer and is used for extending Cadenzas core functionality.\n * See {@link Task} or {@link createTask} for more information.\n *\n * @param {string} name - The name of the meta task.\n * @param {TaskFunction} func - The function to be executed by the meta task.\n * @param {string} [description] - An optional description of the meta task.\n * @param {TaskOptions} [options={}] - Additional optional task configuration. Automatically sets `isMeta` to true.\n * @return {Task} A task instance configured as a meta task.\n */\n static createMetaTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createMetaTask(name, func, description, options);\n }\n\n /**\n * Creates a unique task by wrapping the provided task function with a uniqueness constraint.\n * Unique tasks are designed to execute once per execution ID, merging parents. This is useful for\n * tasks that require fan-in/joins after parallel branches.\n * See {@link Task} for more information.\n * @param {string} name Unique identifier.\n * @param {TaskFunction} func Function receiving joinedContexts as a list (context.joinedContexts).\n * @param {string} [description] Optional description.\n * @param {TaskOptions} [options={}] Optional task options.\n * @returns {Task} The created UniqueTask.\n *\n * @example\n * ```ts\n * const splitTask = Cadenza.createTask('Split foos', function* (ctx) {\n * for (const foo of ctx.foos) {\n * yield { foo };\n * }\n * }, 'Splits a list of foos into multiple sub-branches');\n *\n * const processTask = Cadenza.createTask('Process foo', (ctx) => {\n * return { bar: 'foo' + ctx.foo };\n * }, 'Process a foo');\n *\n * const uniqueTask = Cadenza.createUniqueTask('Gather processed foos', (ctx) => {\n * // A unique task will always be provided with a list of contexts (ctx.joinedContexts) from its predecessors.\n * const processedFoos = ctx.joinedContexts.map((c) => c.bar);\n * return { foos: processedFoos };\n * }, 'Gathers together the processed foos.');\n *\n * splitTask.then(\n * processTask.then(\n * uniqueTask,\n * ),\n * );\n *\n * // Give the flow a name using a routine\n * Cadenza.createRoutine(\n * 'Process foos',\n * [splitTask],\n * 'Processes a list of foos'\n * ).doOn('main.received_foos'); // Subscribe to a signal\n *\n * // Trigger the flow from anywhere\n * Cadenza.emit('main.received_foos', { foos: ['foo1', 'foo2', 'foo3'] });\n * ```\n */\n static createUniqueTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createUniqueTask(name, func, description, options);\n }\n\n /**\n * Creates a unique meta task with the specified name, function, description, and options.\n * See {@link createUniqueTask} and {@link createMetaTask} for more information.\n *\n * @param {string} name - The name of the task to create.\n * @param {TaskFunction} func - The function to execute when the task is run.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions} [options={}] - Optional settings for the task. Defaults to an empty object. Automatically sets `isMeta` and `isUnique` to true.\n * @return {Task} The created unique meta task.\n */\n static createUniqueMetaTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createUniqueMetaTask(name, func, description, options);\n }\n\n /**\n * Creates a throttled task with a concurrency limit of 1, ensuring that only one instance of the task can run at a time for a specific throttle tag.\n * This is useful for ensuring execution order and preventing race conditions.\n * See {@link Task} for more information.\n *\n * @param {string} name - The name of the task.\n * @param {TaskFunction} func - The function to be executed when the task runs.\n * @param {ThrottleTagGetter} [throttledIdGetter=() => \"default\"] - A function that generates a throttle tag identifier to group tasks for throttling.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions} [options={}] - Additional options to customize the task behavior.\n * @return {Task} The created throttled task.\n *\n * @example\n * ```ts\n * const task = Cadenza.createThrottledTask(\n * 'My task',\n * async (ctx) => {\n * await new Promise((resolve) => setTimeout(resolve, 1000));\n * console.log('My task executed with context:', ctx);\n * },\n * // Will throttle by the value of ctx.foo to make sure tasks with the same value are executed sequentially\n * (ctx) => ctx.foo,\n * );\n *\n * Cadenza.run(task, { foo: 'bar' }); // (First execution)\n * Cadenza.run(task, { foo: 'bar' }); // This will be executed after the first execution is finished\n * Cadenza.run(task, { foo: 'baz' }); // This will be executed in parallel with the first execution\n * ```\n */\n static createThrottledTask(\n name: string,\n func: TaskFunction,\n throttledIdGetter: ThrottleTagGetter = () => \"default\",\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createThrottledTask(\n name,\n func,\n throttledIdGetter,\n description,\n options,\n );\n }\n\n /**\n * Creates a throttled meta task with the specified configuration.\n * See {@link createThrottledTask} and {@link createMetaTask} for more information.\n *\n * @param {string} name - The name of the throttled meta task.\n * @param {TaskFunction} func - The task function to be executed.\n * @param {ThrottleTagGetter} throttledIdGetter - A function to retrieve the throttling identifier.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions} [options={}] - Additional options for configuring the task.\n * @return {Task} The created throttled meta task.\n */\n static createThrottledMetaTask(\n name: string,\n func: TaskFunction,\n throttledIdGetter: ThrottleTagGetter = () => \"default\",\n description?: string,\n options: TaskOptions = {},\n ): Task {\n this.bootstrap();\n return Cadenza.createThrottledMetaTask(\n name,\n func,\n throttledIdGetter,\n description,\n options,\n );\n }\n\n /**\n * Creates and returns a new debounced task with the specified parameters.\n * This is useful to prevent rapid execution of tasks that may be triggered by multiple events within a certain time frame.\n * See {@link DebounceTask} for more information.\n *\n * @param {string} name - The unique name of the task to be created.\n * @param {TaskFunction} func - The function to be executed by the task.\n * @param {string} [description] - An optional description of the task.\n * @param {number} [debounceTime=1000] - The debounce time in milliseconds to delay the execution of the task.\n * @param {TaskOptions & DebounceOptions} [options={}] - Additional configuration options for the task, including debounce behavior and other task properties.\n * @return {DebounceTask} A new instance of the DebounceTask with the specified configuration.\n *\n * @example\n * ```ts\n * const task = Cadenza.createDebounceTask(\n * 'My debounced task',\n * (ctx) => {\n * console.log('My task executed with context:', ctx);\n * },\n * 'My debounced task description',\n * 100, // Debounce time in milliseconds. Default is 1000\n * {\n * leading: false, // Should the first execution of a burst be executed immediately? Default is false\n * trailing: true, // Should the last execution of a burst be executed? Default is true\n * maxWait: 1000, // Maximum time in milliseconds to wait for the next execution. Default is 0\n * },\n * );\n *\n * Cadenza.run(task, { foo: 'bar' }); // This will not be executed\n * Cadenza.run(task, { foo: 'bar' }); // This will not be executed\n * Cadenza.run(task, { foo: 'baz' }); // This execution will be delayed by 100ms\n * ```\n */\n static createDebounceTask(\n name: string,\n func: TaskFunction,\n description?: string,\n debounceTime: number = 1000,\n options: TaskOptions & DebounceOptions = {},\n ): DebounceTask {\n this.bootstrap();\n return Cadenza.createDebounceTask(\n name,\n func,\n description,\n debounceTime,\n options,\n );\n }\n\n /**\n * Creates a debounced meta task with the specified parameters.\n * See {@link createDebounceTask} and {@link createMetaTask} for more information.\n *\n * @param {string} name - The name of the task.\n * @param {TaskFunction} func - The function to be executed by the task.\n * @param {string} [description] - Optional description of the task.\n * @param {number} [debounceTime=1000] - The debounce delay in milliseconds.\n * @param {TaskOptions & DebounceOptions} [options={}] - Additional configuration options for the task.\n * @return {DebounceTask} Returns an instance of the debounced meta task.\n */\n static createDebounceMetaTask(\n name: string,\n func: TaskFunction,\n description?: string,\n debounceTime: number = 1000,\n options: TaskOptions & DebounceOptions = {},\n ): DebounceTask {\n this.bootstrap();\n return Cadenza.createDebounceMetaTask(\n name,\n func,\n description,\n debounceTime,\n options,\n );\n }\n\n /**\n * Creates an ephemeral task with the specified configuration.\n * Ephemeral tasks are designed to self-destruct after execution or a certain condition is met.\n * This is useful for transient tasks such as resolving promises or performing cleanup operations.\n * They are not registered by default.\n * See {@link EphemeralTask} for more information.\n *\n * @param {string} name - The name of the task to be created.\n * @param {TaskFunction} func - The function that defines the logic of the task.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions & EphemeralTaskOptions} [options={}] - The configuration options for the task, including concurrency, timeouts, and retry policies.\n * @return {EphemeralTask} The created ephemeral task instance.\n *\n * @example\n * By default, ephemeral tasks are executed once and destroyed after execution.\n * ```ts\n * const task = Cadenza.createEphemeralTask('My ephemeral task', (ctx) => {\n * console.log('My task executed with context:', ctx);\n * });\n *\n * Cadenza.run(task); // Executes the task once and destroys it after execution\n * Cadenza.run(task); // Does nothing, since the task is destroyed\n * ```\n *\n * Use destroy condition to conditionally destroy the task\n * ```ts\n * const task = Cadenza.createEphemeralTask(\n * 'My ephemeral task',\n * (ctx) => {\n * console.log('My task executed with context:', ctx);\n * },\n * 'My ephemeral task description',\n * {\n * once: false, // Should the task be executed only once? Default is true\n * destroyCondition: (ctx) => ctx.foo > 10, // Should the task be destroyed after execution? Default is undefined\n * },\n * );\n *\n * Cadenza.run(task, { foo: 5 }); // The task will not be destroyed and can still be executed\n * Cadenza.run(task, { foo: 10 }); // The task will not be destroyed and can still be executed\n * Cadenza.run(task, { foo: 20 }); // The task will be destroyed after execution and cannot be executed anymore\n * Cadenza.run(task, { foo: 30 }); // This will not be executed\n * ```\n *\n * A practical use case for ephemeral tasks is to resolve a promise upon some external event.\n * ```ts\n * const task = Cadenza.createTask('Confirm something', (ctx, emit) => {\n * return new Promise((resolve) => {\n * ctx.foo = uuid();\n *\n * Cadenza.createEphemeralTask(`Resolve promise of ${ctx.foo}`, (c) => {\n * console.log('My task executed with context:', ctx);\n * resolve(c);\n * }).doOn(`socket.confirmation_received:${ctx.foo}`);\n *\n * emit('this_domain.confirmation_requested', ctx);\n * });\n * });\n * ```\n */\n static createEphemeralTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions & EphemeralTaskOptions = {},\n ): EphemeralTask {\n this.bootstrap();\n return Cadenza.createEphemeralTask(name, func, description, options);\n }\n\n /**\n * Creates an ephemeral meta-task with the specified name, function, description, and options.\n * See {@link createEphemeralTask} and {@link createMetaTask} for more details.\n *\n * @param {string} name - The name of the task to be created.\n * @param {TaskFunction} func - The function to be executed as part of the task.\n * @param {string} [description] - An optional description of the task.\n * @param {TaskOptions & EphemeralTaskOptions} [options={}] - Additional options for configuring the task.\n * @return {EphemeralTask} The created ephemeral meta-task.\n */\n static createEphemeralMetaTask(\n name: string,\n func: TaskFunction,\n description?: string,\n options: TaskOptions & EphemeralTaskOptions = {},\n ): EphemeralTask {\n this.bootstrap();\n return Cadenza.createEphemeralMetaTask(name, func, description, options);\n }\n\n /**\n * Creates a new routine with the specified name, tasks, and an optional description.\n * Routines are named entry points to starting tasks and are registered in the GraphRegistry.\n * They are used to group tasks together and provide a high-level structure for organizing and managing the execution of a set of tasks.\n * See {@link GraphRoutine} for more information.\n *\n * @param {string} name - The name of the routine to create.\n * @param {Task[]} tasks - A list of tasks to include in the routine.\n * @param {string} [description=\"\"] - An optional description for the routine.\n * @return {GraphRoutine} A new instance of the GraphRoutine containing the specified tasks and description.\n *\n * @example\n * ```ts\n * const task1 = Cadenza.createTask(\"Task 1\", () => {});\n * const task2 = Cadenza.createTask(\"Task 2\", () => {});\n *\n * task1.then(task2);\n *\n * const routine = Cadenza.createRoutine(\"Some routine\", [task1]);\n *\n * Cadenza.run(routine);\n *\n * // Or, routines can be triggered by signals\n * routine.doOn(\"some.signal\");\n *\n * Cadenza.emit(\"some.signal\", {});\n * ```\n */\n static createRoutine(\n name: string,\n tasks: Task[],\n description: string = \"\",\n ): GraphRoutine {\n this.bootstrap();\n return Cadenza.createRoutine(name, tasks, description);\n }\n\n /**\n * Creates a meta routine with a given name, tasks, and optional description.\n * Routines are named entry points to starting tasks and are registered in the GraphRegistry.\n * They are used to group tasks together and provide a high-level structure for organizing and managing the execution of a set of tasks.\n * See {@link GraphRoutine} and {@link createRoutine} for more information.\n *\n * @param {string} name - The name of the routine to be created.\n * @param {Task[]} tasks - An array of tasks that the routine will consist of.\n * @param {string} [description=\"\"] - An optional description for the routine.\n * @return {GraphRoutine} A new instance of the `GraphRoutine` representing the created routine.\n */\n static createMetaRoutine(\n name: string,\n tasks: Task[],\n description: string = \"\",\n ): GraphRoutine {\n this.bootstrap();\n return Cadenza.createMetaRoutine(name, tasks, description);\n }\n\n static reset() {\n Cadenza.reset();\n this.serviceRegistry?.reset();\n this.unregisterGracefulShutdownHandlers();\n this.isBootstrapped = false;\n this.serviceCreated = false;\n this.bootstrapSyncCompleted = false;\n this.bootstrapSignalRegistrationsCompleted = false;\n this.bootstrapIntentRegistrationsCompleted = false;\n this.defaultDatabaseServiceName = null;\n this.warnedInvalidMetaIntentResponderKeys = new Set();\n this.hydratedInquiryResults = new Map();\n this.frontendSyncScheduled = false;\n resetBrowserRuntimeActorHandles();\n }\n}\n","import { v4 as uuid } from \"uuid\";\nimport { GraphContext, InquiryOptions, Task } from \"@cadenza.io/core\";\nimport type {\n AnyObject,\n Schema,\n TaskResult,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport Cadenza from \"../../Cadenza\";\nimport {\n attachDelegationRequestSnapshot,\n hoistDelegationMetadataFields,\n restoreDelegationRequestSnapshot,\n stripDelegationRequestSnapshot,\n} from \"../../utils/delegation\";\nconst SERVICE_REGISTRY_TRACE_SERVICE = (\n process.env.CADENZA_SERVICE_REGISTRY_TRACE_SERVICE ?? \"\"\n).trim();\n\n/**\n * Represents a task that delegates execution of a routine to a remote system or service.\n * The `DeputyTask` serves as a proxy to perform and track the progress of a remote workflow.\n * It extends the `Task` class with additional delegation capabilities.\n *\n * Emits various meta-signals for monitoring delegation progress and resolution.\n */\nexport default class DeputyTask extends Task {\n readonly isDeputy: boolean = true;\n\n protected readonly remoteRoutineName: string;\n protected serviceName: string | undefined;\n\n registeredDeputyMap: boolean = false;\n\n /**\n * Constructs a new instance of the class with the specified parameters.\n *\n * @param {string} name - The name of the task.\n * @param {string} remoteRoutineName - The name of the remote routine to delegate tasks to.\n * @param {string | undefined} [serviceName=undefined] - The name of the service associated with the task.\n * @param {string} [description=\"\"] - A brief description of the task.\n * @param {number} [concurrency=0] - The concurrency level of the task.\n * @param {number} [timeout=0] - The timeout duration for the task.\n * @param {boolean} [register=true] - Whether the task should be registered in the system.\n * @param {boolean} [isUnique=false] - Whether the task is unique.\n * @param {boolean} [isMeta=false] - Whether the task is a meta task.\n * @param {boolean} [isSubMeta=false] - Whether the task is a sub-meta task.\n * @param {boolean} [isHidden=false] - Whether the task is hidden from the system.\n * @param {ThrottleTagGetter | undefined} [getTagCallback=undefined] - A callback function to retrieve throttle tags.\n * @param {SchemaDefinition | undefined} [inputSchema=undefined] - The input schema definition for the task.\n * @param {boolean} [validateInputContext=false] - Whether to validate the input context against the input schema.\n * @param {SchemaDefinition | undefined} [outputSchema=undefined] - The output schema definition for the task.\n * @param {boolean} [validateOutputContext=false] - Whether to validate the output context against the output schema.\n * @param {number} [retryCount=0] - The number of retries allowed for task execution.\n * @param {number} [retryDelay=0] - The initial delay between retries in milliseconds.\n * @param {number} [retryDelayMax=0] - The maximum retry delay in milliseconds.\n * @param {number} [retryDelayFactor=1] - The factor by which to increase the retry delay for subsequent retries.\n * @return {void} This constructor does not return a value.\n */\n constructor(\n name: string,\n remoteRoutineName: string,\n serviceName: string | undefined = undefined,\n description: string = \"\",\n concurrency: number = 0,\n timeout: number = 0,\n register: boolean = true,\n isUnique: boolean = false,\n isMeta: boolean = false,\n isSubMeta: boolean = false,\n isHidden: boolean = false,\n getTagCallback: ThrottleTagGetter | undefined = undefined,\n inputSchema: Schema | undefined = undefined,\n validateInputContext: boolean = false,\n outputSchema: Schema | undefined = undefined,\n validateOutputContext: boolean = false,\n retryCount: number = 0,\n retryDelay: number = 0,\n retryDelayMax: number = 0,\n retryDelayFactor: number = 1,\n ) {\n const taskFunction = (\n context: AnyObject,\n emit: (signal: string, ctx: AnyObject) => void,\n inquire: (\n inquiry: string,\n context: AnyObject,\n options: InquiryOptions,\n ) => Promise<AnyObject>,\n progressCallback: (progress: number) => void,\n ): Promise<TaskResult> => {\n return new Promise((resolve, reject) => {\n if (context.__metadata.__blockRemoteExecution) {\n reject(new Error(\"Blocked remote execution\"));\n return;\n }\n\n if (context.__metadata.__skipRemoteExecution) {\n resolve(context);\n return;\n }\n\n const processId = uuid();\n\n context.__metadata.__deputyExecId = processId;\n\n if (\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\") &&\n context.__remoteRoutineName === \"Insert service_instance\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] deputy_delegation_requested\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n localTaskName: context.__localTaskName ?? null,\n remoteRoutineName: context.__remoteRoutineName ?? null,\n targetServiceName: context.__serviceName ?? null,\n deputyExecId: processId,\n dataKeys:\n context.data && typeof context.data === \"object\"\n ? Object.keys(context.data)\n : [],\n queryDataKeys:\n context.queryData && typeof context.queryData === \"object\"\n ? Object.keys(context.queryData)\n : [],\n queryDataDataKeys:\n context.queryData?.data &&\n typeof context.queryData.data === \"object\"\n ? Object.keys(context.queryData.data as AnyObject)\n : [],\n });\n }\n\n emit(\"meta.deputy.delegation_requested\", {\n ...context,\n });\n\n // Ephemeral meta-task for progress\n Cadenza.createEphemeralMetaTask(\n `On progress deputy ${this.remoteRoutineName}`,\n (ctx) => {\n if (ctx.progress) progressCallback(ctx.progress * ctx.weight);\n },\n `Ephemeral task for deputy process ${processId}`,\n {\n once: false,\n destroyCondition: (ctx: AnyObject) =>\n ctx.progress === 1 || ctx.progress === undefined,\n register: false,\n },\n ).doOn(\n `meta.socket_client.delegation_progress:${processId}`,\n `meta.socket_client.delegated:${processId}`,\n `meta.fetch.delegated:${processId}`,\n `meta.service_registry.load_balance_failed:${processId}`,\n );\n\n // Ephemeral meta-task for resolution\n Cadenza.createEphemeralMetaTask(\n `Resolve deputy ${this.remoteRoutineName}`,\n (responseCtx) => {\n const mergedResponseCtx =\n responseCtx && typeof responseCtx === \"object\"\n ? ({\n ...context,\n ...responseCtx,\n } as AnyObject)\n : responseCtx;\n if (responseCtx?.errored) {\n reject(new Error(responseCtx.__error));\n } else {\n if (\n SERVICE_REGISTRY_TRACE_SERVICE.length > 0 &&\n Cadenza.serviceRegistry.serviceName ===\n SERVICE_REGISTRY_TRACE_SERVICE &&\n context.__remoteRoutineName === \"Insert service_instance\"\n ) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] deputy_insert_service_instance_resolved\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n targetServiceName: context.__serviceName ?? null,\n resolverRequestId: context.__resolverRequestId ?? null,\n serviceInstanceId:\n mergedResponseCtx && typeof mergedResponseCtx === \"object\"\n ? (mergedResponseCtx as AnyObject).__serviceInstanceId ??\n (mergedResponseCtx as AnyObject).uuid ??\n (mergedResponseCtx as AnyObject).data?.uuid ??\n null\n : null,\n hasResolverQueryData:\n mergedResponseCtx &&\n typeof mergedResponseCtx === \"object\" &&\n (mergedResponseCtx as AnyObject).__resolverQueryData !==\n undefined,\n });\n }\n // TODO clean up metadata\n if (mergedResponseCtx && typeof mergedResponseCtx === \"object\") {\n delete mergedResponseCtx.__isDeputy;\n }\n resolve(mergedResponseCtx);\n }\n },\n `Ephemeral resolver for deputy process ${processId}`,\n { register: false },\n ).doOn(\n `meta.socket_client.delegated:${processId}`,\n `meta.fetch.delegated:${processId}`,\n `meta.service_registry.load_balance_failed:${processId}`,\n );\n });\n };\n\n super(\n name,\n taskFunction,\n description,\n concurrency,\n timeout,\n register,\n isUnique,\n isMeta,\n isSubMeta,\n isHidden,\n getTagCallback,\n inputSchema,\n validateInputContext,\n outputSchema,\n validateOutputContext,\n retryCount,\n retryDelay,\n retryDelayMax,\n retryDelayFactor,\n );\n\n this.remoteRoutineName = remoteRoutineName;\n this.serviceName = serviceName;\n\n this.attachSignal(\"meta.deputy.delegation_requested\");\n\n this.emit(\"meta.deputy.created\", {\n localTaskName: this.name,\n localTaskVersion: this.version,\n remoteRoutineName: this.remoteRoutineName,\n serviceName: this.serviceName,\n communicationType: \"delegation\",\n });\n }\n\n /**\n * Executes the specified task function within the provided execution context.\n *\n * @param {GraphContext} context - The execution context containing methods and metadata for task execution.\n * @param {function(string, AnyObject): void} emit - A function for emitting signals with associated data during execution.\n * @param inquire\n * @param {function(number): void} progressCallback - A callback function to report progress updates during task processing.\n * @param {{ nodeId: string, routineExecId: string }} nodeData - Object containing identifiers for the node and routine execution.\n * @return {TaskResult} Returns the result of the task function execution.\n */\n execute(\n context: GraphContext,\n emit: (signal: string, ctx: AnyObject) => void,\n inquire: (\n inquiry: string,\n context: AnyObject,\n options: InquiryOptions,\n ) => Promise<AnyObject>,\n progressCallback: (progress: number) => void,\n nodeData: { nodeId: string; routineExecId: string },\n ): TaskResult {\n const rawContext = restoreDelegationRequestSnapshot(\n attachDelegationRequestSnapshot({\n ...context.getFullContext(),\n }),\n );\n const metadata =\n rawContext.__metadata && typeof rawContext.__metadata === \"object\"\n ? rawContext.__metadata\n : context.getMetadata();\n const ctx = {\n ...rawContext,\n };\n delete ctx.__metadata;\n\n const deputyContext = attachDelegationRequestSnapshot(\n stripDelegationRequestSnapshot(\n hoistDelegationMetadataFields({\n ...ctx,\n __timeout: this.timeout,\n __localTaskName: this.name,\n __localTaskVersion: this.version,\n __localServiceName: Cadenza.serviceRegistry.serviceName,\n __previousTaskExecutionId: nodeData.nodeId,\n __remoteRoutineName: this.remoteRoutineName,\n __serviceName: this.serviceName,\n __localRoutineExecId:\n metadata.__routineExecId ?? metadata.__metadata?.__routineExecId,\n __executionTraceId: metadata.__executionTraceId ?? null,\n __metadata: {\n ...metadata,\n __skipRemoteExecution:\n metadata.__skipRemoteExecution ?? ctx.__skipRemoteExecution ?? false,\n __blockRemoteExecution:\n metadata.__blockRemoteExecution ?? ctx.__blockRemoteExecution ?? false,\n __deputyTaskName: this.name,\n },\n }),\n ),\n );\n\n return this.taskFunction(deputyContext, emit, inquire, progressCallback);\n }\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport { v4 as uuid } from \"uuid\";\nimport { stripLocalRoutinePersistenceHints } from \"./routinePersistence\";\n\nconst ROOT_METADATA_PASSTHROUGH_KEYS = [\n \"__executionTraceId\",\n \"__inquiryId\",\n \"__inquirySourceTaskName\",\n \"__inquirySourceTaskVersion\",\n \"__inquirySourceTaskExecutionId\",\n \"__inquirySourceRoutineExecutionId\",\n] as const;\nconst DELEGATION_REQUEST_SNAPSHOT_KEY = \"__delegationRequestContext\";\n\nfunction cloneDelegationValue<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((item) =>\n item && typeof item === \"object\" ? ({ ...(item as AnyObject) } as T) : item,\n ) as T;\n }\n\n if (value && typeof value === \"object\") {\n return { ...(value as AnyObject) } as T;\n }\n\n return value;\n}\n\nfunction buildDelegationRequestSnapshot(context: AnyObject): AnyObject {\n const snapshot: AnyObject = {};\n\n for (const [key, value] of Object.entries(context)) {\n if (key === DELEGATION_REQUEST_SNAPSHOT_KEY || key === \"task\" || key === \"routine\") {\n continue;\n }\n\n snapshot[key] = cloneDelegationValue(value);\n }\n\n return snapshot;\n}\n\nexport function hoistDelegationMetadataFields<T extends AnyObject>(\n input: T | undefined,\n metadataInput?: AnyObject,\n): T {\n const context =\n input && typeof input === \"object\" ? ({ ...input } as T) : ({} as T);\n const mutableContext = context as AnyObject;\n const metadata =\n metadataInput && typeof metadataInput === \"object\"\n ? metadataInput\n : context.__metadata && typeof context.__metadata === \"object\"\n ? context.__metadata\n : {};\n\n for (const key of ROOT_METADATA_PASSTHROUGH_KEYS) {\n if (\n (mutableContext[key] === undefined || mutableContext[key] === null) &&\n metadata[key] !== undefined &&\n metadata[key] !== null\n ) {\n mutableContext[key] = metadata[key];\n }\n }\n\n return context;\n}\n\nexport function attachDelegationRequestSnapshot<T extends AnyObject>(\n input: T | undefined,\n): T {\n const context =\n input && typeof input === \"object\" ? ({ ...input } as T) : ({} as T);\n const mutableContext = context as AnyObject;\n\n if (\n mutableContext[DELEGATION_REQUEST_SNAPSHOT_KEY] === undefined &&\n (typeof mutableContext.__remoteRoutineName === \"string\" ||\n typeof mutableContext.__serviceName === \"string\")\n ) {\n mutableContext[DELEGATION_REQUEST_SNAPSHOT_KEY] =\n buildDelegationRequestSnapshot(mutableContext);\n }\n\n return context;\n}\n\nexport function restoreDelegationRequestSnapshot<T extends AnyObject>(\n input: T | undefined,\n): T {\n const context =\n input && typeof input === \"object\" ? ({ ...input } as T) : ({} as T);\n const mutableContext = context as AnyObject;\n const snapshotCandidate = mutableContext[DELEGATION_REQUEST_SNAPSHOT_KEY];\n const snapshot =\n snapshotCandidate && typeof snapshotCandidate === \"object\"\n ? (snapshotCandidate as AnyObject)\n : null;\n\n const looksLikeDelegationResult =\n mutableContext.__status !== undefined ||\n mutableContext.__success !== undefined ||\n mutableContext.rowCount !== undefined ||\n mutableContext.__nextNodes !== undefined ||\n mutableContext.__isDeputy === true;\n\n if (!snapshot || !looksLikeDelegationResult) {\n return context;\n }\n\n const restoredContext: AnyObject = buildDelegationRequestSnapshot(snapshot);\n\n if (mutableContext.__retries !== undefined) {\n restoredContext.__retries = mutableContext.__retries;\n }\n\n if (mutableContext.__triedInstances !== undefined) {\n restoredContext.__triedInstances = cloneDelegationValue(\n mutableContext.__triedInstances,\n );\n }\n\n restoredContext[DELEGATION_REQUEST_SNAPSHOT_KEY] =\n buildDelegationRequestSnapshot(snapshot);\n\n return restoredContext as T;\n}\n\nexport function stripDelegationRequestSnapshot<T extends AnyObject>(\n input: T | undefined,\n): T {\n const context =\n input && typeof input === \"object\" ? ({ ...input } as T) : ({} as T);\n delete (context as AnyObject)[DELEGATION_REQUEST_SNAPSHOT_KEY];\n return context;\n}\n\nexport function stripTransportSelectionRoutingContext<T extends AnyObject>(\n input: T | undefined,\n): T {\n const context = stripLocalRoutinePersistenceHints(\n input && typeof input === \"object\" ? ({ ...input } as T) : ({} as T),\n );\n const mutableContext = context as AnyObject;\n\n delete mutableContext.__signalEmission;\n delete mutableContext.__signalEmissionId;\n delete mutableContext.__routineExecId;\n delete mutableContext.__traceCreatedBySignalBroker;\n\n if (mutableContext.__metadata && typeof mutableContext.__metadata === \"object\") {\n delete (mutableContext.__metadata as AnyObject).__traceCreatedBySignalBroker;\n }\n\n return context;\n}\n\nexport function ensureDelegationContextMetadata<T extends AnyObject>(\n input: T | undefined,\n): T & {\n __deputyExecId: string;\n __metadata: AnyObject;\n} {\n const rawContext =\n input && typeof input === \"object\" ? ({ ...input } as T) : ({} as T);\n const metadata =\n rawContext.__metadata && typeof rawContext.__metadata === \"object\"\n ? { ...rawContext.__metadata }\n : {};\n const context = hoistDelegationMetadataFields(rawContext, metadata);\n const deputyExecId =\n typeof metadata.__deputyExecId === \"string\" &&\n metadata.__deputyExecId.length > 0\n ? metadata.__deputyExecId\n : typeof rawContext.__deputyExecId === \"string\" &&\n rawContext.__deputyExecId.length > 0\n ? context.__deputyExecId\n : uuid();\n\n return {\n ...context,\n __deputyExecId: deputyExecId,\n __metadata: {\n ...metadata,\n __deputyExecId: deputyExecId,\n },\n };\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\n\nexport const LOCAL_ROUTINE_PERSISTENCE_KEYS = [\n \"__traceCreatedByRunner\",\n \"__routineCreatedByRunner\",\n \"__routineName\",\n \"__routineVersion\",\n \"__routineCreatedAt\",\n \"__routineIsMeta\",\n] as const;\n\nexport type RoutinePersistenceMetadata = {\n createdByRunner: boolean;\n routineName: string | null;\n routineVersion: number | null;\n routineCreatedAt: string | null;\n routineIsMeta: boolean;\n};\n\nfunction readHintValue(\n source: AnyObject | undefined,\n key: (typeof LOCAL_ROUTINE_PERSISTENCE_KEYS)[number],\n): unknown {\n if (!source || typeof source !== \"object\") {\n return undefined;\n }\n\n if (source[key] !== undefined) {\n return source[key];\n }\n\n if (source.__metadata && typeof source.__metadata === \"object\") {\n return (source.__metadata as AnyObject)[key];\n }\n\n return undefined;\n}\n\nexport function stripLocalRoutinePersistenceHints<T extends AnyObject>(\n input: T | undefined,\n): T {\n const context = (input && typeof input === \"object\"\n ? { ...input }\n : {}) as AnyObject;\n\n for (const key of LOCAL_ROUTINE_PERSISTENCE_KEYS) {\n delete context[key];\n }\n\n if (context.__metadata && typeof context.__metadata === \"object\") {\n const nextMetadata = { ...(context.__metadata as AnyObject) };\n for (const key of LOCAL_ROUTINE_PERSISTENCE_KEYS) {\n delete nextMetadata[key];\n }\n context.__metadata = nextMetadata;\n }\n\n return context as T;\n}\n\nexport function splitRoutinePersistenceContext(\n input: AnyObject | undefined,\n): {\n context: AnyObject;\n metaContext: AnyObject;\n} {\n const sanitized = stripLocalRoutinePersistenceHints(input);\n\n return {\n context: Object.fromEntries(\n Object.entries(sanitized).filter(([key]) => !key.startsWith(\"__\")),\n ),\n metaContext: Object.fromEntries(\n Object.entries(sanitized).filter(([key]) => key.startsWith(\"__\")),\n ),\n };\n}\n\nexport function resolveRoutinePersistenceMetadata(\n source: AnyObject | undefined,\n): RoutinePersistenceMetadata {\n const routineVersionCandidate = readHintValue(source, \"__routineVersion\");\n\n return {\n createdByRunner: readHintValue(source, \"__routineCreatedByRunner\") === true,\n routineName:\n typeof readHintValue(source, \"__routineName\") === \"string\"\n ? String(readHintValue(source, \"__routineName\"))\n : null,\n routineVersion:\n typeof routineVersionCandidate === \"number\"\n ? routineVersionCandidate\n : routineVersionCandidate === null\n ? null\n : Number.isFinite(Number(routineVersionCandidate))\n ? Number(routineVersionCandidate)\n : null,\n routineCreatedAt:\n typeof readHintValue(source, \"__routineCreatedAt\") === \"string\"\n ? String(readHintValue(source, \"__routineCreatedAt\"))\n : null,\n routineIsMeta: readHintValue(source, \"__routineIsMeta\") === true,\n };\n}\n","import DeputyTask from \"./DeputyTask\";\nimport { GraphContext, InquiryOptions } from \"@cadenza.io/core\";\nimport type {\n AnyObject,\n Schema,\n TaskResult,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport { DbOperationPayload } from \"../../types/queryData\";\nimport Cadenza from \"../../Cadenza\";\nimport {\n attachDelegationRequestSnapshot,\n hoistDelegationMetadataFields,\n restoreDelegationRequestSnapshot,\n stripDelegationRequestSnapshot,\n} from \"../../utils/delegation\";\n\nconst ACTOR_SESSION_TRACE_ENABLED =\n process.env.CADENZA_ACTOR_SESSION_TRACE === \"1\" ||\n process.env.CADENZA_ACTOR_SESSION_TRACE === \"true\";\nconst INSTANCE_TRACE_ENABLED =\n process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\";\nconst EXECUTION_OBSERVABILITY_INSERT_ROUTINES = new Set([\n \"Insert execution_trace\",\n \"Insert signal_emission\",\n \"Insert routine_execution\",\n \"Insert task_execution\",\n \"Insert inquiry\",\n]);\n\n/**\n * Represents a specialized task for delegating database operations. Extends `DeputyTask`.\n * This class is designed to abstract database operation requests, delegating execution to a meta-layer system.\n */\nexport default class DatabaseTask extends DeputyTask {\n private readonly queryData: DbOperationPayload;\n\n /**\n * Constructs an instance of the class with the provided parameters, defining\n * various configuration options and behaviors for the task.\n *\n * @param {string} name - The unique name of the task.\n * @param {string} taskName - The specific name of the task.\n * @param {string | undefined} serviceName - The associated service name. Defaults to undefined.\n * @param {string} description - A brief description of the task. Defaults to an empty string.\n * @param {DbOperationPayload} queryData - The data payload for database operations.\n * @param {number} concurrency - The level of concurrency allowed. Defaults to 0.\n * @param {number} timeout - The timeout duration in milliseconds. Defaults to 0.\n * @param {boolean} register - A flag indicating whether to register the task. Defaults to true.\n * @param {boolean} isUnique - Indicates if the task instance is unique. Defaults to false.\n * @param {boolean} isMeta - Indicates if the task is meta. Defaults to false.\n * @param {boolean} isSubMeta - Indicates if the task is a sub-meta task. Defaults to false.\n * @param {boolean} isHidden - Indicates if the task is hidden. Defaults to false.\n * @param {ThrottleTagGetter | undefined} getTagCallback - A callback used for throttling. Defaults to undefined.\n * @param {SchemaDefinition | undefined} inputSchema - The schema definition for input validation. Defaults to undefined.\n * @param {boolean} validateInputContext - Whether to validate the input context. Defaults to false.\n * @param {SchemaDefinition | undefined} outputSchema - The schema definition for output validation. Defaults to undefined.\n * @param {boolean} validateOutputContext - Whether to validate the output context. Defaults to false.\n * @param {number} retryCount - The maximum number of retry attempts. Defaults to 0.\n * @param {number} retryDelay - The delay between retries in milliseconds. Defaults to 0.\n * @param {number} retryDelayMax - The maximum delay between retries in milliseconds. Defaults to 0.\n * @param {number} retryDelayFactor - The factor for exponential backoff. Defaults to 1.\n * @return {void}\n */\n constructor(\n name: string,\n taskName: string,\n serviceName: string | undefined = undefined,\n description: string = \"\",\n queryData: DbOperationPayload,\n concurrency: number = 0,\n timeout: number = 0,\n register: boolean = true,\n isUnique: boolean = false,\n isMeta: boolean = false,\n isSubMeta: boolean = false,\n isHidden: boolean = false,\n getTagCallback: ThrottleTagGetter | undefined = undefined,\n inputSchema: Schema | undefined = undefined,\n validateInputContext: boolean = false,\n outputSchema: Schema | undefined = undefined,\n validateOutputContext: boolean = false,\n retryCount: number = 0,\n retryDelay: number = 0,\n retryDelayMax: number = 0,\n retryDelayFactor: number = 1,\n ) {\n super(\n name,\n taskName,\n serviceName,\n description,\n concurrency,\n timeout,\n register,\n isUnique,\n isMeta,\n isSubMeta,\n isHidden,\n getTagCallback,\n inputSchema,\n validateInputContext,\n outputSchema,\n validateOutputContext,\n retryCount,\n retryDelay,\n retryDelayMax,\n retryDelayFactor,\n );\n this.queryData = queryData;\n }\n\n /**\n * Executes the specified task within the given context.\n *\n * @param {GraphContext} context - The execution context for the current task, which includes data and metadata required for processing.\n * @param {(signal: string, ctx: AnyObject) => void} emit - A function used to send signals or events during task execution.\n * @param inquire\n * @param {(progress: number) => void} progressCallback - A function to report execution progress as a percentage (0-100).\n * @param {{ nodeId: string; routineExecId: string }} nodeData - An object containing identifiers for the current node and routine execution.\n * @return {TaskResult} The result of the task execution.\n */\n execute(\n context: GraphContext,\n emit: (signal: string, ctx: AnyObject) => void,\n inquire: (\n inquiry: string,\n context: AnyObject,\n options: InquiryOptions,\n ) => Promise<AnyObject>,\n progressCallback: (progress: number) => void,\n nodeData: { nodeId: string; routineExecId: string },\n ): TaskResult {\n const initialFullContext = {\n ...context.getFullContext(),\n };\n const hasExplicitOperationPayload =\n initialFullContext.data !== undefined ||\n initialFullContext.queryData !== undefined ||\n initialFullContext.batch !== undefined ||\n initialFullContext.transaction !== undefined ||\n initialFullContext.onConflict !== undefined ||\n initialFullContext.filter !== undefined ||\n initialFullContext.fields !== undefined ||\n initialFullContext.joins !== undefined ||\n initialFullContext.sort !== undefined ||\n initialFullContext.limit !== undefined ||\n initialFullContext.offset !== undefined;\n const hasStaleDelegationIdentity =\n (typeof initialFullContext.__remoteRoutineName === \"string\" &&\n initialFullContext.__remoteRoutineName !== this.remoteRoutineName) ||\n (typeof initialFullContext.__localTaskName === \"string\" &&\n initialFullContext.__localTaskName !== this.name);\n const hasResolverOwnedContext =\n (typeof initialFullContext.__resolverRequestId === \"string\" &&\n initialFullContext.__resolverRequestId.length > 0) ||\n (initialFullContext.__resolverQueryData !== undefined &&\n initialFullContext.__resolverQueryData !== null);\n const shouldPreferCurrentContext =\n hasResolverOwnedContext ||\n (hasExplicitOperationPayload && hasStaleDelegationIdentity);\n const rawContext = shouldPreferCurrentContext\n ? attachDelegationRequestSnapshot(\n stripDelegationRequestSnapshot(initialFullContext),\n )\n : restoreDelegationRequestSnapshot(\n attachDelegationRequestSnapshot(initialFullContext),\n );\n const metadata =\n rawContext.__metadata && typeof rawContext.__metadata === \"object\"\n ? rawContext.__metadata\n : context.getMetadata();\n const ctx = {\n ...rawContext,\n };\n\n if (EXECUTION_OBSERVABILITY_INSERT_ROUTINES.has(this.remoteRoutineName)) {\n delete ctx.__signalEmission;\n delete ctx.__routineExecId;\n delete ctx.__localRoutineExecId;\n delete ctx.__previousTaskExecutionId;\n if (ctx.__metadata && typeof ctx.__metadata === \"object\") {\n delete (ctx.__metadata as AnyObject).__routineExecId;\n delete (ctx.__metadata as AnyObject).__localRoutineExecId;\n delete (ctx.__metadata as AnyObject).__previousTaskExecutionId;\n }\n }\n\n delete ctx.__metadata;\n const isResolverExecution =\n typeof ctx.__resolverRequestId === \"string\" &&\n ctx.__resolverRequestId.length > 0;\n const dynamicQueryData =\n isResolverExecution\n ? {}\n : ctx.__resolverQueryData && typeof ctx.__resolverQueryData === \"object\"\n ? ctx.__resolverQueryData\n : ctx.queryData ?? {};\n delete ctx.queryData;\n const nextQueryData: DbOperationPayload = {\n ...this.queryData,\n data: {\n ...ctx.data,\n },\n ...dynamicQueryData,\n };\n\n const deputyContext = attachDelegationRequestSnapshot(\n stripDelegationRequestSnapshot(\n hoistDelegationMetadataFields({\n ...ctx,\n __timeout: this.timeout,\n __localTaskName: this.name,\n __localTaskVersion: this.version,\n __localServiceName: Cadenza.serviceRegistry.serviceName,\n __previousTaskExecutionId: nodeData.nodeId,\n __remoteRoutineName: this.remoteRoutineName,\n __serviceName: this.serviceName,\n __executionTraceId: metadata.__executionTraceId ?? null,\n __localRoutineExecId:\n metadata.__routineExecId ?? metadata.__metadata?.__routineExecId,\n __metadata: {\n ...metadata,\n __skipRemoteExecution:\n metadata.__skipRemoteExecution ?? ctx.__skipRemoteExecution ?? false,\n __blockRemoteExecution:\n metadata.__blockRemoteExecution ?? ctx.__blockRemoteExecution ?? false,\n __deputyTaskName: this.name,\n },\n data: nextQueryData.data ?? ctx.data,\n batch: nextQueryData.batch ?? ctx.batch,\n transaction: nextQueryData.transaction ?? ctx.transaction,\n onConflict: Object.prototype.hasOwnProperty.call(nextQueryData, \"onConflict\")\n ? nextQueryData.onConflict\n : undefined,\n filter: nextQueryData.filter ?? ctx.filter,\n fields: nextQueryData.fields ?? ctx.fields,\n queryData: nextQueryData,\n }),\n ),\n );\n\n if (\n INSTANCE_TRACE_ENABLED &&\n this.remoteRoutineName === \"Insert service_instance\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] database_task_execute\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n localTaskName: this.name,\n remoteRoutineName: this.remoteRoutineName,\n hasDelegationSnapshot:\n (rawContext as AnyObject).__delegationRequestContext !== undefined,\n dataKeys:\n ctx.data && typeof ctx.data === \"object\" && !Array.isArray(ctx.data)\n ? Object.keys(ctx.data)\n : [],\n rootOnConflictTarget: Array.isArray((ctx as AnyObject).onConflict?.target)\n ? ((ctx as AnyObject).onConflict.target as unknown[])\n : null,\n queryOnConflictTarget: Array.isArray(nextQueryData.onConflict?.target)\n ? (nextQueryData.onConflict.target as unknown[])\n : null,\n queryDataKeys: Object.keys(nextQueryData),\n queryDataDataKeys:\n nextQueryData.data &&\n typeof nextQueryData.data === \"object\" &&\n !Array.isArray(nextQueryData.data)\n ? Object.keys(nextQueryData.data as AnyObject)\n : [],\n rootKeys: Object.keys(rawContext),\n });\n }\n\n if (\n ACTOR_SESSION_TRACE_ENABLED &&\n this.remoteRoutineName === \"Insert actor_session_state\"\n ) {\n console.log(\"[CADENZA_ACTOR_SESSION_TRACE] database_task_execute\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n localTaskName: this.name,\n remoteRoutineName: this.remoteRoutineName,\n hadSnapshotBeforeRestore:\n initialFullContext.__delegationRequestContext !== undefined,\n beforeRestoreHasData: initialFullContext.data !== undefined,\n beforeRestoreHasQueryData: initialFullContext.queryData !== undefined,\n beforeRestoreLooksLikeResult:\n initialFullContext.__status !== undefined ||\n initialFullContext.__success !== undefined ||\n initialFullContext.rowCount !== undefined ||\n initialFullContext.__isDeputy === true,\n afterRestoreHasData: rawContext.data !== undefined,\n afterRestoreHasQueryData: rawContext.queryData !== undefined,\n outgoingHasData: deputyContext.data !== undefined,\n outgoingHasQueryData: deputyContext.queryData !== undefined,\n rootKeys: Object.keys(rawContext),\n });\n }\n\n return this.taskFunction(deputyContext, emit, inquire, progressCallback);\n }\n}\n","import { GraphRoutine, Task } from \"@cadenza.io/core\";\nimport type { AnyObject } from \"@cadenza.io/core\";\nimport { v4 as uuid, validate as isUuid } from \"uuid\";\nimport Cadenza from \"../Cadenza\";\nimport DatabaseController from \"@service-database-controller\";\nimport { isBrowser } from \"../utils/environment\";\nimport { InquiryResponderDescriptor } from \"../types/inquiry\";\nimport type { ServiceInstanceDescriptor } from \"../types/serviceRegistry\";\nimport type { ServiceManifestSnapshot } from \"../types/serviceManifest\";\nimport type {\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n} from \"../types/transport\";\nimport {\n isMetaIntentName,\n META_READINESS_INTENT,\n META_RUNTIME_STATUS_INTENT,\n META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT,\n} from \"../utils/inquiry\";\nimport {\n getRouteableTransport,\n normalizeServiceInstanceDescriptor,\n} from \"../utils/serviceInstance\";\nimport {\n buildTransportClientKey,\n buildTransportHandleKey,\n parseTransportHandleKey,\n normalizeServiceTransportDescriptor,\n transportSupportsProtocol,\n} from \"../utils/transport\";\nimport {\n attachDelegationRequestSnapshot,\n ensureDelegationContextMetadata,\n restoreDelegationRequestSnapshot,\n stripDelegationRequestSnapshot,\n} from \"../utils/delegation\";\nimport {\n buildServiceCommunicationEstablishedContext,\n buildServiceCommunicationRetryContext,\n META_SERVICE_COMMUNICATION_PERSIST_RETRY_SIGNAL,\n resolveServiceCommunicationPersistenceDescriptor,\n SERVICE_COMMUNICATION_PERSIST_RETRY_DELAYS_MS,\n} from \"../utils/serviceCommunication\";\nimport {\n evaluateDependencyReadiness,\n resolveServiceReadinessState,\n summarizeDependencyReadiness,\n type DependencyReadinessState,\n type ReadinessState,\n} from \"../utils/readiness\";\nimport {\n hasSignificantRuntimeStatusChange,\n resolveRuntimeStatus,\n runtimeStatusPriority,\n type RuntimeStatusSnapshot,\n type RuntimeStatusState,\n} from \"../utils/runtimeStatus\";\nimport {\n RuntimeMetricsSampler,\n isNodeRuntimeMetricsSupported,\n type RuntimeMetricsSnapshot,\n} from \"../utils/runtimeMetrics\";\nimport {\n AUTHORITY_RUNTIME_STATUS_REPORT_INTENT,\n RUNTIME_STATUS_AUTHORITY_SYNC_REQUESTED_SIGNAL,\n buildAuthorityRuntimeStatusSignature,\n normalizeAuthorityRuntimeStatusReport,\n type AuthorityRuntimeStatusReport,\n} from \"./runtimeStatusContract\";\nimport {\n AUTHORITY_BOOTSTRAP_INTENT_SPECS,\n AUTHORITY_BOOTSTRAP_FULL_SYNC_INTENT,\n AUTHORITY_BOOTSTRAP_FULL_SYNC_RESPONDER_TASK_NAME,\n AUTHORITY_BOOTSTRAP_SIGNAL_NAMES,\n getAuthorityBootstrapInsertIntentSpecForTable,\n getAuthorityBootstrapIntentSpec,\n isAuthorityBootstrapIntent,\n} from \"./authorityBootstrapControlPlane\";\nimport {\n explodeServiceManifestSnapshots,\n} from \"./serviceManifest\";\nimport {\n AUTHORITY_SERVICE_MANIFEST_UPDATED_SIGNAL,\n normalizeServiceManifestSnapshot,\n selectLatestServiceManifestSnapshots,\n} from \"./serviceManifestContract\";\n\nconst META_SERVICE_REGISTRY_FULL_SYNC_INTENT =\n AUTHORITY_BOOTSTRAP_FULL_SYNC_INTENT;\nconst BOOTSTRAP_FULL_SYNC_RESPONDER_TASK_NAME =\n AUTHORITY_BOOTSTRAP_FULL_SYNC_RESPONDER_TASK_NAME;\nconst BOOTSTRAP_FULL_SYNC_TIMEOUT_MS = 120_000;\nconst META_SERVICE_INSTANCE_INSERT_RESOLVED_SIGNAL =\n \"meta.service_registry.insert_resolved:service_instance\";\nconst META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL =\n \"meta.service_registry.gathered_sync_transmission_reconcile_requested\";\nconst META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL =\n \"meta.service_registry.runtime_status.heartbeat_tick\";\nconst META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL =\n \"meta.service_registry.runtime_status.monitor_tick\";\nconst META_RUNTIME_METRICS_SAMPLE_TICK_SIGNAL =\n \"meta.service_registry.runtime_metrics.sample_tick\";\nconst META_RUNTIME_STATUS_PEER_UPDATE_REQUESTED_SIGNAL =\n \"meta.service_registry.runtime_status.peer_update_requested\";\n\ninterface PeerRuntimeStatusSnapshot {\n state: RuntimeStatusSnapshot[\"state\"];\n acceptingWork: boolean;\n numberOfRunningGraphs: number;\n isActive: boolean;\n isNonResponsive: boolean;\n isBlocked: boolean;\n cpuUsage: number | null;\n memoryUsage: number | null;\n eventLoopLag: number | null;\n}\nconst META_SERVICE_INSTANCE_ACTIVITY_OBSERVED_SIGNAL =\n \"meta.service_registry.instance_activity_observed\";\nconst META_REMOTE_SERVICE_ACTIVITY_OBSERVED_SIGNAL =\n \"meta.service_registry.remote_activity_observed\";\nconst META_SERVICE_INSTANCE_SHUTDOWN_REPORTED_SIGNAL =\n \"meta.service_registry.instance_shutdown_reported\";\nconst META_SERVICE_INSTANCE_SHUTDOWN_TRANSPORT_DEACTIVATION_SIGNAL =\n \"meta.service_registry.instance_shutdown_transport_deactivation_requested\";\nconst META_AUTHORITY_BOOTSTRAP_HANDSHAKE_REQUESTED_SIGNAL =\n \"meta.service_registry.authority_bootstrap_handshake_requested\";\nconst META_RUNTIME_STATUS_REST_REFRESH_TICK_SIGNAL =\n \"meta.service_registry.runtime_status.rest_refresh_tick\";\nconst AUTHORITY_BOOTSTRAP_HANDSHAKE_TIMEOUT_MS = 5_000;\nconst EARLY_FULL_SYNC_DELAYS_MS = [\n 100,\n 1500,\n 5000,\n 12000,\n 25000,\n 45000,\n 70000,\n] as const;\nconst MIN_BOOTSTRAP_FULL_SYNC_ATTEMPTS = 4;\nconst INTERNAL_RUNTIME_STATUS_TASK_NAMES = new Set([\n \"Track local routine start\",\n \"Track local routine end\",\n \"Start runtime status sharing intervals\",\n \"Broadcast runtime status\",\n \"Flush local runtime status to authority\",\n \"Monitor dependee heartbeat freshness\",\n \"Refresh REST dependee runtime status\",\n \"Resolve runtime status fallback inquiry\",\n \"Respond runtime status inquiry\",\n \"Respond readiness inquiry\",\n \"Collect distributed readiness\",\n \"Get status\",\n]);\nconst SERVICE_REGISTRY_TRACE_SERVICE = (\n process.env.CADENZA_SERVICE_REGISTRY_TRACE_SERVICE ?? \"\"\n).trim();\n\nfunction shouldTraceServiceRegistry(serviceName: string | null | undefined): boolean {\n return (\n SERVICE_REGISTRY_TRACE_SERVICE.length > 0 &&\n serviceName === SERVICE_REGISTRY_TRACE_SERVICE\n );\n}\n\nfunction buildServiceRegistryInsertQueryData(\n ctx: AnyObject,\n queryData: Record<string, unknown>,\n): Record<string, unknown> {\n const joinedContexts = Array.isArray((ctx as AnyObject).joinedContexts)\n ? ((ctx as AnyObject).joinedContexts as AnyObject[])\n : [];\n const getJoinedValue = (key: \"data\" | \"batch\" | \"__registrationData\") => {\n for (let index = joinedContexts.length - 1; index >= 0; index -= 1) {\n const joinedContext = joinedContexts[index];\n if (\n joinedContext &&\n typeof joinedContext === \"object\" &&\n (Object.prototype.hasOwnProperty.call(joinedContext, key) ||\n joinedContext[key] !== undefined)\n ) {\n return joinedContext[key];\n }\n }\n\n return undefined;\n };\n const registrationData =\n Object.prototype.hasOwnProperty.call(ctx, \"__registrationData\") &&\n ctx.__registrationData !== undefined\n ? ctx.__registrationData\n : getJoinedValue(\"__registrationData\");\n const nextQueryData: Record<string, unknown> = {\n ...queryData,\n };\n if (!Object.prototype.hasOwnProperty.call(queryData, \"onConflict\")) {\n delete nextQueryData.onConflict;\n }\n const resolvedData =\n Object.prototype.hasOwnProperty.call(ctx, \"data\") || ctx.data !== undefined\n ? ctx.data\n : getJoinedValue(\"data\");\n const resolvedBatch =\n Object.prototype.hasOwnProperty.call(ctx, \"batch\") || ctx.batch !== undefined\n ? ctx.batch\n : getJoinedValue(\"batch\");\n const nextData =\n resolvedData !== undefined\n ? resolvedData && typeof resolvedData === \"object\"\n ? { ...resolvedData }\n : resolvedData\n : registrationData &&\n typeof registrationData === \"object\" &&\n !Array.isArray(registrationData)\n ? { ...registrationData }\n : registrationData;\n\n if (nextData !== undefined) {\n nextQueryData.data = nextData;\n }\n\n if (resolvedBatch !== undefined) {\n nextQueryData.batch = Array.isArray(resolvedBatch)\n ? resolvedBatch.map((row) =>\n row && typeof row === \"object\" ? { ...row } : row,\n )\n : resolvedBatch;\n }\n\n return nextQueryData;\n}\n\nfunction sanitizeServiceRegistryInsertExecutionContext(ctx: AnyObject): AnyObject {\n const sanitized = stripDelegationRequestSnapshot({\n ...ctx,\n });\n\n delete sanitized.__status;\n delete sanitized.__success;\n delete sanitized.__nextNodes;\n delete sanitized.rowCount;\n delete sanitized.error;\n delete sanitized.errored;\n delete sanitized.failed;\n delete sanitized.returnedValue;\n delete sanitized.queryData;\n delete sanitized.onConflict;\n\n return sanitized;\n}\n\nfunction clearTransientRoutingErrorState(context: AnyObject): void {\n delete context.errored;\n delete context.failed;\n delete context.__error;\n delete context.error;\n delete context.returnedValue;\n}\n\nfunction isPersistedUuid(value: unknown): value is string {\n return typeof value === \"string\" && isUuid(value.trim());\n}\n\nfunction getSelfBootstrapRegistrationRetrySignal(\n tableName: string,\n): string | null {\n if (tableName === \"service\") {\n return \"meta.create_service_requested\";\n }\n\n if (tableName === \"service_instance\") {\n return \"meta.service_registry.instance_registration_requested\";\n }\n\n if (tableName === \"service_instance_transport\") {\n return \"meta.service_registry.transport_registration_requested\";\n }\n\n return null;\n}\n\nfunction resolveBootstrapAuthorityInsertResult(\n tableName: string,\n ctx: AnyObject,\n queryData: Record<string, unknown>,\n rawResult: unknown,\n emit: (signal: string, ctx: AnyObject) => void,\n): AnyObject | unknown {\n const normalizedResult = normalizeServiceRegistryInsertResult(\n tableName,\n ctx,\n queryData,\n rawResult,\n );\n\n if (!normalizedResult || typeof normalizedResult !== \"object\") {\n return normalizedResult;\n }\n\n if (\n tableName === \"service_instance\" &&\n (normalizedResult as AnyObject).errored !== true &&\n (normalizedResult as AnyObject).failed !== true\n ) {\n emit(META_SERVICE_INSTANCE_INSERT_RESOLVED_SIGNAL, normalizedResult as AnyObject);\n }\n\n const resolvedResult = {\n ...(normalizedResult as AnyObject),\n };\n delete resolvedResult.__resolverRequestId;\n delete resolvedResult.__resolverOriginalContext;\n delete resolvedResult.__resolverQueryData;\n return resolvedResult;\n}\n\nfunction resolveServiceNameFromContext(\n ctx: AnyObject | null | undefined,\n): string {\n const candidate =\n (typeof ctx?.serviceName === \"string\" ? ctx.serviceName : null) ??\n (typeof ctx?.__serviceName === \"string\" ? ctx.__serviceName : null) ??\n (typeof ctx?.serviceInstance?.serviceName === \"string\"\n ? ctx.serviceInstance.serviceName\n : null) ??\n (typeof ctx?.serviceInstance?.service_name === \"string\"\n ? ctx.serviceInstance.service_name\n : null) ??\n (typeof ctx?.data?.service_name === \"string\" ? ctx.data.service_name : null) ??\n (typeof ctx?.data?.serviceName === \"string\" ? ctx.data.serviceName : null);\n\n return candidate?.trim() ?? \"\";\n}\n\nfunction normalizeServiceRegistryInsertResult(\n tableName: string,\n ctx: AnyObject,\n queryData: Record<string, unknown>,\n rawResult: unknown,\n): unknown {\n if (!rawResult || typeof rawResult !== \"object\") {\n return rawResult;\n }\n\n const result = { ...(rawResult as AnyObject) };\n delete result.__resolverOriginalContext;\n delete result.__resolverQueryData;\n const normalizedQueryData =\n result.queryData && typeof result.queryData === \"object\"\n ? { ...(result.queryData as AnyObject) }\n : { ...queryData };\n const resolvedData =\n result.data ??\n normalizedQueryData.data ??\n queryData.data ??\n ctx.data ??\n ctx.__registrationData;\n\n if (resolvedData !== undefined && result.data === undefined) {\n result.data = resolvedData;\n }\n\n if (\n resolvedData !== undefined &&\n (normalizedQueryData.data === undefined || normalizedQueryData.data === null)\n ) {\n normalizedQueryData.data = resolvedData;\n }\n\n result.queryData = normalizedQueryData;\n\n if (tableName === \"service_instance\") {\n const chainedSetupKeys = [\n \"__transportData\",\n \"transportData\",\n \"__useSocket\",\n \"__retryCount\",\n \"__isFrontend\",\n ] as const;\n\n for (const key of chainedSetupKeys) {\n if (result[key] === undefined && ctx[key] !== undefined) {\n result[key] = Array.isArray(ctx[key])\n ? (ctx[key] as unknown[]).map((entry) =>\n entry && typeof entry === \"object\"\n ? { ...(entry as AnyObject) }\n : entry,\n )\n : ctx[key];\n }\n }\n }\n\n if (tableName === \"service\") {\n const resolvedServiceName = String(\n ctx.__serviceName ??\n result.__serviceName ??\n (resolvedData as AnyObject | undefined)?.name ??\n (resolvedData as AnyObject | undefined)?.service_name ??\n \"\",\n ).trim();\n\n if (resolvedServiceName) {\n result.__serviceName = resolvedServiceName;\n }\n }\n\n const resolvedLocalServiceInstanceId = String(\n ctx.__serviceInstanceId ??\n (resolvedData as AnyObject | undefined)?.uuid ??\n (resolvedData as AnyObject | undefined)?.service_instance_id ??\n \"\",\n ).trim();\n\n if (resolvedLocalServiceInstanceId) {\n result.__serviceInstanceId = resolvedLocalServiceInstanceId;\n }\n\n if (\n tableName === \"service_instance\" ||\n tableName === \"service_instance_transport\"\n ) {\n const resolvedUuid = String(\n result.uuid ??\n (resolvedData as AnyObject | undefined)?.uuid ??\n ctx.__serviceInstanceId ??\n \"\",\n ).trim();\n\n if (resolvedUuid) {\n result.uuid = resolvedUuid;\n }\n }\n\n return result;\n}\n\nfunction resolveServiceInstanceRegistrationPayload(\n ctx: AnyObject,\n fallbackServiceName?: string | null,\n fallbackServiceInstanceId?: string | null,\n): AnyObject | null {\n const instancePayloadKeys = [\n \"uuid\",\n \"process_pid\",\n \"is_primary\",\n \"service_name\",\n \"is_database\",\n \"is_frontend\",\n \"is_blocked\",\n \"is_non_responsive\",\n \"is_active\",\n \"last_active\",\n \"health\",\n ] as const;\n const candidateSources: unknown[] = [\n ctx.data,\n ctx.__registrationData,\n ctx.queryData?.data,\n ctx.__resolverQueryData?.data,\n ctx.__resolverOriginalContext?.data,\n ctx.__resolverOriginalContext?.__registrationData,\n ctx.__resolverOriginalContext?.queryData?.data,\n ];\n\n const isInstancePayloadCandidate = (candidate: unknown): candidate is AnyObject =>\n !!candidate &&\n typeof candidate === \"object\" &&\n !Array.isArray(candidate) &&\n instancePayloadKeys.some(\n (key) =>\n Object.prototype.hasOwnProperty.call(candidate as AnyObject, key) &&\n (candidate as AnyObject)[key] !== undefined,\n );\n\n let resolvedData: AnyObject | null = null;\n\n for (const candidate of candidateSources) {\n if (isInstancePayloadCandidate(candidate)) {\n resolvedData = {\n ...(candidate as AnyObject),\n };\n break;\n }\n }\n\n if (!resolvedData) {\n for (const candidate of candidateSources) {\n if (\n candidate &&\n typeof candidate === \"object\" &&\n !Array.isArray(candidate)\n ) {\n resolvedData = {\n ...(candidate as AnyObject),\n };\n break;\n }\n }\n }\n\n if (!resolvedData) {\n return null;\n }\n\n const resolvedUuid = String(\n resolvedData.uuid ??\n ctx.__serviceInstanceId ??\n ctx.__resolverOriginalContext?.__serviceInstanceId ??\n fallbackServiceInstanceId ??\n \"\",\n ).trim();\n const resolvedServiceName = String(\n resolvedData.service_name ??\n ctx.__serviceName ??\n ctx.__resolverOriginalContext?.__serviceName ??\n fallbackServiceName ??\n \"\",\n ).trim();\n const resolvedProcessPid =\n typeof resolvedData.process_pid === \"number\"\n ? resolvedData.process_pid\n : typeof ctx.__resolverOriginalContext?.data?.process_pid === \"number\"\n ? ctx.__resolverOriginalContext.data.process_pid\n : typeof ctx.__resolverOriginalContext?.__registrationData?.process_pid ===\n \"number\"\n ? ctx.__resolverOriginalContext.__registrationData.process_pid\n : typeof ctx.queryData?.data?.process_pid === \"number\"\n ? ctx.queryData.data.process_pid\n : typeof ctx.__registrationData?.process_pid === \"number\"\n ? ctx.__registrationData.process_pid\n : null;\n\n if (!resolvedUuid || !resolvedServiceName || resolvedProcessPid === null) {\n return null;\n }\n\n const payload: AnyObject = {\n uuid: resolvedUuid,\n service_name: resolvedServiceName,\n process_pid: resolvedProcessPid,\n };\n\n for (const key of instancePayloadKeys) {\n if (\n key === \"uuid\" ||\n key === \"service_name\" ||\n key === \"process_pid\" ||\n resolvedData[key] === undefined\n ) {\n continue;\n }\n\n const value = resolvedData[key];\n payload[key] =\n value && typeof value === \"object\" && !Array.isArray(value)\n ? { ...value }\n : value;\n }\n\n return payload;\n}\n\nfunction summarizeTransportDescriptors(\n transports: Array<\n Pick<\n ServiceTransportDescriptor,\n \"uuid\" | \"serviceInstanceId\" | \"role\" | \"origin\" | \"protocols\"\n >\n >,\n) {\n return transports.map((transport) => ({\n uuid: transport.uuid,\n serviceInstanceId: transport.serviceInstanceId,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols,\n }));\n}\n\nfunction resolveServiceRegistryInsertTask(\n tableName: string,\n queryData: Record<string, unknown> = {},\n options: Record<string, unknown> = {},\n): Task {\n const remoteInsertTask = Cadenza.createCadenzaDBInsertTask(\n tableName,\n queryData,\n options,\n );\n\n const localExecutionRequestedSignal = `meta.service_registry.insert_execution_requested:${tableName}:local`;\n const remoteExecutionRequestedSignal = `meta.service_registry.insert_execution_requested:${tableName}:remote`;\n const executionResolvedSignal = `meta.service_registry.insert_execution_resolved:${tableName}`;\n const executionFailedSignal = `meta.service_registry.insert_execution_failed:${tableName}`;\n\n const createPrepareExecutionTask = (signalName: string) =>\n Cadenza.createMetaTask(\n `Prepare service registry insert execution for ${tableName} (${signalName})`,\n (ctx) => {\n const sanitizedContext = sanitizeServiceRegistryInsertExecutionContext(\n ctx,\n );\n const nextQueryData = buildServiceRegistryInsertQueryData(\n sanitizedContext,\n queryData,\n );\n\n const delegationContext = ensureDelegationContextMetadata({\n ...sanitizedContext,\n data:\n nextQueryData.data !== undefined\n ? nextQueryData.data\n : sanitizedContext.data,\n batch:\n nextQueryData.batch !== undefined\n ? nextQueryData.batch\n : sanitizedContext.batch,\n onConflict:\n Object.prototype.hasOwnProperty.call(nextQueryData, \"onConflict\")\n ? nextQueryData.onConflict\n : undefined,\n transaction:\n nextQueryData.transaction !== undefined\n ? nextQueryData.transaction\n : sanitizedContext.transaction,\n queryData: nextQueryData,\n }) as AnyObject & {\n __deputyExecId: string;\n __metadata: AnyObject;\n };\n delegationContext.__metadata.__skipRemoteExecution =\n delegationContext.__metadata.__skipRemoteExecution ??\n delegationContext.__skipRemoteExecution ??\n false;\n delegationContext.__metadata.__blockRemoteExecution =\n delegationContext.__metadata.__blockRemoteExecution ??\n delegationContext.__blockRemoteExecution ??\n false;\n\n const nextContext = {\n ...delegationContext,\n __resolverOriginalContext: {\n ...sanitizedContext,\n },\n __resolverQueryData: nextQueryData,\n };\n\n if (\n tableName === \"service_instance_transport\" &&\n shouldTraceServiceRegistry(\n resolveServiceNameFromContext(sanitizedContext) || Cadenza.serviceRegistry.serviceName,\n )\n ) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] prepare_transport_insert_execution\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n signalName,\n serviceName:\n resolveServiceNameFromContext(sanitizedContext) ||\n Cadenza.serviceRegistry.serviceName,\n serviceInstanceId:\n sanitizedContext.__serviceInstanceId ??\n sanitizedContext.data?.service_instance_id ??\n null,\n data: nextQueryData.data ?? null,\n });\n }\n\n if (\n (tableName === \"service_instance\" || tableName === \"service\") &&\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\")\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] prepare_service_registry_insert_execution\", {\n tableName,\n signalName,\n resolverRequestId: ctx.__resolverRequestId ?? null,\n hasData: nextQueryData.data !== undefined,\n onConflictTarget: Array.isArray(\n (nextQueryData as AnyObject).onConflict?.target,\n )\n ? ((nextQueryData as AnyObject).onConflict.target as unknown[])\n : null,\n hasDelegationSnapshot:\n (sanitizedContext as AnyObject).__delegationRequestContext !== undefined,\n queryDataKeys: Object.keys(nextQueryData),\n dataKeys:\n nextQueryData.data && typeof nextQueryData.data === \"object\"\n ? Object.keys(nextQueryData.data as AnyObject)\n : [],\n });\n }\n\n return nextContext;\n },\n `Prepares ${tableName} service-registry insert payloads for runner execution.`,\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(signalName)\n .emitsOnFail(executionFailedSignal);\n\n const prepareLocalExecutionTask = createPrepareExecutionTask(\n localExecutionRequestedSignal,\n );\n const prepareRemoteExecutionTask = createPrepareExecutionTask(\n remoteExecutionRequestedSignal,\n );\n\n const wiredLocalTaskNames = new Set<string>();\n const wireExecutionTarget = (targetTask: Task, prepareTask: Task) => {\n targetTask.emits(executionResolvedSignal).emitsOnFail(executionFailedSignal);\n prepareTask.then(targetTask);\n };\n\n wireExecutionTarget(remoteInsertTask, prepareRemoteExecutionTask);\n\n return Cadenza.createMetaTask(\n `Resolve service registry insert for ${tableName}`,\n (ctx, emit) =>\n new Promise((resolve) => {\n const resolverRequestId = uuid();\n\n Cadenza.createEphemeralMetaTask(\n `Resolve service registry insert execution for ${tableName} (${resolverRequestId})`,\n (resultCtx) => {\n if (\n tableName === \"service_instance\" &&\n shouldTraceServiceRegistry(\n resolveServiceNameFromContext(\n ((resultCtx.__resolverOriginalContext as AnyObject) ??\n resultCtx ??\n ctx) as AnyObject,\n ) || Cadenza.serviceRegistry.serviceName,\n )\n ) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] resolver_service_instance_signal\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n resolverRequestId,\n incomingResolverRequestId: resultCtx.__resolverRequestId ?? null,\n keys:\n resultCtx && typeof resultCtx === \"object\"\n ? Object.keys(resultCtx)\n : [],\n });\n }\n\n if (\n (tableName === \"service_instance\" || tableName === \"service\") &&\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\")\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] resolve_service_registry_insert_signal\", {\n tableName,\n resolverRequestId,\n incomingResolverRequestId: resultCtx.__resolverRequestId ?? null,\n errored: resultCtx.errored === true,\n error: resultCtx.__error ?? null,\n keys:\n resultCtx && typeof resultCtx === \"object\"\n ? Object.keys(resultCtx)\n : [],\n });\n }\n\n if (resultCtx.__resolverRequestId !== resolverRequestId) {\n return false;\n }\n\n const normalizedResult = normalizeServiceRegistryInsertResult(\n tableName,\n (resultCtx.__resolverOriginalContext as AnyObject) ?? ctx,\n (resultCtx.__resolverQueryData as Record<string, unknown>) ??\n resultCtx.queryData ??\n ctx.queryData ??\n {},\n resultCtx,\n );\n\n if (\n (tableName === \"service_instance\" || tableName === \"service\") &&\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\")\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] finalize_service_registry_insert\", {\n tableName,\n hasNormalized: !!normalizedResult,\n normalizedKeys:\n normalizedResult && typeof normalizedResult === \"object\"\n ? Object.keys(normalizedResult as AnyObject)\n : [],\n uuid:\n normalizedResult && typeof normalizedResult === \"object\"\n ? (normalizedResult as AnyObject).uuid ??\n (normalizedResult as AnyObject).data?.uuid ??\n (normalizedResult as AnyObject).queryData?.data?.uuid ??\n null\n : null,\n serviceName:\n normalizedResult && typeof normalizedResult === \"object\"\n ? (normalizedResult as AnyObject).__serviceName ??\n (normalizedResult as AnyObject).data?.service_name ??\n (normalizedResult as AnyObject).queryData?.data?.service_name ??\n null\n : null,\n errored:\n normalizedResult && typeof normalizedResult === \"object\"\n ? (normalizedResult as AnyObject).errored === true\n : false,\n error:\n normalizedResult && typeof normalizedResult === \"object\"\n ? (normalizedResult as AnyObject).__error ?? null\n : null,\n inquiryMeta:\n normalizedResult && typeof normalizedResult === \"object\"\n ? (normalizedResult as AnyObject).__inquiryMeta ?? null\n : null,\n });\n }\n\n if (\n normalizedResult &&\n typeof normalizedResult === \"object\" &&\n tableName === \"service_instance_transport\" &&\n shouldTraceServiceRegistry(\n resolveServiceNameFromContext(\n ((resultCtx.__resolverOriginalContext as AnyObject) ??\n resultCtx) as AnyObject,\n ) || Cadenza.serviceRegistry.serviceName,\n )\n ) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] finalize_transport_insert_execution\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n serviceName:\n resolveServiceNameFromContext(\n ((resultCtx.__resolverOriginalContext as AnyObject) ??\n resultCtx) as AnyObject,\n ) || Cadenza.serviceRegistry.serviceName,\n uuid:\n (normalizedResult as AnyObject).uuid ??\n (normalizedResult as AnyObject).data?.uuid ??\n null,\n errored: (normalizedResult as AnyObject).errored === true,\n error: (normalizedResult as AnyObject).__error ?? null,\n data:\n (normalizedResult as AnyObject).data ??\n (normalizedResult as AnyObject).queryData?.data ??\n null,\n });\n }\n\n if (\n normalizedResult &&\n typeof normalizedResult === \"object\" &&\n tableName === \"service_instance\"\n ) {\n const traceServiceName =\n resolveServiceNameFromContext(\n ((resultCtx.__resolverOriginalContext as AnyObject) ??\n resultCtx) as AnyObject,\n ) || Cadenza.serviceRegistry.serviceName;\n\n if (shouldTraceServiceRegistry(traceServiceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] service_instance_insert_resolved\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n serviceName: traceServiceName,\n serviceInstanceId:\n (normalizedResult as AnyObject).__serviceInstanceId ??\n (normalizedResult as AnyObject).uuid ??\n (normalizedResult as AnyObject).data?.uuid ??\n null,\n hasTransportData:\n Array.isArray((normalizedResult as AnyObject).__transportData) ||\n Array.isArray((normalizedResult as AnyObject).transportData),\n transportCount: Array.isArray(\n (normalizedResult as AnyObject).__transportData,\n )\n ? (normalizedResult as AnyObject).__transportData.length\n : Array.isArray((normalizedResult as AnyObject).transportData)\n ? (normalizedResult as AnyObject).transportData.length\n : 0,\n errored: (normalizedResult as AnyObject).errored === true,\n error: (normalizedResult as AnyObject).__error ?? null,\n });\n }\n\n emit(\n META_SERVICE_INSTANCE_INSERT_RESOLVED_SIGNAL,\n normalizedResult as AnyObject,\n );\n }\n\n if (!normalizedResult || typeof normalizedResult !== \"object\") {\n resolve(normalizedResult as any);\n return normalizedResult as any;\n }\n\n const resolvedResult = {\n ...(normalizedResult as AnyObject),\n };\n delete resolvedResult.__resolverRequestId;\n delete resolvedResult.__resolverOriginalContext;\n delete resolvedResult.__resolverQueryData;\n\n resolve(resolvedResult);\n return resolvedResult;\n },\n `Resolves signal-driven ${tableName} service-registry insert execution.`,\n {\n register: false,\n },\n ).doOn(executionResolvedSignal, executionFailedSignal);\n\n const localInsertTask = Cadenza.getLocalCadenzaDBInsertTask(tableName);\n const bootstrapAuthorityInsertSpec =\n !localInsertTask && Cadenza.serviceRegistry.connectsToCadenzaDB\n ? getAuthorityBootstrapInsertIntentSpecForTable(tableName)\n : null;\n const resolvedTargetServiceName = resolveServiceNameFromContext(ctx);\n const selfBootstrapRetrySignal =\n Cadenza.serviceRegistry.serviceName === \"CadenzaDB\" &&\n resolvedTargetServiceName === \"CadenzaDB\" &&\n !localInsertTask\n ? getSelfBootstrapRegistrationRetrySignal(tableName)\n : null;\n\n if (selfBootstrapRetrySignal) {\n Cadenza.schedule(\n selfBootstrapRetrySignal,\n {\n ...ctx,\n },\n 250,\n );\n resolve(false);\n return;\n }\n\n if (bootstrapAuthorityInsertSpec) {\n const sanitizedContext = sanitizeServiceRegistryInsertExecutionContext(ctx);\n const nextQueryData = buildServiceRegistryInsertQueryData(\n sanitizedContext,\n queryData,\n );\n const inquiryContext = ensureDelegationContextMetadata({\n ...sanitizedContext,\n data:\n nextQueryData.data !== undefined\n ? nextQueryData.data\n : sanitizedContext.data,\n batch:\n nextQueryData.batch !== undefined\n ? nextQueryData.batch\n : sanitizedContext.batch,\n onConflict:\n Object.prototype.hasOwnProperty.call(nextQueryData, \"onConflict\")\n ? nextQueryData.onConflict\n : undefined,\n transaction:\n nextQueryData.transaction !== undefined\n ? nextQueryData.transaction\n : sanitizedContext.transaction,\n queryData: nextQueryData,\n }) as AnyObject;\n\n inquiryContext.__metadata = {\n ...(inquiryContext.__metadata ?? {}),\n __skipRemoteExecution:\n inquiryContext.__metadata?.__skipRemoteExecution ??\n inquiryContext.__skipRemoteExecution ??\n false,\n __blockRemoteExecution:\n inquiryContext.__metadata?.__blockRemoteExecution ??\n inquiryContext.__blockRemoteExecution ??\n false,\n };\n\n Cadenza.serviceRegistry.ensureBootstrapAuthorityControlPlaneForInquiry(\n bootstrapAuthorityInsertSpec.intentName,\n inquiryContext,\n );\n\n void Cadenza.inquire(\n bootstrapAuthorityInsertSpec.intentName,\n inquiryContext,\n {\n requireComplete: true,\n timeout: bootstrapAuthorityInsertSpec.defaultTimeoutMs,\n },\n )\n .then((result) =>\n resolve(\n resolveBootstrapAuthorityInsertResult(\n tableName,\n sanitizedContext,\n nextQueryData,\n result,\n emit,\n ) as any,\n ),\n )\n .catch((error) =>\n resolve(\n resolveBootstrapAuthorityInsertResult(\n tableName,\n sanitizedContext,\n nextQueryData,\n error,\n emit,\n ) as any,\n ),\n );\n return;\n }\n\n const executionSignal = localInsertTask\n ? localExecutionRequestedSignal\n : remoteExecutionRequestedSignal;\n\n if (\n (tableName === \"service_instance\" || tableName === \"service\") &&\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\")\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] resolve_service_registry_insert\", {\n tableName,\n executionSignal,\n hasLocalInsertTask: !!localInsertTask,\n serviceName: ctx.__serviceName ?? ctx.data?.service_name ?? null,\n serviceInstanceId: ctx.__serviceInstanceId ?? ctx.data?.uuid ?? null,\n hasData: !!ctx.data,\n dataKeys:\n ctx.data && typeof ctx.data === \"object\"\n ? Object.keys(ctx.data)\n : [],\n registrationKeys:\n ctx.__registrationData &&\n typeof ctx.__registrationData === \"object\"\n ? Object.keys(ctx.__registrationData)\n : [],\n });\n }\n\n if (\n localInsertTask &&\n !wiredLocalTaskNames.has(localInsertTask.name)\n ) {\n wireExecutionTarget(localInsertTask, prepareLocalExecutionTask);\n wiredLocalTaskNames.add(localInsertTask.name);\n }\n\n emit(executionSignal, {\n ...ctx,\n __resolverRequestId: resolverRequestId,\n });\n }),\n `Resolves ${tableName} inserts through the local CadenzaDB task when available.`,\n options,\n );\n}\n\nfunction readPositiveIntegerEnv(name: string, fallback: number): number {\n if (typeof process === \"undefined\") {\n return fallback;\n }\n\n const raw = process.env?.[name];\n const parsed = Number(raw);\n if (!Number.isFinite(parsed)) {\n return fallback;\n }\n\n const normalized = Math.trunc(parsed);\n if (normalized <= 0) {\n return fallback;\n }\n\n return normalized;\n}\n\nexport interface DeputyDescriptor {\n serviceName: string;\n remoteRoutineName?: string;\n signalName?: string;\n localTaskName: string;\n communicationType: string;\n}\n\ninterface RemoteIntentDeputyDescriptor {\n key: string;\n intentName: string;\n serviceName: string;\n remoteTaskName: string;\n remoteTaskVersion: number;\n localTaskName: string;\n localTask: Task;\n}\n\ninterface RemoteRouteBalancingState {\n selectionCount: number;\n lastSelectedAt: number | null;\n lastSuccessAt: number | null;\n lastFailureAt: number | null;\n failurePenaltyUntil: number | null;\n activeDispatchTokens: Set<string>;\n}\n\ninterface RemoteRouteBalancingSnapshot {\n availability: \"available\" | \"penalized\";\n runtimeState: RuntimeStatusState;\n acceptingWork: boolean;\n numberOfRunningGraphs: number;\n inFlightDelegations: number;\n selectionCount: number;\n lastSelectedAt: number | null;\n lastSuccessAt: number | null;\n lastFailureAt: number | null;\n failurePenaltyUntil: number | null;\n cpuUsage: number | null;\n memoryUsage: number | null;\n eventLoopLag: number | null;\n}\n\ninterface RouteSelectionCandidate {\n instance: ServiceInstanceDescriptor;\n selectedTransport: ServiceTransportDescriptor | undefined;\n routeKey: string | null;\n route: RemoteRouteRecord | null;\n snapshot: RemoteRouteBalancingSnapshot | null;\n}\n\ninterface RemoteRouteRecord {\n key: string;\n serviceName: string;\n role: ServiceTransportRole;\n origin: string;\n protocols: ServiceTransportProtocol[];\n serviceInstanceId: string;\n serviceTransportId: string;\n generation: string;\n protocolState: Partial<\n Record<\n ServiceTransportProtocol,\n {\n clientCreated: boolean;\n clientPending: boolean;\n clientReady: boolean;\n }\n >\n >;\n balancing: RemoteRouteBalancingState;\n lastUpdatedAt: number;\n}\n\ninterface AuthorityBootstrapRouteState {\n origin: string | null;\n role: ServiceTransportRole;\n routeKey: string | null;\n fetchId: string | null;\n serviceInstanceId: string | null;\n serviceTransportId: string | null;\n handshakeEstablished: boolean;\n}\n\ntype RuntimeStatusReport = AuthorityRuntimeStatusReport;\n\ninterface RuntimeStatusFallbackRestDiagnostic {\n attempted: boolean;\n outcome:\n | \"instance_missing\"\n | \"fetch_unavailable\"\n | \"no_rest_transport\"\n | \"http_error\"\n | \"invalid_report\"\n | \"identity_mismatch\"\n | \"fetch_error\"\n | \"matched\";\n transport?: {\n uuid: string;\n role: ServiceTransportRole;\n origin: string;\n protocols: ServiceTransportProtocol[];\n clientCreated?: boolean;\n };\n responseStatus?: number;\n responseStatusText?: string;\n payloadServiceName?: string;\n payloadServiceInstanceId?: string;\n payloadKeys?: string[];\n error?: string;\n}\n\ninterface RuntimeStatusFallbackFailureDiagnostics {\n target: {\n serviceName: string;\n serviceInstanceId: string;\n };\n instance: {\n exists: boolean;\n runtimeState?: RuntimeStatusState;\n acceptingWork?: boolean;\n reportedAt?: string | null;\n isDatabase?: boolean;\n isFrontend?: boolean;\n isBootstrapPlaceholder?: boolean;\n transports: Array<{\n uuid: string;\n role: ServiceTransportRole;\n origin: string;\n protocols: ServiceTransportProtocol[];\n clientCreated?: boolean;\n }>;\n };\n directStatusCheck: RuntimeStatusFallbackRestDiagnostic;\n inquiry: {\n meta: AnyObject;\n reportTargets: Array<{\n serviceName?: string;\n serviceInstanceId?: string;\n transportId?: string;\n state?: RuntimeStatusState;\n acceptingWork?: boolean;\n reportedAt?: string;\n }>;\n };\n}\n\ninterface DependencyReadinessDetail {\n serviceName: string;\n serviceInstanceId: string;\n dependencyState: DependencyReadinessState;\n runtimeState: RuntimeStatusState;\n acceptingWork: boolean;\n missedHeartbeats: number;\n stale: boolean;\n blocked: boolean;\n reason:\n | \"missing\"\n | \"heartbeat-timeout\"\n | \"heartbeat-stale\"\n | \"runtime-unavailable\"\n | \"runtime-overloaded\"\n | \"runtime-degraded\"\n | \"runtime-healthy\";\n lastHeartbeatAt: string | null;\n reportedAt: string | null;\n}\n\ninterface ReadinessReport {\n serviceName: string;\n serviceInstanceId: string;\n reportedAt: string;\n readinessState: ReadinessState;\n runtimeState: RuntimeStatusState;\n acceptingWork: boolean;\n dependencySummary: {\n total: number;\n ready: number;\n degraded: number;\n overloaded: number;\n unavailable: number;\n stale: number;\n };\n dependencies?: DependencyReadinessDetail[];\n}\n\ninterface RoutingCooldownState {\n serviceName: string;\n role: ServiceTransportRole;\n protocol: ServiceTransportProtocol;\n failureCount: number;\n lastFailureAt: number;\n cooldownUntil: number;\n reason: string;\n}\n\ninterface TransportFailureState {\n serviceName: string;\n serviceInstanceId: string;\n transportId: string;\n failureCount: number;\n lastFailureAt: number;\n lastErrorKind: string;\n}\n\ninterface LocalLifecycleFlushRuntimeState {\n lastSentSignature: string | null;\n lastAckAt: string | null;\n lastError: string | null;\n}\n\n/**\n * The ServiceRegistry class is a singleton that manages the registration and lifecycle of\n * service instances, deputies, and remote signals in a distributed service architecture.\n * It handles various tasks such as instance updates, remote signal registration,\n * service status synchronization, and error/event broadcasting.\n */\nexport default class ServiceRegistry {\n private static _instance: ServiceRegistry;\n public static get instance(): ServiceRegistry {\n if (!this._instance) this._instance = new ServiceRegistry();\n return this._instance;\n }\n\n private instances: Map<string, ServiceInstanceDescriptor[]> = new Map();\n private remoteRoutesByKey: Map<string, RemoteRouteRecord> = new Map();\n private localInstanceSeed: ServiceInstanceDescriptor | null = null;\n private deputies: Map<string, DeputyDescriptor[]> = new Map();\n private remoteSignals: Map<string, Set<string>> = new Map();\n private remoteIntents: Map<string, Set<string>> = new Map();\n private gatheredSyncTransmissionServices: Set<string> = new Set();\n private remoteIntentDeputiesByKey: Map<string, RemoteIntentDeputyDescriptor> =\n new Map();\n private remoteIntentDeputiesByTask: Map<Task, RemoteIntentDeputyDescriptor> =\n new Map();\n private dependeesByService: Map<string, Set<string>> = new Map();\n private dependeeByInstance: Map<string, string> = new Map();\n private readinessDependeesByService: Map<string, Set<string>> = new Map();\n private readinessDependeeByInstance: Map<string, string> = new Map();\n private lastHeartbeatAtByInstance: Map<string, number> = new Map();\n private missedHeartbeatsByInstance: Map<string, number> = new Map();\n private runtimeStatusFallbackInFlightByInstance: Set<string> = new Set();\n private runtimeStatusRestRefreshInFlightByInstance: Set<string> = new Set();\n private routingCooldownsByKey: Map<string, RoutingCooldownState> = new Map();\n private transportFailuresByKey: Map<string, TransportFailureState> = new Map();\n private activeRoutineExecutionIds: Set<string> = new Set();\n private runtimeStatusHeartbeatStarted = false;\n private runtimeMetricsSamplingStarted = false;\n private lastRuntimeStatusSnapshot: RuntimeStatusSnapshot | null = null;\n private lastPeerRuntimeStatusSnapshot: PeerRuntimeStatusSnapshot | null = null;\n private latestRuntimeMetricsSnapshot: RuntimeMetricsSnapshot | null = null;\n private readonly runtimeMetricsSampler = isNodeRuntimeMetricsSupported()\n ? new RuntimeMetricsSampler()\n : null;\n private readonly runtimeStatusHeartbeatIntervalMs = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_HEARTBEAT_MS\",\n 30_000,\n );\n private readonly runtimeMetricsSampleIntervalMs = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_METRICS_SAMPLE_MS\",\n 5_000,\n );\n private readonly runtimeStatusRestRefreshIntervalMs = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_REST_REFRESH_MS\",\n this.runtimeMetricsSampleIntervalMs,\n );\n private readonly runtimeStatusMissThreshold = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_MISSED_HEARTBEATS\",\n 3,\n );\n private readonly runtimeStatusFallbackTimeoutMs = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_FALLBACK_TIMEOUT_MS\",\n 1_500,\n );\n private readonly runtimeStatusAuthorityReportTimeoutMs = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_AUTHORITY_REPORT_TIMEOUT_MS\",\n 5_000,\n );\n private readonly runtimeStatusInactiveMissThreshold = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_INACTIVE_MISSED_HEARTBEATS\",\n 6,\n );\n private readonly noRouteCooldownFailureThreshold = readPositiveIntegerEnv(\n \"CADENZA_NO_ROUTE_COOLDOWN_FAILURE_THRESHOLD\",\n 3,\n );\n private readonly noRouteCooldownWindowMs = readPositiveIntegerEnv(\n \"CADENZA_NO_ROUTE_COOLDOWN_WINDOW_MS\",\n 5_000,\n );\n private readonly noRouteCooldownMs = readPositiveIntegerEnv(\n \"CADENZA_NO_ROUTE_COOLDOWN_MS\",\n 20_000,\n );\n private readonly transportFailureThreshold = readPositiveIntegerEnv(\n \"CADENZA_TRANSPORT_FAILURE_THRESHOLD\",\n 2,\n );\n private readonly transportFailureWindowMs = readPositiveIntegerEnv(\n \"CADENZA_TRANSPORT_FAILURE_WINDOW_MS\",\n 5_000,\n );\n private readonly routeFailurePenaltyMs = readPositiveIntegerEnv(\n \"CADENZA_ROUTE_FAILURE_PENALTY_MS\",\n 5_000,\n );\n private readonly degradedGraphThreshold = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_DEGRADED_GRAPH_THRESHOLD\",\n 10,\n );\n private readonly overloadedGraphThreshold = readPositiveIntegerEnv(\n \"CADENZA_RUNTIME_STATUS_OVERLOADED_GRAPH_THRESHOLD\",\n 20,\n );\n serviceName: string | null = null;\n serviceInstanceId: string | null = null;\n numberOfRunningGraphs: number = 0;\n useSocket: boolean = false;\n retryCount: number = 3;\n isFrontend: boolean = false;\n connectsToCadenzaDB: boolean = false;\n private bootstrapFullSyncRetryTimer: ReturnType<typeof setTimeout> | null =\n null;\n private bootstrapFullSyncRetryIndex = 0;\n private bootstrapFullSyncRetryGeneration = 0;\n private bootstrapFullSyncSatisfied = false;\n private bootstrapFullSyncRetryReason: string | null = null;\n private knownGlobalSignalMaps: Map<\n string,\n {\n signalName: string;\n serviceName: string;\n isGlobal: boolean;\n }\n > = new Map();\n private authorityBootstrapRoute: AuthorityBootstrapRouteState = {\n origin: null,\n role: \"internal\",\n routeKey: null,\n fetchId: null,\n serviceInstanceId: null,\n serviceTransportId: null,\n handshakeEstablished: false,\n };\n private authorityBootstrapHandshakeInFlight = false;\n\n handleInstanceUpdateTask: Task;\n handleTransportUpdateTask: Task;\n handleGlobalSignalRegistrationTask: Task;\n handleGlobalIntentRegistrationTask: Task;\n reconcileGatheredSyncTransmissionsTask: Task;\n handleSocketStatusUpdateTask: Task;\n fullSyncTask: GraphRoutine | Task;\n getAllInstances: Task;\n doForEachInstance: Task;\n deleteInstance: Task;\n getBalancedInstance: Task;\n getInstanceById: Task;\n getInstancesByServiceName: Task;\n handleDeputyRegistrationTask: Task;\n getStatusTask: Task;\n insertServiceTask: Task;\n insertServiceInstanceTask: Task;\n insertServiceTransportTask: Task;\n handleServiceNotRespondingTask: Task;\n handleServiceHandshakeTask: Task;\n collectTransportDiagnosticsTask: Task;\n collectReadinessTask: Task;\n private authorityFullSyncResponderTask: Task | null = null;\n private authorityServiceCommunicationPersistenceTask: Task | null = null;\n private readonly localLifecycleFlushActor = Cadenza.createActor<\n {},\n LocalLifecycleFlushRuntimeState | null\n >(\n {\n name: \"ServiceLifecycleFlushActor\",\n description:\n \"Coalesces local runtime-status flushes so each service instance sends at most one lightweight authority lifecycle report at a time.\",\n defaultKey: \"service-lifecycle-flush-default\",\n keyResolver: (input) =>\n String(\n input.serviceInstanceId ?? input.__serviceInstanceId ?? \"\",\n ).trim() || undefined,\n initState: {},\n session: {\n enabled: true,\n persistDurableState: false,\n idleTtlMs: Math.max(60_000, this.runtimeStatusHeartbeatIntervalMs * 4),\n },\n },\n { isMeta: true },\n );\n\n private collectBootstrapFullSyncPayload(\n ctx: AnyObject,\n ): {\n serviceInstances: Array<Record<string, unknown>>;\n serviceInstanceTransports: Array<Record<string, unknown>>;\n serviceManifests: Array<Record<string, unknown>>;\n tasks: Array<Record<string, unknown>>;\n signals: Array<Record<string, unknown>>;\n intents: Array<Record<string, unknown>>;\n actors: Array<Record<string, unknown>>;\n routines: Array<Record<string, unknown>>;\n directionalTaskMaps: Array<Record<string, unknown>>;\n actorTaskMaps: Array<Record<string, unknown>>;\n taskToRoutineMaps: Array<Record<string, unknown>>;\n signalToTaskMaps: Array<Record<string, unknown>>;\n intentToTaskMaps: Array<Record<string, unknown>>;\n } {\n const serviceInstances: Array<Record<string, unknown>> = [];\n const serviceInstanceTransports: Array<Record<string, unknown>> = [];\n const manifestSnapshots: ServiceManifestSnapshot[] = [];\n const signalToTaskMaps: Array<Record<string, unknown>> = [];\n const intentToTaskMaps: Array<Record<string, unknown>> = [];\n const tasks: Array<Record<string, unknown>> = [];\n const signals: Array<Record<string, unknown>> = [];\n const intents: Array<Record<string, unknown>> = [];\n const actors: Array<Record<string, unknown>> = [];\n const routines: Array<Record<string, unknown>> = [];\n const directionalTaskMaps: Array<Record<string, unknown>> = [];\n const actorTaskMaps: Array<Record<string, unknown>> = [];\n const taskToRoutineMaps: Array<Record<string, unknown>> = [];\n const seenServiceInstances = new Set<string>();\n const seenServiceInstanceTransports = new Set<string>();\n const seenSignalMaps = new Set<string>();\n const seenIntentMaps = new Set<string>();\n const seenTasks = new Set<string>();\n const seenSignals = new Set<string>();\n const seenIntents = new Set<string>();\n const seenActors = new Set<string>();\n const seenRoutines = new Set<string>();\n const seenDirectionalTaskMaps = new Set<string>();\n const seenActorTaskMaps = new Set<string>();\n const seenTaskToRoutineMaps = new Set<string>();\n const contexts = Array.isArray(ctx.joinedContexts)\n ? [ctx, ...ctx.joinedContexts]\n : [ctx];\n\n const pushUnique = (\n rows: Array<Record<string, unknown>>,\n target: Array<Record<string, unknown>>,\n seen: Set<string>,\n keyResolver: (row: Record<string, unknown>) => string,\n ) => {\n for (const row of rows) {\n const key = keyResolver(row);\n if (!key || seen.has(key)) {\n continue;\n }\n\n seen.add(key);\n target.push(row);\n }\n };\n\n const normalizeRows = (value: unknown): Array<Record<string, unknown>> =>\n Array.isArray(value)\n ? value.filter(\n (row): row is Record<string, unknown> =>\n !!row && typeof row === \"object\",\n )\n : [];\n const readDirectArrayPayload = (\n candidate: AnyObject,\n keys: string[],\n ): Array<Record<string, unknown>> => {\n for (const key of keys) {\n const value = candidate?.[key];\n if (Array.isArray(value)) {\n return normalizeRows(value);\n }\n }\n\n return [];\n };\n\n for (const candidate of contexts) {\n const serviceInstanceRows = readDirectArrayPayload(candidate, [\n \"serviceInstances\",\n \"service_instances\",\n \"serviceInstance\",\n \"service_instance\",\n ]);\n const serviceInstanceTransportRows = readDirectArrayPayload(candidate, [\n \"serviceInstanceTransports\",\n \"service_instance_transports\",\n \"serviceInstanceTransport\",\n \"service_instance_transport\",\n ]);\n const serviceManifestRows = readDirectArrayPayload(candidate, [\n \"serviceManifests\",\n \"service_manifests\",\n \"serviceManifest\",\n \"service_manifest\",\n ]);\n const signalMapRows = readDirectArrayPayload(candidate, [\n \"signalToTaskMaps\",\n \"signal_to_task_maps\",\n \"signalToTaskMap\",\n \"signal_to_task_map\",\n ]);\n const intentMapRows = readDirectArrayPayload(candidate, [\n \"intentToTaskMaps\",\n \"intent_to_task_maps\",\n \"intentToTaskMap\",\n \"intent_to_task_map\",\n ]);\n\n pushUnique(\n serviceInstanceRows,\n serviceInstances,\n seenServiceInstances,\n (row) => String(row.uuid ?? \"\").trim(),\n );\n pushUnique(\n serviceInstanceTransportRows,\n serviceInstanceTransports,\n seenServiceInstanceTransports,\n (row) => String(row.uuid ?? \"\").trim(),\n );\n for (const row of serviceManifestRows) {\n const snapshot = normalizeServiceManifestSnapshot(\n row.manifest && typeof row.manifest === \"object\" ? row.manifest : row,\n );\n if (snapshot) {\n manifestSnapshots.push(snapshot);\n }\n }\n pushUnique(\n signalMapRows,\n signalToTaskMaps,\n seenSignalMaps,\n (row) =>\n `${String(row.service_name ?? row.serviceName ?? \"\").trim()}|${String(\n row.signal_name ?? row.signalName ?? \"\",\n ).trim()}`,\n );\n pushUnique(\n intentMapRows,\n intentToTaskMaps,\n seenIntentMaps,\n (row) =>\n `${String(row.intent_name ?? row.intentName ?? \"\").trim()}|${String(\n row.service_name ?? row.serviceName ?? \"\",\n ).trim()}|${String(row.task_name ?? row.taskName ?? \"\").trim()}|${String(\n row.task_version ?? row.taskVersion ?? 1,\n ).trim()}`,\n );\n\n const rawRows = normalizeRows((candidate as AnyObject).rows);\n for (const row of rawRows) {\n if (row.intent_name !== undefined || row.intentName !== undefined) {\n pushUnique(\n [row],\n intentToTaskMaps,\n seenIntentMaps,\n (entry) =>\n `${String(entry.intent_name ?? entry.intentName ?? \"\").trim()}|${String(\n entry.service_name ?? entry.serviceName ?? \"\",\n ).trim()}|${String(entry.task_name ?? entry.taskName ?? \"\").trim()}|${String(\n entry.task_version ?? entry.taskVersion ?? 1,\n ).trim()}`,\n );\n continue;\n }\n\n if (row.signal_name !== undefined || row.signalName !== undefined) {\n pushUnique(\n [row],\n signalToTaskMaps,\n seenSignalMaps,\n (entry) =>\n `${String(entry.service_name ?? entry.serviceName ?? \"\").trim()}|${String(\n entry.signal_name ?? entry.signalName ?? \"\",\n ).trim()}`,\n );\n continue;\n }\n\n if (\n row.service_instance_id !== undefined ||\n row.serviceInstanceId !== undefined\n ) {\n pushUnique(\n [row],\n serviceInstanceTransports,\n seenServiceInstanceTransports,\n (entry) => String(entry.uuid ?? \"\").trim(),\n );\n continue;\n }\n\n if (\n row.manifest !== undefined &&\n (row.service_instance_id !== undefined ||\n row.serviceInstanceId !== undefined ||\n row.uuid !== undefined)\n ) {\n const snapshot = normalizeServiceManifestSnapshot(\n row.manifest && typeof row.manifest === \"object\" ? row.manifest : row,\n );\n if (snapshot) {\n manifestSnapshots.push(snapshot);\n }\n continue;\n }\n\n if (\n row.uuid !== undefined &&\n (row.service_name !== undefined || row.serviceName !== undefined)\n ) {\n pushUnique(\n [row],\n serviceInstances,\n seenServiceInstances,\n (entry) => String(entry.uuid ?? \"\").trim(),\n );\n }\n }\n }\n\n const latestManifestSnapshots =\n selectLatestServiceManifestSnapshots(manifestSnapshots);\n const explodedManifest = explodeServiceManifestSnapshots(\n latestManifestSnapshots,\n );\n const serviceManifests = latestManifestSnapshots.map((snapshot) => ({\n service_instance_id: snapshot.serviceInstanceId,\n service_name: snapshot.serviceName,\n revision: snapshot.revision,\n manifest_hash: snapshot.manifestHash,\n published_at: snapshot.publishedAt,\n manifest: snapshot,\n }));\n\n pushUnique(\n explodedManifest.tasks as Array<Record<string, unknown>>,\n tasks,\n seenTasks,\n (row) =>\n `${String(row.service_name ?? \"\").trim()}|${String(row.name ?? \"\").trim()}|${String(\n row.version ?? 1,\n ).trim()}`,\n );\n pushUnique(\n explodedManifest.signals as Array<Record<string, unknown>>,\n signals,\n seenSignals,\n (row) => String(row.name ?? \"\").trim(),\n );\n pushUnique(\n explodedManifest.intents as Array<Record<string, unknown>>,\n intents,\n seenIntents,\n (row) => String(row.name ?? \"\").trim(),\n );\n pushUnique(\n explodedManifest.actors as Array<Record<string, unknown>>,\n actors,\n seenActors,\n (row) =>\n `${String(row.service_name ?? \"\").trim()}|${String(row.name ?? \"\").trim()}|${String(\n row.version ?? 1,\n ).trim()}`,\n );\n pushUnique(\n explodedManifest.routines as Array<Record<string, unknown>>,\n routines,\n seenRoutines,\n (row) =>\n `${String(row.service_name ?? \"\").trim()}|${String(row.name ?? \"\").trim()}|${String(\n row.version ?? 1,\n ).trim()}`,\n );\n pushUnique(\n explodedManifest.directionalTaskMaps as Array<Record<string, unknown>>,\n directionalTaskMaps,\n seenDirectionalTaskMaps,\n (row) =>\n `${String(row.predecessor_service_name ?? \"\").trim()}|${String(\n row.predecessor_task_name ?? \"\",\n ).trim()}|${String(row.predecessor_task_version ?? 1).trim()}|${String(\n row.service_name ?? \"\",\n ).trim()}|${String(row.task_name ?? \"\").trim()}|${String(\n row.task_version ?? 1,\n ).trim()}`,\n );\n pushUnique(\n explodedManifest.actorTaskMaps as Array<Record<string, unknown>>,\n actorTaskMaps,\n seenActorTaskMaps,\n (row) =>\n `${String(row.actor_name ?? \"\").trim()}|${String(row.actor_version ?? 1).trim()}|${String(\n row.service_name ?? \"\",\n ).trim()}|${String(row.task_name ?? \"\").trim()}|${String(\n row.task_version ?? 1,\n ).trim()}`,\n );\n pushUnique(\n explodedManifest.taskToRoutineMaps as Array<Record<string, unknown>>,\n taskToRoutineMaps,\n seenTaskToRoutineMaps,\n (row) =>\n `${String(row.routine_name ?? \"\").trim()}|${String(row.routine_version ?? 1).trim()}|${String(\n row.service_name ?? \"\",\n ).trim()}|${String(row.task_name ?? \"\").trim()}|${String(\n row.task_version ?? 1,\n ).trim()}`,\n );\n pushUnique(\n explodedManifest.signalToTaskMaps as Array<Record<string, unknown>>,\n signalToTaskMaps,\n seenSignalMaps,\n (row) =>\n `${String(row.signal_name ?? \"\").trim()}|${String(\n row.service_name ?? \"\",\n ).trim()}|${String(row.task_name ?? \"\").trim()}|${String(\n row.task_version ?? 1,\n ).trim()}`,\n );\n pushUnique(\n explodedManifest.intentToTaskMaps as Array<Record<string, unknown>>,\n intentToTaskMaps,\n seenIntentMaps,\n (row) =>\n `${String(row.intent_name ?? \"\").trim()}|${String(\n row.service_name ?? \"\",\n ).trim()}|${String(row.task_name ?? \"\").trim()}|${String(\n row.task_version ?? 1,\n ).trim()}`,\n );\n\n return {\n serviceInstances,\n serviceInstanceTransports,\n serviceManifests,\n tasks,\n signals,\n intents,\n actors,\n routines,\n directionalTaskMaps,\n actorTaskMaps,\n taskToRoutineMaps,\n signalToTaskMaps,\n intentToTaskMaps,\n };\n }\n\n private buildRemoteIntentDeputyKey(map: {\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion?: number;\n }): string {\n return `${map.intentName}|${map.serviceName}|${map.taskName}|${map.taskVersion ?? 1}`;\n }\n\n private readArrayPayload(\n ctx: AnyObject,\n keys: string[],\n ): Array<Record<string, unknown>> {\n for (const key of keys) {\n const value = (ctx as any)?.[key];\n if (Array.isArray(value)) {\n return value as Array<Record<string, unknown>>;\n }\n }\n\n if (Array.isArray((ctx as any)?.rows)) {\n return (ctx as any).rows as Array<Record<string, unknown>>;\n }\n\n if (Array.isArray((ctx as any)?.data)) {\n return (ctx as any).data as Array<Record<string, unknown>>;\n }\n\n return [];\n }\n\n private normalizeSignalMaps(ctx: AnyObject): Array<{\n signalName: string;\n serviceName: string;\n isGlobal: boolean;\n deleted?: boolean;\n }> {\n const arrayPayload = this.readArrayPayload(ctx, [\n \"signalToTaskMaps\",\n \"signal_to_task_maps\",\n \"signalToTaskMap\",\n \"signal_to_task_map\",\n ]);\n\n if (arrayPayload.length > 0) {\n return arrayPayload\n .map((map) => ({\n signalName: String(\n map.signalName ?? map.signal_name ?? \"\",\n ).trim(),\n serviceName: String(\n map.serviceName ?? map.service_name ?? \"\",\n ).trim(),\n isGlobal: Boolean(map.isGlobal ?? map.is_global ?? false),\n deleted: Boolean(map.deleted),\n }))\n .filter((map) => map.signalName && map.serviceName);\n }\n\n const single =\n (ctx as any).signalToTaskMap ??\n (ctx as any).signal_to_task_map ??\n (ctx as any).data ??\n (((ctx as any).signalName ?? (ctx as any).signal_name)\n ? ctx\n : undefined);\n\n if (!single || typeof single !== \"object\") {\n return [];\n }\n\n return [\n {\n signalName: String(\n (single as any).signalName ?? (single as any).signal_name ?? \"\",\n ).trim(),\n serviceName: String(\n (single as any).serviceName ?? (single as any).service_name ?? \"\",\n ).trim(),\n isGlobal: Boolean((single as any).isGlobal ?? (single as any).is_global ?? false),\n deleted: Boolean((single as any).deleted),\n },\n ].filter((map) => map.signalName && map.serviceName);\n }\n\n private rememberKnownGlobalSignalMaps(\n signalMaps: Array<{\n signalName: string;\n serviceName: string;\n isGlobal: boolean;\n deleted?: boolean;\n }>,\n ): void {\n for (const map of signalMaps) {\n if (!map.isGlobal) {\n continue;\n }\n\n const key = `${map.serviceName}::${map.signalName}`;\n if (map.deleted) {\n this.knownGlobalSignalMaps.delete(key);\n continue;\n }\n\n this.knownGlobalSignalMaps.set(key, {\n signalName: map.signalName,\n serviceName: map.serviceName,\n isGlobal: true,\n });\n }\n }\n\n private applyGlobalSignalRegistrations(\n signalMaps: Array<{\n signalName: string;\n serviceName: string;\n isGlobal: boolean;\n deleted?: boolean;\n }>,\n ): boolean {\n let changed = false;\n const sortedSignalToTaskMap = [...signalMaps].sort((a: any, b: any) => {\n if (a.deleted && !b.deleted) return -1;\n if (!a.deleted && b.deleted) return 1;\n return 0;\n });\n\n const locallyEmittedSignals = Cadenza.signalBroker\n .listEmittedSignals()\n .filter((s: any) => s.startsWith(\"global.\"));\n\n for (const map of sortedSignalToTaskMap) {\n if (map.deleted) {\n const removed = this.remoteSignals.get(map.serviceName)?.delete(map.signalName) ?? false;\n\n if (!this.remoteSignals.get(map.serviceName)?.size) {\n this.remoteSignals.delete(map.serviceName);\n }\n\n const existingTransmissionTask = Cadenza.get(\n `Transmit signal: ${map.signalName} to ${map.serviceName}`,\n );\n if (existingTransmissionTask) {\n existingTransmissionTask.destroy();\n changed = true;\n } else if (removed) {\n changed = true;\n }\n\n continue;\n }\n\n if (map.serviceName === this.serviceName) {\n continue;\n }\n\n const signalObservers = (Cadenza.signalBroker as any).signalObservers;\n if (!signalObservers?.has(map.signalName)) {\n Cadenza.signalBroker.addSignal(map.signalName);\n }\n\n const observer = signalObservers?.get(map.signalName);\n if (observer) {\n observer.registered = true;\n observer.registrationRequested = false;\n }\n\n if (!locallyEmittedSignals.includes(map.signalName)) {\n continue;\n }\n\n if (!this.remoteSignals.get(map.serviceName)) {\n this.remoteSignals.set(map.serviceName, new Set());\n }\n\n if (!this.remoteSignals.get(map.serviceName)?.has(map.signalName)) {\n Cadenza.createSignalTransmissionTask(map.signalName, map.serviceName);\n changed = true;\n }\n\n this.remoteSignals.get(map.serviceName)?.add(map.signalName);\n }\n\n return changed;\n }\n\n public reconcileKnownGlobalSignalRegistrations(): boolean {\n if (this.knownGlobalSignalMaps.size === 0) {\n return false;\n }\n\n return this.applyGlobalSignalRegistrations(\n Array.from(this.knownGlobalSignalMaps.values()),\n );\n }\n\n private normalizeIntentMaps(ctx: AnyObject): Array<{\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n deleted?: boolean;\n }> {\n const arrayPayload = this.readArrayPayload(ctx, [\n \"intentToTaskMaps\",\n \"intent_to_task_maps\",\n \"intentToTaskMap\",\n \"intent_to_task_map\",\n ]);\n\n if (arrayPayload.length > 0) {\n return arrayPayload\n .map((m: any) => ({\n intentName: m.intentName ?? m.intent_name,\n serviceName: m.serviceName ?? m.service_name,\n taskName: m.taskName ?? m.task_name,\n taskVersion: m.taskVersion ?? m.task_version ?? 1,\n deleted: !!m.deleted,\n }))\n .filter((m: any) => m.intentName && m.serviceName && m.taskName);\n }\n\n const single =\n (ctx as any).intentToTaskMap ??\n (ctx as any).intent_to_task_map ??\n (ctx as any).data ??\n ((ctx as any).intentName ? ctx : undefined);\n\n if (!single) return [];\n\n const normalized = {\n intentName: single.intentName ?? single.intent_name,\n serviceName: single.serviceName ?? single.service_name,\n taskName: single.taskName ?? single.task_name,\n taskVersion: single.taskVersion ?? single.task_version ?? 1,\n deleted: !!single.deleted,\n };\n\n if (!normalized.intentName || !normalized.serviceName || !normalized.taskName)\n return [];\n\n return [normalized];\n }\n\n private normalizeServiceInstancesFromSync(\n ctx: AnyObject,\n ): ServiceInstanceDescriptor[] {\n const rawTransports = this.readArrayPayload(ctx, [\n \"serviceInstanceTransports\",\n \"service_instance_transports\",\n \"serviceInstanceTransport\",\n \"service_instance_transport\",\n ])\n .map((transport) => normalizeServiceTransportDescriptor(transport))\n .filter(\n (transport): transport is ServiceTransportDescriptor =>\n !!transport && !transport.deleted,\n );\n\n const transportsByInstance = new Map<string, ServiceTransportDescriptor[]>();\n for (const transport of rawTransports) {\n if (!transportsByInstance.has(transport.serviceInstanceId)) {\n transportsByInstance.set(transport.serviceInstanceId, []);\n }\n\n transportsByInstance.get(transport.serviceInstanceId)!.push(transport);\n }\n\n return this.readArrayPayload(ctx, [\n \"serviceInstances\",\n \"service_instances\",\n \"serviceInstance\",\n \"service_instance\",\n ])\n .filter(\n (instance: AnyObject) =>\n !Boolean(\n instance?.deleted ??\n instance?.is_deleted ??\n instance?.data?.deleted ??\n false,\n ),\n )\n .map((instance: AnyObject) =>\n normalizeServiceInstanceDescriptor({\n ...instance,\n transports:\n Array.isArray((instance as any)?.transports) &&\n (instance as any).transports.length > 0\n ? (instance as any).transports\n : transportsByInstance.get(\n String(\n (instance as any)?.uuid ??\n (instance as any)?.serviceInstanceId ??\n (instance as any)?.service_instance_id ??\n \"\",\n ).trim(),\n ) ?? [],\n }),\n )\n .filter(\n (instance: ServiceInstanceDescriptor | null): instance is ServiceInstanceDescriptor =>\n !!instance &&\n !!instance.isActive &&\n !instance.isNonResponsive &&\n !instance.isBlocked,\n );\n }\n\n private shouldReconcileGatheredSyncTransmissions(): boolean {\n return this.serviceName === \"CadenzaDB\";\n }\n\n private collectGatheredSyncTransmissionRecipients(\n ctx: AnyObject,\n ): Set<string> {\n const recipients = new Set<string>();\n const addRecipient = (serviceName: unknown) => {\n const normalizedServiceName = String(serviceName ?? \"\").trim();\n if (\n !normalizedServiceName ||\n normalizedServiceName === this.serviceName\n ) {\n return;\n }\n\n recipients.add(normalizedServiceName);\n };\n\n addRecipient(ctx.serviceName ?? ctx.__serviceName);\n\n for (const instance of this.normalizeServiceInstancesFromSync(ctx)) {\n addRecipient(instance.serviceName);\n }\n\n for (const [serviceName, instances] of this.instances.entries()) {\n if (!instances?.length) {\n continue;\n }\n\n addRecipient(serviceName);\n }\n\n return recipients;\n }\n\n private reconcileGatheredSyncTransmissions(ctx: AnyObject, emit: any): boolean {\n return false;\n }\n\n public seedAuthorityBootstrapRoute(\n origin: string,\n role: ServiceTransportRole = \"internal\",\n ): void {\n const normalizedOrigin = String(origin ?? \"\").trim();\n if (!normalizedOrigin) {\n return;\n }\n\n const routeKey = buildTransportClientKey(\n {\n uuid: `cadenza-db-${role}-bootstrap`,\n role,\n origin: normalizedOrigin,\n },\n \"CadenzaDB\",\n );\n\n this.authorityBootstrapRoute = {\n ...this.authorityBootstrapRoute,\n origin: normalizedOrigin,\n role,\n routeKey,\n fetchId: buildTransportHandleKey(routeKey, \"rest\"),\n };\n }\n\n private noteAuthorityBootstrapHandshake(ctx: AnyObject): boolean {\n if (String(ctx.serviceName ?? \"\").trim() !== \"CadenzaDB\") {\n return false;\n }\n\n const origin = String(\n ctx.serviceOrigin ?? ctx.__transportOrigin ?? \"\",\n ).trim();\n if (origin) {\n this.seedAuthorityBootstrapRoute(\n origin,\n this.isFrontend ? \"public\" : \"internal\",\n );\n }\n\n this.authorityBootstrapRoute = {\n ...this.authorityBootstrapRoute,\n serviceInstanceId: String(ctx.serviceInstanceId ?? \"\").trim() || null,\n serviceTransportId: String(ctx.serviceTransportId ?? \"\").trim() || null,\n handshakeEstablished: true,\n };\n\n return true;\n }\n\n private getAuthorityBootstrapRestTarget(): {\n origin: string;\n routeKey: string;\n fetchId: string;\n serviceInstanceId: string | null;\n serviceTransportId: string | null;\n } | null {\n const origin = String(this.authorityBootstrapRoute.origin ?? \"\").trim();\n const routeKey = String(this.authorityBootstrapRoute.routeKey ?? \"\").trim();\n const fetchId = String(this.authorityBootstrapRoute.fetchId ?? \"\").trim();\n\n if (!origin || !routeKey || !fetchId) {\n return null;\n }\n\n return {\n origin,\n routeKey,\n fetchId,\n serviceInstanceId: this.authorityBootstrapRoute.serviceInstanceId,\n serviceTransportId: this.authorityBootstrapRoute.serviceTransportId,\n };\n }\n\n public hasAuthorityBootstrapHandshakeEstablished(): boolean {\n return this.authorityBootstrapRoute.handshakeEstablished === true;\n }\n\n private invalidateAuthorityBootstrapHandshake(): void {\n this.authorityBootstrapRoute = {\n ...this.authorityBootstrapRoute,\n serviceInstanceId: null,\n serviceTransportId: null,\n handshakeEstablished: false,\n };\n }\n\n private requestAuthorityBootstrapHandshake(\n ctx?: AnyObject,\n ): boolean {\n if (\n !this.connectsToCadenzaDB ||\n !this.serviceName ||\n this.serviceName === \"CadenzaDB\"\n ) {\n return false;\n }\n\n const target = this.getAuthorityBootstrapRestTarget();\n if (!target) {\n return false;\n }\n\n const authorityInstances = this.instances.get(\"CadenzaDB\") ?? [];\n const matchingInstance =\n authorityInstances.find((instance) =>\n instance.transports.some(\n (transport) =>\n transport.role === this.authorityBootstrapRoute.role &&\n transport.origin === target.origin &&\n !transport.deleted,\n ),\n ) ?? null;\n const matchingTransport =\n matchingInstance?.transports.find(\n (transport) =>\n transport.role === this.authorityBootstrapRoute.role &&\n transport.origin === target.origin &&\n !transport.deleted,\n ) ?? null;\n const bootstrapTransportId =\n matchingTransport?.uuid ?? target.serviceTransportId ?? null;\n const communicationTypes =\n this.resolveCommunicationTypesForService(\"CadenzaDB\");\n const handshakeContext = {\n serviceName: \"CadenzaDB\",\n serviceInstanceId:\n matchingInstance?.uuid ?? target.serviceInstanceId ?? \"cadenza-db\",\n serviceTransportId: bootstrapTransportId,\n serviceOrigin: target.origin,\n routeKey: target.routeKey,\n __routeKey: target.routeKey,\n fetchId: target.fetchId,\n __fetchId: target.fetchId,\n socketClientId: this.buildTransportProtocolHandleKey(\n target.routeKey,\n \"socket\",\n ),\n routeGeneration: bootstrapTransportId ?? target.routeKey,\n transportProtocols:\n matchingTransport?.protocols ?? ([\"rest\", \"socket\"] as ServiceTransportProtocol[]),\n communicationTypes,\n transportProtocol: \"rest\",\n __authorityBootstrapChannel: true,\n __reason:\n typeof ctx?.__reason === \"string\" && ctx.__reason.trim().length > 0\n ? ctx.__reason.trim()\n : \"authority_bootstrap_handshake\",\n handshakeData: {\n instanceId: this.serviceInstanceId,\n serviceName: this.serviceName,\n },\n };\n\n if (\n matchingInstance &&\n matchingTransport &&\n this.hasTransportClientCreated(matchingInstance, matchingTransport, \"rest\") &&\n this.authorityBootstrapRoute.handshakeEstablished\n ) {\n return false;\n }\n\n if (\n this.authorityBootstrapRoute.handshakeEstablished ||\n this.authorityBootstrapHandshakeInFlight\n ) {\n return false;\n }\n\n if (matchingInstance && matchingTransport) {\n this.markTransportClientPending(matchingInstance, matchingTransport, \"rest\");\n }\n\n this.authorityBootstrapHandshakeInFlight = true;\n void (async () => {\n const controller =\n typeof AbortController === \"function\" ? new AbortController() : null;\n const timeoutId = controller\n ? setTimeout(\n () => controller.abort(),\n AUTHORITY_BOOTSTRAP_HANDSHAKE_TIMEOUT_MS,\n )\n : null;\n\n try {\n const response = await globalThis.fetch(`${target.origin}/handshake`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(handshakeContext.handshakeData),\n signal: controller?.signal,\n });\n\n if (\"ok\" in response && response.ok === false) {\n throw new Error(\n `Bootstrap authority handshake failed with HTTP ${response.status}`,\n );\n }\n\n const payload =\n typeof response.json === \"function\" ? await response.json() : response;\n const resolvedAuthorityInstanceId = String(\n payload?.__serviceInstanceId ?? \"\",\n ).trim();\n\n if (!resolvedAuthorityInstanceId) {\n throw new Error(\"Bootstrap authority handshake missing service instance id\");\n }\n\n Cadenza.emit(\"meta.fetch.handshake_complete\", {\n ...handshakeContext,\n serviceInstanceId: resolvedAuthorityInstanceId,\n targetServiceInstanceId: resolvedAuthorityInstanceId,\n __status: \"success\",\n });\n\n if (this.serviceInstanceId) {\n for (const communicationType of communicationTypes) {\n Cadenza.emit(\n \"global.meta.fetch.service_communication_established\",\n buildServiceCommunicationEstablishedContext({\n serviceInstanceId: resolvedAuthorityInstanceId,\n serviceInstanceClientId: this.serviceInstanceId,\n communicationType,\n }),\n );\n }\n }\n } catch (error) {\n const failureContext = {\n ...handshakeContext,\n __error: error instanceof Error ? error.message : String(error),\n errored: true,\n };\n Cadenza.emit(`meta.fetch.handshake_failed:${target.fetchId}`, failureContext);\n Cadenza.emit(\"meta.fetch.handshake_failed\", failureContext);\n } finally {\n this.authorityBootstrapHandshakeInFlight = false;\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n })();\n return true;\n }\n\n private async invokeAuthorityBootstrapRoutine(\n remoteRoutineName: string,\n context: AnyObject,\n timeoutMs: number,\n ): Promise<AnyObject> {\n if (typeof globalThis.fetch !== \"function\") {\n return {\n ...context,\n __error: \"Bootstrap authority route requires global fetch\",\n errored: true,\n };\n }\n\n const target = this.getAuthorityBootstrapRestTarget();\n if (!target || !this.authorityBootstrapRoute.handshakeEstablished) {\n return {\n ...context,\n __error:\n \"Authority bootstrap route is not established yet. Waiting for authority handshake.\",\n errored: true,\n };\n }\n\n const controller =\n typeof AbortController === \"function\" ? new AbortController() : null;\n const timeoutId = controller\n ? setTimeout(() => controller.abort(), timeoutMs)\n : null;\n\n try {\n const requestBody = stripDelegationRequestSnapshot(\n ensureDelegationContextMetadata(\n attachDelegationRequestSnapshot({\n ...context,\n __remoteRoutineName: remoteRoutineName,\n __serviceName: \"CadenzaDB\",\n __localServiceName: this.serviceName,\n __timeout: timeoutMs,\n __syncing: true,\n __transportOrigin: target.origin,\n __transportProtocol: \"rest\",\n __transportProtocols: [\"rest\"],\n __routeKey: target.routeKey,\n routeKey: target.routeKey,\n __fetchId: target.fetchId,\n fetchId: target.fetchId,\n __metadata: {\n ...(context.__metadata && typeof context.__metadata === \"object\"\n ? context.__metadata\n : {}),\n __timeout: timeoutMs,\n __syncing: true,\n __authorityBootstrapChannel: true,\n },\n }),\n ),\n );\n\n const response = await globalThis.fetch(`${target.origin}/delegation`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n signal: controller?.signal,\n });\n\n if (\"ok\" in response && response.ok === false) {\n return {\n ...context,\n __error: `Bootstrap authority delegation failed with HTTP ${response.status}`,\n errored: true,\n };\n }\n\n const payload =\n typeof response.json === \"function\" ? await response.json() : response;\n return payload && typeof payload === \"object\"\n ? ({\n ...context,\n ...(payload as AnyObject),\n } as AnyObject)\n : ({\n ...context,\n returnedValue: payload,\n } as AnyObject);\n } catch (error) {\n return {\n ...context,\n __error: error instanceof Error ? error.message : String(error),\n errored: true,\n };\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n }\n\n private registerRemoteIntentDeputy(map: {\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n timeout?: number;\n }) {\n if (!this.serviceName || map.serviceName === this.serviceName) {\n return;\n }\n\n const key = this.buildRemoteIntentDeputyKey(map);\n if (this.remoteIntentDeputiesByKey.has(key)) {\n return;\n }\n\n const deputyTaskName = `Inquire ${map.intentName} via ${map.serviceName} (${map.taskName} v${map.taskVersion})`;\n\n const deputyTask =\n map.serviceName === \"CadenzaDB\" && isAuthorityBootstrapIntent(map.intentName)\n ? Cadenza.createMetaTask(\n deputyTaskName,\n async (ctx) =>\n this.invokeAuthorityBootstrapRoutine(\n map.taskName,\n ctx,\n map.timeout ?? 15_000,\n ),\n \"Routes reserved authority bootstrap inquiries directly through the post-handshake authority control-plane channel.\",\n {\n register: false,\n isHidden: true,\n },\n )\n : isMetaIntentName(map.intentName)\n ? Cadenza.createMetaDeputyTask(map.taskName, map.serviceName, {\n register: false,\n isHidden: true,\n timeout: map.timeout,\n retryCount: 1,\n retryDelay: 50,\n retryDelayFactor: 1.2,\n })\n : Cadenza.createDeputyTask(map.taskName, map.serviceName, {\n register: false,\n isHidden: true,\n timeout: map.timeout,\n retryCount: 1,\n retryDelay: 50,\n retryDelayFactor: 1.2,\n });\n\n deputyTask.respondsTo(map.intentName);\n\n if (!this.remoteIntents.has(map.serviceName)) {\n this.remoteIntents.set(map.serviceName, new Set());\n }\n this.remoteIntents.get(map.serviceName)!.add(map.intentName);\n\n const descriptor: RemoteIntentDeputyDescriptor = {\n key,\n intentName: map.intentName,\n serviceName: map.serviceName,\n remoteTaskName: map.taskName,\n remoteTaskVersion: map.taskVersion,\n localTaskName: deputyTask.name || deputyTaskName,\n localTask: deputyTask,\n };\n\n this.remoteIntentDeputiesByKey.set(key, descriptor);\n this.remoteIntentDeputiesByTask.set(deputyTask, descriptor);\n\n if (shouldTraceServiceRegistry(this.serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] register_remote_intent_deputy\", {\n localServiceName: this.serviceName,\n intentName: map.intentName,\n remoteServiceName: map.serviceName,\n remoteTaskName: map.taskName,\n remoteTaskVersion: map.taskVersion,\n });\n }\n }\n\n private unregisterRemoteIntentDeputy(map: {\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion?: number;\n }) {\n const key = this.buildRemoteIntentDeputyKey(map);\n const descriptor = this.remoteIntentDeputiesByKey.get(key);\n if (!descriptor) {\n return;\n }\n\n const task = descriptor.localTask;\n if (task) {\n Cadenza.inquiryBroker.unsubscribe(descriptor.intentName, task);\n task.destroy();\n }\n\n this.remoteIntentDeputiesByTask.delete(descriptor.localTask);\n this.remoteIntentDeputiesByKey.delete(key);\n\n this.remoteIntents.get(descriptor.serviceName)?.delete(descriptor.intentName);\n if (!this.remoteIntents.get(descriptor.serviceName)?.size) {\n this.remoteIntents.delete(descriptor.serviceName);\n }\n\n const deputies = this.deputies.get(descriptor.serviceName);\n if (deputies) {\n this.deputies.set(\n descriptor.serviceName,\n deputies.filter((d) => d.localTaskName !== descriptor.localTaskName),\n );\n\n if (this.deputies.get(descriptor.serviceName)?.length === 0) {\n this.deputies.delete(descriptor.serviceName);\n }\n }\n }\n\n public ensureAuthorityFullSyncResponderTask(): Task | null {\n if (this.serviceName !== \"CadenzaDB\") {\n return null;\n }\n\n if (this.authorityFullSyncResponderTask) {\n return this.authorityFullSyncResponderTask;\n }\n\n const authorityFullSyncResponderTask = Cadenza.createMetaTask(\n BOOTSTRAP_FULL_SYNC_RESPONDER_TASK_NAME,\n async (ctx) => {\n const [\n serviceInstances,\n serviceInstanceTransports,\n serviceManifests,\n ] = await Promise.all([\n DatabaseController.instance.queryAuthorityTableRows(\"service_instance\"),\n DatabaseController.instance.queryAuthorityTableRows(\n \"service_instance_transport\",\n ),\n DatabaseController.instance.queryAuthorityTableRows(\"service_manifest\"),\n ]);\n\n return {\n ...ctx,\n __syncing: true,\n ...this.collectBootstrapFullSyncPayload({\n serviceInstances,\n serviceInstanceTransports,\n serviceManifests,\n }),\n };\n },\n \"Responds to bootstrap service-registry full sync with one authority-local control-plane query that returns a complete merged payload.\",\n {\n register: true,\n isHidden: false,\n },\n ).respondsTo(META_SERVICE_REGISTRY_FULL_SYNC_INTENT);\n\n this.authorityFullSyncResponderTask = authorityFullSyncResponderTask;\n return authorityFullSyncResponderTask;\n }\n\n public ensureAuthorityServiceCommunicationPersistenceTask(): Task | null {\n if (this.serviceName !== \"CadenzaDB\") {\n return null;\n }\n\n if (this.authorityServiceCommunicationPersistenceTask) {\n return this.authorityServiceCommunicationPersistenceTask;\n }\n\n const retrySignal = META_SERVICE_COMMUNICATION_PERSIST_RETRY_SIGNAL;\n const processTask = Cadenza.createMetaTask(\n \"Process authority service communication persistence\",\n async (ctx) => {\n const descriptor = resolveServiceCommunicationPersistenceDescriptor(ctx);\n if (!descriptor) {\n return false;\n }\n\n const scheduleRetry = (reason: string, error?: unknown) => {\n const delayMs =\n SERVICE_COMMUNICATION_PERSIST_RETRY_DELAYS_MS[descriptor.retryAttempt];\n const nextAttempt = descriptor.retryAttempt + 1;\n if (delayMs !== undefined) {\n Cadenza.schedule(\n retrySignal,\n buildServiceCommunicationRetryContext({\n ...descriptor,\n retryAttempt: nextAttempt,\n }),\n delayMs,\n );\n return false;\n }\n\n Cadenza.log(\n \"Authority service communication persistence skipped after bounded retries\",\n {\n reason,\n error:\n error instanceof Error\n ? error.message\n : error !== undefined\n ? String(error)\n : undefined,\n serviceInstanceId: descriptor.serviceInstanceId,\n serviceInstanceClientId: descriptor.serviceInstanceClientId,\n communicationType: descriptor.communicationType,\n retryAttempt: descriptor.retryAttempt,\n },\n \"warning\",\n );\n return false;\n };\n\n try {\n const [serviceRows, clientRows] = await Promise.all([\n DatabaseController.instance.queryAuthorityTableRows(\"service_instance\", {\n fields: [\"uuid\"],\n filter: {\n uuid: descriptor.serviceInstanceId,\n },\n }),\n DatabaseController.instance.queryAuthorityTableRows(\"service_instance\", {\n fields: [\"uuid\"],\n filter: {\n uuid: descriptor.serviceInstanceClientId,\n },\n }),\n ]);\n\n if (!serviceRows.length || !clientRows.length) {\n return scheduleRetry(\"missing_service_instance_rows\");\n }\n\n const insertResult = await DatabaseController.instance.persistAuthorityInsert(\n \"service_to_service_communication_map\",\n buildServiceCommunicationEstablishedContext(descriptor),\n );\n\n if (insertResult?.errored) {\n return scheduleRetry(\n \"authority_insert_failed\",\n insertResult.__error ?? insertResult.error,\n );\n }\n\n return {\n ...ctx,\n ...insertResult,\n };\n } catch (error) {\n return scheduleRetry(\"authority_query_failed\", error);\n }\n },\n \"Persists service communication edges on authority only after both referenced service instances exist locally.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n Cadenza.createMetaTask(\n \"Retry authority service communication persistence\",\n (ctx) => ctx,\n \"Re-enters bounded local retries for authority service communication persistence.\",\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(retrySignal)\n .then(processTask);\n\n const authorityServiceCommunicationPersistenceTask = Cadenza.createMetaTask(\n \"Handle service communication established\",\n (ctx) => ctx,\n \"Registers persisted service-to-service communication edges only on authority after parent instance rows exist.\",\n {\n register: true,\n isHidden: false,\n },\n )\n .doOn(\"global.meta.fetch.service_communication_established\")\n .then(processTask);\n\n this.authorityServiceCommunicationPersistenceTask =\n authorityServiceCommunicationPersistenceTask;\n return authorityServiceCommunicationPersistenceTask;\n }\n\n private registerBootstrapFullSyncDeputies(\n emit: (signal: string, ctx: AnyObject) => void,\n ctx?: AnyObject,\n ): boolean {\n return this.ensureBootstrapAuthorityControlPlane(ctx, emit, [\n META_SERVICE_REGISTRY_FULL_SYNC_INTENT,\n ]);\n }\n\n public ensureBootstrapAuthorityControlPlaneForInquiry(\n intentName: string,\n ctx?: AnyObject,\n ): boolean {\n return this.ensureBootstrapAuthorityControlPlane(ctx, undefined, [intentName]);\n }\n\n private ensureBootstrapAuthorityControlPlane(\n ctx?: AnyObject,\n emit?: (signal: string, ctx: AnyObject) => void,\n intentNames?: string[],\n ): boolean {\n if (\n !this.connectsToCadenzaDB ||\n !this.serviceName ||\n this.serviceName === \"CadenzaDB\"\n ) {\n return false;\n }\n\n const normalizedIntentNames =\n Array.isArray(intentNames) && intentNames.length > 0\n ? Array.from(\n new Set(\n intentNames\n .map((intentName) => String(intentName ?? \"\").trim())\n .filter(Boolean),\n ),\n )\n : AUTHORITY_BOOTSTRAP_INTENT_SPECS.map((spec) => spec.intentName);\n\n let changed = false;\n for (const intentName of normalizedIntentNames) {\n const spec = getAuthorityBootstrapIntentSpec(intentName);\n if (!spec) {\n continue;\n }\n\n Cadenza.inquiryBroker.addIntent({\n name: spec.intentName,\n });\n\n const deputyKey = this.buildRemoteIntentDeputyKey({\n intentName: spec.intentName,\n serviceName: \"CadenzaDB\",\n taskName: spec.authorityTaskName,\n taskVersion: 1,\n });\n const existed = this.remoteIntentDeputiesByKey.has(deputyKey);\n\n this.registerRemoteIntentDeputy({\n intentName: spec.intentName,\n serviceName: \"CadenzaDB\",\n taskName: spec.authorityTaskName,\n taskVersion: 1,\n timeout: spec.defaultTimeoutMs,\n });\n\n if (!existed && this.remoteIntentDeputiesByKey.has(deputyKey)) {\n changed = true;\n }\n }\n\n this.requestAuthorityBootstrapHandshake(ctx);\n return changed;\n }\n\n private hasBootstrapFullSyncDeputies(): boolean {\n if (!this.serviceName || this.serviceName === \"CadenzaDB\") {\n return true;\n }\n\n return this.remoteIntentDeputiesByKey.has(\n this.buildRemoteIntentDeputyKey({\n intentName: META_SERVICE_REGISTRY_FULL_SYNC_INTENT,\n serviceName: \"CadenzaDB\",\n taskName: BOOTSTRAP_FULL_SYNC_RESPONDER_TASK_NAME,\n taskVersion: 1,\n }),\n );\n }\n\n private ensureAuthorityBootstrapSignalTransmissions(): boolean {\n if (this.serviceName !== \"CadenzaDB\") {\n return false;\n }\n\n let changed = false;\n\n for (const [serviceName, instances] of this.instances.entries()) {\n if (!serviceName || serviceName === this.serviceName || !instances?.length) {\n continue;\n }\n\n const hasLiveInstance = instances.some(\n (instance) =>\n (instance as AnyObject).deleted !== true && instance.isActive !== false,\n );\n if (!hasLiveInstance) {\n continue;\n }\n\n if (!this.remoteSignals.has(serviceName)) {\n this.remoteSignals.set(serviceName, new Set());\n }\n\n const registeredSignals = this.remoteSignals.get(serviceName)!;\n\n for (const signalName of AUTHORITY_BOOTSTRAP_SIGNAL_NAMES) {\n if (registeredSignals.has(signalName)) {\n continue;\n }\n\n Cadenza.createSignalTransmissionTask(signalName, serviceName, {\n register: true,\n isHidden: true,\n });\n registeredSignals.add(signalName);\n changed = true;\n }\n }\n\n return changed;\n }\n\n private clearBootstrapFullSyncRetryTimer(): void {\n if (this.bootstrapFullSyncRetryTimer) {\n clearTimeout(this.bootstrapFullSyncRetryTimer);\n this.bootstrapFullSyncRetryTimer = null;\n }\n }\n\n private invalidateBootstrapFullSyncRetryState(reason?: string): void {\n this.bootstrapFullSyncRetryGeneration += 1;\n this.clearBootstrapFullSyncRetryTimer();\n this.bootstrapFullSyncRetryIndex = 0;\n this.bootstrapFullSyncSatisfied = false;\n if (typeof reason === \"string\" && reason.trim()) {\n this.bootstrapFullSyncRetryReason = reason.trim();\n }\n }\n\n private markBootstrapFullSyncSatisfied(): void {\n this.bootstrapFullSyncSatisfied = true;\n this.bootstrapFullSyncRetryIndex = EARLY_FULL_SYNC_DELAYS_MS.length;\n this.clearBootstrapFullSyncRetryTimer();\n }\n\n private hasHealthyBootstrapFullSyncResult({\n serviceInstances,\n intentToTaskMaps,\n }: {\n serviceInstances: ServiceInstanceDescriptor[];\n intentToTaskMaps: Array<{\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n deleted?: boolean;\n }>;\n }): boolean {\n return (\n this.bootstrapFullSyncRetryIndex >= MIN_BOOTSTRAP_FULL_SYNC_ATTEMPTS &&\n serviceInstances.length > 0 &&\n intentToTaskMaps.length > 0\n );\n }\n\n private scheduleNextBootstrapFullSyncRetry(reason?: string): boolean {\n if (\n !this.connectsToCadenzaDB ||\n !this.serviceName ||\n this.serviceName === \"CadenzaDB\"\n ) {\n return false;\n }\n\n if (!this.hasBootstrapFullSyncDeputies()) {\n return false;\n }\n\n if (typeof reason === \"string\" && reason.trim()) {\n this.bootstrapFullSyncRetryReason = reason.trim();\n }\n\n if (this.bootstrapFullSyncSatisfied || this.bootstrapFullSyncRetryTimer) {\n return false;\n }\n\n if (this.bootstrapFullSyncRetryIndex >= EARLY_FULL_SYNC_DELAYS_MS.length) {\n return false;\n }\n\n const retryGeneration = this.bootstrapFullSyncRetryGeneration;\n const retryReason =\n this.bootstrapFullSyncRetryReason ?? \"service_registry_bootstrap_retry\";\n const delayMs = EARLY_FULL_SYNC_DELAYS_MS[this.bootstrapFullSyncRetryIndex];\n const attempt = this.bootstrapFullSyncRetryIndex + 1;\n this.bootstrapFullSyncRetryIndex += 1;\n\n this.bootstrapFullSyncRetryTimer = setTimeout(() => {\n this.bootstrapFullSyncRetryTimer = null;\n\n if (\n this.bootstrapFullSyncSatisfied ||\n retryGeneration !== this.bootstrapFullSyncRetryGeneration\n ) {\n return;\n }\n\n Cadenza.emit(\"meta.sync_requested\", {\n __syncing: false,\n __reason: retryReason,\n __bootstrapFullSync: true,\n __bootstrapFullSyncAttempt: attempt,\n });\n }, delayMs);\n\n return true;\n }\n\n private restartBootstrapFullSyncRetryChain(reason: string): boolean {\n this.invalidateBootstrapFullSyncRetryState(reason);\n return this.scheduleNextBootstrapFullSyncRetry(reason);\n }\n\n public bootstrapFullSync(\n emit: (signal: string, ctx: AnyObject) => void,\n ctx?: AnyObject,\n reason = \"local_instance_inserted\",\n ): boolean {\n this.ensureBootstrapAuthorityControlPlane(ctx, emit);\n return this.restartBootstrapFullSyncRetryChain(reason);\n }\n\n public getInquiryResponderDescriptor(task: Task): InquiryResponderDescriptor {\n const remote = this.remoteIntentDeputiesByTask.get(task);\n\n if (remote) {\n return {\n isRemote: true,\n serviceName: remote.serviceName,\n taskName: remote.remoteTaskName,\n taskVersion: remote.remoteTaskVersion,\n localTaskName: remote.localTaskName,\n };\n }\n\n return {\n isRemote: false,\n serviceName: this.serviceName ?? \"UnknownService\",\n taskName: task.name,\n taskVersion: task.version,\n localTaskName: task.name,\n };\n }\n\n private getInstance(serviceName: string, instanceId: string) {\n return this.instances\n .get(serviceName)\n ?.find((instance) => instance.uuid === instanceId);\n }\n\n private getLocalInstance() {\n if (!this.serviceName || !this.serviceInstanceId) {\n return undefined;\n }\n\n const existing = this.getInstance(this.serviceName, this.serviceInstanceId);\n if (existing) {\n return existing;\n }\n\n if (\n this.localInstanceSeed &&\n this.localInstanceSeed.serviceName === this.serviceName &&\n this.localInstanceSeed.uuid === this.serviceInstanceId\n ) {\n return this.seedLocalInstance(this.localInstanceSeed, {\n markTransportsReady: true,\n }) ?? undefined;\n }\n\n return undefined;\n }\n\n hasLocalInstanceRegistered() {\n return Boolean(this.getLocalInstance());\n }\n\n public seedLocalInstance(\n value: unknown,\n options: {\n markTransportsReady?: boolean;\n } = {},\n ): ServiceInstanceDescriptor | null {\n const normalized = normalizeServiceInstanceDescriptor(value);\n if (!normalized) {\n return null;\n }\n\n if (!this.instances.has(normalized.serviceName)) {\n this.instances.set(normalized.serviceName, []);\n }\n\n const instances = this.instances.get(normalized.serviceName)!;\n const existingIndex = instances.findIndex(\n (instance) => instance.uuid === normalized.uuid,\n );\n const existing = existingIndex >= 0 ? instances[existingIndex] : null;\n const seeded: ServiceInstanceDescriptor = existing\n ? {\n ...existing,\n ...normalized,\n transports:\n normalized.transports.length > 0\n ? normalized.transports\n : existing.transports,\n clientCreatedTransportIds: existing.clientCreatedTransportIds ?? [],\n clientPendingTransportIds: existing.clientPendingTransportIds ?? [],\n clientReadyTransportIds: existing.clientReadyTransportIds ?? [],\n }\n : {\n ...normalized,\n clientCreatedTransportIds: [],\n clientPendingTransportIds: [],\n clientReadyTransportIds: [],\n };\n\n if (options.markTransportsReady) {\n for (const transport of seeded.transports) {\n this.markTransportClientReady(seeded, transport);\n }\n }\n\n if (existingIndex >= 0) {\n instances[existingIndex] = seeded;\n } else {\n instances.push(seeded);\n }\n\n if (normalized.uuid === this.serviceInstanceId) {\n this.localInstanceSeed = {\n ...seeded,\n transports: seeded.transports.map((transport) => ({ ...transport })),\n clientCreatedTransportIds: [...(seeded.clientCreatedTransportIds ?? [])],\n clientPendingTransportIds: [...(seeded.clientPendingTransportIds ?? [])],\n clientReadyTransportIds: [...(seeded.clientReadyTransportIds ?? [])],\n };\n this.lastHeartbeatAtByInstance.set(normalized.uuid, Date.now());\n this.missedHeartbeatsByInstance.set(normalized.uuid, 0);\n this.runtimeStatusFallbackInFlightByInstance.delete(normalized.uuid);\n }\n\n return seeded;\n }\n\n private summarizeTransportForDebug(\n transport: ServiceTransportDescriptor | undefined,\n ) {\n if (!transport) {\n return undefined;\n }\n\n return {\n uuid: transport.uuid,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols,\n clientCreated: transport.clientCreated,\n };\n }\n\n private summarizeInstanceForRuntimeStatusFallback(\n instance: ServiceInstanceDescriptor | undefined,\n ): RuntimeStatusFallbackFailureDiagnostics[\"instance\"] {\n return {\n exists: Boolean(instance),\n runtimeState: instance?.runtimeState,\n acceptingWork: instance?.acceptingWork,\n reportedAt: instance?.reportedAt ?? null,\n isDatabase: instance?.isDatabase,\n isFrontend: instance?.isFrontend,\n isBootstrapPlaceholder: instance?.isBootstrapPlaceholder,\n transports: (instance?.transports ?? []).map((transport) => ({\n uuid: transport.uuid,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols,\n clientCreated: transport.clientCreated,\n })),\n };\n }\n\n private summarizeRuntimeStatusInquiryReports(inquiryResult: AnyObject) {\n const reports = Array.isArray(inquiryResult.runtimeStatusReports)\n ? inquiryResult.runtimeStatusReports\n : [];\n\n return reports.map((candidate) => {\n const normalized = this.normalizeRuntimeStatusReport(candidate);\n if (normalized) {\n return {\n serviceName: normalized.serviceName,\n serviceInstanceId: normalized.serviceInstanceId,\n transportId: normalized.transportId,\n state: normalized.state,\n acceptingWork: normalized.acceptingWork,\n reportedAt: normalized.reportedAt,\n };\n }\n\n const raw =\n candidate && typeof candidate === \"object\"\n ? (candidate as Record<string, unknown>)\n : {};\n const rawState: RuntimeStatusState | undefined =\n raw.state === \"healthy\" ||\n raw.state === \"degraded\" ||\n raw.state === \"overloaded\" ||\n raw.state === \"unavailable\"\n ? raw.state\n : undefined;\n\n return {\n serviceName:\n typeof raw.serviceName === \"string\"\n ? raw.serviceName\n : typeof raw.__serviceName === \"string\"\n ? raw.__serviceName\n : undefined,\n serviceInstanceId:\n typeof raw.serviceInstanceId === \"string\"\n ? raw.serviceInstanceId\n : typeof raw.__serviceInstanceId === \"string\"\n ? raw.__serviceInstanceId\n : undefined,\n transportId:\n typeof raw.transportId === \"string\"\n ? raw.transportId\n : typeof raw.serviceTransportId === \"string\"\n ? raw.serviceTransportId\n : undefined,\n state: rawState,\n acceptingWork:\n typeof raw.acceptingWork === \"boolean\" ? raw.acceptingWork : undefined,\n reportedAt:\n typeof raw.reportedAt === \"string\" ? raw.reportedAt : undefined,\n };\n });\n }\n\n private createRuntimeStatusFallbackError(\n message: string,\n diagnostics: RuntimeStatusFallbackFailureDiagnostics,\n ): Error & { runtimeStatusFallback: RuntimeStatusFallbackFailureDiagnostics } {\n return Object.assign(new Error(message), {\n runtimeStatusFallback: diagnostics,\n });\n }\n\n public resolveLocalStatusCheck(ctx: AnyObject = {}) {\n if (!this.serviceName) {\n return {\n __status: \"error\",\n __error: \"No service name defined\",\n errored: true,\n };\n }\n\n if (!this.serviceInstanceId) {\n return {\n __status: \"error\",\n __error: \"No service instance id defined\",\n errored: true,\n };\n }\n\n const report = this.buildLocalRuntimeStatusReport(\"full\");\n if (!report) {\n return {\n ...ctx,\n __status: \"error\",\n __error: \"No local service instance available for status check\",\n errored: true,\n };\n }\n\n return {\n ...ctx,\n __status: \"ok\",\n __serviceName: report.serviceName,\n __serviceInstanceId: report.serviceInstanceId,\n __numberOfRunningGraphs: report.numberOfRunningGraphs,\n __health: report.health ?? {},\n __active: report.isActive,\n cpuUsage: report.cpuUsage ?? null,\n memoryUsage: report.memoryUsage ?? null,\n eventLoopLag: report.eventLoopLag ?? null,\n reportedAt: report.reportedAt,\n serviceName: report.serviceName,\n serviceInstanceId: report.serviceInstanceId,\n numberOfRunningGraphs: report.numberOfRunningGraphs,\n health: report.health ?? {},\n isActive: report.isActive,\n isNonResponsive: report.isNonResponsive,\n isBlocked: report.isBlocked,\n state: report.state,\n acceptingWork: report.acceptingWork,\n };\n }\n\n private resolveTransportProtocolOrder(\n ctx: AnyObject,\n ): ServiceTransportProtocol[] {\n const explicit =\n ctx.__preferredTransportProtocol === \"rest\" ||\n ctx.__preferredTransportProtocol === \"socket\"\n ? ctx.__preferredTransportProtocol\n : undefined;\n\n const preferred = explicit ?? (this.useSocket ? \"socket\" : \"rest\");\n const fallback = preferred === \"socket\" ? \"rest\" : \"socket\";\n\n return [preferred, fallback];\n }\n\n private selectTransportForInstance(\n instance: ServiceInstanceDescriptor,\n ctx: AnyObject,\n role: ServiceTransportRole = this.getRoutingTransportRole(),\n ): ServiceTransportDescriptor | undefined {\n for (const protocol of this.resolveTransportProtocolOrder(ctx)) {\n const transport = this.getRouteableTransport(instance, protocol, role);\n if (transport) {\n return transport;\n }\n }\n\n return undefined;\n }\n\n private selectReadyTransportForInstance(\n instance: ServiceInstanceDescriptor,\n ctx: AnyObject,\n role: ServiceTransportRole = this.getRoutingTransportRole(),\n ): ServiceTransportDescriptor | undefined {\n for (const protocol of this.resolveTransportProtocolOrder(ctx)) {\n const candidates = instance.transports\n .filter(\n (transport) =>\n !transport.deleted &&\n transport.role === role &&\n transportSupportsProtocol(transport, protocol),\n )\n .sort((left, right) => {\n const leftIsBootstrap = left.uuid.endsWith(\"-bootstrap\") ? 1 : 0;\n const rightIsBootstrap = right.uuid.endsWith(\"-bootstrap\") ? 1 : 0;\n if (leftIsBootstrap !== rightIsBootstrap) {\n return leftIsBootstrap - rightIsBootstrap;\n }\n\n return left.origin.localeCompare(right.origin);\n });\n\n for (const transport of candidates) {\n if (this.hasTransportClientReady(instance, transport, protocol)) {\n return transport;\n }\n }\n }\n\n return undefined;\n }\n\n private getRoutingTransportRole(): ServiceTransportRole {\n return this.isFrontend ? \"public\" : \"internal\";\n }\n\n private getPreferredRoutingProtocol(\n ctx: AnyObject,\n ): ServiceTransportProtocol {\n return this.resolveTransportProtocolOrder(ctx)[0] ?? \"rest\";\n }\n\n private buildRoutingCooldownKey(\n serviceName: string,\n role: ServiceTransportRole,\n protocol: ServiceTransportProtocol,\n ): string {\n return `${serviceName}|${role}|${protocol}`;\n }\n\n private getActiveRoutingCooldown(\n serviceName: string,\n role: ServiceTransportRole,\n protocol: ServiceTransportProtocol,\n ): RoutingCooldownState | null {\n const key = this.buildRoutingCooldownKey(serviceName, role, protocol);\n const state = this.routingCooldownsByKey.get(key);\n if (!state) {\n return null;\n }\n\n const now = Date.now();\n if (\n state.cooldownUntil <= now &&\n now - state.lastFailureAt > this.noRouteCooldownWindowMs\n ) {\n this.routingCooldownsByKey.delete(key);\n return null;\n }\n\n if (state.cooldownUntil <= now) {\n return null;\n }\n\n return state;\n }\n\n private recordRoutingFailure(\n serviceName: string,\n role: ServiceTransportRole,\n protocol: ServiceTransportProtocol,\n reason: string,\n ): RoutingCooldownState {\n const key = this.buildRoutingCooldownKey(serviceName, role, protocol);\n const now = Date.now();\n const previous = this.routingCooldownsByKey.get(key);\n const withinWindow =\n previous && now - previous.lastFailureAt <= this.noRouteCooldownWindowMs;\n const failureCount = withinWindow ? previous.failureCount + 1 : 1;\n const cooldownUntil =\n failureCount >= this.noRouteCooldownFailureThreshold\n ? now + this.noRouteCooldownMs\n : 0;\n\n const nextState: RoutingCooldownState = {\n serviceName,\n role,\n protocol,\n failureCount,\n lastFailureAt: now,\n cooldownUntil,\n reason,\n };\n\n if (cooldownUntil > now) {\n this.routingCooldownsByKey.set(key, nextState);\n } else {\n this.routingCooldownsByKey.set(key, nextState);\n }\n\n return nextState;\n }\n\n private clearRoutingCooldown(\n serviceName: string,\n role: ServiceTransportRole,\n protocol: ServiceTransportProtocol,\n ): void {\n this.routingCooldownsByKey.delete(\n this.buildRoutingCooldownKey(serviceName, role, protocol),\n );\n }\n\n private hasRouteableInstanceForRouting(\n serviceName: string,\n role: ServiceTransportRole,\n protocol: ServiceTransportProtocol,\n ): boolean {\n const routingContext: AnyObject = {\n __transportProtocol: protocol,\n };\n\n return (this.instances.get(serviceName) ?? []).some((instance) => {\n if (!instance.isActive || instance.isNonResponsive || instance.isBlocked) {\n return false;\n }\n\n if (instance.isFrontend) {\n return role === \"public\";\n }\n\n return Boolean(\n this.selectReadyTransportForInstance(instance, routingContext, role),\n );\n });\n }\n\n private refreshRoutingCooldownsForService(serviceName: string): void {\n if (!serviceName) {\n return;\n }\n\n for (const [key, state] of this.routingCooldownsByKey.entries()) {\n if (state.serviceName !== serviceName) {\n continue;\n }\n\n if (\n this.hasRouteableInstanceForRouting(\n serviceName,\n state.role,\n state.protocol,\n )\n ) {\n this.routingCooldownsByKey.delete(key);\n }\n }\n }\n\n private buildTransportFailureKey(\n serviceInstanceId: string,\n transportId: string,\n ): string {\n return `${serviceInstanceId}|${transportId}`;\n }\n\n private clearTransportFailureState(\n serviceInstanceId: string,\n transportId: string,\n ): void {\n if (!serviceInstanceId || !transportId) {\n return;\n }\n\n this.transportFailuresByKey.delete(\n this.buildTransportFailureKey(serviceInstanceId, transportId),\n );\n }\n\n private classifyTransportFailureKind(message: string): string | null {\n const normalized = message.toLowerCase();\n if (\n normalized.includes(\"enotfound\") ||\n normalized.includes(\"econnrefused\") ||\n normalized.includes(\"ehostunreach\") ||\n normalized.includes(\"network error\")\n ) {\n return \"hard-network\";\n }\n\n if (\n normalized.includes(\"aborterror\") ||\n normalized.includes(\"timed out\") ||\n normalized.includes(\"timeout\")\n ) {\n return \"timeout\";\n }\n\n return null;\n }\n\n private getTransportFailureThreshold(errorKind: string): number {\n return errorKind === \"hard-network\" ? 1 : this.transportFailureThreshold;\n }\n\n private recordTransportFailure(\n serviceName: string,\n serviceInstanceId: string,\n transportId: string,\n errorKind: string,\n ): TransportFailureState {\n const key = this.buildTransportFailureKey(serviceInstanceId, transportId);\n const now = Date.now();\n const previous = this.transportFailuresByKey.get(key);\n const withinWindow =\n previous && now - previous.lastFailureAt <= this.transportFailureWindowMs;\n const failureCount = withinWindow ? previous.failureCount + 1 : 1;\n const state: TransportFailureState = {\n serviceName,\n serviceInstanceId,\n transportId,\n failureCount,\n lastFailureAt: now,\n lastErrorKind: errorKind,\n };\n\n this.transportFailuresByKey.set(key, state);\n return state;\n }\n\n private findInstanceByTransportId(\n serviceName: string,\n transportId: string,\n ): ServiceInstanceDescriptor | undefined {\n return (this.instances.get(serviceName) ?? []).find((candidate) =>\n candidate.transports.some((transport) => transport.uuid === transportId),\n );\n }\n\n private resolveRouteRecordFromContext(\n ctx: AnyObject,\n ): RemoteRouteRecord | undefined {\n const explicitRouteKey =\n String(ctx.routeKey ?? \"\").trim() ||\n parseTransportHandleKey(ctx.fetchId ?? ctx.__fetchId)?.routeKey ||\n \"\";\n if (explicitRouteKey) {\n return this.remoteRoutesByKey.get(explicitRouteKey);\n }\n\n const serviceName = String(\n ctx.serviceName ?? ctx.__serviceName ?? \"\",\n ).trim();\n const transportId = String(\n ctx.serviceTransportId ?? ctx.__transportId ?? \"\",\n ).trim();\n\n if (serviceName && transportId) {\n return this.findRemoteRouteRecordByTransportId(serviceName, transportId);\n }\n\n return undefined;\n }\n\n private isCurrentRouteContext(ctx: AnyObject): boolean {\n const route = this.resolveRouteRecordFromContext(ctx);\n if (!route) {\n return true;\n }\n\n const serviceInstanceId = String(\n ctx.serviceInstanceId ?? ctx.__instance ?? \"\",\n ).trim();\n const serviceTransportId = String(\n ctx.serviceTransportId ?? ctx.__transportId ?? \"\",\n ).trim();\n\n if (\n serviceInstanceId &&\n route.serviceInstanceId &&\n route.serviceInstanceId !== serviceInstanceId\n ) {\n return false;\n }\n\n if (\n serviceTransportId &&\n route.serviceTransportId &&\n route.serviceTransportId !== serviceTransportId\n ) {\n return false;\n }\n\n return true;\n }\n\n private maybeDemoteFailedTransport(\n context: AnyObject,\n emit: (signal: string, ctx: AnyObject) => void,\n preferredRole: ServiceTransportRole,\n preferredProtocol: ServiceTransportProtocol,\n ): void {\n const fullSignalName = String(\n context.__signalEmission?.fullSignalName ?? context.__signalName ?? \"\",\n ).trim();\n if (\n !fullSignalName.includes(\"meta.fetch.delegate_failed\") &&\n !fullSignalName.includes(\"meta.socket_client.delegate_failed\") &&\n !fullSignalName.includes(\"meta.fetch.signal_transmission_failed\") &&\n !fullSignalName.includes(\"meta.socket_client.signal_transmission_failed\") &&\n !fullSignalName.includes(\"meta.service_registry.socket_failed\")\n ) {\n return;\n }\n\n const serviceName = String(context.__serviceName ?? \"\").trim();\n const transportId = String(context.__transportId ?? \"\").trim();\n const instanceId = String(context.__instance ?? \"\").trim();\n const errorMessage = String(\n context.__error ?? context.error ?? context.returnedValue?.__error ?? \"\",\n ).trim();\n\n if (!serviceName || !transportId) {\n return;\n }\n\n const errorKind = this.classifyTransportFailureKind(errorMessage);\n if (!errorKind) {\n return;\n }\n\n if (!this.isCurrentRouteContext(context)) {\n return;\n }\n\n const instance =\n this.getInstance(serviceName, instanceId) ??\n this.findInstanceByTransportId(serviceName, transportId);\n if (!instance) {\n return;\n }\n\n const failureState = this.recordTransportFailure(\n serviceName,\n instance.uuid,\n transportId,\n errorKind,\n );\n if (failureState.failureCount < this.getTransportFailureThreshold(errorKind)) {\n return;\n }\n\n const transport = this.getTransportById(instance, transportId);\n if (!transport) {\n return;\n }\n\n this.clearTransportClientState(instance, transport, preferredProtocol);\n\n const hasAlternativeRoute = Boolean(\n this.selectReadyTransportForInstance(\n instance,\n { __transportProtocol: preferredProtocol },\n preferredRole,\n ),\n );\n\n if (!hasAlternativeRoute) {\n emit(\"meta.service_registry.runtime_status_unreachable\", {\n serviceName,\n serviceInstanceId: instance.uuid,\n serviceTransportId: transportId,\n serviceOrigin: transport?.origin,\n __error: errorMessage,\n });\n this.recordRoutingFailure(\n serviceName,\n preferredRole,\n preferredProtocol,\n \"transport_failure_demoted\",\n );\n }\n }\n\n private getTransportById(\n instance: ServiceInstanceDescriptor,\n transportId: string,\n ): ServiceTransportDescriptor | undefined {\n return instance.transports.find((transport) => transport.uuid === transportId);\n }\n\n private getRouteableTransport(\n instance: ServiceInstanceDescriptor,\n protocol?: ServiceTransportProtocol,\n role: ServiceTransportRole = this.getRoutingTransportRole(),\n ): ServiceTransportDescriptor | undefined {\n return getRouteableTransport(instance, role, protocol);\n }\n\n private getTransportClientKey(\n instance: ServiceInstanceDescriptor,\n protocol?: ServiceTransportProtocol,\n role: ServiceTransportRole = this.getRoutingTransportRole(),\n ): string | null {\n const transport = this.getRouteableTransport(instance, protocol, role);\n if (!transport) {\n return null;\n }\n\n return buildTransportClientKey(transport, instance.serviceName);\n }\n\n private resolveCommunicationTypesForService(serviceName: string): string[] {\n const communicationTypes = Array.from(\n new Set(\n this.deputies\n .get(serviceName)\n ?.map((descriptor) => descriptor.communicationType) ?? [],\n ),\n );\n\n if (\n !communicationTypes.includes(\"signal\") &&\n this.remoteSignals.has(serviceName)\n ) {\n communicationTypes.push(\"signal\");\n }\n\n return communicationTypes;\n }\n\n private ensureDependeeClientForInstance(\n instance: ServiceInstanceDescriptor,\n emit: (signal: string, ctx: AnyObject) => void,\n ctx?: AnyObject,\n ): boolean {\n if (\n !instance ||\n instance.uuid === this.serviceInstanceId ||\n instance.serviceName === this.serviceName ||\n instance.isFrontend ||\n !instance.isActive ||\n instance.isNonResponsive ||\n instance.isBlocked\n ) {\n return false;\n }\n\n if (\n !this.deputies.has(instance.serviceName) &&\n !this.remoteIntents.has(instance.serviceName) &&\n !this.remoteSignals.has(instance.serviceName)\n ) {\n return false;\n }\n\n const transport = this.selectTransportForInstance(\n instance,\n ctx ?? {},\n this.getRoutingTransportRole(),\n );\n\n if (!transport) {\n return false;\n }\n\n const route = this.upsertRemoteRouteRecord(\n instance.serviceName,\n instance.uuid,\n transport,\n );\n const restHandleKey = this.buildTransportProtocolHandleKey(route.key, \"rest\");\n const socketHandleKey = this.buildTransportProtocolHandleKey(\n route.key,\n \"socket\",\n );\n\n if (this.hasTransportClientCreated(instance, transport, \"rest\")) {\n return false;\n }\n\n emit(\"meta.service_registry.dependee_registered\", {\n serviceName: instance.serviceName,\n serviceInstanceId: instance.uuid,\n serviceTransportId: transport.uuid,\n serviceOrigin: transport.origin,\n routeKey: route.key,\n fetchId: restHandleKey,\n socketClientId: socketHandleKey,\n routeGeneration: route.generation,\n transportProtocols: transport.protocols,\n communicationTypes: this.resolveCommunicationTypesForService(\n instance.serviceName,\n ),\n });\n this.markTransportClientPending(instance, transport, \"rest\");\n return true;\n }\n\n private ensureDependeeClientsForService(\n serviceName: string,\n emit: (signal: string, ctx: AnyObject) => void,\n ctx?: AnyObject,\n ): void {\n if (!serviceName || serviceName === this.serviceName) {\n return;\n }\n\n for (const instance of this.instances.get(serviceName) ?? []) {\n this.ensureDependeeClientForInstance(instance, emit, ctx);\n }\n }\n\n private scheduleDependeeClientRecovery(\n instance: ServiceInstanceDescriptor,\n transport: ServiceTransportDescriptor,\n ctx?: AnyObject,\n ): boolean {\n if (\n !instance ||\n instance.serviceName === \"CadenzaDB\" ||\n instance.serviceName === this.serviceName ||\n !instance.isActive ||\n instance.isBlocked ||\n transport.deleted\n ) {\n return false;\n }\n\n const route = this.upsertRemoteRouteRecord(\n instance.serviceName,\n instance.uuid,\n transport,\n );\n const delayMs = Math.max(250, this.routeFailurePenaltyMs);\n\n Cadenza.schedule(\n \"meta.service_registry.dependee_registered\",\n {\n serviceName: instance.serviceName,\n serviceInstanceId: instance.uuid,\n serviceTransportId: transport.uuid,\n serviceOrigin: transport.origin,\n routeKey: route.key,\n fetchId: this.buildTransportProtocolHandleKey(route.key, \"rest\"),\n socketClientId: this.buildTransportProtocolHandleKey(route.key, \"socket\"),\n routeGeneration: route.generation,\n transportProtocols: transport.protocols,\n communicationTypes: this.resolveCommunicationTypesForService(\n instance.serviceName,\n ),\n __reason:\n typeof ctx?.__reason === \"string\" && ctx.__reason.trim().length > 0\n ? ctx.__reason\n : \"dependee_client_recovery\",\n },\n delayMs,\n );\n\n return true;\n }\n\n private shouldEagerlyEstablishRemoteClients(ctx?: AnyObject): boolean {\n if (this.serviceName !== \"CadenzaDB\") {\n return true;\n }\n\n return ctx?.__allowAuthorityEagerClientCreation === true;\n }\n\n private shouldDemandEstablishRemoteClients(ctx?: AnyObject): boolean {\n if (this.serviceName !== \"CadenzaDB\") {\n return true;\n }\n\n const signalName = String(\n ctx?.__signalName ?? ctx?.__signalEmission?.fullSignalName ?? \"\",\n )\n .split(\":\")[0]\n .trim();\n\n if (signalName.startsWith(\"global.meta.\")) {\n return false;\n }\n\n return true;\n }\n\n private buildTransportRouteKey(\n serviceName: string,\n transport: Pick<ServiceTransportDescriptor, \"uuid\" | \"role\" | \"origin\">,\n ): string {\n return buildTransportClientKey(transport, serviceName);\n }\n\n private buildTransportProtocolHandleKey(\n routeKey: string,\n protocol: ServiceTransportProtocol,\n ): string {\n return buildTransportHandleKey(routeKey, protocol);\n }\n\n private resolveProtocolFromContext(\n ctx: AnyObject,\n transport?: Pick<ServiceTransportDescriptor, \"protocols\"> | null,\n ): ServiceTransportProtocol | null {\n const explicitProtocol = String(\n ctx.transportProtocol ?? ctx.__transportProtocol ?? \"\",\n ).trim();\n if (explicitProtocol === \"rest\" || explicitProtocol === \"socket\") {\n return explicitProtocol;\n }\n\n const parsedHandle = parseTransportHandleKey(\n ctx.fetchId ?? ctx.routeKey ?? ctx.__fetchId,\n );\n if (parsedHandle?.protocol) {\n return parsedHandle.protocol;\n }\n\n const protocols = transport?.protocols ?? ctx.transportProtocols;\n if (Array.isArray(protocols) && protocols.length === 1) {\n const onlyProtocol = String(protocols[0]).trim();\n if (onlyProtocol === \"rest\" || onlyProtocol === \"socket\") {\n return onlyProtocol;\n }\n }\n\n return null;\n }\n\n private ensureRouteProtocolState(\n route: RemoteRouteRecord,\n protocol: ServiceTransportProtocol,\n ): {\n clientCreated: boolean;\n clientPending: boolean;\n clientReady: boolean;\n } {\n const existing = route.protocolState[protocol];\n if (existing) {\n return existing;\n }\n\n const next = {\n clientCreated: false,\n clientPending: false,\n clientReady: false,\n };\n route.protocolState[protocol] = next;\n return next;\n }\n\n private cloneRouteBalancingState(\n existing?: RemoteRouteBalancingState,\n ): RemoteRouteBalancingState {\n return {\n selectionCount: existing?.selectionCount ?? 0,\n lastSelectedAt: existing?.lastSelectedAt ?? null,\n lastSuccessAt: existing?.lastSuccessAt ?? null,\n lastFailureAt: existing?.lastFailureAt ?? null,\n failurePenaltyUntil: existing?.failurePenaltyUntil ?? null,\n activeDispatchTokens: new Set(existing?.activeDispatchTokens ?? []),\n };\n }\n\n private resolveRouteDispatchToken(ctx: AnyObject): string | null {\n const deputyExecId =\n typeof ctx?.__metadata?.__deputyExecId === \"string\" &&\n ctx.__metadata.__deputyExecId.length > 0\n ? ctx.__metadata.__deputyExecId\n : typeof ctx?.__deputyExecId === \"string\" && ctx.__deputyExecId.length > 0\n ? ctx.__deputyExecId\n : null;\n if (deputyExecId) {\n return `deputy:${deputyExecId}`;\n }\n\n const routineExecId =\n typeof ctx?.__routineExecId === \"string\" && ctx.__routineExecId.length > 0\n ? ctx.__routineExecId\n : null;\n if (routineExecId) {\n return `signal:${routineExecId}`;\n }\n\n const signalEmissionId =\n typeof ctx?.__signalEmissionId === \"string\" && ctx.__signalEmissionId.length > 0\n ? ctx.__signalEmissionId\n : typeof ctx?.__signalEmission?.uuid === \"string\" &&\n ctx.__signalEmission.uuid.length > 0\n ? ctx.__signalEmission.uuid\n : null;\n if (signalEmissionId) {\n return `signal-emission:${signalEmissionId}`;\n }\n\n return null;\n }\n\n private getNumericHealthMetric(\n instance: ServiceInstanceDescriptor,\n ...keys: string[]\n ): number | null {\n const health =\n instance.health && typeof instance.health === \"object\" ? instance.health : null;\n if (!health) {\n return null;\n }\n\n for (const key of keys) {\n const value = (health as Record<string, unknown>)[key];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n }\n\n return null;\n }\n\n private compareOptionalBalancingMetric(\n left: number | null,\n right: number | null,\n tolerance = 0,\n ): number {\n if (left === null || right === null) {\n return 0;\n }\n\n const delta = left - right;\n if (Math.abs(delta) <= tolerance) {\n return 0;\n }\n\n return delta;\n }\n\n private buildRouteBalancingSnapshot(\n route: RemoteRouteRecord,\n instance: ServiceInstanceDescriptor,\n ): RemoteRouteBalancingSnapshot {\n const runtimeStatus = this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n );\n const now = Date.now();\n const failurePenaltyUntil = route.balancing.failurePenaltyUntil;\n const penalized =\n typeof failurePenaltyUntil === \"number\" && failurePenaltyUntil > now;\n\n return {\n availability: penalized ? \"penalized\" : \"available\",\n runtimeState: runtimeStatus.state,\n acceptingWork: instance.acceptingWork !== false,\n numberOfRunningGraphs: instance.numberOfRunningGraphs ?? 0,\n inFlightDelegations: route.balancing.activeDispatchTokens.size,\n selectionCount: route.balancing.selectionCount,\n lastSelectedAt: route.balancing.lastSelectedAt,\n lastSuccessAt: route.balancing.lastSuccessAt,\n lastFailureAt: route.balancing.lastFailureAt,\n failurePenaltyUntil,\n cpuUsage: this.getNumericHealthMetric(instance, \"cpuUsage\", \"cpu\", \"cpuLoad\"),\n memoryUsage: this.getNumericHealthMetric(\n instance,\n \"memoryUsage\",\n \"memory\",\n \"memoryPressure\",\n ),\n eventLoopLag: this.getNumericHealthMetric(\n instance,\n \"eventLoopLag\",\n \"eventLoopLagMs\",\n ),\n };\n }\n\n private compareRouteBalancingSnapshots(\n left: RemoteRouteBalancingSnapshot,\n right: RemoteRouteBalancingSnapshot,\n ): number {\n const availabilityDelta =\n (left.availability === \"available\" ? 0 : 1) -\n (right.availability === \"available\" ? 0 : 1);\n if (availabilityDelta !== 0) {\n return availabilityDelta;\n }\n\n const runtimePriorityDelta =\n runtimeStatusPriority(left.runtimeState) -\n runtimeStatusPriority(right.runtimeState);\n if (runtimePriorityDelta !== 0) {\n return runtimePriorityDelta;\n }\n\n const acceptingWorkDelta =\n (left.acceptingWork ? 0 : 1) - (right.acceptingWork ? 0 : 1);\n if (acceptingWorkDelta !== 0) {\n return acceptingWorkDelta;\n }\n\n const inFlightDelta = left.inFlightDelegations - right.inFlightDelegations;\n if (inFlightDelta !== 0) {\n return inFlightDelta;\n }\n\n const cpuDelta = this.compareOptionalBalancingMetric(\n left.cpuUsage,\n right.cpuUsage,\n 0.05,\n );\n if (cpuDelta !== 0) {\n return cpuDelta;\n }\n\n const memoryDelta = this.compareOptionalBalancingMetric(\n left.memoryUsage,\n right.memoryUsage,\n 0.02,\n );\n if (memoryDelta !== 0) {\n return memoryDelta;\n }\n\n const eventLoopDelta = this.compareOptionalBalancingMetric(\n left.eventLoopLag,\n right.eventLoopLag,\n 5,\n );\n if (eventLoopDelta !== 0) {\n return eventLoopDelta;\n }\n\n const graphDelta = left.numberOfRunningGraphs - right.numberOfRunningGraphs;\n if (graphDelta !== 0) {\n return graphDelta;\n }\n\n const selectionCountDelta = left.selectionCount - right.selectionCount;\n if (selectionCountDelta !== 0) {\n return selectionCountDelta;\n }\n\n return (left.lastSelectedAt ?? 0) - (right.lastSelectedAt ?? 0);\n }\n\n private markRouteDispatchSelected(routeKey: string, ctx: AnyObject): void {\n const route = this.remoteRoutesByKey.get(routeKey);\n if (!route) {\n return;\n }\n\n route.balancing.selectionCount += 1;\n route.balancing.lastSelectedAt = Date.now();\n const token = this.resolveRouteDispatchToken(ctx);\n if (token) {\n route.balancing.activeDispatchTokens.add(token);\n }\n }\n\n private markRouteDispatchCompleted(\n routeKey: string,\n ctx: AnyObject,\n outcome: \"success\" | \"failure\" | \"neutral\",\n ): void {\n const route = this.remoteRoutesByKey.get(routeKey);\n if (!route) {\n return;\n }\n\n const token = this.resolveRouteDispatchToken(ctx);\n if (token) {\n route.balancing.activeDispatchTokens.delete(token);\n }\n\n const now = Date.now();\n if (outcome === \"success\") {\n route.balancing.lastSuccessAt = now;\n route.balancing.failurePenaltyUntil = null;\n return;\n }\n\n if (outcome === \"neutral\") {\n return;\n }\n\n route.balancing.lastFailureAt = now;\n route.balancing.failurePenaltyUntil = now + this.routeFailurePenaltyMs;\n }\n\n public recordBalancedRouteSelection(routeKey: string, ctx: AnyObject): void {\n this.markRouteDispatchSelected(routeKey, ctx);\n }\n\n public recordBalancedRouteOutcome(\n ctx: AnyObject,\n outcome: \"success\" | \"failure\" | \"neutral\",\n ): void {\n const route = this.resolveRouteRecordFromContext(ctx);\n if (!route) {\n return;\n }\n\n this.markRouteDispatchCompleted(route.key, ctx, outcome);\n }\n\n private matchesSignalBroadcastFilter(\n instance: ServiceInstanceDescriptor,\n transport: ServiceTransportDescriptor,\n filter: AnyObject | null | undefined,\n ): boolean {\n if (!filter || typeof filter !== \"object\") {\n return true;\n }\n\n const matches = (value: string, accepted: unknown): boolean => {\n if (!Array.isArray(accepted) || accepted.length === 0) {\n return true;\n }\n\n return accepted.some((entry) => String(entry ?? \"\").trim() === value);\n };\n\n if (!matches(instance.serviceName, filter.serviceNames)) {\n return false;\n }\n if (!matches(instance.uuid, filter.serviceInstanceIds)) {\n return false;\n }\n if (!matches(transport.origin, filter.origins)) {\n return false;\n }\n if (!matches(transport.role, filter.roles)) {\n return false;\n }\n\n if (Array.isArray(filter.protocols) && filter.protocols.length > 0) {\n const allowedProtocols = filter.protocols.map((protocol) =>\n String(protocol ?? \"\").trim(),\n );\n if (\n !(transport.protocols ?? []).some((protocol) =>\n allowedProtocols.includes(protocol),\n )\n ) {\n return false;\n }\n }\n\n if (Array.isArray(filter.runtimeStates) && filter.runtimeStates.length > 0) {\n const runtimeState = this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n ).state;\n if (\n !filter.runtimeStates\n .map((state) => String(state ?? \"\").trim())\n .includes(runtimeState)\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n private routeHasProtocolState(\n route: RemoteRouteRecord,\n predicate: (state: {\n clientCreated: boolean;\n clientPending: boolean;\n clientReady: boolean;\n }) => boolean,\n ): boolean {\n return ([\"rest\", \"socket\"] as const).some((protocol) => {\n const state = route.protocolState[protocol];\n return !!state && predicate(state);\n });\n }\n\n private syncInstanceClientRouteState(\n instance: ServiceInstanceDescriptor,\n ): void {\n const created = new Set<string>();\n const pending = new Set<string>();\n const ready = new Set<string>();\n\n for (const transport of instance.transports ?? []) {\n if (transport.deleted) {\n continue;\n }\n\n const routeKey = this.buildTransportRouteKey(\n instance.serviceName,\n transport,\n );\n const route = this.remoteRoutesByKey.get(routeKey);\n if (!route || route.serviceInstanceId !== instance.uuid) {\n continue;\n }\n\n if (this.routeHasProtocolState(route, (state) => state.clientCreated)) {\n created.add(routeKey);\n }\n if (this.routeHasProtocolState(route, (state) => state.clientPending)) {\n pending.add(routeKey);\n }\n if (this.routeHasProtocolState(route, (state) => state.clientReady)) {\n ready.add(routeKey);\n }\n }\n\n instance.clientCreatedTransportIds = Array.from(created);\n instance.clientPendingTransportIds = Array.from(pending);\n instance.clientReadyTransportIds = Array.from(ready);\n }\n\n private findRemoteRouteRecordByTransportId(\n serviceName: string,\n transportId: string,\n ): RemoteRouteRecord | undefined {\n if (!serviceName || !transportId) {\n return undefined;\n }\n\n for (const route of this.remoteRoutesByKey.values()) {\n if (\n route.serviceName === serviceName &&\n route.serviceTransportId === transportId\n ) {\n return route;\n }\n }\n\n return undefined;\n }\n\n private upsertRemoteRouteRecord(\n serviceName: string,\n serviceInstanceId: string,\n transport: ServiceTransportDescriptor,\n ): RemoteRouteRecord {\n const key = this.buildTransportRouteKey(serviceName, transport);\n const existing = this.remoteRoutesByKey.get(key);\n const next: RemoteRouteRecord = {\n key,\n serviceName,\n role: transport.role,\n origin: transport.origin,\n protocols: [...(transport.protocols ?? [])],\n serviceInstanceId,\n serviceTransportId: transport.uuid,\n generation: `${serviceInstanceId}|${transport.uuid}`,\n protocolState: {\n rest: existing?.protocolState.rest\n ? { ...existing.protocolState.rest }\n : undefined,\n socket: existing?.protocolState.socket\n ? { ...existing.protocolState.socket }\n : undefined,\n },\n balancing: this.cloneRouteBalancingState(existing?.balancing),\n lastUpdatedAt: Date.now(),\n };\n\n this.remoteRoutesByKey.set(key, next);\n\n if (\n existing &&\n existing.serviceInstanceId &&\n existing.serviceInstanceId !== serviceInstanceId\n ) {\n const previousInstance = this.getInstance(\n existing.serviceName,\n existing.serviceInstanceId,\n );\n if (previousInstance) {\n this.syncInstanceClientRouteState(previousInstance);\n }\n }\n\n const currentInstance = this.getInstance(serviceName, serviceInstanceId);\n if (currentInstance) {\n this.syncInstanceClientRouteState(currentInstance);\n }\n\n return next;\n }\n\n private clearRemoteRouteRecordIfCurrent(\n serviceName: string,\n serviceInstanceId: string,\n transport: ServiceTransportDescriptor,\n ): void {\n const routeKey = this.buildTransportRouteKey(serviceName, transport);\n const existing = this.remoteRoutesByKey.get(routeKey);\n if (\n existing &&\n existing.serviceInstanceId === serviceInstanceId &&\n existing.serviceTransportId === transport.uuid\n ) {\n this.remoteRoutesByKey.delete(routeKey);\n }\n }\n\n private emitTransportHandleShutdowns(\n emit: (signal: string, ctx: AnyObject) => void,\n routeKey: string,\n transport: Pick<ServiceTransportDescriptor, \"uuid\" | \"origin\" | \"protocols\">,\n ): void {\n const protocols = transport.protocols ?? [];\n if (protocols.includes(\"socket\")) {\n emit(\n `meta.socket_shutdown_requested:${this.buildTransportProtocolHandleKey(routeKey, \"socket\")}`,\n {\n routeKey,\n serviceTransportId: transport.uuid,\n serviceOrigin: transport.origin,\n transportProtocol: \"socket\",\n },\n );\n }\n\n if (protocols.includes(\"rest\")) {\n emit(\n `meta.fetch.destroy_requested:${this.buildTransportProtocolHandleKey(routeKey, \"rest\")}`,\n {\n routeKey,\n serviceTransportId: transport.uuid,\n serviceOrigin: transport.origin,\n transportProtocol: \"rest\",\n },\n );\n }\n }\n\n private resolveTransportRouteKey(\n instance: ServiceInstanceDescriptor,\n transport: Pick<ServiceTransportDescriptor, \"uuid\" | \"role\" | \"origin\">,\n ): string {\n return this.buildTransportRouteKey(instance.serviceName, transport);\n }\n\n private hasTransportClientCreated(\n instance: ServiceInstanceDescriptor,\n transport: Pick<ServiceTransportDescriptor, \"uuid\" | \"role\" | \"origin\">,\n protocol?: ServiceTransportProtocol,\n ): boolean {\n const routeKey = this.resolveTransportRouteKey(instance, transport);\n const route = this.remoteRoutesByKey.get(routeKey);\n if (route) {\n if (protocol) {\n const state = route.protocolState[protocol];\n return !!state && (state.clientCreated || state.clientPending || state.clientReady);\n }\n\n return this.routeHasProtocolState(\n route,\n (state) => state.clientCreated || state.clientPending || state.clientReady,\n );\n }\n\n return (\n (instance.clientCreatedTransportIds ?? []).includes(routeKey) ||\n (instance.clientCreatedTransportIds ?? []).includes(transport.uuid) ||\n (instance.clientPendingTransportIds ?? []).includes(routeKey) ||\n (instance.clientPendingTransportIds ?? []).includes(transport.uuid) ||\n (instance.clientReadyTransportIds ?? []).includes(routeKey) ||\n (instance.clientReadyTransportIds ?? []).includes(transport.uuid)\n );\n }\n\n private markTransportClientPending(\n instance: ServiceInstanceDescriptor,\n transport: ServiceTransportDescriptor,\n protocol: ServiceTransportProtocol,\n ): void {\n const route = this.upsertRemoteRouteRecord(\n instance.serviceName,\n instance.uuid,\n transport,\n );\n const state = this.ensureRouteProtocolState(route, protocol);\n state.clientCreated = state.clientCreated || state.clientReady;\n state.clientPending = true;\n state.clientReady = false;\n this.remoteRoutesByKey.set(route.key, route);\n this.syncInstanceClientRouteState(instance);\n }\n\n private hasTransportClientReady(\n instance: ServiceInstanceDescriptor,\n transport: Pick<ServiceTransportDescriptor, \"uuid\" | \"role\" | \"origin\">,\n protocol?: ServiceTransportProtocol,\n ): boolean {\n const routeKey = this.resolveTransportRouteKey(instance, transport);\n const route = this.remoteRoutesByKey.get(routeKey);\n if (route) {\n if (protocol) {\n return route.protocolState[protocol]?.clientReady === true;\n }\n\n return this.routeHasProtocolState(route, (state) => state.clientReady);\n }\n\n return (\n (instance.clientReadyTransportIds ?? []).includes(routeKey) ||\n (instance.clientReadyTransportIds ?? []).includes(transport.uuid)\n );\n }\n\n private hasReadyClientTransportForProtocol(\n instance: ServiceInstanceDescriptor,\n protocol: ServiceTransportProtocol,\n ): boolean {\n return (instance.transports ?? []).some(\n (transport) =>\n !transport.deleted &&\n transport.protocols?.includes(protocol) &&\n this.hasTransportClientReady(instance, transport, protocol),\n );\n }\n\n private hasAnyReadyClientProtocolForTransport(\n instance: ServiceInstanceDescriptor,\n transport: Pick<ServiceTransportDescriptor, \"uuid\" | \"role\" | \"origin\">,\n ): boolean {\n return this.hasTransportClientReady(instance, transport);\n }\n\n private markTransportClientReady(\n instance: ServiceInstanceDescriptor,\n transport: ServiceTransportDescriptor,\n protocol?: ServiceTransportProtocol,\n ): void {\n const route = this.upsertRemoteRouteRecord(\n instance.serviceName,\n instance.uuid,\n transport,\n );\n const protocols = protocol ? [protocol] : transport.protocols ?? [\"rest\"];\n for (const currentProtocol of protocols) {\n const state = this.ensureRouteProtocolState(route, currentProtocol);\n state.clientCreated = true;\n state.clientPending = false;\n state.clientReady = true;\n }\n this.remoteRoutesByKey.set(route.key, route);\n this.syncInstanceClientRouteState(instance);\n }\n\n private clearTransportClientState(\n instance: ServiceInstanceDescriptor,\n transportOrRouteKey:\n | Pick<ServiceTransportDescriptor, \"uuid\" | \"role\" | \"origin\">\n | string,\n protocol?: ServiceTransportProtocol,\n ): void {\n const routeKey =\n typeof transportOrRouteKey === \"string\"\n ? transportOrRouteKey\n : this.resolveTransportRouteKey(instance, transportOrRouteKey);\n const route = this.remoteRoutesByKey.get(routeKey);\n if (route) {\n if (\n typeof transportOrRouteKey !== \"string\" &&\n ((route.serviceInstanceId &&\n route.serviceInstanceId !== instance.uuid) ||\n (route.serviceTransportId &&\n route.serviceTransportId !== transportOrRouteKey.uuid))\n ) {\n return;\n }\n\n if (protocol) {\n const state = this.ensureRouteProtocolState(route, protocol);\n state.clientCreated = false;\n state.clientPending = false;\n state.clientReady = false;\n } else {\n for (const protocolKey of [\"rest\", \"socket\"] as const) {\n const state = this.ensureRouteProtocolState(route, protocolKey);\n state.clientCreated = false;\n state.clientPending = false;\n state.clientReady = false;\n }\n }\n route.lastUpdatedAt = Date.now();\n this.remoteRoutesByKey.set(routeKey, route);\n }\n\n this.syncInstanceClientRouteState(instance);\n }\n\n public shouldProcessRemoteRouteEvent(ctx: AnyObject): boolean {\n const parsedHandle = parseTransportHandleKey(\n ctx.fetchId ?? ctx.__fetchId ?? ctx.socketClientId,\n );\n const routeKey = String(\n ctx.routeKey ?? ctx.__routeKey ?? parsedHandle?.routeKey ?? \"\",\n ).trim();\n if (!routeKey) {\n return true;\n }\n\n const route = this.remoteRoutesByKey.get(routeKey);\n if (!route) {\n return true;\n }\n\n const serviceTransportId = String(\n ctx.serviceTransportId ?? ctx.__transportId ?? \"\",\n ).trim();\n if (\n serviceTransportId &&\n route.serviceTransportId &&\n route.serviceTransportId !== serviceTransportId\n ) {\n return false;\n }\n\n const routeGeneration = String(ctx.routeGeneration ?? \"\").trim();\n if (routeGeneration && route.generation && route.generation !== routeGeneration) {\n return false;\n }\n\n return true;\n }\n\n private resolveRequiredReadinessFromCommunicationTypes(\n communicationTypes: unknown,\n ): boolean {\n return this.shouldRequireReadinessFromCommunicationTypes(\n Array.isArray(communicationTypes)\n ? (communicationTypes as unknown[])\n : undefined,\n );\n }\n\n private markTransportReadyFromContext(ctx: AnyObject): void {\n const serviceName = String(ctx.serviceName ?? \"\").trim();\n const serviceInstanceId = String(ctx.serviceInstanceId ?? \"\").trim();\n const serviceTransportId = String(ctx.serviceTransportId ?? \"\").trim();\n\n if (!serviceName || !serviceInstanceId || !serviceTransportId) {\n return;\n }\n\n let instance = this.getInstance(serviceName, serviceInstanceId);\n if (!instance) {\n instance = (this.instances.get(serviceName) ?? []).find((candidate) =>\n candidate.transports.some(\n (transport) => transport.uuid === serviceTransportId,\n ),\n );\n }\n\n if (!instance) {\n return;\n }\n\n const transport = this.getTransportById(instance, serviceTransportId);\n if (!transport) {\n return;\n }\n\n this.upsertRemoteRouteRecord(serviceName, instance.uuid, transport);\n this.clearTransportFailureState(instance.uuid, serviceTransportId);\n this.markTransportClientReady(\n instance,\n transport,\n this.resolveProtocolFromContext(ctx, transport) ?? undefined,\n );\n this.refreshRoutingCooldownsForService(serviceName);\n }\n\n private clearTransportReadyFromContext(ctx: AnyObject): void {\n const serviceName = String(ctx.serviceName ?? \"\").trim();\n const explicitRouteKey =\n String(ctx.routeKey ?? \"\").trim() ||\n parseTransportHandleKey(ctx.fetchId ?? ctx.__fetchId)?.routeKey ||\n \"\";\n const serviceTransportId = String(\n ctx.serviceTransportId ?? ctx.__transportId ?? \"\",\n ).trim();\n\n if (!serviceName) {\n return;\n }\n\n const route =\n (explicitRouteKey && this.remoteRoutesByKey.get(explicitRouteKey)) ||\n this.findRemoteRouteRecordByTransportId(serviceName, serviceTransportId);\n\n if (!route) {\n return;\n }\n\n if (\n serviceTransportId &&\n route.serviceTransportId &&\n route.serviceTransportId !== serviceTransportId\n ) {\n return;\n }\n\n const instance = this.getInstance(route.serviceName, route.serviceInstanceId);\n if (!instance) {\n return;\n }\n\n this.clearTransportClientState(\n instance,\n route.key,\n this.resolveProtocolFromContext(ctx) ?? undefined,\n );\n }\n\n private registerDependee(\n serviceName: string,\n serviceInstanceId: string,\n options: {\n requiredForReadiness?: boolean;\n } = {},\n ) {\n if (!serviceName || !serviceInstanceId) {\n return;\n }\n\n if (!this.dependeesByService.has(serviceName)) {\n this.dependeesByService.set(serviceName, new Set());\n }\n\n this.dependeesByService.get(serviceName)!.add(serviceInstanceId);\n this.dependeeByInstance.set(serviceInstanceId, serviceName);\n\n if (options.requiredForReadiness) {\n if (!this.readinessDependeesByService.has(serviceName)) {\n this.readinessDependeesByService.set(serviceName, new Set());\n }\n this.readinessDependeesByService.get(serviceName)!.add(serviceInstanceId);\n this.readinessDependeeByInstance.set(serviceInstanceId, serviceName);\n }\n\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n }\n\n private unregisterDependee(serviceInstanceId: string, serviceName?: string) {\n const dependeeServiceName =\n serviceName ?? this.dependeeByInstance.get(serviceInstanceId);\n if (dependeeServiceName) {\n this.dependeesByService.get(dependeeServiceName)?.delete(serviceInstanceId);\n if (!this.dependeesByService.get(dependeeServiceName)?.size) {\n this.dependeesByService.delete(dependeeServiceName);\n }\n }\n\n this.dependeeByInstance.delete(serviceInstanceId);\n const readinessDependeeServiceName =\n serviceName ?? this.readinessDependeeByInstance.get(serviceInstanceId);\n if (readinessDependeeServiceName) {\n this.readinessDependeesByService\n .get(readinessDependeeServiceName)\n ?.delete(serviceInstanceId);\n if (!this.readinessDependeesByService.get(readinessDependeeServiceName)?.size) {\n this.readinessDependeesByService.delete(readinessDependeeServiceName);\n }\n }\n\n this.readinessDependeeByInstance.delete(serviceInstanceId);\n this.lastHeartbeatAtByInstance.delete(serviceInstanceId);\n this.missedHeartbeatsByInstance.delete(serviceInstanceId);\n this.runtimeStatusFallbackInFlightByInstance.delete(serviceInstanceId);\n }\n\n private getInstanceRouteRole(\n instance: ServiceInstanceDescriptor,\n ): ServiceTransportRole {\n return instance.isFrontend ? \"public\" : \"internal\";\n }\n\n private findSupersededInstancesForTransport(\n serviceName: string,\n authoritativeInstanceId: string,\n role: ServiceTransportRole,\n origin: string,\n ): ServiceInstanceDescriptor[] {\n if (!serviceName || !authoritativeInstanceId || !origin) {\n return [];\n }\n\n const candidates = (this.instances.get(serviceName) ?? []).filter((candidate) => {\n if (candidate.isBootstrapPlaceholder) {\n return false;\n }\n\n return candidate.transports.some(\n (transport) =>\n !transport.deleted &&\n transport.role === role &&\n transport.origin === origin,\n );\n });\n\n if (!candidates.length) {\n return [];\n }\n\n const preferredInstance = [...candidates].sort((left, right) =>\n this.compareInstancesForRoutePrecedence(left, right, role, origin),\n )[0];\n\n if (!preferredInstance || preferredInstance.uuid !== authoritativeInstanceId) {\n return [];\n }\n\n return candidates.filter((candidate) => candidate.uuid !== preferredInstance.uuid);\n }\n\n private compareInstancesForRoutePrecedence(\n left: ServiceInstanceDescriptor,\n right: ServiceInstanceDescriptor,\n role: ServiceTransportRole,\n origin: string,\n ): number {\n const leftLocal =\n left.serviceName === this.serviceName && left.uuid === this.serviceInstanceId\n ? 1\n : 0;\n const rightLocal =\n right.serviceName === this.serviceName && right.uuid === this.serviceInstanceId\n ? 1\n : 0;\n\n if (leftLocal !== rightLocal) {\n return rightLocal - leftLocal;\n }\n\n const leftReady = this.hasReadyTransportForRoute(left, role, origin) ? 1 : 0;\n const rightReady = this.hasReadyTransportForRoute(right, role, origin) ? 1 : 0;\n if (leftReady !== rightReady) {\n return rightReady - leftReady;\n }\n\n const leftPrimary = left.isPrimary ? 1 : 0;\n const rightPrimary = right.isPrimary ? 1 : 0;\n if (leftPrimary !== rightPrimary) {\n return rightPrimary - leftPrimary;\n }\n\n const leftReportedAt = Date.parse(left.reportedAt ?? \"\");\n const rightReportedAt = Date.parse(right.reportedAt ?? \"\");\n const safeLeftReportedAt = Number.isFinite(leftReportedAt) ? leftReportedAt : 0;\n const safeRightReportedAt = Number.isFinite(rightReportedAt)\n ? rightReportedAt\n : 0;\n\n if (safeLeftReportedAt !== safeRightReportedAt) {\n return safeRightReportedAt - safeLeftReportedAt;\n }\n\n return right.uuid.localeCompare(left.uuid);\n }\n\n private hasReadyTransportForRoute(\n instance: ServiceInstanceDescriptor,\n role: ServiceTransportRole,\n origin: string,\n ): boolean {\n return instance.transports.some(\n (transport) =>\n !transport.deleted &&\n transport.role === role &&\n transport.origin === origin &&\n this.hasTransportClientReady(instance, transport),\n );\n }\n\n private retireSupersededInstancesForTransport(\n authoritativeInstance: ServiceInstanceDescriptor,\n authoritativeTransport: ServiceTransportDescriptor,\n emit: (signal: string, ctx: AnyObject) => void,\n ): void {\n if (this.serviceName === \"CadenzaDB\") {\n return;\n }\n\n const persistStructuralRetirement = false;\n const supersededInstances = this.findSupersededInstancesForTransport(\n authoritativeInstance.serviceName,\n authoritativeInstance.uuid,\n authoritativeTransport.role,\n authoritativeTransport.origin,\n );\n\n if (!supersededInstances.length) {\n return;\n }\n\n const instances = this.instances.get(authoritativeInstance.serviceName);\n\n for (const supersededInstance of supersededInstances) {\n this.markInstanceInactive(emit, supersededInstance, {\n deactivateTransports: true,\n persist: persistStructuralRetirement,\n });\n\n this.unregisterDependee(\n supersededInstance.uuid,\n authoritativeInstance.serviceName,\n );\n\n if (instances) {\n const index = instances.findIndex(\n (candidate) => candidate.uuid === supersededInstance.uuid,\n );\n if (index >= 0) {\n instances.splice(index, 1);\n }\n }\n }\n\n if (instances && instances.length === 0) {\n this.instances.delete(authoritativeInstance.serviceName);\n }\n }\n\n private shouldRetireSupersededInstancesForTransport(\n instance: ServiceInstanceDescriptor,\n transport: ServiceTransportDescriptor,\n ): boolean {\n return (\n transport.role === this.getInstanceRouteRole(instance) &&\n !transport.deleted &&\n (instance.uuid === this.serviceInstanceId ||\n this.hasReadyTransportForRoute(\n instance,\n transport.role,\n transport.origin,\n ))\n );\n }\n\n private async hydrateAuthorityInstanceForTransport(\n transport: ServiceTransportDescriptor,\n ): Promise<ServiceInstanceDescriptor | undefined> {\n if (this.serviceName !== \"CadenzaDB\") {\n return undefined;\n }\n\n const rows = await DatabaseController.instance.queryAuthorityTableRows(\n \"service_instance\",\n {\n fields: [\n \"uuid\",\n \"service_name\",\n \"is_primary\",\n \"is_active\",\n \"is_non_responsive\",\n \"is_blocked\",\n \"number_of_running_graphs\",\n \"reported_at\",\n \"health\",\n \"is_frontend\",\n \"is_database\",\n \"deleted\",\n ],\n filter: {\n uuid: transport.serviceInstanceId,\n deleted: false,\n },\n },\n );\n\n const normalized = normalizeServiceInstanceDescriptor(rows[0]);\n if (!normalized) {\n return undefined;\n }\n\n if (!this.instances.has(normalized.serviceName)) {\n this.instances.set(normalized.serviceName, []);\n }\n\n const instances = this.instances.get(normalized.serviceName)!;\n const existing = instances.find(\n (candidate) => candidate.uuid === normalized.uuid,\n );\n\n if (existing) {\n return existing;\n }\n\n instances.push({\n ...normalized,\n transports: [],\n });\n return instances[instances.length - 1];\n }\n\n private reconcileBootstrapPlaceholderInstance(\n serviceName: string,\n resolvedInstanceId: string,\n emit: (signalName: string, ctx: AnyObject) => void,\n ) {\n const instances = this.instances.get(serviceName);\n if (!instances?.length) {\n return;\n }\n\n const resolvedInstance = instances.find(\n (instance) => instance.uuid === resolvedInstanceId,\n );\n const frontendRoutingRole = this.isFrontend\n ? this.getRoutingTransportRole()\n : null;\n\n const placeholders = instances.filter(\n (instance) =>\n instance.uuid !== resolvedInstanceId && instance.isBootstrapPlaceholder,\n );\n\n if (!placeholders.length) {\n return;\n }\n\n for (const placeholder of placeholders) {\n const wasDependee = this.dependeeByInstance.has(placeholder.uuid);\n const requiredForReadiness = this.readinessDependeeByInstance.has(\n placeholder.uuid,\n );\n const preservedTransportIds = new Set<string>();\n\n if (resolvedInstance && frontendRoutingRole) {\n const resolvedHasFrontendRoute = resolvedInstance.transports.some(\n (transport) => transport.role === frontendRoutingRole && !transport.deleted,\n );\n\n if (!resolvedHasFrontendRoute) {\n const transportsToPreserve = placeholder.transports.filter(\n (transport) =>\n transport.role === frontendRoutingRole && !transport.deleted,\n );\n\n for (const transport of transportsToPreserve) {\n if (\n resolvedInstance.transports.some(\n (existingTransport) =>\n existingTransport.role === transport.role &&\n existingTransport.origin === transport.origin,\n )\n ) {\n continue;\n }\n\n resolvedInstance.transports.push({\n ...transport,\n serviceInstanceId: resolvedInstanceId,\n });\n preservedTransportIds.add(transport.uuid);\n }\n }\n }\n\n for (const transport of placeholder.transports) {\n if (preservedTransportIds.has(transport.uuid)) {\n continue;\n }\n const transportKey = this.buildTransportRouteKey(serviceName, transport);\n this.emitTransportHandleShutdowns(emit, transportKey, transport);\n }\n\n this.unregisterDependee(placeholder.uuid, serviceName);\n\n if (wasDependee) {\n this.registerDependee(serviceName, resolvedInstanceId, {\n requiredForReadiness,\n });\n }\n }\n\n this.instances.set(\n serviceName,\n instances.filter((instance) => !instance.isBootstrapPlaceholder),\n );\n }\n\n private adoptBootstrapPlaceholderInstanceId(\n serviceName: string,\n placeholderInstanceId: string,\n resolvedInstanceId: string,\n ): ServiceInstanceDescriptor | undefined {\n if (!serviceName || !placeholderInstanceId || !resolvedInstanceId) {\n return undefined;\n }\n\n const instances = this.instances.get(serviceName);\n if (!instances?.length) {\n return undefined;\n }\n\n const resolvedInstance = instances.find(\n (instance) => instance.uuid === resolvedInstanceId,\n );\n if (resolvedInstance) {\n return resolvedInstance;\n }\n\n const placeholder = instances.find(\n (instance) =>\n instance.uuid === placeholderInstanceId && instance.isBootstrapPlaceholder,\n );\n if (!placeholder) {\n return undefined;\n }\n\n const wasDependee = this.dependeeByInstance.has(placeholderInstanceId);\n const dependeeServiceName =\n this.dependeeByInstance.get(placeholderInstanceId) ?? serviceName;\n const requiredForReadiness = this.readinessDependeeByInstance.has(\n placeholderInstanceId,\n );\n const lastHeartbeatAt =\n this.lastHeartbeatAtByInstance.get(placeholderInstanceId) ?? Date.now();\n const missedHeartbeats =\n this.missedHeartbeatsByInstance.get(placeholderInstanceId) ?? 0;\n const inFlight = this.runtimeStatusFallbackInFlightByInstance.has(\n placeholderInstanceId,\n );\n\n this.dependeeByInstance.delete(placeholderInstanceId);\n this.readinessDependeeByInstance.delete(placeholderInstanceId);\n this.lastHeartbeatAtByInstance.delete(placeholderInstanceId);\n this.missedHeartbeatsByInstance.delete(placeholderInstanceId);\n this.runtimeStatusFallbackInFlightByInstance.delete(placeholderInstanceId);\n\n placeholder.uuid = resolvedInstanceId;\n placeholder.isBootstrapPlaceholder = false;\n placeholder.transports = placeholder.transports.map((transport) => ({\n ...transport,\n serviceInstanceId: resolvedInstanceId,\n }));\n\n if (wasDependee) {\n this.dependeeByInstance.set(resolvedInstanceId, dependeeServiceName);\n if (this.dependeesByService.has(dependeeServiceName)) {\n this.dependeesByService.get(dependeeServiceName)!.delete(\n placeholderInstanceId,\n );\n this.dependeesByService.get(dependeeServiceName)!.add(resolvedInstanceId);\n }\n this.lastHeartbeatAtByInstance.set(resolvedInstanceId, lastHeartbeatAt);\n this.missedHeartbeatsByInstance.set(resolvedInstanceId, missedHeartbeats);\n }\n\n if (requiredForReadiness) {\n this.readinessDependeeByInstance.set(resolvedInstanceId, serviceName);\n if (this.readinessDependeesByService.has(serviceName)) {\n this.readinessDependeesByService.get(serviceName)!.delete(\n placeholderInstanceId,\n );\n this.readinessDependeesByService.get(serviceName)!.add(resolvedInstanceId);\n }\n }\n\n if (inFlight) {\n this.runtimeStatusFallbackInFlightByInstance.add(resolvedInstanceId);\n }\n\n return placeholder;\n }\n\n private getHeartbeatMisses(serviceInstanceId: string, now = Date.now()): number {\n const observedMisses = this.missedHeartbeatsByInstance.get(serviceInstanceId) ?? 0;\n const lastHeartbeatAt = this.lastHeartbeatAtByInstance.get(serviceInstanceId) ?? 0;\n if (lastHeartbeatAt <= 0) {\n return Math.max(observedMisses, this.runtimeStatusMissThreshold);\n }\n\n const estimatedMisses = Math.max(\n 0,\n Math.floor((now - lastHeartbeatAt) / this.runtimeStatusHeartbeatIntervalMs),\n );\n\n return Math.max(observedMisses, estimatedMisses);\n }\n\n private getRuntimeStatusInactiveThreshold(): number {\n return Math.max(\n this.runtimeStatusInactiveMissThreshold,\n this.runtimeStatusMissThreshold + 1,\n );\n }\n\n private buildGracefulShutdownTransportDeactivationContext(\n instance: ServiceInstanceDescriptor,\n ): AnyObject {\n return {\n serviceName: instance.serviceName,\n serviceInstanceId: instance.uuid,\n transports: instance.transports.map((transport) => ({\n uuid: transport.uuid,\n service_instance_id: transport.serviceInstanceId,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols,\n deleted: transport.deleted ?? false,\n })),\n };\n }\n\n private applyInstanceLifecycleState(\n instance: ServiceInstanceDescriptor,\n {\n isActive,\n isNonResponsive,\n reportedAt,\n health,\n }: {\n isActive: boolean;\n isNonResponsive: boolean;\n reportedAt?: string;\n health?: AnyObject;\n },\n ): void {\n instance.isActive = isActive;\n instance.isNonResponsive = isNonResponsive;\n if (health && typeof health === \"object\") {\n instance.health = {\n ...(instance.health ?? {}),\n ...health,\n };\n }\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n );\n instance.runtimeState = snapshot.state;\n instance.acceptingWork = snapshot.acceptingWork;\n instance.reportedAt = reportedAt ?? new Date().toISOString();\n }\n\n private emitInstanceLifecyclePersistence(\n emit: (signal: string, ctx: AnyObject) => void,\n instance: ServiceInstanceDescriptor,\n data: AnyObject,\n options: {\n persist?: boolean;\n } = {},\n ): void {\n emit(\"global.meta.service_instance.updated\", {\n data,\n filter: {\n uuid: instance.uuid,\n },\n });\n if (options.persist === false) {\n return;\n }\n emit(\"meta.service_registry.instance_update_requested\", {\n data,\n queryData: {\n filter: {\n uuid: instance.uuid,\n },\n },\n __serviceName: instance.serviceName,\n });\n }\n\n private deactivateInstanceTransports(\n emit: (signal: string, ctx: AnyObject) => void,\n instance: ServiceInstanceDescriptor,\n options: {\n persist: boolean;\n } = {\n persist: true,\n },\n ): void {\n for (const transport of instance.transports) {\n const transportKey = this.buildTransportRouteKey(\n instance.serviceName,\n transport,\n );\n this.clearRemoteRouteRecordIfCurrent(\n instance.serviceName,\n instance.uuid,\n transport,\n );\n this.emitTransportHandleShutdowns(emit, transportKey, transport);\n transport.deleted = true;\n this.clearTransportClientState(instance, transport);\n\n if (!isPersistedUuid(transport.uuid)) {\n continue;\n }\n\n emit(\"global.meta.service_instance_transport.updated\", {\n data: {\n deleted: true,\n },\n filter: {\n uuid: transport.uuid,\n },\n });\n if (!options.persist) {\n continue;\n }\n emit(\"meta.service_registry.transport_update_requested\", {\n data: {\n deleted: true,\n },\n queryData: {\n filter: {\n uuid: transport.uuid,\n },\n },\n __serviceName: instance.serviceName,\n __serviceInstanceId: instance.uuid,\n });\n }\n }\n\n private emitTransportDeletionPersistence(\n emit: (signal: string, ctx: AnyObject) => void,\n instance: ServiceInstanceDescriptor,\n transportId: string,\n ): void {\n emit(\"global.meta.service_instance_transport.updated\", {\n data: {\n deleted: true,\n },\n filter: {\n uuid: transportId,\n },\n });\n emit(\"meta.service_registry.transport_update_requested\", {\n data: {\n deleted: true,\n },\n queryData: {\n filter: {\n uuid: transportId,\n },\n },\n __serviceName: instance.serviceName,\n __serviceInstanceId: instance.uuid,\n });\n }\n\n private markInstanceInactive(\n emit: (signal: string, ctx: AnyObject) => void,\n instance: ServiceInstanceDescriptor,\n options: {\n deactivateTransports?: boolean;\n persistDeleted?: boolean;\n persist?: boolean;\n } = {},\n ): void {\n this.applyInstanceLifecycleState(instance, {\n isActive: false,\n isNonResponsive: false,\n });\n\n if (options.deactivateTransports) {\n this.deactivateInstanceTransports(emit, instance, {\n persist: options.persist !== false,\n });\n }\n\n this.emitInstanceLifecyclePersistence(emit, instance, {\n is_active: false,\n is_non_responsive: false,\n deleted: options.persistDeleted === true ? true : false,\n last_active: instance.reportedAt,\n health: instance.health ?? {},\n }, {\n persist: options.persist !== false,\n });\n }\n\n private handleLocalInboundActivity(\n emit: (signal: string, ctx: AnyObject) => void,\n activityAt?: string,\n ): boolean {\n const localInstance = this.getLocalInstance();\n if (!localInstance) {\n return false;\n }\n\n const previousActive = localInstance.isActive;\n const previousNonResponsive = localInstance.isNonResponsive;\n const previousReportedAtMs = Date.parse(localInstance.reportedAt ?? \"\");\n const nextReportedAt =\n typeof activityAt === \"string\" && activityAt.trim().length > 0\n ? activityAt\n : new Date().toISOString();\n\n this.applyInstanceLifecycleState(localInstance, {\n isActive: true,\n isNonResponsive: false,\n reportedAt: nextReportedAt,\n });\n\n const previousReportedAtWasValid = Number.isFinite(previousReportedAtMs);\n const shouldPersistActivity =\n !previousActive ||\n previousNonResponsive ||\n !previousReportedAtWasValid ||\n Date.now() - previousReportedAtMs >= this.runtimeStatusHeartbeatIntervalMs;\n\n if (!shouldPersistActivity) {\n return true;\n }\n\n emit(\"meta.service_registry.runtime_status_broadcast_requested\", {\n reason: \"inbound-activity\",\n force: previousNonResponsive || !previousActive,\n });\n\n return true;\n }\n\n private handleRemoteActivityObserved(ctx: AnyObject): boolean {\n const serviceName = String(ctx.serviceName ?? \"\").trim();\n const serviceInstanceId = String(ctx.serviceInstanceId ?? \"\").trim();\n if (!serviceName || !serviceInstanceId) {\n return false;\n }\n\n if (\n serviceName === this.serviceName &&\n serviceInstanceId === this.serviceInstanceId\n ) {\n return false;\n }\n\n const instance = this.getInstance(serviceName, serviceInstanceId);\n if (!instance) {\n return false;\n }\n\n const nextReportedAt =\n typeof ctx.activityAt === \"string\" && ctx.activityAt.trim().length > 0\n ? ctx.activityAt\n : new Date().toISOString();\n\n this.applyInstanceLifecycleState(instance, {\n isActive: true,\n isNonResponsive: false,\n reportedAt: nextReportedAt,\n });\n\n const transportId = String(ctx.serviceTransportId ?? \"\").trim();\n if (transportId) {\n this.clearTransportFailureState(instance.uuid, transportId);\n const transport = this.getTransportById(instance, transportId);\n if (transport) {\n this.markTransportClientReady(instance, transport);\n }\n }\n\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n this.runtimeStatusFallbackInFlightByInstance.delete(serviceInstanceId);\n this.refreshRoutingCooldownsForService(serviceName);\n\n return true;\n }\n\n private resolveRouteFreshnessTimestamp(instance: ServiceInstanceDescriptor): number {\n const reportedAtMs = Date.parse(instance.reportedAt ?? \"\");\n return Number.isFinite(reportedAtMs) ? reportedAtMs : 0;\n }\n\n private collapseInstancesByRouteOrigin(\n instances: ServiceInstanceDescriptor[],\n ctx: AnyObject,\n preferredRole: ServiceTransportRole,\n ): ServiceInstanceDescriptor[] {\n const bestByRouteKey = new Map<string, ServiceInstanceDescriptor>();\n\n for (const instance of instances) {\n if (instance.isFrontend) {\n bestByRouteKey.set(instance.uuid, instance);\n continue;\n }\n\n const transport = this.selectReadyTransportForInstance(\n instance,\n ctx,\n preferredRole,\n );\n if (!transport) {\n continue;\n }\n\n const routeKey = `${transport.role}|${transport.origin}`;\n const current = bestByRouteKey.get(routeKey);\n if (!current) {\n bestByRouteKey.set(routeKey, instance);\n continue;\n }\n\n const currentFreshness = this.resolveRouteFreshnessTimestamp(current);\n const candidateFreshness = this.resolveRouteFreshnessTimestamp(instance);\n if (candidateFreshness !== currentFreshness) {\n if (candidateFreshness > currentFreshness) {\n bestByRouteKey.set(routeKey, instance);\n }\n continue;\n }\n\n if ((instance.numberOfRunningGraphs ?? 0) < (current.numberOfRunningGraphs ?? 0)) {\n bestByRouteKey.set(routeKey, instance);\n }\n }\n\n return Array.from(bestByRouteKey.values());\n }\n\n private shouldRequireReadinessFromCommunicationTypes(\n communicationTypes: unknown,\n ): boolean {\n if (!Array.isArray(communicationTypes)) {\n return false;\n }\n\n return communicationTypes.some((type) => {\n const normalized = String(type).toLowerCase();\n return normalized === \"delegation\" || normalized === \"inquiry\";\n });\n }\n\n private resolveRuntimeStatusSnapshot(\n numberOfRunningGraphs: number,\n isActive: boolean,\n isNonResponsive: boolean,\n isBlocked: boolean,\n ): RuntimeStatusSnapshot {\n return resolveRuntimeStatus({\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n degradedGraphThreshold: this.degradedGraphThreshold,\n overloadedGraphThreshold: this.overloadedGraphThreshold,\n });\n }\n\n private captureRuntimeMetricsSample(): RuntimeMetricsSnapshot | null {\n if (!this.runtimeMetricsSampler) {\n return null;\n }\n\n const snapshot = this.runtimeMetricsSampler.sample();\n this.latestRuntimeMetricsSnapshot = snapshot;\n\n const localInstance = this.getLocalInstance();\n if (localInstance) {\n localInstance.health = {\n ...(localInstance.health ?? {}),\n cpuUsage: snapshot.cpuUsage,\n memoryUsage: snapshot.memoryUsage,\n eventLoopLag: snapshot.eventLoopLag,\n runtimeMetrics: {\n ...(localInstance.health?.runtimeMetrics ?? {}),\n ...snapshot,\n },\n };\n }\n\n return snapshot;\n }\n\n private getLatestRuntimeMetricsSnapshot(): RuntimeMetricsSnapshot | null {\n return (\n this.latestRuntimeMetricsSnapshot ??\n this.captureRuntimeMetricsSample()\n );\n }\n\n private buildRuntimeMetricsHealthPayload(\n snapshot: RuntimeMetricsSnapshot | null,\n ): AnyObject | undefined {\n if (!snapshot) {\n return undefined;\n }\n\n return {\n cpuUsage: snapshot.cpuUsage,\n memoryUsage: snapshot.memoryUsage,\n eventLoopLag: snapshot.eventLoopLag,\n runtimeMetrics: {\n sampledAt: snapshot.sampledAt,\n cpuUsage: snapshot.cpuUsage,\n memoryUsage: snapshot.memoryUsage,\n eventLoopLag: snapshot.eventLoopLag,\n rssBytes: snapshot.rssBytes,\n heapUsedBytes: snapshot.heapUsedBytes,\n heapTotalBytes: snapshot.heapTotalBytes,\n memoryLimitBytes: snapshot.memoryLimitBytes,\n },\n };\n }\n\n private stripRuntimeStatusReportForPeer(\n report: RuntimeStatusReport,\n ): RuntimeStatusReport {\n const nextReport: RuntimeStatusReport = {\n ...report,\n };\n\n delete nextReport.health;\n return nextReport;\n }\n\n private buildPeerRuntimeStatusSnapshot(\n report: RuntimeStatusReport,\n ): PeerRuntimeStatusSnapshot {\n return {\n state: report.state,\n acceptingWork: report.acceptingWork,\n numberOfRunningGraphs: report.numberOfRunningGraphs,\n isActive: report.isActive,\n isNonResponsive: report.isNonResponsive,\n isBlocked: report.isBlocked,\n cpuUsage: report.cpuUsage ?? null,\n memoryUsage: report.memoryUsage ?? null,\n eventLoopLag: report.eventLoopLag ?? null,\n };\n }\n\n private hasSignificantPeerRuntimeStatusChange(\n previous: PeerRuntimeStatusSnapshot | null,\n next: PeerRuntimeStatusSnapshot,\n ): boolean {\n if (!previous) {\n return true;\n }\n\n if (\n previous.state !== next.state ||\n previous.acceptingWork !== next.acceptingWork ||\n previous.numberOfRunningGraphs !== next.numberOfRunningGraphs ||\n previous.isActive !== next.isActive ||\n previous.isNonResponsive !== next.isNonResponsive ||\n previous.isBlocked !== next.isBlocked\n ) {\n return true;\n }\n\n const hasMetricChanged = (\n left: number | null,\n right: number | null,\n threshold: number,\n ): boolean => {\n if (left === null && right === null) {\n return false;\n }\n\n if (left === null || right === null) {\n return true;\n }\n\n return Math.abs(left - right) >= threshold;\n };\n\n return (\n hasMetricChanged(previous.cpuUsage, next.cpuUsage, 0.01) ||\n hasMetricChanged(previous.memoryUsage, next.memoryUsage, 0.01) ||\n hasMetricChanged(previous.eventLoopLag, next.eventLoopLag, 5)\n );\n }\n\n private readRuntimeStatusMetric(\n ctx: AnyObject,\n ...keys: string[]\n ): number | null | undefined {\n for (const key of keys) {\n const value = ctx[key] ?? ctx[`__${key}`];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n }\n\n const health =\n ctx.health && typeof ctx.health === \"object\"\n ? (ctx.health as AnyObject)\n : ctx.__health && typeof ctx.__health === \"object\"\n ? (ctx.__health as AnyObject)\n : null;\n if (!health) {\n return undefined;\n }\n\n for (const key of keys) {\n const value = health[key];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n }\n\n const runtimeMetrics =\n health.runtimeMetrics && typeof health.runtimeMetrics === \"object\"\n ? (health.runtimeMetrics as AnyObject)\n : null;\n if (!runtimeMetrics) {\n return undefined;\n }\n\n for (const key of keys) {\n const value = runtimeMetrics[key];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n }\n\n return undefined;\n }\n\n private normalizeRuntimeStatusReport(ctx: AnyObject): RuntimeStatusReport | null {\n const serviceName =\n ctx.serviceName ?? ctx.__serviceName ?? ctx.serviceInstance?.serviceName;\n const serviceInstanceId =\n ctx.serviceInstanceId ??\n ctx.__serviceInstanceId ??\n ctx.serviceInstance?.uuid;\n if (!serviceName || !serviceInstanceId) {\n return null;\n }\n const transportId =\n ctx.transportId ??\n ctx.serviceTransportId ??\n ctx.serviceTransport?.uuid ??\n undefined;\n const transportRole =\n ctx.transportRole ??\n ctx.transport_role ??\n ctx.serviceTransport?.role ??\n undefined;\n const transportOrigin =\n ctx.transportOrigin ??\n ctx.serviceOrigin ??\n ctx.serviceTransport?.origin ??\n undefined;\n const transportProtocols = Array.isArray(\n ctx.transportProtocols ?? ctx.serviceTransport?.protocols,\n )\n ? ((ctx.transportProtocols ?? ctx.serviceTransport?.protocols) as unknown[])\n .map((entry) => String(entry))\n .filter(\n (entry): entry is ServiceTransportProtocol =>\n entry === \"rest\" || entry === \"socket\",\n )\n : undefined;\n\n const numberOfRunningGraphs = Math.max(\n 0,\n Math.trunc(\n Number(ctx.numberOfRunningGraphs ?? ctx.__numberOfRunningGraphs ?? 0),\n ),\n );\n const isActive = Boolean(ctx.isActive ?? ctx.__active ?? true);\n const isNonResponsive = Boolean(ctx.isNonResponsive ?? false);\n const isBlocked = Boolean(ctx.isBlocked ?? false);\n\n const resolved = this.resolveRuntimeStatusSnapshot(\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n );\n\n return {\n serviceName,\n serviceInstanceId,\n transportId:\n typeof transportId === \"string\" && transportId.trim().length > 0\n ? transportId\n : undefined,\n transportRole:\n transportRole === \"internal\" || transportRole === \"public\"\n ? transportRole\n : undefined,\n transportOrigin:\n typeof transportOrigin === \"string\" && transportOrigin.trim().length > 0\n ? transportOrigin\n : undefined,\n transportProtocols:\n transportProtocols && transportProtocols.length > 0\n ? Array.from(new Set(transportProtocols))\n : undefined,\n isFrontend:\n typeof ctx.isFrontend === \"boolean\"\n ? ctx.isFrontend\n : typeof ctx.serviceInstance?.isFrontend === \"boolean\"\n ? ctx.serviceInstance.isFrontend\n : undefined,\n reportedAt:\n ctx.reportedAt ??\n (typeof ctx.__reportedAt === \"string\" ? ctx.__reportedAt : undefined) ??\n new Date().toISOString(),\n state:\n ctx.state === \"healthy\" ||\n ctx.state === \"degraded\" ||\n ctx.state === \"overloaded\" ||\n ctx.state === \"unavailable\"\n ? ctx.state\n : resolved.state,\n acceptingWork:\n typeof ctx.acceptingWork === \"boolean\"\n ? ctx.acceptingWork\n : resolved.acceptingWork,\n numberOfRunningGraphs,\n cpuUsage: this.readRuntimeStatusMetric(ctx, \"cpuUsage\", \"cpu\", \"cpuLoad\"),\n memoryUsage: this.readRuntimeStatusMetric(\n ctx,\n \"memoryUsage\",\n \"memory\",\n \"memoryPressure\",\n ),\n eventLoopLag: this.readRuntimeStatusMetric(\n ctx,\n \"eventLoopLag\",\n \"eventLoopLagMs\",\n ),\n isActive,\n isNonResponsive,\n isBlocked,\n health: (ctx.health ?? ctx.__health ?? {}) as AnyObject,\n };\n }\n\n private applyRuntimeStatusReport(report: RuntimeStatusReport): boolean {\n const instance = this.getInstance(report.serviceName, report.serviceInstanceId);\n if (!instance) {\n return false;\n }\n\n if (report.transportId && report.transportOrigin) {\n const protocols =\n report.transportProtocols && report.transportProtocols.length > 0\n ? report.transportProtocols\n : ([\"rest\", \"socket\"] as ServiceTransportProtocol[]);\n const existingTransport = this.getTransportById(instance, report.transportId);\n if (existingTransport) {\n if (report.transportRole) {\n existingTransport.role = report.transportRole;\n }\n existingTransport.origin = report.transportOrigin;\n existingTransport.protocols = protocols;\n } else {\n instance.transports.push({\n uuid: report.transportId,\n serviceInstanceId: report.serviceInstanceId,\n role: report.transportRole ?? this.getRoutingTransportRole(),\n origin: report.transportOrigin,\n protocols,\n securityProfile: null,\n authStrategy: null,\n });\n }\n\n const currentTransport = this.getTransportById(instance, report.transportId);\n if (currentTransport) {\n this.upsertRemoteRouteRecord(\n report.serviceName,\n report.serviceInstanceId,\n currentTransport,\n );\n }\n }\n\n if (typeof report.isFrontend === \"boolean\") {\n instance.isFrontend = report.isFrontend;\n }\n\n instance.numberOfRunningGraphs = report.numberOfRunningGraphs;\n const runtimeMetricsHealth = {\n cpuUsage: report.cpuUsage ?? null,\n memoryUsage: report.memoryUsage ?? null,\n eventLoopLag: report.eventLoopLag ?? null,\n runtimeMetrics:\n report.health?.runtimeMetrics &&\n typeof report.health.runtimeMetrics === \"object\"\n ? report.health.runtimeMetrics\n : undefined,\n };\n instance.isActive = report.isActive;\n instance.isNonResponsive = report.isNonResponsive;\n instance.isBlocked = report.isBlocked;\n instance.runtimeState = report.state;\n instance.acceptingWork = report.acceptingWork;\n instance.reportedAt = report.reportedAt;\n instance.health = {\n ...(instance.health ?? {}),\n ...(report.health ?? {}),\n ...runtimeMetricsHealth,\n runtimeStatus: {\n state: report.state,\n acceptingWork: report.acceptingWork,\n reportedAt: report.reportedAt,\n },\n };\n this.lastHeartbeatAtByInstance.set(report.serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(report.serviceInstanceId, 0);\n this.runtimeStatusFallbackInFlightByInstance.delete(\n report.serviceInstanceId,\n );\n\n return true;\n }\n\n private retireLocalRemoteInstance(\n instance: ServiceInstanceDescriptor,\n ): void {\n for (const transport of instance.transports) {\n this.clearTransportFailureState(instance.uuid, transport.uuid);\n const transportKey = this.buildTransportRouteKey(\n instance.serviceName,\n transport,\n );\n this.clearTransportClientState(instance, transport);\n transport.deleted = true;\n const activeRoute = this.remoteRoutesByKey.get(transportKey);\n if (\n !activeRoute ||\n (activeRoute.serviceInstanceId === instance.uuid &&\n activeRoute.serviceTransportId === transport.uuid)\n ) {\n this.clearRemoteRouteRecordIfCurrent(\n instance.serviceName,\n instance.uuid,\n transport,\n );\n this.emitTransportHandleShutdowns(Cadenza.emit, transportKey, transport);\n }\n }\n\n this.unregisterDependee(instance.uuid, instance.serviceName);\n this.lastHeartbeatAtByInstance.delete(instance.uuid);\n this.missedHeartbeatsByInstance.delete(instance.uuid);\n this.runtimeStatusFallbackInFlightByInstance.delete(instance.uuid);\n\n const instances = this.instances.get(instance.serviceName);\n if (!instances) {\n return;\n }\n\n const index = instances.findIndex((candidate) => candidate.uuid === instance.uuid);\n if (index >= 0) {\n instances.splice(index, 1);\n }\n\n if (instances.length === 0) {\n this.instances.delete(instance.serviceName);\n }\n }\n\n private applyRuntimeStatusIdentityReplacement(\n staleInstance: ServiceInstanceDescriptor,\n report: RuntimeStatusReport,\n diagnostic: RuntimeStatusFallbackRestDiagnostic,\n ): boolean {\n if (report.serviceName !== staleInstance.serviceName) {\n return false;\n }\n\n const authoritativeOrigin =\n report.transportOrigin ?? diagnostic.transport?.origin ?? null;\n const authoritativeRole =\n report.transportRole ??\n diagnostic.transport?.role ??\n this.getInstanceRouteRole(staleInstance);\n\n if (!authoritativeOrigin) {\n return false;\n }\n\n const staleOriginMatch = staleInstance.transports.some(\n (transport) =>\n !transport.deleted &&\n transport.role === authoritativeRole &&\n transport.origin === authoritativeOrigin,\n );\n if (!staleOriginMatch) {\n return false;\n }\n\n if (!this.instances.has(report.serviceName)) {\n this.instances.set(report.serviceName, []);\n }\n\n const instances = this.instances.get(report.serviceName)!;\n let replacement =\n this.getInstance(report.serviceName, report.serviceInstanceId) ?? null;\n\n if (!replacement) {\n replacement = {\n ...staleInstance,\n uuid: report.serviceInstanceId,\n numberOfRunningGraphs: report.numberOfRunningGraphs,\n isActive: report.isActive,\n isNonResponsive: report.isNonResponsive,\n isBlocked: report.isBlocked,\n runtimeState: report.state,\n acceptingWork: report.acceptingWork,\n reportedAt: report.reportedAt,\n health: {\n ...(staleInstance.health ?? {}),\n ...(report.health ?? {}),\n },\n isFrontend:\n typeof report.isFrontend === \"boolean\"\n ? report.isFrontend\n : staleInstance.isFrontend,\n transports: [],\n clientCreatedTransportIds: [],\n clientPendingTransportIds: [],\n clientReadyTransportIds: [],\n };\n instances.push(replacement);\n }\n\n const protocols =\n report.transportProtocols && report.transportProtocols.length > 0\n ? report.transportProtocols\n : diagnostic.transport?.protocols ?? ([\"rest\"] as ServiceTransportProtocol[]);\n const replacementTransportId =\n report.transportId ??\n replacement.transports.find(\n (transport) =>\n transport.role === authoritativeRole &&\n transport.origin === authoritativeOrigin &&\n !transport.deleted,\n )?.uuid ??\n diagnostic.transport?.uuid ??\n uuid();\n\n const existingTransport = this.getTransportById(\n replacement,\n replacementTransportId,\n );\n if (existingTransport) {\n existingTransport.serviceInstanceId = replacement.uuid;\n existingTransport.role = authoritativeRole;\n existingTransport.origin = authoritativeOrigin;\n existingTransport.protocols = protocols;\n existingTransport.deleted = false;\n } else {\n replacement.transports.push({\n uuid: replacementTransportId,\n serviceInstanceId: replacement.uuid,\n role: authoritativeRole,\n origin: authoritativeOrigin,\n protocols,\n securityProfile: null,\n authStrategy: null,\n deleted: false,\n });\n }\n\n if (!this.applyRuntimeStatusReport(report)) {\n return false;\n }\n\n this.clearTransportFailureState(replacement.uuid, replacementTransportId);\n const replacementTransport = this.getTransportById(\n replacement,\n replacementTransportId,\n );\n if (replacementTransport) {\n this.markTransportClientReady(replacement, replacementTransport);\n }\n this.retireLocalRemoteInstance(staleInstance);\n this.refreshRoutingCooldownsForService(report.serviceName);\n\n return true;\n }\n\n public applyAuthorityRuntimeStatusReport(\n report: AuthorityRuntimeStatusReport,\n ): boolean {\n return this.applyRuntimeStatusReport(report);\n }\n\n private buildLocalRuntimeStatusReport(\n detailLevel: \"minimal\" | \"full\" = \"minimal\",\n ): RuntimeStatusReport | null {\n if (!this.serviceName || !this.serviceInstanceId) {\n return null;\n }\n\n const localInstance = this.getLocalInstance();\n if (!localInstance) {\n return null;\n }\n\n const numberOfRunningGraphs =\n this.activeRoutineExecutionIds.size || this.numberOfRunningGraphs || 0;\n this.numberOfRunningGraphs = numberOfRunningGraphs;\n const runtimeMetricsSnapshot = this.getLatestRuntimeMetricsSnapshot();\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n numberOfRunningGraphs,\n localInstance.isActive,\n localInstance.isNonResponsive,\n localInstance.isBlocked,\n );\n const reportedAt = new Date().toISOString();\n\n const transport = this.getRouteableTransport(\n localInstance,\n this.useSocket ? \"socket\" : \"rest\",\n \"internal\",\n );\n\n const report: RuntimeStatusReport = {\n serviceName: this.serviceName,\n serviceInstanceId: this.serviceInstanceId,\n transportId: transport?.uuid ?? undefined,\n transportRole: transport?.role ?? undefined,\n transportOrigin: transport?.origin ?? undefined,\n transportProtocols: transport?.protocols ?? undefined,\n isFrontend: localInstance.isFrontend,\n reportedAt,\n state: snapshot.state,\n acceptingWork: snapshot.acceptingWork,\n numberOfRunningGraphs: snapshot.numberOfRunningGraphs,\n cpuUsage: runtimeMetricsSnapshot?.cpuUsage ?? null,\n memoryUsage: runtimeMetricsSnapshot?.memoryUsage ?? null,\n eventLoopLag: runtimeMetricsSnapshot?.eventLoopLag ?? null,\n isActive: snapshot.isActive,\n isNonResponsive: snapshot.isNonResponsive,\n isBlocked: snapshot.isBlocked,\n health: {\n ...(localInstance.health ?? {}),\n ...(this.buildRuntimeMetricsHealthPayload(runtimeMetricsSnapshot) ?? {}),\n runtimeStatus: {\n state: snapshot.state,\n acceptingWork: snapshot.acceptingWork,\n reportedAt,\n },\n },\n };\n\n this.applyRuntimeStatusReport(report);\n return detailLevel === \"full\"\n ? report\n : this.stripRuntimeStatusReportForPeer(report);\n }\n\n private selectRuntimeStatusReportForTarget(\n inquiryResult: AnyObject,\n targetServiceName: string,\n targetServiceInstanceId: string,\n ): RuntimeStatusReport | null {\n const reports = Array.isArray(inquiryResult.runtimeStatusReports)\n ? inquiryResult.runtimeStatusReports\n : [];\n\n for (const candidate of reports) {\n const report = this.normalizeRuntimeStatusReport(candidate);\n if (!report) {\n continue;\n }\n\n if (\n report.serviceName === targetServiceName &&\n report.serviceInstanceId === targetServiceInstanceId\n ) {\n return report;\n }\n }\n\n return null;\n }\n\n private async resolveRuntimeStatusFallbackInquiry(\n serviceName: string,\n serviceInstanceId: string,\n options: {\n detailLevel?: \"minimal\" | \"full\";\n overallTimeoutMs?: number;\n perResponderTimeoutMs?: number;\n requireComplete?: boolean;\n } = {},\n ): Promise<{ report: RuntimeStatusReport; inquiryMeta: AnyObject }> {\n const instance = this.getInstance(serviceName, serviceInstanceId);\n const directStatusCheck = instance\n ? await this.requestRuntimeStatusViaRest(\n instance,\n serviceName,\n serviceInstanceId,\n )\n : {\n report: null,\n diagnostic: {\n attempted: false,\n outcome: \"instance_missing\",\n } satisfies RuntimeStatusFallbackRestDiagnostic,\n };\n\n if (directStatusCheck.report) {\n if (!this.applyRuntimeStatusReport(directStatusCheck.report)) {\n throw this.createRuntimeStatusFallbackError(\n `No tracked instance for runtime fallback ${serviceName}/${serviceInstanceId}`,\n {\n target: {\n serviceName,\n serviceInstanceId,\n },\n instance: this.summarizeInstanceForRuntimeStatusFallback(instance),\n directStatusCheck: directStatusCheck.diagnostic,\n inquiry: {\n meta: {},\n reportTargets: [],\n },\n },\n );\n }\n\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n\n return {\n report: directStatusCheck.report,\n inquiryMeta: {\n inquiry: META_RUNTIME_STATUS_INTENT,\n responded: 1,\n failed: 0,\n timedOut: 0,\n pending: 0,\n directStatusCheck: true,\n },\n };\n }\n\n if (\n instance &&\n directStatusCheck.replacementReport &&\n this.applyRuntimeStatusIdentityReplacement(\n instance,\n directStatusCheck.replacementReport,\n directStatusCheck.diagnostic,\n )\n ) {\n return {\n report: directStatusCheck.replacementReport,\n inquiryMeta: {\n inquiry: META_RUNTIME_STATUS_INTENT,\n responded: 1,\n failed: 0,\n timedOut: 0,\n pending: 0,\n directStatusCheck: true,\n identityReplacement: true,\n },\n };\n }\n\n const inquiryResult = await Cadenza.inquire(\n META_RUNTIME_STATUS_INTENT,\n {\n targetServiceName: serviceName,\n targetServiceInstanceId: serviceInstanceId,\n detailLevel: options.detailLevel ?? \"minimal\",\n __preferredTransportProtocol: \"rest\",\n },\n {\n overallTimeoutMs:\n options.overallTimeoutMs ?? this.runtimeStatusFallbackTimeoutMs,\n perResponderTimeoutMs:\n options.perResponderTimeoutMs ??\n Math.max(250, Math.floor(this.runtimeStatusFallbackTimeoutMs * 0.75)),\n requireComplete: options.requireComplete ?? false,\n },\n );\n\n const report = this.selectRuntimeStatusReportForTarget(\n inquiryResult,\n serviceName,\n serviceInstanceId,\n );\n\n if (!report) {\n throw this.createRuntimeStatusFallbackError(\n `No runtime status report for ${serviceName}/${serviceInstanceId}`,\n {\n target: {\n serviceName,\n serviceInstanceId,\n },\n instance: this.summarizeInstanceForRuntimeStatusFallback(instance),\n directStatusCheck: directStatusCheck.diagnostic,\n inquiry: {\n meta:\n inquiryResult.__inquiryMeta &&\n typeof inquiryResult.__inquiryMeta === \"object\"\n ? inquiryResult.__inquiryMeta\n : {},\n reportTargets: this.summarizeRuntimeStatusInquiryReports(inquiryResult),\n },\n },\n );\n }\n\n if (!this.applyRuntimeStatusReport(report)) {\n throw this.createRuntimeStatusFallbackError(\n `No tracked instance for runtime fallback ${serviceName}/${serviceInstanceId}`,\n {\n target: {\n serviceName,\n serviceInstanceId,\n },\n instance: this.summarizeInstanceForRuntimeStatusFallback(instance),\n directStatusCheck: directStatusCheck.diagnostic,\n inquiry: {\n meta:\n inquiryResult.__inquiryMeta &&\n typeof inquiryResult.__inquiryMeta === \"object\"\n ? inquiryResult.__inquiryMeta\n : {},\n reportTargets: this.summarizeRuntimeStatusInquiryReports(inquiryResult),\n },\n },\n );\n }\n\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n\n return {\n report,\n inquiryMeta: inquiryResult.__inquiryMeta ?? {},\n };\n }\n\n private async requestRuntimeStatusViaRest(\n instance: ServiceInstanceDescriptor,\n serviceName: string,\n serviceInstanceId: string,\n ): Promise<{\n report: RuntimeStatusReport | null;\n replacementReport?: RuntimeStatusReport | null;\n diagnostic: RuntimeStatusFallbackRestDiagnostic;\n }> {\n if (typeof globalThis.fetch !== \"function\") {\n return {\n report: null,\n diagnostic: {\n attempted: false,\n outcome: \"fetch_unavailable\",\n },\n };\n }\n\n const transport = this.getRouteableTransport(instance, \"rest\");\n if (!transport) {\n return {\n report: null,\n diagnostic: {\n attempted: false,\n outcome: \"no_rest_transport\",\n },\n };\n }\n\n const controller =\n typeof AbortController === \"function\" ? new AbortController() : null;\n const timeoutId = controller\n ? setTimeout(() => controller.abort(), this.runtimeStatusFallbackTimeoutMs)\n : null;\n\n try {\n const response = await globalThis.fetch(`${transport.origin}/status`, {\n method: \"GET\",\n signal: controller?.signal,\n });\n\n if (\"ok\" in response && response.ok === false) {\n return {\n report: null,\n diagnostic: {\n attempted: true,\n outcome: \"http_error\",\n transport: this.summarizeTransportForDebug(transport),\n responseStatus:\n typeof response.status === \"number\" ? response.status : undefined,\n responseStatusText:\n typeof response.statusText === \"string\"\n ? response.statusText\n : undefined,\n },\n };\n }\n\n const payload =\n typeof response.json === \"function\" ? await response.json() : response;\n const report = this.normalizeRuntimeStatusReport({\n ...payload,\n serviceTransportId: payload?.serviceTransportId ?? transport.uuid,\n serviceOrigin: payload?.serviceOrigin ?? transport.origin,\n transportProtocols: payload?.transportProtocols ?? transport.protocols,\n });\n\n if (!report) {\n return {\n report: null,\n diagnostic: {\n attempted: true,\n outcome: \"invalid_report\",\n transport: this.summarizeTransportForDebug(transport),\n payloadKeys:\n payload && typeof payload === \"object\"\n ? Object.keys(payload as Record<string, unknown>).sort()\n : [],\n },\n };\n }\n\n if (\n report.serviceName !== serviceName ||\n report.serviceInstanceId !== serviceInstanceId\n ) {\n return {\n report: null,\n replacementReport:\n report.serviceName === serviceName &&\n (report.transportOrigin ?? transport.origin) === transport.origin\n ? report\n : null,\n diagnostic: {\n attempted: true,\n outcome: \"identity_mismatch\",\n transport: this.summarizeTransportForDebug(transport),\n payloadServiceName: report.serviceName,\n payloadServiceInstanceId: report.serviceInstanceId,\n },\n };\n }\n\n return {\n report,\n diagnostic: {\n attempted: true,\n outcome: \"matched\",\n transport: this.summarizeTransportForDebug(transport),\n },\n };\n } catch (error) {\n return {\n report: null,\n diagnostic: {\n attempted: true,\n outcome: \"fetch_error\",\n transport: this.summarizeTransportForDebug(transport),\n error: error instanceof Error ? error.message : String(error),\n },\n };\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n }\n\n private shouldRefreshRuntimeStatusViaRest(\n instance: ServiceInstanceDescriptor,\n now = Date.now(),\n ): boolean {\n if (!instance.isActive || instance.isBlocked) {\n return false;\n }\n\n if (this.hasReadyClientTransportForProtocol(instance, \"socket\")) {\n return false;\n }\n\n if (!this.getRouteableTransport(instance, \"rest\")) {\n return false;\n }\n\n const lastHeartbeatAt = this.lastHeartbeatAtByInstance.get(instance.uuid) ?? 0;\n if (lastHeartbeatAt <= 0) {\n return true;\n }\n\n return now - lastHeartbeatAt >= this.runtimeStatusRestRefreshIntervalMs;\n }\n\n private getAuthorityRestTransport():\n | {\n instance: ServiceInstanceDescriptor;\n transport: ServiceTransportDescriptor;\n }\n | null {\n const authorityInstances = this.instances.get(\"CadenzaDB\") ?? [];\n\n for (const instance of authorityInstances) {\n const transport = this.getRouteableTransport(instance, \"rest\", \"internal\");\n if (transport) {\n return {\n instance,\n transport,\n };\n }\n }\n\n return null;\n }\n\n private async delegateAuthorityLifecycleUpdate(\n remoteRoutineName: string,\n context: AnyObject,\n timeoutMs: number,\n ): Promise<boolean> {\n if (typeof globalThis.fetch !== \"function\") {\n return false;\n }\n\n const authorityTarget = this.getAuthorityRestTransport();\n if (!authorityTarget) {\n return false;\n }\n\n const controller =\n typeof AbortController === \"function\" ? new AbortController() : null;\n const timeoutId = controller\n ? setTimeout(() => controller.abort(), timeoutMs)\n : null;\n\n try {\n const requestBody = stripDelegationRequestSnapshot(\n ensureDelegationContextMetadata(\n attachDelegationRequestSnapshot({\n ...context,\n __remoteRoutineName: remoteRoutineName,\n __serviceName: \"CadenzaDB\",\n __localServiceName: this.serviceName,\n __timeout: timeoutMs,\n __syncing: true,\n __metadata: {\n ...(context.__metadata && typeof context.__metadata === \"object\"\n ? context.__metadata\n : {}),\n __timeout: timeoutMs,\n __syncing: true,\n },\n }),\n ),\n );\n\n const response = await globalThis.fetch(\n `${authorityTarget.transport.origin}/delegation`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(requestBody),\n signal: controller?.signal,\n },\n );\n\n if (\"ok\" in response && response.ok === false) {\n return false;\n }\n\n const payload =\n typeof response.json === \"function\" ? await response.json() : response;\n\n return !(\n payload?.errored === true ||\n payload?.failed === true ||\n payload?.__status === \"error\"\n );\n } catch {\n return false;\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n }\n\n async reportLocalShutdownToAuthority(\n reason: string,\n timeoutMs: number,\n ): Promise<boolean> {\n if (\n !this.connectsToCadenzaDB ||\n this.serviceName === \"CadenzaDB\" ||\n !this.serviceInstanceId\n ) {\n return false;\n }\n\n const localInstance = this.getLocalInstance();\n if (!localInstance || !isPersistedUuid(localInstance.uuid)) {\n return false;\n }\n\n const reportedAt = new Date().toISOString();\n this.applyInstanceLifecycleState(localInstance, {\n isActive: false,\n isNonResponsive: false,\n reportedAt,\n });\n\n const instancePersisted = await this.delegateAuthorityLifecycleUpdate(\n \"Update service_instance\",\n {\n reason,\n graceful: true,\n data: {\n is_active: false,\n is_non_responsive: false,\n deleted: false,\n last_active: localInstance.reportedAt,\n health: localInstance.health ?? {},\n },\n queryData: {\n filter: {\n uuid: localInstance.uuid,\n },\n },\n __serviceInstanceId: localInstance.uuid,\n },\n Math.max(1_000, timeoutMs),\n );\n\n if (!instancePersisted) {\n return false;\n }\n\n for (const transport of localInstance.transports) {\n if (!isPersistedUuid(transport.uuid)) {\n continue;\n }\n\n transport.deleted = true;\n await this.delegateAuthorityLifecycleUpdate(\n \"Update service_instance_transport\",\n {\n reason,\n graceful: true,\n data: {\n deleted: true,\n },\n queryData: {\n filter: {\n uuid: transport.uuid,\n },\n },\n __serviceInstanceId: localInstance.uuid,\n __serviceName: localInstance.serviceName,\n },\n Math.max(500, Math.floor(timeoutMs / 2)),\n );\n }\n\n return true;\n }\n\n private evaluateDependencyReadinessDetail(\n serviceName: string,\n serviceInstanceId: string,\n now = Date.now(),\n ): DependencyReadinessDetail {\n const instance = this.getInstance(serviceName, serviceInstanceId);\n const missedHeartbeats = this.getHeartbeatMisses(serviceInstanceId, now);\n const runtimeState = instance\n ? (instance.runtimeState ??\n this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n ).state)\n : \"unavailable\";\n const acceptingWork = instance\n ? (typeof instance.acceptingWork === \"boolean\"\n ? instance.acceptingWork\n : this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n ).acceptingWork)\n : false;\n\n const evaluation = evaluateDependencyReadiness({\n exists: Boolean(instance),\n runtimeState,\n acceptingWork,\n missedHeartbeats,\n missThreshold: this.runtimeStatusMissThreshold,\n });\n\n const lastHeartbeat = this.lastHeartbeatAtByInstance.get(serviceInstanceId);\n return {\n serviceName,\n serviceInstanceId,\n dependencyState: evaluation.state,\n runtimeState,\n acceptingWork,\n missedHeartbeats,\n stale: evaluation.stale,\n blocked: evaluation.blocked,\n reason: evaluation.reason,\n lastHeartbeatAt: lastHeartbeat\n ? new Date(lastHeartbeat).toISOString()\n : null,\n reportedAt: instance?.reportedAt ?? null,\n };\n }\n\n private async buildLocalReadinessReport(\n options: {\n detailLevel?: \"minimal\" | \"full\";\n includeDependencies?: boolean;\n refreshStaleDependencies?: boolean;\n } = {},\n ): Promise<ReadinessReport | null> {\n const localRuntime = this.buildLocalRuntimeStatusReport(\"minimal\");\n if (!localRuntime) {\n return null;\n }\n\n const detailLevel = options.detailLevel ?? \"minimal\";\n const includeDependencies =\n options.includeDependencies ?? detailLevel === \"full\";\n const refreshStaleDependencies = options.refreshStaleDependencies ?? true;\n const dependencyPairs = Array.from(this.readinessDependeesByService.entries())\n .flatMap(([serviceName, instanceIds]) =>\n Array.from(instanceIds).map((serviceInstanceId) => ({\n serviceName,\n serviceInstanceId,\n })),\n )\n .sort((left, right) => {\n if (left.serviceName !== right.serviceName) {\n return left.serviceName.localeCompare(right.serviceName);\n }\n return left.serviceInstanceId.localeCompare(right.serviceInstanceId);\n });\n\n if (refreshStaleDependencies) {\n for (const dependency of dependencyPairs) {\n const misses = this.getHeartbeatMisses(dependency.serviceInstanceId);\n if (misses < this.runtimeStatusMissThreshold) {\n continue;\n }\n\n if (\n this.runtimeStatusFallbackInFlightByInstance.has(\n dependency.serviceInstanceId,\n )\n ) {\n continue;\n }\n\n this.runtimeStatusFallbackInFlightByInstance.add(\n dependency.serviceInstanceId,\n );\n try {\n await this.resolveRuntimeStatusFallbackInquiry(\n dependency.serviceName,\n dependency.serviceInstanceId,\n );\n } catch (error) {\n Cadenza.log(\n \"Readiness dependency fallback failed.\",\n {\n serviceName: dependency.serviceName,\n serviceInstanceId: dependency.serviceInstanceId,\n error: error instanceof Error ? error.message : String(error),\n },\n \"warning\",\n );\n } finally {\n this.runtimeStatusFallbackInFlightByInstance.delete(\n dependency.serviceInstanceId,\n );\n }\n }\n }\n\n const now = Date.now();\n const dependencyDetails = dependencyPairs.map((dependency) =>\n this.evaluateDependencyReadinessDetail(\n dependency.serviceName,\n dependency.serviceInstanceId,\n now,\n ),\n );\n const dependencySummary = summarizeDependencyReadiness(\n dependencyDetails.map((detail) => ({\n state: detail.dependencyState,\n stale: detail.stale,\n blocked: detail.blocked,\n reason: detail.reason,\n })),\n );\n const readinessState = resolveServiceReadinessState(\n localRuntime.state,\n localRuntime.acceptingWork,\n dependencySummary,\n );\n\n return {\n serviceName: localRuntime.serviceName,\n serviceInstanceId: localRuntime.serviceInstanceId,\n reportedAt: new Date(now).toISOString(),\n readinessState,\n runtimeState: localRuntime.state,\n acceptingWork: localRuntime.acceptingWork,\n dependencySummary,\n ...(includeDependencies ? { dependencies: dependencyDetails } : {}),\n };\n }\n\n /**\n * Initializes a private constructor for managing service instances, remote signals,\n * service health, and handling updates or synchronization tasks. The constructor\n * creates a variety of meta tasks that process different lifecycle events and\n * service-related updates in a distributed service registry model.\n *\n * @return {Object} An instance of the constructed class with initialized tasks\n * and state management necessary to process service-related events.\n */\n private constructor() {\n Cadenza.defineIntent({\n name: META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT,\n description:\n \"Gather transport diagnostics across all services and communication clients.\",\n input: {\n type: \"object\",\n properties: {\n detailLevel: {\n type: \"string\",\n constraints: {\n oneOf: [\"summary\", \"full\"],\n },\n },\n includeErrorHistory: {\n type: \"boolean\",\n },\n errorHistoryLimit: {\n type: \"number\",\n constraints: {\n min: 1,\n max: 200,\n },\n },\n },\n },\n output: {\n type: \"object\",\n properties: {\n transportDiagnostics: {\n type: \"object\",\n },\n },\n },\n });\n\n Cadenza.defineIntent({\n name: META_RUNTIME_STATUS_INTENT,\n description:\n \"Gather lightweight runtime status reports from services in the distributed runtime.\",\n input: {\n type: \"object\",\n properties: {\n detailLevel: {\n type: \"string\",\n constraints: {\n oneOf: [\"minimal\", \"full\"],\n },\n },\n targetServiceName: {\n type: \"string\",\n },\n targetServiceInstanceId: {\n type: \"string\",\n },\n },\n },\n output: {\n type: \"object\",\n properties: {\n runtimeStatusReports: {\n type: \"array\",\n },\n },\n },\n });\n\n Cadenza.defineIntent({\n name: AUTHORITY_RUNTIME_STATUS_REPORT_INTENT,\n description:\n \"Apply one lightweight runtime-status report on authority without persisting heartbeat chatter to the durable service-instance registry.\",\n input: {\n type: \"object\",\n properties: {\n serviceName: {\n type: \"string\",\n },\n serviceInstanceId: {\n type: \"string\",\n },\n reportedAt: {\n type: \"string\",\n },\n },\n required: [\"serviceName\", \"serviceInstanceId\", \"reportedAt\"],\n },\n output: {\n type: \"object\",\n properties: {\n applied: {\n type: \"boolean\",\n },\n serviceName: {\n type: \"string\",\n },\n serviceInstanceId: {\n type: \"string\",\n },\n },\n },\n });\n\n Cadenza.createMetaTask(\n \"Respond runtime status inquiry\",\n (ctx) => {\n const targetServiceName = ctx.targetServiceName;\n const targetServiceInstanceId = ctx.targetServiceInstanceId;\n const detailLevel: \"minimal\" | \"full\" =\n ctx.detailLevel === \"full\" ? \"full\" : \"minimal\";\n const report = this.buildLocalRuntimeStatusReport(detailLevel);\n if (!report) {\n return {};\n }\n\n if (\n targetServiceName &&\n targetServiceName !== report.serviceName\n ) {\n return {};\n }\n\n if (\n targetServiceInstanceId &&\n targetServiceInstanceId !== report.serviceInstanceId\n ) {\n return {};\n }\n\n return {\n runtimeStatusReports: [report],\n };\n },\n \"Responds to runtime-status inquiries with local service instance status.\",\n ).respondsTo(META_RUNTIME_STATUS_INTENT);\n\n Cadenza.defineIntent({\n name: META_READINESS_INTENT,\n description:\n \"Gather service readiness reports derived from local runtime status and required dependees.\",\n input: {\n type: \"object\",\n properties: {\n detailLevel: {\n type: \"string\",\n constraints: {\n oneOf: [\"minimal\", \"full\"],\n },\n },\n includeDependencies: {\n type: \"boolean\",\n },\n refreshStaleDependencies: {\n type: \"boolean\",\n },\n targetServiceName: {\n type: \"string\",\n },\n targetServiceInstanceId: {\n type: \"string\",\n },\n },\n },\n output: {\n type: \"object\",\n properties: {\n readinessReports: {\n type: \"array\",\n },\n },\n },\n });\n\n Cadenza.createMetaTask(\n \"Respond readiness inquiry\",\n async (ctx) => {\n const targetServiceName = ctx.targetServiceName;\n const targetServiceInstanceId = ctx.targetServiceInstanceId;\n const report = await this.buildLocalReadinessReport({\n detailLevel: ctx.detailLevel === \"full\" ? \"full\" : \"minimal\",\n includeDependencies: ctx.includeDependencies,\n refreshStaleDependencies: ctx.refreshStaleDependencies,\n });\n if (!report) {\n return {};\n }\n\n if (targetServiceName && targetServiceName !== report.serviceName) {\n return {};\n }\n\n if (\n targetServiceInstanceId &&\n targetServiceInstanceId !== report.serviceInstanceId\n ) {\n return {};\n }\n\n return {\n readinessReports: [report],\n };\n },\n \"Responds to distributed readiness inquiries using required dependee health.\",\n ).respondsTo(META_READINESS_INTENT);\n\n this.handleInstanceUpdateTask = Cadenza.createMetaTask(\n \"Handle Instance Update\",\n (ctx, emit) => {\n const serviceInstance = normalizeServiceInstanceDescriptor(\n ctx.serviceInstance ??\n ctx.data ??\n ctx.queryData?.data ??\n (ctx.__serviceInstanceId || ctx.serviceInstanceId\n ? {\n uuid: ctx.__serviceInstanceId ?? ctx.serviceInstanceId,\n serviceName: ctx.__serviceName ?? ctx.serviceName,\n isFrontend: !!ctx.isFrontend,\n isActive:\n typeof ctx.isActive === \"boolean\"\n ? ctx.isActive\n : typeof ctx.__active === \"boolean\"\n ? ctx.__active\n : true,\n isNonResponsive: !!ctx.isNonResponsive,\n isBlocked: !!ctx.isBlocked,\n health: (ctx.health ?? ctx.__health ?? {}) as AnyObject,\n numberOfRunningGraphs:\n ctx.numberOfRunningGraphs ?? ctx.__numberOfRunningGraphs ?? 0,\n isPrimary: false,\n isBootstrapPlaceholder: !!ctx.isBootstrapPlaceholder,\n transports: ctx.transports ?? [],\n }\n : undefined),\n );\n if (!serviceInstance) {\n return false;\n }\n const uuid = serviceInstance.uuid;\n const serviceName = serviceInstance.serviceName;\n const deleted = Boolean(\n ctx.deleted ?? ctx.serviceInstance?.deleted ?? ctx.data?.deleted,\n );\n if (uuid === this.serviceInstanceId) return;\n\n if (deleted) {\n const existingInstance = this.instances\n .get(serviceName)\n ?.find((instance) => instance.uuid === uuid);\n const indexToDelete =\n this.instances.get(serviceName)?.findIndex((i) => i.uuid === uuid) ?? -1;\n if (indexToDelete >= 0 && existingInstance) {\n this.instances.get(serviceName)?.splice(indexToDelete, 1);\n for (const transport of existingInstance.transports) {\n const transportKey = this.buildTransportRouteKey(\n existingInstance.serviceName,\n transport,\n );\n const activeRoute = this.remoteRoutesByKey.get(transportKey);\n if (\n !activeRoute ||\n (activeRoute.serviceInstanceId === existingInstance.uuid &&\n activeRoute.serviceTransportId === transport.uuid)\n ) {\n this.clearRemoteRouteRecordIfCurrent(\n existingInstance.serviceName,\n existingInstance.uuid,\n transport,\n );\n this.emitTransportHandleShutdowns(emit, transportKey, transport);\n }\n }\n }\n\n if (this.instances.get(serviceName)?.length === 0) {\n this.instances.delete(serviceName);\n }\n\n this.unregisterDependee(uuid, serviceName);\n\n return;\n }\n\n if (!this.instances.has(serviceName))\n this.instances.set(serviceName, []);\n const instances = this.instances.get(serviceName)!;\n const existing = instances.find((i) => i.uuid === uuid);\n const previousReportedAtMs = Date.parse(existing?.reportedAt ?? \"\");\n\n if (existing) {\n Object.assign(existing, {\n ...serviceInstance,\n transports:\n serviceInstance.transports.length > 0\n ? serviceInstance.transports\n : existing.transports,\n clientCreatedTransportIds: existing.clientCreatedTransportIds ?? [],\n clientPendingTransportIds: existing.clientPendingTransportIds ?? [],\n clientReadyTransportIds: existing.clientReadyTransportIds ?? [],\n });\n } else {\n instances.push(serviceInstance);\n }\n\n const trackedInstance =\n existing ?? instances.find((instance) => instance.uuid === uuid);\n if (trackedInstance) {\n for (const transport of trackedInstance.transports) {\n if (!transport.deleted) {\n this.upsertRemoteRouteRecord(serviceName, trackedInstance.uuid, transport);\n }\n }\n const snapshot = this.resolveRuntimeStatusSnapshot(\n trackedInstance.numberOfRunningGraphs ?? 0,\n trackedInstance.isActive,\n trackedInstance.isNonResponsive,\n trackedInstance.isBlocked,\n );\n trackedInstance.runtimeState = snapshot.state;\n trackedInstance.acceptingWork = snapshot.acceptingWork;\n trackedInstance.reportedAt =\n trackedInstance.reportedAt ?? new Date().toISOString();\n\n const incomingReportedAtMs = Date.parse(trackedInstance.reportedAt ?? \"\");\n const reportedAtAdvanced =\n Number.isFinite(incomingReportedAtMs) &&\n (!Number.isFinite(previousReportedAtMs) ||\n incomingReportedAtMs > previousReportedAtMs);\n\n if (\n reportedAtAdvanced &&\n trackedInstance.isActive &&\n !trackedInstance.isNonResponsive\n ) {\n this.lastHeartbeatAtByInstance.set(uuid, Date.now());\n this.missedHeartbeatsByInstance.set(uuid, 0);\n this.runtimeStatusFallbackInFlightByInstance.delete(uuid);\n }\n }\n\n this.refreshRoutingCooldownsForService(serviceName);\n\n if (!serviceInstance.isBootstrapPlaceholder) {\n this.reconcileBootstrapPlaceholderInstance(serviceName, uuid, emit);\n }\n\n const routeableTransport =\n trackedInstance &&\n this.getRouteableTransport(\n trackedInstance,\n undefined,\n this.getInstanceRouteRole(trackedInstance),\n );\n if (\n trackedInstance &&\n routeableTransport &&\n this.shouldRetireSupersededInstancesForTransport(\n trackedInstance,\n routeableTransport,\n )\n ) {\n this.retireSupersededInstancesForTransport(\n trackedInstance,\n routeableTransport,\n emit,\n );\n }\n\n if (this.serviceName === serviceName) {\n return false;\n }\n\n if (trackedInstance?.isFrontend) {\n return true;\n }\n\n if (\n this.deputies.has(serviceName) ||\n this.remoteIntents.has(serviceName) ||\n this.remoteSignals.has(serviceName)\n ) {\n const shouldEagerlyConnect =\n this.shouldEagerlyEstablishRemoteClients(ctx);\n const connected = shouldEagerlyConnect\n ? this.ensureDependeeClientForInstance(trackedInstance!, emit, ctx)\n : false;\n\n if (shouldEagerlyConnect && !connected) {\n emit(\"meta.service_registry.routeable_transport_missing\", {\n serviceName,\n serviceInstanceId: uuid,\n requiredRole: this.getRoutingTransportRole(),\n isFrontend: this.isFrontend,\n });\n }\n }\n\n return true;\n },\n \"Handles instance updates to service instances\",\n )\n .emits(\"meta.service_registry.service_discovered\")\n .doOn(\n \"meta.initializing_service\",\n \"global.meta.service_instance.inserted\",\n \"global.meta.service_instance.updated\",\n \"meta.service_instance.inserted\",\n \"meta.service_instance.updated\",\n )\n .attachSignal(\n \"meta.service_registry.dependee_registered\",\n \"meta.socket_shutdown_requested\",\n \"meta.fetch.destroy_requested\",\n );\n\n this.handleTransportUpdateTask = Cadenza.createMetaTask(\n \"Handle Transport Update\",\n async (ctx, emit) => {\n const transport = normalizeServiceTransportDescriptor(\n ctx.serviceTransport ?? ctx.data ?? ctx.queryData?.data ?? ctx,\n );\n if (!transport) {\n return false;\n }\n\n let ownerInstance: ServiceInstanceDescriptor | undefined;\n for (const instances of this.instances.values()) {\n ownerInstance = instances.find(\n (instance) => instance.uuid === transport.serviceInstanceId,\n );\n if (ownerInstance) {\n break;\n }\n }\n\n if (!ownerInstance) {\n ownerInstance = await this.hydrateAuthorityInstanceForTransport(transport);\n }\n\n if (!ownerInstance) {\n return false;\n }\n\n if (transport.deleted) {\n this.clearTransportFailureState(ownerInstance.uuid, transport.uuid);\n const transportKey = this.buildTransportRouteKey(\n ownerInstance.serviceName,\n transport,\n );\n this.clearTransportClientState(ownerInstance, transport);\n ownerInstance.transports = ownerInstance.transports.filter(\n (existingTransport) => existingTransport.uuid !== transport.uuid,\n );\n const activeRoute = this.remoteRoutesByKey.get(transportKey);\n if (\n !activeRoute ||\n (activeRoute.serviceInstanceId === ownerInstance.uuid &&\n activeRoute.serviceTransportId === transport.uuid)\n ) {\n this.clearRemoteRouteRecordIfCurrent(\n ownerInstance.serviceName,\n ownerInstance.uuid,\n transport,\n );\n this.emitTransportHandleShutdowns(emit, transportKey, transport);\n }\n this.refreshRoutingCooldownsForService(ownerInstance.serviceName);\n return true;\n }\n\n const existingTransport = this.getTransportById(ownerInstance, transport.uuid);\n if (existingTransport) {\n Object.assign(existingTransport, transport);\n } else {\n ownerInstance.transports.push(transport);\n }\n\n this.upsertRemoteRouteRecord(\n ownerInstance.serviceName,\n ownerInstance.uuid,\n transport,\n );\n\n this.clearTransportFailureState(ownerInstance.uuid, transport.uuid);\n\n this.refreshRoutingCooldownsForService(ownerInstance.serviceName);\n\n const hasRemoteInterest =\n !ownerInstance.isFrontend &&\n (this.deputies.has(ownerInstance.serviceName) ||\n this.remoteIntents.has(ownerInstance.serviceName) ||\n this.remoteSignals.has(ownerInstance.serviceName)) &&\n transport.role === this.getRoutingTransportRole();\n\n if (this.shouldRetireSupersededInstancesForTransport(ownerInstance, transport)) {\n this.retireSupersededInstancesForTransport(ownerInstance, transport, emit);\n }\n\n if (ownerInstance.uuid === this.serviceInstanceId) {\n if (\n !ownerInstance.isFrontend &&\n transport.role === this.getInstanceRouteRole(ownerInstance)\n ) {\n this.markTransportClientReady(ownerInstance, transport);\n }\n return true;\n }\n\n if (!hasRemoteInterest) {\n return true;\n }\n\n if (this.shouldEagerlyEstablishRemoteClients(ctx)) {\n this.ensureDependeeClientForInstance(ownerInstance, emit, ctx);\n }\n\n return true;\n },\n \"Handles service transport updates independently from instance rows.\",\n )\n .doOn(\n \"global.meta.service_instance_transport.inserted\",\n \"global.meta.service_instance_transport.updated\",\n \"meta.service_instance_transport.inserted\",\n \"meta.service_instance_transport.updated\",\n )\n .attachSignal(\n \"meta.service_registry.dependee_registered\",\n \"meta.socket_shutdown_requested\",\n \"meta.fetch.destroy_requested\",\n );\n\n Cadenza.createMetaTask(\n \"Track dependee registration\",\n (ctx) => {\n if (!ctx.serviceName || !ctx.serviceInstanceId) {\n return false;\n }\n\n this.markTransportReadyFromContext(ctx);\n this.registerDependee(ctx.serviceName, ctx.serviceInstanceId, {\n requiredForReadiness: this.resolveRequiredReadinessFromCommunicationTypes(\n ctx.communicationTypes,\n ),\n });\n this.refreshRoutingCooldownsForService(String(ctx.serviceName ?? \"\").trim());\n return true;\n },\n \"Tracks handshake-ready remote dependency instances for runtime heartbeat monitoring.\",\n ).doOn(\"meta.fetch.handshake_complete\", \"meta.socket.handshake\");\n\n const normalizeServiceInstancesFromSync = (ctx: AnyObject) =>\n this.normalizeServiceInstancesFromSync(ctx);\n Cadenza.createMetaTask(\"Split service instances\", function* (ctx: any) {\n const serviceInstances = normalizeServiceInstancesFromSync(ctx);\n if (serviceInstances.length === 0) {\n return;\n }\n\n for (const serviceInstance of serviceInstances) {\n yield { serviceInstance };\n }\n })\n .doOn(\n \"meta.service_registry.registered_global_signals\",\n \"meta.service_registry.registered_global_intents\",\n )\n .then(this.handleInstanceUpdateTask);\n\n this.handleGlobalSignalRegistrationTask = Cadenza.createMetaTask(\n \"Handle global Signal Registration\",\n (ctx) => {\n const signalToTaskMaps = this.normalizeSignalMaps(ctx);\n const authoritativeSignalMaps = this.readArrayPayload(ctx, [\n \"signalToTaskMaps\",\n \"signal_to_task_maps\",\n \"signalToTaskMap\",\n \"signal_to_task_map\",\n ]);\n\n if (authoritativeSignalMaps.length > 0) {\n this.rememberKnownGlobalSignalMaps(signalToTaskMaps);\n }\n\n return this.applyGlobalSignalRegistrations(signalToTaskMaps);\n },\n \"Handles registration of remote signals\",\n )\n .emits(\"meta.service_registry.registered_global_signals\")\n .doOn(\"global.meta.graph_metadata.task_signal_observed\");\n\n this.reconcileGatheredSyncTransmissionsTask = Cadenza.createMetaTask(\n \"Reconcile gathered sync signal transmissions\",\n () => false,\n \"Legacy gathered-sync signal transmission is retired; structural updates now propagate through manifest snapshots and explicit full sync pulls.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(META_GATHERED_SYNC_TRANSMISSION_RECONCILE_SIGNAL);\n\n this.handleGlobalIntentRegistrationTask = Cadenza.createMetaTask(\n \"Handle global intent registration\",\n (ctx, emit) => {\n const intentToTaskMaps = this.normalizeIntentMaps(ctx);\n if (shouldTraceServiceRegistry(this.serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] handle_global_intents\", {\n localServiceName: this.serviceName,\n intentCount: intentToTaskMaps.length,\n sample: intentToTaskMaps.slice(0, 5),\n });\n }\n const sorted = intentToTaskMaps.sort((a, b) => {\n if (a.deleted && !b.deleted) return -1;\n if (!a.deleted && b.deleted) return 1;\n return 0;\n });\n\n for (const map of sorted) {\n try {\n if (map.deleted) {\n this.unregisterRemoteIntentDeputy(map);\n continue;\n }\n\n if (map.serviceName === this.serviceName) {\n continue;\n }\n\n Cadenza.inquiryBroker.addIntent({\n name: map.intentName,\n });\n\n this.registerRemoteIntentDeputy(map);\n\n if (this.shouldEagerlyEstablishRemoteClients(ctx)) {\n this.ensureDependeeClientsForService(map.serviceName, emit, ctx);\n }\n } catch (error) {\n throw error;\n }\n }\n\n return true;\n },\n \"Handles registration of remote inquiry intent responders\",\n )\n .emits(\"meta.service_registry.registered_global_intents\")\n .doOn(\"global.meta.graph_metadata.task_intent_associated\");\n\n this.handleServiceNotRespondingTask = Cadenza.createMetaTask(\n \"Handle service not responding\",\n (ctx, emit) => {\n if (!this.isCurrentRouteContext(ctx)) {\n return false;\n }\n\n this.clearTransportReadyFromContext(ctx);\n const { serviceName, serviceInstanceId, serviceTransportId } = ctx;\n if (\n serviceName === \"CadenzaDB\" &&\n this.hasAuthorityBootstrapHandshakeEstablished()\n ) {\n const currentAuthorityInstanceId = String(\n this.authorityBootstrapRoute.serviceInstanceId ?? \"\",\n ).trim();\n const currentAuthorityTransportId = String(\n this.authorityBootstrapRoute.serviceTransportId ?? \"\",\n ).trim();\n const incomingInstanceId = String(serviceInstanceId ?? \"\").trim();\n const incomingTransportId = String(serviceTransportId ?? \"\").trim();\n const staleAuthorityInstance =\n incomingInstanceId &&\n currentAuthorityInstanceId &&\n incomingInstanceId !== currentAuthorityInstanceId;\n const staleAuthorityTransport =\n incomingTransportId &&\n currentAuthorityTransportId &&\n incomingTransportId !== currentAuthorityTransportId;\n\n if (staleAuthorityInstance || staleAuthorityTransport) {\n return true;\n }\n }\n\n const serviceInstances = this.instances.get(serviceName);\n const instances = serviceInstances?.filter((instance) => {\n if (serviceInstanceId && instance.uuid === serviceInstanceId) {\n return true;\n }\n\n if (serviceTransportId) {\n return instance.transports.some(\n (transport) => transport.uuid === serviceTransportId,\n );\n }\n\n return false;\n });\n\n Cadenza.log(\n \"Service not responding.\",\n {\n serviceName,\n serviceInstanceId,\n serviceTransportId,\n instances,\n },\n \"warning\",\n serviceName,\n );\n\n for (const instance of instances ?? []) {\n if (\n instance.serviceName === this.serviceName &&\n instance.uuid === this.serviceInstanceId\n ) {\n continue;\n }\n\n const affectedTransport = serviceTransportId\n ? this.getTransportById(instance, serviceTransportId)\n : undefined;\n\n if (\n affectedTransport &&\n this.hasAnyReadyClientProtocolForTransport(instance, affectedTransport)\n ) {\n continue;\n }\n\n const signalName = String(\n ctx.__signalName ?? ctx.__signalEmission?.fullSignalName ?? \"\",\n ).trim();\n const isFetchHandshakeFailure =\n signalName === \"meta.fetch.handshake_failed\" ||\n signalName.startsWith(\"meta.fetch.handshake_failed:\");\n\n if (\n isFetchHandshakeFailure &&\n affectedTransport &&\n this.isCurrentRouteContext(ctx) &&\n this.scheduleDependeeClientRecovery(instance, affectedTransport, {\n ...ctx,\n __reason: \"fetch_handshake_failed_retry\",\n })\n ) {\n continue;\n }\n\n const shouldMarkInactive =\n this.getHeartbeatMisses(instance.uuid) >=\n this.getRuntimeStatusInactiveThreshold();\n\n if (shouldMarkInactive) {\n this.markInstanceInactive(emit, instance, {\n persist: false,\n });\n continue;\n }\n\n this.applyInstanceLifecycleState(instance, {\n isActive: false,\n isNonResponsive: true,\n });\n emit(\"global.meta.service_registry.service_not_responding\", {\n data: {\n isActive: false,\n isNonResponsive: true,\n },\n filter: {\n uuid: instance.uuid,\n },\n });\n this.emitInstanceLifecyclePersistence(\n emit,\n instance,\n {\n is_active: false,\n is_non_responsive: true,\n deleted: false,\n last_active: instance.reportedAt,\n health: instance.health ?? {},\n },\n { persist: false },\n );\n }\n\n return true;\n },\n \"Handles service not responding\",\n )\n .doOn(\n \"meta.fetch.handshake_failed\",\n \"meta.fetch.handshake_failed.*\",\n \"meta.socket_client.disconnected\",\n \"meta.socket_client.disconnected.*\",\n \"meta.service_registry.runtime_status_unreachable\",\n )\n .attachSignal(\"global.meta.service_registry.service_not_responding\");\n\n this.handleServiceHandshakeTask = Cadenza.createMetaTask(\n \"Handle service handshake\",\n (ctx, emit) => {\n const { serviceName, serviceInstanceId } = ctx;\n this.noteAuthorityBootstrapHandshake(ctx);\n const serviceInstances = this.instances.get(serviceName);\n let instance = serviceInstances?.find(\n (i) => i.uuid === serviceInstanceId,\n );\n\n if (!instance && serviceName && serviceInstanceId) {\n const bootstrapPlaceholder = serviceInstances?.find(\n (candidate) =>\n candidate.isBootstrapPlaceholder &&\n (!ctx.serviceTransportId ||\n candidate.transports.some(\n (transport) => transport.uuid === ctx.serviceTransportId,\n )),\n );\n\n if (bootstrapPlaceholder) {\n instance = this.adoptBootstrapPlaceholderInstanceId(\n serviceName,\n bootstrapPlaceholder.uuid,\n serviceInstanceId,\n );\n }\n }\n\n if (!instance) {\n return false;\n }\n\n instance.isActive = true;\n instance.isNonResponsive = false;\n const snapshot = this.resolveRuntimeStatusSnapshot(\n instance.numberOfRunningGraphs ?? 0,\n instance.isActive,\n instance.isNonResponsive,\n instance.isBlocked,\n );\n instance.runtimeState = snapshot.state;\n instance.acceptingWork = snapshot.acceptingWork;\n instance.reportedAt = new Date().toISOString();\n\n const handshakeTransport = ctx.serviceTransportId\n ? this.getTransportById(instance, ctx.serviceTransportId)\n : this.selectTransportForInstance(\n instance,\n ctx,\n this.getInstanceRouteRole(instance),\n );\n if (handshakeTransport && !handshakeTransport.deleted) {\n this.markTransportClientReady(\n instance,\n handshakeTransport,\n this.resolveProtocolFromContext(ctx, handshakeTransport) ?? undefined,\n );\n this.retireSupersededInstancesForTransport(\n instance,\n handshakeTransport,\n emit,\n );\n }\n\n emit(\"global.meta.service_registry.service_handshake\", {\n data: {\n isActive: instance.isActive,\n isNonResponsive: instance.isNonResponsive,\n },\n filter: {\n uuid: instance.uuid,\n },\n });\n emit(\"global.meta.service_instance.updated\", {\n data: {\n is_active: instance.isActive,\n is_non_responsive: instance.isNonResponsive,\n },\n filter: {\n uuid: instance.uuid,\n },\n });\n\n return true;\n },\n \"Handles service handshake\",\n )\n .doOn(\"meta.fetch.handshake_complete\")\n .attachSignal(\n \"global.meta.service_registry.service_handshake\",\n \"global.meta.service_registry.deleted\",\n );\n\n this.handleSocketStatusUpdateTask = Cadenza.createMetaTask(\n \"Handle Socket Status Update\",\n (ctx, emit) => {\n const report = this.normalizeRuntimeStatusReport(ctx);\n if (!report) {\n return false;\n }\n\n if (\n report.serviceName === this.serviceName &&\n report.serviceInstanceId === this.serviceInstanceId\n ) {\n return false;\n }\n\n let applied = this.applyRuntimeStatusReport(report);\n if (\n !applied &&\n report.transportId &&\n report.transportOrigin\n ) {\n if (!this.instances.has(report.serviceName)) {\n this.instances.set(report.serviceName, []);\n }\n\n this.instances.get(report.serviceName)!.push({\n uuid: report.serviceInstanceId,\n serviceName: report.serviceName,\n isFrontend: !!report.isFrontend,\n isActive: report.isActive,\n isNonResponsive: report.isNonResponsive,\n isBlocked: report.isBlocked,\n numberOfRunningGraphs: report.numberOfRunningGraphs,\n runtimeState: report.state,\n acceptingWork: report.acceptingWork,\n reportedAt: report.reportedAt,\n health: report.health ?? {},\n isPrimary: false,\n transports: [\n {\n uuid: report.transportId,\n serviceInstanceId: report.serviceInstanceId,\n role: report.transportRole ?? this.getRoutingTransportRole(),\n origin: report.transportOrigin,\n protocols:\n report.transportProtocols && report.transportProtocols.length > 0\n ? report.transportProtocols\n : ([\"rest\", \"socket\"] as ServiceTransportProtocol[]),\n securityProfile: null,\n authStrategy: null,\n },\n ],\n });\n applied = true;\n }\n\n if (!applied) {\n return false;\n }\n\n this.markTransportReadyFromContext(ctx);\n\n const updatedInstance = this.getInstance(\n report.serviceName,\n report.serviceInstanceId,\n );\n if (\n updatedInstance &&\n !updatedInstance.isFrontend &&\n (this.deputies.has(report.serviceName) ||\n this.remoteIntents.has(report.serviceName) ||\n this.remoteSignals.has(report.serviceName))\n ) {\n if (this.shouldEagerlyEstablishRemoteClients(ctx)) {\n this.ensureDependeeClientForInstance(updatedInstance, emit, ctx);\n }\n }\n\n this.registerDependee(report.serviceName, report.serviceInstanceId);\n this.lastHeartbeatAtByInstance.set(report.serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(report.serviceInstanceId, 0);\n this.runtimeStatusFallbackInFlightByInstance.delete(\n report.serviceInstanceId,\n );\n return true;\n },\n \"Handles status update from socket broadcast\",\n ).doOn(\"meta.socket_client.status_received\");\n\n Cadenza.createMetaTask(\n \"Request authority bootstrap handshake\",\n (ctx) => this.requestAuthorityBootstrapHandshake(ctx),\n \"Requests the first direct authority fetch handshake from the seeded bootstrap route before manifest-derived routing is available.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.initializing_service\", META_AUTHORITY_BOOTSTRAP_HANDSHAKE_REQUESTED_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Invalidate bootstrap full sync after CadenzaDB connection loss\",\n (ctx) => {\n if (resolveServiceNameFromContext(ctx) !== \"CadenzaDB\") {\n return false;\n }\n\n if (!this.isCurrentRouteContext(ctx)) {\n return false;\n }\n\n if (this.hasAuthorityBootstrapHandshakeEstablished()) {\n const currentAuthorityInstanceId = String(\n this.authorityBootstrapRoute.serviceInstanceId ?? \"\",\n ).trim();\n const currentAuthorityTransportId = String(\n this.authorityBootstrapRoute.serviceTransportId ?? \"\",\n ).trim();\n const incomingInstanceId = String(\n ctx.serviceInstanceId ?? ctx.__instance ?? \"\",\n ).trim();\n const incomingTransportId = String(\n ctx.serviceTransportId ?? ctx.__transportId ?? \"\",\n ).trim();\n const staleAuthorityInstance =\n incomingInstanceId &&\n currentAuthorityInstanceId &&\n incomingInstanceId !== currentAuthorityInstanceId;\n const staleAuthorityTransport =\n incomingTransportId &&\n currentAuthorityTransportId &&\n incomingTransportId !== currentAuthorityTransportId;\n\n if (staleAuthorityInstance || staleAuthorityTransport) {\n return false;\n }\n }\n\n this.invalidateAuthorityBootstrapHandshake();\n this.invalidateBootstrapFullSyncRetryState(\"cadenza_db_unreachable\");\n Cadenza.emit(META_AUTHORITY_BOOTSTRAP_HANDSHAKE_REQUESTED_SIGNAL, {\n ...ctx,\n __reason: \"cadenza_db_unreachable\",\n });\n return true;\n },\n \"Clears bootstrap full-sync retry satisfaction when the authority becomes unreachable.\",\n ).doOn(\n \"meta.fetch.handshake_failed\",\n \"meta.fetch.handshake_failed.*\",\n \"meta.socket_client.disconnected\",\n \"meta.socket_client.disconnected.*\",\n \"meta.service_registry.runtime_status_unreachable\",\n \"global.meta.service_registry.service_not_responding\",\n \"meta.service_registry.service_not_responding\",\n );\n\n Cadenza.createMetaTask(\n \"Request full sync after CadenzaDB fetch handshake\",\n (ctx, emit) => {\n if (resolveServiceNameFromContext(ctx) !== \"CadenzaDB\") {\n return false;\n }\n\n this.ensureBootstrapAuthorityControlPlane(ctx, emit);\n return this.restartBootstrapFullSyncRetryChain(\n \"cadenza_db_fetch_handshake\",\n );\n },\n \"Restarts the bootstrap full-sync recovery chain after the authority fetch transport comes up.\",\n ).doOn(\"meta.fetch.handshake_complete\");\n\n Cadenza.createMetaTask(\n \"Request full sync after authority manifest update\",\n (ctx, emit) => {\n if (\n !this.connectsToCadenzaDB ||\n !this.serviceName ||\n this.serviceName === \"CadenzaDB\"\n ) {\n return false;\n }\n\n this.ensureBootstrapAuthorityControlPlane(ctx, emit);\n Cadenza.debounce(\"meta.sync_requested\", {\n __syncing: false,\n __reason: \"cadenza_db_manifest_updated\",\n __bootstrapFullSync: true,\n __bootstrapFullSyncAttempt: 1,\n }, 250);\n return true;\n },\n \"Requests a fresh authority full sync when CadenzaDB ingests a new or updated service manifest.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(AUTHORITY_SERVICE_MANIFEST_UPDATED_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Ensure authority bootstrap signal transmissions\",\n () => this.ensureAuthorityBootstrapSignalTransmissions(),\n \"Creates reserved authority bootstrap signal transmissions without waiting for manifest-derived signal routing maps.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\n \"meta.service_registry.instance_inserted\",\n \"global.meta.service_instance.updated\",\n \"global.meta.sync_controller.synced\",\n );\n\n this.fullSyncTask = Cadenza.createMetaTask(\n \"Full sync\",\n async (ctx) => {\n const fullSyncStartedAt = Date.now();\n if (\n this.connectsToCadenzaDB &&\n this.serviceName !== \"CadenzaDB\" &&\n !this.hasBootstrapFullSyncDeputies()\n ) {\n this.ensureBootstrapAuthorityControlPlane(ctx as AnyObject);\n }\n\n if (\n this.connectsToCadenzaDB &&\n this.serviceName !== \"CadenzaDB\" &&\n !this.hasAuthorityBootstrapHandshakeEstablished()\n ) {\n this.requestAuthorityBootstrapHandshake(\n {\n ...(ctx as AnyObject),\n __reason:\n typeof ctx?.__reason === \"string\" && ctx.__reason.trim().length > 0\n ? ctx.__reason\n : \"bootstrap_full_sync_waiting_for_handshake\",\n },\n );\n this.scheduleNextBootstrapFullSyncRetry(\n typeof ctx?.__reason === \"string\" ? ctx.__reason : undefined,\n );\n return false;\n }\n\n if (\n this.connectsToCadenzaDB &&\n this.serviceName !== \"CadenzaDB\" &&\n !this.hasBootstrapFullSyncDeputies()\n ) {\n if (shouldTraceServiceRegistry(this.serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] full_sync_skipped_missing_bootstrap_deputies\", {\n localServiceName: this.serviceName,\n });\n }\n return false;\n }\n\n let inquiryResult: AnyObject;\n const inquiryOptions = {\n timeout: BOOTSTRAP_FULL_SYNC_TIMEOUT_MS,\n ...(ctx.inquiryOptions ?? ctx.__inquiryOptions ?? {}),\n };\n\n try {\n if (shouldTraceServiceRegistry(this.serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] full_sync_started\", {\n localServiceName: this.serviceName,\n attempt: ctx.__bootstrapFullSyncAttempt ?? null,\n reason: typeof ctx.__reason === \"string\" ? ctx.__reason : null,\n timeoutMs: inquiryOptions.timeout,\n startedAt: fullSyncStartedAt,\n });\n }\n inquiryResult = await Cadenza.inquire(\n META_SERVICE_REGISTRY_FULL_SYNC_INTENT,\n {\n syncScope: \"service-registry-full-sync\",\n __syncing: true,\n },\n inquiryOptions,\n );\n } catch (error) {\n this.scheduleNextBootstrapFullSyncRetry(\n typeof ctx.__reason === \"string\" ? ctx.__reason : undefined,\n );\n throw error;\n }\n\n const signalToTaskMaps = this.readArrayPayload(\n inquiryResult as AnyObject,\n [\n \"signalToTaskMaps\",\n \"signal_to_task_maps\",\n \"signalToTaskMap\",\n \"signal_to_task_map\",\n ],\n );\n const globalSignalToTaskMaps = this.normalizeSignalMaps({\n signalToTaskMaps,\n }).filter((m) => !!m.isGlobal);\n\n const intentToTaskMaps = this.normalizeIntentMaps(\n inquiryResult as AnyObject,\n );\n\n const tasks = this.readArrayPayload(inquiryResult as AnyObject, [\n \"tasks\",\n ]);\n const signals = this.readArrayPayload(inquiryResult as AnyObject, [\n \"signals\",\n ]);\n const intents = this.readArrayPayload(inquiryResult as AnyObject, [\n \"intents\",\n ]);\n const actors = this.readArrayPayload(inquiryResult as AnyObject, [\n \"actors\",\n ]);\n const routines = this.readArrayPayload(inquiryResult as AnyObject, [\n \"routines\",\n ]);\n const directionalTaskMaps = this.readArrayPayload(\n inquiryResult as AnyObject,\n [\"directionalTaskMaps\", \"directional_task_maps\"],\n );\n const actorTaskMaps = this.readArrayPayload(inquiryResult as AnyObject, [\n \"actorTaskMaps\",\n \"actor_task_maps\",\n ]);\n const taskToRoutineMaps = this.readArrayPayload(\n inquiryResult as AnyObject,\n [\"taskToRoutineMaps\", \"task_to_routine_maps\"],\n );\n\n const serviceInstances = this.normalizeServiceInstancesFromSync(\n inquiryResult as AnyObject,\n );\n const serviceInstanceTransports = this.readArrayPayload(\n inquiryResult as AnyObject,\n [\n \"serviceInstanceTransports\",\n \"service_instance_transports\",\n \"serviceInstanceTransport\",\n \"service_instance_transport\",\n ],\n );\n const serviceManifests = this.readArrayPayload(\n inquiryResult as AnyObject,\n [\n \"serviceManifests\",\n \"service_manifests\",\n \"serviceManifest\",\n \"service_manifest\",\n ],\n );\n\n if (shouldTraceServiceRegistry(this.serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] full_sync_result\", {\n localServiceName: this.serviceName,\n attempt: ctx.__bootstrapFullSyncAttempt ?? null,\n durationMs: Date.now() - fullSyncStartedAt,\n inquiryMeta: inquiryResult.__inquiryMeta,\n signalToTaskMaps: globalSignalToTaskMaps.length,\n intentToTaskMaps: intentToTaskMaps.length,\n serviceInstances: serviceInstances.length,\n serviceInstanceTransports: serviceInstanceTransports.length,\n serviceManifests: serviceManifests.length,\n tasks: tasks.length,\n signals: signals.length,\n intents: intents.length,\n actors: actors.length,\n routines: routines.length,\n bootstrapSatisfied: this.bootstrapFullSyncSatisfied,\n });\n }\n\n if (\n this.hasHealthyBootstrapFullSyncResult({\n serviceInstances,\n intentToTaskMaps,\n })\n ) {\n this.markBootstrapFullSyncSatisfied();\n } else {\n this.scheduleNextBootstrapFullSyncRetry(\n typeof ctx.__reason === \"string\" ? ctx.__reason : undefined,\n );\n }\n\n return {\n ...ctx,\n signalToTaskMaps,\n intentToTaskMaps,\n serviceInstances,\n serviceInstanceTransports,\n serviceManifests,\n tasks,\n signals,\n intents,\n actors,\n routines,\n directionalTaskMaps,\n actorTaskMaps,\n taskToRoutineMaps,\n __inquiryMeta: inquiryResult.__inquiryMeta,\n };\n },\n \"Runs service registry full sync through one distributed inquiry intent.\",\n )\n .doOn(\"meta.sync_requested\")\n .emits(\"meta.service_registry.initial_sync_complete\")\n .then(\n this.handleGlobalSignalRegistrationTask,\n this.handleGlobalIntentRegistrationTask,\n );\n\n this.getInstanceById = Cadenza.createMetaTask(\n \"Get instance by id\",\n (context) => {\n const { __id } = context;\n let instance;\n for (const instances of this.instances.values()) {\n instance = instances.find((i) => i.uuid === __id);\n if (instance) break;\n }\n return { ...context, __instance: instance };\n },\n \"Gets instance by id.\",\n );\n\n this.getInstancesByServiceName = Cadenza.createMetaTask(\n \"Get instances by name\",\n (context) => {\n const { __serviceName } = context;\n const instances = this.instances.get(__serviceName);\n if (!instances) {\n return false;\n }\n\n return { ...context, __instances: instances };\n },\n \"Gets instances by name.\",\n );\n\n this.handleDeputyRegistrationTask = Cadenza.createMetaTask(\n \"Handle Deputy Registration\",\n (ctx, emit) => {\n const { serviceName } = ctx;\n\n if (!serviceName || serviceName === this.serviceName) {\n return false;\n }\n\n if (!this.deputies.has(serviceName)) this.deputies.set(serviceName, []);\n\n this.deputies.get(serviceName)!.push({\n serviceName,\n remoteRoutineName: ctx.remoteRoutineName,\n signalName: ctx.signalName,\n localTaskName: ctx.localTaskName,\n communicationType: ctx.communicationType,\n });\n\n if (this.shouldEagerlyEstablishRemoteClients(ctx)) {\n this.ensureDependeeClientsForService(serviceName, emit, ctx);\n }\n },\n ).doOn(\"meta.deputy.created\");\n\n this.getAllInstances = Cadenza.createMetaTask(\n \"Get all instances\",\n (context) => ({\n ...context,\n __instances: Array.from(this.instances.values()).flat(),\n }),\n \"Gets all instances.\",\n );\n\n this.doForEachInstance = Cadenza.createMetaTask(\n \"Do for each instance\",\n function* (context: AnyObject) {\n // @ts-ignore\n for (const instances of this.instances.values()) {\n for (const instance of instances) {\n yield { ...context, __instance: instance };\n }\n }\n }.bind(this),\n \"Yields each instance for branching.\",\n );\n\n this.deleteInstance = Cadenza.createMetaTask(\n \"Delete instance\",\n (context) => {\n const { __id } = context;\n this.instances.delete(__id);\n return context;\n },\n \"Deletes instance.\",\n ).doOn(\"global.meta.service_instance.deleted\");\n\n this.getBalancedInstance = Cadenza.createMetaTask(\n \"Get balanced instance\",\n (context, emit) => {\n const explicitDeputyExecId =\n typeof context.__metadata?.__deputyExecId === \"string\" &&\n context.__metadata.__deputyExecId.length > 0\n ? context.__metadata.__deputyExecId\n : typeof context.__deputyExecId === \"string\" &&\n context.__deputyExecId.length > 0\n ? context.__deputyExecId\n : undefined;\n const explicitDelegationOverrides: AnyObject = {};\n for (const key of [\n \"__remoteRoutineName\",\n \"__serviceName\",\n \"__localTaskName\",\n \"__resolverRequestId\",\n \"__resolverOriginalContext\",\n \"__resolverQueryData\",\n ] as const) {\n if (context[key] !== undefined) {\n explicitDelegationOverrides[key] = context[key];\n }\n }\n const traceServiceInstanceInsert =\n context.__remoteRoutineName === \"Insert service_instance\" ||\n context.__metadata?.__remoteRoutineName === \"Insert service_instance\" ||\n context.__localTaskName === \"Insert service_instance in CadenzaDB\" ||\n context.__metadata?.__deputyTaskName ===\n \"Insert service_instance in CadenzaDB\";\n if (context.__remoteRoutineName !== undefined) {\n context = ensureDelegationContextMetadata(\n restoreDelegationRequestSnapshot(\n attachDelegationRequestSnapshot(context),\n ),\n );\n\n if (explicitDeputyExecId || Object.keys(explicitDelegationOverrides).length > 0) {\n context = {\n ...context,\n ...(explicitDeputyExecId\n ? {\n __deputyExecId: explicitDeputyExecId,\n __metadata: {\n ...(context.__metadata ?? {}),\n __deputyExecId: explicitDeputyExecId,\n },\n }\n : {}),\n ...explicitDelegationOverrides,\n };\n }\n }\n\n const {\n __serviceName,\n __triedInstances,\n __retries,\n __broadcast,\n targetServiceInstanceId,\n } = context;\n const preferredRole = this.getRoutingTransportRole();\n const preferredProtocol = this.getPreferredRoutingProtocol(context);\n this.maybeDemoteFailedTransport(\n context,\n emit,\n preferredRole,\n preferredProtocol,\n );\n const activeRoutingCooldown =\n __serviceName && !targetServiceInstanceId\n ? this.getActiveRoutingCooldown(\n __serviceName,\n preferredRole,\n preferredProtocol,\n )\n : null;\n if (activeRoutingCooldown) {\n context.errored = true;\n context.__error =\n `No routeable ${preferredRole} transport available for ${__serviceName}. ` +\n \"Waiting for authority route updates before retrying.\";\n emit(\n `meta.service_registry.load_balance_failed:${context.__metadata.__deputyExecId}`,\n context,\n );\n return context;\n }\n if (\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\") &&\n traceServiceInstanceInsert\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] load_balance_entry\", {\n localServiceName: this.serviceName,\n remoteRoutineName:\n context.__remoteRoutineName ??\n context.__metadata?.__remoteRoutineName ??\n null,\n localTaskName:\n context.__localTaskName ??\n context.__metadata?.__deputyTaskName ??\n null,\n targetServiceName: __serviceName ?? null,\n deputyExecId: context.__metadata?.__deputyExecId ?? null,\n preferredRole,\n useSocket: this.useSocket,\n knownInstances: (this.instances.get(__serviceName) ?? []).map(\n (instance) => ({\n uuid: instance.uuid,\n isActive: instance.isActive,\n isNonResponsive: instance.isNonResponsive,\n isBlocked: instance.isBlocked,\n isFrontend: instance.isFrontend,\n readyTransportIds: instance.clientReadyTransportIds ?? [],\n pendingTransportIds: instance.clientPendingTransportIds ?? [],\n transports: (instance.transports ?? []).map((transport) => ({\n uuid: transport.uuid,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols,\n })),\n }),\n ),\n targetServiceInstanceId: targetServiceInstanceId ?? null,\n fetchId: context.__fetchId ?? null,\n triedInstances: Array.isArray(__triedInstances)\n ? __triedInstances\n : [],\n });\n }\n let retries = __retries ?? 0;\n let triedInstances = __triedInstances ?? [];\n if (this.shouldDemandEstablishRemoteClients(context)) {\n this.ensureDependeeClientsForService(__serviceName, emit, context);\n }\n const filteredInstances =\n this.instances\n .get(__serviceName)\n ?.filter((instance) => {\n if (\n targetServiceInstanceId &&\n instance.uuid !== targetServiceInstanceId\n ) {\n return false;\n }\n\n if (\n !instance.isActive ||\n instance.isNonResponsive ||\n instance.isBlocked\n ) {\n return false;\n }\n\n if (instance.isFrontend) {\n return true;\n }\n\n return Boolean(\n this.selectReadyTransportForInstance(\n instance,\n context,\n preferredRole,\n ),\n );\n }) ?? [];\n const instances = this.collapseInstancesByRouteOrigin(\n filteredInstances,\n context,\n preferredRole,\n );\n const broadcastFilter =\n __broadcast &&\n context.__broadcastFilter &&\n typeof context.__broadcastFilter === \"object\"\n ? (context.__broadcastFilter as AnyObject)\n : null;\n const routeCandidates: RouteSelectionCandidate[] = instances\n .map((instance): RouteSelectionCandidate | null => {\n const selectedTransport = instance.isFrontend\n ? undefined\n : this.selectReadyTransportForInstance(\n instance,\n context,\n preferredRole,\n );\n\n if (!instance.isFrontend && !selectedTransport) {\n return null;\n }\n\n if (\n __broadcast &&\n selectedTransport &&\n !this.matchesSignalBroadcastFilter(\n instance,\n selectedTransport,\n broadcastFilter,\n )\n ) {\n return null;\n }\n\n const routeKey = selectedTransport\n ? this.buildTransportRouteKey(instance.serviceName, selectedTransport)\n : null;\n const route = routeKey\n ? this.remoteRoutesByKey.get(routeKey) ??\n this.upsertRemoteRouteRecord(\n instance.serviceName,\n instance.uuid,\n selectedTransport!,\n )\n : null;\n const snapshot = route\n ? this.buildRouteBalancingSnapshot(route, instance)\n : null;\n\n return {\n instance,\n selectedTransport,\n routeKey,\n route,\n snapshot,\n };\n })\n .filter(\n (candidate): candidate is RouteSelectionCandidate => candidate !== null,\n )\n .sort((left, right) => {\n if (left.snapshot && right.snapshot) {\n const snapshotDelta = this.compareRouteBalancingSnapshots(\n left.snapshot,\n right.snapshot,\n );\n if (snapshotDelta !== 0) {\n return snapshotDelta;\n }\n }\n\n if (left.snapshot && !right.snapshot) {\n return -1;\n }\n if (!left.snapshot && right.snapshot) {\n return 1;\n }\n\n return left.instance.uuid.localeCompare(right.instance.uuid);\n });\n\n if (\n shouldTraceServiceRegistry(this.serviceName) &&\n __serviceName === \"PredictorService\"\n ) {\n const tracedCandidates = routeCandidates.map((candidate) => ({\n serviceInstanceId: candidate.instance.uuid,\n transportId: candidate.selectedTransport?.uuid ?? null,\n transportOrigin: candidate.selectedTransport?.origin ?? null,\n routeKey: candidate.routeKey ?? null,\n snapshot: candidate.snapshot\n ? {\n ...candidate.snapshot,\n }\n : null,\n }));\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] route_candidates\", {\n localServiceName: this.serviceName,\n targetServiceName: __serviceName,\n preferredRole,\n preferredProtocol,\n candidates: tracedCandidates,\n candidatesJson: JSON.stringify(tracedCandidates),\n });\n }\n\n if (\n !routeCandidates ||\n routeCandidates.length === 0 ||\n retries > this.retryCount\n ) {\n if (__serviceName && !targetServiceInstanceId) {\n const routingFailure = this.recordRoutingFailure(\n __serviceName,\n preferredRole,\n preferredProtocol,\n \"no_routeable_instance\",\n );\n if (routingFailure.cooldownUntil > Date.now()) {\n context.errored = true;\n context.__error =\n `No routeable ${preferredRole} transport available for ${__serviceName}. ` +\n \"Waiting for authority route updates before retrying.\";\n } else {\n context.errored = true;\n context.__error =\n this.isFrontend && preferredRole === \"public\"\n ? `No public transport available for ${__serviceName}.`\n : `No routeable ${preferredRole} transport available for ${__serviceName}. Retries: ${retries}.`;\n }\n } else {\n context.errored = true;\n context.__error =\n this.isFrontend && preferredRole === \"public\"\n ? `No public transport available for ${__serviceName}.`\n : `No routeable ${preferredRole} transport available for ${__serviceName}. Retries: ${retries}.`;\n }\n if (\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\") &&\n traceServiceInstanceInsert\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] load_balance_empty\", {\n remoteRoutineName:\n context.__remoteRoutineName ??\n context.__metadata?.__remoteRoutineName ??\n null,\n localTaskName:\n context.__localTaskName ??\n context.__metadata?.__deputyTaskName ??\n null,\n targetServiceName: __serviceName ?? null,\n retries,\n retryCount: this.retryCount,\n deputyExecId: context.__metadata?.__deputyExecId ?? null,\n });\n }\n emit(\n `meta.service_registry.load_balance_failed:${context.__metadata.__deputyExecId}`,\n context,\n );\n return context;\n }\n\n if (__serviceName) {\n this.refreshRoutingCooldownsForService(__serviceName);\n }\n\n if (__broadcast || routeCandidates[0].instance.isFrontend) {\n for (const candidate of routeCandidates) {\n const { instance, selectedTransport, routeKey } = candidate;\n if (instance.isFrontend) {\n const fetchId = `browser:${instance.uuid}`;\n if (\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\") &&\n context.__remoteRoutineName === \"Insert service_instance\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] selected_instance_transport\", {\n transport: \"socket\",\n serviceName: context.__serviceName ?? null,\n targetInstanceId: instance.uuid,\n fetchId,\n dataKeys:\n context.data && typeof context.data === \"object\"\n ? Object.keys(context.data)\n : [],\n queryDataKeys:\n context.queryData && typeof context.queryData === \"object\"\n ? Object.keys(context.queryData)\n : [],\n queryDataDataKeys:\n context.queryData?.data &&\n typeof context.queryData.data === \"object\"\n ? Object.keys(context.queryData.data as AnyObject)\n : [],\n });\n }\n emit(\n `meta.service_registry.selected_instance_for_socket:${fetchId}`,\n {\n ...context,\n __instance: instance.uuid,\n __transportId: undefined,\n __transportOrigin: undefined,\n __transportProtocols: [\"socket\"],\n __fetchId: fetchId,\n },\n );\n continue;\n }\n if (!selectedTransport || !routeKey) {\n continue;\n }\n if (\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\") &&\n context.__remoteRoutineName === \"Insert service_instance\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] selected_instance_transport\", {\n transport:\n this.resolveTransportProtocolOrder(context)[0] === \"socket\" &&\n transportSupportsProtocol(selectedTransport, \"socket\")\n ? \"socket\"\n : \"fetch\",\n serviceName: context.__serviceName ?? null,\n targetInstanceId: instance.uuid,\n transportId: selectedTransport.uuid,\n transportOrigin: selectedTransport.origin,\n dataKeys:\n context.data && typeof context.data === \"object\"\n ? Object.keys(context.data)\n : [],\n queryDataKeys:\n context.queryData && typeof context.queryData === \"object\"\n ? Object.keys(context.queryData)\n : [],\n queryDataDataKeys:\n context.queryData?.data &&\n typeof context.queryData.data === \"object\"\n ? Object.keys(context.queryData.data as AnyObject)\n : [],\n });\n }\n const preferredProtocol = this.resolveTransportProtocolOrder(context)[0];\n const selectedProtocol =\n preferredProtocol === \"socket\" &&\n transportSupportsProtocol(selectedTransport, \"socket\")\n ? \"socket\"\n : \"rest\";\n const handleKey = this.buildTransportProtocolHandleKey(routeKey, selectedProtocol);\n this.recordBalancedRouteSelection(routeKey, {\n ...context,\n __instance: instance.uuid,\n __transportId: selectedTransport.uuid,\n __transportOrigin: selectedTransport.origin,\n __transportProtocols: selectedTransport.protocols,\n __transportProtocol: selectedProtocol,\n __routeKey: routeKey,\n routeKey,\n __fetchId: handleKey,\n fetchId: handleKey,\n });\n emit(\n `${\n selectedProtocol === \"socket\"\n ? \"meta.service_registry.selected_instance_for_socket\"\n : \"meta.service_registry.selected_instance_for_fetch\"\n }:${handleKey}`,\n {\n ...context,\n __instance: instance.uuid,\n __transportId: selectedTransport.uuid,\n __transportOrigin: selectedTransport.origin,\n __transportProtocols: selectedTransport.protocols,\n __transportProtocol: selectedProtocol,\n __routeKey: routeKey,\n routeKey,\n __fetchId: handleKey,\n fetchId: handleKey,\n },\n );\n }\n\n return context;\n }\n\n let candidatesToTry = routeCandidates.filter(\n (candidate) => !__triedInstances?.includes(candidate.instance.uuid),\n );\n\n if (candidatesToTry.length === 0) {\n if (this.useSocket) {\n emit(\n `meta.service_registry.socket_failed:${context.__fetchId}`,\n context,\n );\n }\n retries++;\n candidatesToTry = routeCandidates;\n triedInstances = [];\n }\n\n const selectedCandidate = candidatesToTry[0];\n const selected = selectedCandidate.instance;\n\n if (selected.isFrontend) {\n clearTransientRoutingErrorState(context);\n context.__instance = selected.uuid;\n context.__transportId = undefined;\n context.__transportOrigin = undefined;\n context.__transportProtocols = [\"socket\"];\n context.__fetchId = `browser:${selected.uuid}`;\n context.__triedInstances = triedInstances;\n context.__triedInstances.push(selected.uuid);\n context.__retries = retries;\n\n emit(\n `meta.service_registry.selected_instance_for_socket:${context.__fetchId}`,\n context,\n );\n return context;\n }\n\n const selectedTransport = selectedCandidate.selectedTransport;\n\n if (!selectedTransport) {\n if (__serviceName && !targetServiceInstanceId) {\n const routingFailure = this.recordRoutingFailure(\n __serviceName,\n preferredRole,\n preferredProtocol,\n \"selected_instance_missing_transport\",\n );\n if (routingFailure.cooldownUntil > Date.now()) {\n context.errored = true;\n context.__error =\n `No routeable ${preferredRole} transport available for ${selected.serviceName}. ` +\n \"Waiting for authority route updates before retrying.\";\n } else {\n context.errored = true;\n context.__error = `No routeable ${preferredRole} transport available for ${selected.serviceName}/${selected.uuid}.`;\n }\n } else {\n context.errored = true;\n context.__error = `No routeable ${preferredRole} transport available for ${selected.serviceName}/${selected.uuid}.`;\n }\n emit(\n `meta.service_registry.load_balance_failed:${context.__metadata.__deputyExecId}`,\n context,\n );\n return context;\n }\n\n if (__serviceName) {\n this.refreshRoutingCooldownsForService(__serviceName);\n }\n clearTransientRoutingErrorState(context);\n context.__instance = selected.uuid;\n context.__transportId = selectedTransport.uuid;\n context.__transportOrigin = selectedTransport.origin;\n context.__transportProtocols = selectedTransport.protocols;\n const routeKey =\n selectedCandidate.routeKey ??\n this.buildTransportRouteKey(selected.serviceName, selectedTransport);\n const selectedProtocol =\n this.resolveTransportProtocolOrder(context)[0] === \"socket\" &&\n transportSupportsProtocol(selectedTransport, \"socket\")\n ? \"socket\"\n : \"rest\";\n context.__routeKey = routeKey;\n context.routeKey = routeKey;\n context.__triedInstances = triedInstances;\n context.__triedInstances.push(selected.uuid);\n context.__retries = retries;\n context.__transportProtocol = selectedProtocol;\n context.__fetchId = this.buildTransportProtocolHandleKey(\n routeKey,\n selectedProtocol,\n );\n context.fetchId = context.__fetchId;\n this.recordBalancedRouteSelection(routeKey, context);\n\n if (shouldTraceServiceRegistry(this.serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] selected_route\", {\n localServiceName: this.serviceName,\n targetServiceName: selected.serviceName,\n targetServiceInstanceId: selected.uuid,\n targetTransportId: selectedTransport.uuid,\n targetTransportOrigin: selectedTransport.origin,\n routeKey,\n selectedProtocol,\n retries,\n triedInstances,\n deputyExecId: context.__metadata?.__deputyExecId ?? null,\n remoteRoutineName:\n context.__remoteRoutineName ??\n context.__metadata?.__remoteRoutineName ??\n null,\n localTaskName:\n context.__localTaskName ??\n context.__metadata?.__deputyTaskName ??\n null,\n });\n }\n\n if (selectedProtocol === \"socket\") {\n emit(\n `meta.service_registry.selected_instance_for_socket:${context.__fetchId}`,\n context,\n );\n } else {\n emit(\n `meta.service_registry.selected_instance_for_fetch:${context.__fetchId}`,\n context,\n );\n }\n\n return context;\n },\n \"Gets a balanced instance for load balancing\",\n )\n .doOn(\n \"meta.deputy.delegation_requested\",\n \"meta.signal_transmission.requested\",\n \"meta.socket_client.delegate_failed\",\n \"meta.fetch.delegate_failed\",\n \"meta.socket_client.signal_transmission_failed\",\n )\n .attachSignal(\n \"meta.service_registry.load_balance_failed\",\n \"meta.service_registry.selected_instance_for_socket\",\n \"meta.service_registry.selected_instance_for_fetch\",\n \"meta.service_registry.socket_failed\",\n );\n\n this.getStatusTask = Cadenza.createMetaTask(\n \"Get status\",\n (ctx) => this.resolveLocalStatusCheck(ctx),\n ).doOn(\n \"meta.socket.status_check_requested\",\n \"meta.rest.status_check_requested\",\n );\n\n Cadenza.createMetaTask(\n \"Handle local inbound activity\",\n (ctx, emit) => {\n if (\n ctx.serviceName &&\n ctx.serviceName !== this.serviceName\n ) {\n return false;\n }\n\n if (\n ctx.serviceInstanceId &&\n ctx.serviceInstanceId !== this.serviceInstanceId\n ) {\n return false;\n }\n\n return this.handleLocalInboundActivity(\n emit,\n typeof ctx.activityAt === \"string\" ? ctx.activityAt : undefined,\n );\n },\n \"Refreshes the local instance as active and responsive after inbound activity without persisting on every call.\",\n ).doOn(META_SERVICE_INSTANCE_ACTIVITY_OBSERVED_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Handle remote service activity observed\",\n (ctx) => this.handleRemoteActivityObserved(ctx),\n \"Refreshes tracked remote instance liveness from successful cross-service traffic without persisting authority state.\",\n ).doOn(META_REMOTE_SERVICE_ACTIVITY_OBSERVED_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Track local routine start\",\n (ctx, emit) => {\n const sourceTaskName = String(ctx.__signalEmission?.taskName ?? \"\");\n if (INTERNAL_RUNTIME_STATUS_TASK_NAMES.has(sourceTaskName)) {\n return false;\n }\n\n const routineId = String(\n ctx.filter?.uuid ?? ctx.__routineExecId ?? \"\",\n );\n if (!routineId) {\n return false;\n }\n\n this.activeRoutineExecutionIds.add(routineId);\n this.numberOfRunningGraphs = this.activeRoutineExecutionIds.size;\n const localInstance = this.getLocalInstance();\n if (!localInstance) {\n return true;\n }\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n this.numberOfRunningGraphs,\n localInstance.isActive,\n localInstance.isNonResponsive,\n localInstance.isBlocked,\n );\n if (\n hasSignificantRuntimeStatusChange(this.lastRuntimeStatusSnapshot, snapshot)\n ) {\n emit(\"meta.service_registry.runtime_status_broadcast_requested\", {\n reason: \"runtime-state-change\",\n });\n }\n return true;\n },\n \"Tracks local routine starts for runtime load status.\",\n ).doOn(\"meta.node.started_routine_execution\");\n\n Cadenza.createMetaTask(\n \"Track local routine end\",\n (ctx, emit) => {\n const sourceTaskName = String(ctx.__signalEmission?.taskName ?? \"\");\n if (INTERNAL_RUNTIME_STATUS_TASK_NAMES.has(sourceTaskName)) {\n return false;\n }\n\n const routineId = String(\n ctx.filter?.uuid ?? ctx.__routineExecId ?? \"\",\n );\n if (!routineId) {\n return false;\n }\n\n this.activeRoutineExecutionIds.delete(routineId);\n this.numberOfRunningGraphs = this.activeRoutineExecutionIds.size;\n const localInstance = this.getLocalInstance();\n if (!localInstance) {\n return true;\n }\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n this.numberOfRunningGraphs,\n localInstance.isActive,\n localInstance.isNonResponsive,\n localInstance.isBlocked,\n );\n if (\n hasSignificantRuntimeStatusChange(this.lastRuntimeStatusSnapshot, snapshot)\n ) {\n emit(\"meta.service_registry.runtime_status_broadcast_requested\", {\n reason: \"runtime-state-change\",\n });\n }\n return true;\n },\n \"Tracks local routine completion for runtime load status.\",\n ).doOn(\"meta.node.ended_routine_execution\");\n\n Cadenza.createMetaTask(\n \"Start runtime status sharing intervals\",\n () => {\n if (this.runtimeStatusHeartbeatStarted) {\n return false;\n }\n\n this.runtimeStatusHeartbeatStarted = true;\n if (!this.runtimeMetricsSamplingStarted) {\n this.runtimeMetricsSamplingStarted = true;\n Cadenza.interval(\n META_RUNTIME_METRICS_SAMPLE_TICK_SIGNAL,\n {},\n this.runtimeMetricsSampleIntervalMs,\n true,\n );\n }\n Cadenza.interval(\n META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL,\n { reason: \"heartbeat\" },\n this.runtimeStatusHeartbeatIntervalMs,\n true,\n );\n Cadenza.interval(\n META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL,\n {},\n this.runtimeStatusHeartbeatIntervalMs,\n );\n Cadenza.interval(\n META_RUNTIME_STATUS_REST_REFRESH_TICK_SIGNAL,\n {},\n this.runtimeStatusRestRefreshIntervalMs,\n true,\n );\n return true;\n },\n \"Starts runtime status heartbeat and heartbeat-monitor loops once per service instance.\",\n ).doOn(\"meta.service_registry.instance_inserted\");\n\n Cadenza.createMetaTask(\n \"Sample runtime metrics\",\n (_ctx, emit) => {\n if (!this.runtimeMetricsSampler) {\n return false;\n }\n\n const snapshot = this.captureRuntimeMetricsSample();\n if (!snapshot) {\n return false;\n }\n\n emit(META_RUNTIME_STATUS_PEER_UPDATE_REQUESTED_SIGNAL, {\n reason: \"runtime_metrics_sample\",\n detailLevel: \"minimal\",\n });\n return snapshot;\n },\n \"Samples local Node runtime health metrics for later runtime-status publication and balancing.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(META_RUNTIME_METRICS_SAMPLE_TICK_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Handle graceful service shutdown report\",\n (ctx, emit) => {\n const localInstance = this.getLocalInstance();\n const reportedServiceInstanceId = String(\n ctx.serviceInstanceId ?? \"\",\n ).trim();\n if (\n !localInstance ||\n !reportedServiceInstanceId ||\n reportedServiceInstanceId !== localInstance.uuid\n ) {\n return false;\n }\n\n this.markInstanceInactive(emit, localInstance);\n Cadenza.schedule(\n META_SERVICE_INSTANCE_SHUTDOWN_TRANSPORT_DEACTIVATION_SIGNAL,\n this.buildGracefulShutdownTransportDeactivationContext(localInstance),\n 750,\n );\n\n return {\n ...ctx,\n serviceName: localInstance.serviceName,\n serviceInstanceId: localInstance.uuid,\n };\n },\n \"Marks the local instance inactive on graceful shutdown and disables routable transports immediately.\",\n ).doOn(META_SERVICE_INSTANCE_SHUTDOWN_REPORTED_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Deactivate graceful shutdown transports\",\n (ctx, emit) => {\n const localInstance = this.getLocalInstance();\n if (!localInstance || localInstance.uuid !== ctx.serviceInstanceId) {\n return false;\n }\n\n this.deactivateInstanceTransports(emit, localInstance);\n return true;\n },\n \"Disables routable transports shortly after graceful shutdown state is persisted.\",\n ).doOn(META_SERVICE_INSTANCE_SHUTDOWN_TRANSPORT_DEACTIVATION_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Broadcast runtime status\",\n (ctx, emit) => {\n const authorityReport = this.buildLocalRuntimeStatusReport(\"full\");\n if (!authorityReport) {\n return false;\n }\n const peerReport =\n ctx.detailLevel === \"full\"\n ? authorityReport\n : this.stripRuntimeStatusReportForPeer(authorityReport);\n\n const snapshot = this.resolveRuntimeStatusSnapshot(\n authorityReport.numberOfRunningGraphs,\n authorityReport.isActive,\n authorityReport.isNonResponsive,\n authorityReport.isBlocked,\n );\n const peerSnapshot = this.buildPeerRuntimeStatusSnapshot(peerReport);\n const force =\n ctx.reason === \"heartbeat\" ||\n ctx.force === true ||\n this.lastRuntimeStatusSnapshot === null;\n const peerOnly =\n ctx.peerOnly === true || ctx.reason === \"runtime_metrics_sample\";\n const shouldEmitPeer =\n ctx.force === true ||\n this.lastPeerRuntimeStatusSnapshot === null ||\n this.hasSignificantPeerRuntimeStatusChange(\n this.lastPeerRuntimeStatusSnapshot,\n peerSnapshot,\n );\n const shouldEmitAuthority = !peerOnly && force;\n\n if (!shouldEmitPeer && !shouldEmitAuthority) {\n return false;\n }\n\n if (shouldEmitPeer) {\n this.lastPeerRuntimeStatusSnapshot = peerSnapshot;\n emit(\"meta.service.updated\", {\n __serviceName: peerReport.serviceName,\n __serviceInstanceId: peerReport.serviceInstanceId,\n __reportedAt: peerReport.reportedAt,\n __numberOfRunningGraphs: peerReport.numberOfRunningGraphs,\n __health: peerReport.health ?? {},\n __active: peerReport.isActive,\n serviceName: peerReport.serviceName,\n serviceInstanceId: peerReport.serviceInstanceId,\n transportId: peerReport.transportId,\n transportRole: peerReport.transportRole,\n transportOrigin: peerReport.transportOrigin,\n transportProtocols: peerReport.transportProtocols,\n isFrontend: peerReport.isFrontend,\n reportedAt: peerReport.reportedAt,\n numberOfRunningGraphs: peerReport.numberOfRunningGraphs,\n cpuUsage: peerReport.cpuUsage ?? null,\n memoryUsage: peerReport.memoryUsage ?? null,\n eventLoopLag: peerReport.eventLoopLag ?? null,\n health: peerReport.health,\n isActive: peerReport.isActive,\n isNonResponsive: peerReport.isNonResponsive,\n isBlocked: peerReport.isBlocked,\n state: peerReport.state,\n acceptingWork: peerReport.acceptingWork,\n });\n }\n\n if (shouldEmitAuthority) {\n this.lastRuntimeStatusSnapshot = snapshot;\n emit(RUNTIME_STATUS_AUTHORITY_SYNC_REQUESTED_SIGNAL, {\n ...authorityReport,\n force,\n });\n }\n return true;\n },\n \"Broadcasts local runtime status to connected dependees.\",\n ).doOn(\n META_RUNTIME_STATUS_HEARTBEAT_TICK_SIGNAL,\n META_RUNTIME_STATUS_PEER_UPDATE_REQUESTED_SIGNAL,\n \"meta.service_registry.runtime_status_broadcast_requested\",\n );\n\n Cadenza.createMetaTask(\n \"Flush local runtime status to authority\",\n this.localLifecycleFlushActor.task(\n async ({ input, runtimeState, setRuntimeState, inquire }) => {\n if (\n !this.connectsToCadenzaDB ||\n !this.serviceName ||\n !this.serviceInstanceId ||\n this.serviceName === \"CadenzaDB\"\n ) {\n return false;\n }\n\n const report = normalizeAuthorityRuntimeStatusReport(\n input as Record<string, any>,\n );\n if (\n !report ||\n report.serviceName !== this.serviceName ||\n report.serviceInstanceId !== this.serviceInstanceId\n ) {\n return false;\n }\n\n const force = input.force === true;\n const signature = buildAuthorityRuntimeStatusSignature(report);\n const currentState: LocalLifecycleFlushRuntimeState =\n runtimeState ?? {\n lastSentSignature: null,\n lastAckAt: null,\n lastError: null,\n };\n\n if (!force && currentState.lastSentSignature === signature) {\n return false;\n }\n\n try {\n this.ensureBootstrapAuthorityControlPlane(input as AnyObject);\n await inquire(AUTHORITY_RUNTIME_STATUS_REPORT_INTENT, report, {\n timeout: this.runtimeStatusAuthorityReportTimeoutMs,\n requireComplete: true,\n });\n setRuntimeState({\n lastSentSignature: signature,\n lastAckAt: new Date().toISOString(),\n lastError: null,\n });\n return {\n applied: true,\n serviceName: report.serviceName,\n serviceInstanceId: report.serviceInstanceId,\n };\n } catch (error) {\n setRuntimeState({\n ...currentState,\n lastError:\n error instanceof Error ? error.message : String(error ?? \"unknown\"),\n });\n throw error;\n }\n },\n { mode: \"write\" },\n ),\n \"Coalesces local runtime-status flushes and sends one lightweight authority report per service instance at a time.\",\n ).doOn(RUNTIME_STATUS_AUTHORITY_SYNC_REQUESTED_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Refresh REST dependee runtime status\",\n async () => {\n const now = Date.now();\n\n for (const [serviceName, instanceIds] of this.dependeesByService) {\n for (const serviceInstanceId of instanceIds) {\n if (\n this.runtimeStatusFallbackInFlightByInstance.has(serviceInstanceId) ||\n this.runtimeStatusRestRefreshInFlightByInstance.has(serviceInstanceId)\n ) {\n continue;\n }\n\n const instance = this.getInstance(serviceName, serviceInstanceId);\n if (!instance || !this.shouldRefreshRuntimeStatusViaRest(instance, now)) {\n continue;\n }\n\n this.runtimeStatusRestRefreshInFlightByInstance.add(serviceInstanceId);\n\n try {\n const directStatusCheck = await this.requestRuntimeStatusViaRest(\n instance,\n serviceName,\n serviceInstanceId,\n );\n\n if (directStatusCheck.report) {\n this.applyRuntimeStatusReport(directStatusCheck.report);\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, Date.now());\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n continue;\n }\n\n if (\n directStatusCheck.replacementReport &&\n this.applyRuntimeStatusIdentityReplacement(\n instance,\n directStatusCheck.replacementReport,\n directStatusCheck.diagnostic,\n )\n ) {\n continue;\n }\n } finally {\n this.runtimeStatusRestRefreshInFlightByInstance.delete(\n serviceInstanceId,\n );\n }\n }\n }\n\n return true;\n },\n \"Refreshes stale runtime metrics for REST-only dependees so balancing can react without socket status streams.\",\n ).doOn(META_RUNTIME_STATUS_REST_REFRESH_TICK_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Monitor dependee heartbeat freshness\",\n (ctx, emit) => {\n const now = Date.now();\n for (const [serviceName, instanceIds] of this.dependeesByService) {\n for (const serviceInstanceId of instanceIds) {\n const instance = this.getInstance(serviceName, serviceInstanceId);\n if (!instance || !instance.isActive || instance.isBlocked) {\n continue;\n }\n\n if (this.hasReadyClientTransportForProtocol(instance, \"socket\")) {\n this.lastHeartbeatAtByInstance.set(serviceInstanceId, now);\n this.missedHeartbeatsByInstance.set(serviceInstanceId, 0);\n this.runtimeStatusFallbackInFlightByInstance.delete(serviceInstanceId);\n continue;\n }\n\n const lastHeartbeat =\n this.lastHeartbeatAtByInstance.get(serviceInstanceId) ?? 0;\n const misses = this.missedHeartbeatsByInstance.get(serviceInstanceId) ?? 0;\n const heartbeatBudget =\n this.runtimeStatusHeartbeatIntervalMs * (misses + 1);\n\n if (lastHeartbeat > 0 && now - lastHeartbeat < heartbeatBudget) {\n continue;\n }\n\n const nextMisses = misses + 1;\n this.missedHeartbeatsByInstance.set(serviceInstanceId, nextMisses);\n\n if (\n nextMisses < this.runtimeStatusMissThreshold ||\n this.runtimeStatusFallbackInFlightByInstance.has(serviceInstanceId)\n ) {\n continue;\n }\n\n this.runtimeStatusFallbackInFlightByInstance.add(serviceInstanceId);\n const transport = this.getRouteableTransport(\n instance,\n this.useSocket ? \"socket\" : \"rest\",\n );\n emit(\"meta.service_registry.runtime_status_fallback_requested\", {\n ...ctx,\n serviceName,\n serviceInstanceId,\n serviceTransportId: transport?.uuid,\n serviceOrigin: transport?.origin,\n transportProtocols: transport?.protocols,\n });\n }\n }\n\n return true;\n },\n \"Monitors dependee heartbeat freshness and requests inquiry fallback after repeated misses.\",\n ).doOn(META_RUNTIME_STATUS_MONITOR_TICK_SIGNAL);\n\n Cadenza.createMetaTask(\n \"Resolve runtime status fallback inquiry\",\n async (ctx, emit) => {\n const serviceName = ctx.serviceName;\n const serviceInstanceId = ctx.serviceInstanceId;\n if (!serviceName || !serviceInstanceId) {\n return false;\n }\n\n try {\n const { report, inquiryMeta } =\n await this.resolveRuntimeStatusFallbackInquiry(\n serviceName,\n serviceInstanceId,\n {\n detailLevel: ctx.detailLevel === \"full\" ? \"full\" : \"minimal\",\n overallTimeoutMs: ctx.overallTimeoutMs,\n perResponderTimeoutMs: ctx.perResponderTimeoutMs,\n requireComplete: ctx.requireComplete,\n },\n );\n\n return {\n ...ctx,\n runtimeStatusReport: report,\n __inquiryMeta: inquiryMeta,\n };\n } catch (error) {\n const instance = this.getInstance(serviceName, serviceInstanceId);\n const transport = instance\n ? this.getRouteableTransport(\n instance,\n this.useSocket ? \"socket\" : \"rest\",\n )\n : undefined;\n const message =\n error instanceof Error ? error.message : String(error);\n const diagnostics =\n error &&\n typeof error === \"object\" &&\n \"runtimeStatusFallback\" in error &&\n (error as AnyObject).runtimeStatusFallback &&\n typeof (error as AnyObject).runtimeStatusFallback === \"object\"\n ? (error as AnyObject).runtimeStatusFallback\n : undefined;\n\n Cadenza.log(\n \"Runtime status fallback inquiry failed.\",\n {\n serviceName,\n serviceInstanceId,\n error: message,\n diagnostics,\n },\n \"warning\",\n );\n\n emit(\"meta.service_registry.runtime_status_unreachable\", {\n ...ctx,\n serviceName,\n serviceInstanceId,\n serviceTransportId: transport?.uuid ?? ctx.serviceTransportId,\n serviceOrigin: transport?.origin ?? ctx.serviceOrigin,\n transportProtocols: transport?.protocols ?? ctx.transportProtocols,\n __error: message,\n errored: true,\n });\n\n return {\n ...ctx,\n __error: message,\n errored: true,\n };\n } finally {\n this.runtimeStatusFallbackInFlightByInstance.delete(serviceInstanceId);\n }\n },\n \"Runs runtime-status inquiry fallback for a dependee instance after missed heartbeats.\",\n )\n .doOn(\"meta.service_registry.runtime_status_fallback_requested\")\n .emits(\"meta.service_registry.runtime_status_fallback_resolved\")\n .emitsOnFail(\"meta.service_registry.runtime_status_fallback_failed\");\n\n this.collectReadinessTask = Cadenza.createMetaTask(\n \"Collect distributed readiness\",\n async (ctx) => {\n const inquiryResult = await Cadenza.inquire(\n META_READINESS_INTENT,\n {\n detailLevel: ctx.detailLevel === \"full\" ? \"full\" : \"minimal\",\n includeDependencies: ctx.includeDependencies,\n refreshStaleDependencies: ctx.refreshStaleDependencies,\n targetServiceName: ctx.targetServiceName,\n targetServiceInstanceId: ctx.targetServiceInstanceId,\n },\n ctx.inquiryOptions ?? ctx.__inquiryOptions ?? {},\n );\n\n return {\n ...ctx,\n ...inquiryResult,\n };\n },\n \"Collects distributed readiness reports from services.\",\n )\n .doOn(\"meta.service_registry.readiness_requested\")\n .emits(\"meta.service_registry.readiness_collected\")\n .emitsOnFail(\"meta.service_registry.readiness_failed\");\n\n this.collectTransportDiagnosticsTask = Cadenza.createMetaTask(\n \"Collect transport diagnostics\",\n async (ctx) => {\n const inquiryResult = await Cadenza.inquire(\n META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT,\n {\n detailLevel: ctx.detailLevel,\n includeErrorHistory: ctx.includeErrorHistory,\n errorHistoryLimit: ctx.errorHistoryLimit,\n },\n ctx.inquiryOptions ?? ctx.__inquiryOptions ?? {},\n );\n\n return {\n ...ctx,\n ...inquiryResult,\n };\n },\n \"Collects distributed transport diagnostics using inquiry responders.\",\n )\n .doOn(\"meta.service_registry.transport_diagnostics_requested\")\n .emits(\"meta.service_registry.transport_diagnostics_collected\")\n .emitsOnFail(\"meta.service_registry.transport_diagnostics_failed\");\n\n this.insertServiceTask = resolveServiceRegistryInsertTask(\n \"service\",\n {\n onConflict: {\n target: [\"name\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n {\n // validateInputContext: true,\n inputSchema: {\n type: \"object\",\n properties: {\n data: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n },\n description: {\n type: \"string\",\n },\n display_name: {\n type: \"string\",\n },\n is_meta: {\n type: \"boolean\",\n },\n },\n required: [\"name\"],\n },\n },\n required: [\"data\"],\n },\n outputSchema: {\n type: \"object\",\n properties: {\n __serviceName: {\n type: \"string\",\n },\n },\n required: [\"__serviceName\"],\n },\n retryCount: 100,\n retryDelay: 10000,\n retryDelayMax: 60000,\n retryDelayFactor: 1.3,\n },\n )\n .emits(\"meta.service_registry.service_inserted\")\n .emitsOnFail(\"meta.service_registry.service_insertion_failed\");\n\n const insertServiceInstanceResolverTask = resolveServiceRegistryInsertTask(\n \"service_instance\",\n {\n onConflict: {\n target: [\"uuid\"],\n action: {\n do: \"update\",\n set: {\n process_pid: \"excluded\",\n is_primary: \"excluded\",\n service_name: \"excluded\",\n is_database: \"excluded\",\n is_frontend: \"excluded\",\n is_blocked: \"excluded\",\n is_non_responsive: \"excluded\",\n is_active: \"excluded\",\n last_active: \"excluded\",\n health: \"excluded\",\n deleted: \"false\",\n },\n },\n },\n },\n {\n inputSchema: {\n type: \"object\",\n properties: {\n data: {\n type: \"object\",\n properties: {\n uuid: {\n type: \"string\",\n },\n process_pid: {\n type: \"number\",\n },\n is_primary: {\n type: \"boolean\",\n },\n service_name: {\n type: \"string\",\n },\n is_active: {\n type: \"boolean\",\n },\n is_frontend: {\n type: \"boolean\",\n },\n is_database: {\n type: \"boolean\",\n },\n is_non_responsive: {\n type: \"boolean\",\n },\n is_blocked: {\n type: \"boolean\",\n },\n health: {\n type: \"object\",\n },\n },\n required: [\"uuid\", \"process_pid\", \"service_name\"],\n },\n },\n required: [\"data\"],\n },\n outputSchema: {\n type: \"object\",\n properties: {\n uuid: {\n type: \"string\",\n },\n },\n required: [\"uuid\"],\n },\n retryCount: 5,\n retryDelay: 1000,\n },\n ).emitsOnFail(\"meta.service_registry.instance_insertion_failed\");\n\n this.insertServiceInstanceTask = insertServiceInstanceResolverTask;\n\n const setupServiceTask = Cadenza.createMetaTask(\n \"Setup service\",\n (ctx) => {\n const traceServiceName =\n resolveServiceNameFromContext(ctx) || Cadenza.serviceRegistry.serviceName;\n const {\n serviceInstance,\n data,\n queryData,\n __useSocket,\n __retryCount,\n __isFrontend,\n } = ctx;\n const normalizedLocalInstance = normalizeServiceInstanceDescriptor({\n ...(serviceInstance ?? data ?? queryData?.data ?? {}),\n transports: ctx.__transportData ?? ctx.transportData ?? [],\n });\n\n if (\n !normalizedLocalInstance?.uuid ||\n !normalizedLocalInstance.serviceName\n ) {\n if (shouldTraceServiceRegistry(traceServiceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] setup_service_rejected\", {\n localServiceName: this.serviceName,\n serviceName: traceServiceName || null,\n serviceInstanceId:\n ctx.__serviceInstanceId ??\n ctx.data?.uuid ??\n ctx.queryData?.data?.uuid ??\n null,\n hasTransportData:\n Array.isArray(ctx.__transportData) || Array.isArray(ctx.transportData),\n transportCount: Array.isArray(ctx.__transportData)\n ? ctx.__transportData.length\n : Array.isArray(ctx.transportData)\n ? ctx.transportData.length\n : 0,\n dataKeys:\n data && typeof data === \"object\" ? Object.keys(data) : [],\n queryDataDataKeys:\n queryData?.data && typeof queryData.data === \"object\"\n ? Object.keys(queryData.data)\n : [],\n });\n }\n if (\n process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] setup_service_rejected_instance\", {\n hasServiceInstance: !!serviceInstance,\n hasData: !!data,\n hasQueryDataData: !!queryData?.data,\n serviceInstanceKeys:\n serviceInstance && typeof serviceInstance === \"object\"\n ? Object.keys(serviceInstance)\n : [],\n dataKeys:\n data && typeof data === \"object\" ? Object.keys(data) : [],\n queryDataDataKeys:\n queryData?.data && typeof queryData.data === \"object\"\n ? Object.keys(queryData.data)\n : [],\n normalizedLocalInstance,\n transportCount: Array.isArray(ctx.__transportData)\n ? ctx.__transportData.length\n : Array.isArray(ctx.transportData)\n ? ctx.transportData.length\n : 0,\n errored: ctx.errored === true,\n error: ctx.__error ?? null,\n inquiryMeta: ctx.__inquiryMeta ?? null,\n });\n }\n return false;\n }\n\n if (shouldTraceServiceRegistry(normalizedLocalInstance.serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] setup_service\", {\n localServiceName: this.serviceName,\n serviceName: normalizedLocalInstance.serviceName,\n serviceInstanceId: normalizedLocalInstance.uuid,\n transportCount: Array.isArray(ctx.__transportData)\n ? ctx.__transportData.length\n : Array.isArray(ctx.transportData)\n ? ctx.transportData.length\n : 0,\n hasTransportData:\n Array.isArray(ctx.__transportData) || Array.isArray(ctx.transportData),\n });\n }\n\n this.serviceInstanceId = normalizedLocalInstance.uuid;\n this.instances.set(\n normalizedLocalInstance.serviceName,\n [{ ...normalizedLocalInstance }],\n );\n this.useSocket = __useSocket;\n this.retryCount = __retryCount;\n this.isFrontend =\n typeof __isFrontend === \"boolean\"\n ? __isFrontend\n : !!normalizedLocalInstance.isFrontend;\n return {\n ...ctx,\n serviceInstance: normalizedLocalInstance,\n data: {\n ...(ctx.data ?? {}),\n uuid: normalizedLocalInstance.uuid,\n service_name: normalizedLocalInstance.serviceName,\n },\n __serviceName: normalizedLocalInstance.serviceName,\n __serviceInstanceId: normalizedLocalInstance.uuid,\n };\n },\n \"Sets service instance id after insertion\",\n )\n .doOn(META_SERVICE_INSTANCE_INSERT_RESOLVED_SIGNAL)\n .emits(\"meta.service_registry.instance_inserted\");\n\n setupServiceTask.then(\n Cadenza.createMetaTask(\n \"Prepare service transport inserts\",\n function* (ctx: AnyObject, emit) {\n const traceServiceName =\n String(\n ctx.__serviceName ??\n ctx.serviceName ??\n Cadenza.serviceRegistry.serviceName ??\n \"\",\n ).trim();\n const transportData = Array.isArray(ctx.__transportData)\n ? ctx.__transportData\n : Array.isArray(ctx.transportData)\n ? ctx.transportData\n : [];\n\n if (shouldTraceServiceRegistry(traceServiceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] prepare_transport_inserts\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n serviceName: traceServiceName || null,\n serviceInstanceId: ctx.__serviceInstanceId ?? null,\n transportCount: transportData.length,\n transports: transportData,\n });\n }\n\n for (const transport of transportData) {\n const transportContext = {\n ...ctx,\n data: {\n ...transport,\n service_instance_id:\n transport.service_instance_id ?? ctx.__serviceInstanceId,\n },\n __registrationData: {\n ...transport,\n service_instance_id:\n transport.service_instance_id ?? ctx.__serviceInstanceId,\n },\n };\n emit(\n \"meta.service_registry.transport_registration_requested\",\n transportContext,\n );\n yield transportContext;\n }\n },\n \"Splits declared service transports into individual insert payloads.\",\n ).attachSignal(\"meta.service_registry.transport_registration_requested\"),\n );\n\n Cadenza.createMetaTask(\n \"Ensure declared service transports are registered\",\n function* (ctx: AnyObject, emit) {\n const traceServiceName =\n String(\n ctx.__serviceName ??\n ctx.serviceName ??\n Cadenza.serviceRegistry.serviceName ??\n \"\",\n ).trim();\n const transportData = Array.isArray(ctx.__transportData)\n ? ctx.__transportData\n : Array.isArray(ctx.transportData)\n ? ctx.transportData\n : [];\n\n if (transportData.length === 0) {\n return false;\n }\n\n if (shouldTraceServiceRegistry(traceServiceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] ensure_transport_registration\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n serviceName: traceServiceName || null,\n serviceInstanceId: ctx.__serviceInstanceId ?? null,\n transportCount: transportData.length,\n transports: transportData,\n });\n }\n\n for (const transport of transportData) {\n const transportContext = {\n ...ctx,\n data: {\n ...transport,\n service_instance_id:\n transport.service_instance_id ?? ctx.__serviceInstanceId,\n },\n __registrationData: {\n ...transport,\n service_instance_id:\n transport.service_instance_id ?? ctx.__serviceInstanceId,\n },\n };\n\n emit(\n \"meta.service_registry.transport_registration_requested\",\n transportContext,\n );\n yield transportContext;\n }\n },\n \"Idempotently replays declared startup transports so bootstrap does not depend on one instance-insert resolution event.\",\n ).doOn(\"meta.service_registry.transport_registration_ensure_requested\");\n\n Cadenza.createMetaTask(\n \"Retry local service instance registration after failed insert\",\n (ctx) => {\n const registrationPayload = resolveServiceInstanceRegistrationPayload(\n ctx,\n this.serviceName,\n this.serviceInstanceId,\n );\n\n if (!registrationPayload) {\n return false;\n }\n\n const serviceName = String(\n registrationPayload.service_name ?? this.serviceName ?? \"\",\n ).trim();\n\n if (!serviceName || serviceName !== this.serviceName) {\n return false;\n }\n\n Cadenza.schedule(\n \"meta.service_registry.instance_registration_requested\",\n {\n ...ctx,\n data: registrationPayload,\n __registrationData: registrationPayload,\n __serviceName: serviceName,\n __serviceInstanceId: registrationPayload.uuid,\n },\n 5000,\n );\n\n return true;\n },\n \"Retries local service instance registration only after the previous insert attempt has failed.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.instance_insertion_failed\");\n\n Cadenza.createMetaTask(\n \"Prepare service instance registration\",\n (ctx) => {\n const registrationPayload = resolveServiceInstanceRegistrationPayload(\n ctx,\n this.serviceName,\n this.serviceInstanceId,\n );\n const sanitizedContext = sanitizeServiceRegistryInsertExecutionContext(\n ctx,\n );\n\n if (\n process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] prepare_service_instance_registration\", {\n serviceName:\n registrationPayload?.service_name ??\n sanitizedContext.data?.service_name ??\n sanitizedContext.__serviceName ??\n this.serviceName ??\n null,\n serviceInstanceId:\n registrationPayload?.uuid ??\n sanitizedContext.data?.uuid ??\n sanitizedContext.__serviceInstanceId ??\n this.serviceInstanceId ??\n null,\n hasData: !!registrationPayload,\n dataKeys:\n registrationPayload && typeof registrationPayload === \"object\"\n ? Object.keys(registrationPayload)\n : [],\n transportCount: Array.isArray(sanitizedContext.__transportData)\n ? sanitizedContext.__transportData.length\n : Array.isArray(sanitizedContext.transportData)\n ? sanitizedContext.transportData.length\n : 0,\n skipRemoteExecution: sanitizedContext.__skipRemoteExecution === true,\n });\n }\n\n if (!registrationPayload) {\n return false;\n }\n\n const serviceName = String(\n registrationPayload.service_name ??\n sanitizedContext.__serviceName ??\n this.serviceName ??\n \"\",\n ).trim();\n\n if (shouldTraceServiceRegistry(serviceName || this.serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] prepare_instance_registration\", {\n localServiceName: this.serviceName,\n serviceName: serviceName || null,\n serviceInstanceId: registrationPayload.uuid ?? null,\n transportCount: Array.isArray(sanitizedContext.__transportData)\n ? sanitizedContext.__transportData.length\n : Array.isArray(sanitizedContext.transportData)\n ? sanitizedContext.transportData.length\n : 0,\n hasTransportData:\n Array.isArray(sanitizedContext.__transportData) ||\n Array.isArray(sanitizedContext.transportData),\n });\n }\n\n if (\n serviceName === \"CadenzaDB\" &&\n !Cadenza.getLocalCadenzaDBInsertTask(\"service_instance\")\n ) {\n Cadenza.schedule(\n \"meta.service_registry.instance_registration_requested\",\n { ...sanitizedContext },\n 250,\n );\n return false;\n }\n\n return {\n ...sanitizedContext,\n data: registrationPayload,\n __registrationData: {\n ...(sanitizedContext.__registrationData ?? {}),\n ...registrationPayload,\n },\n __serviceName: serviceName,\n __serviceInstanceId: registrationPayload.uuid,\n };\n },\n \"Waits for the exact local CadenzaDB service instance insert task during self-bootstrap.\",\n )\n .doOn(\"meta.service_registry.instance_registration_requested\")\n .then(this.insertServiceInstanceTask);\n\n this.insertServiceTransportTask = resolveServiceRegistryInsertTask(\n \"service_instance_transport\",\n {\n onConflict: {\n target: [\"service_instance_id\", \"role\", \"origin\"],\n action: {\n do: \"update\",\n set: {\n protocols: \"excluded\",\n security_profile: \"excluded\",\n auth_strategy: \"excluded\",\n deleted: \"false\",\n },\n },\n },\n },\n {\n inputSchema: {\n type: \"object\",\n properties: {\n data: {\n type: \"object\",\n properties: {\n uuid: {\n type: \"string\",\n },\n service_instance_id: {\n type: \"string\",\n },\n role: {\n type: \"string\",\n },\n origin: {\n type: \"string\",\n },\n protocols: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n security_profile: {\n type: \"string\",\n },\n auth_strategy: {\n type: \"string\",\n },\n },\n required: [\"uuid\", \"service_instance_id\", \"role\", \"origin\"],\n },\n },\n required: [\"data\"],\n },\n outputSchema: {\n type: \"object\",\n properties: {\n uuid: {\n type: \"string\",\n },\n },\n required: [\"uuid\"],\n },\n retryCount: 5,\n retryDelay: 1000,\n },\n )\n .emits(\"meta.service_registry.transport_registered\")\n .emitsOnFail(\"meta.service_registry.transport_registration_failed\");\n\n Cadenza.createMetaTask(\n \"Prepare service transport registration\",\n (ctx) => {\n const serviceName = String(\n ctx.__serviceName ?? this.serviceName ?? \"\",\n ).trim();\n\n if (shouldTraceServiceRegistry(serviceName)) {\n console.log(\"[CADENZA_SERVICE_REGISTRY_TRACE] prepare_transport_registration\", {\n localServiceName: this.serviceName,\n serviceName,\n serviceInstanceId:\n ctx.__serviceInstanceId ?? ctx.data?.service_instance_id ?? null,\n data: ctx.data ?? null,\n });\n }\n\n if (\n serviceName === \"CadenzaDB\" &&\n !Cadenza.getLocalCadenzaDBInsertTask(\"service_instance_transport\")\n ) {\n Cadenza.schedule(\n \"meta.service_registry.transport_registration_requested\",\n { ...ctx },\n 250,\n );\n return false;\n }\n\n return ctx;\n },\n \"Waits for the exact local CadenzaDB service transport insert task during self-bootstrap.\",\n )\n .doOn(\"meta.service_registry.transport_registration_requested\")\n .then(this.insertServiceTransportTask);\n\n Cadenza.createMetaTask(\n \"Prepare service instance update persistence\",\n (ctx) => {\n const instanceId = String(\n ctx.queryData?.filter?.uuid ??\n ctx.filter?.uuid ??\n ctx.__serviceInstanceId ??\n ctx.data?.uuid ??\n \"\",\n ).trim();\n if (!instanceId || !ctx.data || typeof ctx.data !== \"object\") {\n return false;\n }\n\n return {\n ...ctx,\n queryData: {\n ...(ctx.queryData ?? {}),\n filter: {\n ...(ctx.queryData?.filter ?? ctx.filter ?? {}),\n uuid: instanceId,\n },\n },\n };\n },\n \"Persists authority-facing service instance state updates without re-running local setup.\",\n )\n .doOn(\"meta.service_registry.instance_update_requested\")\n .then(\n Cadenza.createCadenzaDBTask(\n \"service_instance\",\n \"update\",\n {},\n {\n isHidden: true,\n },\n ),\n );\n\n Cadenza.createMetaTask(\n \"Prepare service transport update persistence\",\n (ctx) => {\n const transportId = String(\n ctx.queryData?.filter?.uuid ?? ctx.filter?.uuid ?? ctx.data?.uuid ?? \"\",\n ).trim();\n if (\n !transportId ||\n !isPersistedUuid(transportId) ||\n !ctx.data ||\n typeof ctx.data !== \"object\"\n ) {\n return false;\n }\n\n return {\n ...ctx,\n queryData: {\n ...(ctx.queryData ?? {}),\n filter: {\n ...(ctx.queryData?.filter ?? ctx.filter ?? {}),\n uuid: transportId,\n },\n },\n };\n },\n \"Persists authority-facing service transport state updates without re-running local registration.\",\n )\n .doOn(\"meta.service_registry.transport_update_requested\")\n .then(\n Cadenza.createCadenzaDBTask(\n \"service_instance_transport\",\n \"update\",\n {},\n {\n isHidden: true,\n },\n ),\n );\n\n Cadenza.createMetaTask(\n \"Handle service creation\",\n (ctx) => {\n if (!ctx.__cadenzaDBConnect) {\n ctx.__skipRemoteExecution = true;\n }\n\n if (isBrowser || ctx.__isFrontend) {\n Cadenza.createMetaTask(\"Prepare for signal sync\", () => {\n return {};\n })\n // .doAfter(this.fullSyncTask)\n .then(\n Cadenza.createCadenzaDBQueryTask(\"signal_registry\", {\n fields: [\"name\"],\n filter: {\n global: true,\n },\n }).then(\n Cadenza.createMetaTask(\n // TODO this is outdated. Fix it.\n \"Create signal transmission tasks\",\n (ctx, emit) => {\n const signalRegistry = ctx.signalRegistry;\n for (const signal of signalRegistry) {\n emit(\"meta.service_registry.foreign_signal_registered\", {\n __emitterSignalName: signal.name,\n __listenerServiceName: signal.serviceName,\n });\n }\n\n return true;\n },\n ).then(\n Cadenza.createMetaTask(\"Connect to services\", (ctx, emit) => {\n const services: string[] = Array.from(\n new Set(\n ctx.signalRegistry.map((s: any) => s.serviceName),\n ),\n );\n for (const service of services) {\n const instances = this.instances\n .get(service)!\n .filter((i) => i.isActive && !i.isFrontend);\n for (const instance of instances) {\n const transport = this.getRouteableTransport(\n instance,\n this.useSocket ? \"socket\" : \"rest\",\n );\n if (!transport) {\n continue;\n }\n\n if (\n !this.hasTransportClientCreated(\n instance,\n transport,\n \"rest\",\n )\n ) {\n const route = this.upsertRemoteRouteRecord(\n instance.serviceName,\n instance.uuid,\n transport,\n );\n emit(\"meta.service_registry.dependee_registered\", {\n serviceName: service,\n serviceInstanceId: instance.uuid,\n serviceTransportId: transport.uuid,\n serviceOrigin: transport.origin,\n routeKey: route.key,\n fetchId: this.buildTransportProtocolHandleKey(\n route.key,\n \"rest\",\n ),\n socketClientId: this.buildTransportProtocolHandleKey(\n route.key,\n \"socket\",\n ),\n routeGeneration: route.generation,\n transportProtocols: transport.protocols,\n communicationTypes: [\"signal\"],\n });\n this.markTransportClientPending(instance, transport, \"rest\");\n }\n }\n }\n return {};\n }),\n ),\n ),\n );\n }\n\n return ctx;\n },\n \"Handles the request to create a service instance\",\n )\n .doOn(\"meta.create_service_requested\")\n .then(this.insertServiceTask);\n }\n\n reset() {\n this.instances.clear();\n this.deputies.clear();\n this.remoteSignals.clear();\n this.remoteIntents.clear();\n this.gatheredSyncTransmissionServices.clear();\n this.remoteIntentDeputiesByKey.clear();\n this.remoteIntentDeputiesByTask.clear();\n this.dependeesByService.clear();\n this.dependeeByInstance.clear();\n this.readinessDependeesByService.clear();\n this.readinessDependeeByInstance.clear();\n this.lastHeartbeatAtByInstance.clear();\n this.missedHeartbeatsByInstance.clear();\n this.runtimeStatusFallbackInFlightByInstance.clear();\n this.runtimeStatusRestRefreshInFlightByInstance.clear();\n this.routingCooldownsByKey.clear();\n this.transportFailuresByKey.clear();\n this.activeRoutineExecutionIds.clear();\n this.numberOfRunningGraphs = 0;\n this.runtimeStatusHeartbeatStarted = false;\n this.lastRuntimeStatusSnapshot = null;\n this.isFrontend = false;\n this.localInstanceSeed = null;\n }\n}\n","export default class DatabaseController {\n private static _instance: DatabaseController;\n\n public static get instance(): DatabaseController {\n if (!this._instance) {\n this._instance = new DatabaseController();\n }\n\n return this._instance;\n }\n\n private unsupported(message: string): never {\n throw new Error(message);\n }\n\n createPostgresActor(): never {\n return this.unsupported(\n \"PostgresActor creation is not supported in the browser runtime.\",\n );\n }\n\n requestPostgresActorSetup(): never {\n return this.unsupported(\n \"PostgresActor setup is not supported in the browser runtime.\",\n );\n }\n}\n","/**\n * A boolean variable indicating whether the current runtime environment is Node.js.\n *\n * This variable checks for the presence of the `process` object, which is specific to Node.js,\n * and verifies if the `process.versions.node` property is defined to confirm the environment.\n *\n * If the runtime is Node.js, `isNode` will be `true`; otherwise, it will be `false`.\n */\nexport const isNode =\n typeof process !== \"undefined\" && process.versions?.node != null;\n\n/**\n * A boolean variable that indicates whether the current runtime environment\n * is a browser. It checks for the presence of the `window` object and the\n * `document` property within it to determine if the code is running in a\n * browser context.\n *\n * - Returns `true` if the `window` object and its `document` property are\n * both defined, which typically indicates a browser environment.\n * - Returns `false` if the `window` object or `document` property is\n * undefined, which typically signifies a non-browser environment such\n * as a Node.js environment.\n */\nexport const isBrowser =\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport type {\n InquiryResponderDescriptor,\n InquiryResponderStatus,\n} from \"../types/inquiry\";\n\nexport const META_INTENT_PREFIX = \"meta-\";\nexport const META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT =\n \"meta-runtime-transport-diagnostics\";\nexport const META_RUNTIME_STATUS_INTENT = \"meta-runtime-status\";\nexport const META_READINESS_INTENT = \"meta-readiness\";\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.getPrototypeOf(value) === Object.prototype\n );\n}\n\nfunction deepMergeDeterministic(left: any, right: any): any {\n if (Array.isArray(left) && Array.isArray(right)) {\n return [...left, ...right];\n }\n\n if (isPlainObject(left) && isPlainObject(right)) {\n const merged: Record<string, any> = { ...left };\n const keys = Array.from(new Set([...Object.keys(left), ...Object.keys(right)])).sort();\n\n for (const key of keys) {\n if (!(key in left)) {\n merged[key] = right[key];\n continue;\n }\n\n if (!(key in right)) {\n merged[key] = left[key];\n continue;\n }\n\n merged[key] = deepMergeDeterministic(left[key], right[key]);\n }\n\n return merged;\n }\n\n return right;\n}\n\nexport function mergeInquiryContexts(contexts: AnyObject[]): AnyObject {\n return contexts.reduce((acc, next) => deepMergeDeterministic(acc, next), {});\n}\n\nexport function isMetaIntentName(intentName: string): boolean {\n return intentName.startsWith(META_INTENT_PREFIX);\n}\n\nexport function shouldExecuteInquiryResponder(\n inquiry: string,\n responderIsMeta: boolean,\n): boolean {\n if (!isMetaIntentName(inquiry)) {\n return true;\n }\n\n return responderIsMeta;\n}\n\nexport function compareResponderDescriptors(\n left: InquiryResponderDescriptor,\n right: InquiryResponderDescriptor,\n): number {\n if (left.serviceName !== right.serviceName) {\n return left.serviceName.localeCompare(right.serviceName);\n }\n\n if (left.taskName !== right.taskName) {\n return left.taskName.localeCompare(right.taskName);\n }\n\n if (left.taskVersion !== right.taskVersion) {\n return left.taskVersion - right.taskVersion;\n }\n\n return left.localTaskName.localeCompare(right.localTaskName);\n}\n\nexport function summarizeResponderStatuses(\n statuses: InquiryResponderStatus[],\n): {\n responded: number;\n failed: number;\n timedOut: number;\n pending: number;\n} {\n let responded = 0;\n let failed = 0;\n let timedOut = 0;\n let pending = 0;\n\n for (const status of statuses) {\n if (status.status === \"fulfilled\") responded++;\n if (status.status === \"failed\") failed++;\n if (status.status === \"timed_out\") timedOut++;\n }\n\n pending = Math.max(0, statuses.length - responded - failed - timedOut);\n\n return { responded, failed, timedOut, pending };\n}\n","import type {\n ServiceTransportConfig,\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n ServiceTransportSecurityProfile,\n} from \"../types/transport\";\n\nconst DEFAULT_PROTOCOLS: ServiceTransportProtocol[] = [\"rest\", \"socket\"];\nconst TRANSPORT_HANDLE_ROUTE_KEY_BY_HANDLE = new Map<string, string>();\n\nfunction normalizeString(value: unknown): string {\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n\nfunction hashString(value: string): string {\n let hash = 2166136261;\n\n for (let index = 0; index < value.length; index += 1) {\n hash ^= value.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n\n return (hash >>> 0).toString(36);\n}\n\nexport function normalizeTransportProtocols(\n value: unknown,\n): ServiceTransportProtocol[] {\n const rawValues = Array.isArray(value)\n ? value\n : typeof value === \"string\"\n ? value.split(\",\")\n : [];\n\n const normalized = rawValues\n .map((entry) => normalizeString(entry))\n .filter(\n (entry): entry is ServiceTransportProtocol =>\n entry === \"rest\" || entry === \"socket\",\n );\n\n return Array.from(new Set(normalized));\n}\n\nexport function normalizeTransportOrigin(origin: unknown): string | null {\n const raw = normalizeString(origin);\n if (!raw) {\n return null;\n }\n\n let parsed: URL;\n try {\n parsed = new URL(raw);\n } catch {\n return null;\n }\n\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return null;\n }\n\n if (parsed.pathname && parsed.pathname !== \"/\") {\n return null;\n }\n\n if (parsed.search || parsed.hash) {\n return null;\n }\n\n return parsed.origin;\n}\n\nfunction normalizeSecurityProfile(\n value: unknown,\n): ServiceTransportSecurityProfile | null {\n const normalized = normalizeString(value);\n if (\n normalized === \"low\" ||\n normalized === \"medium\" ||\n normalized === \"high\"\n ) {\n return normalized;\n }\n\n return null;\n}\n\nexport function normalizeServiceTransportConfig(\n value: unknown,\n): ServiceTransportConfig | null {\n const raw = (value ?? {}) as Record<string, unknown>;\n const role = normalizeString(raw.role) as ServiceTransportRole;\n const origin = normalizeTransportOrigin(raw.origin);\n const protocols = normalizeTransportProtocols(raw.protocols);\n\n if (!origin) {\n return null;\n }\n\n if (role !== \"internal\" && role !== \"public\") {\n return null;\n }\n\n return {\n role,\n origin,\n protocols: protocols.length > 0 ? protocols : [...DEFAULT_PROTOCOLS],\n securityProfile: normalizeSecurityProfile(raw.securityProfile),\n authStrategy: normalizeString(raw.authStrategy) || null,\n };\n}\n\nexport function normalizeServiceTransportDescriptor(\n value: unknown,\n): ServiceTransportDescriptor | null {\n const raw = (value ?? {}) as Record<string, unknown>;\n const uuid = normalizeString(raw.uuid);\n const serviceInstanceId = normalizeString(\n raw.serviceInstanceId ?? raw.service_instance_id,\n );\n const config = normalizeServiceTransportConfig(raw);\n\n if (!uuid || !serviceInstanceId || !config) {\n return null;\n }\n\n return {\n uuid,\n serviceInstanceId,\n role: config.role,\n origin: config.origin,\n protocols: config.protocols ?? [...DEFAULT_PROTOCOLS],\n securityProfile: config.securityProfile ?? null,\n authStrategy: config.authStrategy ?? null,\n deleted: Boolean(raw.deleted),\n clientCreated: Boolean(raw.clientCreated ?? raw.client_created ?? false),\n };\n}\n\nexport function transportSupportsProtocol(\n transport: ServiceTransportDescriptor | null | undefined,\n protocol: ServiceTransportProtocol,\n): boolean {\n return !!transport && transport.protocols.includes(protocol);\n}\n\nexport function selectTransportForRole(\n transports: ServiceTransportDescriptor[],\n role: ServiceTransportRole,\n protocol?: ServiceTransportProtocol,\n): ServiceTransportDescriptor | undefined {\n const filtered = transports.filter(\n (transport) =>\n !transport.deleted &&\n transport.role === role &&\n (!protocol || transportSupportsProtocol(transport, protocol)),\n );\n\n return filtered.sort((left, right) => {\n const leftIsBootstrap = left.uuid.endsWith(\"-bootstrap\") ? 1 : 0;\n const rightIsBootstrap = right.uuid.endsWith(\"-bootstrap\") ? 1 : 0;\n if (leftIsBootstrap !== rightIsBootstrap) {\n return leftIsBootstrap - rightIsBootstrap;\n }\n\n return left.origin.localeCompare(right.origin);\n })[0];\n}\n\nexport function buildTransportClientKey(\n transport: Pick<ServiceTransportDescriptor, \"uuid\" | \"role\" | \"origin\">,\n serviceName?: string,\n): string {\n return buildTransportRouteKey(transport, serviceName);\n}\n\nexport function buildTransportRouteKey(\n transport: Pick<ServiceTransportDescriptor, \"uuid\" | \"role\" | \"origin\">,\n serviceName?: string,\n): string {\n const normalizedServiceName =\n typeof serviceName === \"string\" ? serviceName.trim() : \"\";\n const normalizedOrigin = normalizeTransportOrigin(transport.origin);\n\n if (normalizedServiceName && transport.role && normalizedOrigin) {\n return `${normalizedServiceName}|${transport.role}|${normalizedOrigin}`;\n }\n\n return transport.uuid;\n}\n\nexport function buildTransportHandleKey(\n routeKey: string,\n protocol: ServiceTransportProtocol,\n): string {\n const normalizedRouteKey = String(routeKey ?? \"\").trim();\n if (!normalizedRouteKey) {\n return protocol;\n }\n\n const servicePrefix =\n normalizedRouteKey.split(\"|\")[0]?.trim().slice(0, 32) || \"route\";\n const handleKey = `${servicePrefix}|${hashString(normalizedRouteKey)}|${protocol}`;\n TRANSPORT_HANDLE_ROUTE_KEY_BY_HANDLE.set(handleKey, normalizedRouteKey);\n return handleKey;\n}\n\nexport function parseTransportHandleKey(\n value: unknown,\n): {\n routeKey: string;\n protocol: ServiceTransportProtocol | null;\n} | null {\n const normalized = normalizeString(value);\n if (!normalized) {\n return null;\n }\n\n if (normalized.endsWith(\"|rest\")) {\n return {\n routeKey: TRANSPORT_HANDLE_ROUTE_KEY_BY_HANDLE.get(normalized) ?? normalized.slice(0, -5),\n protocol: \"rest\",\n };\n }\n\n if (normalized.endsWith(\"|socket\")) {\n return {\n routeKey:\n TRANSPORT_HANDLE_ROUTE_KEY_BY_HANDLE.get(normalized) ?? normalized.slice(0, -7),\n protocol: \"socket\",\n };\n }\n\n return {\n routeKey: normalized,\n protocol: null,\n };\n}\n\nexport function parseTransportOrigin(\n origin: string,\n): { protocol: \"http\" | \"https\"; hostname: string; port: number } | null {\n const normalized = normalizeTransportOrigin(origin);\n if (!normalized) {\n return null;\n }\n\n const parsed = new URL(normalized);\n const protocol = parsed.protocol === \"https:\" ? \"https\" : \"http\";\n const port = parsed.port\n ? Number(parsed.port)\n : protocol === \"https\"\n ? 443\n : 80;\n\n return {\n protocol,\n hostname: parsed.hostname,\n port,\n };\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport type { ServiceInstanceDescriptor } from \"../types/serviceRegistry\";\nimport type {\n ServiceTransportDescriptor,\n ServiceTransportProtocol,\n ServiceTransportRole,\n} from \"../types/transport\";\nimport {\n buildTransportClientKey,\n normalizeServiceTransportDescriptor,\n selectTransportForRole,\n} from \"./transport\";\n\nfunction normalizeString(value: unknown): string {\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n\nfunction normalizeTransportArray(\n value: unknown,\n serviceInstanceId: string,\n): ServiceTransportDescriptor[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((entry) =>\n normalizeServiceTransportDescriptor({\n ...((entry ?? {}) as Record<string, unknown>),\n service_instance_id:\n (entry as Record<string, unknown> | undefined)?.service_instance_id ??\n (entry as Record<string, unknown> | undefined)?.serviceInstanceId ??\n serviceInstanceId,\n }),\n )\n .filter((transport): transport is ServiceTransportDescriptor => !!transport)\n .sort((left, right) => left.origin.localeCompare(right.origin));\n}\n\nexport function normalizeServiceInstanceDescriptor(\n value: unknown,\n): ServiceInstanceDescriptor | null {\n const raw = (value ?? {}) as Record<string, unknown>;\n const uuid = normalizeString(raw.uuid);\n const serviceName = normalizeString(raw.serviceName ?? raw.service_name);\n\n if (!uuid || !serviceName) {\n return null;\n }\n\n const transports = normalizeTransportArray(raw.transports, uuid);\n\n return {\n uuid,\n serviceName,\n numberOfRunningGraphs: Math.max(\n 0,\n Math.trunc(\n Number(raw.numberOfRunningGraphs ?? raw.number_of_running_graphs ?? 0) ||\n 0,\n ),\n ),\n isPrimary: Boolean(raw.isPrimary ?? raw.is_primary ?? false),\n isActive: Boolean(raw.isActive ?? raw.is_active ?? true),\n isNonResponsive: Boolean(\n raw.isNonResponsive ?? raw.is_non_responsive ?? false,\n ),\n isBlocked: Boolean(raw.isBlocked ?? raw.is_blocked ?? false),\n runtimeState:\n raw.runtimeState === \"healthy\" ||\n raw.runtimeState === \"degraded\" ||\n raw.runtimeState === \"overloaded\" ||\n raw.runtimeState === \"unavailable\"\n ? raw.runtimeState\n : undefined,\n acceptingWork:\n typeof raw.acceptingWork === \"boolean\" ? raw.acceptingWork : undefined,\n reportedAt:\n typeof raw.reportedAt === \"string\"\n ? raw.reportedAt\n : typeof raw.reported_at === \"string\"\n ? raw.reported_at\n : undefined,\n health: (raw.health ?? {}) as AnyObject,\n isFrontend: Boolean(raw.isFrontend ?? raw.is_frontend ?? false),\n isDatabase: Boolean(raw.isDatabase ?? raw.is_database ?? false),\n isBootstrapPlaceholder: Boolean(\n raw.isBootstrapPlaceholder ?? raw.is_bootstrap_placeholder ?? false,\n ),\n transports,\n };\n}\n\nexport function getRouteableTransport(\n instance: ServiceInstanceDescriptor,\n role: ServiceTransportRole,\n protocol?: ServiceTransportProtocol,\n): ServiceTransportDescriptor | undefined {\n return selectTransportForRole(instance.transports ?? [], role, protocol);\n}\n\nexport function getTransportClientKeyForRole(\n instance: ServiceInstanceDescriptor,\n role: ServiceTransportRole,\n protocol?: ServiceTransportProtocol,\n): string | null {\n const transport = getRouteableTransport(instance, role, protocol);\n if (!transport) {\n return null;\n }\n\n return buildTransportClientKey(transport, instance.serviceName);\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\n\nexport const SERVICE_COMMUNICATION_MAP_CONFLICT_TARGET = [\n \"service_instance_id\",\n \"service_instance_client_id\",\n \"communication_type\",\n] as const;\nexport const META_SERVICE_COMMUNICATION_PERSIST_RETRY_SIGNAL =\n \"meta.service_registry.service_communication_persist_retry_requested\";\nexport const SERVICE_COMMUNICATION_PERSIST_RETRY_DELAYS_MS = [\n 250,\n 750,\n 1500,\n 3000,\n] as const;\n\nexport interface ServiceCommunicationPersistenceDescriptor {\n serviceInstanceId: string;\n serviceInstanceClientId: string;\n communicationType: string;\n retryAttempt: number;\n}\n\nexport function buildServiceCommunicationEstablishedContext(input: {\n serviceInstanceId: string;\n serviceInstanceClientId: string;\n communicationType: string;\n}): AnyObject {\n const { serviceInstanceId, serviceInstanceClientId, communicationType } = input;\n\n return {\n data: {\n serviceInstanceId,\n serviceInstanceClientId,\n communicationType,\n },\n onConflict: {\n target: [...SERVICE_COMMUNICATION_MAP_CONFLICT_TARGET],\n action: {\n do: \"nothing\",\n },\n },\n queryData: {\n onConflict: {\n target: [...SERVICE_COMMUNICATION_MAP_CONFLICT_TARGET],\n action: {\n do: \"nothing\",\n },\n },\n },\n };\n}\n\nexport function resolveServiceCommunicationPersistenceDescriptor(\n ctx: AnyObject | null | undefined,\n): ServiceCommunicationPersistenceDescriptor | null {\n const data =\n ctx?.data && typeof ctx.data === \"object\" && !Array.isArray(ctx.data)\n ? (ctx.data as AnyObject)\n : {};\n const queryData =\n ctx?.queryData && typeof ctx.queryData === \"object\" && !Array.isArray(ctx.queryData)\n ? (ctx.queryData as AnyObject)\n : {};\n const queryDataData =\n queryData.data &&\n typeof queryData.data === \"object\" &&\n !Array.isArray(queryData.data)\n ? (queryData.data as AnyObject)\n : {};\n\n const serviceInstanceId = String(\n data.serviceInstanceId ??\n data.service_instance_id ??\n queryDataData.serviceInstanceId ??\n queryDataData.service_instance_id ??\n \"\",\n ).trim();\n const serviceInstanceClientId = String(\n data.serviceInstanceClientId ??\n data.service_instance_client_id ??\n queryDataData.serviceInstanceClientId ??\n queryDataData.service_instance_client_id ??\n \"\",\n ).trim();\n const communicationType = String(\n data.communicationType ??\n data.communication_type ??\n queryDataData.communicationType ??\n queryDataData.communication_type ??\n \"\",\n ).trim();\n const retryAttempt = Number(\n ctx?.__serviceCommunicationRetryAttempt ??\n data.retryAttempt ??\n queryDataData.retryAttempt ??\n 0,\n );\n\n if (!serviceInstanceId || !serviceInstanceClientId || !communicationType) {\n return null;\n }\n\n return {\n serviceInstanceId,\n serviceInstanceClientId,\n communicationType,\n retryAttempt:\n Number.isFinite(retryAttempt) && retryAttempt > 0\n ? Math.trunc(retryAttempt)\n : 0,\n };\n}\n\nexport function buildServiceCommunicationRetryContext(\n descriptor: ServiceCommunicationPersistenceDescriptor,\n): AnyObject {\n return {\n ...buildServiceCommunicationEstablishedContext(descriptor),\n __serviceCommunicationRetryAttempt: descriptor.retryAttempt,\n };\n}\n","import type { RuntimeStatusState } from \"./runtimeStatus\";\n\nexport type ReadinessState = \"ready\" | \"degraded\" | \"blocked\";\nexport type DependencyReadinessState =\n | \"ready\"\n | \"degraded\"\n | \"overloaded\"\n | \"unavailable\";\n\nexport interface DependencyReadinessEvaluationInput {\n exists: boolean;\n runtimeState: RuntimeStatusState;\n acceptingWork: boolean;\n missedHeartbeats: number;\n missThreshold: number;\n}\n\nexport interface DependencyReadinessEvaluation {\n state: DependencyReadinessState;\n stale: boolean;\n blocked: boolean;\n reason:\n | \"missing\"\n | \"heartbeat-timeout\"\n | \"heartbeat-stale\"\n | \"runtime-unavailable\"\n | \"runtime-overloaded\"\n | \"runtime-degraded\"\n | \"runtime-healthy\";\n}\n\nexport interface DependencyReadinessSummary {\n total: number;\n ready: number;\n degraded: number;\n overloaded: number;\n unavailable: number;\n stale: number;\n}\n\nexport function evaluateDependencyReadiness(\n input: DependencyReadinessEvaluationInput,\n): DependencyReadinessEvaluation {\n const missedHeartbeats = Math.max(\n 0,\n Math.trunc(Number(input.missedHeartbeats) || 0),\n );\n const stale = missedHeartbeats > 0;\n const timeoutReached = missedHeartbeats >= Math.max(1, input.missThreshold);\n\n if (!input.exists) {\n return {\n state: \"unavailable\",\n stale: true,\n blocked: true,\n reason: \"missing\",\n };\n }\n\n if (timeoutReached) {\n return {\n state: \"unavailable\",\n stale: true,\n blocked: true,\n reason: \"heartbeat-timeout\",\n };\n }\n\n if (input.runtimeState === \"unavailable\" || !input.acceptingWork) {\n return {\n state: \"unavailable\",\n stale,\n blocked: true,\n reason: \"runtime-unavailable\",\n };\n }\n\n if (stale) {\n return {\n state: \"degraded\",\n stale: true,\n blocked: false,\n reason: \"heartbeat-stale\",\n };\n }\n\n if (input.runtimeState === \"overloaded\") {\n return {\n state: \"overloaded\",\n stale: false,\n blocked: false,\n reason: \"runtime-overloaded\",\n };\n }\n\n if (input.runtimeState === \"degraded\") {\n return {\n state: \"degraded\",\n stale: false,\n blocked: false,\n reason: \"runtime-degraded\",\n };\n }\n\n return {\n state: \"ready\",\n stale: false,\n blocked: false,\n reason: \"runtime-healthy\",\n };\n}\n\nexport function summarizeDependencyReadiness(\n evaluations: DependencyReadinessEvaluation[],\n): DependencyReadinessSummary {\n const summary: DependencyReadinessSummary = {\n total: evaluations.length,\n ready: 0,\n degraded: 0,\n overloaded: 0,\n unavailable: 0,\n stale: 0,\n };\n\n for (const evaluation of evaluations) {\n if (evaluation.state === \"ready\") summary.ready++;\n if (evaluation.state === \"degraded\") summary.degraded++;\n if (evaluation.state === \"overloaded\") summary.overloaded++;\n if (evaluation.state === \"unavailable\") summary.unavailable++;\n if (evaluation.stale) summary.stale++;\n }\n\n return summary;\n}\n\nexport function resolveServiceReadinessState(\n localRuntimeState: RuntimeStatusState,\n localAcceptingWork: boolean,\n dependencySummary: DependencyReadinessSummary,\n): ReadinessState {\n if (localRuntimeState === \"unavailable\" || !localAcceptingWork) {\n return \"blocked\";\n }\n\n if (dependencySummary.unavailable > 0) {\n return \"blocked\";\n }\n\n if (\n dependencySummary.degraded > 0 ||\n dependencySummary.overloaded > 0 ||\n dependencySummary.stale > 0\n ) {\n return \"degraded\";\n }\n\n return \"ready\";\n}\n","export type RuntimeStatusState =\n | \"healthy\"\n | \"degraded\"\n | \"overloaded\"\n | \"unavailable\";\n\nexport interface RuntimeStatusSnapshot {\n state: RuntimeStatusState;\n acceptingWork: boolean;\n numberOfRunningGraphs: number;\n isActive: boolean;\n isNonResponsive: boolean;\n isBlocked: boolean;\n}\n\nexport interface ResolveRuntimeStatusInput {\n numberOfRunningGraphs: number;\n isActive: boolean;\n isNonResponsive: boolean;\n isBlocked: boolean;\n degradedGraphThreshold: number;\n overloadedGraphThreshold: number;\n}\n\nexport function resolveRuntimeStatus(\n input: ResolveRuntimeStatusInput,\n): RuntimeStatusSnapshot {\n const numberOfRunningGraphs = Math.max(\n 0,\n Math.trunc(Number(input.numberOfRunningGraphs) || 0),\n );\n\n const isActive = Boolean(input.isActive);\n const isNonResponsive = Boolean(input.isNonResponsive);\n const isBlocked = Boolean(input.isBlocked);\n\n if (!isActive || isNonResponsive || isBlocked) {\n return {\n state: \"unavailable\",\n acceptingWork: false,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n };\n }\n\n if (numberOfRunningGraphs >= input.overloadedGraphThreshold) {\n return {\n state: \"overloaded\",\n acceptingWork: true,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n };\n }\n\n if (numberOfRunningGraphs >= input.degradedGraphThreshold) {\n return {\n state: \"degraded\",\n acceptingWork: true,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n };\n }\n\n return {\n state: \"healthy\",\n acceptingWork: true,\n numberOfRunningGraphs,\n isActive,\n isNonResponsive,\n isBlocked,\n };\n}\n\nexport function runtimeStatusPriority(state: RuntimeStatusState): number {\n switch (state) {\n case \"healthy\":\n return 0;\n case \"degraded\":\n return 1;\n case \"overloaded\":\n return 2;\n case \"unavailable\":\n return 3;\n default:\n return 4;\n }\n}\n\nexport function hasSignificantRuntimeStatusChange(\n previous: RuntimeStatusSnapshot | null,\n next: RuntimeStatusSnapshot,\n): boolean {\n if (!previous) {\n return true;\n }\n\n return (\n previous.state !== next.state ||\n previous.acceptingWork !== next.acceptingWork ||\n previous.isActive !== next.isActive ||\n previous.isNonResponsive !== next.isNonResponsive ||\n previous.isBlocked !== next.isBlocked\n );\n}\n","export interface RuntimeMetricsSnapshot {\n sampledAt: string;\n cpuUsage: number | null;\n memoryUsage: number | null;\n eventLoopLag: number | null;\n rssBytes: number | null;\n heapUsedBytes: number | null;\n heapTotalBytes: number | null;\n memoryLimitBytes: number | null;\n}\n\ninterface MonitorEventLoopDelayHistogram {\n enable(): void;\n disable(): void;\n percentile(percentile: number): number;\n}\n\ninterface RuntimeMetricsSamplerDependencies {\n nowMs: () => number;\n cpuUsage: () => NodeJS.CpuUsage;\n memoryUsage: () => NodeJS.MemoryUsage;\n effectiveCpuCapacity: () => number;\n effectiveMemoryLimitBytes: () => number | null;\n createEventLoopMonitor: () => MonitorEventLoopDelayHistogram | null;\n}\n\nconst CPU_MAX = 1;\nconst MAX_CGROUP_LIMIT_BYTES = 1n << 60n;\n\nfunction readTextFile(path: string): string | null {\n try {\n const fs = process.getBuiltinModule?.(\"node:fs\") ??\n process.getBuiltinModule?.(\"fs\") as\n | { readFileSync(path: string, encoding: string): string }\n | undefined;\n if (!fs) {\n return null;\n }\n\n return fs.readFileSync(path, \"utf8\").trim();\n } catch {\n return null;\n }\n}\n\nfunction readInteger(value: string | null): bigint | null {\n if (!value || value === \"max\") {\n return null;\n }\n\n try {\n return BigInt(value);\n } catch {\n return null;\n }\n}\n\nfunction resolveEffectiveCpuCapacity(): number {\n const cpuMax = readTextFile(\"/sys/fs/cgroup/cpu.max\");\n if (cpuMax) {\n const [quotaText, periodText] = cpuMax.split(/\\s+/);\n const quota = readInteger(quotaText);\n const period = readInteger(periodText);\n if (quota !== null && period !== null && quota > 0n && period > 0n) {\n return Math.max(1, Number(quota) / Number(period));\n }\n }\n\n const quota = readInteger(\n readTextFile(\"/sys/fs/cgroup/cpu/cpu.cfs_quota_us\"),\n );\n const period = readInteger(\n readTextFile(\"/sys/fs/cgroup/cpu/cpu.cfs_period_us\"),\n );\n if (quota !== null && period !== null && quota > 0n && period > 0n) {\n return Math.max(1, Number(quota) / Number(period));\n }\n\n const os = process.getBuiltinModule?.(\"node:os\") ??\n process.getBuiltinModule?.(\"os\") as\n | {\n availableParallelism?: () => number;\n cpus: () => unknown[];\n }\n | undefined;\n\n if (!os) {\n return 1;\n }\n\n const availableParallelism =\n typeof os.availableParallelism === \"function\"\n ? os.availableParallelism()\n : Array.isArray(os.cpus())\n ? os.cpus().length\n : 1;\n\n return Math.max(1, availableParallelism || 1);\n}\n\nfunction resolveEffectiveMemoryLimitBytes(): number | null {\n const cgroupV2Limit = readInteger(readTextFile(\"/sys/fs/cgroup/memory.max\"));\n if (\n cgroupV2Limit !== null &&\n cgroupV2Limit > 0n &&\n cgroupV2Limit < MAX_CGROUP_LIMIT_BYTES\n ) {\n return Number(cgroupV2Limit);\n }\n\n const cgroupV1Limit = readInteger(\n readTextFile(\"/sys/fs/cgroup/memory/memory.limit_in_bytes\"),\n );\n if (\n cgroupV1Limit !== null &&\n cgroupV1Limit > 0n &&\n cgroupV1Limit < MAX_CGROUP_LIMIT_BYTES\n ) {\n return Number(cgroupV1Limit);\n }\n\n try {\n const os = process.getBuiltinModule?.(\"node:os\") ??\n process.getBuiltinModule?.(\"os\") as\n | { totalmem: () => number }\n | undefined;\n if (!os) {\n return null;\n }\n\n const total = Number(os.totalmem());\n return Number.isFinite(total) && total > 0 ? total : null;\n } catch {\n return null;\n }\n}\n\nfunction createEventLoopMonitor(): MonitorEventLoopDelayHistogram | null {\n try {\n const perfHooks = process.getBuiltinModule?.(\"node:perf_hooks\") ??\n process.getBuiltinModule?.(\"perf_hooks\") as\n | {\n monitorEventLoopDelay: (options?: {\n resolution?: number;\n }) => MonitorEventLoopDelayHistogram;\n }\n | undefined;\n if (!perfHooks?.monitorEventLoopDelay) {\n return null;\n }\n\n const histogram = perfHooks.monitorEventLoopDelay({ resolution: 20 });\n histogram.enable();\n return histogram;\n } catch {\n return null;\n }\n}\n\nfunction defaultDependencies(): RuntimeMetricsSamplerDependencies {\n return {\n nowMs: () => Date.now(),\n cpuUsage: () => process.cpuUsage(),\n memoryUsage: () => process.memoryUsage(),\n effectiveCpuCapacity: () => resolveEffectiveCpuCapacity(),\n effectiveMemoryLimitBytes: () => resolveEffectiveMemoryLimitBytes(),\n createEventLoopMonitor: () => createEventLoopMonitor(),\n };\n}\n\nexport function isNodeRuntimeMetricsSupported(): boolean {\n return Boolean(\n typeof process !== \"undefined\" &&\n process?.versions?.node &&\n typeof process.cpuUsage === \"function\" &&\n typeof process.memoryUsage === \"function\",\n );\n}\n\nexport class RuntimeMetricsSampler {\n private readonly dependencies: RuntimeMetricsSamplerDependencies;\n private readonly eventLoopMonitor: MonitorEventLoopDelayHistogram | null;\n private previousCpuUsage: NodeJS.CpuUsage | null = null;\n private previousSampleAtMs: number | null = null;\n private lastSnapshot: RuntimeMetricsSnapshot | null = null;\n\n public constructor(\n dependencies: Partial<RuntimeMetricsSamplerDependencies> = {},\n ) {\n this.dependencies = {\n ...defaultDependencies(),\n ...dependencies,\n };\n this.eventLoopMonitor = this.dependencies.createEventLoopMonitor();\n }\n\n public sample(): RuntimeMetricsSnapshot {\n const sampledAtMs = this.dependencies.nowMs();\n const sampledAt = new Date(sampledAtMs).toISOString();\n const cpuUsage = this.dependencies.cpuUsage();\n const memoryUsage = this.dependencies.memoryUsage();\n const effectiveCpuCapacity = Math.max(\n 1,\n this.dependencies.effectiveCpuCapacity(),\n );\n const memoryLimitBytes = this.dependencies.effectiveMemoryLimitBytes();\n\n let normalizedCpuUsage: number | null = null;\n if (\n this.previousCpuUsage &&\n this.previousSampleAtMs !== null &&\n sampledAtMs > this.previousSampleAtMs\n ) {\n const elapsedMicros = (sampledAtMs - this.previousSampleAtMs) * 1000;\n const cpuMicros =\n cpuUsage.user -\n this.previousCpuUsage.user +\n (cpuUsage.system - this.previousCpuUsage.system);\n if (elapsedMicros > 0 && cpuMicros >= 0) {\n normalizedCpuUsage = Math.max(\n 0,\n Math.min(CPU_MAX, cpuMicros / (elapsedMicros * effectiveCpuCapacity)),\n );\n }\n }\n\n this.previousCpuUsage = cpuUsage;\n this.previousSampleAtMs = sampledAtMs;\n\n const rssBytes = Number.isFinite(memoryUsage.rss) ? memoryUsage.rss : null;\n const heapUsedBytes = Number.isFinite(memoryUsage.heapUsed)\n ? memoryUsage.heapUsed\n : null;\n const heapTotalBytes = Number.isFinite(memoryUsage.heapTotal)\n ? memoryUsage.heapTotal\n : null;\n const normalizedMemoryUsage =\n rssBytes !== null && memoryLimitBytes && memoryLimitBytes > 0\n ? Math.max(0, Math.min(1, rssBytes / memoryLimitBytes))\n : null;\n\n const eventLoopLag =\n this.eventLoopMonitor && Number.isFinite(this.eventLoopMonitor.percentile(95))\n ? Number((this.eventLoopMonitor.percentile(95) / 1_000_000).toFixed(3))\n : null;\n\n const snapshot: RuntimeMetricsSnapshot = {\n sampledAt,\n cpuUsage:\n normalizedCpuUsage === null\n ? null\n : Number(normalizedCpuUsage.toFixed(4)),\n memoryUsage:\n normalizedMemoryUsage === null\n ? null\n : Number(normalizedMemoryUsage.toFixed(4)),\n eventLoopLag,\n rssBytes,\n heapUsedBytes,\n heapTotalBytes,\n memoryLimitBytes,\n };\n\n this.lastSnapshot = snapshot;\n return snapshot;\n }\n\n public getLatestSnapshot(): RuntimeMetricsSnapshot | null {\n return this.lastSnapshot;\n }\n\n public stop(): void {\n this.eventLoopMonitor?.disable();\n }\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport type { RuntimeStatusState } from \"../utils/runtimeStatus\";\nimport type {\n ServiceTransportProtocol,\n ServiceTransportRole,\n} from \"../types/transport\";\n\nexport const AUTHORITY_RUNTIME_STATUS_REPORT_INTENT =\n \"meta-service-registry-authority-runtime-status-report\";\nexport const RUNTIME_STATUS_AUTHORITY_SYNC_REQUESTED_SIGNAL =\n \"meta.service_registry.runtime_status_authority_sync_requested\";\n\nexport interface RuntimeMetricsHealthDetail {\n sampledAt?: string;\n cpuUsage?: number | null;\n memoryUsage?: number | null;\n eventLoopLag?: number | null;\n rssBytes?: number | null;\n heapUsedBytes?: number | null;\n heapTotalBytes?: number | null;\n memoryLimitBytes?: number | null;\n}\n\nexport interface AuthorityRuntimeStatusReport {\n serviceName: string;\n serviceInstanceId: string;\n transportId?: string;\n transportRole?: ServiceTransportRole;\n transportOrigin?: string;\n transportProtocols?: ServiceTransportProtocol[];\n isFrontend?: boolean;\n reportedAt: string;\n state: RuntimeStatusState;\n acceptingWork: boolean;\n numberOfRunningGraphs: number;\n cpuUsage?: number | null;\n memoryUsage?: number | null;\n eventLoopLag?: number | null;\n isActive: boolean;\n isNonResponsive: boolean;\n isBlocked: boolean;\n health?: AnyObject;\n}\n\nfunction normalizeOptionalMetric(value: unknown): number | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value === null) {\n return null;\n }\n const normalized = Number(value);\n return Number.isFinite(normalized) ? normalized : undefined;\n}\n\nfunction resolveHealthMetric(\n input: Record<string, any>,\n keys: string[],\n): number | null | undefined {\n for (const key of keys) {\n const direct = normalizeOptionalMetric(input[key]);\n if (direct !== undefined) {\n return direct;\n }\n }\n\n const health =\n input.health && typeof input.health === \"object\"\n ? (input.health as Record<string, unknown>)\n : null;\n if (!health) {\n return undefined;\n }\n\n for (const key of keys) {\n const direct = normalizeOptionalMetric(health[key]);\n if (direct !== undefined) {\n return direct;\n }\n }\n\n const runtimeMetrics =\n health.runtimeMetrics && typeof health.runtimeMetrics === \"object\"\n ? (health.runtimeMetrics as Record<string, unknown>)\n : null;\n if (!runtimeMetrics) {\n return undefined;\n }\n\n for (const key of keys) {\n const direct = normalizeOptionalMetric(runtimeMetrics[key]);\n if (direct !== undefined) {\n return direct;\n }\n }\n\n return undefined;\n}\n\nexport function normalizeAuthorityRuntimeStatusReport(\n input: Record<string, any> | null | undefined,\n): AuthorityRuntimeStatusReport | null {\n if (!input || typeof input !== \"object\") {\n return null;\n }\n\n const serviceName = String(input.serviceName ?? input.__serviceName ?? \"\").trim();\n const serviceInstanceId = String(\n input.serviceInstanceId ?? input.__serviceInstanceId ?? \"\",\n ).trim();\n const reportedAt = String(\n input.reportedAt ?? input.__reportedAt ?? new Date().toISOString(),\n ).trim();\n const state = String(input.state ?? \"\").trim();\n\n if (\n !serviceName ||\n !serviceInstanceId ||\n !reportedAt ||\n (state !== \"healthy\" &&\n state !== \"degraded\" &&\n state !== \"overloaded\" &&\n state !== \"unavailable\")\n ) {\n return null;\n }\n\n const transportRole = String(\n input.transportRole ?? input.transport_role ?? \"\",\n ).trim();\n const transportOrigin = String(\n input.transportOrigin ?? input.transport_origin ?? \"\",\n ).trim();\n const transportId = String(input.transportId ?? input.transport_id ?? \"\").trim();\n const transportProtocolList = Array.isArray(\n input.transportProtocols ?? input.transport_protocols,\n )\n ? (input.transportProtocols ?? input.transport_protocols).filter(\n (protocol: unknown): protocol is ServiceTransportProtocol =>\n protocol === \"rest\" || protocol === \"socket\",\n )\n : [];\n const transportProtocols =\n transportProtocolList.length > 0\n ? (Array.from(new Set(transportProtocolList)) as ServiceTransportProtocol[])\n : undefined;\n\n return {\n serviceName,\n serviceInstanceId,\n transportId: transportId || undefined,\n transportRole:\n transportRole === \"internal\" || transportRole === \"public\"\n ? transportRole\n : undefined,\n transportOrigin: transportOrigin || undefined,\n transportProtocols:\n transportProtocols && transportProtocols.length > 0\n ? transportProtocols\n : undefined,\n isFrontend:\n typeof input.isFrontend === \"boolean\"\n ? input.isFrontend\n : typeof input.is_frontend === \"boolean\"\n ? input.is_frontend\n : undefined,\n reportedAt,\n state: state as RuntimeStatusState,\n acceptingWork: Boolean(input.acceptingWork ?? input.accepting_work),\n numberOfRunningGraphs: Math.max(\n 0,\n Math.trunc(\n Number(\n input.numberOfRunningGraphs ??\n input.number_of_running_graphs ??\n input.__numberOfRunningGraphs ??\n 0,\n ) || 0,\n ),\n ),\n cpuUsage: resolveHealthMetric(input, [\"cpuUsage\", \"cpu\", \"cpuLoad\"]),\n memoryUsage: resolveHealthMetric(input, [\n \"memoryUsage\",\n \"memory\",\n \"memoryPressure\",\n ]),\n eventLoopLag: resolveHealthMetric(input, [\n \"eventLoopLag\",\n \"eventLoopLagMs\",\n ]),\n isActive: Boolean(input.isActive ?? input.is_active ?? true),\n isNonResponsive: Boolean(\n input.isNonResponsive ?? input.is_non_responsive ?? false,\n ),\n isBlocked: Boolean(input.isBlocked ?? input.is_blocked ?? false),\n health:\n input.health && typeof input.health === \"object\"\n ? (input.health as AnyObject)\n : undefined,\n };\n}\n\nexport function buildAuthorityRuntimeStatusSignature(\n report: AuthorityRuntimeStatusReport,\n): string {\n return JSON.stringify({\n serviceName: report.serviceName,\n serviceInstanceId: report.serviceInstanceId,\n transportId: report.transportId ?? null,\n transportRole: report.transportRole ?? null,\n transportOrigin: report.transportOrigin ?? null,\n transportProtocols: report.transportProtocols ?? [],\n state: report.state,\n acceptingWork: report.acceptingWork,\n numberOfRunningGraphs: report.numberOfRunningGraphs,\n cpuUsage: report.cpuUsage ?? null,\n memoryUsage: report.memoryUsage ?? null,\n eventLoopLag: report.eventLoopLag ?? null,\n isActive: report.isActive,\n isNonResponsive: report.isNonResponsive,\n isBlocked: report.isBlocked,\n isFrontend: report.isFrontend ?? null,\n health: report.health ?? {},\n });\n}\n","import type { ServiceManifestSnapshot } from \"../types/serviceManifest\";\n\nexport const AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT =\n \"meta-service-registry-authority-service-manifest-report\";\n\nexport const AUTHORITY_SERVICE_MANIFEST_UPDATED_SIGNAL =\n \"global.meta.cadenza_db.service_manifest_updated\";\n\nexport function normalizeServiceManifestSnapshot(\n input: unknown,\n): ServiceManifestSnapshot | null {\n if (!input || typeof input !== \"object\" || Array.isArray(input)) {\n return null;\n }\n\n const record = input as Record<string, unknown>;\n const serviceName = String(record.serviceName ?? \"\").trim();\n const serviceInstanceId = String(record.serviceInstanceId ?? \"\").trim();\n const revision = Math.max(1, Math.trunc(Number(record.revision ?? 0) || 0));\n const manifestHash = String(record.manifestHash ?? \"\").trim();\n const publishedAt = String(record.publishedAt ?? \"\").trim();\n\n if (!serviceName || !serviceInstanceId || !manifestHash || !publishedAt) {\n return null;\n }\n\n const normalizeArray = <T extends Record<string, unknown>>(\n value: unknown,\n ): T[] =>\n Array.isArray(value)\n ? value.filter(\n (entry): entry is T =>\n !!entry && typeof entry === \"object\" && !Array.isArray(entry),\n )\n : [];\n\n return {\n serviceName,\n serviceInstanceId,\n revision,\n manifestHash,\n publishedAt,\n tasks: normalizeArray(record.tasks),\n signals: normalizeArray(record.signals),\n intents: normalizeArray(record.intents),\n actors: normalizeArray(record.actors),\n routines: normalizeArray(record.routines),\n directionalTaskMaps: normalizeArray(record.directionalTaskMaps),\n signalToTaskMaps: normalizeArray(record.signalToTaskMaps),\n intentToTaskMaps: normalizeArray(record.intentToTaskMaps),\n actorTaskMaps: normalizeArray(record.actorTaskMaps),\n taskToRoutineMaps: normalizeArray(record.taskToRoutineMaps),\n };\n}\n\nexport function selectLatestServiceManifestSnapshots(\n snapshots: ServiceManifestSnapshot[],\n): ServiceManifestSnapshot[] {\n const latestByInstance = new Map<string, ServiceManifestSnapshot>();\n\n for (const snapshot of snapshots) {\n const current = latestByInstance.get(snapshot.serviceInstanceId);\n if (!current) {\n latestByInstance.set(snapshot.serviceInstanceId, snapshot);\n continue;\n }\n\n if (snapshot.revision > current.revision) {\n latestByInstance.set(snapshot.serviceInstanceId, snapshot);\n continue;\n }\n\n if (\n snapshot.revision === current.revision &&\n snapshot.publishedAt.localeCompare(current.publishedAt) > 0\n ) {\n latestByInstance.set(snapshot.serviceInstanceId, snapshot);\n }\n }\n\n return Array.from(latestByInstance.values()).sort((left, right) =>\n `${left.serviceName}|${left.serviceInstanceId}`.localeCompare(\n `${right.serviceName}|${right.serviceInstanceId}`,\n ),\n );\n}\n","import { AUTHORITY_RUNTIME_STATUS_REPORT_INTENT } from \"./runtimeStatusContract\";\nimport {\n AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT,\n AUTHORITY_SERVICE_MANIFEST_UPDATED_SIGNAL,\n} from \"./serviceManifestContract\";\n\nexport const AUTHORITY_BOOTSTRAP_FULL_SYNC_INTENT =\n \"meta-service-registry-full-sync\";\n\nexport const AUTHORITY_BOOTSTRAP_FULL_SYNC_RESPONDER_TASK_NAME =\n \"Respond service registry full sync\";\nexport const AUTHORITY_SERVICE_INSTANCE_REGISTER_INTENT =\n \"meta-service-registry-authority-service-instance-register\";\nexport const AUTHORITY_SERVICE_INSTANCE_REGISTER_TASK_NAME =\n \"Register service instance with authority\";\nexport const AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_INTENT =\n \"meta-service-registry-authority-service-instance-transport-register\";\nexport const AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_TASK_NAME =\n \"Register service instance transport with authority\";\n\nexport interface AuthorityBootstrapIntentSpec {\n intentName: string;\n authorityTaskName: string;\n defaultTimeoutMs: number;\n}\n\nexport const AUTHORITY_BOOTSTRAP_INTENT_SPECS: AuthorityBootstrapIntentSpec[] = [\n {\n intentName: AUTHORITY_BOOTSTRAP_FULL_SYNC_INTENT,\n authorityTaskName: AUTHORITY_BOOTSTRAP_FULL_SYNC_RESPONDER_TASK_NAME,\n defaultTimeoutMs: 120_000,\n },\n {\n intentName: AUTHORITY_SERVICE_INSTANCE_REGISTER_INTENT,\n authorityTaskName: AUTHORITY_SERVICE_INSTANCE_REGISTER_TASK_NAME,\n defaultTimeoutMs: 15_000,\n },\n {\n intentName: AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_INTENT,\n authorityTaskName: AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_TASK_NAME,\n defaultTimeoutMs: 15_000,\n },\n {\n intentName: AUTHORITY_SERVICE_MANIFEST_REPORT_INTENT,\n authorityTaskName: \"Report service manifest to authority\",\n defaultTimeoutMs: 15_000,\n },\n {\n intentName: AUTHORITY_RUNTIME_STATUS_REPORT_INTENT,\n authorityTaskName: \"Record authority runtime status report\",\n defaultTimeoutMs: 5_000,\n },\n];\n\nexport const AUTHORITY_BOOTSTRAP_SIGNAL_NAMES = [\n AUTHORITY_SERVICE_MANIFEST_UPDATED_SIGNAL,\n] as const;\n\nconst AUTHORITY_BOOTSTRAP_INTENT_SPEC_BY_NAME = new Map(\n AUTHORITY_BOOTSTRAP_INTENT_SPECS.map((spec) => [spec.intentName, spec]),\n);\n\nconst AUTHORITY_BOOTSTRAP_SIGNAL_NAME_SET = new Set<string>(\n AUTHORITY_BOOTSTRAP_SIGNAL_NAMES,\n);\n\nconst AUTHORITY_BOOTSTRAP_INSERT_INTENT_BY_TABLE = new Map<\n string,\n string\n>([\n [\"service_instance\", AUTHORITY_SERVICE_INSTANCE_REGISTER_INTENT],\n [\n \"service_instance_transport\",\n AUTHORITY_SERVICE_INSTANCE_TRANSPORT_REGISTER_INTENT,\n ],\n]);\n\nexport function getAuthorityBootstrapIntentSpec(\n intentName: string | null | undefined,\n): AuthorityBootstrapIntentSpec | null {\n const normalizedIntentName = String(intentName ?? \"\").trim();\n if (!normalizedIntentName) {\n return null;\n }\n\n return AUTHORITY_BOOTSTRAP_INTENT_SPEC_BY_NAME.get(normalizedIntentName) ?? null;\n}\n\nexport function isAuthorityBootstrapIntent(\n intentName: string | null | undefined,\n): boolean {\n return getAuthorityBootstrapIntentSpec(intentName) !== null;\n}\n\nexport function isAuthorityBootstrapSignal(\n signalName: string | null | undefined,\n): boolean {\n return AUTHORITY_BOOTSTRAP_SIGNAL_NAME_SET.has(String(signalName ?? \"\").trim());\n}\n\nexport function getAuthorityBootstrapInsertIntentSpecForTable(\n tableName: string | null | undefined,\n): AuthorityBootstrapIntentSpec | null {\n const normalizedTableName = String(tableName ?? \"\").trim();\n if (!normalizedTableName) {\n return null;\n }\n\n const intentName =\n AUTHORITY_BOOTSTRAP_INSERT_INTENT_BY_TABLE.get(normalizedTableName);\n if (!intentName) {\n return null;\n }\n\n return getAuthorityBootstrapIntentSpec(intentName);\n}\n","/**\n * Formats a given timestamp into an ISO 8601 date string.\n *\n * @param {number} timestamp - The timestamp to format, represented as the number of milliseconds since the UNIX epoch.\n * @return {string} The formatted ISO 8601 string representing the date and time corresponding to the provided timestamp.\n */\nexport function formatTimestamp(timestamp: number) {\n return new Date(timestamp).toISOString();\n}\n\n/**\n * Decomposes a signal name into its constituent parts such as metadata indicator, source service name, domain, and action.\n *\n * @param {string} signalName - The signal name string to be decomposed. Typically a dot-separated string.\n * @return {Object} An object containing the decomposed parts:\n * - `isMeta` {boolean} - Indicates whether the signal is a metadata signal.\n * - `sourceServiceName` {string|null} - The name of the source service, or null if not applicable.\n * - `domain` {string} - The domain extracted from the signal name.\n * - `action` {string} - The action or last component of the signal name.\n */\nexport function decomposeSignalName(signalName: string) {\n const parts = signalName.split(\".\");\n let isMeta =\n parts[0] === \"meta\" ||\n parts[0] === \"sub_meta\" ||\n parts[1] === \"meta\" ||\n parts[1] === \"sub_meta\";\n let isGlobal = parts[0] === \"global\";\n let domain = isGlobal\n ? isMeta\n ? parts.length === 4\n ? parts[2]\n : \"\"\n : parts.length === 3\n ? parts[1]\n : \"\"\n : isMeta\n ? parts.length === 3\n ? parts[1]\n : \"\"\n : parts.length === 2\n ? parts[0]\n : \"\";\n const action = parts[parts.length - 1];\n\n return {\n isMeta,\n isGlobal,\n domain,\n action,\n };\n}\n","import Cadenza from \"../Cadenza\";\nimport { decomposeSignalName } from \"../utils/tools\";\nimport { isMetaIntentName } from \"../utils/inquiry\";\nimport type { Task, GraphRoutine } from \"@cadenza.io/core\";\nimport type {\n ServiceManifestActorDefinition,\n ServiceManifestActorTaskMap,\n ServiceManifestIntentDefinition,\n ServiceManifestIntentTaskMap,\n ServiceManifestRoutineDefinition,\n ServiceManifestSignalDefinition,\n ServiceManifestSignalTaskMap,\n ServiceManifestSnapshot,\n ServiceManifestTaskDefinition,\n ServiceManifestTaskRoutineMap,\n ServiceManifestDirectionalTaskMap,\n} from \"../types/serviceManifest\";\n\nconst ACTOR_TASK_METADATA = Symbol.for(\"@cadenza.io/core/actor-task-meta\");\n\ntype ActorTaskRuntimeMetadata = {\n actorName: string;\n actorDescription?: string;\n actorKind: \"standard\" | \"meta\";\n mode: \"read\" | \"write\" | \"meta\";\n forceMeta: boolean;\n};\n\nfunction getActorTaskRuntimeMetadata(\n taskFunction: unknown,\n): ActorTaskRuntimeMetadata | undefined {\n if (typeof taskFunction !== \"function\") {\n return undefined;\n }\n\n return (taskFunction as { [ACTOR_TASK_METADATA]?: ActorTaskRuntimeMetadata })[\n ACTOR_TASK_METADATA\n ];\n}\n\nfunction sanitizeManifestValue(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n\n if (value === undefined || typeof value === \"function\") {\n return undefined;\n }\n\n if (Array.isArray(value)) {\n const items: unknown[] = [];\n for (const item of value) {\n const sanitizedItem = sanitizeManifestValue(item);\n if (sanitizedItem !== undefined) {\n items.push(sanitizedItem);\n }\n }\n return items;\n }\n\n if (typeof value === \"object\") {\n const output: Record<string, unknown> = {};\n for (const [key, nestedValue] of Object.entries(value)) {\n const sanitizedNestedValue = sanitizeManifestValue(nestedValue);\n if (sanitizedNestedValue !== undefined) {\n output[key] = sanitizedNestedValue;\n }\n }\n return output;\n }\n\n return value;\n}\n\nfunction stableSerialize(value: unknown): string {\n const sanitized = sanitizeManifestValue(value);\n\n const serialize = (input: unknown): string => {\n if (input === null || typeof input !== \"object\") {\n return JSON.stringify(input);\n }\n\n if (Array.isArray(input)) {\n return `[${input.map((item) => serialize(item)).join(\",\")}]`;\n }\n\n const record = input as Record<string, unknown>;\n const keys = Object.keys(record).sort();\n return `{${keys\n .map((key) => `${JSON.stringify(key)}:${serialize(record[key])}`)\n .join(\",\")}}`;\n };\n\n return serialize(sanitized);\n}\n\nfunction hashManifest(value: unknown): string {\n const serialized = stableSerialize(value);\n let hash = 5381;\n\n for (let index = 0; index < serialized.length; index += 1) {\n hash = (hash * 33) ^ serialized.charCodeAt(index);\n }\n\n return `m${(hash >>> 0).toString(16)}`;\n}\n\nfunction canonicalizeSignalName(signalName: string | undefined): string {\n if (typeof signalName !== \"string\") {\n return \"\";\n }\n\n return signalName.split(\":\")[0]?.trim() ?? \"\";\n}\n\nfunction buildTaskDefinition(task: Task, serviceName: string): ServiceManifestTaskDefinition {\n return {\n name: task.name,\n version: task.version,\n description: task.description,\n service_name: serviceName,\n is_meta: task.isMeta === true,\n is_sub_meta: task.isSubMeta === true,\n is_hidden: task.isHidden === true,\n is_ephemeral: task.isEphemeral === true,\n is_signal: task.isSignal === true,\n concurrency: task.concurrency,\n timeout: task.timeout,\n retry_count: task.retryCount,\n retry_delay: task.retryDelay,\n retry_delay_max: task.retryDelayMax,\n retry_delay_factor: task.retryDelayFactor,\n validate_input_context: task.validateInputContext,\n validate_output_context: task.validateOutputContext,\n input_context_schema:\n (sanitizeManifestValue(task.inputContextSchema) as Record<string, unknown>) ??\n { type: \"object\" },\n output_context_schema:\n (sanitizeManifestValue(task.outputContextSchema) as Record<string, unknown>) ??\n { type: \"object\" },\n signals: {\n emits: Array.from(task.emitsSignals).sort(),\n emits_after: Array.from(task.signalsToEmitAfter).sort(),\n emits_on_fail: Array.from(task.signalsToEmitOnFail).sort(),\n observed: Array.from(task.observedSignals).sort(),\n },\n intents: {\n handles: Array.from(task.handlesIntents).sort(),\n inquires: Array.from(task.inquiresIntents).sort(),\n },\n };\n}\n\nfunction buildActorDefinition(\n actor: any,\n serviceName: string,\n): ServiceManifestActorDefinition | null {\n const definition = sanitizeManifestValue(\n typeof actor?.toDefinition === \"function\" ? actor.toDefinition() : {},\n ) as Record<string, unknown>;\n const name = String(definition?.name ?? actor?.spec?.name ?? \"\").trim();\n\n if (!name) {\n return null;\n }\n\n const stateDefinition =\n definition?.state && typeof definition.state === \"object\"\n ? (definition.state as Record<string, unknown>)\n : {};\n const actorKind =\n typeof definition?.kind === \"string\" ? definition.kind : actor?.kind;\n\n return {\n name,\n version: 1,\n description: String(definition?.description ?? actor?.spec?.description ?? \"\"),\n service_name: serviceName,\n default_key: String(definition?.defaultKey ?? actor?.spec?.defaultKey ?? \"default\"),\n load_policy: String(definition?.loadPolicy ?? actor?.spec?.loadPolicy ?? \"eager\"),\n write_contract: String(\n definition?.writeContract ?? actor?.spec?.writeContract ?? \"overwrite\",\n ),\n runtime_read_guard: String(\n definition?.runtimeReadGuard ?? actor?.spec?.runtimeReadGuard ?? \"none\",\n ),\n consistency_profile:\n definition?.consistencyProfile === null || definition?.consistencyProfile === undefined\n ? null\n : String(definition.consistencyProfile),\n key_definition:\n definition?.key && typeof definition.key === \"object\"\n ? (definition.key as Record<string, unknown>)\n : null,\n state_definition: stateDefinition,\n retry_policy:\n (definition?.retry as Record<string, unknown> | undefined) ?? {},\n idempotency_policy:\n (definition?.idempotency as Record<string, unknown> | undefined) ?? {},\n session_policy:\n (definition?.session as Record<string, unknown> | undefined) ?? {},\n is_meta: actorKind === \"meta\",\n };\n}\n\nfunction buildRoutineDefinition(\n routine: GraphRoutine,\n serviceName: string,\n): ServiceManifestRoutineDefinition | null {\n const name = String(routine?.name ?? \"\").trim();\n if (!name) {\n return null;\n }\n\n return {\n name,\n version: routine.version,\n description: routine.description,\n service_name: serviceName,\n is_meta: routine.isMeta === true,\n };\n}\n\nfunction shouldExportTask(task: Task): boolean {\n return !task.isDeputy && !task.isEphemeral;\n}\n\nfunction shouldExportRoutine(routine: GraphRoutine): boolean {\n return Boolean(String(routine?.name ?? \"\").trim());\n}\n\nexport function buildServiceManifestSnapshot(params: {\n serviceName: string;\n serviceInstanceId: string;\n revision: number;\n publishedAt: string;\n}): ServiceManifestSnapshot {\n const { serviceName, serviceInstanceId, revision, publishedAt } = params;\n const tasks = Array.from(Cadenza.registry.tasks.values())\n .filter((task): task is Task => Boolean(task))\n .filter(shouldExportTask);\n const routines = Array.from(Cadenza.registry.routines.values())\n .filter((routine): routine is GraphRoutine => Boolean(routine))\n .filter(shouldExportRoutine);\n const actors = Cadenza.getAllActors();\n\n const taskDefinitions = tasks\n .map((task) => buildTaskDefinition(task, serviceName))\n .sort((left, right) =>\n `${left.name}:${left.version}`.localeCompare(`${right.name}:${right.version}`),\n );\n\n const signalDefinitions = new Map<string, ServiceManifestSignalDefinition>();\n const signalTaskMaps = new Map<string, ServiceManifestSignalTaskMap>();\n const intentTaskMaps = new Map<string, ServiceManifestIntentTaskMap>();\n const directionalTaskMaps = new Map<string, ServiceManifestDirectionalTaskMap>();\n const actorTaskMaps = new Map<string, ServiceManifestActorTaskMap>();\n const taskToRoutineMaps = new Map<string, ServiceManifestTaskRoutineMap>();\n\n const registerSignal = (signalName: string) => {\n const normalizedSignalName = canonicalizeSignalName(signalName);\n if (!normalizedSignalName || signalDefinitions.has(normalizedSignalName)) {\n return;\n }\n\n const { isGlobal, isMeta, domain, action } = decomposeSignalName(normalizedSignalName);\n const signalMetadata =\n (Cadenza.signalBroker as any).getSignalMetadata?.(normalizedSignalName) ??\n null;\n const deliveryMode =\n signalMetadata?.deliveryMode === \"broadcast\" ? \"broadcast\" : \"single\";\n const broadcastFilter =\n signalMetadata?.broadcastFilter &&\n typeof signalMetadata.broadcastFilter === \"object\" &&\n !Array.isArray(signalMetadata.broadcastFilter)\n ? (sanitizeManifestValue(signalMetadata.broadcastFilter) as\n | Record<string, unknown>\n | null)\n : null;\n signalDefinitions.set(normalizedSignalName, {\n name: normalizedSignalName,\n is_global: isGlobal,\n domain,\n action,\n is_meta: isMeta,\n delivery_mode: deliveryMode,\n broadcast_filter: broadcastFilter,\n });\n };\n\n for (const [signalName] of (Cadenza.signalBroker as any).signalObservers?.entries?.() ??\n []) {\n registerSignal(String(signalName));\n }\n\n for (const task of tasks) {\n for (const signalName of task.observedSignals) {\n registerSignal(signalName);\n const normalizedSignalName = canonicalizeSignalName(signalName);\n if (!normalizedSignalName) {\n continue;\n }\n const { isGlobal } = decomposeSignalName(normalizedSignalName);\n const key = `${normalizedSignalName}|${task.name}|${task.version}|${serviceName}`;\n signalTaskMaps.set(key, {\n signal_name: normalizedSignalName,\n is_global: isGlobal,\n task_name: task.name,\n task_version: task.version,\n service_name: serviceName,\n });\n }\n\n for (const signalName of task.emitsSignals) registerSignal(signalName);\n for (const signalName of task.signalsToEmitAfter) registerSignal(signalName);\n for (const signalName of task.signalsToEmitOnFail) registerSignal(signalName);\n\n for (const intentName of task.handlesIntents) {\n const normalizedIntentName = String(intentName ?? \"\").trim();\n if (!normalizedIntentName) {\n continue;\n }\n\n const key = `${normalizedIntentName}|${task.name}|${task.version}|${serviceName}`;\n intentTaskMaps.set(key, {\n intent_name: normalizedIntentName,\n task_name: task.name,\n task_version: task.version,\n service_name: serviceName,\n });\n }\n\n for (const nextTask of task.nextTasks) {\n if (!nextTask || !shouldExportTask(nextTask)) {\n continue;\n }\n\n const key = `${task.name}|${task.version}|${nextTask.name}|${nextTask.version}|${serviceName}`;\n directionalTaskMaps.set(key, {\n task_name: nextTask.name,\n task_version: nextTask.version,\n predecessor_task_name: task.name,\n predecessor_task_version: task.version,\n service_name: serviceName,\n predecessor_service_name: serviceName,\n });\n }\n\n const actorTaskMetadata = getActorTaskRuntimeMetadata(task.taskFunction);\n if (actorTaskMetadata?.actorName) {\n const key = `${actorTaskMetadata.actorName}|${task.name}|${task.version}|${serviceName}`;\n actorTaskMaps.set(key, {\n actor_name: actorTaskMetadata.actorName,\n actor_version: 1,\n task_name: task.name,\n task_version: task.version,\n service_name: serviceName,\n mode: actorTaskMetadata.mode,\n description: task.description ?? actorTaskMetadata.actorDescription ?? \"\",\n is_meta: actorTaskMetadata.actorKind === \"meta\" || task.isMeta === true,\n });\n }\n }\n\n const intentDefinitions = Array.from(Cadenza.inquiryBroker.intents.values())\n .map((intent) => {\n const intentRecord = intent as unknown as Record<string, unknown> | undefined;\n const name = String(intentRecord?.name ?? \"\").trim();\n if (!name) {\n return null;\n }\n\n return {\n name,\n description:\n typeof intentRecord?.description === \"string\"\n ? String(intentRecord.description)\n : \"\",\n input:\n ((sanitizeManifestValue(\n intentRecord?.input,\n ) as Record<string, unknown> | undefined) ?? { type: \"object\" }),\n output:\n ((sanitizeManifestValue(\n intentRecord?.output,\n ) as Record<string, unknown> | undefined) ?? { type: \"object\" }),\n is_meta: isMetaIntentName(name),\n } satisfies ServiceManifestIntentDefinition;\n })\n .filter(\n (intentDefinition): intentDefinition is ServiceManifestIntentDefinition =>\n intentDefinition !== null,\n )\n .sort((left, right) => left.name.localeCompare(right.name));\n\n const actorDefinitions = actors\n .map((actor) => buildActorDefinition(actor, serviceName))\n .filter(\n (actorDefinition): actorDefinition is ServiceManifestActorDefinition =>\n actorDefinition !== null,\n )\n .sort((left, right) =>\n `${left.name}:${left.version}`.localeCompare(`${right.name}:${right.version}`),\n );\n\n const routineDefinitions = routines\n .map((routine) => buildRoutineDefinition(routine, serviceName))\n .filter(\n (routineDefinition): routineDefinition is ServiceManifestRoutineDefinition =>\n routineDefinition !== null,\n )\n .sort((left, right) =>\n `${left.name}:${left.version}`.localeCompare(`${right.name}:${right.version}`),\n );\n\n for (const routine of routines) {\n for (const task of routine.tasks) {\n if (!task) {\n continue;\n }\n\n const iterator = task.getIterator();\n while (iterator.hasNext()) {\n const nextTask = iterator.next();\n if (!nextTask || !shouldExportTask(nextTask)) {\n continue;\n }\n\n const key = `${routine.name}|${routine.version}|${nextTask.name}|${nextTask.version}|${serviceName}`;\n taskToRoutineMaps.set(key, {\n task_name: nextTask.name,\n task_version: nextTask.version,\n routine_name: routine.name,\n routine_version: routine.version,\n service_name: serviceName,\n });\n }\n }\n }\n\n const manifestBody = {\n serviceName,\n serviceInstanceId,\n tasks: taskDefinitions,\n signals: Array.from(signalDefinitions.values()).sort((left, right) =>\n left.name.localeCompare(right.name),\n ),\n intents: intentDefinitions,\n actors: actorDefinitions,\n routines: routineDefinitions,\n directionalTaskMaps: Array.from(directionalTaskMaps.values()).sort((left, right) =>\n `${left.predecessor_task_name}:${left.task_name}`.localeCompare(\n `${right.predecessor_task_name}:${right.task_name}`,\n ),\n ),\n signalToTaskMaps: Array.from(signalTaskMaps.values()).sort((left, right) =>\n `${left.signal_name}:${left.task_name}`.localeCompare(\n `${right.signal_name}:${right.task_name}`,\n ),\n ),\n intentToTaskMaps: Array.from(intentTaskMaps.values()).sort((left, right) =>\n `${left.intent_name}:${left.task_name}`.localeCompare(\n `${right.intent_name}:${right.task_name}`,\n ),\n ),\n actorTaskMaps: Array.from(actorTaskMaps.values()).sort((left, right) =>\n `${left.actor_name}:${left.task_name}`.localeCompare(\n `${right.actor_name}:${right.task_name}`,\n ),\n ),\n taskToRoutineMaps: Array.from(taskToRoutineMaps.values()).sort((left, right) =>\n `${left.routine_name}:${left.task_name}`.localeCompare(\n `${right.routine_name}:${right.task_name}`,\n ),\n ),\n };\n\n return {\n ...manifestBody,\n revision,\n manifestHash: hashManifest(manifestBody),\n publishedAt,\n };\n}\n\nexport function explodeServiceManifestSnapshots(\n snapshots: ServiceManifestSnapshot[],\n): {\n tasks: ServiceManifestTaskDefinition[];\n signals: ServiceManifestSignalDefinition[];\n intents: ServiceManifestIntentDefinition[];\n actors: ServiceManifestActorDefinition[];\n routines: ServiceManifestRoutineDefinition[];\n directionalTaskMaps: ServiceManifestDirectionalTaskMap[];\n signalToTaskMaps: ServiceManifestSignalTaskMap[];\n intentToTaskMaps: ServiceManifestIntentTaskMap[];\n actorTaskMaps: ServiceManifestActorTaskMap[];\n taskToRoutineMaps: ServiceManifestTaskRoutineMap[];\n} {\n const dedupe = <T>(\n items: T[],\n keyOf: (item: T) => string,\n sortOf: (left: T, right: T) => number,\n ): T[] =>\n Array.from(\n new Map(items.map((item) => [keyOf(item), item] as const)).values(),\n ).sort(sortOf);\n\n const tasks = dedupe(\n snapshots.flatMap((snapshot) => snapshot.tasks),\n (task) => `${task.service_name}|${task.name}|${task.version}`,\n (left, right) =>\n `${left.service_name}|${left.name}|${left.version}`.localeCompare(\n `${right.service_name}|${right.name}|${right.version}`,\n ),\n );\n const signals = dedupe(\n snapshots.flatMap((snapshot) => snapshot.signals),\n (signal) => signal.name,\n (left, right) => left.name.localeCompare(right.name),\n );\n const intents = dedupe(\n snapshots.flatMap((snapshot) => snapshot.intents),\n (intent) => intent.name,\n (left, right) => left.name.localeCompare(right.name),\n );\n const actors = dedupe(\n snapshots.flatMap((snapshot) => snapshot.actors),\n (actor) => `${actor.service_name}|${actor.name}|${actor.version}`,\n (left, right) =>\n `${left.service_name}|${left.name}|${left.version}`.localeCompare(\n `${right.service_name}|${right.name}|${right.version}`,\n ),\n );\n const routines = dedupe(\n snapshots.flatMap((snapshot) => snapshot.routines),\n (routine) => `${routine.service_name}|${routine.name}|${routine.version}`,\n (left, right) =>\n `${left.service_name}|${left.name}|${left.version}`.localeCompare(\n `${right.service_name}|${right.name}|${right.version}`,\n ),\n );\n const directionalTaskMaps = dedupe(\n snapshots.flatMap((snapshot) => snapshot.directionalTaskMaps),\n (map) =>\n `${map.predecessor_service_name}|${map.predecessor_task_name}|${map.predecessor_task_version}|${map.service_name}|${map.task_name}|${map.task_version}`,\n (left, right) =>\n `${left.predecessor_service_name}|${left.predecessor_task_name}|${left.predecessor_task_version}|${left.service_name}|${left.task_name}|${left.task_version}`.localeCompare(\n `${right.predecessor_service_name}|${right.predecessor_task_name}|${right.predecessor_task_version}|${right.service_name}|${right.task_name}|${right.task_version}`,\n ),\n );\n const signalToTaskMaps = dedupe(\n snapshots.flatMap((snapshot) => snapshot.signalToTaskMaps),\n (map) =>\n `${map.signal_name}|${map.service_name}|${map.task_name}|${map.task_version}`,\n (left, right) =>\n `${left.signal_name}|${left.service_name}|${left.task_name}|${left.task_version}`.localeCompare(\n `${right.signal_name}|${right.service_name}|${right.task_name}|${right.task_version}`,\n ),\n );\n const intentToTaskMaps = dedupe(\n snapshots.flatMap((snapshot) => snapshot.intentToTaskMaps),\n (map) =>\n `${map.intent_name}|${map.service_name}|${map.task_name}|${map.task_version}`,\n (left, right) =>\n `${left.intent_name}|${left.service_name}|${left.task_name}|${left.task_version}`.localeCompare(\n `${right.intent_name}|${right.service_name}|${right.task_name}|${right.task_version}`,\n ),\n );\n const actorTaskMaps = dedupe(\n snapshots.flatMap((snapshot) => snapshot.actorTaskMaps),\n (map) =>\n `${map.actor_name}|${map.actor_version}|${map.service_name}|${map.task_name}|${map.task_version}`,\n (left, right) =>\n `${left.actor_name}|${left.actor_version}|${left.service_name}|${left.task_name}|${left.task_version}`.localeCompare(\n `${right.actor_name}|${right.actor_version}|${right.service_name}|${right.task_name}|${right.task_version}`,\n ),\n );\n const taskToRoutineMaps = dedupe(\n snapshots.flatMap((snapshot) => snapshot.taskToRoutineMaps),\n (map) =>\n `${map.routine_name}|${map.routine_version}|${map.service_name}|${map.task_name}|${map.task_version}`,\n (left, right) =>\n `${left.routine_name}|${left.routine_version}|${left.service_name}|${left.task_name}|${left.task_version}`.localeCompare(\n `${right.routine_name}|${right.routine_version}|${right.service_name}|${right.task_name}|${right.task_version}`,\n ),\n );\n\n return {\n tasks,\n signals,\n intents,\n actors,\n routines,\n directionalTaskMaps,\n signalToTaskMaps,\n intentToTaskMaps,\n actorTaskMaps,\n taskToRoutineMaps,\n };\n}\n","import { GraphContext, InquiryOptions, Task } from \"@cadenza.io/core\";\nimport type {\n AnyObject,\n Schema,\n TaskResult,\n ThrottleTagGetter,\n} from \"@cadenza.io/core\";\nimport { v4 as uuid } from \"uuid\";\nimport Cadenza from \"../../Cadenza\";\nimport { hoistDelegationMetadataFields } from \"../../utils/delegation\";\nimport { stripLocalRoutinePersistenceHints } from \"../../utils/routinePersistence\";\n\n/**\n * Represents a task responsible for transmitting signals to a remote service\n * through the meta-layer for operations delegation.\n *\n * @class\n * @extends Task\n */\nexport default class SignalTransmissionTask extends Task {\n readonly isDeputy: boolean = true;\n\n protected readonly signalName: string;\n protected readonly serviceName: string;\n\n /**\n * Constructs a new instance of the class and initializes it with the provided parameters.\n *\n * @param {string} name - The name of the task being created.\n * @param {string} signalName - The name of the signal associated with this task.\n * @param {string} serviceName - The name of the service associated with this task.\n * @param {string} [description=\"\"] - An optional description of the task.\n * @param {number} [concurrency=0] - The maximum allowed concurrency for this task.\n * @param {number} [timeout=0] - The maximum execution time for this task, in milliseconds.\n * @param {boolean} [register=true] - Whether the task should be registered upon creation.\n * @param {boolean} [isUnique=false] - Indicates if the task should enforce uniqueness.\n * @param {boolean} [isMeta=false] - Specifies if the task is a meta-task.\n * @param {boolean} [isSubMeta=false] - Specifies if the task is a sub-meta-task.\n * @param {boolean} [isHidden=false] - Indicates if the task is hidden from visibility.\n * @param {ThrottleTagGetter|undefined} [getTagCallback=undefined] - A callback for tag throttling logic.\n * @param {SchemaDefinition|undefined} [inputSchema=undefined] - An optional schema for validating input data.\n * @param {boolean} [validateInputContext=false] - Whether to validate the input context against the input schema.\n * @param {SchemaDefinition|undefined} [outputSchema=undefined] - An optional schema for validating output data.\n * @param {boolean} [validateOutputContext=false] - Whether to validate the output context against the output schema.\n * @param {number} [retryCount=0] - The number of retry attempts allowed in case of task failure.\n * @param {number} [retryDelay=0] - The initial delay before retrying a failed task, in milliseconds.\n * @param {number} [retryDelayMax=0] - The maximum delay between retry attempts, in milliseconds.\n * @param {number} [retryDelayFactor=1] - A multiplier applied to retry delay for exponential backoff.\n * @return {void} Does not return a value.\n */\n constructor(\n name: string,\n signalName: string,\n serviceName: string,\n description: string = \"\",\n concurrency: number = 0,\n timeout: number = 0,\n register: boolean = true,\n isUnique: boolean = false,\n isMeta: boolean = true,\n isSubMeta: boolean = false,\n isHidden: boolean = false,\n getTagCallback: ThrottleTagGetter | undefined = undefined,\n inputSchema: Schema | undefined = undefined,\n validateInputContext: boolean = false,\n outputSchema: Schema | undefined = undefined,\n validateOutputContext: boolean = false,\n retryCount: number = 0,\n retryDelay: number = 0,\n retryDelayMax: number = 0,\n retryDelayFactor: number = 1,\n ) {\n const taskFunction = (context: AnyObject): TaskResult => {\n context.__routineExecId = uuid();\n return context;\n };\n\n super(\n name,\n taskFunction,\n description,\n concurrency,\n timeout,\n register,\n isUnique,\n isMeta,\n isSubMeta,\n isHidden,\n getTagCallback,\n inputSchema,\n validateInputContext,\n outputSchema,\n validateOutputContext,\n retryCount,\n retryDelay,\n retryDelayMax,\n retryDelayFactor,\n );\n\n this.serviceName = serviceName;\n this.signalName = signalName;\n\n this.doOn(signalName);\n this.then(Cadenza.serviceRegistry.getBalancedInstance);\n }\n\n /**\n * Executes the given task function within the provided execution context.\n *\n * @param {GraphContext} context - The context object providing the graph execution environment and metadata.\n * @param {Function} emit - A function to emit signals with the provided name and context.\n * @param inquire\n * @param {Function} progressCallback - A callback function to report the progress of the task execution as a number between 0 and 1.\n * @return {TaskResult} The result of the executed task function.\n */\n execute(\n context: GraphContext,\n emit: (signal: string, ctx: AnyObject) => void,\n inquire: (\n inquiry: string,\n context: AnyObject,\n options: InquiryOptions,\n ) => Promise<AnyObject>,\n progressCallback: (progress: number) => void,\n ): TaskResult {\n const ctx = context.getContext();\n const metadata = context.getMetadata();\n const signalMetadata =\n (Cadenza.signalBroker as any).getSignalMetadata?.(this.signalName) ?? null;\n const deliveryMode =\n signalMetadata?.deliveryMode === \"broadcast\" ? \"broadcast\" : \"single\";\n const broadcastFilter =\n ctx.__broadcastFilter ??\n metadata.__broadcastFilter ??\n signalMetadata?.broadcastFilter ??\n null;\n\n const deputyContext = hoistDelegationMetadataFields(\n stripLocalRoutinePersistenceHints({\n __localTaskName: this.name,\n __localServiceName: Cadenza.serviceRegistry.serviceName,\n __serviceName: this.serviceName,\n __executionTraceId: metadata.__executionTraceId ?? null,\n __localRoutineExecId:\n metadata.__routineExecId ?? metadata.__metadata?.__routineExecId,\n __metadata: {\n ...metadata,\n __deputyTaskName: this.name,\n },\n __signalName: this.signalName,\n ...(deliveryMode === \"broadcast\" && ctx.__broadcast !== false\n ? {\n __broadcast: true,\n }\n : {}),\n ...(broadcastFilter\n ? {\n __broadcastFilter: broadcastFilter,\n }\n : {}),\n __signalEmissionId: metadata.__signalEmission?.uuid,\n ...(metadata.__signalEmission &&\n typeof metadata.__signalEmission === \"object\"\n ? {\n __signalEmission: {\n ...(metadata.__signalEmission as AnyObject),\n serviceName:\n (metadata.__signalEmission as AnyObject).serviceName ??\n Cadenza.serviceRegistry.serviceName ??\n null,\n serviceInstanceId:\n (metadata.__signalEmission as AnyObject).serviceInstanceId ??\n Cadenza.serviceRegistry.serviceInstanceId ??\n null,\n },\n }\n : {}),\n ...ctx,\n }),\n );\n\n return this.taskFunction(deputyContext, emit, inquire, progressCallback);\n }\n}\n","import Cadenza from \"../Cadenza\";\nimport { META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT } from \"../utils/inquiry\";\nimport {\n attachDelegationRequestSnapshot,\n ensureDelegationContextMetadata,\n stripTransportSelectionRoutingContext,\n restoreDelegationRequestSnapshot,\n} from \"../utils/delegation\";\nimport { buildServiceCommunicationEstablishedContext } from \"../utils/serviceCommunication\";\nimport type { AnyObject } from \"@cadenza.io/core\";\nimport { buildTransportHandleKey } from \"../utils/transport\";\n\ntype TransportDetailLevel = \"summary\" | \"full\";\n\ninterface TransportDiagnosticErrorEntry {\n at: string;\n message: string;\n}\n\ninterface FetchClientDiagnosticsState {\n fetchId: string;\n serviceName: string;\n url: string;\n connected: boolean;\n destroyed: boolean;\n lastHandshakeAt: string | null;\n lastHandshakeError: string | null;\n lastError: string | null;\n lastErrorAt: number;\n errorHistory: TransportDiagnosticErrorEntry[];\n delegationRequests: number;\n delegationFailures: number;\n signalTransmissions: number;\n signalFailures: number;\n statusChecks: number;\n statusFailures: number;\n updatedAt: number;\n}\n\ninterface ParsedFetchResponse {\n ok: boolean;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n data: any;\n}\n\nconst FETCH_HANDSHAKE_TIMEOUT_MS = 5000;\n\nexport default class RestController {\n private static _instance: RestController;\n public static get instance(): RestController {\n if (!this._instance) this._instance = new RestController();\n return this._instance;\n }\n\n private fetchClientDiagnostics: Map<string, FetchClientDiagnosticsState> =\n new Map();\n private readonly diagnosticsErrorHistoryLimit = 100;\n private readonly diagnosticsMaxClientEntries = 500;\n private readonly destroyedDiagnosticsTtlMs = 15 * 60_000;\n\n private pruneFetchClientDiagnostics(now = Date.now()): void {\n for (const [fetchId, state] of this.fetchClientDiagnostics.entries()) {\n if (state.destroyed && now - state.updatedAt > this.destroyedDiagnosticsTtlMs) {\n this.fetchClientDiagnostics.delete(fetchId);\n }\n }\n\n if (this.fetchClientDiagnostics.size <= this.diagnosticsMaxClientEntries) {\n return;\n }\n\n const entriesByEvictionPriority = Array.from(\n this.fetchClientDiagnostics.entries(),\n ).sort((left, right) => {\n if (left[1].destroyed !== right[1].destroyed) {\n return left[1].destroyed ? -1 : 1;\n }\n\n return left[1].updatedAt - right[1].updatedAt;\n });\n\n while (\n this.fetchClientDiagnostics.size > this.diagnosticsMaxClientEntries &&\n entriesByEvictionPriority.length > 0\n ) {\n const [fetchId] = entriesByEvictionPriority.shift()!;\n this.fetchClientDiagnostics.delete(fetchId);\n }\n }\n\n private resolveTransportDiagnosticsOptions(ctx: AnyObject): {\n detailLevel: TransportDetailLevel;\n includeErrorHistory: boolean;\n errorHistoryLimit: number;\n } {\n const detailLevel: TransportDetailLevel =\n ctx.detailLevel === \"full\" ? \"full\" : \"summary\";\n const includeErrorHistory = Boolean(ctx.includeErrorHistory);\n const requestedLimit = Number(ctx.errorHistoryLimit);\n const errorHistoryLimit = Number.isFinite(requestedLimit)\n ? Math.max(1, Math.min(200, Math.trunc(requestedLimit)))\n : 10;\n\n return {\n detailLevel,\n includeErrorHistory,\n errorHistoryLimit,\n };\n }\n\n private ensureFetchClientDiagnostics(\n fetchId: string,\n serviceName: string,\n url: string,\n ): FetchClientDiagnosticsState {\n const now = Date.now();\n this.pruneFetchClientDiagnostics(now);\n\n let state = this.fetchClientDiagnostics.get(fetchId);\n if (!state) {\n state = {\n fetchId,\n serviceName,\n url,\n connected: false,\n destroyed: false,\n lastHandshakeAt: null,\n lastHandshakeError: null,\n lastError: null,\n lastErrorAt: 0,\n errorHistory: [],\n delegationRequests: 0,\n delegationFailures: 0,\n signalTransmissions: 0,\n signalFailures: 0,\n statusChecks: 0,\n statusFailures: 0,\n updatedAt: now,\n };\n this.fetchClientDiagnostics.set(fetchId, state);\n } else {\n state.serviceName = serviceName;\n state.url = url;\n }\n\n this.pruneFetchClientDiagnostics(now);\n return state;\n }\n\n private getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === \"string\") {\n return error;\n }\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n }\n\n private async parseFetchResponse(response: Response): Promise<ParsedFetchResponse> {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const rawText = await response.text();\n const headers = Object.fromEntries(response.headers.entries());\n\n if (rawText.length === 0) {\n return {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers,\n data: {},\n };\n }\n\n if (!contentType.toLowerCase().includes(\"application/json\")) {\n throw new Error(\n `Expected JSON response from ${response.url ?? \"remote service\"} but received ${contentType || \"unknown content type\"} (HTTP ${response.status}). Body preview: ${rawText.slice(0, 200)}`,\n );\n }\n\n try {\n return {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n headers,\n data: JSON.parse(rawText),\n };\n } catch (error) {\n throw new Error(\n `Failed to parse JSON response from ${response.url ?? \"remote service\"} (HTTP ${response.status}). Body preview: ${rawText.slice(0, 200)}. Parse error: ${this.getErrorMessage(error)}`,\n );\n }\n }\n\n private recordFetchClientError(\n fetchId: string,\n serviceName: string,\n url: string,\n error: unknown,\n ): void {\n const state = this.ensureFetchClientDiagnostics(fetchId, serviceName, url);\n const message = this.getErrorMessage(error);\n const now = Date.now();\n\n state.lastError = message;\n state.lastErrorAt = now;\n state.updatedAt = now;\n state.errorHistory.push({ at: new Date(now).toISOString(), message });\n\n if (state.errorHistory.length > this.diagnosticsErrorHistoryLimit) {\n state.errorHistory.splice(\n 0,\n state.errorHistory.length - this.diagnosticsErrorHistoryLimit,\n );\n }\n }\n\n private collectFetchTransportDiagnostics(ctx: AnyObject): AnyObject {\n this.pruneFetchClientDiagnostics();\n const { detailLevel, includeErrorHistory, errorHistoryLimit } =\n this.resolveTransportDiagnosticsOptions(ctx);\n const serviceName = Cadenza.serviceRegistry.serviceName ?? \"UnknownService\";\n const states = Array.from(this.fetchClientDiagnostics.values()).sort((a, b) =>\n a.fetchId.localeCompare(b.fetchId),\n );\n\n const summary = {\n detailLevel,\n totalClients: states.length,\n connectedClients: states.filter((state) => state.connected).length,\n destroyedClients: states.filter((state) => state.destroyed).length,\n delegationRequests: states.reduce(\n (acc, state) => acc + state.delegationRequests,\n 0,\n ),\n delegationFailures: states.reduce(\n (acc, state) => acc + state.delegationFailures,\n 0,\n ),\n signalTransmissions: states.reduce(\n (acc, state) => acc + state.signalTransmissions,\n 0,\n ),\n signalFailures: states.reduce((acc, state) => acc + state.signalFailures, 0),\n statusChecks: states.reduce((acc, state) => acc + state.statusChecks, 0),\n statusFailures: states.reduce((acc, state) => acc + state.statusFailures, 0),\n latestError:\n states\n .slice()\n .sort((a, b) => b.lastErrorAt - a.lastErrorAt)\n .find((state) => state.lastError)?.lastError ?? null,\n };\n\n if (detailLevel === \"summary\") {\n return {\n transportDiagnostics: {\n [serviceName]: {\n fetchClient: summary,\n },\n },\n };\n }\n\n return {\n transportDiagnostics: {\n [serviceName]: {\n fetchClient: {\n ...summary,\n clients: states.map((state) => {\n const details: AnyObject = {\n fetchId: state.fetchId,\n serviceName: state.serviceName,\n url: state.url,\n connected: state.connected,\n destroyed: state.destroyed,\n lastHandshakeAt: state.lastHandshakeAt,\n lastHandshakeError: state.lastHandshakeError,\n latestError: state.lastError,\n delegationRequests: state.delegationRequests,\n delegationFailures: state.delegationFailures,\n signalTransmissions: state.signalTransmissions,\n signalFailures: state.signalFailures,\n statusChecks: state.statusChecks,\n statusFailures: state.statusFailures,\n };\n\n if (includeErrorHistory) {\n details.errorHistory = state.errorHistory.slice(-errorHistoryLimit);\n }\n\n return details;\n }),\n },\n },\n },\n };\n }\n\n fetchDataWithTimeout = async (\n url: string,\n requestInit: RequestInit,\n timeoutMs: number,\n ): Promise<any> => {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"Browser REST controller requires global fetch.\");\n }\n\n const signal = AbortSignal.timeout(timeoutMs);\n const response = await globalThis.fetch(url, { ...requestInit, signal });\n const parsedResponse = await this.parseFetchResponse(response);\n return parsedResponse.data;\n };\n\n constructor() {\n Cadenza.createMetaTask(\n \"Collect fetch transport diagnostics\",\n (ctx) => this.collectFetchTransportDiagnostics(ctx),\n \"Responds to distributed transport diagnostics inquiries with REST/fetch client data.\",\n ).respondsTo(META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT);\n\n Cadenza.createMetaTask(\n \"Declare browser network\",\n (ctx, emit) => {\n emit(\"meta.service_registry.instance_registration_requested\", {\n ...ctx,\n data: {\n uuid: ctx.__serviceInstanceId,\n process_pid: 1,\n service_name: ctx.__serviceName,\n is_frontend: true,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n },\n __registrationData: {\n uuid: ctx.__serviceInstanceId,\n process_pid: 1,\n service_name: ctx.__serviceName,\n is_frontend: true,\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n health: {},\n },\n __transportData: Array.isArray(ctx.__declaredTransports)\n ? ctx.__declaredTransports.map((transport: any) => ({\n uuid: transport.uuid,\n service_instance_id: ctx.__serviceInstanceId,\n role: transport.role,\n origin: transport.origin,\n protocols: transport.protocols ?? [\"rest\", \"socket\"],\n ...(transport.securityProfile\n ? { security_profile: transport.securityProfile }\n : {}),\n ...(transport.authStrategy\n ? { auth_strategy: transport.authStrategy }\n : {}),\n }))\n : [],\n });\n\n return true;\n },\n \"Declares frontend runtime network metadata without creating a server.\",\n ).doOn(\"meta.service_registry.service_inserted\");\n\n Cadenza.createMetaTask(\n \"Setup fetch client\",\n (ctx) => {\n const serviceName = String(ctx.serviceName ?? \"\");\n const URL = String(ctx.serviceOrigin ?? \"\");\n const routeKey = String(\n ctx.routeKey ?? ctx.__routeKey ?? ctx.serviceTransportId ?? \"\",\n );\n const fetchId = String(\n ctx.fetchId ??\n ctx.__fetchId ??\n (routeKey ? buildTransportHandleKey(routeKey, \"rest\") : \"\") ??\n ctx.serviceTransportId ??\n \"\",\n );\n if (!serviceName || !URL || !fetchId) {\n return false;\n }\n const clientTaskSuffix = `${URL} (${fetchId})`;\n const fetchDiagnostics = this.ensureFetchClientDiagnostics(\n fetchId,\n serviceName,\n URL,\n );\n fetchDiagnostics.destroyed = false;\n fetchDiagnostics.updatedAt = Date.now();\n\n if (Cadenza.get(`Send Handshake to ${clientTaskSuffix}`)) {\n return;\n }\n\n const handshakeTask = Cadenza.createMetaTask(\n `Send Handshake to ${clientTaskSuffix}`,\n async (handshakeCtx, emit) => {\n try {\n const response = await this.fetchDataWithTimeout(\n `${URL}/handshake`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify(handshakeCtx.handshakeData),\n },\n FETCH_HANDSHAKE_TIMEOUT_MS,\n );\n if (response.__status !== \"success\") {\n const error =\n response.__error ??\n `Failed to connect to service ${serviceName} ${handshakeCtx.serviceInstanceId}`;\n fetchDiagnostics.connected = false;\n fetchDiagnostics.lastHandshakeError = error;\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n emit(`meta.fetch.handshake_failed:${fetchId}`, {\n ...handshakeCtx,\n ...response,\n fetchId,\n routeKey,\n });\n return { ...handshakeCtx, __error: error, errored: true };\n }\n\n handshakeCtx.serviceInstanceId = response.__serviceInstanceId;\n fetchDiagnostics.connected = true;\n fetchDiagnostics.destroyed = false;\n fetchDiagnostics.lastHandshakeAt = new Date().toISOString();\n fetchDiagnostics.lastHandshakeError = null;\n fetchDiagnostics.updatedAt = Date.now();\n\n const localServiceInstanceId =\n Cadenza.serviceRegistry.serviceInstanceId;\n if (!handshakeCtx.serviceInstanceId || !localServiceInstanceId) {\n return {\n ...handshakeCtx,\n __error: \"Fetch handshake missing service instance id\",\n errored: true,\n };\n }\n\n for (const communicationType of handshakeCtx.communicationTypes) {\n emit(\n \"global.meta.fetch.service_communication_established\",\n buildServiceCommunicationEstablishedContext({\n serviceInstanceId: handshakeCtx.serviceInstanceId,\n serviceInstanceClientId: localServiceInstanceId,\n communicationType,\n }),\n );\n }\n } catch (error) {\n fetchDiagnostics.connected = false;\n fetchDiagnostics.lastHandshakeError = this.getErrorMessage(error);\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n return { ...handshakeCtx, __error: error, errored: true };\n }\n\n return handshakeCtx;\n },\n \"Sends handshake request\",\n {\n retryCount: 5,\n retryDelay: 1000,\n retryDelayFactor: 1.5,\n register: false,\n isHidden: true,\n },\n )\n .doOn(`meta.fetch.handshake_requested:${fetchId}`)\n .emits(\"meta.fetch.handshake_complete\")\n .attachSignal(\n \"meta.fetch.handshake_failed\",\n \"global.meta.fetch.service_communication_established\",\n );\n\n const delegateTask = Cadenza.createMetaTask(\n `Delegate flow to REST server ${clientTaskSuffix}`,\n async (delegateCtx, emit) => {\n if (delegateCtx.__remoteRoutineName === undefined) {\n return;\n }\n\n const routedDelegateCtx =\n stripTransportSelectionRoutingContext(delegateCtx);\n const normalizedDelegateCtx = ensureDelegationContextMetadata(\n restoreDelegationRequestSnapshot(\n attachDelegationRequestSnapshot(routedDelegateCtx),\n ),\n );\n const deputyExecId =\n normalizedDelegateCtx.__metadata.__deputyExecId;\n\n fetchDiagnostics.delegationRequests++;\n fetchDiagnostics.updatedAt = Date.now();\n\n let resultContext;\n try {\n resultContext = await this.fetchDataWithTimeout(\n `${URL}/delegation`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify(normalizedDelegateCtx),\n },\n 30_000,\n );\n } catch (error) {\n fetchDiagnostics.delegationFailures++;\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n resultContext = {\n __error: `Error: ${error}`,\n errored: true,\n ...normalizedDelegateCtx,\n ...normalizedDelegateCtx.__metadata,\n };\n } finally {\n emit(`meta.fetch.delegated:${deputyExecId}`, resultContext);\n }\n\n return resultContext;\n },\n \"Sends delegation request\",\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(\n `meta.service_registry.selected_instance_for_fetch:${fetchId}`,\n `meta.service_registry.socket_failed:${fetchId}`,\n )\n .emitsOnFail(\"meta.fetch.delegate_failed\")\n .attachSignal(\"meta.fetch.delegated\");\n\n const transmitTask = Cadenza.createMetaTask(\n `Transmit signal to server ${clientTaskSuffix}`,\n async (signalCtx, emit) => {\n if (signalCtx.__signalName === undefined) {\n return;\n }\n\n fetchDiagnostics.signalTransmissions++;\n fetchDiagnostics.updatedAt = Date.now();\n\n let response;\n try {\n response = await this.fetchDataWithTimeout(\n `${URL}/signal`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify(signalCtx),\n },\n 1000,\n );\n\n if (signalCtx.__routineExecId) {\n emit(`meta.fetch.transmitted:${signalCtx.__routineExecId}`, response);\n }\n } catch (error) {\n fetchDiagnostics.signalFailures++;\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n response = {\n __error: `Error: ${error}`,\n errored: true,\n ...signalCtx,\n };\n }\n\n return response;\n },\n \"Sends signal request\",\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(`meta.service_registry.selected_instance_for_fetch:${fetchId}`)\n .emitsOnFail(\"meta.fetch.signal_transmission_failed\")\n .attachSignal(\"meta.fetch.transmitted\");\n\n const statusTask = Cadenza.createMetaTask(\n `Request status from ${clientTaskSuffix}`,\n async (statusCtx) => {\n fetchDiagnostics.statusChecks++;\n fetchDiagnostics.updatedAt = Date.now();\n\n try {\n return await this.fetchDataWithTimeout(\n `${URL}/status`,\n {\n method: \"GET\",\n },\n 1000,\n );\n } catch (error) {\n fetchDiagnostics.statusFailures++;\n fetchDiagnostics.updatedAt = Date.now();\n this.recordFetchClientError(fetchId, serviceName, URL, error);\n return {\n __error: `Error: ${error}`,\n errored: true,\n ...statusCtx,\n };\n }\n },\n \"Requests status\",\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(\"meta.fetch.status_check_requested\")\n .emits(\"meta.fetch.status_checked\")\n .emitsOnFail(\"meta.fetch.status_check_failed\");\n\n Cadenza.createEphemeralMetaTask(\n `Destroy fetch client ${fetchId}`,\n (ctx) => {\n if (\n !Cadenza.serviceRegistry.shouldProcessRemoteRouteEvent({\n ...ctx,\n fetchId,\n routeKey,\n })\n ) {\n return false;\n }\n\n fetchDiagnostics.connected = false;\n fetchDiagnostics.destroyed = true;\n fetchDiagnostics.updatedAt = Date.now();\n handshakeTask.destroy();\n delegateTask.destroy();\n transmitTask.destroy();\n statusTask.destroy();\n return true;\n },\n \"\",\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(\n `meta.fetch.destroy_requested:${fetchId}`,\n `meta.fetch.handshake_failed:${fetchId}`,\n )\n .emits(\"meta.fetch.destroyed\");\n\n return true;\n },\n \"Manages REST client requests as fallback\",\n )\n .then(\n Cadenza.createMetaTask(\n \"Prepare handshake\",\n (ctx) => {\n const {\n serviceName,\n serviceInstanceId,\n communicationTypes,\n serviceTransportId,\n serviceOrigin,\n transportProtocols,\n } = ctx;\n\n const routeKey = String(\n ctx.routeKey ?? ctx.__routeKey ?? serviceTransportId ?? \"\",\n );\n const fetchId = String(\n ctx.fetchId ??\n ctx.__fetchId ??\n (routeKey\n ? buildTransportHandleKey(routeKey, \"rest\")\n : serviceTransportId ?? \"\"),\n );\n\n Cadenza.schedule(`meta.fetch.handshake_requested:${fetchId}`, {\n serviceInstanceId,\n serviceName,\n communicationTypes,\n serviceTransportId,\n serviceOrigin,\n fetchId,\n routeKey,\n socketClientId:\n ctx.socketClientId ??\n (routeKey ? buildTransportHandleKey(routeKey, \"socket\") : undefined),\n transportProtocols,\n transportProtocol: \"rest\",\n handshakeData: {\n instanceId: Cadenza.serviceRegistry.serviceInstanceId,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n }, 0);\n return true;\n },\n \"Prepares handshake\",\n ).attachSignal(\"meta.fetch.handshake_requested\"),\n )\n .doOn(\"meta.service_registry.dependee_registered\")\n .emitsOnFail(\"meta.fetch.connect_failed\");\n }\n}\n","import Cadenza from \"../Cadenza\";\nimport { IRateLimiterOptions, RateLimiterMemory } from \"rate-limiter-flexible\";\nimport type { AnyObject, Task } from \"@cadenza.io/core\";\nimport { io, Socket } from \"socket.io-client\";\nimport { isBrowser } from \"../utils/environment\";\nimport { waitForSocketConnection } from \"./socketClientUtils\";\nimport { META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT } from \"../utils/inquiry\";\nimport {\n attachDelegationRequestSnapshot,\n ensureDelegationContextMetadata,\n stripTransportSelectionRoutingContext,\n stripDelegationRequestSnapshot,\n} from \"../utils/delegation\";\nimport {\n buildTransportHandleKey,\n parseTransportHandleKey,\n parseTransportOrigin,\n} from \"../utils/transport\";\n\nconst INQUIRY_TRACE_ENABLED =\n process.env.CADENZA_INQUIRY_TRACE === \"1\" ||\n process.env.CADENZA_INQUIRY_TRACE === \"true\";\nconst TRACED_INQUIRY_METADATA_SIGNALS = new Set([\n \"global.meta.graph_metadata.inquiry_created\",\n \"global.meta.graph_metadata.inquiry_updated\",\n]);\n\nconst dynamicImport = new Function(\n \"specifier\",\n \"return import(specifier);\",\n) as <T>(specifier: string) => Promise<T>;\n\nasync function importNodeModule<T>(specifier: string): Promise<T> {\n return dynamicImport(specifier);\n}\n\ntype TransportDetailLevel = \"summary\" | \"full\";\n\ninterface TransportDiagnosticErrorEntry {\n at: string;\n message: string;\n}\n\ninterface SocketClientDiagnosticsState {\n fetchId: string;\n serviceName: string;\n url: string;\n socketId: string | null;\n connected: boolean;\n handshake: boolean;\n reconnectAttempts: number;\n connectErrors: number;\n reconnectErrors: number;\n socketErrors: number;\n pendingDelegations: number;\n pendingTimers: number;\n destroyed: boolean;\n lastHandshakeAt: string | null;\n lastHandshakeError: string | null;\n lastDisconnectAt: string | null;\n lastError: string | null;\n lastErrorAt: number;\n errorHistory: TransportDiagnosticErrorEntry[];\n updatedAt: number;\n}\n\ntype SocketClientSessionOperation =\n | \"connect\"\n | \"handshake\"\n | \"delegate\"\n | \"transmit\"\n | \"shutdown\";\n\ninterface SocketClientSessionState {\n fetchId: string;\n serviceInstanceId: string;\n communicationTypes: string[];\n serviceName: string;\n serviceTransportId: string;\n serviceOrigin: string;\n transportProtocols: string[];\n url: string;\n socketId: string | null;\n connected: boolean;\n handshake: boolean;\n pendingDelegations: number;\n pendingTimers: number;\n reconnectAttempts: number;\n connectErrors: number;\n reconnectErrors: number;\n socketErrors: number;\n errorCount: number;\n destroyed: boolean;\n lastHandshakeAt: string | null;\n lastHandshakeError: string | null;\n lastDisconnectAt: string | null;\n updatedAt: number;\n}\n\ntype SocketEmitWhenReady = <T>(\n event: string,\n data: AnyObject,\n timeoutMs: number,\n ack?: (response: T) => void,\n) => Promise<T>;\n\nfunction isSocketAckCallback<T = AnyObject>(\n value: unknown,\n): value is (context: T) => void {\n return typeof value === \"function\";\n}\n\ninterface SocketClientRuntimeHandle {\n url: string;\n socket: Socket;\n initialized: boolean;\n handshake: boolean;\n errorCount: number;\n pendingDelegationIds: Set<string>;\n pendingTimers: Set<NodeJS.Timeout>;\n emitWhenReady: SocketEmitWhenReady | null;\n handshakeTask: Task | null;\n delegateTask: Task | null;\n transmitTask: Task | null;\n}\n\ninterface SocketServerSessionState {\n serverKey: string;\n useSocket: boolean;\n status: \"inactive\" | \"active\" | \"shutdown\";\n securityProfile: string;\n networkType: string;\n connectionCount: number;\n lastStartedAt: string | null;\n lastConnectedAt: string | null;\n lastDisconnectedAt: string | null;\n lastShutdownAt: string | null;\n updatedAt: number;\n}\n\ninterface SocketServerRuntimeHandle {\n server: any;\n initialized: boolean;\n connectedSocketIds: Set<string>;\n broadcastStatusTask: Task | null;\n shutdownTask: Task | null;\n}\n\n/**\n * Socket transport orchestration in the Cadenza primitive ecosystem.\n *\n * - setup is signal-triggered\n * - state/runtime ownership is actor-backed\n * - dynamic runtime tasks are still allowed for advanced orchestration (ephemeral resolvers etc.)\n */\nexport default class SocketController {\n private static _instance: SocketController;\n public static get instance(): SocketController {\n if (!this._instance) this._instance = new SocketController();\n return this._instance;\n }\n\n private readonly diagnosticsErrorHistoryLimit = 100;\n private readonly diagnosticsMaxClientEntries = 500;\n private readonly destroyedDiagnosticsTtlMs = 15 * 60_000;\n private readonly socketServerDefaultKey = \"socket-server-default\";\n private readonly socketServerInitialSessionState: SocketServerSessionState = {\n serverKey: this.socketServerDefaultKey,\n useSocket: false,\n status: \"inactive\",\n securityProfile: \"medium\",\n networkType: \"internal\",\n connectionCount: 0,\n lastStartedAt: null,\n lastConnectedAt: null,\n lastDisconnectedAt: null,\n lastShutdownAt: null,\n updatedAt: 0,\n };\n private readonly socketClientInitialSessionState: SocketClientSessionState = {\n fetchId: \"\",\n serviceInstanceId: \"\",\n communicationTypes: [],\n serviceName: \"\",\n serviceTransportId: \"\",\n serviceOrigin: \"\",\n transportProtocols: [],\n url: \"\",\n socketId: null,\n connected: false,\n handshake: false,\n pendingDelegations: 0,\n pendingTimers: 0,\n reconnectAttempts: 0,\n connectErrors: 0,\n reconnectErrors: 0,\n socketErrors: 0,\n errorCount: 0,\n destroyed: false,\n lastHandshakeAt: null,\n lastHandshakeError: null,\n lastDisconnectAt: null,\n updatedAt: 0,\n };\n\n private readonly socketServerActor = Cadenza.createActor<\n SocketServerSessionState,\n SocketServerRuntimeHandle | null\n >(\n {\n name: \"SocketServerActor\",\n description:\n \"Holds durable socket server session state and runtime socket server handle\",\n defaultKey: this.socketServerDefaultKey,\n keyResolver: (input) => this.resolveSocketServerKey(input),\n loadPolicy: \"lazy\",\n writeContract: \"overwrite\",\n initState: this.socketServerInitialSessionState,\n },\n { isMeta: true },\n );\n\n private readonly socketClientActor = Cadenza.createActor<\n SocketClientSessionState,\n SocketClientRuntimeHandle | null\n >(\n {\n name: \"SocketClientActor\",\n description:\n \"Holds durable socket client session state and runtime socket connection handles\",\n defaultKey: \"socket-client-default\",\n keyResolver: (input) => this.resolveSocketClientFetchId(input),\n loadPolicy: \"lazy\",\n writeContract: \"overwrite\",\n initState: this.socketClientInitialSessionState,\n },\n { isMeta: true },\n );\n\n private readonly socketClientDiagnosticsActor = Cadenza.createActor<{\n entries: Record<string, SocketClientDiagnosticsState>;\n }>(\n {\n name: \"SocketClientDiagnosticsActor\",\n description:\n \"Tracks socket client diagnostics snapshots per fetchId for transport observability\",\n defaultKey: \"socket-client-diagnostics\",\n loadPolicy: \"eager\",\n writeContract: \"overwrite\",\n initState: {\n entries: {},\n },\n },\n { isMeta: true },\n );\n\n constructor() {\n Cadenza.registry.getTaskByName.doOn(\"meta.socket.delegation_requested\");\n Cadenza.registry.getRoutineByName.doOn(\"meta.socket.delegation_requested\");\n Cadenza.createMetaTask(\n \"Forward socket delegations to runner\",\n (context, emit: any) => {\n if (!isBrowser && !Cadenza.serviceRegistry.isFrontend) {\n return false;\n }\n\n const remoteRoutineName =\n context.__remoteRoutineName ?? context.__name ?? \"unknown\";\n const routine =\n Cadenza.get(remoteRoutineName) ??\n Cadenza.registry.routines.get(remoteRoutineName);\n\n if (routine) {\n context.__routineExecId = context.__metadata?.__deputyExecId ?? null;\n context.__isDeputy = true;\n Cadenza.runner.run(routine, context);\n return true;\n }\n\n const deputyExecId =\n context.__metadata?.__deputyExecId ?? context.__deputyExecId;\n context.errored = true;\n context.__error = `No task or routine registered for delegation target ${remoteRoutineName}.`;\n if (deputyExecId) {\n emit(`meta.socket.delegation_target_not_found:${deputyExecId}`, context);\n }\n emit(\"meta.runner.failed\", context);\n return false;\n },\n \"Forwards socket delegated lookups to the local runner in frontend runtimes.\",\n )\n .attachSignal(\"meta.runner.failed\")\n .doOn(\"meta.socket.delegation_requested\");\n\n this.registerDiagnosticsTasks();\n this.registerSocketServerTasks();\n this.registerSocketClientTasks();\n\n Cadenza.createMetaTask(\n \"Collect socket transport diagnostics\",\n this.socketClientDiagnosticsActor.task(\n ({ state, input }) =>\n this.collectSocketTransportDiagnostics(input, state.entries),\n { mode: \"read\" },\n ),\n \"Responds to distributed transport diagnostics inquiries with socket client data.\",\n ).respondsTo(META_RUNTIME_TRANSPORT_DIAGNOSTICS_INTENT);\n }\n\n private registerDiagnosticsTasks(): void {\n Cadenza.createThrottledMetaTask(\n \"SocketClientDiagnosticsActor.Upsert\",\n this.socketClientDiagnosticsActor.task(\n ({ state, input, setState }) => {\n const fetchId = String(input.fetchId ?? \"\").trim();\n if (!fetchId) {\n return;\n }\n\n const now = Date.now();\n const entries = { ...state.entries };\n const existing = entries[fetchId];\n\n const base: SocketClientDiagnosticsState = existing\n ? {\n ...existing,\n errorHistory: [...existing.errorHistory],\n }\n : {\n fetchId,\n serviceName: String(input.serviceName ?? \"\"),\n url: String(input.url ?? \"\"),\n socketId: null,\n connected: false,\n handshake: false,\n reconnectAttempts: 0,\n connectErrors: 0,\n reconnectErrors: 0,\n socketErrors: 0,\n pendingDelegations: 0,\n pendingTimers: 0,\n destroyed: false,\n lastHandshakeAt: null,\n lastHandshakeError: null,\n lastDisconnectAt: null,\n lastError: null,\n lastErrorAt: 0,\n errorHistory: [],\n updatedAt: now,\n };\n\n if (input.serviceName !== undefined) {\n base.serviceName = String(input.serviceName);\n }\n if (input.url !== undefined) {\n base.url = String(input.url);\n }\n\n const patch =\n input.patch && typeof input.patch === \"object\"\n ? (input.patch as Partial<SocketClientDiagnosticsState>)\n : {};\n\n Object.assign(base, patch);\n base.fetchId = fetchId;\n base.updatedAt = now;\n\n const errorMessage =\n input.error !== undefined ? this.getErrorMessage(input.error) : undefined;\n if (errorMessage) {\n base.lastError = errorMessage;\n base.lastErrorAt = now;\n base.errorHistory.push({\n at: new Date(now).toISOString(),\n message: errorMessage,\n });\n if (base.errorHistory.length > this.diagnosticsErrorHistoryLimit) {\n base.errorHistory.splice(\n 0,\n base.errorHistory.length - this.diagnosticsErrorHistoryLimit,\n );\n }\n }\n\n entries[fetchId] = base;\n\n this.pruneDiagnosticsEntries(entries, now);\n\n setState({ entries });\n },\n { mode: \"write\" },\n ),\n (context) => String(context?.fetchId ?? \"default\"),\n \"Upserts socket client diagnostics in actor state.\",\n ).doOn(\"meta.socket_client.diagnostics_upsert_requested\");\n }\n\n private registerSocketServerTasks(): void {\n Cadenza.createThrottledMetaTask(\n \"SocketServerActor.PatchSession\",\n this.socketServerActor.task(\n ({ state, input, setState }) => {\n const patch =\n input.patch && typeof input.patch === \"object\"\n ? (input.patch as Partial<SocketServerSessionState>)\n : {};\n setState({\n ...state,\n ...patch,\n updatedAt: Date.now(),\n });\n },\n { mode: \"write\" },\n ),\n (context) => String(context?.serverKey ?? this.socketServerDefaultKey),\n \"Applies partial durable session updates for socket server actor.\",\n ).doOn(\"meta.socket_server.session_patch_requested\");\n\n Cadenza.createMetaTask(\n \"SocketServerActor.ClearRuntime\",\n this.socketServerActor.task(\n ({ setRuntimeState }) => {\n setRuntimeState(null);\n },\n { mode: \"write\" },\n ),\n \"Clears socket server runtime handle after shutdown.\",\n ).doOn(\"meta.socket_server.runtime_clear_requested\");\n\n const setupSocketServerTask = Cadenza.createMetaTask(\n \"Setup SocketServer\",\n this.socketServerActor.task(\n async ({ state, runtimeState, input, actor, setState, setRuntimeState, emit }) => {\n const serverKey =\n this.resolveSocketServerKey(input) ?? actor.key ?? this.socketServerDefaultKey;\n const shouldUseSocket = Boolean(input.__useSocket);\n\n if (!shouldUseSocket) {\n this.destroySocketServerRuntimeHandle(runtimeState);\n setRuntimeState(null);\n setState({\n ...state,\n serverKey,\n useSocket: false,\n status: \"inactive\",\n connectionCount: 0,\n lastShutdownAt: new Date().toISOString(),\n updatedAt: Date.now(),\n });\n return;\n }\n\n let runtimeHandle = runtimeState;\n if (!runtimeHandle) {\n runtimeHandle = await this.createSocketServerRuntimeHandleFromContext(\n input,\n );\n setRuntimeState(runtimeHandle);\n }\n\n const profile = String(input.__securityProfile ?? state.securityProfile ?? \"medium\");\n const networkType = String(input.__networkType ?? state.networkType ?? \"internal\");\n\n const schedulePatch = (patch: Partial<SocketServerSessionState>) => {\n Cadenza.emit(\"meta.socket_server.session_patch_requested\", {\n serverKey,\n patch,\n });\n };\n\n if (runtimeHandle.initialized) {\n schedulePatch({\n status: \"active\",\n useSocket: true,\n securityProfile: profile,\n networkType,\n connectionCount: runtimeHandle.connectedSocketIds.size,\n lastStartedAt: state.lastStartedAt ?? new Date().toISOString(),\n });\n return;\n }\n\n const server = runtimeHandle.server;\n runtimeHandle.initialized = true;\n\n setState({\n ...state,\n serverKey,\n useSocket: true,\n status: \"active\",\n securityProfile: profile,\n networkType,\n connectionCount: runtimeHandle.connectedSocketIds.size,\n lastStartedAt: state.lastStartedAt ?? new Date().toISOString(),\n updatedAt: Date.now(),\n });\n\n server.use((socket: any, next: any) => {\n const origin = socket?.handshake?.headers?.origin;\n const allowedOrigins = [\"*\"];\n let effectiveOrigin = origin || \"unknown\";\n if (networkType === \"internal\") effectiveOrigin = \"internal\";\n\n if (\n profile !== \"low\" &&\n !allowedOrigins.includes(effectiveOrigin) &&\n !allowedOrigins.includes(\"*\")\n ) {\n return next(new Error(\"Unauthorized origin\"));\n }\n\n const limiterOptions: { [key: string]: IRateLimiterOptions } = {\n low: { points: Infinity, duration: 1 },\n medium: { points: 10000, duration: 10 },\n high: { points: 1000, duration: 60, blockDuration: 300 },\n };\n\n const limiter = new RateLimiterMemory(\n limiterOptions[profile] ?? limiterOptions.medium,\n );\n const clientKey = socket?.handshake?.address || \"unknown\";\n\n socket.use((packet: any, packetNext: any) => {\n limiter\n .consume(clientKey)\n .then(() => packetNext())\n .catch((rej) => {\n if (rej.msBeforeNext > 0) {\n Cadenza.log(\n \"SocketServer: Rate limit exceeded\",\n {\n retryAfter: rej.msBeforeNext / 1000,\n clientKey,\n socketId: socket.id,\n },\n \"warning\",\n );\n socket.emit(\"error\", {\n message: \"Rate limit exceeded\",\n retryAfter: rej.msBeforeNext / 1000,\n });\n packetNext(new Error(\"Rate limit exceeded\"));\n } else {\n Cadenza.log(\n \"SocketServer: Rate limit exceeded, blocked\",\n {\n clientKey,\n socketId: socket.id,\n },\n \"critical\",\n );\n socket.disconnect(true);\n packetNext(new Error(\"Blocked\"));\n }\n });\n });\n\n next();\n });\n\n server.on(\"connection\", (ws: any) => {\n runtimeHandle.connectedSocketIds.add(ws.id);\n schedulePatch({\n connectionCount: runtimeHandle.connectedSocketIds.size,\n lastConnectedAt: new Date().toISOString(),\n status: \"active\",\n });\n\n try {\n ws.on(\"handshake\", (ctx: AnyObject, callback: (result: AnyObject) => void) => {\n Cadenza.log(\"SocketServer: New connection\", {\n ...ctx,\n socketId: ws.id,\n });\n\n callback({\n status: \"success\",\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n\n if (ctx.isFrontend) {\n const fetchId = `browser:${ctx.serviceInstanceId}`;\n const frontendDelegateTaskName = `Delegate flow to frontend ${fetchId}`;\n const frontendTransmitTaskName = `Transmit signal to ${fetchId}`;\n\n Cadenza.get(frontendDelegateTaskName)?.destroy();\n Cadenza.get(frontendTransmitTaskName)?.destroy();\n\n Cadenza.createMetaTask(\n frontendDelegateTaskName,\n async (delegateCtx, emitter) => {\n if (delegateCtx.__remoteRoutineName === undefined) {\n return;\n }\n\n const routedDelegateCtx =\n stripTransportSelectionRoutingContext(delegateCtx);\n const normalizedDelegateCtx = ensureDelegationContextMetadata(\n attachDelegationRequestSnapshot(\n stripDelegationRequestSnapshot(routedDelegateCtx),\n ),\n );\n delete normalizedDelegateCtx.__isSubMeta;\n delete normalizedDelegateCtx.__broadcast;\n const requestPayload =\n stripDelegationRequestSnapshot(normalizedDelegateCtx);\n\n const deputyExecId =\n normalizedDelegateCtx.__metadata?.__deputyExecId;\n\n const resultContext = await new Promise<AnyObject>((resolve) => {\n ws.timeout(normalizedDelegateCtx.__timeout ?? 60_000).emit(\n \"delegation\",\n requestPayload,\n (err: AnyObject, response: AnyObject) => {\n if (err) {\n resolve({\n ...normalizedDelegateCtx,\n errored: true,\n __error: `Frontend delegation timed out: ${err.message ?? err}`,\n });\n return;\n }\n\n const resolvedResponse =\n response ?? {\n errored: true,\n __error: \"Frontend delegation returned no response\",\n };\n\n resolve(\n resolvedResponse?.__delegationRequestContext === undefined &&\n normalizedDelegateCtx.__delegationRequestContext !==\n undefined\n ? {\n ...resolvedResponse,\n __delegationRequestContext:\n normalizedDelegateCtx.__delegationRequestContext,\n }\n : resolvedResponse,\n );\n },\n );\n });\n\n if (deputyExecId) {\n const metadata = resultContext.__metadata;\n delete resultContext.__metadata;\n\n emitter(`meta.socket_client.delegated:${deputyExecId}`, {\n ...resultContext,\n ...(metadata && typeof metadata === \"object\"\n ? metadata\n : {}),\n });\n }\n\n return resultContext;\n },\n \"Delegates work to a connected frontend runtime through its active websocket.\",\n )\n .doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`)\n .attachSignal(\"meta.socket_client.delegated\");\n\n Cadenza.createMetaTask(\n frontendTransmitTaskName,\n (c, emitter) => {\n if (c.__signalName === undefined) {\n return;\n }\n\n ws.emit(\"signal\", c);\n\n if (c.__routineExecId) {\n emitter(`meta.socket_client.transmitted:${c.__routineExecId}`, {});\n }\n },\n \"Transmit frontend bound signal through active websocket.\",\n )\n .doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`)\n .attachSignal(\"meta.socket_client.transmitted\");\n }\n\n Cadenza.emit(\"meta.socket.handshake\", ctx);\n });\n\n ws.on(\"delegation\", (ctx: AnyObject, callback: (context: AnyObject) => void) => {\n const delegationCtx = ensureDelegationContextMetadata(\n attachDelegationRequestSnapshot(ctx),\n );\n const deputyExecId = delegationCtx.__metadata.__deputyExecId;\n\n if (\n (process.env.CADENZA_INSTANCE_DEBUG === \"1\" ||\n process.env.CADENZA_INSTANCE_DEBUG === \"true\") &&\n delegationCtx.__remoteRoutineName === \"Insert service_instance\"\n ) {\n console.log(\"[CADENZA_INSTANCE_DEBUG] socket_delegation_ingress\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n sourceServiceName:\n delegationCtx.__localServiceName ??\n delegationCtx.__metadata?.__localServiceName ??\n null,\n deputyExecId,\n dataKeys:\n delegationCtx.data && typeof delegationCtx.data === \"object\"\n ? Object.keys(delegationCtx.data)\n : [],\n queryDataKeys:\n delegationCtx.queryData &&\n typeof delegationCtx.queryData === \"object\"\n ? Object.keys(delegationCtx.queryData)\n : [],\n queryDataDataKeys:\n delegationCtx.queryData?.data &&\n typeof delegationCtx.queryData.data === \"object\"\n ? Object.keys(delegationCtx.queryData.data as AnyObject)\n : [],\n });\n }\n\n Cadenza.createEphemeralMetaTask(\n \"Resolve delegation\",\n (delegationCtx: AnyObject) => {\n callback(delegationCtx);\n },\n \"Resolves a delegation request using client callback.\",\n { register: false },\n )\n .doOn(`meta.node.graph_completed:${deputyExecId}`)\n .emits(`meta.socket.delegation_resolved:${deputyExecId}`);\n\n Cadenza.createEphemeralMetaTask(\n \"Delegation progress update\",\n (progressCtx) => {\n if (progressCtx.__progress !== undefined) {\n ws.emit(\"delegation_progress\", progressCtx);\n }\n },\n \"Updates delegation progress to client.\",\n {\n once: false,\n destroyCondition: (progressCtx: AnyObject) =>\n progressCtx.data.progress === 1.0 ||\n progressCtx.data?.progress === undefined,\n register: false,\n },\n )\n .doOn(\n `meta.node.routine_execution_progress:${deputyExecId}`,\n `meta.node.graph_completed:${deputyExecId}`,\n )\n .emitsOnFail(`meta.socket.progress_failed:${deputyExecId}`);\n\n Cadenza.emit(\"meta.socket.delegation_requested\", {\n ...delegationCtx,\n __name: delegationCtx.__remoteRoutineName,\n });\n Cadenza.emit(\"meta.service_registry.instance_activity_observed\", {\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n activityAt: new Date().toISOString(),\n source: \"socket-delegation\",\n });\n });\n\n ws.on(\"signal\", (ctx: AnyObject, callback: unknown) => {\n if (Cadenza.signalBroker.listObservedSignals().includes(ctx.__signalName)) {\n Cadenza.emit(\"meta.service_registry.instance_activity_observed\", {\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n activityAt: new Date().toISOString(),\n source: \"socket-signal\",\n });\n if (isSocketAckCallback(callback)) {\n callback({\n __status: \"success\",\n __signalName: ctx.__signalName,\n });\n }\n\n Cadenza.emit(ctx.__signalName, {\n ...ctx,\n __receivedSignalTransmission: true,\n });\n } else {\n Cadenza.log(\n `No such signal ${ctx.__signalName} on ${ctx.__serviceName}`,\n \"warning\",\n );\n if (isSocketAckCallback(callback)) {\n callback({\n ...ctx,\n __status: \"error\",\n __error: `No such signal: ${ctx.__signalName}`,\n errored: true,\n });\n }\n }\n });\n\n ws.on(\n \"status_check\",\n (ctx: AnyObject, callback: (context: AnyObject) => void) => {\n callback(Cadenza.serviceRegistry.resolveLocalStatusCheck(ctx));\n },\n );\n\n ws.on(\"disconnect\", () => {\n runtimeHandle.connectedSocketIds.delete(ws.id);\n schedulePatch({\n connectionCount: runtimeHandle.connectedSocketIds.size,\n lastDisconnectedAt: new Date().toISOString(),\n });\n Cadenza.log(\n \"Socket client disconnected\",\n { socketId: ws.id },\n \"warning\",\n );\n Cadenza.emit(\"meta.socket.disconnected\", {\n __wsId: ws.id,\n });\n });\n } catch (error) {\n Cadenza.log(\n \"SocketServer: Error in socket event\",\n { error },\n \"error\",\n );\n }\n\n Cadenza.emit(\"meta.socket.connected\", { __wsId: ws.id });\n });\n\n runtimeHandle.broadcastStatusTask = Cadenza.createMetaTask(\n `Broadcast status ${serverKey}`,\n (ctx) => server.emit(\"status_update\", ctx),\n \"Broadcasts the status of the server to all clients\",\n ).doOn(\"meta.service.updated\");\n\n runtimeHandle.shutdownTask = Cadenza.createMetaTask(\n `Shutdown SocketServer ${serverKey}`,\n async () => {\n this.destroySocketServerRuntimeHandle(runtimeHandle);\n\n Cadenza.emit(\"meta.socket_server.runtime_clear_requested\", {\n serverKey,\n });\n Cadenza.emit(\"meta.socket_server.session_patch_requested\", {\n serverKey,\n patch: {\n useSocket: false,\n status: \"shutdown\",\n connectionCount: 0,\n lastShutdownAt: new Date().toISOString(),\n },\n });\n },\n \"Shuts down the socket server\",\n )\n .doOn(\"meta.socket_server_shutdown_requested\")\n .emits(\"meta.socket.shutdown\");\n\n return true;\n },\n { mode: \"write\" },\n ),\n \"Initializes socket server runtime through actor state.\",\n );\n\n setupSocketServerTask.doOn(\"global.meta.rest.network_configured\");\n }\n\n private registerSocketClientTasks(): void {\n Cadenza.createThrottledMetaTask(\n \"SocketClientActor.ApplySessionOperation\",\n this.socketClientActor.task(\n ({ state, input, setState }) => {\n const operation = String(\n input.operation ?? \"transmit\",\n ) as SocketClientSessionOperation;\n const patch =\n input.patch && typeof input.patch === \"object\"\n ? (input.patch as Partial<SocketClientSessionState>)\n : {};\n\n let next: SocketClientSessionState = {\n ...state,\n ...patch,\n communicationTypes:\n patch.communicationTypes !== undefined\n ? this.normalizeCommunicationTypes(patch.communicationTypes)\n : state.communicationTypes,\n updatedAt: Date.now(),\n };\n\n if (input.serviceName !== undefined) {\n next.serviceName = String(input.serviceName);\n }\n if (input.serviceTransportId !== undefined) {\n next.serviceTransportId = String(input.serviceTransportId);\n }\n if (input.serviceInstanceId !== undefined) {\n next.serviceInstanceId = String(input.serviceInstanceId);\n }\n if (input.serviceOrigin !== undefined) {\n next.serviceOrigin = String(input.serviceOrigin);\n }\n if (input.transportProtocols !== undefined) {\n next.transportProtocols = Array.isArray(input.transportProtocols)\n ? input.transportProtocols.map((entry: unknown) => String(entry))\n : [];\n }\n if (input.url !== undefined) {\n next.url = String(input.url);\n }\n if (input.fetchId !== undefined) {\n next.fetchId = String(input.fetchId);\n }\n\n if (operation === \"connect\") {\n next.destroyed = false;\n } else if (operation === \"handshake\") {\n next.destroyed = false;\n next.connected = patch.connected ?? true;\n next.handshake = patch.handshake ?? true;\n } else if (operation === \"shutdown\") {\n next.connected = false;\n next.handshake = false;\n next.destroyed = true;\n next.pendingDelegations = 0;\n next.pendingTimers = 0;\n }\n\n setState(next);\n return next;\n },\n { mode: \"write\" },\n ),\n (context) =>\n String(this.resolveSocketClientFetchId(context ?? {}) ?? \"default\"),\n \"Applies socket client session operation patch in actor durable state.\",\n ).doOn(\"meta.socket_client.session_operation_requested\");\n\n Cadenza.createMetaTask(\n \"SocketClientActor.ClearRuntime\",\n this.socketClientActor.task(\n ({ setRuntimeState }) => {\n setRuntimeState(null);\n },\n { mode: \"write\" },\n ),\n \"Clears socket client runtime handle.\",\n ).doOn(\"meta.socket_client.runtime_clear_requested\");\n\n Cadenza.createMetaTask(\n \"Connect to socket server\",\n this.socketClientActor.task(\n ({ state, runtimeState, input, setState, setRuntimeState, emit }) => {\n const serviceInstanceId = String(input.serviceInstanceId ?? \"\");\n const communicationTypes = this.normalizeCommunicationTypes(\n input.communicationTypes,\n );\n const transportProtocols = Array.isArray(input.transportProtocols)\n ? input.transportProtocols.map((entry: unknown) => String(entry))\n : [];\n const serviceName = String(input.serviceName ?? \"\");\n const serviceTransportId = String(input.serviceTransportId ?? \"\");\n const serviceOrigin = String(input.serviceOrigin ?? \"\");\n const routeGeneration = String(input.routeGeneration ?? \"\").trim();\n const parsedOrigin = parseTransportOrigin(serviceOrigin);\n\n if (!transportProtocols.includes(\"socket\")) {\n return false;\n }\n\n if (!serviceTransportId || !serviceOrigin || !parsedOrigin) {\n Cadenza.log(\n \"Socket client setup skipped due to missing transport origin\",\n {\n serviceName,\n serviceTransportId,\n serviceOrigin,\n },\n \"warning\",\n );\n return false;\n }\n\n const socketProtocol =\n parsedOrigin.protocol === \"https\" ? \"wss\" : \"ws\";\n const url = `${socketProtocol}://${parsedOrigin.hostname}:${parsedOrigin.port}`;\n const routeKey = String(\n input.routeKey ??\n parseTransportHandleKey(input.fetchId)?.routeKey ??\n serviceTransportId,\n ).trim();\n const fetchId = String(\n input.socketClientId ??\n input.fetchId ??\n (routeKey ? buildTransportHandleKey(routeKey, \"socket\") : \"\") ??\n serviceTransportId,\n ).trim();\n\n const applySessionOperation = (\n operation: SocketClientSessionOperation,\n patch: Partial<SocketClientSessionState> = {},\n ) => {\n Cadenza.emit(\"meta.socket_client.session_operation_requested\", {\n fetchId,\n operation,\n patch,\n serviceInstanceId,\n communicationTypes,\n serviceName,\n serviceTransportId,\n serviceOrigin,\n transportProtocols,\n url,\n });\n };\n\n const upsertDiagnostics = (\n patch: Partial<SocketClientDiagnosticsState>,\n error?: unknown,\n ) => {\n Cadenza.emit(\"meta.socket_client.diagnostics_upsert_requested\", {\n fetchId,\n serviceName,\n url,\n patch,\n error,\n });\n };\n\n setState({\n ...state,\n fetchId,\n serviceInstanceId,\n communicationTypes,\n serviceName,\n serviceTransportId,\n serviceOrigin,\n transportProtocols,\n url,\n destroyed: false,\n updatedAt: Date.now(),\n });\n\n let runtimeHandle = runtimeState;\n if (!runtimeHandle || runtimeHandle.url !== url) {\n this.destroySocketClientRuntimeHandle(runtimeHandle);\n runtimeHandle = this.createSocketClientRuntimeHandle(url);\n setRuntimeState(runtimeHandle);\n }\n\n upsertDiagnostics({\n destroyed: false,\n connected: false,\n handshake: false,\n socketId: runtimeHandle.socket.id ?? null,\n });\n applySessionOperation(\"connect\", {\n destroyed: false,\n connected: false,\n handshake: false,\n socketId: runtimeHandle.socket.id ?? null,\n pendingDelegations: runtimeHandle.pendingDelegationIds.size,\n pendingTimers: runtimeHandle.pendingTimers.size,\n errorCount: runtimeHandle.errorCount,\n });\n\n if (runtimeHandle.initialized) {\n return true;\n }\n\n runtimeHandle.initialized = true;\n runtimeHandle.handshake = false;\n runtimeHandle.errorCount = 0;\n\n const syncPendingCounts = () => {\n const pendingDelegations = runtimeHandle.pendingDelegationIds.size;\n const pendingTimers = runtimeHandle.pendingTimers.size;\n upsertDiagnostics({\n pendingDelegations,\n pendingTimers,\n });\n applySessionOperation(\"delegate\", {\n pendingDelegations,\n pendingTimers,\n });\n };\n\n runtimeHandle.emitWhenReady = <T>(\n event: string,\n data: AnyObject,\n timeoutMs: number = 60_000,\n ack?: (response: T) => void,\n ): Promise<T> => {\n return new Promise((resolve) => {\n const parsedTimeout = Number(timeoutMs);\n const normalizedTimeoutMs =\n Number.isFinite(parsedTimeout) && parsedTimeout > 0\n ? Math.trunc(parsedTimeout)\n : 60_000;\n\n let timer: NodeJS.Timeout | null = null;\n let settled = false;\n\n const clearPendingTimer = () => {\n if (!timer) {\n return;\n }\n clearTimeout(timer);\n runtimeHandle.pendingTimers.delete(timer);\n syncPendingCounts();\n timer = null;\n };\n\n const settle = (response: T) => {\n if (settled) {\n return;\n }\n settled = true;\n clearPendingTimer();\n if (ack) ack(response);\n resolve(response);\n };\n\n const resolveWithError = (errorMessage: string, fallbackError?: unknown) => {\n settle({\n ...data,\n errored: true,\n __error: errorMessage,\n error:\n fallbackError instanceof Error\n ? fallbackError.message\n : errorMessage,\n socketId: runtimeHandle.socket.id,\n serviceName,\n url,\n } as T);\n };\n\n const tryEmit = async () => {\n const waitResult = await waitForSocketConnection(\n runtimeHandle.socket,\n normalizedTimeoutMs + 10,\n (reason, error) => {\n if (reason === \"connect_timeout\") {\n return `Socket connect timed out before '${event}'`;\n }\n if (reason === \"connect_error\") {\n const errMessage =\n error instanceof Error ? error.message : String(error);\n return `Socket connect error before '${event}': ${errMessage}`;\n }\n return `Socket disconnected before '${event}'`;\n },\n );\n\n if (!waitResult.ok) {\n Cadenza.log(\n waitResult.error,\n {\n socketId: runtimeHandle.socket.id,\n serviceName,\n url,\n event,\n },\n \"error\",\n );\n upsertDiagnostics({}, waitResult.error);\n resolveWithError(waitResult.error);\n return;\n }\n\n timer = setTimeout(() => {\n if (settled) {\n return;\n }\n clearPendingTimer();\n const message = `Socket event '${event}' timed out`;\n Cadenza.log(\n message,\n { socketId: runtimeHandle.socket.id, serviceName, url },\n \"error\",\n );\n upsertDiagnostics(\n {\n lastHandshakeError: message,\n },\n message,\n );\n applySessionOperation(\"transmit\", {\n lastHandshakeError: message,\n });\n resolveWithError(message);\n }, normalizedTimeoutMs + 10);\n\n runtimeHandle.pendingTimers.add(timer);\n syncPendingCounts();\n\n runtimeHandle.socket\n .timeout(normalizedTimeoutMs)\n .emit(event, data, (err: any, response: T) => {\n if (err) {\n Cadenza.log(\n \"Socket timeout.\",\n {\n event,\n error: err.message,\n socketId: runtimeHandle.socket.id,\n serviceName,\n },\n \"warning\",\n );\n upsertDiagnostics(\n {\n lastHandshakeError: err.message,\n },\n err,\n );\n applySessionOperation(\"transmit\", {\n lastHandshakeError: err.message,\n });\n response = {\n __error: `Timeout error: ${err}`,\n errored: true,\n ...data,\n } as T;\n }\n settle(response);\n });\n };\n\n void tryEmit().catch((error) => {\n Cadenza.log(\n \"Socket emit failed unexpectedly\",\n {\n event,\n error:\n error instanceof Error ? error.message : String(error),\n socketId: runtimeHandle.socket.id,\n serviceName,\n url,\n },\n \"error\",\n );\n const message = `Socket event '${event}' failed`;\n upsertDiagnostics(\n {\n lastHandshakeError:\n error instanceof Error ? error.message : String(error),\n },\n error,\n );\n applySessionOperation(\"transmit\", {\n lastHandshakeError:\n error instanceof Error ? error.message : String(error),\n });\n resolveWithError(message, error);\n });\n });\n };\n\n const socket = runtimeHandle.socket;\n\n socket.on(\"connect\", () => {\n if (runtimeHandle.handshake) return;\n upsertDiagnostics({\n connected: true,\n destroyed: false,\n socketId: socket.id ?? null,\n });\n applySessionOperation(\"connect\", {\n connected: true,\n destroyed: false,\n socketId: socket.id ?? null,\n });\n Cadenza.emit(`meta.socket_client.connected:${fetchId}`, input);\n });\n\n socket.on(\"delegation_progress\", (delegationCtx) => {\n Cadenza.emit(\n `meta.socket_client.delegation_progress:${delegationCtx.__metadata.__deputyExecId}`,\n delegationCtx,\n );\n });\n\n socket.on(\"delegation\", (delegationCtx, callback) => {\n const normalizedDelegationCtx = ensureDelegationContextMetadata(\n attachDelegationRequestSnapshot(delegationCtx),\n );\n const deputyExecId = normalizedDelegationCtx.__metadata.__deputyExecId;\n const targetNotFoundSignal =\n `meta.socket.delegation_target_not_found:${deputyExecId}`;\n\n Cadenza.createEphemeralMetaTask(\n `Resolve frontend socket delegation ${deputyExecId}`,\n (completedCtx: AnyObject) => {\n callback(completedCtx);\n return completedCtx;\n },\n \"Resolves a server-routed delegation request through the frontend runtime.\",\n {\n register: false,\n },\n ).doOn(`meta.node.graph_completed:${deputyExecId}`, targetNotFoundSignal);\n\n if (\n !Cadenza.get(normalizedDelegationCtx.__remoteRoutineName) &&\n !Cadenza.registry.routines.get(\n normalizedDelegationCtx.__remoteRoutineName,\n )\n ) {\n Cadenza.emit(targetNotFoundSignal, {\n ...normalizedDelegationCtx,\n __error: `No task or routine registered for delegation target ${normalizedDelegationCtx.__remoteRoutineName}.`,\n errored: true,\n });\n return;\n }\n\n Cadenza.emit(\"meta.socket.delegation_requested\", {\n ...stripDelegationRequestSnapshot(normalizedDelegationCtx),\n __name: normalizedDelegationCtx.__remoteRoutineName,\n });\n });\n\n socket.on(\"signal\", (signalCtx, callback?: unknown) => {\n if (Cadenza.signalBroker.listObservedSignals().includes(signalCtx.__signalName)) {\n if (isSocketAckCallback(callback)) {\n callback({\n __status: \"success\",\n __signalName: signalCtx.__signalName,\n });\n }\n Cadenza.emit(signalCtx.__signalName, {\n ...signalCtx,\n __receivedSignalTransmission: true,\n });\n return;\n }\n\n if (isSocketAckCallback(callback)) {\n callback({\n ...signalCtx,\n __status: \"error\",\n __error: `No such signal: ${signalCtx.__signalName}`,\n errored: true,\n });\n }\n });\n\n socket.on(\"status_check\", (statusCtx, callback) => {\n callback(Cadenza.serviceRegistry.resolveLocalStatusCheck(statusCtx));\n });\n\n socket.on(\"status_update\", (status) => {\n Cadenza.emit(\"meta.socket_client.status_received\", status);\n });\n\n socket.on(\"connect_error\", (err) => {\n runtimeHandle.handshake = false;\n upsertDiagnostics(\n {\n connected: false,\n handshake: false,\n connectErrors: state.connectErrors + 1,\n lastHandshakeError: err.message,\n },\n err,\n );\n applySessionOperation(\"connect\", {\n connected: false,\n handshake: false,\n connectErrors: state.connectErrors + 1,\n lastHandshakeError: err.message,\n });\n Cadenza.log(\n \"Socket connect error\",\n {\n error: err.message,\n serviceName,\n socketId: socket.id,\n url,\n },\n \"error\",\n );\n Cadenza.emit(`meta.socket_client.connect_error:${fetchId}`, {\n error: err,\n serviceName,\n serviceTransportId,\n serviceOrigin,\n fetchId,\n routeKey,\n routeGeneration,\n transportProtocol: \"socket\",\n });\n });\n\n socket.on(\"reconnect_attempt\", (attempt) => {\n upsertDiagnostics({ reconnectAttempts: attempt });\n applySessionOperation(\"connect\", {\n reconnectAttempts: attempt,\n });\n Cadenza.log(`Reconnect attempt: ${attempt}`);\n });\n\n socket.on(\"reconnect\", (attempt) => {\n upsertDiagnostics({ connected: true });\n applySessionOperation(\"connect\", {\n connected: true,\n });\n Cadenza.log(`Socket reconnected after ${attempt} tries`, {\n socketId: socket.id,\n url,\n serviceName,\n });\n });\n\n socket.on(\"reconnect_error\", (err) => {\n runtimeHandle.handshake = false;\n upsertDiagnostics(\n {\n connected: false,\n handshake: false,\n reconnectErrors: state.reconnectErrors + 1,\n lastHandshakeError: err.message,\n },\n err,\n );\n applySessionOperation(\"connect\", {\n connected: false,\n handshake: false,\n reconnectErrors: state.reconnectErrors + 1,\n lastHandshakeError: err.message,\n });\n Cadenza.log(\n \"Socket reconnect failed.\",\n { error: err.message, serviceName, url, socketId: socket.id },\n \"warning\",\n );\n });\n\n socket.on(\"error\", (err) => {\n runtimeHandle.errorCount += 1;\n upsertDiagnostics(\n {\n socketErrors: state.socketErrors + 1,\n lastHandshakeError: this.getErrorMessage(err),\n },\n err,\n );\n applySessionOperation(\"transmit\", {\n socketErrors: state.socketErrors + 1,\n errorCount: runtimeHandle.errorCount,\n lastHandshakeError: this.getErrorMessage(err),\n });\n Cadenza.log(\n \"Socket error\",\n { error: err, socketId: socket.id, url, serviceName },\n \"error\",\n );\n Cadenza.emit(\"meta.socket_client.error\", err);\n });\n\n socket.on(\"disconnect\", () => {\n const disconnectedAt = new Date().toISOString();\n upsertDiagnostics({\n connected: false,\n handshake: false,\n lastDisconnectAt: disconnectedAt,\n });\n applySessionOperation(\"connect\", {\n connected: false,\n handshake: false,\n lastDisconnectAt: disconnectedAt,\n });\n Cadenza.log(\n \"Socket disconnected.\",\n { url, serviceName, socketId: socket.id },\n \"warning\",\n );\n Cadenza.emit(`meta.socket_client.disconnected:${fetchId}`, {\n serviceName,\n serviceTransportId,\n serviceOrigin,\n fetchId,\n routeKey,\n routeGeneration,\n transportProtocol: \"socket\",\n });\n runtimeHandle.handshake = false;\n });\n\n socket.connect();\n\n runtimeHandle.handshakeTask = Cadenza.createMetaTask(\n `Socket handshake with ${url}`,\n async (_ctx, emitter) => {\n if (runtimeHandle.handshake) return;\n runtimeHandle.handshake = true;\n\n upsertDiagnostics({\n handshake: true,\n });\n applySessionOperation(\"handshake\", {\n handshake: true,\n });\n\n await runtimeHandle.emitWhenReady?.(\n \"handshake\",\n {\n serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n serviceName: Cadenza.serviceRegistry.serviceName,\n isFrontend: Cadenza.serviceRegistry.isFrontend || isBrowser,\n __status: \"success\",\n },\n 10_000,\n (result: any) => {\n if (result.status === \"success\") {\n const handshakeAt = new Date().toISOString();\n upsertDiagnostics({\n connected: true,\n handshake: true,\n lastHandshakeAt: handshakeAt,\n lastHandshakeError: null,\n socketId: socket.id ?? null,\n });\n applySessionOperation(\"handshake\", {\n connected: true,\n handshake: true,\n lastHandshakeAt: handshakeAt,\n lastHandshakeError: null,\n socketId: socket.id ?? null,\n });\n Cadenza.log(\"Socket client connected\", {\n result,\n serviceName,\n socketId: socket.id,\n url,\n });\n } else {\n const errorMessage =\n result?.__error ?? result?.error ?? \"Socket handshake failed\";\n upsertDiagnostics(\n {\n connected: false,\n handshake: false,\n lastHandshakeError: errorMessage,\n },\n errorMessage,\n );\n applySessionOperation(\"handshake\", {\n connected: false,\n handshake: false,\n lastHandshakeError: errorMessage,\n });\n Cadenza.log(\n \"Socket handshake failed\",\n { result, serviceName, socketId: socket.id, url },\n \"warning\",\n );\n }\n\n // If needed in future:\n // runtimeHandle.errorCount threshold can request shutdown signal.\n void emitter;\n },\n );\n },\n \"Handshakes with socket server\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(`meta.socket_client.connected:${fetchId}`);\n\n runtimeHandle.delegateTask = Cadenza.createMetaTask(\n `Delegate flow to Socket service ${url}`,\n async (delegateCtx, emitter) => {\n if (delegateCtx.__remoteRoutineName === undefined) {\n return;\n }\n\n const routedDelegateCtx =\n stripTransportSelectionRoutingContext(delegateCtx);\n const normalizedDelegateCtx = ensureDelegationContextMetadata(\n attachDelegationRequestSnapshot(\n stripDelegationRequestSnapshot(routedDelegateCtx),\n ),\n );\n delete normalizedDelegateCtx.__isSubMeta;\n delete normalizedDelegateCtx.__broadcast;\n const requestPayload =\n stripDelegationRequestSnapshot(normalizedDelegateCtx);\n\n const deputyExecId =\n normalizedDelegateCtx.__metadata?.__deputyExecId;\n const requestSentAt = Date.now();\n if (deputyExecId) {\n runtimeHandle.pendingDelegationIds.add(deputyExecId);\n syncPendingCounts();\n }\n\n let routeOutcome: \"success\" | \"failure\" | \"neutral\" = \"neutral\";\n try {\n const resultContext =\n ((await runtimeHandle.emitWhenReady?.(\n \"delegation\",\n requestPayload,\n normalizedDelegateCtx.__timeout ?? 60_000,\n )) as AnyObject | undefined) ??\n ({\n errored: true,\n __error: \"Socket delegation returned no response\",\n } as AnyObject);\n\n const requestDuration = Date.now() - requestSentAt;\n const resolvedResultContext =\n resultContext?.__delegationRequestContext === undefined &&\n normalizedDelegateCtx.__delegationRequestContext !== undefined\n ? {\n ...resultContext,\n __delegationRequestContext:\n normalizedDelegateCtx.__delegationRequestContext,\n }\n : resultContext;\n const metadata = resolvedResultContext.__metadata;\n delete resolvedResultContext.__metadata;\n\n if (deputyExecId) {\n emitter(`meta.socket_client.delegated:${deputyExecId}`, {\n ...resolvedResultContext,\n ...metadata,\n __requestDuration: requestDuration,\n });\n }\n\n if (resolvedResultContext?.errored || resolvedResultContext?.failed) {\n const errorMessage =\n resolvedResultContext?.__error ??\n resolvedResultContext?.error ??\n \"Socket delegation failed\";\n upsertDiagnostics(\n {\n lastHandshakeError: String(errorMessage),\n },\n errorMessage,\n );\n applySessionOperation(\"delegate\", {\n lastHandshakeError: String(errorMessage),\n });\n } else {\n const serviceInstanceId = String(\n normalizedDelegateCtx.__instance ??\n normalizedDelegateCtx.targetServiceInstanceId ??\n \"\",\n ).trim();\n if (serviceName && serviceInstanceId) {\n emitter(\"meta.service_registry.remote_activity_observed\", {\n serviceName,\n serviceInstanceId,\n serviceTransportId: String(\n normalizedDelegateCtx.__transportId ?? \"\",\n ).trim(),\n serviceOrigin: String(\n normalizedDelegateCtx.__transportOrigin ?? \"\",\n ).trim(),\n transportProtocols: Array.isArray(\n normalizedDelegateCtx.__transportProtocols,\n )\n ? normalizedDelegateCtx.__transportProtocols\n : [],\n activityAt: new Date().toISOString(),\n source: \"socket-delegation-success\",\n });\n }\n routeOutcome = \"success\";\n }\n\n return resolvedResultContext;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const failedContext = {\n __signalName: \"meta.socket_client.delegate_failed\",\n errored: true,\n __error: message,\n ...normalizedDelegateCtx,\n ...normalizedDelegateCtx.__metadata,\n };\n\n if (deputyExecId) {\n emitter(`meta.socket_client.delegated:${deputyExecId}`, {\n ...failedContext,\n __requestDuration: Date.now() - requestSentAt,\n });\n }\n\n emitter(\"meta.socket_client.delegate_failed\", failedContext);\n\n upsertDiagnostics(\n {\n lastHandshakeError: message,\n },\n error,\n );\n applySessionOperation(\"delegate\", {\n lastHandshakeError: message,\n });\n routeOutcome = \"failure\";\n return failedContext;\n } finally {\n Cadenza.serviceRegistry.recordBalancedRouteOutcome(\n normalizedDelegateCtx,\n routeOutcome,\n );\n if (deputyExecId) {\n runtimeHandle.pendingDelegationIds.delete(deputyExecId);\n syncPendingCounts();\n }\n }\n },\n `Delegate flow to service ${serviceName} with address ${url}`,\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`)\n .attachSignal(\n \"meta.socket_client.delegated\",\n \"meta.socket_shutdown_requested\",\n );\n\n runtimeHandle.transmitTask = Cadenza.createMetaTask(\n `Transmit signal to socket server ${url}`,\n async (signalCtx, emitter) => {\n if (signalCtx.__signalName === undefined) {\n return;\n }\n\n if (\n INQUIRY_TRACE_ENABLED &&\n serviceName === \"CadenzaDB\" &&\n TRACED_INQUIRY_METADATA_SIGNALS.has(String(signalCtx.__signalName))\n ) {\n console.log(\"[CADENZA_INQUIRY_TRACE] socket_transmit_start\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n targetServiceName: serviceName,\n signalName: signalCtx.__signalName,\n inquiryName:\n signalCtx?.data?.name ??\n signalCtx?.data?.metadata?.inquiryMeta?.inquiry ??\n null,\n inquiryId:\n signalCtx?.data?.uuid ?? signalCtx?.filter?.uuid ?? null,\n });\n }\n\n delete signalCtx.__broadcast;\n\n let routeOutcome: \"success\" | \"failure\" | \"neutral\" = \"neutral\";\n const response =\n ((await runtimeHandle.emitWhenReady?.(\"signal\", signalCtx, 5_000)) as\n | AnyObject\n | undefined) ??\n ({\n errored: true,\n __error: \"Socket signal transmission returned no response\",\n } as AnyObject);\n\n applySessionOperation(\"transmit\", {});\n\n if (signalCtx.__routineExecId) {\n emitter(`meta.socket_client.transmitted:${signalCtx.__routineExecId}`, {\n ...response,\n });\n }\n\n if (!response?.errored && !response?.failed) {\n routeOutcome = \"success\";\n }\n\n if (\n INQUIRY_TRACE_ENABLED &&\n serviceName === \"CadenzaDB\" &&\n TRACED_INQUIRY_METADATA_SIGNALS.has(String(signalCtx.__signalName))\n ) {\n console.log(\"[CADENZA_INQUIRY_TRACE] socket_transmit_result\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n targetServiceName: serviceName,\n signalName: signalCtx.__signalName,\n errored: response?.errored === true,\n error: response?.__error ?? response?.error ?? null,\n });\n }\n\n Cadenza.serviceRegistry.recordBalancedRouteOutcome(\n signalCtx,\n routeOutcome,\n );\n\n return response;\n },\n `Transmits signal to service ${serviceName} with address ${url}`,\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(`meta.service_registry.selected_instance_for_socket:${fetchId}`)\n .attachSignal(\"meta.socket_client.transmitted\");\n\n Cadenza.createEphemeralMetaTask(\n `Shutdown SocketClient ${url}`,\n (_ctx, emitter) => {\n if (\n !Cadenza.serviceRegistry.shouldProcessRemoteRouteEvent({\n ..._ctx,\n fetchId,\n routeKey,\n serviceTransportId,\n routeGeneration,\n })\n ) {\n return false;\n }\n\n runtimeHandle.handshake = false;\n\n upsertDiagnostics({\n connected: false,\n handshake: false,\n destroyed: true,\n pendingDelegations: 0,\n pendingTimers: 0,\n });\n applySessionOperation(\"shutdown\", {\n connected: false,\n handshake: false,\n destroyed: true,\n pendingDelegations: 0,\n pendingTimers: 0,\n });\n\n Cadenza.log(\"Shutting down socket client\", { url, serviceName });\n\n const restFetchId = routeKey\n ? buildTransportHandleKey(routeKey, \"rest\")\n : fetchId;\n\n emitter(`meta.fetch.handshake_requested:${restFetchId}`, {\n serviceInstanceId,\n serviceName,\n communicationTypes,\n serviceTransportId,\n serviceOrigin,\n fetchId: restFetchId,\n routeKey,\n routeGeneration,\n socketClientId: fetchId,\n transportProtocols,\n transportProtocol: \"rest\",\n handshakeData: {\n instanceId: Cadenza.serviceRegistry.serviceInstanceId,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n });\n\n for (const id of runtimeHandle.pendingDelegationIds) {\n emitter(`meta.socket_client.delegated:${id}`, {\n errored: true,\n __error: \"Shutting down socket client\",\n });\n }\n\n this.destroySocketClientRuntimeHandle(runtimeHandle);\n emitter(\"meta.socket_client.runtime_clear_requested\", {\n fetchId,\n });\n return true;\n },\n \"Shuts down the socket client\",\n {\n register: false,\n isHidden: true,\n },\n )\n .doOn(\n `meta.socket_shutdown_requested:${fetchId}`,\n `meta.socket_client.disconnected:${fetchId}`,\n `meta.fetch.handshake_failed:${fetchId}`,\n `meta.socket_client.connect_error:${fetchId}`,\n )\n .attachSignal(\"meta.fetch.handshake_requested\")\n .emits(\"meta.socket_client_shutdown_complete\");\n\n return true;\n },\n { mode: \"write\" },\n ),\n \"Connects to a specified socket server and wires runtime tasks.\",\n )\n .doOn(\"meta.fetch.handshake_complete\")\n .emitsOnFail(\"meta.socket_client.connect_failed\");\n }\n\n private resolveSocketServerKey(input: AnyObject): string {\n return (\n String(input.serverKey ?? input.__socketServerKey ?? this.socketServerDefaultKey)\n .trim() || this.socketServerDefaultKey\n );\n }\n\n private resolveSocketClientFetchId(input: AnyObject): string | undefined {\n const explicitSocketFetchId = String(\n input.socketClientId ?? input.socketFetchId ?? \"\",\n ).trim();\n if (explicitSocketFetchId) {\n return explicitSocketFetchId;\n }\n\n const explicitFetchId = String(input.fetchId ?? \"\").trim();\n if (explicitFetchId.startsWith(\"browser:\")) {\n return explicitFetchId;\n }\n const parsedExplicitFetchId = parseTransportHandleKey(explicitFetchId);\n if (parsedExplicitFetchId?.protocol === \"socket\") {\n return explicitFetchId;\n }\n\n const routeKey = String(\n input.routeKey ??\n input.__routeKey ??\n parsedExplicitFetchId?.routeKey ??\n parseTransportHandleKey(input.__fetchId)?.routeKey ??\n \"\",\n ).trim();\n if (routeKey) {\n return buildTransportHandleKey(routeKey, \"socket\");\n }\n\n const transportId = String(\n input.serviceTransportId ?? input.transportId ?? \"\",\n ).trim();\n return transportId || undefined;\n }\n\n private async createSocketServerRuntimeHandleFromContext(\n context: AnyObject,\n ): Promise<SocketServerRuntimeHandle> {\n const baseServer = context.httpsServer ?? context.httpServer;\n if (!baseServer) {\n throw new Error(\n \"Socket server runtime setup requires either httpsServer or httpServer\",\n );\n }\n\n const socketServerModule = await importNodeModule<{\n Server: new (server: any, options: AnyObject) => any;\n }>(\"socket.io\");\n const Server = socketServerModule.Server;\n const server = new Server(baseServer, {\n pingInterval: 30_000,\n pingTimeout: 20_000,\n maxHttpBufferSize: 1e7,\n connectionStateRecovery: {\n maxDisconnectionDuration: 2 * 60 * 1000,\n skipMiddlewares: true,\n },\n });\n\n return {\n server,\n initialized: false,\n connectedSocketIds: new Set<string>(),\n broadcastStatusTask: null,\n shutdownTask: null,\n };\n }\n\n private destroySocketServerRuntimeHandle(\n runtimeHandle: SocketServerRuntimeHandle | null,\n ): void {\n if (!runtimeHandle) {\n return;\n }\n\n runtimeHandle.broadcastStatusTask?.destroy();\n runtimeHandle.shutdownTask?.destroy();\n runtimeHandle.broadcastStatusTask = null;\n runtimeHandle.shutdownTask = null;\n runtimeHandle.connectedSocketIds.clear();\n runtimeHandle.initialized = false;\n runtimeHandle.server.close();\n runtimeHandle.server.removeAllListeners();\n }\n\n private createSocketClientRuntimeHandle(url: string): SocketClientRuntimeHandle {\n return {\n url,\n socket: io(url, {\n reconnection: true,\n reconnectionAttempts: 5,\n reconnectionDelay: 2000,\n reconnectionDelayMax: 10000,\n randomizationFactor: 0.5,\n transports: [\"websocket\"],\n autoConnect: false,\n }),\n initialized: false,\n handshake: false,\n errorCount: 0,\n pendingDelegationIds: new Set<string>(),\n pendingTimers: new Set<NodeJS.Timeout>(),\n emitWhenReady: null,\n handshakeTask: null,\n delegateTask: null,\n transmitTask: null,\n };\n }\n\n private destroySocketClientRuntimeHandle(\n runtimeHandle: SocketClientRuntimeHandle | null,\n ): void {\n if (!runtimeHandle) {\n return;\n }\n\n runtimeHandle.initialized = false;\n runtimeHandle.handshake = false;\n runtimeHandle.emitWhenReady = null;\n\n runtimeHandle.handshakeTask?.destroy();\n runtimeHandle.delegateTask?.destroy();\n runtimeHandle.transmitTask?.destroy();\n\n runtimeHandle.handshakeTask = null;\n runtimeHandle.delegateTask = null;\n runtimeHandle.transmitTask = null;\n\n for (const timer of runtimeHandle.pendingTimers) {\n clearTimeout(timer);\n }\n\n runtimeHandle.pendingTimers.clear();\n runtimeHandle.pendingDelegationIds.clear();\n\n runtimeHandle.socket.close();\n runtimeHandle.socket.removeAllListeners();\n }\n\n private normalizeCommunicationTypes(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((item) => String(item))\n .filter((item) => item.trim().length > 0);\n }\n\n private getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n if (typeof error === \"string\") {\n return error;\n }\n\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n }\n\n private pruneDiagnosticsEntries(\n entries: Record<string, SocketClientDiagnosticsState>,\n now = Date.now(),\n ): void {\n for (const [fetchId, state] of Object.entries(entries)) {\n if (state.destroyed && now - state.updatedAt > this.destroyedDiagnosticsTtlMs) {\n delete entries[fetchId];\n }\n }\n\n if (Object.keys(entries).length <= this.diagnosticsMaxClientEntries) {\n return;\n }\n\n const entriesByEvictionPriority = Object.entries(entries).sort((left, right) => {\n if (left[1].destroyed !== right[1].destroyed) {\n return left[1].destroyed ? -1 : 1;\n }\n\n return left[1].updatedAt - right[1].updatedAt;\n });\n\n while (\n Object.keys(entries).length > this.diagnosticsMaxClientEntries &&\n entriesByEvictionPriority.length > 0\n ) {\n const [fetchId] = entriesByEvictionPriority.shift()!;\n delete entries[fetchId];\n }\n }\n\n public async getSocketClientDiagnosticsEntry(\n fetchId: string,\n ): Promise<SocketClientDiagnosticsState | undefined> {\n const normalized = String(fetchId ?? \"\").trim();\n if (!normalized) {\n return undefined;\n }\n\n const snapshot = this.socketClientDiagnosticsActor.getState();\n const entries = { ...snapshot.entries };\n this.pruneDiagnosticsEntries(entries);\n return entries[normalized];\n }\n\n private resolveTransportDiagnosticsOptions(ctx: AnyObject): {\n detailLevel: TransportDetailLevel;\n includeErrorHistory: boolean;\n errorHistoryLimit: number;\n } {\n const detailLevel: TransportDetailLevel =\n ctx.detailLevel === \"full\" ? \"full\" : \"summary\";\n const includeErrorHistory = Boolean(ctx.includeErrorHistory);\n\n const requestedLimit = Number(ctx.errorHistoryLimit);\n const errorHistoryLimit = Number.isFinite(requestedLimit)\n ? Math.max(1, Math.min(200, Math.trunc(requestedLimit)))\n : 10;\n\n return {\n detailLevel,\n includeErrorHistory,\n errorHistoryLimit,\n };\n }\n\n private collectSocketTransportDiagnostics(\n ctx: AnyObject,\n diagnosticsEntries: Record<string, SocketClientDiagnosticsState>,\n ): AnyObject {\n const { detailLevel, includeErrorHistory, errorHistoryLimit } =\n this.resolveTransportDiagnosticsOptions(ctx);\n const serviceName = Cadenza.serviceRegistry.serviceName ?? \"UnknownService\";\n\n const entries = { ...diagnosticsEntries };\n this.pruneDiagnosticsEntries(entries);\n\n const states = Object.values(entries).sort((a, b) =>\n a.fetchId.localeCompare(b.fetchId),\n );\n\n const summary = {\n detailLevel,\n totalClients: states.length,\n connectedClients: states.filter((state) => state.connected).length,\n activeHandshakes: states.filter((state) => state.handshake).length,\n pendingDelegations: states.reduce(\n (acc, state) => acc + state.pendingDelegations,\n 0,\n ),\n pendingTimers: states.reduce((acc, state) => acc + state.pendingTimers, 0),\n reconnectAttempts: states.reduce(\n (acc, state) => acc + state.reconnectAttempts,\n 0,\n ),\n connectErrors: states.reduce((acc, state) => acc + state.connectErrors, 0),\n reconnectErrors: states.reduce((acc, state) => acc + state.reconnectErrors, 0),\n socketErrors: states.reduce((acc, state) => acc + state.socketErrors, 0),\n latestError:\n states\n .slice()\n .sort((a, b) => b.lastErrorAt - a.lastErrorAt)\n .find((state) => state.lastError)?.lastError ?? null,\n };\n\n if (detailLevel === \"summary\") {\n return {\n transportDiagnostics: {\n [serviceName]: {\n socketClient: summary,\n },\n },\n };\n }\n\n const clients = states.map((state) => {\n const details: AnyObject = {\n fetchId: state.fetchId,\n serviceName: state.serviceName,\n url: state.url,\n socketId: state.socketId,\n connected: state.connected,\n handshake: state.handshake,\n reconnectAttempts: state.reconnectAttempts,\n connectErrors: state.connectErrors,\n reconnectErrors: state.reconnectErrors,\n socketErrors: state.socketErrors,\n pendingDelegations: state.pendingDelegations,\n pendingTimers: state.pendingTimers,\n destroyed: state.destroyed,\n lastHandshakeAt: state.lastHandshakeAt,\n lastHandshakeError: state.lastHandshakeError,\n lastDisconnectAt: state.lastDisconnectAt,\n latestError: state.lastError,\n };\n\n if (includeErrorHistory) {\n details.errorHistory = state.errorHistory.slice(-errorHistoryLimit);\n }\n\n return details;\n });\n\n return {\n transportDiagnostics: {\n [serviceName]: {\n socketClient: {\n ...summary,\n clients,\n },\n },\n },\n };\n }\n}\n","type WaitOutcome<TError> =\n | { ok: true }\n | { ok: false; error: TError };\n\ntype SocketLike = {\n connected?: boolean;\n once: (event: string, listener: (...args: any[]) => void) => any;\n off: (event: string, listener: (...args: any[]) => void) => any;\n};\n\n/**\n * Waits for a socket to become connected with explicit timeout/error outcomes.\n * Ensures listeners are removed in all exit paths to avoid accumulation across retries.\n */\nexport const waitForSocketConnection = async <TError>(\n socket: SocketLike | null,\n timeoutMs: number,\n createError: (reason: \"connect_timeout\" | \"connect_error\" | \"disconnected\", error?: unknown) => TError,\n): Promise<WaitOutcome<TError>> => {\n if (!socket) {\n return { ok: false, error: createError(\"disconnected\") };\n }\n\n if (socket.connected) {\n return { ok: true };\n }\n\n return new Promise((resolve) => {\n let timer: NodeJS.Timeout | null = null;\n let settled = false;\n\n const cleanup = () => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n socket.off(\"connect\", onConnect);\n socket.off(\"connect_error\", onConnectError);\n socket.off(\"disconnect\", onDisconnect);\n };\n\n const settle = (outcome: WaitOutcome<TError>) => {\n if (settled) return;\n settled = true;\n cleanup();\n resolve(outcome);\n };\n\n const onConnect = () => settle({ ok: true });\n const onConnectError = (error: unknown) =>\n settle({ ok: false, error: createError(\"connect_error\", error) });\n const onDisconnect = () =>\n settle({ ok: false, error: createError(\"disconnected\") });\n\n socket.once(\"connect\", onConnect);\n socket.once(\"connect_error\", onConnectError);\n socket.once(\"disconnect\", onDisconnect);\n\n timer = setTimeout(() => {\n settle({ ok: false, error: createError(\"connect_timeout\") });\n }, timeoutMs);\n });\n};\n","export const EXECUTION_PERSISTENCE_BUNDLE_SIGNAL =\n \"global.meta.execution_persistence.bundle_requested\";\n\nexport type ExecutionPersistenceEnsureEntityType =\n | \"execution_trace\"\n | \"routine_execution\"\n | \"signal_emission\"\n | \"inquiry\"\n | \"task_execution\";\n\nexport type ExecutionPersistenceUpdateEntityType =\n | \"routine_execution\"\n | \"task_execution\"\n | \"inquiry\";\n\nexport type ExecutionPersistenceEntityType =\n | ExecutionPersistenceEnsureEntityType\n | ExecutionPersistenceUpdateEntityType;\n\nexport interface ExecutionPersistenceEnsureEvent {\n kind: \"ensure\";\n entityType: ExecutionPersistenceEnsureEntityType;\n entityId: string;\n data: Record<string, any>;\n deps: string[];\n}\n\nexport interface ExecutionPersistenceUpdateEvent {\n kind: \"update\";\n entityType: ExecutionPersistenceUpdateEntityType;\n entityId: string;\n data: Record<string, any>;\n filter: Record<string, any>;\n deps: string[];\n}\n\nexport type ExecutionPersistenceEvent =\n | ExecutionPersistenceEnsureEvent\n | ExecutionPersistenceUpdateEvent;\n\nexport interface ExecutionPersistenceBundle {\n traceId: string;\n ensures: ExecutionPersistenceEnsureEvent[];\n updates: ExecutionPersistenceUpdateEvent[];\n}\n\nfunction readString(value: unknown): string | null {\n return typeof value === \"string\" && value.trim().length > 0 ? value : null;\n}\n\nfunction readRecord(value: unknown): Record<string, any> | null {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? ({ ...(value as Record<string, any>) } as Record<string, any>)\n : null;\n}\n\nfunction normalizeRoutineExecutionTraceFields(\n data: Record<string, any> | null,\n): Record<string, any> | null {\n if (!data) {\n return null;\n }\n\n const normalizedData = { ...data };\n const traceId = readString(\n normalizedData.execution_trace_id ?? normalizedData.executionTraceId,\n );\n const metaContext =\n readRecord(normalizedData.meta_context) ?? readRecord(normalizedData.metaContext);\n const isMeta =\n normalizedData.is_meta === true || normalizedData.isMeta === true;\n const serviceName = readString(\n normalizedData.service_name ?? normalizedData.serviceName,\n );\n const serviceInstanceId = readString(\n normalizedData.service_instance_id ?? normalizedData.serviceInstanceId,\n );\n\n if (traceId) {\n normalizedData.execution_trace_id = traceId;\n }\n if (metaContext) {\n normalizedData.meta_context = metaContext;\n }\n if (normalizedData.is_meta !== undefined || normalizedData.isMeta !== undefined) {\n normalizedData.is_meta = isMeta;\n }\n if (serviceName) {\n normalizedData.service_name = serviceName;\n }\n if (serviceInstanceId) {\n normalizedData.service_instance_id = serviceInstanceId;\n } else if (\n normalizedData.serviceInstanceId === null ||\n normalizedData.service_instance_id === null\n ) {\n normalizedData.service_instance_id = null;\n }\n\n delete normalizedData.executionTraceId;\n delete normalizedData.traceId;\n delete normalizedData.metaContext;\n delete normalizedData.isMeta;\n delete normalizedData.serviceName;\n delete normalizedData.serviceInstanceId;\n return normalizedData;\n}\n\nfunction stripExecutionTraceServiceInstanceFields(\n data: Record<string, any> | null,\n): Record<string, any> | null {\n if (!data) {\n return null;\n }\n\n const normalizedData = { ...data };\n delete normalizedData.serviceInstanceId;\n delete normalizedData.service_instance_id;\n return normalizedData;\n}\n\nfunction normalizeEnsureData(\n entityType: ExecutionPersistenceEnsureEntityType,\n data: Record<string, any> | null,\n): Record<string, any> | null {\n switch (entityType) {\n case \"execution_trace\":\n return stripExecutionTraceServiceInstanceFields(data);\n case \"routine_execution\":\n return normalizeRoutineExecutionTraceFields(data);\n default:\n return data;\n }\n}\n\nexport function buildExecutionPersistenceDependency(\n entityType: ExecutionPersistenceEnsureEntityType,\n entityId: string | null | undefined,\n): string | null {\n const normalizedEntityId = readString(entityId);\n return normalizedEntityId ? `${entityType}:${normalizedEntityId}` : null;\n}\n\nfunction resolveEnsureEntityId(\n entityType: ExecutionPersistenceEnsureEntityType,\n data: Record<string, any>,\n): string | null {\n switch (entityType) {\n default:\n return readString(data.uuid);\n }\n}\n\nfunction resolveUpdateEntityId(\n _entityType: ExecutionPersistenceUpdateEntityType,\n data: Record<string, any>,\n filter: Record<string, any>,\n): string | null {\n return readString(\n filter.uuid ??\n filter.taskExecutionId ??\n filter.task_execution_id ??\n data.uuid ??\n data.taskExecutionId ??\n data.task_execution_id,\n );\n}\n\nfunction dedupeDependencies(values: Array<string | null | undefined>): string[] {\n return Array.from(\n new Set(values.filter((value): value is string => typeof value === \"string\")),\n );\n}\n\nfunction resolveTraceIdFromData(data: Record<string, any> | null): string | null {\n if (!data) {\n return null;\n }\n\n return readString(\n data.traceId ??\n data.executionTraceId ??\n data.execution_trace_id ??\n data.metaContext?.__executionTraceId ??\n data.metaContext?.__metadata?.__executionTraceId ??\n data.meta_context?.__executionTraceId ??\n data.meta_context?.__metadata?.__executionTraceId,\n );\n}\n\nexport function buildExecutionPersistenceEnsureEvent(\n entityType: ExecutionPersistenceEnsureEntityType,\n data: Record<string, any> | null | undefined,\n deps: Array<string | null | undefined> = [],\n): ExecutionPersistenceEnsureEvent | null {\n const normalizedData = normalizeEnsureData(entityType, readRecord(data));\n if (!normalizedData) {\n return null;\n }\n\n const entityId = resolveEnsureEntityId(entityType, normalizedData);\n if (!entityId) {\n return null;\n }\n\n return {\n kind: \"ensure\",\n entityType,\n entityId,\n data: normalizedData,\n deps: dedupeDependencies(deps),\n };\n}\n\nexport function buildExecutionPersistenceUpdateEvent(\n entityType: ExecutionPersistenceUpdateEntityType,\n data: Record<string, any> | null | undefined,\n filter: Record<string, any> | null | undefined,\n deps: Array<string | null | undefined> = [],\n): ExecutionPersistenceUpdateEvent | null {\n const normalizedData = readRecord(data);\n const normalizedFilter = readRecord(filter);\n if (!normalizedData || !normalizedFilter) {\n return null;\n }\n\n const entityId = resolveUpdateEntityId(\n entityType,\n normalizedData,\n normalizedFilter,\n );\n if (!entityId) {\n return null;\n }\n\n return {\n kind: \"update\",\n entityType,\n entityId,\n data: normalizedData,\n filter: normalizedFilter,\n deps: dedupeDependencies(deps),\n };\n}\n\nexport function createExecutionPersistenceBundle(input: {\n traceId?: string | null;\n ensures?: Array<ExecutionPersistenceEnsureEvent | null | undefined>;\n updates?: Array<ExecutionPersistenceUpdateEvent | null | undefined>;\n}): ExecutionPersistenceBundle | null {\n const ensures = (input.ensures ?? []).filter(\n (event): event is ExecutionPersistenceEnsureEvent => Boolean(event),\n );\n const updates = (input.updates ?? []).filter(\n (event): event is ExecutionPersistenceUpdateEvent => Boolean(event),\n );\n\n if (ensures.length === 0 && updates.length === 0) {\n return null;\n }\n\n const traceId =\n readString(input.traceId) ??\n ensures\n .map((event) => resolveTraceIdFromData(event.data))\n .find((value): value is string => Boolean(value)) ??\n updates\n .map((event) => resolveTraceIdFromData(event.data))\n .find((value): value is string => Boolean(value));\n\n if (!traceId) {\n return null;\n }\n\n return {\n traceId,\n ensures,\n updates,\n };\n}\n","import Cadenza from \"../Cadenza\";\nimport {\n buildExecutionPersistenceDependency,\n buildExecutionPersistenceEnsureEvent,\n createExecutionPersistenceBundle,\n EXECUTION_PERSISTENCE_BUNDLE_SIGNAL,\n} from \"../execution/ExecutionPersistenceCoordinator\";\nimport { decomposeSignalName } from \"../utils/tools\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n resolveRoutinePersistenceMetadata,\n stripLocalRoutinePersistenceHints,\n splitRoutinePersistenceContext,\n} from \"../utils/routinePersistence\";\n\nfunction resolveExecutionObservabilityServiceInstanceId(): string | null {\n return Cadenza.hasCompletedBootstrapSync()\n ? (Cadenza.serviceRegistry.serviceInstanceId ?? null)\n : null;\n}\n\nfunction buildSignalDatabaseTriggerContext(\n data: Record<string, unknown>,\n): Record<string, unknown> {\n const onConflict = {\n target: [\"name\"],\n action: {\n do: \"nothing\" as const,\n },\n };\n\n return {\n data: { ...data },\n onConflict,\n queryData: {\n data: { ...data },\n onConflict,\n },\n };\n}\n\nfunction isForeignSignalEmissionOrigin(\n signalEmission: Record<string, any>,\n): boolean {\n const localServiceName = Cadenza.serviceRegistry.serviceName ?? null;\n const localServiceInstanceId = Cadenza.serviceRegistry.serviceInstanceId ?? null;\n const originServiceName =\n typeof signalEmission.serviceName === \"string\"\n ? signalEmission.serviceName\n : typeof signalEmission.service_name === \"string\"\n ? signalEmission.service_name\n : null;\n const originServiceInstanceId =\n typeof signalEmission.serviceInstanceId === \"string\"\n ? signalEmission.serviceInstanceId\n : typeof signalEmission.service_instance_id === \"string\"\n ? signalEmission.service_instance_id\n : null;\n\n if (originServiceInstanceId && localServiceInstanceId) {\n return originServiceInstanceId !== localServiceInstanceId;\n }\n\n if (originServiceName && localServiceName) {\n return originServiceName !== localServiceName;\n }\n\n return false;\n}\n\n/**\n * SignalController is a singleton class that manages signal registration, transmission,\n * and metadata handling within a service instance.\n *\n * This class utilizes the Cadenza framework to handle various tasks related to signals,\n * such as registering signals, transmitting signals to remote services, adding metadata,\n * and maintaining clean-forwarding and processing of signals.\n *\n * Features:\n * - Ensures signals are properly registered and metadata is propagated.\n * - Handles foreign signal registration for cross-service communication.\n * - Forwards signal observations and manages their metadata.\n * - Adds metadata during signal emission and consumption.\n * - Implements a meta-task-based system for handling complex workflows.\n *\n * Constructor initializes the necessary meta-tasks and tasks required for signal management.\n */\nexport default class SignalController {\n private static _instance: SignalController;\n public static get instance(): SignalController {\n if (!this._instance) this._instance = new SignalController();\n return this._instance;\n }\n\n /**\n * Constructor method for initializing the signal registration and data transmission process.\n * This method defines multiple meta tasks to manage signals, forwarding, and adding metadata\n * for service instances in a distributed system.\n *\n * Some key functionalities include:\n * - Registering signals from a service instance.\n * - Handling foreign signal registration from remote services.\n * - Forwarding signal observations between services.\n * - Adding metadata to signal emissions for better traceability.\n * - Adding metadata to signal consumption events.\n *\n * It serves as an initializer for signals and tasks.\n */\n constructor() {\n Cadenza.createMetaTask(\n \"Handle Signal Registration\",\n (ctx, emit) => {\n if (!Cadenza.hasCompletedBootstrapSync()) {\n return false;\n }\n\n const { signalName } = ctx;\n const signalObserver = (Cadenza.signalBroker as any).signalObservers?.get(\n signalName,\n );\n\n if (signalObserver?.registered || signalObserver?.registrationRequested) {\n return false;\n }\n\n if (signalObserver) {\n signalObserver.registrationRequested = true;\n }\n\n const { isMeta, isGlobal, domain, action } =\n decomposeSignalName(signalName);\n\n emit(\n \"global.meta.signal_controller.signal_added\",\n buildSignalDatabaseTriggerContext({\n name: signalName,\n is_global: isGlobal,\n domain,\n action,\n is_meta: isMeta,\n }),\n );\n\n return ctx;\n },\n \"Handles signal registration from a service instance\",\n )\n .doOn(\"meta.signal_broker.added\")\n .attachSignal(\"global.meta.signal_controller.signal_added\");\n\n Cadenza.createMetaTask(\n \"Prepare signal emission persistence\",\n (ctx, emit) => {\n const signalEmission = ctx.__signalEmission;\n delete ctx.__signalEmission;\n\n if (!signalEmission) {\n return false;\n }\n\n if (\n typeof signalEmission.signalName === \"string\" &&\n signalEmission.signalName.trim().length > 0 &&\n !(Cadenza.signalBroker as any).signalObservers?.has(signalEmission.signalName)\n ) {\n Cadenza.signalBroker.addSignal(signalEmission.signalName);\n } else {\n const signalObserver = (Cadenza.signalBroker as any).signalObservers?.get(\n signalEmission.signalName,\n );\n\n if (\n signalObserver &&\n signalObserver.registered !== true &&\n signalObserver.registrationRequested !== true &&\n Cadenza.hasCompletedBootstrapSync()\n ) {\n signalObserver.registrationRequested = true;\n const { isMeta, isGlobal, domain, action } = decomposeSignalName(\n signalEmission.signalName,\n );\n emit(\n \"global.meta.signal_controller.signal_added\",\n buildSignalDatabaseTriggerContext({\n name: signalEmission.signalName,\n is_global: isGlobal,\n domain,\n action,\n is_meta: isMeta,\n }),\n );\n }\n }\n\n const traceContext = { ...ctx };\n delete traceContext.__traceCreatedBySignalBroker;\n const sanitizedTraceContext = stripLocalRoutinePersistenceHints(traceContext);\n const routineMetadata = resolveRoutinePersistenceMetadata(traceContext);\n const { context: routineContext, metaContext: routineMetaContext } =\n splitRoutinePersistenceContext(traceContext);\n const traceCreatedBySignalBroker =\n ctx.__traceCreatedBySignalBroker === true ||\n signalEmission.__traceCreatedBySignalBroker === true;\n\n const signalEmissionRow = {\n uuid: signalEmission.uuid,\n signal_name: signalEmission.signalName,\n signal_tag: signalEmission.signalTag,\n task_name: signalEmission.taskName,\n task_version: signalEmission.taskVersion,\n task_execution_id: signalEmission.taskExecutionId,\n is_meta: signalEmission.isMeta,\n is_metric: signalEmission.isMetric ?? false,\n routine_execution_id: signalEmission.routineExecutionId,\n execution_trace_id: signalEmission.executionTraceId,\n context: sanitizedTraceContext,\n metadata: signalEmission,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id: resolveExecutionObservabilityServiceInstanceId(),\n };\n\n if (signalEmission.isMeta === true) {\n return false;\n }\n\n if (isForeignSignalEmissionOrigin(signalEmission as Record<string, any>)) {\n return false;\n }\n\n const executionTraceRow =\n traceCreatedBySignalBroker\n ? {\n uuid: signalEmission.executionTraceId,\n issuer_type: \"service\",\n issuer_id:\n traceContext.__metadata?.__issuerId ??\n traceContext.__issuerId ??\n null,\n issued_at: signalEmission.emittedAt,\n intent:\n traceContext.__metadata?.__intent ??\n traceContext.__intent ??\n null,\n context: {\n id: uuid(),\n context: traceContext,\n },\n is_meta: signalEmission.isMeta,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id: null,\n }\n : null;\n\n const routineExecutionRow =\n signalEmission.routineExecutionId &&\n routineMetadata.createdByRunner &&\n routineMetadata.routineName\n ? {\n uuid: signalEmission.routineExecutionId,\n name: routineMetadata.routineName,\n execution_trace_id: signalEmission.executionTraceId,\n context: routineContext,\n meta_context: routineMetaContext,\n created:\n routineMetadata.routineCreatedAt ?? signalEmission.emittedAt,\n is_meta: routineMetadata.routineIsMeta,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id:\n resolveExecutionObservabilityServiceInstanceId(),\n }\n : null;\n\n return {\n ...traceContext,\n __traceCreatedBySignalBroker: traceCreatedBySignalBroker,\n __signalEmissionRow: signalEmissionRow,\n ...(routineExecutionRow\n ? { __routineExecutionRow: routineExecutionRow }\n : {}),\n ...(executionTraceRow\n ? { __executionTraceRow: executionTraceRow }\n : {}),\n };\n },\n \"\",\n { isSubMeta: true, concurrency: 100 },\n ).doOn(\"sub_meta.signal_broker.emitting_signal\");\n\n const emitSignalEmissionPersistenceBundleTask = Cadenza.createMetaTask(\n \"Emit signal emission persistence bundle\",\n (ctx) => {\n const signalEmissionRow =\n ctx.__signalEmissionRow && typeof ctx.__signalEmissionRow === \"object\"\n ? ({ ...ctx.__signalEmissionRow } as Record<string, any>)\n : null;\n const executionTraceRow =\n ctx.__executionTraceRow && typeof ctx.__executionTraceRow === \"object\"\n ? ({ ...ctx.__executionTraceRow } as Record<string, any>)\n : null;\n const routineExecutionRow =\n ctx.__routineExecutionRow && typeof ctx.__routineExecutionRow === \"object\"\n ? ({ ...ctx.__routineExecutionRow } as Record<string, any>)\n : null;\n\n if (!signalEmissionRow) {\n return false;\n }\n\n return (\n createExecutionPersistenceBundle({\n traceId:\n signalEmissionRow.executionTraceId ??\n signalEmissionRow.execution_trace_id ??\n executionTraceRow?.uuid ??\n null,\n ensures: [\n buildExecutionPersistenceEnsureEvent(\n \"execution_trace\",\n executionTraceRow,\n ),\n buildExecutionPersistenceEnsureEvent(\n \"routine_execution\",\n routineExecutionRow,\n [\n buildExecutionPersistenceDependency(\n \"execution_trace\",\n routineExecutionRow?.executionTraceId ??\n routineExecutionRow?.execution_trace_id,\n ),\n ],\n ),\n buildExecutionPersistenceEnsureEvent(\"signal_emission\", signalEmissionRow, [\n buildExecutionPersistenceDependency(\n \"execution_trace\",\n signalEmissionRow.executionTraceId ??\n signalEmissionRow.execution_trace_id,\n ),\n buildExecutionPersistenceDependency(\n \"routine_execution\",\n signalEmissionRow.routineExecutionId ??\n signalEmissionRow.routine_execution_id,\n ),\n buildExecutionPersistenceDependency(\n \"task_execution\",\n signalEmissionRow.taskExecutionId ??\n signalEmissionRow.task_execution_id,\n ),\n ]),\n ],\n }) ?? false\n );\n },\n \"Emits one authority-routed execution persistence bundle for a signal emission.\",\n { isSubMeta: true, concurrency: 100 },\n ).emits(EXECUTION_PERSISTENCE_BUNDLE_SIGNAL);\n\n Cadenza.get(\"Prepare signal emission persistence\")?.then(\n emitSignalEmissionPersistenceBundleTask,\n );\n }\n}\n","import type {\n RuntimeValidationPolicy,\n RuntimeValidationScope,\n} from \"@cadenza.io/core\";\nimport Cadenza from \"../Cadenza\";\n\nexport const RUNTIME_VALIDATION_INTENTS = {\n getPolicy: \"meta-runtime-validation-policy-get\",\n setPolicy: \"meta-runtime-validation-policy-set\",\n replacePolicy: \"meta-runtime-validation-policy-replace\",\n clearPolicy: \"meta-runtime-validation-policy-clear\",\n listScopes: \"meta-runtime-validation-scope-list\",\n upsertScope: \"meta-runtime-validation-scope-upsert\",\n removeScope: \"meta-runtime-validation-scope-remove\",\n clearScopes: \"meta-runtime-validation-scope-clear\",\n} as const;\n\nexport const RUNTIME_VALIDATION_SIGNALS = {\n setPolicyRequested: \"meta.runtime_validation.policy_set_requested\",\n replacePolicyRequested: \"meta.runtime_validation.policy_replace_requested\",\n clearPolicyRequested: \"meta.runtime_validation.policy_clear_requested\",\n upsertScopeRequested: \"meta.runtime_validation.scope_upsert_requested\",\n removeScopeRequested: \"meta.runtime_validation.scope_remove_requested\",\n clearScopesRequested: \"meta.runtime_validation.scope_clear_requested\",\n policyUpdated: \"meta.runtime_validation.policy_updated\",\n policyCleared: \"meta.runtime_validation.policy_cleared\",\n scopeUpserted: \"meta.runtime_validation.scope_upserted\",\n scopeRemoved: \"meta.runtime_validation.scope_removed\",\n scopesCleared: \"meta.runtime_validation.scopes_cleared\",\n} as const;\n\nfunction normalizePolicyContext(ctx: Record<string, any>): RuntimeValidationPolicy {\n const source =\n ctx.policy && typeof ctx.policy === \"object\" && !Array.isArray(ctx.policy)\n ? ctx.policy\n : ctx;\n const policy: RuntimeValidationPolicy = {};\n\n for (const key of [\n \"metaInput\",\n \"metaOutput\",\n \"businessInput\",\n \"businessOutput\",\n \"warnOnMissingMetaInputSchema\",\n \"warnOnMissingMetaOutputSchema\",\n \"warnOnMissingBusinessInputSchema\",\n \"warnOnMissingBusinessOutputSchema\",\n ] as const) {\n if (source[key] !== undefined) {\n policy[key] = source[key];\n }\n }\n\n return policy;\n}\n\nfunction normalizeScopeContext(ctx: Record<string, any>): RuntimeValidationScope {\n const source =\n ctx.scope && typeof ctx.scope === \"object\" && !Array.isArray(ctx.scope)\n ? ctx.scope\n : ctx;\n\n return {\n id: source.id,\n active: source.active,\n startTaskNames: Array.isArray(source.startTaskNames)\n ? source.startTaskNames\n : undefined,\n startRoutineNames: Array.isArray(source.startRoutineNames)\n ? source.startRoutineNames\n : undefined,\n policy:\n source.policy && typeof source.policy === \"object\"\n ? normalizePolicyContext({ policy: source.policy })\n : undefined,\n };\n}\n\nexport default class RuntimeValidationController {\n private static _instance: RuntimeValidationController;\n\n public static get instance(): RuntimeValidationController {\n if (!this._instance) {\n this._instance = new RuntimeValidationController();\n }\n\n return this._instance;\n }\n\n constructor() {\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.getPolicy,\n description: \"Get the active runtime validation policy.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.setPolicy,\n description: \"Merge fields into the active runtime validation policy.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.replacePolicy,\n description: \"Replace the active runtime validation policy.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.clearPolicy,\n description: \"Clear the active runtime validation policy.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.listScopes,\n description: \"List active runtime validation scopes.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.upsertScope,\n description:\n \"Create or update a runtime validation scope for targeted subflow validation.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.removeScope,\n description: \"Remove a runtime validation scope by id.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n Cadenza.defineIntent({\n name: RUNTIME_VALIDATION_INTENTS.clearScopes,\n description: \"Clear all runtime validation scopes.\",\n input: { type: \"object\" },\n output: { type: \"object\" },\n });\n\n Cadenza.createMetaTask(\"Get runtime validation policy\", () => {\n return {\n policy: Cadenza.getRuntimeValidationPolicy(),\n };\n }).respondsTo(RUNTIME_VALIDATION_INTENTS.getPolicy);\n\n Cadenza.createMetaTask(\n \"Set runtime validation policy\",\n (ctx, emit) => {\n const policy = normalizePolicyContext(ctx);\n const nextPolicy = Cadenza.setRuntimeValidationPolicy(policy);\n emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {\n policy: nextPolicy,\n });\n return {\n policy: nextPolicy,\n };\n },\n \"Merges runtime validation policy fields at runtime.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.setPolicy)\n .doOn(RUNTIME_VALIDATION_SIGNALS.setPolicyRequested);\n\n Cadenza.createMetaTask(\n \"Replace runtime validation policy\",\n (ctx, emit) => {\n const policy = normalizePolicyContext(ctx);\n const nextPolicy = Cadenza.replaceRuntimeValidationPolicy(policy);\n emit(RUNTIME_VALIDATION_SIGNALS.policyUpdated, {\n policy: nextPolicy,\n });\n return {\n policy: nextPolicy,\n };\n },\n \"Replaces runtime validation policy fields at runtime.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.replacePolicy)\n .doOn(RUNTIME_VALIDATION_SIGNALS.replacePolicyRequested);\n\n Cadenza.createMetaTask(\n \"Clear runtime validation policy\",\n (_ctx, emit) => {\n Cadenza.clearRuntimeValidationPolicy();\n emit(RUNTIME_VALIDATION_SIGNALS.policyCleared, {});\n return {\n policy: Cadenza.getRuntimeValidationPolicy(),\n };\n },\n \"Clears the runtime validation policy.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.clearPolicy)\n .doOn(RUNTIME_VALIDATION_SIGNALS.clearPolicyRequested);\n\n Cadenza.createMetaTask(\"List runtime validation scopes\", () => {\n return {\n scopes: Cadenza.getRuntimeValidationScopes(),\n };\n }).respondsTo(RUNTIME_VALIDATION_INTENTS.listScopes);\n\n Cadenza.createMetaTask(\n \"Upsert runtime validation scope\",\n (ctx, emit) => {\n const scope = normalizeScopeContext(ctx);\n const nextScope = Cadenza.upsertRuntimeValidationScope(scope);\n emit(RUNTIME_VALIDATION_SIGNALS.scopeUpserted, {\n scope: nextScope,\n });\n return {\n scope: nextScope,\n };\n },\n \"Upserts a runtime validation scope for targeted debugging.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.upsertScope)\n .doOn(RUNTIME_VALIDATION_SIGNALS.upsertScopeRequested);\n\n Cadenza.createMetaTask(\n \"Remove runtime validation scope\",\n (ctx, emit) => {\n if (!ctx.id) {\n throw new Error(\"Runtime validation scope id is required\");\n }\n\n Cadenza.removeRuntimeValidationScope(ctx.id);\n emit(RUNTIME_VALIDATION_SIGNALS.scopeRemoved, {\n id: ctx.id,\n });\n return {\n id: ctx.id,\n scopes: Cadenza.getRuntimeValidationScopes(),\n };\n },\n \"Removes a runtime validation scope.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.removeScope)\n .doOn(RUNTIME_VALIDATION_SIGNALS.removeScopeRequested);\n\n Cadenza.createMetaTask(\n \"Clear runtime validation scopes\",\n (_ctx, emit) => {\n Cadenza.clearRuntimeValidationScopes();\n emit(RUNTIME_VALIDATION_SIGNALS.scopesCleared, {});\n return {\n scopes: Cadenza.getRuntimeValidationScopes(),\n };\n },\n \"Clears all runtime validation scopes.\",\n )\n .respondsTo(RUNTIME_VALIDATION_INTENTS.clearScopes)\n .doOn(RUNTIME_VALIDATION_SIGNALS.clearScopesRequested);\n }\n}\n","import { META_ACTOR_SESSION_STATE_PERSIST_INTENT } from \"@cadenza.io/core\";\nimport Cadenza from \"../../Cadenza\";\n\nconst ACTOR_SESSION_STATE_PERSIST_CONCURRENCY = 20;\nconst ACTOR_SESSION_TRACE_ENABLED =\n process.env.CADENZA_ACTOR_SESSION_TRACE === \"1\" ||\n process.env.CADENZA_ACTOR_SESSION_TRACE === \"true\";\n\nfunction shouldAssumeSuccessfulActorSessionRowCount(ctx: Record<string, any>): boolean {\n return (\n ctx.__success === true &&\n ctx.rowCount === undefined &&\n ctx.__status === \"success\" &&\n ctx.__serviceName === \"CadenzaDB\" &&\n ctx.__localTaskName === \"Insert actor_session_state in CadenzaDB\"\n );\n}\n\nexport function registerActorSessionPersistenceTasks(): void {\n if (Cadenza.get(\"Persist actor session state\")) {\n return;\n }\n\n const localActorSessionTaskOptions = {\n register: false,\n isHidden: true,\n isSubMeta: true,\n concurrency: ACTOR_SESSION_STATE_PERSIST_CONCURRENCY,\n } as const;\n\n const actorSessionStateInsertTask =\n Cadenza.getLocalCadenzaDBInsertTask(\"actor_session_state\") ??\n Cadenza.get(\"dbInsertActorSessionState\") ??\n Cadenza.get(\"Insert actor_session_state in CadenzaDB\") ??\n Cadenza.createCadenzaDBInsertTask(\n \"actor_session_state\",\n {},\n {\n concurrency: ACTOR_SESSION_STATE_PERSIST_CONCURRENCY,\n isSubMeta: true,\n },\n );\n\n const validateActorSessionStatePersistenceTask =\n Cadenza.createMetaTask(\n \"Validate actor session state persistence\",\n (ctx) => {\n if (ctx.errored || ctx.failed || ctx.__success !== true) {\n throw new Error(\n String(\n ctx.__error ??\n ctx.error ??\n \"actor_session_state persistence query failed\",\n ),\n );\n }\n\n const rowCount = shouldAssumeSuccessfulActorSessionRowCount(ctx)\n ? 1\n : Number(ctx.rowCount ?? 0);\n if (!Number.isFinite(rowCount) || rowCount <= 0) {\n throw new Error(\n \"actor_session_state persistence did not affect any rows (possible stale durable_version)\",\n );\n }\n\n return {\n __success: true,\n persisted: true,\n actor_name: ctx.actor_name,\n actor_version: ctx.actor_version,\n actor_key: ctx.actor_key,\n service_name: ctx.service_name,\n durable_version: ctx.durable_version,\n rowCount,\n };\n },\n \"Enforces strict actor session persistence success contract.\",\n localActorSessionTaskOptions,\n );\n\n const insertAndValidateActorSessionStateTask = actorSessionStateInsertTask.then(\n validateActorSessionStatePersistenceTask,\n );\n\n Cadenza.createMetaTask(\n \"Persist actor session state\",\n (ctx) => {\n const actorName =\n typeof ctx.actor_name === \"string\" ? ctx.actor_name.trim() : \"\";\n const actorKey =\n typeof ctx.actor_key === \"string\" ? ctx.actor_key.trim() : \"\";\n const actorVersion = Number(ctx.actor_version ?? 1);\n const durableVersion = Number(ctx.durable_version);\n\n if (!actorName) {\n throw new Error(\"actor_name is required for actor session persistence\");\n }\n\n if (!actorKey) {\n throw new Error(\"actor_key is required for actor session persistence\");\n }\n\n if (!Number.isInteger(actorVersion) || actorVersion < 1) {\n throw new Error(\"actor_version must be a positive integer\");\n }\n\n if (!Number.isInteger(durableVersion) || durableVersion < 0) {\n throw new Error(\"durable_version must be a non-negative integer\");\n }\n\n if (\n typeof ctx.durable_state !== \"object\" ||\n ctx.durable_state === null ||\n Array.isArray(ctx.durable_state)\n ) {\n throw new Error(\"durable_state must be a non-null object\");\n }\n\n const serviceName = Cadenza.serviceRegistry.serviceName;\n if (!serviceName) {\n throw new Error(\"service_name is not available for actor session persistence\");\n }\n\n let expiresAt: string | null = null;\n if (ctx.expires_at !== undefined && ctx.expires_at !== null) {\n if (ctx.expires_at instanceof Date) {\n expiresAt = ctx.expires_at.toISOString();\n } else if (\n typeof ctx.expires_at === \"string\" &&\n ctx.expires_at.trim().length > 0\n ) {\n expiresAt = ctx.expires_at;\n } else {\n throw new Error(\"expires_at must be null, Date, or non-empty string\");\n }\n }\n\n const updatedAt = new Date().toISOString();\n const persistenceRow = {\n actor_name: actorName,\n actor_version: actorVersion,\n actor_key: actorKey,\n service_name: serviceName,\n durable_state: ctx.durable_state,\n durable_version: durableVersion,\n expires_at: expiresAt,\n updated: updatedAt,\n };\n\n if (ACTOR_SESSION_TRACE_ENABLED) {\n console.log(\"[CADENZA_ACTOR_SESSION_TRACE] prepare_actor_session_persistence\", {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n actor_name: actorName,\n actor_key: actorKey,\n durable_version: durableVersion,\n inputKeys: Object.keys(ctx),\n dataKeys: Object.keys(persistenceRow),\n });\n }\n\n return {\n ...ctx,\n actor_name: actorName,\n actor_key: actorKey,\n actor_version: actorVersion,\n durable_version: durableVersion,\n expires_at: expiresAt,\n service_name: serviceName,\n data: persistenceRow,\n queryData: {\n data: persistenceRow,\n onConflict: {\n target: [\n \"actor_name\",\n \"actor_version\",\n \"actor_key\",\n \"service_name\",\n ],\n action: {\n do: \"update\",\n set: {\n durable_state: \"excluded\",\n durable_version: \"excluded\",\n expires_at: \"excluded\",\n updated: \"excluded\",\n },\n where:\n \"actor_session_state.durable_version <= excluded.durable_version\",\n },\n },\n },\n };\n },\n \"Validates and prepares actor_session_state payload for strict write-through persistence.\",\n localActorSessionTaskOptions,\n )\n .then(insertAndValidateActorSessionStateTask)\n .respondsTo(META_ACTOR_SESSION_STATE_PERSIST_INTENT);\n}\n","import Cadenza from \"../../Cadenza\";\nimport {\n META_ACTOR_SESSION_STATE_PERSIST_INTENT,\n Task,\n} from \"@cadenza.io/core\";\nimport ServiceRegistry from \"../../registry/ServiceRegistry\";\nimport { decomposeSignalName, formatTimestamp } from \"../../utils/tools\";\nimport { isMetaIntentName } from \"../../utils/inquiry\";\nimport { v4 as uuid } from \"uuid\";\n\ntype ActorTaskRuntimeMetadata = {\n actorName: string;\n actorDescription?: string;\n actorKind: \"standard\" | \"meta\";\n mode: \"read\" | \"write\" | \"meta\";\n forceMeta: boolean;\n};\n\nconst ACTOR_TASK_METADATA = Symbol.for(\"@cadenza.io/core/actor-task-meta\");\n\nfunction getActorTaskRuntimeMetadata(\n taskFunction: unknown,\n): ActorTaskRuntimeMetadata | undefined {\n if (typeof taskFunction !== \"function\") {\n return undefined;\n }\n\n return (taskFunction as { [ACTOR_TASK_METADATA]?: ActorTaskRuntimeMetadata })[\n ACTOR_TASK_METADATA\n ];\n}\n\nfunction sanitizeActorMetadataValue(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n if (value === undefined || typeof value === \"function\") {\n return undefined;\n }\n if (Array.isArray(value)) {\n const items: unknown[] = [];\n for (const item of value) {\n const sanitizedItem = sanitizeActorMetadataValue(item);\n if (sanitizedItem !== undefined) {\n items.push(sanitizedItem);\n }\n }\n return items;\n }\n if (typeof value === \"object\") {\n const output: Record<string, unknown> = {};\n for (const [key, nestedValue] of Object.entries(value)) {\n const sanitizedNestedValue = sanitizeActorMetadataValue(nestedValue);\n if (sanitizedNestedValue !== undefined) {\n output[key] = sanitizedNestedValue;\n }\n }\n return output;\n }\n\n return value;\n}\n\nfunction buildActorRegistrationData(actor: any): Record<string, unknown> {\n const definition = sanitizeActorMetadataValue(\n typeof actor?.toDefinition === \"function\" ? actor.toDefinition() : {},\n ) as Record<string, unknown>;\n const stateDefinition =\n definition?.state && typeof definition.state === \"object\"\n ? definition.state\n : {};\n const actorKind =\n typeof definition?.kind === \"string\" ? definition.kind : actor?.kind;\n\n return {\n name: definition?.name ?? actor?.spec?.name ?? \"\",\n description: definition?.description ?? actor?.spec?.description ?? \"\",\n default_key:\n definition?.defaultKey ?? actor?.spec?.defaultKey ?? \"default\",\n load_policy: definition?.loadPolicy ?? actor?.spec?.loadPolicy ?? \"eager\",\n write_contract:\n definition?.writeContract ?? actor?.spec?.writeContract ?? \"overwrite\",\n runtime_read_guard:\n definition?.runtimeReadGuard ?? actor?.spec?.runtimeReadGuard ?? \"none\",\n consistency_profile:\n definition?.consistencyProfile ?? actor?.spec?.consistencyProfile ?? null,\n key_definition: definition?.key ?? null,\n state_definition: stateDefinition,\n retry_policy: definition?.retry ?? {},\n idempotency_policy: definition?.idempotency ?? {},\n session_policy: definition?.session ?? {},\n is_meta: actorKind === \"meta\",\n version: 1,\n };\n}\n\nfunction resolveSyncServiceName(\n task?:\n | {\n serviceName?: string;\n ownerServiceName?: string | null;\n isDeputy?: boolean;\n }\n | null,\n):\n | string\n | undefined {\n const ownerServiceName =\n typeof task?.ownerServiceName === \"string\"\n ? task.ownerServiceName.trim()\n : \"\";\n const taskServiceName =\n typeof task?.serviceName === \"string\" ? task.serviceName.trim() : \"\";\n const registryServiceName =\n typeof ServiceRegistry.instance.serviceName === \"string\"\n ? ServiceRegistry.instance.serviceName.trim()\n : \"\";\n\n if (task?.isDeputy) {\n return ownerServiceName || registryServiceName || taskServiceName || undefined;\n }\n\n return ownerServiceName || taskServiceName || registryServiceName || undefined;\n}\n\nfunction buildIntentRegistryData(intent: any): Record<string, unknown> | null {\n const name = String(intent?.name ?? \"\").trim();\n if (!name) {\n return null;\n }\n\n return {\n name,\n description:\n typeof intent?.description === \"string\" ? intent.description : \"\",\n input:\n intent?.input && typeof intent.input === \"object\"\n ? intent.input\n : { type: \"object\" },\n output:\n intent?.output && typeof intent.output === \"object\"\n ? intent.output\n : { type: \"object\" },\n is_meta: isMetaIntentName(name),\n };\n}\n\nfunction isLocalOnlySyncIntent(intentName: string): boolean {\n return intentName === META_ACTOR_SESSION_STATE_PERSIST_INTENT;\n}\n\nfunction getJoinedContextValue(\n ctx: Record<string, any>,\n key: \"data\" | \"batch\" | \"queryData\",\n): unknown {\n const joinedContexts = Array.isArray(ctx.joinedContexts) ? ctx.joinedContexts : [];\n for (let index = joinedContexts.length - 1; index >= 0; index -= 1) {\n const joinedContext = joinedContexts[index];\n if (\n joinedContext &&\n typeof joinedContext === \"object\" &&\n (Object.prototype.hasOwnProperty.call(joinedContext, key) ||\n joinedContext[key] !== undefined)\n ) {\n return joinedContext[key];\n }\n }\n\n return undefined;\n}\n\nfunction didSyncInsertSucceed(ctx: Record<string, any>): boolean {\n if (ctx.errored || ctx.__success === false) {\n return false;\n }\n\n const inquiryMeta =\n ctx.__inquiryMeta && typeof ctx.__inquiryMeta === \"object\"\n ? (ctx.__inquiryMeta as Record<string, unknown>)\n : null;\n\n if (!inquiryMeta) {\n return true;\n }\n\n const eligibleResponders = Number(inquiryMeta.eligibleResponders);\n if (Number.isFinite(eligibleResponders) && eligibleResponders === 0) {\n return false;\n }\n\n const responded = Number(inquiryMeta.responded);\n if (Number.isFinite(responded) && responded === 0) {\n return false;\n }\n\n return true;\n}\n\nfunction buildMinimalSyncSignalContext(\n ctx: Record<string, unknown>,\n extra: Record<string, unknown> = {},\n): Record<string, unknown> {\n const nextContext: Record<string, unknown> = {\n __syncing: ctx.__syncing === true,\n ...extra,\n };\n\n if (typeof ctx.__reason === \"string\" && ctx.__reason.trim().length > 0) {\n nextContext.__reason = ctx.__reason;\n }\n\n return nextContext;\n}\n\nfunction buildSyncInsertQueryData(\n ctx: Record<string, any>,\n queryData: Record<string, unknown> = {},\n): Record<string, unknown> {\n const pickQueryData = (\n source: Record<string, unknown>,\n allowedKeys: string[],\n ): Record<string, unknown> => {\n const next: Record<string, unknown> = {};\n\n for (const key of allowedKeys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n next[key] = source[key];\n }\n }\n\n return next;\n };\n const joinedQueryData = getJoinedContextValue(ctx, \"queryData\");\n const existingQueryData =\n ctx.queryData && typeof ctx.queryData === \"object\"\n ? ctx.queryData\n : joinedQueryData && typeof joinedQueryData === \"object\"\n ? joinedQueryData\n : {};\n const nextQueryData: Record<string, unknown> = {\n ...pickQueryData(existingQueryData, [\"transaction\"]),\n ...queryData,\n };\n const resolvedData =\n Object.prototype.hasOwnProperty.call(ctx, \"data\") || ctx.data !== undefined\n ? ctx.data\n : getJoinedContextValue(ctx, \"data\");\n const resolvedBatch =\n Object.prototype.hasOwnProperty.call(ctx, \"batch\") || ctx.batch !== undefined\n ? ctx.batch\n : getJoinedContextValue(ctx, \"batch\");\n\n if (resolvedData !== undefined) {\n nextQueryData.data =\n resolvedData && typeof resolvedData === \"object\" && !Array.isArray(resolvedData)\n ? { ...resolvedData }\n : resolvedData;\n } else {\n delete nextQueryData.data;\n }\n\n if (resolvedBatch !== undefined) {\n nextQueryData.batch = Array.isArray(resolvedBatch)\n ? resolvedBatch.map((row: unknown) =>\n row && typeof row === \"object\"\n ? { ...(row as Record<string, unknown>) }\n : row,\n )\n : resolvedBatch;\n } else {\n delete nextQueryData.batch;\n }\n\n return nextQueryData;\n}\n\nfunction buildSyncQueryQueryData(\n ctx: Record<string, any>,\n queryData: Record<string, unknown> = {},\n): Record<string, unknown> {\n const joinedQueryData = getJoinedContextValue(ctx, \"queryData\");\n const existingQueryData =\n ctx.queryData && typeof ctx.queryData === \"object\"\n ? ctx.queryData\n : joinedQueryData && typeof joinedQueryData === \"object\"\n ? joinedQueryData\n : {};\n const nextQueryData: Record<string, unknown> = {};\n const allowedKeys = [\n \"transaction\",\n \"filter\",\n \"fields\",\n \"joins\",\n \"sort\",\n \"limit\",\n \"offset\",\n \"queryMode\",\n \"aggregates\",\n \"groupBy\",\n ];\n\n for (const key of allowedKeys) {\n if (Object.prototype.hasOwnProperty.call(existingQueryData, key)) {\n nextQueryData[key] = existingQueryData[key];\n }\n }\n\n return {\n ...nextQueryData,\n ...queryData,\n };\n}\n\ntype SyncTaskGraph = {\n entryTask: Task;\n completionTask: Task;\n};\n\ntype SyncCyclePhase = \"idle\" | \"primitive\" | \"map\";\n\ntype SyncCycleRuntimeState = {\n activeSyncCycleId: string | null;\n activeSyncCycleStartedAt: number;\n phase: SyncCyclePhase;\n};\n\ntype SyncPhasePendingSummary = Record<string, number>;\n\nconst DEFAULT_SYNC_CYCLE_RUNTIME_STATE: SyncCycleRuntimeState = {\n activeSyncCycleId: null,\n activeSyncCycleStartedAt: 0,\n phase: \"idle\",\n};\n\nconst REMOTE_AUTHORITY_SYNC_INSERT_CONCURRENCY = 15;\nconst REMOTE_AUTHORITY_SYNC_QUERY_CONCURRENCY = 8;\n\nfunction wireSyncTaskGraph(\n predecessorTask: Task,\n graph: SyncTaskGraph | undefined,\n ...completionTasks: (Task | undefined)[]\n): Task | undefined {\n if (!graph) {\n return undefined;\n }\n\n predecessorTask.then(graph.entryTask);\n if (completionTasks.length > 0) {\n graph.completionTask.then(...completionTasks);\n }\n\n return graph.completionTask;\n}\n\nfunction buildSyncExecutionEnvelope(\n ctx: Record<string, any>,\n queryData: Record<string, unknown>,\n): Record<string, unknown> {\n const originalContext = { ...ctx };\n const syncSourceServiceName =\n typeof ctx.__syncSourceServiceName === \"string\" &&\n ctx.__syncSourceServiceName.trim().length > 0\n ? ctx.__syncSourceServiceName\n : typeof ctx.__serviceName === \"string\" && ctx.__serviceName.trim().length > 0\n ? ctx.__serviceName\n : resolveSyncServiceName();\n const rootDbOperationFields: Record<string, unknown> = {};\n for (const key of [\n \"data\",\n \"batch\",\n \"transaction\",\n \"onConflict\",\n \"filter\",\n \"fields\",\n ] as const) {\n if (Object.prototype.hasOwnProperty.call(queryData, key)) {\n rootDbOperationFields[key] = queryData[key];\n }\n }\n const nextContext: Record<string, unknown> = {\n __syncing:\n ctx.__syncing === true || ctx.__metadata?.__syncing === true || false,\n __syncSourceServiceName: syncSourceServiceName,\n __preferredTransportProtocol: \"rest\",\n __resolverOriginalContext: originalContext,\n __resolverQueryData: queryData,\n ...rootDbOperationFields,\n queryData,\n };\n\n if (typeof ctx.__reason === \"string\" && ctx.__reason.trim().length > 0) {\n nextContext.__reason = ctx.__reason;\n }\n\n return nextContext;\n}\n\nfunction markCompletedSyncCycle(\n completedCycles: Set<string>,\n cycleId: string,\n limit = 32,\n): boolean {\n if (!cycleId) {\n return false;\n }\n\n if (completedCycles.has(cycleId)) {\n return false;\n }\n\n completedCycles.add(cycleId);\n while (completedCycles.size > limit) {\n const oldestCycleId = completedCycles.values().next().value as\n | string\n | undefined;\n if (!oldestCycleId) {\n break;\n }\n\n completedCycles.delete(oldestCycleId);\n }\n\n return true;\n}\n\nfunction resolveSyncInsertTask(\n isCadenzaDBReady: boolean,\n tableName: string,\n queryData: Record<string, unknown> = {},\n options: Record<string, unknown> = {},\n): SyncTaskGraph | undefined {\n const localInsertTask = Cadenza.getLocalCadenzaDBInsertTask(tableName);\n\n if (isCadenzaDBReady && !localInsertTask) {\n return undefined;\n }\n const targetTask =\n localInsertTask ??\n Cadenza.createCadenzaDBInsertTask(tableName, queryData, {\n ...options,\n concurrency:\n Number(options.concurrency) > 0\n ? Math.min(\n Number(options.concurrency),\n REMOTE_AUTHORITY_SYNC_INSERT_CONCURRENCY,\n )\n : REMOTE_AUTHORITY_SYNC_INSERT_CONCURRENCY,\n register: false,\n isHidden: true,\n });\n\n const prepareExecutionTask = Cadenza.createMetaTask(\n `Prepare graph sync insert for ${tableName}`,\n (ctx) => {\n const originalQueryData = buildSyncInsertQueryData(\n ctx as Record<string, any>,\n queryData,\n );\n\n if (\n (tableName === \"signal_registry\" ||\n tableName === \"directional_task_graph_map\") &&\n originalQueryData.data &&\n typeof originalQueryData.data === \"object\" &&\n !Array.isArray(originalQueryData.data) &&\n Object.keys(originalQueryData.data as Record<string, unknown>).length === 0\n ) {\n console.warn(\n \"[CADENZA_SYNC_EMPTY_INSERT]\",\n {\n tableName,\n queryData: originalQueryData,\n ctx,\n joinedContexts: Array.isArray((ctx as Record<string, any>).joinedContexts)\n ? (ctx as Record<string, any>).joinedContexts\n : [],\n },\n );\n }\n\n return buildSyncExecutionEnvelope(\n ctx as Record<string, any>,\n originalQueryData,\n );\n },\n `Prepares ${tableName} graph-sync insert payloads for runner execution.`,\n {\n register: false,\n isHidden: true,\n },\n );\n\n const finalizeExecutionTask = Cadenza.createMetaTask(\n `Finalize graph sync insert for ${tableName}`,\n (ctx) => {\n const originalContext =\n ctx.__resolverOriginalContext &&\n typeof ctx.__resolverOriginalContext === \"object\"\n ? (ctx.__resolverOriginalContext as Record<string, unknown>)\n : {};\n const originalQueryData =\n ctx.__resolverQueryData && typeof ctx.__resolverQueryData === \"object\"\n ? (ctx.__resolverQueryData as Record<string, unknown>)\n : undefined;\n const normalizedContext = {\n ...originalContext,\n ...ctx,\n queryData:\n ctx.queryData && typeof ctx.queryData === \"object\"\n ? ctx.queryData\n : originalQueryData,\n };\n\n if (\n originalContext.__syncing === true &&\n !didSyncInsertSucceed(normalizedContext as Record<string, any>)\n ) {\n Cadenza.debounce(\"meta.sync_requested\", {}, 1000);\n }\n\n return normalizedContext;\n },\n `Finalizes ${tableName} graph-sync insert execution after the authority task finishes.`,\n {\n register: false,\n isHidden: true,\n },\n );\n\n prepareExecutionTask.then(targetTask);\n targetTask.then(finalizeExecutionTask);\n\n return {\n entryTask: prepareExecutionTask,\n completionTask: finalizeExecutionTask,\n };\n}\n\nconst CADENZA_DB_REQUIRED_LOCAL_SYNC_INSERT_TABLES = [\n \"intent_registry\",\n \"routine\",\n \"task_to_routine_map\",\n \"signal_registry\",\n \"task\",\n \"actor\",\n \"directional_task_graph_map\",\n] as const;\n\nconst BOOTSTRAP_SYNC_STALE_CYCLE_MS = 120000;\nconst EARLY_SYNC_TICK_DELAYS_MS = [\n 400,\n 16000,\n 32000,\n 48000,\n] as const;\nconst SYNC_PASS_SETTLE_DELAY_MS = 3500;\nconst SYNC_PASS_EVALUATION_SIGNAL = \"meta.sync_controller.evaluate_active_cycle\";\n\nfunction shouldTraceSyncPhase(serviceName: string | undefined): boolean {\n const configured = process.env.CADENZA_SYNC_PHASE_TRACE_SERVICE;\n if (!configured || !serviceName) {\n return false;\n }\n\n return configured === serviceName;\n}\n\nfunction canonicalizeSignalName(signalName: string | undefined): string {\n if (typeof signalName !== \"string\") {\n return \"\";\n }\n\n return signalName.split(\":\")[0]?.trim() ?? \"\";\n}\n\nfunction isLocalServiceReadySignal(signalName: string): boolean {\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return false;\n }\n\n return signalName === Cadenza.getServiceReadySignalName(serviceName);\n}\n\nconst BOOTSTRAP_LOCAL_ONLY_ACTOR_NAMES = new Set([\n \"BootstrapSyncCycleCoordinatorActor\",\n \"ServiceLifecycleFlushActor\",\n \"SocketServerActor\",\n \"SocketClientActor\",\n \"SocketClientDiagnosticsActor\",\n \"TrafficRuntimeActor\",\n]);\n\nexport function isBootstrapLocalOnlyActorName(actorName: string): boolean {\n return BOOTSTRAP_LOCAL_ONLY_ACTOR_NAMES.has(actorName);\n}\n\nfunction isBootstrapLocalOnlySignal(signalName: string): boolean {\n return (\n signalName.startsWith(\"meta.\") ||\n signalName === \"meta.service_registry.insert_execution_requested\" ||\n signalName === \"meta.service_registry.routeable_transport_missing\" ||\n signalName === \"meta.signal_broker.added\" ||\n signalName === \"meta.rest.handshake\" ||\n signalName === \"meta.rest.delegation_target_not_found\" ||\n signalName === \"meta.socket.handshake\" ||\n signalName === \"meta.socket.delegation_target_not_found\" ||\n signalName === \"meta.fetch.handshake_complete\" ||\n signalName === \"sub_meta.signal_broker.new_trace\" ||\n signalName.startsWith(\"meta.task.\") ||\n signalName.startsWith(\"meta.sync_controller.\") ||\n isLocalServiceReadySignal(signalName)\n );\n}\n\nfunction hasNonZeroPending(summary: SyncPhasePendingSummary): boolean {\n return Object.values(summary).some((value) => Number(value) > 0);\n}\n\nfunction isRegistrableRoutine(routine: { name?: string } | null | undefined): boolean {\n return routine?.name !== \"RestServer\";\n}\n\nfunction scheduleSyncPassEvaluation(delayMs = SYNC_PASS_SETTLE_DELAY_MS): void {\n Cadenza.debounce(SYNC_PASS_EVALUATION_SIGNAL, {}, delayMs);\n}\n\nfunction getRegistrableTasks(): Task[] {\n return Array.from(Cadenza.registry.tasks.values()).filter(\n (task) => task.register && !task.isHidden && !task.isDeputy,\n );\n}\n\nfunction getBootstrapBlockingTasks(): Task[] {\n return getRegistrableTasks().filter((task) => task.isMeta !== true);\n}\n\nfunction getRegistrableRoutines() {\n return Array.from(Cadenza.registry.routines.values()).filter(isRegistrableRoutine);\n}\n\nfunction getRegistrableSignalObservers(): Array<{\n signalName: string;\n registered?: boolean;\n}> {\n const signalObservers = (Cadenza.signalBroker as any)\n .signalObservers as\n | Map<string, { registered?: boolean; tasks?: Task[] | Set<Task> }>\n | undefined;\n if (!signalObservers) {\n return [];\n }\n\n const canonicalObservers = new Map<\n string,\n {\n signalName: string;\n registered?: boolean;\n }\n >();\n\n for (const [rawSignalName, observer] of signalObservers.entries()) {\n const signalName = canonicalizeSignalName(rawSignalName);\n if (!signalName || isBootstrapLocalOnlySignal(signalName)) {\n continue;\n }\n\n const observerTasks = Array.isArray((observer as any)?.tasks)\n ? ((observer as any).tasks as Task[])\n : (observer as any)?.tasks instanceof Set\n ? Array.from((observer as any).tasks as Set<Task>)\n : [];\n\n if (\n observerTasks.length > 0 &&\n !observerTasks.some(\n (task) => task?.register && !task.isHidden && !task.isDeputy,\n )\n ) {\n continue;\n }\n\n const existing = canonicalObservers.get(signalName);\n canonicalObservers.set(signalName, {\n signalName,\n registered:\n existing?.registered === true || (observer as any)?.registered === true,\n });\n }\n\n return Array.from(canonicalObservers.values());\n}\n\nfunction isLocallyHandledIntentName(intentName: string): boolean {\n const observer = Cadenza.inquiryBroker.inquiryObservers.get(intentName);\n if (!observer) {\n return false;\n }\n\n for (const task of observer.tasks) {\n if (task.register && !task.isHidden && !task.isDeputy) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getRegistrableIntentNames(): string[] {\n return Array.from(Cadenza.inquiryBroker.intents.values())\n .map((intent) => buildIntentRegistryData(intent))\n .filter(\n (intentDefinition): intentDefinition is Record<string, unknown> =>\n intentDefinition !== null,\n )\n .filter((intentDefinition) =>\n isLocallyHandledIntentName(String(intentDefinition.name)),\n )\n .filter(\n (intentDefinition) =>\n !isLocalOnlySyncIntent(String(intentDefinition.name)),\n )\n .map((intentDefinition) => String(intentDefinition.name));\n}\n\nfunction isRegistrableLocalIntentDefinition(intent: any): boolean {\n const intentData = buildIntentRegistryData(intent);\n if (!intentData) {\n return false;\n }\n\n return isLocallyHandledIntentName(String(intentData.name));\n}\n\nfunction buildActorRegistrationKey(\n actor: any,\n serviceName: string,\n): string | null {\n const data = buildActorRegistrationData(actor);\n const name =\n typeof data.name === \"string\" && data.name.trim().length > 0\n ? data.name.trim()\n : \"\";\n\n if (!name) {\n return null;\n }\n\n return `${name}|${data.version}|${serviceName}`;\n}\n\nfunction isBootstrapRegistrableActor(actor: any): boolean {\n const actorName = String(buildActorRegistrationData(actor).name ?? \"\").trim();\n return actorName.length > 0 && !isBootstrapLocalOnlyActorName(actorName);\n}\n\nfunction buildSignalTaskMapRegistrationKey(input: {\n signalName: string;\n serviceName: string;\n taskName: string;\n taskVersion?: number;\n}): string {\n return `${canonicalizeSignalName(input.signalName)}|${input.serviceName}|${input.taskName}|${input.taskVersion ?? 1}`;\n}\n\nfunction normalizeSyncSignalMaps(\n ctx: Record<string, any>,\n): Array<{\n signalName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n deleted: boolean;\n}> {\n const rawMaps = Array.isArray(ctx.signalToTaskMaps)\n ? ctx.signalToTaskMaps\n : Array.isArray(ctx.signal_to_task_maps)\n ? ctx.signal_to_task_maps\n : Array.isArray(ctx.signalToTaskMap)\n ? ctx.signalToTaskMap\n : Array.isArray(ctx.signal_to_task_map)\n ? ctx.signal_to_task_map\n : [];\n\n return rawMaps\n .map((map: any) => ({\n signalName: canonicalizeSignalName(map?.signalName ?? map?.signal_name),\n serviceName: String(map?.serviceName ?? map?.service_name ?? \"\").trim(),\n taskName: String(map?.taskName ?? map?.task_name ?? \"\").trim(),\n taskVersion: Number(map?.taskVersion ?? map?.task_version ?? 1),\n deleted: map?.deleted === true,\n }))\n .filter(\n (map) =>\n map.signalName.length > 0 &&\n map.serviceName.length > 0 &&\n map.taskName.length > 0,\n );\n}\n\nfunction normalizeSyncIntentMaps(\n ctx: Record<string, any>,\n): Array<{\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n deleted: boolean;\n}> {\n const rawMaps = Array.isArray(ctx.intentToTaskMaps)\n ? ctx.intentToTaskMaps\n : Array.isArray(ctx.intent_to_task_maps)\n ? ctx.intent_to_task_maps\n : Array.isArray(ctx.intentToTaskMap)\n ? ctx.intentToTaskMap\n : Array.isArray(ctx.intent_to_task_map)\n ? ctx.intent_to_task_map\n : [];\n\n return rawMaps\n .map((map: any) => ({\n intentName: String(map?.intentName ?? map?.intent_name ?? \"\").trim(),\n serviceName: String(map?.serviceName ?? map?.service_name ?? \"\").trim(),\n taskName: String(map?.taskName ?? map?.task_name ?? \"\").trim(),\n taskVersion: Number(map?.taskVersion ?? map?.task_version ?? 1),\n deleted: map?.deleted === true,\n }))\n .filter(\n (map) =>\n map.intentName.length > 0 &&\n map.serviceName.length > 0 &&\n map.taskName.length > 0,\n );\n}\n\nfunction readManifestArray(\n ctx: Record<string, any>,\n keys: string[],\n): Array<Record<string, unknown>> {\n for (const key of keys) {\n const value = ctx[key];\n if (Array.isArray(value)) {\n return value.filter(\n (entry): entry is Record<string, unknown> =>\n !!entry && typeof entry === \"object\" && !Array.isArray(entry),\n );\n }\n }\n\n return [];\n}\n\nfunction normalizeSyncTasks(ctx: Record<string, any>) {\n return readManifestArray(ctx, [\"tasks\"]).map((task) => ({\n name: String(task.name ?? \"\").trim(),\n serviceName: String(task.service_name ?? task.serviceName ?? \"\").trim(),\n version: Number(task.version ?? 1),\n }));\n}\n\nfunction normalizeSyncSignals(ctx: Record<string, any>) {\n return readManifestArray(ctx, [\"signals\"]).map((signal) => ({\n name: canonicalizeSignalName(\n typeof signal.name === \"string\" ? signal.name : undefined,\n ),\n }));\n}\n\nfunction normalizeSyncIntents(ctx: Record<string, any>) {\n return readManifestArray(ctx, [\"intents\"]).map((intent) => ({\n name: String(intent.name ?? \"\").trim(),\n }));\n}\n\nfunction normalizeSyncActors(ctx: Record<string, any>) {\n return readManifestArray(ctx, [\"actors\"]).map((actor) => ({\n name: String(actor.name ?? \"\").trim(),\n serviceName: String(actor.service_name ?? actor.serviceName ?? \"\").trim(),\n version: Number(actor.version ?? 1),\n }));\n}\n\nfunction normalizeSyncRoutines(ctx: Record<string, any>) {\n return readManifestArray(ctx, [\"routines\"]).map((routine) => ({\n name: String(routine.name ?? \"\").trim(),\n serviceName: String(routine.service_name ?? routine.serviceName ?? \"\").trim(),\n version: Number(routine.version ?? 1),\n }));\n}\n\nfunction normalizeSyncDirectionalTaskMaps(ctx: Record<string, any>) {\n return readManifestArray(ctx, [\n \"directionalTaskMaps\",\n \"directional_task_maps\",\n ]).map((map) => ({\n taskName: String(map.task_name ?? map.taskName ?? \"\").trim(),\n taskVersion: Number(map.task_version ?? map.taskVersion ?? 1),\n predecessorTaskName: String(\n map.predecessor_task_name ?? map.predecessorTaskName ?? \"\",\n ).trim(),\n predecessorTaskVersion: Number(\n map.predecessor_task_version ?? map.predecessorTaskVersion ?? 1,\n ),\n serviceName: String(map.service_name ?? map.serviceName ?? \"\").trim(),\n predecessorServiceName: String(\n map.predecessor_service_name ?? map.predecessorServiceName ?? \"\",\n ).trim(),\n }));\n}\n\nfunction normalizeSyncActorTaskMaps(ctx: Record<string, any>) {\n return readManifestArray(ctx, [\"actorTaskMaps\", \"actor_task_maps\"]).map((map) => ({\n actorName: String(map.actor_name ?? map.actorName ?? \"\").trim(),\n actorVersion: Number(map.actor_version ?? map.actorVersion ?? 1),\n taskName: String(map.task_name ?? map.taskName ?? \"\").trim(),\n taskVersion: Number(map.task_version ?? map.taskVersion ?? 1),\n serviceName: String(map.service_name ?? map.serviceName ?? \"\").trim(),\n }));\n}\n\nfunction normalizeSyncTaskToRoutineMaps(ctx: Record<string, any>) {\n return readManifestArray(ctx, [\n \"taskToRoutineMaps\",\n \"task_to_routine_maps\",\n ]).map((map) => ({\n taskName: String(map.task_name ?? map.taskName ?? \"\").trim(),\n taskVersion: Number(map.task_version ?? map.taskVersion ?? 1),\n routineName: String(map.routine_name ?? map.routineName ?? \"\").trim(),\n routineVersion: Number(map.routine_version ?? map.routineVersion ?? 1),\n serviceName: String(map.service_name ?? map.serviceName ?? \"\").trim(),\n }));\n}\n\nfunction resolveLocalTaskFromSyncContext(ctx: Record<string, any>): Task | undefined {\n const candidateTaskNames = [\n ctx.__taskName,\n ctx.data?.name,\n ctx.queryData?.data?.name,\n ctx.__resolverOriginalContext?.__taskName,\n ctx.__resolverOriginalContext?.data?.name,\n getJoinedContextValue(ctx, \"data\") &&\n typeof getJoinedContextValue(ctx, \"data\") === \"object\"\n ? (getJoinedContextValue(ctx, \"data\") as Record<string, unknown>).name\n : undefined,\n getJoinedContextValue(ctx, \"queryData\") &&\n typeof getJoinedContextValue(ctx, \"queryData\") === \"object\"\n ? ((getJoinedContextValue(ctx, \"queryData\") as Record<string, unknown>)\n .data as Record<string, unknown> | undefined)?.name\n : undefined,\n ];\n\n const taskName = candidateTaskNames.find(\n (candidate): candidate is string =>\n typeof candidate === \"string\" && candidate.trim().length > 0,\n );\n\n return taskName ? Cadenza.get(taskName) : undefined;\n}\n\nfunction resolveLocalRoutineFromSyncContext(\n ctx: Record<string, any>,\n): ReturnType<typeof Cadenza.getRoutine> | undefined {\n const candidateRoutineNames = [\n ctx.__routineName,\n ctx.data?.name,\n ctx.queryData?.data?.name,\n ctx.__resolverOriginalContext?.__routineName,\n ctx.__resolverOriginalContext?.data?.name,\n getJoinedContextValue(ctx, \"data\") &&\n typeof getJoinedContextValue(ctx, \"data\") === \"object\"\n ? (getJoinedContextValue(ctx, \"data\") as Record<string, unknown>).name\n : undefined,\n getJoinedContextValue(ctx, \"queryData\") &&\n typeof getJoinedContextValue(ctx, \"queryData\") === \"object\"\n ? ((getJoinedContextValue(ctx, \"queryData\") as Record<string, unknown>)\n .data as Record<string, unknown> | undefined)?.name\n : undefined,\n ];\n\n const routineName = candidateRoutineNames.find(\n (candidate): candidate is string =>\n typeof candidate === \"string\" && candidate.trim().length > 0,\n );\n\n return routineName ? Cadenza.getRoutine(routineName) : undefined;\n}\n\nfunction resolveSignalNameFromSyncContext(ctx: Record<string, any>): string | undefined {\n const candidateSignalNames = [\n ctx.signalName,\n ctx.__signal,\n ctx.data?.name,\n ctx.queryData?.data?.name,\n getJoinedContextValue(ctx, \"data\") &&\n typeof getJoinedContextValue(ctx, \"data\") === \"object\"\n ? (getJoinedContextValue(ctx, \"data\") as Record<string, unknown>).name\n : undefined,\n ];\n\n for (const candidate of candidateSignalNames) {\n if (typeof candidate === \"string\" && candidate.trim().length > 0) {\n return candidate;\n }\n }\n\n return undefined;\n}\n\nexport default class GraphSyncController {\n private static _instance: GraphSyncController;\n public static get instance(): GraphSyncController {\n if (!this._instance) this._instance = new GraphSyncController();\n return this._instance;\n }\n\n splitSignalsTask: Task | undefined;\n splitTasksForRegistration: Task | undefined;\n splitIntentsTask: Task | undefined;\n registerSignalToTaskMapTask: Task | undefined;\n registerIntentToTaskMapTask: Task | undefined;\n registerTaskMapTask: Task | undefined;\n registerDeputyRelationshipTask: Task | undefined;\n splitRoutinesTask: Task | undefined;\n splitTasksInRoutines: Task | undefined;\n splitActorsForRegistration: Task | undefined;\n registerActorTaskMapTask: Task | undefined;\n\n registeredActors: Set<string> = new Set();\n registeredActorTaskMaps: Set<string> = new Set();\n registeredIntentDefinitions: Set<string> = new Set();\n authoritativeSignalTaskMaps: Set<string> = new Set();\n tasksSynced: boolean = false;\n actorsSynced: boolean = false;\n signalsSynced: boolean = false;\n intentsSynced: boolean = false;\n routinesSynced: boolean = false;\n directionalTaskMapsSynced: boolean = false;\n signalTaskMapsSynced: boolean = false;\n intentTaskMapsSynced: boolean = false;\n actorTaskMapsSynced: boolean = false;\n routineTaskMapsSynced: boolean = false;\n\n isCadenzaDBReady: boolean = false;\n initialized: boolean = false;\n initRetryScheduled: boolean = false;\n initRetryTask: Task | undefined;\n lastMissingLocalCadenzaDBInsertTablesKey: string = \"\";\n primitivePhaseCompletedCycles: Set<string> = new Set();\n mapPhaseCompletedCycles: Set<string> = new Set();\n syncCycleCoordinatorActor: any;\n localServiceInserted: boolean = false;\n localServiceInstanceInserted: boolean = false;\n\n private getMissingLocalCadenzaDBInsertTables(): string[] {\n return CADENZA_DB_REQUIRED_LOCAL_SYNC_INSERT_TABLES.filter(\n (tableName) => !Cadenza.getLocalCadenzaDBInsertTask(tableName),\n );\n }\n\n private ensureRetryInitTask(): Task {\n if (this.initRetryTask) {\n return this.initRetryTask;\n }\n\n this.initRetryTask =\n Cadenza.get(\"Retry graph sync init\") ??\n Cadenza.createUniqueMetaTask(\n \"Retry graph sync init\",\n () => {\n this.initRetryScheduled = false;\n this.init();\n return true;\n },\n \"Retries graph sync controller initialization once local authority tasks exist.\",\n ).doOn(\"meta.sync_controller.init_retry\");\n\n return this.initRetryTask;\n }\n\n init() {\n if (this.initialized) {\n return;\n }\n\n const serviceName = resolveSyncServiceName();\n if (serviceName === \"CadenzaDB\") {\n const missingLocalInsertTables = this.getMissingLocalCadenzaDBInsertTables();\n if (missingLocalInsertTables.length > 0) {\n this.ensureRetryInitTask();\n const missingKey = missingLocalInsertTables.join(\",\");\n if (missingKey !== this.lastMissingLocalCadenzaDBInsertTablesKey) {\n this.lastMissingLocalCadenzaDBInsertTablesKey = missingKey;\n Cadenza.log(\n \"Waiting for local CadenzaDB sync insert tasks before initializing graph sync controller.\",\n {\n missingLocalInsertTables,\n },\n \"info\",\n );\n }\n\n if (!this.initRetryScheduled) {\n this.initRetryScheduled = true;\n Cadenza.schedule(\n \"meta.sync_controller.init_retry\",\n {\n __missingLocalInsertTables: missingLocalInsertTables,\n },\n 250,\n );\n }\n return;\n }\n\n this.lastMissingLocalCadenzaDBInsertTablesKey = \"\";\n }\n\n this.initialized = true;\n this.syncCycleCoordinatorActor =\n this.syncCycleCoordinatorActor ??\n Cadenza.createActor<{}, SyncCycleRuntimeState>({\n name: \"BootstrapSyncCycleCoordinatorActor\",\n description:\n \"Coordinates the active bootstrap graph sync cycle for a service instance.\",\n defaultKey: \"bootstrap-graph-sync\",\n initState: {},\n session: {\n persistDurableState: false,\n },\n });\n const insertIntentRegistryTask = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"intent_registry\",\n {\n onConflict: {\n target: [\"name\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const finalizeTaskSync = (emit: any, ctx: Record<string, unknown>) => {\n const pendingTasks = getBootstrapBlockingTasks().filter(\n (task) => !task.registered,\n );\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] finalize_tasks\", {\n serviceName,\n pendingCount: pendingTasks.length,\n sample: pendingTasks.slice(0, 5).map((task) => task.name),\n });\n }\n if (pendingTasks.length > 0) {\n this.tasksSynced = false;\n scheduleSyncPassEvaluation();\n return false;\n }\n\n const shouldEmit = !this.tasksSynced;\n this.tasksSynced = true;\n scheduleSyncPassEvaluation();\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_tasks\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const finalizeRoutineSync = (emit: any, ctx: Record<string, unknown>) => {\n const pendingRoutines = getRegistrableRoutines().filter(\n (routine) => !routine.registered,\n );\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] finalize_routines\", {\n serviceName,\n pendingCount: pendingRoutines.length,\n sample: pendingRoutines.slice(0, 5).map((routine) => routine.name),\n });\n }\n if (pendingRoutines.length > 0) {\n this.routinesSynced = false;\n scheduleSyncPassEvaluation();\n return false;\n }\n\n const shouldEmit = !this.routinesSynced;\n this.routinesSynced = true;\n scheduleSyncPassEvaluation();\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_routines\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const finalizeSignalSync = (emit: any, ctx: Record<string, unknown>) => {\n const pendingSignals = getRegistrableSignalObservers().filter(\n (observer) => observer.registered !== true,\n );\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] finalize_signals\", {\n serviceName,\n pendingCount: pendingSignals.length,\n sample: pendingSignals.slice(0, 5).map((observer) => observer.signalName),\n });\n }\n if (pendingSignals.length > 0) {\n this.signalsSynced = false;\n scheduleSyncPassEvaluation();\n return false;\n }\n\n const shouldEmit = !this.signalsSynced;\n this.signalsSynced = true;\n scheduleSyncPassEvaluation();\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_signals\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const finalizeIntentSync = (emit: any, ctx: Record<string, unknown>) => {\n const pendingIntentNames = getRegistrableIntentNames().filter(\n (intentName) => !this.registeredIntentDefinitions.has(intentName),\n );\n const serviceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : resolveSyncServiceName();\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] finalize_intents\", {\n serviceName,\n pendingCount: pendingIntentNames.length,\n sample: pendingIntentNames.slice(0, 5),\n });\n }\n if (pendingIntentNames.length > 0) {\n this.intentsSynced = false;\n scheduleSyncPassEvaluation();\n return false;\n }\n\n const shouldEmit = !this.intentsSynced;\n this.intentsSynced = true;\n scheduleSyncPassEvaluation();\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_intents\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const finalizeActorSync = (emit: any, ctx: Record<string, unknown>) => {\n const syncServiceName = resolveSyncServiceName();\n if (!syncServiceName) {\n this.actorsSynced = false;\n return false;\n }\n\n const pendingActorKeys = Cadenza.getAllActors()\n .filter((actor) => isBootstrapRegistrableActor(actor))\n .map((actor) => buildActorRegistrationKey(actor, syncServiceName))\n .filter((registrationKey): registrationKey is string => Boolean(registrationKey))\n .filter((registrationKey) => !this.registeredActors.has(registrationKey));\n\n if (shouldTraceSyncPhase(syncServiceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] finalize_actors\", {\n serviceName: syncServiceName,\n pendingCount: pendingActorKeys.length,\n sample: pendingActorKeys.slice(0, 5),\n });\n }\n\n if (pendingActorKeys.length > 0) {\n this.actorsSynced = false;\n scheduleSyncPassEvaluation();\n return false;\n }\n\n const shouldEmit = !this.actorsSynced;\n this.actorsSynced = true;\n scheduleSyncPassEvaluation();\n if (shouldEmit) {\n emit(\n \"meta.sync_controller.synced_actors\",\n buildMinimalSyncSignalContext(ctx),\n );\n }\n\n return true;\n };\n const buildPrimitivePendingSummary = (): SyncPhasePendingSummary => ({\n tasks: getBootstrapBlockingTasks().filter((task) => !task.registered).length,\n signals: getRegistrableSignalObservers().filter(\n (observer) => observer.registered !== true,\n ).length,\n intents: getRegistrableIntentNames().filter(\n (intentName) => !this.registeredIntentDefinitions.has(intentName),\n ).length,\n actors: (() => {\n const syncServiceName = resolveSyncServiceName();\n if (!syncServiceName) {\n return 0;\n }\n return Cadenza.getAllActors()\n .filter((actor) => isBootstrapRegistrableActor(actor))\n .map((actor) => buildActorRegistrationKey(actor, syncServiceName))\n .filter((registrationKey): registrationKey is string =>\n Boolean(registrationKey),\n )\n .filter((registrationKey) => !this.registeredActors.has(registrationKey))\n .length;\n })(),\n routines: getRegistrableRoutines().filter((routine) => !routine.registered)\n .length,\n });\n const buildMapPendingSummary = (): SyncPhasePendingSummary => ({\n directionalTaskMaps: hasPendingDirectionalTaskMaps() ? 1 : 0,\n signalTaskMaps: hasPendingSignalTaskMaps() ? 1 : 0,\n intentTaskMaps: hasPendingIntentTaskMaps() ? 1 : 0,\n actorTaskMaps: hasPendingActorTaskMaps() ? 1 : 0,\n routineTaskMaps: hasPendingRoutineTaskMaps() ? 1 : 0,\n });\n const gatherTaskRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather task registration\",\n (ctx, emit) => finalizeTaskSync(emit, ctx),\n \"Completes task registration when all registrable tasks are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherRoutineRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather routine registration\",\n (ctx, emit) => finalizeRoutineSync(emit, ctx),\n \"Completes routine registration when all registrable routines are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherSignalRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather signal registration\",\n (ctx, emit) => finalizeSignalSync(emit, ctx),\n \"Completes signal registration when all signal observers are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherIntentRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather intent registration\",\n (ctx, emit) => finalizeIntentSync(emit, ctx),\n \"Completes intent registration when all registrable intents are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherActorRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather actor registration\",\n (ctx, emit) => finalizeActorSync(emit, ctx),\n \"Completes actor registration when all registrable actors are marked registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n this.splitRoutinesTask = Cadenza.createMetaTask(\n \"Split routines for registration\",\n function* (this: GraphSyncController, ctx: any) {\n const { routines } = ctx;\n if (!routines) return;\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return;\n }\n\n for (const routine of routines) {\n if (!isRegistrableRoutine(routine)) continue;\n if (routine.registered) continue;\n this.routinesSynced = false;\n yield {\n __syncing: ctx.__syncing,\n data: {\n name: routine.name,\n version: routine.version,\n description: routine.description,\n service_name: serviceName,\n is_meta: routine.isMeta,\n },\n __routineName: routine.name,\n };\n }\n }.bind(this),\n );\n\n const routineRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"routine\",\n {\n onConflict: {\n target: [\"name\", \"version\", \"service_name\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const registerRoutineTask = Cadenza.createMetaTask(\"Register routine\", (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n scheduleSyncPassEvaluation();\n const routine = resolveLocalRoutineFromSyncContext(ctx);\n if (!routine) {\n return true;\n }\n routine.registered = true;\n\n return true;\n }).then(gatherRoutineRegistrationTask);\n wireSyncTaskGraph(this.splitRoutinesTask, routineRegistrationGraph, registerRoutineTask);\n\n this.splitTasksInRoutines = Cadenza.createMetaTask(\n \"Split tasks in routines\",\n function* (ctx: any) {\n const { routines } = ctx;\n if (!routines) return;\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return;\n }\n for (const routine of routines) {\n if (!isRegistrableRoutine(routine)) continue;\n if (!routine.registered) continue;\n\n for (const task of routine.tasks) {\n if (!task) {\n continue;\n }\n\n if (routine.registeredTasks.has(task.name)) continue;\n\n const tasks = task.getIterator();\n\n while (tasks.hasNext()) {\n const nextTask = tasks.next();\n if (!nextTask?.registered) {\n continue;\n }\n\n yield {\n __syncing: ctx.__syncing,\n data: {\n task_name: nextTask.name,\n task_version: nextTask.version,\n routine_name: routine.name,\n routine_version: routine.version,\n service_name: serviceName,\n },\n __routineName: routine.name,\n __taskName: nextTask.name,\n };\n }\n }\n }\n },\n );\n\n const registerTaskToRoutineMapGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"task_to_routine_map\",\n {\n onConflict: {\n target: [\n \"task_name\",\n \"routine_name\",\n \"task_version\",\n \"routine_version\",\n \"service_name\",\n ],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const registerTaskToRoutineMapTask = Cadenza.createMetaTask(\n \"Register routine task\",\n (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n scheduleSyncPassEvaluation();\n const routine = resolveLocalRoutineFromSyncContext(ctx);\n if (!routine) {\n return true;\n }\n routine.registeredTasks.add(ctx.__taskName);\n },\n );\n wireSyncTaskGraph(\n this.splitTasksInRoutines,\n registerTaskToRoutineMapGraph,\n registerTaskToRoutineMapTask,\n );\n\n this.splitSignalsTask = Cadenza.createMetaTask(\n \"Split signals for registration\",\n function* (this: GraphSyncController, ctx: any) {\n const { signals } = ctx;\n if (!signals) return;\n\n const seenSignals = new Set<string>();\n const filteredSignals = signals\n .map((signal: { signal: string; data: any }) => ({\n signalName: canonicalizeSignalName(signal.signal),\n data: signal.data,\n }))\n .filter((signal: { signalName: string; data: any }) => {\n if (\n !signal.signalName ||\n signal.data?.registered ||\n isBootstrapLocalOnlySignal(signal.signalName)\n ) {\n return false;\n }\n\n if (seenSignals.has(signal.signalName)) {\n return false;\n }\n\n seenSignals.add(signal.signalName);\n return true;\n })\n .map((signal: { signalName: string }) => signal.signalName);\n\n for (const signal of filteredSignals) {\n const { isMeta, isGlobal, domain, action } =\n decomposeSignalName(signal);\n this.signalsSynced = false;\n\n yield {\n __syncing: ctx.__syncing,\n data: {\n name: signal,\n is_global: isGlobal,\n domain,\n action,\n is_meta: isMeta,\n },\n __signal: signal,\n };\n }\n }.bind(this),\n );\n\n const signalRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"signal_registry\",\n {\n onConflict: {\n target: [\"name\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const processSignalRegistrationTask = Cadenza.createMetaTask(\n \"Process signal registration\",\n (ctx, emit) => {\n const insertSucceeded = didSyncInsertSucceed(ctx);\n const signalName = resolveSignalNameFromSyncContext(ctx);\n\n if (!insertSucceeded) {\n return;\n }\n\n scheduleSyncPassEvaluation();\n\n if (!signalName) {\n return false;\n }\n\n const signalObservers = (Cadenza.signalBroker as any).signalObservers;\n if (!signalObservers?.has(signalName)) {\n Cadenza.signalBroker.addSignal(signalName);\n }\n\n const observer = signalObservers?.get(signalName);\n if (observer) {\n observer.registered = true;\n observer.registrationRequested = false;\n }\n\n emit(\n \"meta.sync_controller.signal_registered\",\n buildMinimalSyncSignalContext(ctx, {\n __signal: signalName,\n }),\n );\n\n return { signalName };\n },\n )\n .then(Cadenza.signalBroker.registerSignalTask!)\n .then(gatherSignalRegistrationTask);\n wireSyncTaskGraph(\n this.splitSignalsTask,\n signalRegistrationGraph,\n processSignalRegistrationTask,\n );\n\n const applyAuthoritativeLocalSignalRegistrationsTask = Cadenza.createMetaTask(\n \"Apply authoritative local signal registrations\",\n (ctx) => {\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return false;\n }\n\n let changed = false;\n for (const map of normalizeSyncSignalMaps(ctx)) {\n if (map.deleted || map.serviceName !== serviceName) {\n continue;\n }\n\n this.authoritativeSignalTaskMaps.add(\n buildSignalTaskMapRegistrationKey(map),\n );\n\n const signalObservers = (Cadenza.signalBroker as any).signalObservers;\n if (!signalObservers?.has(map.signalName)) {\n Cadenza.signalBroker.addSignal(map.signalName);\n }\n\n const observer = signalObservers?.get(map.signalName);\n if (observer && observer.registered !== true) {\n observer.registered = true;\n observer.registrationRequested = false;\n changed = true;\n }\n\n const task = Cadenza.get(map.taskName) as any;\n if (task && (!Number.isFinite(map.taskVersion) || task.version === map.taskVersion)) {\n if (task.registered !== true) {\n task.registered = true;\n task.registrationRequested = false;\n changed = true;\n }\n\n task.registeredSignals = task.registeredSignals ?? new Set<string>();\n if (!task.registeredSignals.has(map.signalName)) {\n task.registeredSignals.add(map.signalName);\n changed = true;\n }\n }\n }\n\n if (!changed) {\n return false;\n }\n\n scheduleSyncPassEvaluation();\n return ctx;\n },\n \"Marks local signals and mapped tasks as registered when authority full sync already contains the local signal-to-task map rows.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.registered_global_signals\");\n applyAuthoritativeLocalSignalRegistrationsTask.then(\n gatherSignalRegistrationTask,\n gatherTaskRegistrationTask,\n );\n\n this.splitTasksForRegistration = Cadenza.createMetaTask(\n \"Split tasks for registration\",\n function* (this: GraphSyncController, ctx: any) {\n const tasks = ctx.tasks;\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return;\n }\n\n for (const task of tasks) {\n if (task.hidden || !task.register || task.isDeputy) continue;\n if (task.registered) continue;\n const { __functionString, __getTagCallback } = task.export();\n this.tasksSynced = false;\n\n yield {\n __syncing: ctx.__syncing,\n data: {\n name: task.name,\n version: task.version,\n description: task.description,\n function_string: __functionString,\n tag_id_getter: __getTagCallback,\n layer_index: task.layerIndex,\n concurrency: task.concurrency,\n timeout: task.timeout,\n is_unique: task.isUnique,\n is_signal: task.isSignal,\n is_throttled: task.isThrottled,\n is_debounce: task.isDebounce,\n is_ephemeral: task.isEphemeral,\n is_meta: task.isMeta,\n is_sub_meta: task.isSubMeta,\n is_hidden: task.isHidden,\n validate_input_context: task.validateInputContext,\n validate_output_context: task.validateOutputContext,\n retry_count: task.retryCount,\n retry_delay: task.retryDelay,\n retry_delay_max: task.retryDelayMax,\n retry_delay_factor: task.retryDelayFactor,\n service_name: serviceName,\n signals: {\n emits: Array.from(task.emitsSignals),\n signalsToEmitAfter: Array.from(task.signalsToEmitAfter),\n signalsToEmitOnFail: Array.from(task.signalsToEmitOnFail),\n observed: Array.from(task.observedSignals),\n },\n intents: Array.from(task.handlesIntents),\n },\n __taskName: task.name,\n };\n }\n }.bind(this),\n );\n\n const registerTaskGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"task\",\n {\n onConflict: {\n target: [\"name\", \"service_name\", \"version\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const registerTaskTask = Cadenza.createMetaTask(\n \"Record registration\",\n (ctx, emit) => {\n const task = resolveLocalTaskFromSyncContext(ctx);\n const serviceName = resolveSyncServiceName(task);\n const insertSucceeded = didSyncInsertSucceed(ctx);\n\n if (!insertSucceeded) {\n return;\n }\n\n scheduleSyncPassEvaluation();\n\n if (!task) {\n return true;\n }\n\n task.registered = true;\n (task as any).registrationRequested = false;\n emit(\n \"meta.sync_controller.task_registered\",\n buildMinimalSyncSignalContext(ctx, {\n __taskName: ctx.__taskName,\n }),\n );\n\n return true;\n },\n ).then(gatherTaskRegistrationTask);\n wireSyncTaskGraph(this.splitTasksForRegistration, registerTaskGraph, registerTaskTask);\n\n this.splitActorsForRegistration = Cadenza.createMetaTask(\n \"Split actors for registration\",\n function* (this: GraphSyncController, ctx: any) {\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return;\n }\n\n const actors = ctx.actors ?? [];\n for (const actor of actors) {\n if (!isBootstrapRegistrableActor(actor)) {\n continue;\n }\n\n const data: Record<string, any> = {\n ...buildActorRegistrationData(actor),\n service_name: serviceName,\n };\n if (!data.name) {\n continue;\n }\n\n const registrationKey = `${data.name}|${data.version}|${data.service_name}`;\n if (this.registeredActors.has(registrationKey)) {\n continue;\n }\n this.actorsSynced = false;\n\n yield {\n data,\n __actorRegistrationKey: registrationKey,\n };\n }\n }.bind(this),\n );\n const actorRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"actor\",\n {\n onConflict: {\n target: [\"name\", \"service_name\", \"version\"],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const recordActorRegistrationTask = Cadenza.createMetaTask(\n \"Record actor registration\",\n (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n scheduleSyncPassEvaluation();\n this.registeredActors.add(ctx.__actorRegistrationKey);\n return true;\n },\n ).then(gatherActorRegistrationTask);\n wireSyncTaskGraph(\n this.splitActorsForRegistration,\n actorRegistrationGraph,\n recordActorRegistrationTask,\n );\n\n this.registerActorTaskMapTask = Cadenza.createMetaTask(\n \"Defer actor task maps to manifest sync\",\n () => false,\n \"Actor-task structural maps are derived from service manifests and full sync, not persisted incrementally on the hot registration path.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n this.registerSignalToTaskMapTask = Cadenza.createMetaTask(\n \"Defer signal task maps to manifest sync\",\n () => {\n scheduleSyncPassEvaluation();\n return false;\n },\n \"Signal-task structural maps are derived from service manifests and authority full sync, not persisted incrementally on the hot registration path.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n this.splitIntentsTask = Cadenza.createMetaTask(\n \"Split intents for registration\",\n function* (this: GraphSyncController, ctx: any) {\n const intents = Array.isArray(ctx.intents)\n ? ctx.intents\n : Array.from(Cadenza.inquiryBroker.intents.values());\n\n for (const intent of intents) {\n if (!isRegistrableLocalIntentDefinition(intent)) {\n continue;\n }\n\n const intentData = buildIntentRegistryData(intent);\n if (!intentData) {\n continue;\n }\n\n if (this.registeredIntentDefinitions.has(intentData.name as string)) {\n continue;\n }\n\n this.intentsSynced = false;\n yield {\n __syncing: ctx.__syncing,\n data: intentData,\n __intentName: intentData.name,\n };\n }\n }.bind(this),\n );\n\n const recordIntentDefinitionRegistrationTask = Cadenza.createMetaTask(\n \"Record intent definition registration\",\n (ctx, emit) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n scheduleSyncPassEvaluation();\n\n const intentName =\n typeof ctx.__intentName === \"string\" ? ctx.__intentName : \"\";\n this.registeredIntentDefinitions.add(intentName);\n\n const intentDefinition = intentName\n ? ((Cadenza.inquiryBroker.intents.get(intentName) as unknown as Record<\n string,\n unknown\n > | undefined) ?? null)\n : null;\n if (intentDefinition) {\n intentDefinition.registered = true;\n intentDefinition.registrationRequested = false;\n }\n\n emit(\n \"meta.sync_controller.intent_registered\",\n buildMinimalSyncSignalContext(ctx, {\n __intentName: intentName,\n }),\n );\n\n return true;\n },\n ).then(gatherIntentRegistrationTask);\n wireSyncTaskGraph(\n this.splitIntentsTask,\n insertIntentRegistryTask,\n recordIntentDefinitionRegistrationTask,\n );\n\n const applyAuthoritativeLocalIntentRegistrationsTask = Cadenza.createMetaTask(\n \"Apply authoritative local intent registrations\",\n (ctx) => {\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return false;\n }\n\n let changed = false;\n for (const map of normalizeSyncIntentMaps(ctx)) {\n if (map.deleted || map.serviceName !== serviceName) {\n continue;\n }\n\n this.registeredIntentDefinitions.add(map.intentName);\n\n const intentDefinition = Cadenza.inquiryBroker.intents.get(map.intentName) as\n | Record<string, any>\n | undefined;\n if (intentDefinition) {\n if (intentDefinition.registered !== true) {\n intentDefinition.registered = true;\n intentDefinition.registrationRequested = false;\n changed = true;\n }\n }\n\n const task = Cadenza.get(map.taskName) as any;\n if (task && (!Number.isFinite(map.taskVersion) || task.version === map.taskVersion)) {\n task.__registeredIntents = task.__registeredIntents ?? new Set<string>();\n if (!task.__registeredIntents.has(map.intentName)) {\n task.__registeredIntents.add(map.intentName);\n changed = true;\n }\n\n if (task.registered !== true) {\n task.registered = true;\n task.registrationRequested = false;\n changed = true;\n }\n }\n }\n\n if (!changed) {\n return false;\n }\n\n scheduleSyncPassEvaluation();\n return ctx;\n },\n \"Marks local intents and mapped tasks as registered when authority full sync already contains the local intent-to-task map rows.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.registered_global_intents\");\n applyAuthoritativeLocalIntentRegistrationsTask.then(\n gatherIntentRegistrationTask,\n gatherTaskRegistrationTask,\n );\n\n const applyAuthoritativeLocalManifestRegistrationsTask = Cadenza.createMetaTask(\n \"Apply authoritative local manifest registrations\",\n (ctx) => {\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return false;\n }\n\n this.authoritativeSignalTaskMaps.clear();\n let changed = false;\n\n for (const taskDefinition of normalizeSyncTasks(ctx)) {\n if (taskDefinition.serviceName !== serviceName) {\n continue;\n }\n\n const task = Cadenza.get(taskDefinition.name) as any;\n if (\n task &&\n (!Number.isFinite(taskDefinition.version) ||\n task.version === taskDefinition.version) &&\n task.registered !== true\n ) {\n task.registered = true;\n task.registrationRequested = false;\n changed = true;\n }\n }\n\n for (const signalDefinition of normalizeSyncSignals(ctx)) {\n if (!signalDefinition.name) {\n continue;\n }\n\n const signalObservers = (Cadenza.signalBroker as any).signalObservers;\n if (!signalObservers?.has(signalDefinition.name)) {\n Cadenza.signalBroker.addSignal(signalDefinition.name);\n }\n\n const observer = signalObservers?.get(signalDefinition.name);\n if (observer && observer.registered !== true) {\n observer.registered = true;\n observer.registrationRequested = false;\n changed = true;\n }\n }\n\n for (const map of normalizeSyncSignalMaps(ctx)) {\n if (map.deleted || map.serviceName !== serviceName) {\n continue;\n }\n\n this.authoritativeSignalTaskMaps.add(\n buildSignalTaskMapRegistrationKey(map),\n );\n\n const signalObservers = (Cadenza.signalBroker as any).signalObservers;\n if (!signalObservers?.has(map.signalName)) {\n Cadenza.signalBroker.addSignal(map.signalName);\n }\n\n const observer = signalObservers?.get(map.signalName);\n if (observer && observer.registered !== true) {\n observer.registered = true;\n observer.registrationRequested = false;\n changed = true;\n }\n\n const task = Cadenza.get(map.taskName) as any;\n if (task && (!Number.isFinite(map.taskVersion) || task.version === map.taskVersion)) {\n if (task.registered !== true) {\n task.registered = true;\n task.registrationRequested = false;\n changed = true;\n }\n\n task.registeredSignals = task.registeredSignals ?? new Set<string>();\n if (!task.registeredSignals.has(map.signalName)) {\n task.registeredSignals.add(map.signalName);\n changed = true;\n }\n }\n }\n\n for (const intentDefinition of normalizeSyncIntents(ctx)) {\n if (!intentDefinition.name) {\n continue;\n }\n\n this.registeredIntentDefinitions.add(intentDefinition.name);\n const intent = Cadenza.inquiryBroker.intents.get(intentDefinition.name) as\n | Record<string, any>\n | undefined;\n if (intent && intent.registered !== true) {\n intent.registered = true;\n intent.registrationRequested = false;\n changed = true;\n }\n }\n\n for (const map of normalizeSyncIntentMaps(ctx)) {\n if (map.deleted || map.serviceName !== serviceName) {\n continue;\n }\n\n this.registeredIntentDefinitions.add(map.intentName);\n\n const intent = Cadenza.inquiryBroker.intents.get(map.intentName) as\n | Record<string, any>\n | undefined;\n if (intent && intent.registered !== true) {\n intent.registered = true;\n intent.registrationRequested = false;\n changed = true;\n }\n\n const task = Cadenza.get(map.taskName) as any;\n if (task && (!Number.isFinite(map.taskVersion) || task.version === map.taskVersion)) {\n task.__registeredIntents = task.__registeredIntents ?? new Set<string>();\n if (!task.__registeredIntents.has(map.intentName)) {\n task.__registeredIntents.add(map.intentName);\n changed = true;\n }\n\n if (task.registered !== true) {\n task.registered = true;\n task.registrationRequested = false;\n changed = true;\n }\n }\n }\n\n for (const actorDefinition of normalizeSyncActors(ctx)) {\n if (actorDefinition.serviceName !== serviceName || !actorDefinition.name) {\n continue;\n }\n\n this.registeredActors.add(\n `${actorDefinition.name}|${actorDefinition.version}|${actorDefinition.serviceName}`,\n );\n changed = true;\n }\n\n for (const routineDefinition of normalizeSyncRoutines(ctx)) {\n if (routineDefinition.serviceName !== serviceName) {\n continue;\n }\n\n const routine = Cadenza.getRoutine(routineDefinition.name) as any;\n if (\n routine &&\n (!Number.isFinite(routineDefinition.version) ||\n routine.version === routineDefinition.version) &&\n routine.registered !== true\n ) {\n routine.registered = true;\n changed = true;\n }\n }\n\n for (const map of normalizeSyncDirectionalTaskMaps(ctx)) {\n if (\n map.serviceName !== serviceName ||\n map.predecessorServiceName !== serviceName\n ) {\n continue;\n }\n\n const predecessorTask = Cadenza.get(map.predecessorTaskName) as any;\n const nextTask = Cadenza.get(map.taskName) as any;\n if (\n predecessorTask &&\n nextTask &&\n predecessorTask.version === map.predecessorTaskVersion &&\n nextTask.version === map.taskVersion &&\n !predecessorTask.taskMapRegistration.has(map.taskName)\n ) {\n predecessorTask.taskMapRegistration.add(map.taskName);\n changed = true;\n }\n }\n\n for (const map of normalizeSyncActorTaskMaps(ctx)) {\n if (map.serviceName !== serviceName) {\n continue;\n }\n\n this.registeredActorTaskMaps.add(\n `${map.actorName}|${map.taskName}|${map.taskVersion}|${map.serviceName}`,\n );\n changed = true;\n }\n\n for (const map of normalizeSyncTaskToRoutineMaps(ctx)) {\n if (map.serviceName !== serviceName) {\n continue;\n }\n\n const routine = Cadenza.getRoutine(map.routineName) as any;\n const task = Cadenza.get(map.taskName) as any;\n if (\n routine &&\n task &&\n routine.version === map.routineVersion &&\n task.version === map.taskVersion &&\n !routine.registeredTasks.has(map.taskName)\n ) {\n routine.registeredTasks.add(map.taskName);\n changed = true;\n }\n }\n\n if (!changed) {\n return false;\n }\n\n scheduleSyncPassEvaluation();\n return ctx;\n },\n \"Marks local static primitives and structural maps as registered when authority full sync already contains the local manifest snapshot.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\n \"meta.service_registry.initial_sync_complete\",\n );\n applyAuthoritativeLocalManifestRegistrationsTask.then(\n gatherTaskRegistrationTask,\n gatherSignalRegistrationTask,\n gatherIntentRegistrationTask,\n gatherActorRegistrationTask,\n gatherRoutineRegistrationTask,\n );\n\n this.registerIntentToTaskMapTask = Cadenza.createMetaTask(\n \"Defer intent task maps to manifest sync\",\n () => {\n scheduleSyncPassEvaluation();\n return false;\n },\n \"Intent-task structural maps are derived from service manifests and authority full sync, not persisted incrementally on the hot registration path.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n this.registerTaskMapTask = Cadenza.createMetaTask(\n \"Register task map to DB\",\n function* (ctx) {\n const task = ctx.task;\n if (task.hidden || !task.register || task.isDeputy || !task.registered) {\n return;\n }\n\n const predecessorServiceName = resolveSyncServiceName(task);\n if (!predecessorServiceName) {\n return;\n }\n for (const t of task.nextTasks) {\n if (\n task.taskMapRegistration.has(t.name) ||\n t.hidden ||\n !t.register ||\n !t.registered\n ) {\n continue;\n }\n\n const serviceName = resolveSyncServiceName(t as any);\n if (!serviceName) {\n continue;\n }\n\n yield {\n data: {\n task_name: t.name,\n task_version: t.version,\n predecessor_task_name: task.name,\n predecessor_task_version: task.version,\n service_name: serviceName,\n predecessor_service_name: predecessorServiceName,\n },\n __taskName: task.name,\n __nextTaskName: t.name,\n };\n }\n },\n );\n const taskMapRegistrationGraph = resolveSyncInsertTask(\n this.isCadenzaDBReady,\n \"directional_task_graph_map\",\n {\n onConflict: {\n target: [\n \"task_name\",\n \"predecessor_task_name\",\n \"task_version\",\n \"predecessor_task_version\",\n \"service_name\",\n \"predecessor_service_name\",\n ],\n action: {\n do: \"nothing\",\n },\n },\n },\n { concurrency: 30 },\n );\n const recordTaskMapRegistrationTask = Cadenza.createMetaTask(\n \"Record task map registration\",\n (ctx) => {\n if (!didSyncInsertSucceed(ctx)) {\n return;\n }\n\n scheduleSyncPassEvaluation();\n\n Cadenza.get(ctx.__taskName)?.taskMapRegistration.add(\n ctx.__nextTaskName,\n );\n },\n );\n wireSyncTaskGraph(\n this.registerTaskMapTask,\n taskMapRegistrationGraph,\n recordTaskMapRegistrationTask,\n );\n\n const hasPendingDirectionalTaskMaps = () =>\n getRegistrableTasks().some((task) => {\n if (task.isHidden || !task.register || !task.registered) {\n return false;\n }\n\n const predecessorServiceName = resolveSyncServiceName(task);\n if (!predecessorServiceName) {\n return false;\n }\n\n for (const nextTask of task.nextTasks) {\n if (\n task.taskMapRegistration.has(nextTask.name) ||\n nextTask.isHidden ||\n !nextTask.register ||\n !nextTask.registered\n ) {\n continue;\n }\n\n if (resolveSyncServiceName(nextTask)) {\n return true;\n }\n }\n\n return false;\n });\n\n const getPendingSignalTaskMapEntries = () =>\n getRegistrableTasks().flatMap((task) => {\n if (task.isHidden || !task.register || !task.registered) {\n return [];\n }\n\n const pendingSignals: Array<{\n taskName: string;\n taskVersion: number;\n signalName: string;\n registrationKey?: string;\n authoritativeKnown?: boolean;\n }> = [];\n\n for (const signal of task.observedSignals) {\n const signalName = canonicalizeSignalName(signal);\n if (!signalName) {\n continue;\n }\n\n if (task.registeredSignals.has(signalName)) {\n continue;\n }\n\n const registrationKey = buildSignalTaskMapRegistrationKey({\n signalName,\n serviceName: resolveSyncServiceName(task) ?? \"\",\n taskName: task.name,\n taskVersion: task.version,\n });\n if (this.authoritativeSignalTaskMaps.has(registrationKey)) {\n continue;\n }\n\n if (!decomposeSignalName(signalName).isGlobal) {\n continue;\n }\n\n if (\n !(Cadenza.signalBroker as any).signalObservers?.get(signalName)\n ?.registered\n ) {\n continue;\n }\n\n pendingSignals.push({\n taskName: task.name,\n taskVersion: task.version,\n signalName,\n registrationKey,\n authoritativeKnown: this.authoritativeSignalTaskMaps.has(\n registrationKey,\n ),\n });\n }\n\n return pendingSignals;\n });\n\n const hasPendingSignalTaskMaps = () =>\n getPendingSignalTaskMapEntries().length > 0;\n\n const hasPendingIntentTaskMaps = () =>\n getRegistrableTasks().some((task) => {\n if (task.isHidden || !task.register || !task.registered) {\n return false;\n }\n\n const registeredIntents =\n ((task as any).__registeredIntents as Set<string> | undefined) ??\n new Set<string>();\n\n for (const intent of task.handlesIntents) {\n if (registeredIntents.has(intent) || isLocalOnlySyncIntent(intent)) {\n continue;\n }\n\n if (isMetaIntentName(intent) && !task.isMeta) {\n continue;\n }\n\n const intentDefinition =\n buildIntentRegistryData(Cadenza.inquiryBroker.intents.get(intent)) ??\n buildIntentRegistryData({ name: intent });\n\n if (!intentDefinition) {\n continue;\n }\n\n return true;\n }\n\n return false;\n });\n\n const hasPendingActorTaskMaps = () =>\n getRegistrableTasks().some((task) => {\n if (task.isHidden || !task.register || !task.registered) {\n return false;\n }\n\n const metadata = getActorTaskRuntimeMetadata(task.taskFunction);\n if (!metadata?.actorName) {\n return false;\n }\n\n const serviceName = resolveSyncServiceName(task);\n if (!serviceName) {\n return false;\n }\n\n const registrationKey = `${metadata.actorName}|${task.name}|${task.version}|${serviceName}`;\n return !this.registeredActorTaskMaps.has(registrationKey);\n });\n\n const hasPendingRoutineTaskMaps = () =>\n getRegistrableRoutines().some((routine: any) => {\n if (!routine.registered) {\n return false;\n }\n\n for (const task of routine.tasks) {\n if (!task) {\n continue;\n }\n\n const tasks = task.getIterator();\n while (tasks.hasNext()) {\n const nextTask = tasks.next();\n if (!nextTask?.registered) {\n continue;\n }\n\n if (!routine.registeredTasks.has(nextTask.name)) {\n return true;\n }\n }\n }\n\n return false;\n });\n\n const gatherDirectionalTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather directional task map registration\",\n (ctx) => {\n scheduleSyncPassEvaluation();\n if (hasPendingDirectionalTaskMaps()) {\n this.directionalTaskMapsSynced = false;\n return false;\n }\n\n this.directionalTaskMapsSynced = true;\n return ctx;\n },\n \"Completes directional task graph registration when task edges and deputy edges are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherSignalTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather signal task map registration\",\n (ctx) => {\n scheduleSyncPassEvaluation();\n if (hasPendingSignalTaskMaps()) {\n this.signalTaskMapsSynced = false;\n return false;\n }\n\n this.signalTaskMapsSynced = true;\n return ctx;\n },\n \"Completes signal-to-task map registration when all global observed signal edges are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherIntentTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather intent task map registration\",\n (ctx) => {\n scheduleSyncPassEvaluation();\n if (hasPendingIntentTaskMaps()) {\n this.intentTaskMapsSynced = false;\n return false;\n }\n\n this.intentTaskMapsSynced = true;\n return ctx;\n },\n \"Completes intent-to-task map registration when all task responders are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherActorTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather actor task map registration\",\n (ctx) => {\n scheduleSyncPassEvaluation();\n if (hasPendingActorTaskMaps()) {\n this.actorTaskMapsSynced = false;\n return false;\n }\n\n this.actorTaskMapsSynced = true;\n return ctx;\n },\n \"Completes actor-to-task map registration when all actor-backed tasks are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const gatherRoutineTaskMapRegistrationTask = Cadenza.createUniqueMetaTask(\n \"Gather routine task map registration\",\n (ctx) => {\n scheduleSyncPassEvaluation();\n if (hasPendingRoutineTaskMaps()) {\n this.routineTaskMapsSynced = false;\n return false;\n }\n\n this.routineTaskMapsSynced = true;\n return ctx;\n },\n \"Completes task-to-routine map registration when all routine task memberships are registered.\",\n {\n register: false,\n isHidden: true,\n },\n );\n applyAuthoritativeLocalManifestRegistrationsTask.then(\n gatherDirectionalTaskMapRegistrationTask,\n gatherSignalTaskMapRegistrationTask,\n gatherIntentTaskMapRegistrationTask,\n gatherActorTaskMapRegistrationTask,\n gatherRoutineTaskMapRegistrationTask,\n );\n\n const startDirectionalTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start directional task map sync\",\n (ctx) => ctx,\n \"Starts the directional task graph map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startSignalTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start signal task map sync\",\n (ctx) => ctx,\n \"Starts the signal-to-task map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startIntentTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start intent task map sync\",\n (ctx) => ctx,\n \"Starts the intent-to-task map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startActorTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start actor task map sync\",\n (ctx) => ctx,\n \"Starts the actor-to-task map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startRoutineTaskMapSyncTask = Cadenza.createMetaTask(\n \"Start routine task map sync\",\n (ctx) => ctx,\n \"Starts the task-to-routine map branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const completeSyncCycleTask = Cadenza.createUniqueMetaTask(\n \"Complete sync cycle\",\n this.syncCycleCoordinatorActor.task(\n ({\n input,\n runtimeState,\n setRuntimeState,\n }: {\n input: Record<string, any>;\n runtimeState: SyncCycleRuntimeState | null | undefined;\n setRuntimeState: (nextState: SyncCycleRuntimeState | null) => void;\n }) => {\n const state: SyncCycleRuntimeState = runtimeState ?? {\n ...DEFAULT_SYNC_CYCLE_RUNTIME_STATE,\n };\n const syncCycleId =\n typeof input?.__syncCycleId === \"string\" ? input.__syncCycleId.trim() : \"\";\n if (!syncCycleId || state.activeSyncCycleId !== syncCycleId) {\n return false;\n }\n\n const finishedAt = Date.now();\n const cycleDurationMs = finishedAt - state.activeSyncCycleStartedAt;\n const serviceName =\n typeof input?.__serviceName === \"string\"\n ? input.__serviceName\n : resolveSyncServiceName();\n\n setRuntimeState({\n ...state,\n activeSyncCycleId: null,\n activeSyncCycleStartedAt: 0,\n phase: \"idle\",\n });\n\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] sync_cycle_finished\", {\n serviceName,\n syncCycleId,\n cycleDurationMs,\n converged: input?.__syncConverged === true,\n shouldRerun: input?.__syncShouldRerun === true,\n });\n }\n\n return {\n ...input,\n __syncCycleDurationMs: cycleDurationMs,\n };\n },\n { mode: \"write\" },\n ),\n \"Clears the active bootstrap sync cycle once a pass outcome has been decided.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n const requestNextSyncCycleTask = Cadenza.createUniqueMetaTask(\n \"Request next sync cycle\",\n () => {\n Cadenza.debounce(\"meta.sync_controller.sync_tick\", {}, 100);\n return true;\n },\n \"Requests the next sequential bootstrap sync pass.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n const emitSyncCompleteTask = Cadenza.createUniqueMetaTask(\n \"Emit sync complete\",\n (_ctx, emit) => {\n emit(\"global.meta.sync_controller.synced\", {\n data: {\n is_active: true,\n is_non_responsive: false,\n is_blocked: false,\n last_active: formatTimestamp(Date.now()),\n },\n filter: {\n uuid: Cadenza.serviceRegistry.serviceInstanceId,\n },\n });\n\n return true;\n },\n \"Emits the final synced signal after bootstrap graph sync convergence.\",\n {\n register: false,\n isHidden: true,\n },\n ).attachSignal(\"global.meta.sync_controller.synced\");\n\n const routeConvergedSyncOutcomeTask = Cadenza.createMetaTask(\n \"Route converged sync outcome\",\n (ctx) => (ctx.__syncConverged === true ? ctx : false),\n \"Continues only when the bootstrap sync cycle has converged.\",\n {\n register: false,\n isHidden: true,\n },\n ).then(emitSyncCompleteTask);\n\n const routeRerunSyncOutcomeTask = Cadenza.createMetaTask(\n \"Route rerun sync outcome\",\n (ctx) => (ctx.__syncShouldRerun === true ? ctx : false),\n \"Continues only when another bootstrap sync pass is required.\",\n {\n register: false,\n isHidden: true,\n },\n ).then(requestNextSyncCycleTask);\n\n const advanceToMapPhaseTask = Cadenza.createMetaTask(\n \"Advance to map sync phase\",\n this.syncCycleCoordinatorActor.task(\n ({\n input,\n runtimeState,\n setRuntimeState,\n }: {\n input: Record<string, any>;\n runtimeState: SyncCycleRuntimeState | null | undefined;\n setRuntimeState: (nextState: SyncCycleRuntimeState | null) => void;\n }) => {\n const state: SyncCycleRuntimeState = runtimeState ?? {\n ...DEFAULT_SYNC_CYCLE_RUNTIME_STATE,\n };\n const syncCycleId =\n typeof input?.__syncCycleId === \"string\" ? input.__syncCycleId.trim() : \"\";\n if (!syncCycleId || state.activeSyncCycleId !== syncCycleId) {\n return false;\n }\n\n setRuntimeState({\n ...state,\n phase: \"map\",\n });\n\n return {\n ...input,\n __syncPhase: \"map\",\n };\n },\n { mode: \"write\" },\n ),\n \"Advances the active bootstrap sync cycle into the map phase.\",\n {\n register: false,\n isHidden: true,\n },\n ).then(\n startDirectionalTaskMapSyncTask,\n startSignalTaskMapSyncTask,\n startIntentTaskMapSyncTask,\n startActorTaskMapSyncTask,\n startRoutineTaskMapSyncTask,\n );\n\n const evaluateActiveSyncCycleTask = Cadenza.createUniqueMetaTask(\n \"Evaluate active sync cycle\",\n this.syncCycleCoordinatorActor.task(\n ({\n input,\n runtimeState,\n }: {\n input: Record<string, any>;\n runtimeState: SyncCycleRuntimeState | null | undefined;\n }) => {\n const state: SyncCycleRuntimeState = runtimeState ?? {\n ...DEFAULT_SYNC_CYCLE_RUNTIME_STATE,\n };\n if (!state.activeSyncCycleId || state.phase === \"idle\") {\n return false;\n }\n\n const serviceName = resolveSyncServiceName();\n if (!serviceName) {\n return false;\n }\n\n if (state.phase === \"primitive\") {\n const primitivePendingSummary = buildPrimitivePendingSummary();\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] primitive_phase_evaluated\", {\n serviceName,\n syncCycleId: state.activeSyncCycleId,\n primitivePendingSummary,\n });\n }\n\n return {\n ...input,\n __syncing: true,\n __syncCycleId: state.activeSyncCycleId,\n __serviceName: serviceName,\n __serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n __primitivePendingSummary: primitivePendingSummary,\n __syncAdvanceToMap: !hasNonZeroPending(primitivePendingSummary),\n __syncShouldRerun: hasNonZeroPending(primitivePendingSummary),\n __syncConverged: false,\n };\n }\n\n const primitivePendingSummary =\n input?.__primitivePendingSummary &&\n typeof input.__primitivePendingSummary === \"object\"\n ? input.__primitivePendingSummary\n : buildPrimitivePendingSummary();\n const mapPendingSummary = buildMapPendingSummary();\n const converged =\n !hasNonZeroPending(primitivePendingSummary) &&\n !hasNonZeroPending(mapPendingSummary);\n\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] map_phase_evaluated\", {\n serviceName,\n syncCycleId: state.activeSyncCycleId,\n primitivePendingSummary,\n mapPendingSummary,\n pendingSignalTaskMapsSample: getPendingSignalTaskMapEntries().slice(\n 0,\n 5,\n ),\n converged,\n });\n }\n\n return {\n ...input,\n __syncing: true,\n __syncCycleId: state.activeSyncCycleId,\n __serviceName: serviceName,\n __serviceInstanceId: Cadenza.serviceRegistry.serviceInstanceId,\n __primitivePendingSummary: primitivePendingSummary,\n __mapPendingSummary: mapPendingSummary,\n __syncAdvanceToMap: false,\n __syncShouldRerun: !converged,\n __syncConverged: converged,\n };\n },\n { mode: \"write\" },\n ),\n \"Evaluates the current bootstrap sync pass after resource activity settles.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(SYNC_PASS_EVALUATION_SIGNAL);\n\n const routePrimitiveToMapPhaseTask = Cadenza.createMetaTask(\n \"Route primitive pass to map phase\",\n (ctx) => (ctx.__syncAdvanceToMap === true ? ctx : false),\n \"Continues only when the primitive pass has converged and the map phase should begin.\",\n {\n register: false,\n isHidden: true,\n },\n ).then(advanceToMapPhaseTask);\n\n const routePrimitiveToCycleCompletionTask = Cadenza.createMetaTask(\n \"Route primitive pass to cycle completion\",\n (ctx) =>\n ctx.__syncAdvanceToMap === true ? false : ctx,\n \"Continues only when the current sync pass should complete without entering the map phase.\",\n {\n register: false,\n isHidden: true,\n },\n ).then(completeSyncCycleTask);\n\n completeSyncCycleTask.then(\n routeConvergedSyncOutcomeTask,\n routeRerunSyncOutcomeTask,\n );\n\n evaluateActiveSyncCycleTask.then(\n routePrimitiveToMapPhaseTask,\n routePrimitiveToCycleCompletionTask,\n );\n\n const markLocalServiceInsertedForBootstrapSyncTask =\n Cadenza.createUniqueMetaTask(\n \"Mark local service inserted for bootstrap sync\",\n (ctx) => {\n const serviceName = resolveSyncServiceName();\n const insertedServiceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : typeof ctx.service_name === \"string\"\n ? ctx.service_name\n : null;\n\n if (!serviceName || insertedServiceName !== serviceName) {\n return false;\n }\n\n this.localServiceInserted = true;\n return true;\n },\n \"Marks that the local service row has been inserted in authority so bootstrap sync can start only after that prerequisite.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.service_inserted\");\n\n const markLocalServiceInstanceInsertedForBootstrapSyncTask =\n Cadenza.createUniqueMetaTask(\n \"Mark local service instance inserted for bootstrap sync\",\n (ctx) => {\n const serviceName = resolveSyncServiceName();\n const insertedServiceName =\n typeof ctx.__serviceName === \"string\"\n ? ctx.__serviceName\n : typeof ctx.service_name === \"string\"\n ? ctx.service_name\n : null;\n\n if (!serviceName || insertedServiceName !== serviceName) {\n return false;\n }\n\n this.localServiceInstanceInserted = true;\n return true;\n },\n \"Marks that the local service instance row has been inserted in authority so bootstrap sync can start only after that prerequisite.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.instance_inserted\");\n\n const startBootstrapSyncTask = Cadenza.createUniqueMetaTask(\n \"Start bootstrap graph sync\",\n this.syncCycleCoordinatorActor.task(\n ({\n input,\n runtimeState,\n setRuntimeState,\n }: {\n input: Record<string, any>;\n runtimeState: SyncCycleRuntimeState | null | undefined;\n setRuntimeState: (nextState: SyncCycleRuntimeState | null) => void;\n }) => {\n const ctx = input as Record<string, any>;\n const now = Date.now();\n const serviceName = resolveSyncServiceName();\n const serviceInstanceId = Cadenza.serviceRegistry.serviceInstanceId;\n const state: SyncCycleRuntimeState = runtimeState ?? {\n ...DEFAULT_SYNC_CYCLE_RUNTIME_STATE,\n };\n if (!serviceName || !serviceInstanceId) {\n return false;\n }\n\n if (!this.localServiceInserted || !this.localServiceInstanceInserted) {\n return false;\n }\n\n if (!ServiceRegistry.instance.hasLocalInstanceRegistered()) {\n return false;\n }\n\n if (ctx.__bootstrapFullSync === true) {\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\n \"[CADENZA_SYNC_PHASE_TRACE] sync_cycle_ignored_bootstrap_full_sync\",\n {\n serviceName,\n reason:\n typeof ctx.__reason === \"string\" ? ctx.__reason : undefined,\n attempt:\n typeof ctx.__bootstrapFullSyncAttempt === \"number\"\n ? ctx.__bootstrapFullSyncAttempt\n : undefined,\n },\n );\n }\n return false;\n }\n\n if (state.activeSyncCycleId) {\n const activeCycleAgeMs = now - state.activeSyncCycleStartedAt;\n if (activeCycleAgeMs < BOOTSTRAP_SYNC_STALE_CYCLE_MS) {\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] sync_cycle_deferred\", {\n serviceName,\n activeSyncCycleId: state.activeSyncCycleId,\n activeCycleAgeMs,\n staleCycleMs: BOOTSTRAP_SYNC_STALE_CYCLE_MS,\n triggerSignal:\n typeof ctx.__signal === \"string\" ? ctx.__signal : undefined,\n reason:\n typeof ctx.__reason === \"string\" ? ctx.__reason : undefined,\n });\n }\n return false;\n }\n\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] sync_cycle_stale_restart\", {\n serviceName,\n previousSyncCycleId: state.activeSyncCycleId,\n activeCycleAgeMs,\n staleCycleMs: BOOTSTRAP_SYNC_STALE_CYCLE_MS,\n triggerSignal:\n typeof ctx.__signal === \"string\" ? ctx.__signal : undefined,\n reason:\n typeof ctx.__reason === \"string\" ? ctx.__reason : undefined,\n });\n }\n }\n\n const syncCycleId = `${now}-${uuid()}`;\n setRuntimeState({\n activeSyncCycleId: syncCycleId,\n activeSyncCycleStartedAt: now,\n phase: \"primitive\",\n });\n\n if (shouldTraceSyncPhase(serviceName)) {\n console.log(\"[CADENZA_SYNC_PHASE_TRACE] sync_cycle_started\", {\n serviceName,\n syncCycleId,\n startedAt: now,\n triggerSignal:\n typeof ctx.__signal === \"string\" ? ctx.__signal : undefined,\n reason:\n typeof ctx.__reason === \"string\" ? ctx.__reason : undefined,\n });\n }\n\n return {\n ...ctx,\n __syncing: true,\n __syncCycleId: syncCycleId,\n __serviceName: serviceName,\n __serviceInstanceId: serviceInstanceId,\n };\n },\n { mode: \"write\" },\n ),\n \"Starts a deterministic bootstrap sync cycle once the local service instance exists.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\n \"meta.service_registry.service_inserted\",\n \"meta.service_registry.instance_inserted\",\n \"meta.sync_controller.sync_tick\",\n \"meta.sync_requested\",\n );\n\n const startTaskPrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start task primitive sync\",\n (ctx) => ctx,\n \"Starts the task registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startSignalPrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start signal primitive sync\",\n (ctx) => ctx,\n \"Starts the signal registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startIntentPrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start intent primitive sync\",\n (ctx) => ctx,\n \"Starts the intent registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startActorPrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start actor primitive sync\",\n (ctx) => ctx,\n \"Starts the actor registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n const startRoutinePrimitiveSyncTask = Cadenza.createMetaTask(\n \"Start routine primitive sync\",\n (ctx) => ctx,\n \"Starts the routine registration branch for the current sync cycle.\",\n {\n register: false,\n isHidden: true,\n },\n );\n\n startBootstrapSyncTask.then(\n startTaskPrimitiveSyncTask,\n startSignalPrimitiveSyncTask,\n startIntentPrimitiveSyncTask,\n startActorPrimitiveSyncTask,\n startRoutinePrimitiveSyncTask,\n );\n\n const getAllTasksForSyncTask = Cadenza.registry.getAllTasks!.clone();\n startTaskPrimitiveSyncTask.then(\n getAllTasksForSyncTask,\n gatherTaskRegistrationTask,\n );\n getAllTasksForSyncTask.then(this.splitTasksForRegistration);\n\n const getSignalsForSyncTask = Cadenza.signalBroker.getSignalsTask!.clone();\n startSignalPrimitiveSyncTask.then(\n getSignalsForSyncTask,\n gatherSignalRegistrationTask,\n );\n getSignalsForSyncTask.then(this.splitSignalsTask);\n\n const getAllIntentsForSyncTask = Cadenza.createUniqueMetaTask(\n \"Get all intents for sync\",\n (ctx) => ({\n ...ctx,\n intents: Array.from(Cadenza.inquiryBroker.intents.values()).filter(\n (intent) => isRegistrableLocalIntentDefinition(intent),\n ),\n }),\n \"Collects local intents for the primitive sync phase.\",\n {\n register: false,\n isHidden: true,\n },\n );\n startIntentPrimitiveSyncTask.then(\n getAllIntentsForSyncTask,\n gatherIntentRegistrationTask,\n );\n getAllIntentsForSyncTask.then(this.splitIntentsTask);\n\n const getAllActorsForSyncTask = Cadenza.createUniqueMetaTask(\n \"Get all actors for sync\",\n (ctx) => ({\n ...ctx,\n actors: Cadenza.getAllActors(),\n }),\n \"Collects local actors for the primitive sync phase.\",\n {\n register: false,\n isHidden: true,\n },\n );\n startActorPrimitiveSyncTask.then(\n getAllActorsForSyncTask,\n gatherActorRegistrationTask,\n );\n getAllActorsForSyncTask.then(this.splitActorsForRegistration);\n\n const getAllRoutinesForSyncTask = Cadenza.registry.getAllRoutines!.clone();\n startRoutinePrimitiveSyncTask.then(\n getAllRoutinesForSyncTask,\n gatherRoutineRegistrationTask,\n );\n getAllRoutinesForSyncTask.then(this.splitRoutinesTask);\n\n const iterateTasksForDirectionalTaskMapSyncTask =\n Cadenza.registry.doForEachTask!.clone();\n startDirectionalTaskMapSyncTask.then(\n iterateTasksForDirectionalTaskMapSyncTask,\n gatherDirectionalTaskMapRegistrationTask,\n );\n iterateTasksForDirectionalTaskMapSyncTask.then(this.registerTaskMapTask);\n recordTaskMapRegistrationTask.then(gatherDirectionalTaskMapRegistrationTask);\n\n const iterateTasksForSignalTaskMapSyncTask =\n Cadenza.registry.doForEachTask!.clone();\n startSignalTaskMapSyncTask.then(\n iterateTasksForSignalTaskMapSyncTask,\n gatherSignalTaskMapRegistrationTask,\n );\n iterateTasksForSignalTaskMapSyncTask.then(this.registerSignalToTaskMapTask);\n this.registerSignalToTaskMapTask.then(gatherSignalTaskMapRegistrationTask);\n\n const iterateTasksForIntentTaskMapSyncTask =\n Cadenza.registry.doForEachTask!.clone();\n startIntentTaskMapSyncTask.then(\n iterateTasksForIntentTaskMapSyncTask,\n gatherIntentTaskMapRegistrationTask,\n );\n iterateTasksForIntentTaskMapSyncTask.then(this.registerIntentToTaskMapTask);\n this.registerIntentToTaskMapTask.then(gatherIntentTaskMapRegistrationTask);\n\n const iterateTasksForActorTaskMapSyncTask =\n Cadenza.registry.doForEachTask!.clone();\n startActorTaskMapSyncTask.then(\n iterateTasksForActorTaskMapSyncTask,\n gatherActorTaskMapRegistrationTask,\n );\n iterateTasksForActorTaskMapSyncTask.then(this.registerActorTaskMapTask);\n\n const getAllRoutinesForTaskMapSyncTask = Cadenza.registry.getAllRoutines!.clone();\n startRoutineTaskMapSyncTask.then(\n getAllRoutinesForTaskMapSyncTask,\n gatherRoutineTaskMapRegistrationTask,\n );\n getAllRoutinesForTaskMapSyncTask.then(this.splitTasksInRoutines);\n registerTaskToRoutineMapTask.then(gatherRoutineTaskMapRegistrationTask);\n\n Cadenza.createMetaTask(\n \"Request sync after local service instance registration\",\n (ctx) => {\n for (const delayMs of EARLY_SYNC_TICK_DELAYS_MS) {\n Cadenza.schedule(\n \"meta.sync_controller.sync_tick\",\n {\n ...buildMinimalSyncSignalContext(ctx),\n __syncing: true,\n },\n delayMs,\n );\n }\n\n return true;\n },\n \"Schedules the early bootstrap sync burst after local instance registration so startup-defined primitives can converge deterministically.\",\n {\n register: false,\n isHidden: true,\n },\n ).doOn(\"meta.service_registry.instance_inserted\");\n\n Cadenza.interval(\n \"meta.sync_controller.sync_tick\",\n { __syncing: true },\n this.isCadenzaDBReady ? 180000 : 300000,\n );\n }\n}\n","import Cadenza from \"../../Cadenza\";\nimport {\n buildExecutionPersistenceDependency,\n buildExecutionPersistenceEnsureEvent,\n buildExecutionPersistenceUpdateEvent,\n createExecutionPersistenceBundle,\n EXECUTION_PERSISTENCE_BUNDLE_SIGNAL,\n} from \"../../execution/ExecutionPersistenceCoordinator\";\nimport { formatTimestamp } from \"../../utils/tools\";\nimport { isMetaIntentName } from \"../../utils/inquiry\";\nimport {\n resolveRoutinePersistenceMetadata,\n splitRoutinePersistenceContext,\n stripLocalRoutinePersistenceHints,\n} from \"../../utils/routinePersistence\";\nimport { registerActorSessionPersistenceTasks } from \"./registerActorSessionPersistence\";\nimport type { Task } from \"@cadenza.io/core\";\nimport GraphSyncController, {\n isBootstrapLocalOnlyActorName,\n} from \"./GraphSyncController\";\n\nconst INQUIRY_TRACE_ENABLED =\n process.env.CADENZA_INQUIRY_TRACE === \"1\" ||\n process.env.CADENZA_INQUIRY_TRACE === \"true\";\nconst TRACED_INQUIRY_METADATA_SIGNALS = new Set([\n \"global.meta.graph_metadata.inquiry_created\",\n \"global.meta.graph_metadata.inquiry_updated\",\n]);\nfunction createLocalGraphMetadataTask(\n name: string,\n taskFunction: (ctx: Record<string, any>, emit?: any) => any,\n description?: string,\n options: Record<string, unknown> = {},\n) {\n return Cadenza.createMetaTask(name, taskFunction, description, {\n register: false,\n isHidden: true,\n ...options,\n });\n}\n\nfunction buildDatabaseTriggerContext(\n data?: Record<string, unknown> | null,\n filter?: Record<string, unknown> | null,\n extra: Record<string, unknown> = {},\n queryExtra: Record<string, unknown> = {},\n): Record<string, unknown> {\n const nextData =\n data && typeof data === \"object\" ? { ...data } : undefined;\n const nextFilter =\n filter && typeof filter === \"object\" ? { ...filter } : undefined;\n const queryData: Record<string, unknown> = { ...queryExtra };\n\n if (nextData !== undefined) {\n queryData.data = nextData;\n }\n\n if (nextFilter !== undefined) {\n queryData.filter = nextFilter;\n }\n\n return {\n ...extra,\n ...(nextData !== undefined ? { data: nextData } : {}),\n ...(nextFilter !== undefined ? { filter: nextFilter } : {}),\n ...(Object.keys(queryData).length > 0 ? { queryData } : {}),\n };\n}\n\nfunction resolveTaskFromMetadataContext(\n ctx: Record<string, any>,\n): Task | undefined {\n const taskName = String(\n ctx?.taskName ??\n ctx?.data?.taskName ??\n ctx?.data?.task_name ??\n ctx?.filter?.taskName ??\n ctx?.filter?.task_name ??\n \"\",\n );\n\n return taskName ? Cadenza.get(taskName) : undefined;\n}\n\nfunction resolveTaskByName(name: unknown): Task | undefined {\n const taskName = String(name ?? \"\");\n return taskName ? Cadenza.get(taskName) : undefined;\n}\n\nfunction resolvePredecessorTaskFromMetadataContext(\n ctx: Record<string, any>,\n): Task | undefined {\n return resolveTaskByName(\n ctx?.predecessorTaskName ??\n ctx?.data?.predecessorTaskName ??\n ctx?.data?.predecessor_task_name ??\n ctx?.filter?.predecessorTaskName ??\n ctx?.filter?.predecessor_task_name,\n );\n}\n\nfunction shouldSkipDirectTaskMetadata(task?: Task): boolean {\n return !task || !task.register || task.isHidden || task.isDeputy;\n}\n\nfunction isManagedRouteRecoveryTaskError(errorMessage: unknown): boolean {\n if (typeof errorMessage !== \"string\") {\n return false;\n }\n\n return (\n errorMessage.includes(\"No routeable internal transport available\") &&\n errorMessage.includes(\"Waiting for authority route updates before retrying\")\n );\n}\n\nfunction isLocallyHandledIntentName(intentName: string): boolean {\n const observer = Cadenza.inquiryBroker.inquiryObservers.get(intentName);\n if (!observer) {\n return false;\n }\n\n for (const task of observer.tasks) {\n if (task.register && !task.isHidden && !task.isDeputy) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction resolveIntentDefinition(intentName: string): Record<string, any> | undefined {\n const intent = Cadenza.inquiryBroker.intents.get(intentName);\n return intent && typeof intent === \"object\"\n ? (intent as Record<string, any>)\n : undefined;\n}\n\nfunction shouldSkipDirectIntentMetadata(intentName: string): boolean {\n if (!intentName) {\n return true;\n }\n\n if (!isLocallyHandledIntentName(intentName)) {\n return true;\n }\n\n if (GraphSyncController.instance.registeredIntentDefinitions.has(intentName)) {\n return true;\n }\n\n const intentDefinition = resolveIntentDefinition(intentName);\n return (\n intentDefinition?.registered === true ||\n intentDefinition?.registrationRequested === true\n );\n}\n\nfunction shouldPersistBusinessTaskExecution(task?: Task): boolean {\n return !!task && task.register && !task.isHidden && !task.isMeta && !task.isSubMeta && !task.isDeputy;\n}\n\nfunction shouldEmitDirectPrimitiveMetadata(): boolean {\n return Cadenza.hasCompletedBootstrapSync();\n}\n\nfunction shouldSkipDirectActorMetadata(actorName: unknown): boolean {\n return (\n typeof actorName === \"string\" &&\n actorName.trim().length > 0 &&\n isBootstrapLocalOnlyActorName(actorName.trim())\n );\n}\n\nfunction normalizeExecutionObservabilityServiceInstanceId(\n value: unknown,\n): string | null {\n return typeof value === \"string\" && value.trim().length > 0 ? value : null;\n}\n\nfunction resolveExecutionObservabilityServiceInstanceId(\n candidate?: unknown,\n): string | null {\n const localServiceInstanceId =\n normalizeExecutionObservabilityServiceInstanceId(\n Cadenza.serviceRegistry.serviceInstanceId,\n );\n const candidateServiceInstanceId =\n normalizeExecutionObservabilityServiceInstanceId(candidate);\n\n if (\n candidateServiceInstanceId &&\n localServiceInstanceId &&\n candidateServiceInstanceId !== localServiceInstanceId\n ) {\n return candidateServiceInstanceId;\n }\n\n return Cadenza.hasCompletedBootstrapSync() ? localServiceInstanceId : null;\n}\n\nfunction shouldPersistBusinessInquiry(ctx: Record<string, any>): boolean {\n const inquiryName = String(\n ctx?.data?.name ?? ctx?.inquiry ?? ctx?.data?.metadata?.inquiryMeta?.inquiry ?? \"\",\n );\n\n if (!inquiryName) {\n return false;\n }\n\n return !isMetaIntentName(inquiryName) && ctx?.data?.isMeta !== true && ctx?.data?.is_meta !== true;\n}\n\nfunction shouldPersistBusinessInquiryCompletion(ctx: Record<string, any>): boolean {\n const insertData =\n ctx?.insertData && typeof ctx.insertData === \"object\" ? ctx.insertData : null;\n\n if (insertData) {\n return shouldPersistBusinessInquiry({ data: insertData });\n }\n\n const inquiryName = String(ctx?.data?.metadata?.inquiryMeta?.inquiry ?? \"\");\n return inquiryName.length > 0 && !isMetaIntentName(inquiryName);\n}\n\nfunction shouldPersistRoutineExecution(ctx: Record<string, any>): boolean {\n if (ctx?.data?.isMeta === true || ctx?.data?.is_meta === true) {\n return false;\n }\n\n const routineTask = resolveTaskByName(ctx?.data?.name);\n if (routineTask) {\n return shouldPersistBusinessTaskExecution(routineTask);\n }\n\n return true;\n}\n\nfunction shouldPersistTaskExecutionMetadata(\n ctx: Record<string, any>,\n): boolean {\n const task = resolveTaskFromMetadataContext(ctx);\n return shouldPersistBusinessTaskExecution(task);\n}\n\nfunction shouldPersistTaskExecutionMap(\n ctx: Record<string, any>,\n): boolean {\n return (\n shouldPersistBusinessTaskExecution(resolveTaskFromMetadataContext(ctx)) &&\n shouldPersistBusinessTaskExecution(resolvePredecessorTaskFromMetadataContext(ctx))\n );\n}\n\nfunction logInquiryMetadataTrace(\n event: string,\n signalName: string,\n ctx: Record<string, any>,\n): void {\n if (!INQUIRY_TRACE_ENABLED || !TRACED_INQUIRY_METADATA_SIGNALS.has(signalName)) {\n return;\n }\n\n const data = ctx?.data && typeof ctx.data === \"object\" ? ctx.data : {};\n const filter = ctx?.filter && typeof ctx.filter === \"object\" ? ctx.filter : {};\n console.log(\"[CADENZA_INQUIRY_TRACE]\", event, {\n localServiceName: Cadenza.serviceRegistry.serviceName,\n signalName,\n inquiryName:\n data.name ??\n data.metadata?.inquiryMeta?.inquiry ??\n ctx?.inquiry ??\n null,\n inquiryId: data.uuid ?? filter.uuid ?? null,\n fulfilledAt: data.fulfilledAt ?? data.fulfilled_at ?? null,\n routineExecutionId:\n data.routineExecutionId ??\n data.routine_execution_id ??\n null,\n });\n}\n\nexport default class GraphMetadataController {\n private static _instance: GraphMetadataController;\n public static get instance(): GraphMetadataController {\n if (!this._instance) this._instance = new GraphMetadataController();\n return this._instance;\n }\n\n constructor() {\n const buildOnConflictDoNothing = (target: string[]) => ({\n target,\n action: {\n do: \"nothing\" as const,\n },\n });\n const observabilityInsertOnConflict = buildOnConflictDoNothing([\"uuid\"]);\n\n createLocalGraphMetadataTask(\"Handle task creation\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const taskName = String(ctx.data?.name ?? ctx.data?.taskName ?? \"\");\n const task = taskName ? Cadenza.get(taskName) : undefined;\n const onConflict = buildOnConflictDoNothing([\n \"name\",\n \"service_name\",\n \"version\",\n ]);\n\n if (\n shouldSkipDirectTaskMetadata(task) ||\n task?.registered ||\n (task as any)?.registrationRequested\n ) {\n return false;\n }\n\n if (task) {\n (task as any).registrationRequested = true;\n }\n\n return buildDatabaseTriggerContext(\n {\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n undefined,\n { onConflict },\n { onConflict },\n );\n })\n .doOn(\"meta.task.created\")\n .emits(\"global.meta.graph_metadata.task_created\");\n\n createLocalGraphMetadataTask(\"Handle task update\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const task = resolveTaskFromMetadataContext(ctx as Record<string, any>);\n\n if (shouldSkipDirectTaskMetadata(task)) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.task.layer_index_changed\", \"meta.task.destroyed\")\n .emits(\"global.meta.graph_metadata.task_updated\");\n\n createLocalGraphMetadataTask(\"Handle task relationship creation\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const taskName = ctx.data?.taskName ?? ctx.data?.task_name;\n const predecessorTaskName =\n ctx.data?.predecessorTaskName ?? ctx.data?.predecessor_task_name;\n const task = taskName ? Cadenza.get(taskName) : undefined;\n const predecessorTask = predecessorTaskName\n ? Cadenza.get(predecessorTaskName)\n : undefined;\n\n if (\n shouldSkipDirectTaskMetadata(task) ||\n shouldSkipDirectTaskMetadata(predecessorTask) ||\n !task?.registered ||\n !predecessorTask?.registered\n ) {\n return false;\n }\n\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n predecessorServiceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.task.relationship_added\")\n .emits(\"global.meta.graph_metadata.task_relationship_created\");\n\n createLocalGraphMetadataTask(\"Handle task error\", (ctx) => {\n if (isManagedRouteRecoveryTaskError(ctx.data?.errorMessage)) {\n return false;\n }\n\n Cadenza.log(`Error in task ${ctx.data.taskName}`, ctx.data, \"error\");\n }).doOn(\"meta.node.errored\");\n\n createLocalGraphMetadataTask(\"Handle task signal observation\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const signalName = String(\n ctx.signalName ?? ctx.data?.signalName ?? \"\",\n ).split(\":\")[0];\n const task = resolveTaskFromMetadataContext(ctx as Record<string, any>);\n\n if (shouldSkipDirectTaskMetadata(task)) {\n return false;\n }\n\n if (task?.registered && task.registeredSignals.has(signalName)) {\n return false;\n }\n\n const isGlobal = signalName.startsWith(\"global.\");\n return buildDatabaseTriggerContext({\n ...ctx.data,\n signalName,\n isGlobal,\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.task.observed_signal\")\n .emits(\"global.meta.graph_metadata.task_signal_observed\");\n\n createLocalGraphMetadataTask(\"Handle task signal attachment\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const task = resolveTaskFromMetadataContext(ctx as Record<string, any>);\n\n if (shouldSkipDirectTaskMetadata(task)) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.task.attached_signal\")\n .emits(\"global.meta.graph_metadata.task_attached_signal\");\n\n createLocalGraphMetadataTask(\"Handle task intent association\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const intentName = String(ctx.data?.intentName ?? \"\");\n const task = resolveTaskFromMetadataContext(ctx as Record<string, any>);\n\n if (shouldSkipDirectTaskMetadata(task)) {\n return false;\n }\n\n if (\n task?.registered &&\n ((task as any).__registeredIntents as Set<string> | undefined)?.has(\n intentName,\n )\n ) {\n return false;\n }\n\n return buildDatabaseTriggerContext({\n ...(ctx.data as Record<string, unknown> | undefined),\n intentName,\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.task.intent_associated\")\n .emits(\"global.meta.graph_metadata.task_intent_associated\");\n\n createLocalGraphMetadataTask(\"Handle task unsubscribing signal\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const task = resolveTaskFromMetadataContext(ctx as Record<string, any>);\n\n if (shouldSkipDirectTaskMetadata(task)) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n {\n deleted: true,\n },\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.task.unsubscribed_signal\")\n .emits(\"meta.graph_metadata.task_unsubscribed_signal\");\n\n createLocalGraphMetadataTask(\"Handle task detaching signal\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const task = resolveTaskFromMetadataContext(ctx as Record<string, any>);\n\n if (shouldSkipDirectTaskMetadata(task)) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n {\n deleted: true,\n },\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.task.detached_signal\")\n .emits(\"global.meta.graph_metadata.task_detached_signal\");\n\n createLocalGraphMetadataTask(\"Handle routine creation\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doAfter(Cadenza.registry.registerRoutine)\n .emits(\"global.meta.graph_metadata.routine_created\");\n\n createLocalGraphMetadataTask(\"Handle routine update\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n })\n .doOn(\"meta.routine.destroyed\")\n .emits(\"global.meta.graph_metadata.routine_updated\");\n\n createLocalGraphMetadataTask(\"Handle adding task to routine\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.routine.task_added\")\n .emits(\"global.meta.graph_metadata.task_added_to_routine\");\n\n createLocalGraphMetadataTask(\"Handle new trace\", (ctx) => {\n return buildDatabaseTriggerContext({\n ...ctx.data,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id: null,\n });\n })\n .doOn(\"meta.runner.new_trace\")\n .emits(\"global.meta.graph_metadata.execution_trace_created\");\n\n const prepareRoutineExecutionPersistenceTask = createLocalGraphMetadataTask(\n \"Prepare routine execution persistence\",\n (ctx) => {\n if (!shouldPersistRoutineExecution(ctx as Record<string, any>)) {\n return false;\n }\n\n const routineData = (ctx.data as Record<string, any> | undefined) ?? {};\n const sanitizedRoutineContext = stripLocalRoutinePersistenceHints(\n (routineData.context as Record<string, any> | undefined) ?? {},\n );\n const sanitizedRoutineMetaContext = stripLocalRoutinePersistenceHints(\n (routineData.metaContext as Record<string, any> | undefined) ?? {},\n );\n\n const routineExecutionRow: Record<string, any> = {\n ...routineData,\n context: sanitizedRoutineContext,\n metaContext: sanitizedRoutineMetaContext,\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: resolveExecutionObservabilityServiceInstanceId(),\n };\n delete routineExecutionRow.routineVersion;\n delete routineExecutionRow.routine_version;\n\n const traceCreatedByRunner =\n sanitizedRoutineMetaContext.__traceCreatedByRunner === true;\n const executionTraceRow =\n traceCreatedByRunner &&\n typeof routineExecutionRow.executionTraceId === \"string\" &&\n routineExecutionRow.executionTraceId.length > 0\n ? {\n uuid: routineExecutionRow.executionTraceId,\n issuer_type: \"service\",\n issuer_id:\n sanitizedRoutineMetaContext.__issuerId ??\n sanitizedRoutineMetaContext.__metadata?.__issuerId ??\n null,\n issued_at:\n routineExecutionRow.created ?? formatTimestamp(Date.now()),\n intent:\n sanitizedRoutineMetaContext.__intent ??\n sanitizedRoutineMetaContext.__metadata?.__intent ??\n null,\n context: {\n id: String(routineExecutionRow.uuid ?? \"\"),\n context: sanitizedRoutineContext,\n },\n is_meta: routineExecutionRow.isMeta === true,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id: null,\n }\n : null;\n\n return {\n ...ctx,\n __traceCreatedByRunner: traceCreatedByRunner,\n __routineExecutionRow: routineExecutionRow,\n ...(executionTraceRow ? { __executionTraceRow: executionTraceRow } : {}),\n };\n },\n \"Builds ordered execution_trace and routine_execution inserts for a fresh local routine.\",\n { concurrency: 100, isSubMeta: true },\n ).doOn(\"meta.runner.added_tasks\");\n\n const filterRoutineExecutionTraceCreatedTask = createLocalGraphMetadataTask(\n \"Filter routine execution trace created\",\n (ctx) => ctx.__traceCreatedByRunner === true,\n \"Continues only when the local runner created a new execution trace for this routine.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const filterRoutineExecutionTraceExistingTask = createLocalGraphMetadataTask(\n \"Filter routine execution trace existing\",\n (ctx) => ctx.__traceCreatedByRunner !== true,\n \"Continues only when the routine already belongs to an existing execution trace.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const prepareExecutionTraceInsertForRoutineTask = createLocalGraphMetadataTask(\n \"Prepare execution trace insert for routine execution\",\n (ctx) => {\n if (!ctx.__executionTraceRow) {\n return false;\n }\n\n return {\n ...ctx,\n data: ctx.__executionTraceRow,\n onConflict: observabilityInsertOnConflict,\n queryData: {\n data: ctx.__executionTraceRow,\n onConflict: observabilityInsertOnConflict,\n },\n };\n },\n \"Builds the execution_trace insert payload before routine_execution persistence continues.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const prepareRoutineExecutionInsertTask = createLocalGraphMetadataTask(\n \"Prepare routine execution insert\",\n (ctx) => {\n if (!ctx.__routineExecutionRow) {\n return false;\n }\n\n return {\n ...ctx,\n data: ctx.__routineExecutionRow,\n onConflict: observabilityInsertOnConflict,\n queryData: {\n data: ctx.__routineExecutionRow,\n onConflict: observabilityInsertOnConflict,\n },\n };\n },\n \"Builds the routine_execution insert payload for a business routine.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const emitRoutineExecutionPersistenceBundleTask = createLocalGraphMetadataTask(\n \"Emit routine execution persistence bundle\",\n (ctx) => {\n const routineExecutionRow =\n ctx.__routineExecutionRow && typeof ctx.__routineExecutionRow === \"object\"\n ? ({ ...ctx.__routineExecutionRow } as Record<string, any>)\n : null;\n const executionTraceRow =\n ctx.__executionTraceRow && typeof ctx.__executionTraceRow === \"object\"\n ? ({ ...ctx.__executionTraceRow } as Record<string, any>)\n : null;\n\n if (!routineExecutionRow) {\n return false;\n }\n\n return createExecutionPersistenceBundle({\n traceId:\n routineExecutionRow.executionTraceId ??\n routineExecutionRow.execution_trace_id ??\n executionTraceRow?.uuid ??\n null,\n ensures: [\n buildExecutionPersistenceEnsureEvent(\n \"execution_trace\",\n executionTraceRow,\n ),\n buildExecutionPersistenceEnsureEvent(\n \"routine_execution\",\n routineExecutionRow,\n [\n buildExecutionPersistenceDependency(\n \"execution_trace\",\n routineExecutionRow.executionTraceId ??\n routineExecutionRow.execution_trace_id,\n ),\n ],\n ),\n ],\n });\n },\n \"Emits one authority-routed execution persistence bundle for a routine execution.\",\n { concurrency: 100, isSubMeta: true },\n ).emits(EXECUTION_PERSISTENCE_BUNDLE_SIGNAL);\n\n prepareRoutineExecutionPersistenceTask.then(\n emitRoutineExecutionPersistenceBundleTask,\n );\n\n createLocalGraphMetadataTask(\n \"Handle routine execution started\",\n (ctx) => {\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles routine execution started\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.started_routine_execution\")\n .emits(\"global.meta.graph_metadata.routine_execution_started\");\n\n createLocalGraphMetadataTask(\n \"Handle routine execution ended\",\n (ctx) => {\n return buildDatabaseTriggerContext(\n {\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: resolveExecutionObservabilityServiceInstanceId(),\n },\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles routine execution ended\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.ended_routine_execution\")\n .emits(\"global.meta.graph_metadata.routine_execution_ended\");\n\n const prepareTaskExecutionPersistenceTask = createLocalGraphMetadataTask(\n \"Prepare task execution persistence\",\n (ctx) => {\n if (!shouldPersistTaskExecutionMetadata(ctx as Record<string, any>)) {\n return false;\n }\n\n const taskExecutionData = (ctx.data as Record<string, any> | undefined) ?? {};\n const sanitizedTaskContext = stripLocalRoutinePersistenceHints(\n (taskExecutionData.context as Record<string, any> | undefined) ?? {},\n );\n const sanitizedTaskMetaContext = stripLocalRoutinePersistenceHints(\n (taskExecutionData.metaContext as Record<string, any> | undefined) ?? {},\n );\n const routineMetadata = resolveRoutinePersistenceMetadata(\n sanitizedTaskMetaContext,\n );\n\n const taskExecutionRow: Record<string, any> = {\n ...taskExecutionData,\n context: sanitizedTaskContext,\n metaContext: sanitizedTaskMetaContext,\n previous_task_execution_ids: Array.isArray(\n taskExecutionData.previousExecutionIds?.ids,\n )\n ? taskExecutionData.previousExecutionIds.ids.filter(\n (value: unknown): value is string =>\n typeof value === \"string\" && value.trim().length > 0,\n )\n : [],\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: resolveExecutionObservabilityServiceInstanceId(),\n };\n delete taskExecutionRow.previousExecutionIds;\n\n const executionTraceRow =\n sanitizedTaskMetaContext.__traceCreatedByRunner === true &&\n typeof taskExecutionData.executionTraceId === \"string\" &&\n taskExecutionData.executionTraceId.length > 0\n ? {\n uuid: taskExecutionData.executionTraceId,\n issuer_type: \"service\",\n issuer_id:\n sanitizedTaskMetaContext.__issuerId ??\n sanitizedTaskMetaContext.__metadata?.__issuerId ??\n null,\n issued_at:\n routineMetadata.routineCreatedAt ??\n taskExecutionData.created ??\n formatTimestamp(Date.now()),\n intent:\n sanitizedTaskMetaContext.__intent ??\n sanitizedTaskMetaContext.__metadata?.__intent ??\n null,\n context: {\n id: String(taskExecutionData.routineExecutionId ?? taskExecutionData.uuid ?? \"\"),\n context: sanitizedTaskContext,\n },\n is_meta:\n routineMetadata.routineIsMeta ||\n taskExecutionData.isMeta === true,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id: null,\n }\n : null;\n\n const routineExecutionRow =\n typeof taskExecutionData.routineExecutionId === \"string\" &&\n taskExecutionData.routineExecutionId.length > 0 &&\n routineMetadata.createdByRunner &&\n routineMetadata.routineName\n ? {\n uuid: taskExecutionData.routineExecutionId,\n name: routineMetadata.routineName,\n execution_trace_id: taskExecutionData.executionTraceId ?? null,\n context: sanitizedTaskContext,\n meta_context: sanitizedTaskMetaContext,\n created:\n routineMetadata.routineCreatedAt ??\n taskExecutionData.created ??\n formatTimestamp(Date.now()),\n is_meta:\n routineMetadata.routineIsMeta ||\n taskExecutionData.isMeta === true,\n service_name: Cadenza.serviceRegistry.serviceName,\n service_instance_id:\n resolveExecutionObservabilityServiceInstanceId(),\n }\n : null;\n\n return {\n ...ctx,\n __traceCreatedByRunner:\n sanitizedTaskMetaContext.__traceCreatedByRunner === true,\n __taskExecutionRow: taskExecutionRow,\n ...(executionTraceRow ? { __executionTraceRow: executionTraceRow } : {}),\n ...(routineExecutionRow\n ? { __routineExecutionRow: routineExecutionRow }\n : {}),\n };\n },\n \"Builds ordered execution_trace, routine_execution, and task_execution inserts for a business task execution.\",\n { concurrency: 100, isSubMeta: true },\n ).doOn(\"meta.node.scheduled\");\n\n const filterTaskExecutionTraceCreatedTask = createLocalGraphMetadataTask(\n \"Filter task execution trace created\",\n (ctx) => ctx.__traceCreatedByRunner === true,\n \"Continues only when the local runner created a new execution trace for this task execution.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const filterTaskExecutionTraceExistingTask = createLocalGraphMetadataTask(\n \"Filter task execution trace existing\",\n (ctx) => ctx.__traceCreatedByRunner !== true,\n \"Continues only when the task execution already belongs to an existing execution trace.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const filterTaskExecutionRoutineCreatedTask = createLocalGraphMetadataTask(\n \"Filter task execution routine created\",\n (ctx) => Boolean(ctx.__routineExecutionRow),\n \"Continues only when the local runner created a new routine for this task execution.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const filterTaskExecutionRoutineExistingTask = createLocalGraphMetadataTask(\n \"Filter task execution routine existing\",\n (ctx) => !ctx.__routineExecutionRow,\n \"Continues only when the task_execution row can be inserted without creating a new routine_execution row.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const prepareExecutionTraceInsertForTaskExecutionTask = createLocalGraphMetadataTask(\n \"Prepare execution trace insert for task execution\",\n (ctx) => {\n if (!ctx.__executionTraceRow) {\n return false;\n }\n\n return {\n ...ctx,\n data: ctx.__executionTraceRow,\n onConflict: observabilityInsertOnConflict,\n queryData: {\n data: ctx.__executionTraceRow,\n onConflict: observabilityInsertOnConflict,\n },\n };\n },\n \"Builds the execution_trace insert payload before task_execution persistence continues.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const prepareRoutineExecutionInsertForTaskExecutionTask = createLocalGraphMetadataTask(\n \"Prepare routine execution insert for task execution\",\n (ctx) => {\n if (!ctx.__routineExecutionRow) {\n return false;\n }\n\n return {\n ...ctx,\n data: ctx.__routineExecutionRow,\n onConflict: observabilityInsertOnConflict,\n queryData: {\n data: ctx.__routineExecutionRow,\n onConflict: observabilityInsertOnConflict,\n },\n };\n },\n \"Builds the routine_execution insert payload before task_execution persistence continues.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const prepareTaskExecutionInsertTask = createLocalGraphMetadataTask(\n \"Prepare task execution insert\",\n (ctx) => {\n if (!ctx.__taskExecutionRow) {\n return false;\n }\n\n return {\n ...ctx,\n data: ctx.__taskExecutionRow,\n onConflict: observabilityInsertOnConflict,\n queryData: {\n data: ctx.__taskExecutionRow,\n onConflict: observabilityInsertOnConflict,\n },\n };\n },\n \"Builds the task_execution insert payload for a business task execution.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const continueTaskExecutionAfterTraceTask = createLocalGraphMetadataTask(\n \"Continue task execution persistence after trace\",\n (ctx) => ctx,\n \"Allows the task-execution persistence graph to fan in after optional execution_trace persistence.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const continueTaskExecutionAfterRoutineTask = createLocalGraphMetadataTask(\n \"Continue task execution persistence after routine\",\n (ctx) => ctx,\n \"Allows the task-execution persistence graph to fan in after optional routine_execution persistence.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const emitTaskExecutionPersistenceBundleTask = createLocalGraphMetadataTask(\n \"Emit task execution persistence bundle\",\n (ctx) => {\n const taskExecutionRow =\n ctx.__taskExecutionRow && typeof ctx.__taskExecutionRow === \"object\"\n ? ({ ...ctx.__taskExecutionRow } as Record<string, any>)\n : null;\n const executionTraceRow =\n ctx.__executionTraceRow && typeof ctx.__executionTraceRow === \"object\"\n ? ({ ...ctx.__executionTraceRow } as Record<string, any>)\n : null;\n const routineExecutionRow =\n ctx.__routineExecutionRow && typeof ctx.__routineExecutionRow === \"object\"\n ? ({ ...ctx.__routineExecutionRow } as Record<string, any>)\n : null;\n\n if (!taskExecutionRow) {\n return false;\n }\n\n return createExecutionPersistenceBundle({\n traceId:\n taskExecutionRow.executionTraceId ??\n taskExecutionRow.execution_trace_id ??\n executionTraceRow?.uuid ??\n null,\n ensures: [\n buildExecutionPersistenceEnsureEvent(\n \"execution_trace\",\n executionTraceRow,\n ),\n buildExecutionPersistenceEnsureEvent(\n \"routine_execution\",\n routineExecutionRow,\n [\n buildExecutionPersistenceDependency(\n \"execution_trace\",\n routineExecutionRow?.executionTraceId ??\n routineExecutionRow?.execution_trace_id,\n ),\n ],\n ),\n buildExecutionPersistenceEnsureEvent(\"task_execution\", taskExecutionRow, [\n buildExecutionPersistenceDependency(\n \"execution_trace\",\n taskExecutionRow.executionTraceId ??\n taskExecutionRow.execution_trace_id,\n ),\n buildExecutionPersistenceDependency(\n \"routine_execution\",\n taskExecutionRow.routineExecutionId ??\n taskExecutionRow.routine_execution_id,\n ),\n buildExecutionPersistenceDependency(\n \"signal_emission\",\n taskExecutionRow.signalEmissionId ??\n taskExecutionRow.signal_emission_id,\n ),\n buildExecutionPersistenceDependency(\n \"inquiry\",\n taskExecutionRow.inquiryId ?? taskExecutionRow.inquiry_id,\n ),\n ]),\n ],\n });\n },\n \"Emits one authority-routed execution persistence bundle for a task execution.\",\n { concurrency: 100, isSubMeta: true },\n ).emits(EXECUTION_PERSISTENCE_BUNDLE_SIGNAL);\n\n prepareTaskExecutionPersistenceTask.then(emitTaskExecutionPersistenceBundleTask);\n\n createLocalGraphMetadataTask(\n \"Handle task execution mapped\",\n (ctx) => {\n if (!shouldPersistTaskExecutionMap(ctx as Record<string, any>)) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles task execution mapping\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.mapped\", \"meta.node.detected_previous_task_execution\")\n .emits(\"global.meta.graph_metadata.task_execution_mapped\");\n\n createLocalGraphMetadataTask(\n \"Handle task execution started\",\n (ctx) => {\n if (!shouldPersistTaskExecutionMetadata(ctx as Record<string, any>)) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n (ctx.data as Record<string, unknown> | undefined) ?? undefined,\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles task execution started\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.started\")\n .emits(\"global.meta.graph_metadata.task_execution_started\");\n\n createLocalGraphMetadataTask(\n \"Handle task execution ended\",\n (ctx) => {\n if (!shouldPersistTaskExecutionMetadata(ctx as Record<string, any>)) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n {\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: resolveExecutionObservabilityServiceInstanceId(),\n },\n (ctx.filter as Record<string, unknown> | undefined) ?? undefined,\n );\n },\n \"Handles task execution ended\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.ended\")\n .emits(\"global.meta.graph_metadata.task_execution_ended\");\n\n createLocalGraphMetadataTask(\n \"Handle inquiry creation\",\n (ctx) => {\n if (!shouldPersistBusinessInquiry(ctx as Record<string, any>)) {\n return false;\n }\n\n logInquiryMetadataTrace(\n \"emit_inquiry_created\",\n \"global.meta.graph_metadata.inquiry_created\",\n ctx as Record<string, any>,\n );\n\n return buildDatabaseTriggerContext({\n ...ctx.data,\n serviceName: Cadenza.serviceRegistry.serviceName,\n serviceInstanceId: resolveExecutionObservabilityServiceInstanceId(),\n isMeta: false,\n });\n },\n \"Handles inquiry creation\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.inquiry_broker.inquiry_started\")\n .emits(\"global.meta.graph_metadata.inquiry_created\");\n\n createLocalGraphMetadataTask(\n \"Emit inquiry creation persistence bundle\",\n (ctx) => {\n if (!shouldPersistBusinessInquiry(ctx as Record<string, any>)) {\n return false;\n }\n\n const inquiryData =\n ctx.data && typeof ctx.data === \"object\"\n ? ({ ...ctx.data } as Record<string, any>)\n : null;\n if (!inquiryData) {\n return false;\n }\n\n const executionTraceRow =\n typeof inquiryData.executionTraceId === \"string\" &&\n inquiryData.executionTraceId.length > 0\n ? {\n uuid: inquiryData.executionTraceId,\n issuer_type: \"service\",\n issuer_id: inquiryData.serviceInstanceId ?? null,\n issued_at:\n inquiryData.sentAt ??\n inquiryData.created ??\n formatTimestamp(Date.now()),\n intent: inquiryData.name ?? null,\n context: {\n id: String(inquiryData.uuid ?? \"\"),\n context: inquiryData.context ?? {},\n },\n is_meta: false,\n service_name: inquiryData.serviceName ?? Cadenza.serviceRegistry.serviceName,\n service_instance_id: null,\n }\n : null;\n\n return createExecutionPersistenceBundle({\n traceId: inquiryData.executionTraceId ?? executionTraceRow?.uuid ?? null,\n ensures: [\n buildExecutionPersistenceEnsureEvent(\n \"execution_trace\",\n executionTraceRow,\n ),\n buildExecutionPersistenceEnsureEvent(\"inquiry\", inquiryData, [\n buildExecutionPersistenceDependency(\n \"execution_trace\",\n inquiryData.executionTraceId ?? inquiryData.execution_trace_id,\n ),\n buildExecutionPersistenceDependency(\n \"task_execution\",\n inquiryData.taskExecutionId ?? inquiryData.task_execution_id,\n ),\n buildExecutionPersistenceDependency(\n \"routine_execution\",\n inquiryData.routineExecutionId ?? inquiryData.routine_execution_id,\n ),\n ]),\n ],\n });\n },\n \"Emits one authority-routed execution persistence bundle for inquiry creation.\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.inquiry_broker.inquiry_started\")\n .emits(EXECUTION_PERSISTENCE_BUNDLE_SIGNAL);\n\n createLocalGraphMetadataTask(\n \"Prepare inquiry completion persistence\",\n (ctx) => {\n if (!shouldPersistBusinessInquiryCompletion(ctx as Record<string, any>)) {\n return false;\n }\n\n logInquiryMetadataTrace(\n \"emit_inquiry_updated\",\n \"global.meta.graph_metadata.inquiry_updated\",\n ctx as Record<string, any>,\n );\n\n const insertData =\n ctx.insertData && typeof ctx.insertData === \"object\"\n ? ({ ...ctx.insertData } as Record<string, unknown>)\n : undefined;\n const updateData =\n ctx.data && typeof ctx.data === \"object\"\n ? ({ ...ctx.data } as Record<string, unknown>)\n : undefined;\n const updateFilter =\n ctx.filter && typeof ctx.filter === \"object\"\n ? ({ ...ctx.filter } as Record<string, unknown>)\n : undefined;\n\n return {\n ...ctx,\n ...(insertData ? { __inquiryInsertData: insertData } : {}),\n ...(updateData ? { __inquiryUpdateData: updateData } : {}),\n ...(updateFilter ? { __inquiryUpdateFilter: updateFilter } : {}),\n };\n },\n \"Prepares ordered inquiry completion persistence.\",\n { concurrency: 100, isSubMeta: true },\n ).doOn(\"meta.inquiry_broker.inquiry_completed\");\n\n const filterInquiryCompletionHasInsertData = createLocalGraphMetadataTask(\n \"Filter inquiry completion has insert data\",\n (ctx) => Boolean(ctx.__inquiryInsertData),\n \"Continues only when inquiry completion can ensure the inquiry row before update.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const filterInquiryCompletionMissingInsertData = createLocalGraphMetadataTask(\n \"Filter inquiry completion missing insert data\",\n (ctx) => !ctx.__inquiryInsertData,\n \"Continues only when inquiry completion must fall back to update-only behavior.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const prepareInquiryInsertTask = createLocalGraphMetadataTask(\n \"Prepare inquiry insert for completion\",\n (ctx) => {\n if (!ctx.__inquiryInsertData) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n ctx.__inquiryInsertData as Record<string, unknown>,\n undefined,\n {\n ...ctx,\n onConflict: observabilityInsertOnConflict,\n },\n {\n onConflict: observabilityInsertOnConflict,\n },\n );\n },\n \"Builds the inquiry insert payload before inquiry completion updates.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const prepareInquiryUpdateTask = createLocalGraphMetadataTask(\n \"Prepare inquiry update\",\n (ctx) => {\n if (!ctx.__inquiryUpdateData || !ctx.__inquiryUpdateFilter) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n ctx.__inquiryUpdateData as Record<string, unknown>,\n ctx.__inquiryUpdateFilter as Record<string, unknown>,\n ctx,\n );\n },\n \"Builds the inquiry update payload after ensuring the inquiry row exists.\",\n { concurrency: 100, isSubMeta: true },\n );\n\n const emitInquiryCompletionPersistenceBundleTask = createLocalGraphMetadataTask(\n \"Emit inquiry completion persistence bundle\",\n (ctx) => {\n const inquiryInsertData =\n ctx.__inquiryInsertData && typeof ctx.__inquiryInsertData === \"object\"\n ? ({ ...ctx.__inquiryInsertData } as Record<string, any>)\n : null;\n const inquiryUpdateData =\n ctx.__inquiryUpdateData && typeof ctx.__inquiryUpdateData === \"object\"\n ? ({ ...ctx.__inquiryUpdateData } as Record<string, any>)\n : null;\n const inquiryUpdateFilter =\n ctx.__inquiryUpdateFilter &&\n typeof ctx.__inquiryUpdateFilter === \"object\"\n ? ({ ...ctx.__inquiryUpdateFilter } as Record<string, any>)\n : null;\n\n const executionTraceRow =\n inquiryInsertData &&\n typeof inquiryInsertData.executionTraceId === \"string\" &&\n inquiryInsertData.executionTraceId.length > 0\n ? {\n uuid: inquiryInsertData.executionTraceId,\n issuer_type: \"service\",\n issuer_id: inquiryInsertData.serviceInstanceId ?? null,\n issued_at:\n inquiryInsertData.sentAt ??\n inquiryInsertData.created ??\n formatTimestamp(Date.now()),\n intent: inquiryInsertData.name ?? null,\n context: {\n id: String(inquiryInsertData.uuid ?? \"\"),\n context: inquiryInsertData.context ?? {},\n },\n is_meta: false,\n service_name:\n inquiryInsertData.serviceName ?? Cadenza.serviceRegistry.serviceName,\n service_instance_id: null,\n }\n : null;\n\n return createExecutionPersistenceBundle({\n traceId:\n inquiryInsertData?.executionTraceId ??\n inquiryUpdateData?.executionTraceId ??\n executionTraceRow?.uuid ??\n null,\n ensures: [\n buildExecutionPersistenceEnsureEvent(\n \"execution_trace\",\n executionTraceRow,\n ),\n buildExecutionPersistenceEnsureEvent(\"inquiry\", inquiryInsertData, [\n buildExecutionPersistenceDependency(\n \"execution_trace\",\n inquiryInsertData?.executionTraceId ??\n inquiryInsertData?.execution_trace_id,\n ),\n buildExecutionPersistenceDependency(\n \"task_execution\",\n inquiryInsertData?.taskExecutionId ??\n inquiryInsertData?.task_execution_id,\n ),\n ]),\n ],\n updates: [\n buildExecutionPersistenceUpdateEvent(\n \"inquiry\",\n inquiryUpdateData,\n inquiryUpdateFilter,\n [\n buildExecutionPersistenceDependency(\n \"inquiry\",\n inquiryUpdateFilter?.uuid ?? inquiryInsertData?.uuid,\n ),\n ],\n ),\n ],\n });\n },\n \"Emits one authority-routed execution persistence bundle for inquiry completion.\",\n { concurrency: 100, isSubMeta: true },\n ).emits(EXECUTION_PERSISTENCE_BUNDLE_SIGNAL);\n\n Cadenza.get(\"Prepare inquiry completion persistence\")?.then(\n emitInquiryCompletionPersistenceBundleTask,\n );\n\n createLocalGraphMetadataTask(\n \"Handle task execution relationship creation\",\n (ctx) => {\n if (!shouldPersistTaskExecutionMap(ctx as Record<string, any>)) {\n return false;\n }\n\n return buildDatabaseTriggerContext(\n {\n executionCount: \"increment\",\n lastExecuted: formatTimestamp(Date.now()),\n },\n {\n ...ctx.filter,\n serviceName: Cadenza.serviceRegistry.serviceName,\n },\n );\n },\n \"Handles task execution relationship creation\",\n { concurrency: 100, isSubMeta: true },\n )\n .doOn(\"meta.node.mapped\", \"meta.node.detected_previous_task_execution\")\n .emits(\"global.meta.graph_metadata.relationship_executed\");\n\n createLocalGraphMetadataTask(\"Handle actor creation\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n if (shouldSkipDirectActorMetadata(ctx?.data?.name)) {\n return false;\n }\n\n return buildDatabaseTriggerContext({\n ...ctx.data,\n service_name: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.actor.created\")\n .emits(\"global.meta.graph_metadata.actor_created\");\n\n createLocalGraphMetadataTask(\"Handle actor task association\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n if (shouldSkipDirectActorMetadata(ctx?.data?.actor_name)) {\n return false;\n }\n\n return buildDatabaseTriggerContext({\n ...ctx.data,\n service_name: Cadenza.serviceRegistry.serviceName,\n });\n })\n .doOn(\"meta.actor.task_associated\")\n .emits(\"global.meta.graph_metadata.actor_task_associated\");\n\n registerActorSessionPersistenceTasks();\n\n createLocalGraphMetadataTask(\"Handle Intent Creation\", (ctx) => {\n if (!shouldEmitDirectPrimitiveMetadata()) {\n return false;\n }\n\n const intentName =\n typeof ctx.data?.name === \"string\" ? ctx.data.name.trim() : \"\";\n if (shouldSkipDirectIntentMetadata(intentName)) {\n return false;\n }\n\n const intentDefinition = resolveIntentDefinition(intentName);\n if (intentDefinition) {\n intentDefinition.registrationRequested = true;\n }\n\n return buildDatabaseTriggerContext({\n ...ctx.data,\n isMeta: intentName ? isMetaIntentName(intentName) : false,\n });\n })\n .doOn(\"meta.inquiry_broker.added\")\n .emits(\"global.meta.graph_metadata.intent_created\");\n }\n}\n","export interface BootstrapOptions {\n url?: string;\n injectedGlobalKey?: string;\n}\n\nexport interface HydrationOptions {\n initialInquiryResults?: Record<string, unknown>;\n}\n\nexport interface ResolvedBootstrapEndpoint {\n url: string;\n protocol: \"http\" | \"https\";\n address: string;\n port: number;\n exposed: boolean;\n injectedGlobalKey: string;\n}\n\nconst DEFAULT_BOOTSTRAP_GLOBAL_KEY = \"__CADENZA_RUNTIME__\";\n\ntype ResolveBootstrapEndpointOptions = {\n runtime: \"browser\" | \"server\";\n bootstrap?: BootstrapOptions;\n cadenzaDB?: { address?: string; port?: number };\n};\n\nfunction normalizeString(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction readEnvString(name: string): string | undefined {\n if (typeof process === \"undefined\") {\n return undefined;\n }\n\n return normalizeString(process.env?.[name]);\n}\n\nfunction readConfiguredPort(value: unknown): number | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) {\n throw new Error(`Invalid port value: ${String(value)}`);\n }\n\n const normalized = Math.trunc(parsed);\n if (normalized <= 0) {\n throw new Error(`Port must be a positive integer: ${String(value)}`);\n }\n\n return normalized;\n}\n\nfunction buildBootstrapUrl(\n protocol: \"http\" | \"https\",\n address: string,\n port: number,\n): string {\n return `${protocol}://${address}:${port}`;\n}\n\nfunction readExplicitPortFromOrigin(raw: string): number | undefined {\n const match = raw.match(\n /^[a-z]+:\\/\\/(?:\\[[^\\]]+\\]|[^\\/?#:]+):(\\d+)(?:\\/)?$/i,\n );\n\n if (!match?.[1]) {\n return undefined;\n }\n\n return readConfiguredPort(match[1]);\n}\n\nfunction resolveInjectedBootstrapUrl(injectedGlobalKey: string): string | undefined {\n if (typeof globalThis === \"undefined\") {\n return undefined;\n }\n\n const runtimeConfig = (globalThis as Record<string, any>)[injectedGlobalKey];\n return normalizeString(runtimeConfig?.bootstrapUrl);\n}\n\nfunction resolveExplicitBootstrapValue(options: ResolveBootstrapEndpointOptions): {\n value?: string;\n port?: number;\n injectedGlobalKey: string;\n} {\n const injectedGlobalKey =\n normalizeString(options.bootstrap?.injectedGlobalKey) ??\n DEFAULT_BOOTSTRAP_GLOBAL_KEY;\n\n const explicitBootstrapUrl = normalizeString(options.bootstrap?.url);\n if (explicitBootstrapUrl) {\n return {\n value: explicitBootstrapUrl,\n port: readConfiguredPort(options.cadenzaDB?.port),\n injectedGlobalKey,\n };\n }\n\n if (options.runtime === \"browser\") {\n const injected = resolveInjectedBootstrapUrl(injectedGlobalKey);\n if (injected) {\n return {\n value: injected,\n port: readConfiguredPort(options.cadenzaDB?.port),\n injectedGlobalKey,\n };\n }\n }\n\n const explicitAddress = normalizeString(options.cadenzaDB?.address);\n if (explicitAddress) {\n return {\n value: explicitAddress,\n port: readConfiguredPort(options.cadenzaDB?.port),\n injectedGlobalKey,\n };\n }\n\n const envAddress = readEnvString(\"CADENZA_DB_ADDRESS\");\n return {\n value: envAddress,\n port: readConfiguredPort(options.cadenzaDB?.port ?? readEnvString(\"CADENZA_DB_PORT\")),\n injectedGlobalKey,\n };\n}\n\nexport function readIntegerEnv(name: string, fallback: number): number {\n const raw = readEnvString(name);\n if (!raw) {\n return fallback;\n }\n\n const parsed = Number(raw);\n if (!Number.isFinite(parsed)) {\n return fallback;\n }\n\n const normalized = Math.trunc(parsed);\n if (normalized <= 0) {\n return fallback;\n }\n\n return normalized;\n}\n\nexport function readStringEnv(name: string): string | undefined {\n return readEnvString(name);\n}\n\nexport function readListEnv(name: string): string[][] {\n const raw = readEnvString(name);\n if (!raw) {\n return [];\n }\n\n return raw\n .split(\"|\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0)\n .map((entry) => entry.split(\",\").map((part) => part.trim()));\n}\n\nexport function resolveBootstrapEndpoint(\n options: ResolveBootstrapEndpointOptions,\n): ResolvedBootstrapEndpoint {\n const { value, port: fallbackPort, injectedGlobalKey } =\n resolveExplicitBootstrapValue(options);\n\n if (!value) {\n throw new Error(\n options.runtime === \"browser\"\n ? `No bootstrap URL available. Pass bootstrap.url or inject globalThis.${injectedGlobalKey}.bootstrapUrl.`\n : \"No bootstrap URL available. Set CADENZA_DB_ADDRESS or pass bootstrap.url.\",\n );\n }\n\n const raw = value.trim();\n if (raw.length === 0) {\n throw new Error(\"Bootstrap URL cannot be empty\");\n }\n\n if (raw.includes(\"://\")) {\n const parsed = new URL(raw);\n const protocol = parsed.protocol.replace(\":\", \"\");\n if (protocol !== \"http\" && protocol !== \"https\") {\n throw new Error(`Unsupported bootstrap protocol: ${parsed.protocol}`);\n }\n\n if (\n parsed.pathname &&\n parsed.pathname !== \"/\" &&\n parsed.pathname.trim().length > 0\n ) {\n throw new Error(\n \"Bootstrap URL must be an origin without a path component.\",\n );\n }\n\n const explicitPort = readExplicitPortFromOrigin(raw);\n const port = explicitPort ?? (parsed.port ? readConfiguredPort(parsed.port) : fallbackPort);\n if (!port) {\n throw new Error(\n \"Bootstrap URL must include a port or CADENZA_DB_PORT must be provided.\",\n );\n }\n\n return {\n url: buildBootstrapUrl(protocol, parsed.hostname, port),\n protocol,\n address: parsed.hostname,\n port,\n exposed: protocol === \"https\",\n injectedGlobalKey,\n };\n }\n\n if (raw.includes(\"/\") || raw.includes(\"?\") || raw.includes(\"#\")) {\n throw new Error(\n \"Bootstrap address without protocol must not include a path, query, or hash.\",\n );\n }\n\n const parsed = new URL(`http://${raw}`);\n const protocol: \"http\" = \"http\";\n const port = parsed.port ? readConfiguredPort(parsed.port) : fallbackPort;\n if (!port) {\n throw new Error(\n \"Bootstrap address must include a port or CADENZA_DB_PORT must be provided.\",\n );\n }\n\n return {\n url: buildBootstrapUrl(protocol, parsed.hostname, port),\n protocol,\n address: parsed.hostname,\n port,\n exposed: false,\n injectedGlobalKey,\n };\n}\n","import type { BrowserRuntimeActorRuntimeState } from \"./createBrowserRuntimeActor\";\n\nexport interface ProjectionRuntimeSnapshot<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> {\n ready: boolean;\n projectionState: TProjectionState;\n}\n\nexport function cloneProjectionState<TProjectionState>(\n value: TProjectionState,\n): TProjectionState {\n if (Array.isArray(value)) {\n return value.map((item) => cloneProjectionState(item)) as TProjectionState;\n }\n\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, nested]) => [\n key,\n cloneProjectionState(nested),\n ]),\n ) as TProjectionState;\n }\n\n return value;\n}\n\nexport function resolveInitialProjectionState<\n TProjectionState extends Record<string, any>,\n>(value: TProjectionState | (() => TProjectionState)): TProjectionState {\n const resolved =\n typeof value === \"function\"\n ? (value as () => TProjectionState)()\n : value;\n return cloneProjectionState(resolved);\n}\n\nexport function createProjectionRuntimeSnapshot<\n TProjectionState extends Record<string, any>,\n>(\n runtimeState: BrowserRuntimeActorRuntimeState<TProjectionState> | undefined,\n initialProjectionState: TProjectionState | (() => TProjectionState),\n): ProjectionRuntimeSnapshot<TProjectionState> {\n return {\n ready: runtimeState?.ready ?? false,\n projectionState:\n runtimeState?.projectionState ??\n resolveInitialProjectionState(initialProjectionState),\n };\n}\n","import type { Actor, AnyObject } from \"@cadenza.io/core\";\n\nimport type { ServerOptions } from \"../Cadenza\";\nimport type { DistributedInquiryOptions } from \"../types/inquiry\";\nimport type { BootstrapOptions, HydrationOptions } from \"../utils/bootstrap\";\nimport { resolveInitialProjectionState } from \"./runtimeProjectionState\";\n\nexport interface BrowserRuntimeActorRuntimeState<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> {\n ready: boolean;\n projectionState: TProjectionState;\n lastReadyAt: string | null;\n lastSyncRequestedAt: string | null;\n}\n\nexport interface BrowserRuntimeProjectionBinding<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> {\n signal: string;\n taskName?: string;\n description?: string;\n reduce: (\n current: TProjectionState,\n payload: Record<string, any>,\n ) => TProjectionState;\n}\n\nexport interface BrowserRuntimeServiceOptions\n extends Omit<ServerOptions, \"isFrontend\" | \"bootstrap\" | \"hydration\"> {\n name: string;\n description?: string;\n bootstrap: BootstrapOptions;\n hydration?: HydrationOptions;\n}\n\nexport interface BrowserRuntimeActorOptions<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> {\n actorName: string;\n actorDescription?: string;\n actorKey?: string;\n service: BrowserRuntimeServiceOptions;\n initialProjectionState: TProjectionState | (() => TProjectionState);\n signalBindings?: Array<BrowserRuntimeProjectionBinding<TProjectionState>>;\n readySignal?: string;\n syncSignals?: string[];\n}\n\nexport interface BrowserRuntimeActorHandle<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> {\n actor: Actor<Record<string, never>, BrowserRuntimeActorRuntimeState<TProjectionState>>;\n actorKey: string;\n waitUntilReady: () => Promise<void>;\n inquire: (\n inquiry: string,\n context?: Record<string, any>,\n options?: DistributedInquiryOptions,\n ) => Promise<AnyObject>;\n getRuntimeState: () => BrowserRuntimeActorRuntimeState<TProjectionState>;\n subscribe: (\n listener: (\n state: BrowserRuntimeActorRuntimeState<TProjectionState>,\n ) => void,\n ) => () => void;\n}\n\ninterface BrowserRuntimeInternalHandle<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> {\n listeners: Set<(state: BrowserRuntimeActorRuntimeState<TProjectionState>) => void>;\n readyPromise: Promise<void>;\n resolveReady: () => void;\n readyResolved: boolean;\n}\n\ntype BrowserRuntimeActorInstance<\n TProjectionState extends Record<string, any>,\n> = Actor<Record<string, never>, BrowserRuntimeActorRuntimeState<TProjectionState>>;\n\ntype BrowserRuntimeCadenzaLike = {\n createCadenzaService: (\n serviceName: string,\n description?: string,\n options?: ServerOptions,\n ) => void;\n createActor: <\n D extends Record<string, any>,\n R = AnyObject,\n >(\n spec: Record<string, any>,\n options?: Record<string, any>,\n ) => Actor<D, R>;\n getActor: <D extends Record<string, any>, R = AnyObject>(\n actorName: string,\n ) => Actor<D, R> | undefined;\n createTask: (\n name: string,\n taskFunction: (...args: any[]) => any,\n description?: string,\n ) => {\n doOn: (...signals: string[]) => unknown;\n };\n get: (taskName: string) => unknown;\n inquire: (\n inquiry: string,\n context?: Record<string, any>,\n options?: DistributedInquiryOptions,\n ) => Promise<AnyObject>;\n};\n\nconst DEFAULT_READY_SIGNAL = \"meta.service_registry.initial_sync_complete\";\nconst DEFAULT_SYNC_SIGNALS = [\n \"meta.fetch.handshake_complete\",\n \"meta.socket.handshake\",\n];\nconst DEFAULT_ACTOR_KEY = \"browser-runtime\";\n\nconst browserRuntimeHandles = new Map<string, BrowserRuntimeInternalHandle<any>>();\n\nfunction createIdentityKey(actorName: string, actorKey: string): string {\n return `${actorName}::${actorKey}`;\n}\n\nfunction createDefaultRuntimeState<TProjectionState extends Record<string, any>>(\n initialProjectionState: TProjectionState | (() => TProjectionState),\n): BrowserRuntimeActorRuntimeState<TProjectionState> {\n return {\n ready: false,\n projectionState: resolveInitialProjectionState(initialProjectionState),\n lastReadyAt: null,\n lastSyncRequestedAt: null,\n };\n}\n\nfunction ensureInternalHandle<TProjectionState extends Record<string, any>>(\n identityKey: string,\n): BrowserRuntimeInternalHandle<TProjectionState> {\n const existing = browserRuntimeHandles.get(identityKey);\n if (existing) {\n return existing as BrowserRuntimeInternalHandle<TProjectionState>;\n }\n\n let resolveReady = () => {};\n const readyPromise = new Promise<void>((resolve) => {\n resolveReady = resolve;\n });\n\n const created: BrowserRuntimeInternalHandle<TProjectionState> = {\n listeners: new Set(),\n readyPromise,\n resolveReady,\n readyResolved: false,\n };\n browserRuntimeHandles.set(identityKey, created);\n return created;\n}\n\nfunction resolveInternalReady<TProjectionState extends Record<string, any>>(\n internalHandle: BrowserRuntimeInternalHandle<TProjectionState>,\n): void {\n if (internalHandle.readyResolved) {\n return;\n }\n\n internalHandle.readyResolved = true;\n internalHandle.resolveReady();\n}\n\nfunction notifyListeners<TProjectionState extends Record<string, any>>(\n internalHandle: BrowserRuntimeInternalHandle<TProjectionState>,\n nextState: BrowserRuntimeActorRuntimeState<TProjectionState>,\n): void {\n if (nextState.ready) {\n resolveInternalReady(internalHandle);\n }\n\n for (const listener of internalHandle.listeners) {\n listener(nextState);\n }\n}\n\nfunction getRuntimeStateSnapshot<TProjectionState extends Record<string, any>>(\n actor: BrowserRuntimeActorInstance<TProjectionState>,\n actorKey: string,\n initialProjectionState: TProjectionState | (() => TProjectionState),\n): BrowserRuntimeActorRuntimeState<TProjectionState> {\n return (\n actor.getRuntimeState(actorKey) ??\n createDefaultRuntimeState(initialProjectionState)\n );\n}\n\nfunction registerReadyTask<TProjectionState extends Record<string, any>>(\n cadenza: BrowserRuntimeCadenzaLike,\n actor: BrowserRuntimeActorInstance<TProjectionState>,\n actorKey: string,\n actorName: string,\n readySignal: string,\n initialProjectionState: TProjectionState | (() => TProjectionState),\n internalHandle: BrowserRuntimeInternalHandle<TProjectionState>,\n): void {\n const taskName = `${actorName}.MarkReady`;\n if (cadenza.get(taskName)) {\n return;\n }\n\n cadenza\n .createTask(\n taskName,\n actor.task(\n ({ runtimeState, setRuntimeState }) => {\n const current =\n runtimeState ?? createDefaultRuntimeState(initialProjectionState);\n const nextState: BrowserRuntimeActorRuntimeState<TProjectionState> = {\n ...current,\n ready: true,\n lastReadyAt: new Date().toISOString(),\n };\n setRuntimeState(nextState);\n notifyListeners(internalHandle, nextState);\n return true;\n },\n {\n mode: \"write\",\n },\n ),\n \"Marks the browser runtime actor as ready after the initial frontend sync completes.\",\n )\n .doOn(readySignal);\n}\n\nfunction registerSyncKickoffTask<TProjectionState extends Record<string, any>>(\n cadenza: BrowserRuntimeCadenzaLike,\n actor: BrowserRuntimeActorInstance<TProjectionState>,\n actorKey: string,\n actorName: string,\n syncSignals: string[],\n initialProjectionState: TProjectionState | (() => TProjectionState),\n internalHandle: BrowserRuntimeInternalHandle<TProjectionState>,\n): void {\n const taskName = `${actorName}.RequestInitialSync`;\n if (cadenza.get(taskName)) {\n return;\n }\n\n cadenza\n .createTask(\n taskName,\n actor.task(\n ({ emit, input, runtimeState, setRuntimeState }) => {\n const current =\n runtimeState ?? createDefaultRuntimeState(initialProjectionState);\n const nextState: BrowserRuntimeActorRuntimeState<TProjectionState> = {\n ...current,\n lastSyncRequestedAt: new Date().toISOString(),\n };\n\n setRuntimeState(nextState);\n notifyListeners(internalHandle, nextState);\n emit(\"meta.sync_requested\", {\n __syncing: false,\n __triggeredBy: \"browser-runtime-actor\",\n ...input,\n });\n return true;\n },\n {\n mode: \"write\",\n },\n ),\n \"Requests the initial browser runtime sync after transport handshakes complete.\",\n )\n .doOn(...syncSignals);\n}\n\nfunction registerSignalProjectionTasks<TProjectionState extends Record<string, any>>(\n cadenza: BrowserRuntimeCadenzaLike,\n actor: BrowserRuntimeActorInstance<TProjectionState>,\n actorKey: string,\n actorName: string,\n initialProjectionState: TProjectionState | (() => TProjectionState),\n signalBindings: Array<BrowserRuntimeProjectionBinding<TProjectionState>>,\n internalHandle: BrowserRuntimeInternalHandle<TProjectionState>,\n): void {\n for (const binding of signalBindings) {\n const taskName = binding.taskName ?? `${actorName}.Project ${binding.signal}`;\n if (cadenza.get(taskName)) {\n continue;\n }\n\n cadenza\n .createTask(\n taskName,\n actor.task(\n ({ input, runtimeState, setRuntimeState }) => {\n const current =\n runtimeState ?? createDefaultRuntimeState(initialProjectionState);\n const nextProjectionState = binding.reduce(\n current.projectionState,\n input,\n );\n const nextState: BrowserRuntimeActorRuntimeState<TProjectionState> = {\n ...current,\n projectionState: nextProjectionState,\n };\n\n setRuntimeState(nextState);\n notifyListeners(internalHandle, nextState);\n return input;\n },\n {\n mode: \"write\",\n },\n ),\n binding.description ??\n `Projects the ${binding.signal} signal into browser runtime actor state.`,\n )\n .doOn(binding.signal);\n }\n}\n\nexport function createBrowserRuntimeActor<\n TProjectionState extends Record<string, any>,\n>(\n cadenza: BrowserRuntimeCadenzaLike,\n options: BrowserRuntimeActorOptions<TProjectionState>,\n): BrowserRuntimeActorHandle<TProjectionState> {\n const actorKey = options.actorKey ?? DEFAULT_ACTOR_KEY;\n const identityKey = createIdentityKey(options.actorName, actorKey);\n const internalHandle = ensureInternalHandle<TProjectionState>(identityKey);\n const readySignal = options.readySignal ?? DEFAULT_READY_SIGNAL;\n const syncSignals = options.syncSignals ?? DEFAULT_SYNC_SIGNALS;\n\n let actor =\n cadenza.getActor<Record<string, never>, BrowserRuntimeActorRuntimeState<TProjectionState>>(\n options.actorName,\n ) as BrowserRuntimeActorInstance<TProjectionState> | undefined;\n\n if (!actor) {\n actor = cadenza.createActor<\n Record<string, never>,\n BrowserRuntimeActorRuntimeState<TProjectionState>\n >({\n name: options.actorName,\n description:\n options.actorDescription ??\n \"Framework-agnostic browser runtime actor for frontend Cadenza environments.\",\n defaultKey: actorKey,\n initState: {},\n loadPolicy: \"eager\",\n writeContract: \"overwrite\",\n });\n }\n\n const {\n name: serviceName,\n description: serviceDescription = \"\",\n bootstrap,\n hydration,\n ...serviceOptions\n } = options.service;\n\n cadenza.createCadenzaService(serviceName, serviceDescription, {\n ...serviceOptions,\n isFrontend: true,\n bootstrap,\n hydration,\n });\n\n registerReadyTask(\n cadenza,\n actor,\n actorKey,\n options.actorName,\n readySignal,\n options.initialProjectionState,\n internalHandle,\n );\n registerSyncKickoffTask(\n cadenza,\n actor,\n actorKey,\n options.actorName,\n syncSignals,\n options.initialProjectionState,\n internalHandle,\n );\n registerSignalProjectionTasks(\n cadenza,\n actor,\n actorKey,\n options.actorName,\n options.initialProjectionState,\n options.signalBindings ?? [],\n internalHandle,\n );\n\n const currentState = getRuntimeStateSnapshot(\n actor,\n actorKey,\n options.initialProjectionState,\n );\n if (currentState.ready) {\n resolveInternalReady(internalHandle);\n }\n\n return {\n actor,\n actorKey,\n waitUntilReady: async () => {\n if (\n getRuntimeStateSnapshot(actor, actorKey, options.initialProjectionState).ready\n ) {\n return;\n }\n\n await internalHandle.readyPromise;\n },\n inquire: async (inquiry, context = {}, inquiryOptions = {}) => {\n if (\n !getRuntimeStateSnapshot(actor, actorKey, options.initialProjectionState).ready\n ) {\n await internalHandle.readyPromise;\n }\n\n return cadenza.inquire(inquiry, context, inquiryOptions);\n },\n getRuntimeState: () =>\n getRuntimeStateSnapshot(actor, actorKey, options.initialProjectionState),\n subscribe: (listener) => {\n internalHandle.listeners.add(listener);\n listener(\n getRuntimeStateSnapshot(actor, actorKey, options.initialProjectionState),\n );\n\n return () => {\n internalHandle.listeners.delete(listener);\n };\n },\n };\n}\n\nexport function resetBrowserRuntimeActorHandles(): void {\n browserRuntimeHandles.clear();\n}\n","import type { AnyObject } from \"@cadenza.io/core\";\nimport { v4 as uuid } from \"uuid\";\nimport type { BootstrapOptions, HydrationOptions } from \"../utils/bootstrap\";\nimport { resolveBootstrapEndpoint } from \"../utils/bootstrap\";\nimport type {\n DistributedInquiryMeta,\n DistributedInquiryOptions,\n InquiryResponderStatus,\n} from \"../types/inquiry\";\nimport type { ServiceInstanceDescriptor } from \"../types/serviceRegistry\";\nimport {\n isMetaIntentName,\n mergeInquiryContexts,\n summarizeResponderStatuses,\n} from \"../utils/inquiry\";\nimport { normalizeServiceInstanceDescriptor } from \"../utils/serviceInstance\";\nimport { selectTransportForRole } from \"../utils/transport\";\n\nexport interface SSRInquiryBridgeOptions {\n bootstrap?: BootstrapOptions;\n cadenzaDB?: {\n address?: string;\n port?: number;\n };\n}\n\nexport interface SSRInquiryBridge {\n inquire: (\n inquiry: string,\n context?: AnyObject,\n options?: DistributedInquiryOptions,\n ) => Promise<AnyObject>;\n dehydrate: () => HydrationOptions;\n}\n\ntype NormalizedIntentMap = {\n intentName: string;\n serviceName: string;\n taskName: string;\n taskVersion: number;\n deleted: boolean;\n};\n\nfunction ensureFetch(): typeof fetch {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"SSR inquiry bridge requires global fetch support.\");\n }\n\n return globalThis.fetch.bind(globalThis);\n}\n\nfunction normalizeArrayResponse(\n value: AnyObject,\n keys: string[],\n): AnyObject[] {\n for (const key of keys) {\n if (Array.isArray((value as any)?.[key])) {\n return (value as any)[key];\n }\n }\n\n if (Array.isArray((value as any)?.rows)) {\n return (value as any).rows;\n }\n\n if (Array.isArray((value as any)?.data)) {\n return (value as any).data;\n }\n\n return [];\n}\n\nfunction buildQueryResponseKeys(tableName: string): string[] {\n const camelCased = tableName.replace(/_([a-z])/g, (_match, char) =>\n char.toUpperCase(),\n );\n\n return [\n `${tableName}Rows`,\n `${tableName}s`,\n tableName,\n `${camelCased}s`,\n camelCased,\n ];\n}\n\nfunction normalizeIntentMap(raw: AnyObject): NormalizedIntentMap | null {\n const intentName = String(raw.intentName ?? raw.intent_name ?? \"\").trim();\n const serviceName = String(raw.serviceName ?? raw.service_name ?? \"\").trim();\n const taskName = String(raw.taskName ?? raw.task_name ?? \"\").trim();\n const taskVersion = Math.max(\n 1,\n Math.trunc(Number(raw.taskVersion ?? raw.task_version ?? 1) || 1),\n );\n\n if (!intentName || !serviceName || !taskName) {\n return null;\n }\n\n return {\n intentName,\n serviceName,\n taskName,\n taskVersion,\n deleted: Boolean(raw.deleted),\n };\n}\n\nfunction buildInquiryMeta(\n inquiry: string,\n startedAt: number,\n statuses: InquiryResponderStatus[],\n): DistributedInquiryMeta {\n const counts = summarizeResponderStatuses(statuses);\n return {\n inquiry,\n isMetaInquiry: isMetaIntentName(inquiry),\n totalResponders: statuses.length,\n eligibleResponders: statuses.length,\n filteredOutResponders: 0,\n responded: counts.responded,\n failed: counts.failed,\n timedOut: counts.timedOut,\n pending: counts.pending,\n durationMs: Date.now() - startedAt,\n responders: statuses,\n };\n}\n\nexport function createSSRInquiryBridge(\n options: SSRInquiryBridgeOptions = {},\n): SSRInquiryBridge {\n const bootstrapEndpoint = resolveBootstrapEndpoint({\n runtime: \"server\",\n bootstrap: options.bootstrap,\n cadenzaDB: options.cadenzaDB,\n });\n const fetchImplementation = ensureFetch();\n const initialInquiryResults: Record<string, unknown> = {};\n\n const postDelegation = async (\n targetUrl: string,\n remoteRoutineName: string,\n context: AnyObject,\n timeoutMs: number,\n ): Promise<AnyObject> => {\n const signal = AbortSignal.timeout(timeoutMs);\n const response = await fetchImplementation(`${targetUrl}/delegation`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...context,\n __remoteRoutineName: remoteRoutineName,\n __metadata: {\n ...(context.__metadata ?? {}),\n __deputyExecId: uuid(),\n },\n }),\n signal,\n });\n\n return (await response.json()) as AnyObject;\n };\n\n const queryTable = async (\n tableName: string,\n queryData: AnyObject,\n timeoutMs: number,\n ): Promise<AnyObject[]> => {\n const response = await postDelegation(\n bootstrapEndpoint.url,\n `Query ${tableName}`,\n { queryData },\n timeoutMs,\n );\n return normalizeArrayResponse(response, buildQueryResponseKeys(tableName));\n };\n\n return {\n async inquire(\n inquiry: string,\n context: AnyObject = {},\n inquiryOptions: DistributedInquiryOptions = {},\n ): Promise<AnyObject> {\n const startedAt = Date.now();\n const overallTimeoutMs =\n inquiryOptions.overallTimeoutMs ?? inquiryOptions.timeout ?? 30_000;\n const perResponderTimeoutMs =\n inquiryOptions.perResponderTimeoutMs ?? overallTimeoutMs;\n\n const intentMaps = (\n await queryTable(\n \"intent_to_task_map\",\n {\n filter: {\n intent_name: inquiry,\n },\n },\n overallTimeoutMs,\n )\n )\n .map(normalizeIntentMap)\n .filter(\n (item): item is NormalizedIntentMap =>\n !!item && item.intentName === inquiry && !item.deleted,\n );\n\n if (intentMaps.length === 0) {\n return {\n __inquiryMeta: buildInquiryMeta(inquiry, startedAt, []),\n };\n }\n\n const relevantServiceNames = Array.from(\n new Set(intentMaps.map((item) => item.serviceName)),\n );\n\n const rawServiceInstances = (\n await queryTable(\n \"service_instance\",\n {\n filter: {\n service_name: relevantServiceNames,\n },\n },\n overallTimeoutMs,\n )\n );\n\n const rawServiceTransports = await queryTable(\n \"service_instance_transport\",\n {\n filter: {\n deleted: false,\n },\n },\n overallTimeoutMs,\n );\n\n const transportsByInstance = new Map<string, AnyObject[]>();\n for (const transport of rawServiceTransports) {\n const serviceInstanceId = String(\n transport.serviceInstanceId ?? transport.service_instance_id ?? \"\",\n ).trim();\n if (!serviceInstanceId) {\n continue;\n }\n\n if (!transportsByInstance.has(serviceInstanceId)) {\n transportsByInstance.set(serviceInstanceId, []);\n }\n transportsByInstance.get(serviceInstanceId)!.push(transport);\n }\n\n const serviceInstances = rawServiceInstances\n .map((instance) =>\n normalizeServiceInstanceDescriptor({\n ...instance,\n transports:\n transportsByInstance.get(String(instance.uuid ?? \"\").trim()) ?? [],\n }),\n )\n .filter(\n (item): item is ServiceInstanceDescriptor =>\n !!item &&\n relevantServiceNames.includes(item.serviceName) &&\n item.isActive &&\n !item.isNonResponsive &&\n !item.isBlocked,\n )\n .sort((left, right) => {\n if (left.serviceName !== right.serviceName) {\n return left.serviceName.localeCompare(right.serviceName);\n }\n if (left.isPrimary !== right.isPrimary) {\n return left.isPrimary ? -1 : 1;\n }\n return (\n (left.numberOfRunningGraphs ?? 0) - (right.numberOfRunningGraphs ?? 0)\n );\n });\n\n const statuses: InquiryResponderStatus[] = intentMaps.map((map) => ({\n isRemote: true,\n serviceName: map.serviceName,\n taskName: map.taskName,\n taskVersion: map.taskVersion,\n localTaskName: `SSR inquiry via ${map.serviceName} (${map.taskName} v${map.taskVersion})`,\n status: \"timed_out\",\n durationMs: 0,\n }));\n\n const fulfilledContexts = await Promise.all(\n intentMaps.map(async (map, index) => {\n const status = statuses[index];\n const startedAtForResponder = Date.now();\n const selectedInstance = serviceInstances.find(\n (instance) =>\n instance.serviceName === map.serviceName &&\n !!selectTransportForRole(\n instance.transports,\n \"internal\",\n \"rest\",\n ),\n );\n\n if (!selectedInstance) {\n status.status = \"failed\";\n status.error = `No routeable internal instances for ${map.serviceName}`;\n status.durationMs = Date.now() - startedAtForResponder;\n return null;\n }\n\n const targetTransport = selectTransportForRole(\n selectedInstance.transports,\n \"internal\",\n \"rest\",\n );\n if (!targetTransport) {\n status.status = \"failed\";\n status.error = `No internal transport for ${selectedInstance.serviceName}/${selectedInstance.uuid}`;\n status.durationMs = Date.now() - startedAtForResponder;\n return null;\n }\n\n const targetUrl = targetTransport.origin;\n\n try {\n const result = await postDelegation(\n targetUrl,\n map.taskName,\n context,\n perResponderTimeoutMs,\n );\n status.durationMs = Date.now() - startedAtForResponder;\n if (result?.errored || result?.failed) {\n status.status = \"failed\";\n status.error = String(\n result?.__error ?? result?.error ?? \"Remote inquiry failed\",\n );\n return null;\n }\n\n status.status = \"fulfilled\";\n return result;\n } catch (error) {\n status.durationMs = Date.now() - startedAtForResponder;\n if (\n error instanceof Error &&\n (error.name === \"AbortError\" || /timed out/i.test(error.message))\n ) {\n status.status = \"timed_out\";\n status.error = error.message;\n return null;\n }\n\n status.status = \"failed\";\n status.error =\n error instanceof Error ? error.message : String(error);\n return null;\n }\n }),\n );\n\n const mergedContext = mergeInquiryContexts(\n fulfilledContexts.filter(\n (item): item is AnyObject => item !== null,\n ),\n );\n const responseContext = {\n ...mergedContext,\n __inquiryMeta: buildInquiryMeta(inquiry, startedAt, statuses),\n };\n\n if (inquiryOptions.hydrationKey) {\n initialInquiryResults[inquiryOptions.hydrationKey] = responseContext;\n }\n\n if (\n inquiryOptions.requireComplete &&\n statuses.some((status) => status.status !== \"fulfilled\")\n ) {\n throw {\n ...responseContext,\n __error: `Inquiry '${inquiry}' did not complete successfully`,\n errored: true,\n };\n }\n\n return responseContext;\n },\n\n dehydrate(): HydrationOptions {\n return {\n initialInquiryResults: { ...initialInquiryResults },\n };\n },\n };\n}\n"],"mappings":"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","names":["createBrowserRuntimeActor","import_core","import_uuid","uuid","emit","uuid","emit","import_uuid","uuid","normalizeString","uuid","quota","period","SERVICE_REGISTRY_TRACE_SERVICE","isUuid","emit","emit","uuid","existingTransport","selectedTransport","routeKey","preferredProtocol","selectedProtocol","ctx","transport","import_core","import_uuid","uuid","emit","emit","URL","ctx","emit","delegationCtx","serviceInstanceId","import_uuid","emit","uuid","emit","import_core","ACTOR_SESSION_TRACE_ENABLED","import_core","import_uuid","ACTOR_TASK_METADATA","getActorTaskRuntimeMetadata","canonicalizeSignalName","emit","serviceName","getActorTaskRuntimeMetadata","primitivePendingSummary","uuid","INQUIRY_TRACE_ENABLED","TRACED_INQUIRY_METADATA_SIGNALS","isLocallyHandledIntentName","resolveExecutionObservabilityServiceInstanceId","import_uuid","normalizeString","parsed","protocol","port","emit","Cadenza","uuid","emit","import_core","import_uuid","uuid","createBrowserRuntimeActor"]}
|