@sdux-vault/engine 0.13.0 → 0.26.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.
@@ -1 +1 @@
1
- {"version":3,"file":"sdux-vault-engine.mjs","sources":["../../../lib/src/version/version.register.ts","../../../lib/src/constants/vault-conductor.constant.ts","../../../lib/src/controllers/abstain/with-core-abstrain.controller.ts","../../../lib/src/controllers/error/with-core-error.controller.ts","../../../lib/src/types/license-event.type.ts","../../../lib/src/licensing/licensing.service.ts","../../../lib/src/controllers/license/with-core-license.controller.ts","../../../lib/src/arbitrator/arbitrator.ts","../../../lib/src/types/monitor/vault-monitor-event-category.type.ts","../../../lib/src/types/monitor/vault-monitor-field-rule.type.ts","../../../lib/src/monitor/event-policy/vault-monitor-category-field-policy.constant.ts","../../../lib/src/monitor/event-policy/vault-monitor-event-policy.constant.ts","../../../lib/src/monitor/vault-monitor-shared.state.ts","../../../lib/src/monitor/vault-monitor.helper.ts","../../../lib/src/monitor/vault-monitor.service.ts","../../../lib/src/types/controller-event.type.ts","../../../lib/src/decision-engine/decision-engine.ts","../../../lib/src/constants/vault-orchestrator.constant.ts","../../../lib/src/constants/protected-feature-cell-keys.constant.ts","../../../lib/src/types/vault/vault-registration-license-status.type.ts","../../../lib/src/constants/known-vault-keys.constant.ts","../../../lib/src/constants/vault-license-id.constant.ts","../../../lib/src/factories/vault/vault-core.function.ts","../../../lib/src/utils/initialize-behavior.util.ts","../../../lib/src/utils/orchestrator.utils.ts","../../../lib/src/factories/vault/token-validation/public-keys.ts","../../../lib/src/factories/vault/token-validation/verify-license-token.utility.ts","../../../lib/src/licensing/licensing.abstract.ts","../../../lib/src/behaviors/license/with-core-license.behavior.ts","../../../lib/src/orchestrator/orchestrator.ts","../../../lib/src/types/conductor-license-status.type.ts","../../../lib/src/utils/initialize-controller.util.ts","../../../lib/src/conductor/conductor.ts","../../../lib/src/constants/vault-feature-cell.constant.ts","../../../lib/src/utils/feature-cell/feature-cell-validation.util.ts","../../../lib/src/factories/feature-cell/feature-cell.builder.ts","../../../lib/src/factories/feature-cell/feature-cell.class.ts","../../../lib/src/tokens/feature-cell-token-registry.ts","../../../lib/public-api.ts","../../../lib/sdux-vault-engine.ts"],"sourcesContent":["// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > utils > version > version.register.ts\n// Updated: 2026-03-03 08:09\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport { registerVersion } from '@sdux-vault/shared';\n\nconst SDUX_PACKAGE = '@sdux-vault/engine';\nconst SDUX_VERSION = '0.13.0';\n\nregisterVersion(SDUX_PACKAGE, SDUX_VERSION);\n","/**\n * Canonical identifier used to label the Conductor execution context.\n */\nexport const VAULT_CONDUCTOR = 'vault-conductor';\n","import {\n ControllerClassContext,\n ControllerMessageShape,\n ControllerMessageTypes,\n ControllerType,\n ControllerTypes,\n ControllerVote,\n ControllerVotes,\n defineControllerKey,\n OperationTypes,\n VaultController,\n vaultDebug,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Observable, of } from 'rxjs';\n\n/**\n * Core abstain controller responsible for participating in controller vote resolution.\n * This controller observes incoming controller messages and emits a neutral vote without modifying pipeline flow.\n *\n * --RelatedStart--\n * ControllerMessageShape\n * ControllerVote\n * ControllerVotes\n * --RelatedEnd--\n */\n@VaultController({\n type: ControllerTypes.CoreAbstain,\n key: defineControllerKey('Policy', 'CoreAbstain'),\n critical: false\n})\nexport class withCoreAbstainController<T> {\n /**\n * Static controller type identifier used by the orchestrator.\n */\n static readonly type: ControllerType;\n\n /**\n * Static controller key assigned by the decorator.\n */\n static readonly key: string;\n\n /**\n * Indicates whether this controller is critical.\n */\n static readonly critical: boolean;\n\n /**\n * Controller type identifier used for pipeline classification.\n */\n readonly type = withCoreAbstainController.type;\n\n /**\n * Indicates whether this controller instance is critical.\n */\n readonly critical = withCoreAbstainController.critical;\n\n /**\n * Unique controller key identifying this instance.\n */\n readonly key: string;\n\n #isInitialized = false;\n\n #initializationFailed = false;\n\n /**\n * Creates a new core conductor controller instance.\n *\n * @param key Unique controller identifier supplied by the factory.\n * @param controllerCtx Controller context supplying execution metadata.\n */\n constructor(\n key: string,\n readonly controllerCtx: ControllerClassContext\n ) {\n this.key = key;\n }\n\n /**\n * Handles an incoming controller message and emits a controller vote.\n *\n * @param msg Controller message supplied by the orchestrator.\n * @returns Observable emitting a controller vote or no value.\n */\n handleMessage(msg: ControllerMessageShape<T>): Observable<ControllerVote | void> {\n vaultDebug(`${this.key} handleMessage received \"${msg.type}\" for trace \"${msg.traceId}\".`);\n\n switch (msg.type) {\n case ControllerMessageTypes.Attempt: {\n const { ctx } = msg;\n\n if (this.#initializationFailed) {\n return of(ControllerVotes.Abort);\n }\n\n if (ctx.operation === OperationTypes.Initialize) {\n return of(ControllerVotes.Abstain);\n }\n\n return of(this.#isInitialized ? ControllerVotes.Abstain : ControllerVotes.Deny);\n }\n\n case ControllerMessageTypes.Finalize: {\n this.#isInitialized = true;\n\n return of();\n }\n\n case ControllerMessageTypes.Success: {\n this.#isInitialized = true;\n\n return of();\n }\n\n case ControllerMessageTypes.Failure: {\n if (msg.ctx.operation === OperationTypes.Initialize) {\n this.#initializationFailed = true;\n }\n\n return of();\n }\n\n default: {\n return of(ControllerVotes.Abstain);\n }\n }\n }\n\n /**\n * Lifecycle hook invoked when the controller instance is destroyed.\n */\n destroy(): void {\n vaultWarn(`${this.key} - destroy noop`);\n }\n\n /**\n * Lifecycle hook invoked when the controller instance is reset.\n */\n reset(): void {\n vaultWarn(`${this.key} - reset noop`);\n }\n}\n","import {\n ControllerClassContext,\n ControllerMessageShape,\n ControllerMessageTypes,\n ControllerType,\n ControllerTypes,\n ControllerVote,\n ControllerVotes,\n defineControllerKey,\n VaultController,\n vaultDebug,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Observable, of } from 'rxjs';\n\n@VaultController({\n type: ControllerTypes.Error,\n key: defineControllerKey('Policy', 'CoreError'),\n critical: false\n})\nexport class withCoreErrorController<T> {\n /**\n * Static controller type identifier used by the orchestrator.\n */\n static readonly type: ControllerType;\n\n /**\n * Static controller key assigned by the decorator.\n */\n static readonly key: string;\n\n /**\n * Indicates whether this controller is critical.\n */\n static readonly critical: boolean;\n\n /**\n * Controller type identifier used for pipeline classification.\n */\n readonly type = withCoreErrorController.type;\n\n /**\n * Indicates whether this controller instance is critical.\n */\n readonly critical = withCoreErrorController.critical;\n\n /**\n * Unique controller key identifying this instance.\n */\n readonly key: string;\n\n ctx!: ControllerClassContext;\n\n /**\n * Creates a new core conductor controller instance.\n *\n * @param key Unique controller identifier supplied by the factory.\n * @param controllerCtx Controller context supplying execution metadata.\n */\n constructor(\n key: string,\n readonly controllerCtx: ControllerClassContext\n ) {\n this.key = key;\n this.ctx = controllerCtx;\n }\n\n /**\n * Handles an incoming controller message and emits a controller vote.\n *\n * @param msg Controller message supplied by the orchestrator.\n * @returns Observable emitting a controller vote or no value.\n */\n handleMessage(msg: ControllerMessageShape<T>): Observable<ControllerVote | void> {\n vaultDebug(`${this.key} handleMessage received \"${msg.type}\" for trace \"${msg.traceId}\".`);\n\n switch (msg.type) {\n case ControllerMessageTypes.Failure: {\n vaultDebug(`${this.key} ABORT — default failure handler for trace \"${msg.traceId}\"`);\n this.ctx.requestAbort(msg.traceId);\n return of();\n }\n\n default: {\n return of(ControllerVotes.Abstain);\n }\n }\n }\n\n /**\n * Lifecycle hook invoked when the controller instance is destroyed.\n */\n destroy(): void {\n vaultWarn(`${this.key} - destroy noop`);\n }\n\n /**\n * Lifecycle hook invoked when the controller instance is reset.\n */\n reset(): void {\n vaultWarn(`${this.key} - reset noop`);\n }\n}\n","export const LicenseEventTypes = {\n RequireLicense: 'requireLicense',\n\n ValidateLicense: 'validateLicense',\n LicenseStatus: 'licenseStatus',\n\n DescribeFeature: 'describe-feature',\n DescribeBehaviors: 'describe-behaviors',\n DescribeControllers: 'describe-controllers'\n} as const;\n\nexport type LicenseEventType = (typeof LicenseEventTypes)[keyof typeof LicenseEventTypes];\n","import { DevMode } from '@sdux-vault/shared';\nimport { Observable, Subject } from 'rxjs';\nimport { LicensingServiceContract } from '../interfaces/licensing/licensing-service.interface';\nimport { LicensingBehaviorEventShape } from '../shapes/licensing/licensing-behavior-event.shape';\nimport { LicensingControllerEvent } from '../shapes/licensing/licensing-controller-event.shape';\nimport { LicensingEventShape } from '../shapes/licensing/licensing-event.shape';\nimport { LicensingFeatureDescriptionEventShape } from '../shapes/licensing/licensing-feature-description-event.shape';\nimport { LicensingValidationShape } from '../shapes/licensing/licensing-validation.shape';\nimport { LicenseEventTypes } from '../types/license-event.type';\n\n//eslint-disable-next-line\nlet singleton: LicensingServiceContract<any> | null = null;\n\nexport function InitializeLicensingService<T>(\n events$: Subject<LicensingEventShape<T>>,\n validation$: Observable<LicensingValidationShape>\n): void {\n if (singleton) return;\n singleton = new LicensingServiceInstance(events$, validation$);\n}\n\nexport function LicensingService<T>(): LicensingServiceContract<T> {\n if (!singleton) {\n throw new Error('[vault] LicensingService not initialized.');\n }\n return singleton;\n}\n\nclass LicensingServiceInstance<T> implements LicensingServiceContract<T> {\n constructor(\n private events$: Subject<LicensingEventShape<T>>,\n private validation$: Observable<LicensingValidationShape>\n ) {}\n\n describeFeature(event: LicensingFeatureDescriptionEventShape<T>): void {\n event.type = LicenseEventTypes.DescribeFeature;\n this.events$.next(event);\n }\n\n describeBehaviors(event: LicensingBehaviorEventShape): void {\n event.type = LicenseEventTypes.DescribeBehaviors;\n this.events$.next(event);\n }\n\n describeControllers(event: LicensingControllerEvent): void {\n event.type = LicenseEventTypes.DescribeControllers;\n this.events$.next(event);\n }\n\n requestLicense(featureCellKey: string, key: string): string {\n if (!key) {\n throw new Error('[vault] Cannot register controller license without a key.');\n }\n\n const licenseToken = this.#generateLicenseToken();\n this.events$.next({\n featureCellKey,\n key,\n licenseToken,\n type: LicenseEventTypes.RequireLicense\n });\n\n return licenseToken;\n }\n\n validateLicense(featureCellKey: string, key: string, licenseToken: string, valid: boolean): void {\n this.events$.next({\n featureCellKey,\n key,\n licenseToken,\n type: LicenseEventTypes.ValidateLicense,\n valid\n });\n }\n\n #generateLicenseToken(): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n const randomPart = (length: number) =>\n Array.from({ length }, () => chars[Math.floor(Math.random() * chars.length)]).join('');\n\n return `${randomPart(5)}-${randomPart(5)}`;\n }\n\n getLicenseValidation$(): Observable<LicensingValidationShape> {\n return this.validation$;\n }\n}\n\nexport const resetLicensingServiceForTests = (): void => {\n if (!DevMode.active) return;\n singleton = null;\n};\n","import {\n ControllerClassContext,\n ControllerMessageShape,\n ControllerMessageTypes,\n ControllerType,\n ControllerTypes,\n ControllerVote,\n ControllerVotes,\n defineControllerKey,\n VaultController,\n vaultDebug,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { LicensingService } from '../../licensing/licensing.service';\nimport { LicensingValidationShape } from '../../shapes/licensing/licensing-validation.shape';\n\n@VaultController({\n type: ControllerTypes.License,\n key: defineControllerKey('Policy', 'CoreLicense'),\n critical: true\n})\nexport class withCoreLicenseController<T> {\n static readonly type: ControllerType;\n static readonly key: string;\n static readonly critical: boolean;\n\n readonly type = withCoreLicenseController.type;\n readonly critical = withCoreLicenseController.critical;\n readonly key: string;\n\n #licenseApproved: boolean | null = null;\n #sub?: Subscription;\n\n constructor(\n key: string,\n readonly controllerCtx: ControllerClassContext\n ) {\n this.key = key;\n\n const featureCellKey = controllerCtx.featureCellKey;\n\n this.#sub = LicensingService()\n .getLicenseValidation$()\n .pipe(filter((licenseEvent: LicensingValidationShape) => licenseEvent.featureCellKey === featureCellKey))\n .subscribe((event) => {\n this.#licenseApproved = event.approved;\n this.#sub?.unsubscribe();\n const traceId = `${featureCellKey}::license`;\n if (event.approved) {\n controllerCtx?.licenseApproved?.(traceId);\n } else {\n controllerCtx?.licenseDenied?.(traceId);\n }\n });\n }\n\n handleMessage(msg: ControllerMessageShape<T>): Observable<ControllerVote | void> {\n vaultDebug(`${this.key} received \"${msg.type}\" for trace \"${msg.traceId}\".`);\n\n switch (msg.type) {\n case ControllerMessageTypes.Attempt: {\n if (this.#licenseApproved) {\n return of(ControllerVotes.Abstain);\n } else if (this.#licenseApproved === null) {\n return of(ControllerVotes.Deny);\n }\n\n // abort\n return of(ControllerVotes.Abort);\n }\n\n default:\n return of();\n }\n }\n\n destroy(): void {\n this.#sub?.unsubscribe();\n vaultWarn(`${this.key} - destroy unsubscribe`);\n }\n\n reset(): void {\n vaultWarn(`${this.key} - reset noop`);\n }\n}\n","import type { ControllerAttemptMessageShape, ControllerContract, ControllerMessageShape } from '@sdux-vault/shared';\n\nimport {\n ControllerDecisionShape,\n ControllerVotes,\n DecisionOutcomeTypes,\n vaultError,\n vaultWarn,\n type ControllerVote\n} from '@sdux-vault/shared';\n\nimport { catchError, forkJoin, map, Observable, of } from 'rxjs';\n\n/**\n * Pure decision engine responsible for aggregating controller votes.\n *\n * This class evaluates controller responses deterministically by normalizing\n * votes, applying priority rules, and producing a single decision outcome\n * without maintaining internal state or execution history.\n */\nexport class Arbitrator<T> {\n /**\n * Evaluates an ATTEMPT message across all provided controllers.\n *\n * Each controller vote is normalized and aggregated using deterministic\n * priority rules to produce exactly one decision outcome.\n *\n * @param controllers - The set of controllers participating in arbitration.\n * @param msg - The ATTEMPT message being evaluated.\n * @returns An observable emitting a single controller decision.\n */\n evaluateAttempt(\n controllers: ControllerContract<T>[],\n msg: ControllerAttemptMessageShape<T>\n ): Observable<ControllerDecisionShape> {\n // No controllers → treat as unanimous abstain → arbitrate\n if (controllers.length === 0) {\n return of(this.arbitrate(msg.traceId, [ControllerVotes.Abstain]));\n }\n\n try {\n const votes$ = controllers.map((controller) =>\n controller.handleMessage(msg).pipe(\n map((v) => v ?? ControllerVotes.Abstain),\n catchError((err) => {\n vaultWarn('[vault:arbitrator] controller threw during attempt:', err);\n return of(ControllerVotes.Deny);\n })\n )\n );\n\n return forkJoin(votes$).pipe(map((votes) => this.arbitrate(msg.traceId, votes)));\n } catch {\n return of(this.arbitrate(msg.traceId, [ControllerVotes.Deny]));\n }\n }\n\n /**\n * Notifies controllers of non-attempt lifecycle messages.\n *\n * These messages are forwarded to controllers for observation only and\n * do not participate in arbitration or decision-making.\n *\n * @param controllers - The controllers to notify.\n * @param msg - The lifecycle message being dispatched.\n * @returns An observable that completes when all notifications finish.\n */\n notify(controllers: ControllerContract<T>[], msg: ControllerMessageShape<T>): Observable<void> {\n if (controllers.length === 0) {\n return of(void 0);\n }\n\n try {\n const streams$ = controllers.map((controller) =>\n controller.handleMessage(msg).pipe(\n map(() => void 0),\n catchError((err) => {\n vaultWarn('[vault:arbitrator] controller threw during notify:', err);\n return of(void 0);\n })\n )\n );\n\n return forkJoin(streams$).pipe(map(() => void 0));\n } catch {\n return of(void 0);\n }\n }\n\n /**\n * Applies priority rules to a set of controller votes.\n *\n * Votes are evaluated in descending priority order to determine the\n * final controller decision for a given trace.\n *\n * @param traceId - The trace identifier associated with the decision.\n * @param votes - The normalized controller votes.\n * @returns The resolved controller decision.\n */\n private arbitrate(traceId: string, votes: ControllerVote[]): ControllerDecisionShape {\n const hasAbort = votes.includes(ControllerVotes.Abort);\n if (hasAbort) {\n return { traceId, outcome: DecisionOutcomeTypes.Abort };\n }\n\n const hasDeny = votes.includes(ControllerVotes.Deny);\n if (hasDeny) {\n return { traceId, outcome: DecisionOutcomeTypes.Deny };\n }\n\n const allAbstain = votes.every((v) => v === ControllerVotes.Abstain);\n if (allAbstain) {\n return { traceId, outcome: DecisionOutcomeTypes.Abstain };\n }\n\n vaultError(`Unknown controller vote detected`, { traceId, votes });\n\n return { traceId, outcome: DecisionOutcomeTypes.Deny };\n }\n}\n","// --- AI Model File Path ---\n// projects > engine > src > lib > types > monitor > vault-monitor-event-category.type.ts\n\nexport const VaultMonitorEventCategoryType = {\n Boundary: 'boundary',\n State: 'state',\n Error: 'error'\n} as const;\n\nexport type VaultMonitorEventCategoryType =\n (typeof VaultMonitorEventCategoryType)[keyof typeof VaultMonitorEventCategoryType];\n","// --- AI Model File Path ---\n// projects > engine > src > lib > types > monitor > vault-monitor-field-rule.type.ts\n\nexport const FieldRuleTypes = {\n Never: 'never',\n Optional: 'optional',\n Required: 'required'\n} as const;\n\nexport type FieldRuleType = (typeof FieldRuleTypes)[keyof typeof FieldRuleTypes];\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > monitor > event-policy > vault-monitor-category-field-policy.constant.ts\n// Updated: 2026-03-06 16:29\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport { VaultMonitorCategoryFieldPolicyShape } from '../../shapes/monitor/vault-monitor-category-field-policy.shape';\nimport { VaultMonitorEventCategoryType } from '../../types/monitor/vault-monitor-event-category.type';\nimport { FieldRuleTypes } from '../../types/monitor/vault-monitor-field-rule.type';\n\nexport const CATEGORY_FIELD_POLICY_CONSTANT: Record<\n VaultMonitorEventCategoryType,\n VaultMonitorCategoryFieldPolicyShape\n> = {\n [VaultMonitorEventCategoryType.Boundary]: {\n state: FieldRuleTypes.Never,\n payload: FieldRuleTypes.Optional,\n error: FieldRuleTypes.Never\n },\n\n [VaultMonitorEventCategoryType.State]: {\n state: FieldRuleTypes.Required,\n payload: FieldRuleTypes.Optional,\n error: FieldRuleTypes.Never\n },\n\n [VaultMonitorEventCategoryType.Error]: {\n state: FieldRuleTypes.Required,\n payload: FieldRuleTypes.Optional,\n error: FieldRuleTypes.Required\n }\n};\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > monitor > event-policy > vault-monitor-event-policy.constant.ts\n// Updated: 2026-03-06 16:30\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport { EventPolicyShape } from '../../shapes/monitor/vault-monitor-event-policy.shape';\nimport { VaultMonitorEventCategoryType } from '../../types/monitor/vault-monitor-event-category.type';\n\nconst EVENT_POLICY_CONSTANT: Record<string, EventPolicyShape> = {\n // ─────────────────────────────────────────────\n // STATE\n // ─────────────────────────────────────────────\n 'stage:end:core-state': { category: VaultMonitorEventCategoryType.State },\n 'stage:end:core-emit-state': { category: VaultMonitorEventCategoryType.State },\n 'lifecycle:end:merge': { category: VaultMonitorEventCategoryType.State },\n 'lifecycle:end:replace': { category: VaultMonitorEventCategoryType.State },\n 'stage:end:compute-merge': { category: VaultMonitorEventCategoryType.State },\n 'stage:end:reducer': { category: VaultMonitorEventCategoryType.State },\n 'stage:end:resolve': { category: VaultMonitorEventCategoryType.State },\n\n // ─────────────────────────────────────────────\n // ERROR\n // ─────────────────────────────────────────────\n 'lifecycle:notification:failure': { category: VaultMonitorEventCategoryType.Error },\n 'lifecycle:notification:runtime-error': { category: VaultMonitorEventCategoryType.Error },\n 'lifecycle:notification:warn': { category: VaultMonitorEventCategoryType.Error },\n 'lifecycle:notification:fatal': { category: VaultMonitorEventCategoryType.Error },\n\n // ─────────────────────────────────────────────\n // BOUNDARY\n // ─────────────────────────────────────────────\n\n 'conductor:start:abort': { category: VaultMonitorEventCategoryType.Boundary },\n 'conductor:start:deny': { category: VaultMonitorEventCategoryType.Boundary },\n 'conductor:start:revote': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:end:vote': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Conductor\n 'conductor:start:license-approved': { category: VaultMonitorEventCategoryType.Boundary },\n 'conductor:start:license-attempt': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Controller\n 'controller:end:attempt': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:notification:finalize': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:notification:success': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:restart:restart-controller-attempt': {\n category: VaultMonitorEventCategoryType.Boundary\n },\n 'controller:start:attempt': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:start:vote': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Lifecycle (end)\n 'lifecycle:end:initialized': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Lifecycle (start)\n 'lifecycle:start:core-callback-error': {\n category: VaultMonitorEventCategoryType.Boundary\n },\n 'lifecycle:start:core-error': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:core-state': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:global-error': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:initialized': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:merge': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:replace': { category: VaultMonitorEventCategoryType.Boundary },\n\n 'lifecycle:start:error-transform': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:end:error-transform': { category: VaultMonitorEventCategoryType.Boundary },\n\n 'lifecycle:end:core-callback-error': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:end:core-error': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:end:global-error': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Stage (end)\n 'stage:end:after-tap': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:before-tap': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:encrypt': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:filter': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:load-persist': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:operator': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:persist': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Stage (start)\n 'stage:start:after-tap': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:before-tap': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:compute-merge': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:encrypt': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:filter': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:load-persist': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:operator': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:persist': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:reducer': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:resolve': { category: VaultMonitorEventCategoryType.Boundary }\n};\n\nexport { EVENT_POLICY_CONSTANT as EVENT_POLICY };\n","import { InsightConfig } from '@sdux-vault/shared';\n\n/**\n * Holds the singleton VaultMonitorSharedState instance.\n */\nlet instance: VaultMonitorSharedStateInstance | null = null;\n\n/**\n * Returns the global VaultMonitorSharedState singleton instance.\n * This function ensures a single shared state instance is created and reused across the runtime.\n *\n * --RelatedStart--\n * VaultMonitorSharedStateInstance\n * --RelatedEnd--\n *\n * @returns The global VaultMonitorSharedState instance.\n */\nexport function VaultMonitorSharedState(): VaultMonitorSharedStateInstance {\n if (!instance) {\n instance = new VaultMonitorSharedStateInstance();\n }\n\n return instance;\n}\n\nexport class VaultMonitorSharedStateInstance {\n /**\n * Optional global insight definition that overrides per-cell insight\n * configuration for all monitor instances. When set, all monitors use\n * this definition when determining which event fields to emit.\n */\n globalInsightOverride: InsightConfig | null = null;\n\n /**\n * Registry of FeatureCell insight configurations keyed by cell ID.\n *\n * Each entry indicates whether insight is enabled and contains the\n * resolved list of {@link InsightConfig} values associated with\n * that FeatureCell.\n */\n cellRegistry = new Map<\n string,\n {\n hasInsight: boolean;\n insights: InsightConfig[];\n }\n >();\n}\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > monitor > vault-monitor.helper.ts\n// Updated: 2026-03-06 16:27\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport {\n defineBehaviorKey,\n DEVTOOLS_AGGREGATE_KEY_CONSTANT,\n DEVTOOLS_LOGGING_KEY_CONSTANT,\n EventShape,\n InsightConfig\n} from '@sdux-vault/shared';\nimport { VaultMonitorEventCategoryType } from '../types/monitor/vault-monitor-event-category.type';\nimport { FieldRuleTypes } from '../types/monitor/vault-monitor-field-rule.type';\nimport { CATEGORY_FIELD_POLICY_CONSTANT } from './event-policy/vault-monitor-category-field-policy.constant';\nimport { EVENT_POLICY } from './event-policy/vault-monitor-event-policy.constant';\nimport { VaultMonitorSharedState } from './vault-monitor-shared.state';\n\n/**\n * Abstract helper base class used by both `VaultMonitor` and\n * `VaultQueueMonitor`.\n *\n * This class centralizes access to shared monitor state and DevMode\n * utilities. All mutable state is delegated to `VaultMonitorSharedState`,\n * ensuring that every monitor instance operates on the same global registry\n * and global insight override.\n *\n * No pipeline behavior is implemented directly here; this class provides\n * shared accessors, helpers, and common metadata required by monitor\n * implementations.\n */\nexport abstract class VaultMonitorHelper {\n /**\n * Shared global monitor state. All cell registry information and\n * global insight overrides are pulled from this injected source.\n */\n protected readonly shared = VaultMonitorSharedState();\n\n /**\n * Behavior key used for DevTools/Telemetry classification in\n * Vault diagnostics. Identifies monitor-related behavior for\n * analytics, devtools, and inspector utilities.\n */\n public readonly key = defineBehaviorKey('DevTools', 'Telemetry');\n\n /**\n * Retrieves the globally-applied insight override, if any.\n *\n * @returns The active global `InsightDefinition`, or `null` if\n * no override is applied.\n */\n protected get globalInsightOverride(): InsightConfig | null {\n return this.shared.globalInsightOverride;\n }\n\n /**\n * Applies a global insight override. This value is shared across all\n * monitors, allowing system-wide inspection behavior injection.\n *\n * @param def - The insight metadata to set as the global override.\n */\n protected set globalInsightOverride(def: InsightConfig | null) {\n this.shared.globalInsightOverride = def;\n }\n\n /**\n * Provides access to the shared FeatureCell registry. This registry\n * tracks monitor metadata about every registered cell, including\n * whether it provides insights and the definitions associated with it.\n *\n * @returns The shared cell registry map.\n */\n protected get cellRegistry() {\n return this.shared.cellRegistry;\n }\n\n /**\n * Registers a FeatureCell into the shared monitor registry.\n * Each entry stores insight awareness and any provided definitions.\n *\n * @param cellKey - The unique FeatureCell identifier.\n * @param insight - Optional `InsightDefinition` describing cell-level\n * insight capabilities.\n */\n public registerCell(cellKey: string, insight?: InsightConfig): void {\n const hasInsight = !!insight;\n\n this.cellRegistry.set(cellKey, {\n hasInsight,\n insights: hasInsight ? [insight!] : []\n });\n }\n\n /**\n * Applies a global insight override shared across all monitors.\n * When set, this overrides cell-specific insight metadata for\n * system-wide inspection behavior.\n *\n * @param definition - The global insight definition to activate.\n */\n public activateGlobalInsights(definition: InsightConfig): void {\n this.globalInsightOverride = definition;\n }\n\n protected isChromeDevTools(cell: string): boolean {\n return cell === DEVTOOLS_LOGGING_KEY_CONSTANT || cell === DEVTOOLS_AGGREGATE_KEY_CONSTANT;\n }\n\n protected applyPolicy<T>(event: EventShape<T>, insight?: InsightConfig): EventShape<T> {\n const category = EVENT_POLICY[event.name]?.category ?? VaultMonitorEventCategoryType.Boundary;\n\n const policy = CATEGORY_FIELD_POLICY_CONSTANT[category];\n\n const allowState = !!insight?.wantsState;\n const allowPayload = !!insight?.wantsPayload;\n const allowErrors = !!insight?.wantsErrors;\n\n if (!event.source) {\n delete event.source;\n }\n\n // STATE\n if (!allowState || policy.state === FieldRuleTypes.Never) {\n delete event.state;\n }\n\n // PAYLOAD\n if (\n !allowPayload ||\n policy.payload === FieldRuleTypes.Never ||\n (policy.payload === FieldRuleTypes.Optional && event.payload === undefined)\n ) {\n delete event.payload;\n }\n\n // ERROR\n if (!allowErrors || policy.error === FieldRuleTypes.Never) {\n delete event.error;\n } else if (policy.error === FieldRuleTypes.Required) {\n // Optional payload allowed on Error category\n if (!allowPayload || event.payload === undefined) {\n delete event.payload;\n }\n }\n\n return event;\n }\n}\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > monitor > vault-monitor.service.ts\n// Updated: 2026-03-03 09:10\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport { EventBus } from '@sdux-vault/devtools';\nimport {\n BehaviorContext,\n ControllerContext,\n ControllerDecisionShape,\n DecisionOutcomeType,\n DevMode,\n EventBoundaryTypes,\n EventShape,\n EventTypes,\n StateSnapshotShape,\n VaultErrorShape,\n VaultMonitorContract,\n createVaultError,\n vaultError,\n vaultWarn\n} from '@sdux-vault/shared';\n\nimport { InsightConfig } from '@sdux-vault/shared';\nimport { VaultMonitorEventShape } from '../shapes/monitor/vault-monitor-event-input.shape';\nimport { VaultMonitorHelper } from './vault-monitor.helper';\n\n/**\n * Holds the singleton VaultMonitor instance.\n */\nlet instance: VaultMonitorContract | null = null;\n\n/**\n * Returns the global VaultMonitor singleton instance.\n * This function ensures a single monitor instance is created and reused across the runtime.\n *\n * --RelatedStart--\n * VaultMonitorContract\n * --RelatedEnd--\n *\n * @returns The global VaultMonitor instance.\n */\nexport function VaultMonitor(): VaultMonitorContract {\n if (!instance) {\n instance = new VaultMonitorInstance();\n }\n\n return instance;\n}\n\n/**\n * Implements the VaultMonitorContract using shared helper functionality.\n * This class provides the concrete singleton implementation backing the VaultMonitor entry point.\n *\n * --RelatedStart--\n * VaultMonitorContract\n * --RelatedEnd--\n */\nclass VaultMonitorInstance extends VaultMonitorHelper implements VaultMonitorContract {\n /**\n * Event bus used to emit structured pipeline events to DevTools.\n * This bus is consumed by the ngSDuX Chrome extension and internal\n * development utilities.\n */\n #eventBus = EventBus();\n\n /**\n * Creates a new VaultMonitor instance and exposes it globally for\n * DevTools integration. The monitor is attached to `window.sdux`\n * so that browser extensions can observe all emitted events.\n */\n constructor() {\n super();\n // This is for the chrome plugin\n window.sdux ??= {};\n window.sdux.vaultMonitorInstance = this;\n }\n\n /**\n * Maps a BehaviorContext into a StateSnapshot suitable for DevTools.\n * This ensures each pipeline event includes a normalized representation\n * of loading, value, error, and hasValue.\n *\n * @typeParam T - State value type.\n * @param ctx - Immutable behavior context provided by the orchestrator.\n * @returns A standardized StateSnapshot.\n */\n #toSnapshot<T>(ctx: Readonly<BehaviorContext<T> | ControllerContext<T>>): StateSnapshotShape<T> {\n // const src: any = ctx.incoming ?? ctx.state ?? {};\n const src: StateSnapshotShape<T> =\n (ctx as ControllerContext<T>)?.snapshot ?? (ctx as BehaviorContext<T>)?.state ?? {};\n\n return {\n isLoading: src.isLoading ?? false,\n value: src.value ?? undefined,\n error: src.error ?? null,\n hasValue: src.hasValue ?? !!src.value\n };\n }\n\n /** Emits a startAfterTap event. */\n startAfterTap<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'after-tap';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endAfterTap event with optional payload. */\n endAfterTap<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'after-tap';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startBeforeTap event. */\n startBeforeTap<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'before-tap';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endBeforeTap event with optional payload. */\n endBeforeTap<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'before-tap';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startClearPersist event. */\n startClearPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'clear-persist';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endClearPersist event. */\n endClearPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'clear-persist';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startComputeMerge event. */\n startComputeMerge<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'compute-merge';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endComputeMerge event. */\n endComputeMerge<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'compute-merge';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a notifyConductorDeny event. */\n notifyConductorDeny<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'deny';\n this.#emitEventV2ConductorNotification({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a conductorCrashed event. */\n conductorCrashed<T>(cell: string, behaviorKey: string, ctx: Readonly<ControllerContext<T>>, error: unknown) {\n const errorMessage = createVaultError(error, cell);\n const name = 'fatal';\n vaultError(cell, behaviorKey, errorMessage);\n\n this.#emitEventV2LifecycleNotification({\n cell,\n behaviorKey,\n name,\n ctx,\n payload: {\n message:\n 'This has proven to be untested code in unit tests. So you win some type of prize. Please create a github issues and share your amazing gift to bring down a systm.'\n },\n error: errorMessage\n });\n }\n\n /** Emits a conductorRevote event. */\n conductorRevote<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T> | ControllerContext<T>>) {\n const name = 'revote';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a conductorAbort event. */\n conductorAbort<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T> | ControllerContext<T>>) {\n const name = 'abort';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a conductorAttempt event. */\n conductorLicenseAttempt<T>(cell: string, featureCellKey: string) {\n const name = 'license-attempt';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey: featureCellKey, name, ctx: {} as BehaviorContext<T> });\n }\n\n /** Emits a conductorApproved event. */\n conductorLicenseApproved<T>(cell: string, featureCellKey: string) {\n const name = 'license-approved';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey: featureCellKey, name, ctx: {} as BehaviorContext<T> });\n }\n\n /** Emits a conductorDenied event. */\n conductorLicenseDenied<T>(cell: string, featureCellKey: string) {\n const name = 'license-denied';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey: featureCellKey, name, ctx: {} as BehaviorContext<T> });\n }\n\n /** Emits a startControllerAttempt event. */\n startControllerAttempt<T>(cell: string, behaviorKey: string, ctx: Readonly<ControllerContext<T>>) {\n const name = 'attempt';\n this.#emitEventV2ControllerStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a endControllerAttempt event. */\n endControllerAttempt<T>(\n cell: string,\n behaviorKey: string,\n ctx: Readonly<BehaviorContext<T> | ControllerContext<T>>,\n payload: unknown\n ) {\n const name = 'attempt';\n this.#emitEventV2ControllerEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a restartControllerAttempt event. */\n restartControllerAttempt<T>(\n cell: string,\n behaviorKey: string,\n ctx: Readonly<BehaviorContext<T>>,\n payload: DecisionOutcomeType\n ) {\n const name = 'restart-attempt';\n this.#emitEventV2ControllerNotification({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a controllerFailure event. */\n\n controllerFailure<T>(behaviorKey: string, ctx: Readonly<ControllerContext<T>>, error: unknown) {\n const errorMessage = createVaultError(error, behaviorKey);\n const name = 'failure';\n this.#emitEventV2LifecycleNotification({ cell: ctx.featureCellKey, behaviorKey, name, ctx, error: errorMessage });\n }\n\n /** Emits a controllerFinalize event. */\n controllerFinalize<T>(behaviorKey: string, ctx: Readonly<ControllerContext<T> | BehaviorContext<T>>) {\n const name = 'finalize';\n this.#emitEventV2LifecycleNotification({ cell: ctx.featureCellKey, behaviorKey, name, ctx });\n }\n\n /** Emits a controllerSuccess event. */\n controllerSuccess<T>(behaviorKey: string, ctx: Readonly<ControllerContext<T>>) {\n const name = 'success';\n this.#emitEventV2LifecycleNotification({ cell: ctx.featureCellKey, behaviorKey, name, ctx });\n }\n\n /** Emits a startControllerVote event. */\n startControllerVote<T>(cell: string, behaviorKey: string, ctx: Readonly<ControllerContext<T>>) {\n const name = 'vote';\n this.#emitEventV2ControllerStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a endControllerVote event. */\n endControllerVote<T>(\n cell: string,\n behaviorKey: string,\n ctx: Readonly<ControllerContext<T>>,\n payload: ControllerDecisionShape\n ) {\n const name = 'vote';\n this.#emitEventV2ControllerEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startCallbackError event. */\n startCoreCallbackError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-callback-error';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endCoreCallbackError event. */\n endCoreCallbackError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-callback-error';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startStatEmit event. */\n startCoreEmitState<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-emit-state';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endCoreEmitState event. */\n endCoreEmitState<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-emit-state';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startError event. */\n startCoreError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-error';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endCoreError event. */\n endCoreError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-error';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startState event. */\n startCoreState<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-state';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endCoreState event. */\n endCoreState<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-state';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startDecrypt event. */\n startDecrypt<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'decrypt';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endDecrypt event with optional payload. */\n endDecrypt<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'decrypt';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startDestroy event. */\n startDestroy<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'destroy';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endDestroy event. */\n endDestroy<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown): void {\n const name = 'destroy';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startEncrypt event. */\n startEncrypt<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'encrypt';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endEncrypt event. */\n endEncrypt<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'encrypt';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /**\n * Emits an error event. Errors are logged and sent to DevTools\n * depending on configured insight preferences.\n *\n * @param error - Raw error thrown by pipeline stage.\n */\n runtimeError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, error: unknown): void {\n const errorMessage = createVaultError(error, cell);\n vaultError(cell, behaviorKey, errorMessage);\n const name = 'runtime-error';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey, name, ctx, error: errorMessage });\n }\n\n /** Emits a startError event. */\n startErrorTransform<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'error-transform';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endError event. */\n endErrorTransform<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload: VaultErrorShape) {\n const name = 'error-transform';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startFilter event. */\n startFilter<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'filter';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endFilter event. */\n endFilter<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'filter';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startGlobalError event. */\n startGlobalError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'global-error';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endGlobalError event. */\n endGlobalError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'global-error';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a ingressSubscribed event. */\n ingressSubscribed<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, source: string): void {\n const name = 'ingress-subscribed';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx, source });\n }\n\n /** Emits an ingressCompleted event. */\n ingressCompleted<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, source: string): void {\n const name = 'ingress-completed';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, source });\n }\n\n /** Emits a startInitialized event. */\n startInitialized<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'initialized';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endInitialized event. */\n endInitialized<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'initialized';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startInterceptor event. */\n startInterceptor<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'interceptor';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endInterceptor event with optional payload. */\n endInterceptor<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'interceptor';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startLoadPersist event. */\n startLoadPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'load-persist';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endLoadPersist event with optional payload. */\n endLoadPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'load-persist';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startMerge event for DevTools inspection. */\n startMerge<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'merge';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endMerge event with an optional payload. */\n endMerge<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown): void {\n const name = 'merge';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startOperator event. */\n startOperator<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n this.#emitEventV2StageStart({\n cell,\n behaviorKey,\n name: 'operator',\n ctx\n });\n }\n\n /** Emits an endOperator event with optional payload. */\n endOperator<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n this.#emitEventV2StageEnd({\n cell,\n behaviorKey,\n name: 'operator',\n ctx,\n payload\n });\n }\n\n /** Emits a startPersist event. */\n startPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'persist';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endPersist event. */\n endPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'persist';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startReducer event. */\n startReducer<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n this.#emitEventV2StageStart({\n cell,\n behaviorKey,\n name: 'reducer',\n ctx\n });\n }\n\n /** Emits an endReducer event. */\n endReducer<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n this.#emitEventV2StageEnd({\n cell,\n behaviorKey,\n name: 'reducer',\n ctx\n });\n }\n\n /** Emits a startReplace event for DevTools inspection. */\n startReplace<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'replace';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endReplace event with an optional payload. */\n endReplace<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown): void {\n const name = 'replace';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startReset event. */\n startReset<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'reset';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endReset event. */\n endReset<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown): void {\n const name = 'reset';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startResolve event. */\n startResolve<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'resolve';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endResolve event. */\n endResolve<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'resolve';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startSetInitialValue event. */\n startSetInitialValue<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'set-initial-value';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endSetInitialValue event. */\n endSetInitialValue<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'set-initial-value';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startStepwise event. */\n startStepwise<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'stepwise';\n this.#emitEventV2StageStart({\n cell,\n behaviorKey,\n name,\n ctx\n });\n }\n\n /** Emits an endStepwise event. */\n endStepwise<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'stepwise';\n this.#emitEventV2StageEnd({\n cell,\n behaviorKey,\n name,\n ctx\n });\n }\n\n /**\n * Emits a warning event to DevTools and console output.\n *\n * @param message - Warning description.\n */\n warn<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, message: string): void {\n const errorMessage = createVaultError(message, cell);\n vaultWarn(cell, behaviorKey, errorMessage);\n const name = 'warn';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey, name, ctx, error: errorMessage });\n }\n\n #buildEventName<T>(eventInput: VaultMonitorEventShape<T>): VaultMonitorEventShape<T> {\n eventInput.name = `${eventInput.type}:${eventInput.boundary}:${eventInput.name}`;\n return eventInput;\n }\n\n #emitEventV2StageStart<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Stage;\n eventInput.boundary = EventBoundaryTypes.Start;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n #emitEventV2StageEnd<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Stage;\n eventInput.boundary = EventBoundaryTypes.End;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n #emitEventV2LifecycleStart<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Lifecycle;\n eventInput.boundary = EventBoundaryTypes.Start;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n #emitEventV2LifecycleEnd<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Lifecycle;\n eventInput.boundary = EventBoundaryTypes.End;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n #emitEventV2LifecycleNotification<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Lifecycle;\n eventInput.boundary = EventBoundaryTypes.Notification;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n #emitEventV2ConductorNotification<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Conductor;\n eventInput.boundary = EventBoundaryTypes.Notification;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n #emitEventV2ControllerStart<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Controller;\n eventInput.boundary = EventBoundaryTypes.Start;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n #emitEventV2ControllerEnd<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Controller;\n eventInput.boundary = EventBoundaryTypes.End;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n #emitEventV2ControllerNotification<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Controller;\n eventInput.boundary = EventBoundaryTypes.Notification;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /**\n * Emits a normalized monitoring event using a structured event input object.\n *\n * @param eventInput Aggregated monitoring event input containing context, payload, and metadata.\n */\n #emitEventV2<T>(eventInput: VaultMonitorEventShape<T>): void {\n const { cell, ctx, name, behaviorKey, source, error, payload, type, boundary } = eventInput;\n if (this.isChromeDevTools(cell) || !DevMode.active) return;\n\n let insight: InsightConfig;\n\n if (this.globalInsightOverride) {\n insight = this.globalInsightOverride;\n } else {\n const config = this.cellRegistry.get(cell);\n if (!config || !config.hasInsight) return;\n insight = config.insights[0];\n }\n\n const event: EventShape = {\n id: crypto.randomUUID(),\n cell,\n behaviorKey,\n name,\n timestamp: Date.now(),\n state: this.#toSnapshot(ctx as Readonly<BehaviorContext<T>>),\n type:\n type ??\n /* istanbul ignore next -- defensive invariant */\n EventTypes.Unknown,\n boundary:\n boundary ??\n /* istanbul ignore next -- defensive invariant */\n EventBoundaryTypes.Unknown,\n payload,\n error,\n source\n };\n\n if (ctx.traceId) {\n event.traceId = ctx.traceId;\n }\n\n this.#eventBus.nextPipeline(this.applyPolicy(event, insight));\n }\n}\n\n// If you’d like, I can also show you one tiny addition to your EventBus that would make Chrome extensions and external DevTools integration dramatically easier (like 4 lines of code). It would fit perfectly with the architecture you already wrote.\n","/**\n * Defines the set of supported controller event type identifiers.\n * This constant provides the canonical string values used to classify controller event outcomes.\n */\nexport const ControllerEventTypes = {\n /**\n * Indicates that the controller requested an abort to terminate now.\n */\n Abort: 'abort',\n\n /**\n * Indicates that the controller execution resulted in a failure.\n */\n Failure: 'failure',\n\n /**\n * Indicates that the license controller approved the FeatureCell for operation.\n */\n LicenseApproved: 'licenseApproved',\n\n /**\n * Indicates that the license controller denied the FeatureCell for operation.\n */\n LicenseDenied: 'licenseDenied',\n\n /**\n * Indicates that the controller requested a revote.\n */\n Revote: 'revote',\n\n /**\n * Indicates that the controller execution completed successfully.\n */\n Success: 'success'\n} as const;\n\n/**\n * Represents the union of all valid controller event type values.\n * This type constrains controller events to the supported identifiers defined by the event type registry.\n *\n * --RelatedStart--\n * ControllerEventTypes\n * --RelatedEnd--\n */\nexport type ControllerEventType = (typeof ControllerEventTypes)[keyof typeof ControllerEventTypes];\n","import { Subject } from 'rxjs';\n\nimport type {\n ControllerAttemptMessageShape,\n ControllerContract,\n ControllerFailMessageShape,\n ControllerFinalizeMessageShape,\n ControllerSuccessMessageShape,\n VaultErrorShape\n} from '@sdux-vault/shared';\nimport { BehaviorContext, ControllerContext, ControllerMessageTypes } from '@sdux-vault/shared';\nimport { Arbitrator } from '../arbitrator/arbitrator';\nimport { VaultMonitor } from '../monitor/vault-monitor.service';\nimport { ControllerEventShape } from '../shapes/controller/controller-event.shape';\nimport { ControllerEventTypes } from '../types/controller-event.type';\n\n/**\n * Coordinates controller arbitration and lifecycle notifications.\n *\n * This class mediates between pipeline execution and registered controllers\n * by delegating vote aggregation to the Arbitrator and emitting controller\n * lifecycle events for monitoring and diagnostics.\n */\nexport class DecisionEngine<T> {\n readonly #arbitrator = new Arbitrator<T>();\n readonly #vaultMonitor = VaultMonitor();\n\n /**\n * Creates a new decision engine instance.\n *\n * @param controllers - The controllers participating in pipeline decisions.\n * @param events$ - Subject used to emit controller lifecycle events.\n */\n constructor(\n private readonly controllers: ControllerContract<T>[],\n private readonly events$: Subject<ControllerEventShape>\n ) {}\n\n /**\n * Evaluates whether a pipeline execution attempt is permitted.\n *\n * @param ctx - The controller context for the current pipeline attempt.\n * @returns An observable emitting the aggregated controller decision.\n */\n evaluateAttempt(ctx: ControllerContext<T>) {\n const msg: ControllerAttemptMessageShape<T> = {\n type: ControllerMessageTypes.Attempt,\n traceId: ctx.traceId!,\n ctx\n };\n\n return this.#arbitrator.evaluateAttempt(this.controllers, msg);\n }\n\n /**\n * Notifies controllers that a pipeline execution completed successfully.\n *\n * @param ctx - The controller context associated with the successful run.\n */\n notifySuccess(ctx: ControllerContext<T>): void {\n if (!this.controllers.length) return;\n\n const msg: ControllerSuccessMessageShape<T> = {\n type: ControllerMessageTypes.Success,\n traceId: ctx.traceId!,\n ctx\n };\n\n this.#vaultMonitor.controllerSuccess('decision-engine', ctx);\n\n this.#arbitrator.notify(this.controllers, msg).subscribe({\n complete: () => {\n if (!this.events$.closed) {\n this.events$.next({\n traceId: ctx.traceId,\n type: ControllerEventTypes.Success\n });\n }\n }\n });\n }\n\n /**\n * Notifies controllers that a pipeline execution failed.\n *\n * @param ctx - The controller context associated with the failure.\n * @param error - The error that caused the pipeline to fail.\n */\n notifyFailure(ctx: ControllerContext<T>, error: VaultErrorShape | unknown): void {\n if (!this.controllers.length) return;\n\n const msg: ControllerFailMessageShape<T> = {\n type: ControllerMessageTypes.Failure,\n traceId: ctx.traceId!,\n ctx,\n error\n };\n\n this.#vaultMonitor.controllerFailure('decision-engine', ctx, error);\n\n this.#arbitrator.notify(this.controllers, msg).subscribe({\n complete: () => {\n if (!this.events$.closed) {\n this.events$.next({\n traceId: ctx.traceId,\n type: ControllerEventTypes.Failure\n });\n }\n }\n });\n }\n\n /**\n * Notifies controllers that a pipeline trace has finalized.\n *\n * @param ctx - The context associated with the finalized pipeline trace.\n */\n notifyFinalize(ctx: ControllerContext<T> | BehaviorContext<T>): void {\n if (!this.controllers.length) return;\n\n const msg: ControllerFinalizeMessageShape = {\n type: ControllerMessageTypes.Finalize,\n traceId: ctx.traceId\n };\n\n this.#vaultMonitor.controllerFinalize('decision-engine', ctx);\n\n this.#arbitrator.notify(this.controllers, msg).subscribe();\n }\n}\n","/**\n * Canonical identifier used to label the Orchestrator execution context.\n */\nexport const VAULT_ORCHESTRATOR = 'vault-orchestrator';\n","/**\n * Set of reserved FeatureCell API keys that behaviors are not allowed to\n * override through `extendCellAPI()`.\n *\n * These keys represent core lifecycle operations, pipeline configuration\n * methods, state mutation entry points, source adapters, tap-stage hooks,\n * identity properties, and other protected extensions used by the\n * FeatureCell runtime. Any attempt by a behavior to redefine one of these\n * keys will result in a runtime error to preserve API integrity.\n *\n * This list ensures that behaviors cannot replace, shadow, or mutate\n * critical functionality required for correct operation of the vault,\n * pipeline builder, state transitions, or devtools visibility.\n */\nexport const PROTECTED_FEATURE_CELL_KEYS = new Set<string>([\n // Core lifecycle\n 'initialize',\n 'destroy',\n 'destroyed$',\n 'reset',\n 'reset$',\n\n // Pipeline configurators\n 'reducers',\n 'operators',\n 'filters',\n 'interceptors',\n\n // State mutation\n 'mergeState',\n 'replaceState',\n\n // Tap stages\n 'beforeTaps',\n 'afterTaps',\n\n // Identity\n 'key',\n\n // State container\n 'state',\n\n // Other keys\n 'cache',\n 'persist',\n 'encrypt',\n 'beforeTap',\n 'afterTap',\n 'hydrate'\n]);\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > types > vault-registration-license-status.type.ts\n// Updated: 2026-03-03 10:09\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nexport const VaultRegistrationLicenseStatusTypes = {\n NotRequired: 'not-required',\n Pending: 'pending',\n Revoked: 'revoked',\n Timeout: 'timeout',\n Valid: 'valid'\n} as const;\n\nexport type VaultRegistrationLicenseStatusType =\n (typeof VaultRegistrationLicenseStatusTypes)[keyof typeof VaultRegistrationLicenseStatusTypes];\n","/**\n * Set of all known behavior and controller keys shipped with the core,\n * addon, and engine packages. Keys in this set are always permitted\n * during behavior and controller initialization regardless of license\n * status.\n *\n * Any key not present in this set is treated as a custom extension and\n * requires a valid Vault license to be registered.\n *\n * Entries follow the canonical key format produced by\n * `defineBehaviorKey()` and `defineControllerKey()`:\n *\n * `SDUX::Behavior::<Domain>::<Name>`\n * `SDUX::Controller::<Domain>::<Name>`\n */\nexport const KNOWN_VAULT_KEYS = new Set<string>([\n // ---------------------------------------------------------------------------\n // Core Behaviors (libs/core)\n // ---------------------------------------------------------------------------\n 'SDUX::Behavior::Core::AfterTap',\n 'SDUX::Behavior::Core::ArrayMerge',\n 'SDUX::Behavior::Core::BeforeTap',\n 'SDUX::Behavior::Core::EmitState',\n 'SDUX::Behavior::Core::Error',\n 'SDUX::Behavior::Core::ErrorCallback',\n 'SDUX::Behavior::Core::Filter',\n 'SDUX::Behavior::Core::FromObservable',\n 'SDUX::Behavior::Core::FromPromise',\n 'SDUX::Behavior::Core::FromStream',\n 'SDUX::Behavior::Core::ObjectMerge',\n 'SDUX::Behavior::Core::Observable',\n 'SDUX::Behavior::Core::Promise',\n 'SDUX::Behavior::Core::Reducer',\n 'SDUX::Behavior::Core::State',\n 'SDUX::Behavior::Core::TabSyncState',\n 'SDUX::Behavior::Core::Value',\n\n // ---------------------------------------------------------------------------\n // Addon Behaviors (libs/addons)\n // ---------------------------------------------------------------------------\n 'SDUX::Behavior::Addon::DistinctUntilChanged',\n 'SDUX::Behavior::Cache::State',\n 'SDUX::Behavior::Core::Lookup',\n 'SDUX::Behavior::Core::Query',\n 'SDUX::Behavior::Encrypt::Aes256',\n 'SDUX::Behavior::Interceptor::GlobalErrorPause',\n 'SDUX::Behavior::Merge::ArrayAppend',\n 'SDUX::Behavior::Merge::ArrayPush',\n 'SDUX::Behavior::Merge::Deep',\n 'SDUX::Behavior::Persist::CookieStorage',\n 'SDUX::Behavior::Persist::LocalStorage',\n 'SDUX::Behavior::Persist::SessionStorage',\n 'SDUX::Behavior::Policy::StepwiseFilter',\n 'SDUX::Behavior::Policy::StepwiseReducer',\n 'SDUX::Behavior::Policy::StepwiseResolve',\n\n // ---------------------------------------------------------------------------\n // Engine Behaviors (vault-engine)\n // ---------------------------------------------------------------------------\n 'SDUX::Behavior::Core::License',\n\n // ---------------------------------------------------------------------------\n // Engine Controllers (vault-engine)\n // ---------------------------------------------------------------------------\n 'SDUX::Controller::Policy::CoreAbstain',\n 'SDUX::Controller::Policy::CoreError',\n 'SDUX::Controller::Policy::CoreLicense',\n\n // ---------------------------------------------------------------------------\n // Addon Controllers (libs/addons)\n // ---------------------------------------------------------------------------\n 'SDUX::Controller::Policy::Delay',\n 'SDUX::Controller::Policy::MaxFailures',\n 'SDUX::Controller::Policy::ReplayGlobalError',\n 'SDUX::Controller::Policy::Stepwise',\n 'SDUX::Controller::Policy::Throttle'\n]);\n","/**\n * Canonical license identifier for the SDuX Vault engine license.\n *\n * This value must match the `licenseId` field in the `VaultLicensingShape`\n * payload supplied via `provideVault({ licenses: [...] })`.\n */\nexport const VAULT_LICENSE_ID = 'sdux-vault';\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > factories > vault > vault-core.function.ts\n// Updated: 2026-03-02 19:52\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport {\n DevMode,\n isTestEnv,\n setVaultLogLevel,\n VaultConfig,\n VaultLicensingShape,\n VaultRegistrationEntityShape,\n VaultRegistrationShape,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { InitializeLicensingService, resetLicensingServiceForTests } from '../../licensing/licensing.service';\nimport { RegisteredFeatureCellShape } from '../../shapes/feature-cell/registered-feature-cell.shape';\nimport { LicensingBehaviorEventShape } from '../../shapes/licensing/licensing-behavior-event.shape';\nimport { LicensingControllerEvent } from '../../shapes/licensing/licensing-controller-event.shape';\nimport { LicensingEventShape } from '../../shapes/licensing/licensing-event.shape';\nimport { LicensingFeatureDescriptionEventShape } from '../../shapes/licensing/licensing-feature-description-event.shape';\nimport { LicensingValidationShape } from '../../shapes/licensing/licensing-validation.shape';\nimport { VaultShape } from '../../shapes/vault/vault.shape';\nimport { LicenseEventTypes } from '../../types/license-event.type';\nimport { VaultRegistrationLicenseStatusTypes } from '../../types/vault/vault-registration-license-status.type';\n\nimport { initDevtoolsWidget } from '@sdux-vault/devtools';\nimport { KNOWN_VAULT_KEYS } from '../../constants/known-vault-keys.constant';\nimport { VAULT_LICENSE_ID } from '../../constants/vault-license-id.constant';\n\nconst CORE_LICENSE_BEHAVIOR_KEY = 'SDUX::Behavior::Core::License';\n\nlet instance: VaultCoreInstance | null = null;\n\nexport function VaultCore(config: VaultConfig = {}): void {\n if (!instance) {\n instance = new VaultCoreInstance(config);\n }\n}\n\nclass VaultCoreInstance {\n #licensingSub?: Subscription;\n #validaionSub?: Subscription;\n #licenseMap = new Map<string, unknown>();\n #terminalStatus = new Map<string, boolean>();\n\n #aiAssistEnabled = false;\n #bypassLicensing = false;\n #licenseTimeoutMs?: number;\n // eslint-disable-next-line\n #licenseTimers = new Map<string, any>();\n\n #licensingBus$ = new Subject<LicensingEventShape<unknown>>();\n #validationBus$ = new ReplaySubject<LicensingValidationShape>();\n\n #lastStatus = new Map<string, boolean>();\n\n #vaultConfig!: Readonly<VaultShape> | undefined;\n\n #registry: Map<string, VaultRegistrationShape> = new Map();\n\n constructor(config: VaultConfig) {\n InitializeLicensingService(this.#licensingBus$, this.#validationBus$.asObservable());\n this.setVaultConfig(config);\n this.#initializeLicenses(config.licenses);\n this.#subscribeToLicensingEvents();\n this.#injectDebugWidget();\n }\n\n //#region Public methods\n\n /**\n * Applies and freezes the global Vault configuration.\n *\n * This function is invoked by `provideVault()` and must never be\n * called manually in userland code.\n *\n * The configuration is:\n * - Normalized and frozen\n * - Prevented from being set multiple times (except in test environments)\n * - Used to validate license tokens asynchronously\n *\n * @param config - Raw user-supplied Vault configuration.\n * @throws If configuration is set more than once in non-test environments.\n */\n setVaultConfig(config: VaultConfig): void {\n const vaultConfig = {\n devMode: config.devMode ?? false,\n logLevel: config.logLevel ?? 'off'\n } as VaultShape;\n\n this.#vaultConfig = Object.freeze(vaultConfig);\n\n DevMode.setDevMode(this.#vaultConfig.devMode);\n setVaultLogLevel(this.#vaultConfig.logLevel!);\n\n this.#bypassLicensing = config.devMode ? (config.bypassLicensing ?? false) : false;\n\n this.#licenseTimeoutMs = config.licenseTimeoutMs ?? 15_000;\n\n this.#warnIfAccidentalDevMode();\n }\n\n resetForTesting(): void {\n this.#licensingSub?.unsubscribe();\n this.#licensingSub = undefined;\n\n this.#validaionSub?.unsubscribe();\n this.#validaionSub = undefined;\n\n this.#vaultConfig = undefined;\n this.resetFeatureCellRegistry();\n\n this.#lastStatus.clear();\n this.#licenseMap.clear();\n }\n\n resetFeatureCellRegistry(): void {\n this.#registry.clear();\n }\n\n registerCellRuntime(key: string): void {\n this.#ensureRecord(key);\n }\n\n registerBehaviors(key: string, behaviors: VaultRegistrationEntityShape[]): void {\n const record = this.#ensureRecord(key);\n record.behaviors = this.#registerEntities(behaviors);\n record.behaviorsRegistered = true;\n }\n\n registerControllers(key: string, controllers: VaultRegistrationEntityShape[]): void {\n const record = this.#ensureRecord(key);\n record.controllers = this.#registerEntities(controllers);\n record.controllersRegistered = true;\n }\n\n registerFluentApis(\n key: string,\n summary: {\n filters: number;\n reducers: number;\n beforeTaps: number;\n afterTaps: number;\n emitStateCallbacks: number;\n errorCallbacks: number;\n }\n ): void {\n const record = this.#ensureRecord(key);\n record.fluentApis = Object.freeze(summary);\n }\n\n getLicensePayload(licenseId: string): unknown | undefined {\n return this.#licenseMap.get(licenseId);\n }\n\n isBypassLicensing(): boolean {\n return this.#bypassLicensing;\n }\n\n isAuthorizedKey(key: string): boolean {\n return KNOWN_VAULT_KEYS.has(key);\n }\n\n hasVaultLicense(): boolean {\n return this.#licenseMap.has(VAULT_LICENSE_ID);\n }\n\n //#endregion\n\n //#region private Methods\n\n #initializeLicenses(licenses?: VaultLicensingShape[]): void {\n if (!licenses?.length) return;\n\n for (const license of licenses) {\n if (!license?.licenseId) continue;\n this.#licenseMap.set(license.licenseId, license.payload);\n }\n }\n\n #registerEntities(entities: VaultRegistrationEntityShape[]): Map<string, Readonly<VaultRegistrationEntityShape>> {\n return new Map(\n entities.map((entity: VaultRegistrationEntityShape) => {\n let needsLicense: boolean;\n if (this.#bypassLicensing) {\n needsLicense = false;\n } else {\n needsLicense = entity.needsLicense ?? false;\n }\n\n const frozen: VaultRegistrationEntityShape = {\n key: entity.key,\n type: entity.type,\n critical: !!entity.critical,\n needsLicense,\n validLicense: needsLicense\n ? VaultRegistrationLicenseStatusTypes.Pending\n : VaultRegistrationLicenseStatusTypes.NotRequired\n };\n\n return [entity.key, Object.freeze(frozen)];\n })\n );\n }\n\n #subscribeToLicensingEvents(): void {\n this.#licensingSub = this.#licensingBus$.subscribe((event: LicensingEventShape<unknown>) => {\n switch (event.type) {\n case LicenseEventTypes.DescribeFeature: {\n const featureEvent = event as LicensingFeatureDescriptionEventShape<unknown>;\n this.registerFluentApis(featureEvent.featureCellKey, this.#summarizeFluent(featureEvent));\n break;\n }\n\n case LicenseEventTypes.DescribeBehaviors: {\n const behaviorEvent = event as LicensingBehaviorEventShape;\n this.registerBehaviors(behaviorEvent.featureCellKey, behaviorEvent.behaviors);\n this.#emitLicenseStatus(behaviorEvent.featureCellKey);\n break;\n }\n\n case LicenseEventTypes.DescribeControllers: {\n const controllerEvent = event as LicensingControllerEvent;\n this.registerControllers(controllerEvent.featureCellKey, controllerEvent.controllers);\n this.#emitLicenseStatus(controllerEvent.featureCellKey);\n break;\n }\n\n case LicenseEventTypes.RequireLicense: {\n this.#startLicenseTimeout(event.featureCellKey);\n this.#recordLicenses(event);\n return;\n }\n\n case LicenseEventTypes.ValidateLicense: {\n this.#handleLicenseValidation(event);\n this.#emitLicenseStatus(event.featureCellKey);\n return;\n }\n }\n });\n }\n\n #startLicenseTimeout(featureCellKey: string): void {\n if (!this.#licenseTimeoutMs) return;\n\n if (this.#licenseTimers.has(featureCellKey)) return; // already running\n\n const timer = setTimeout(() => {\n this.#expirePendingLicenses(featureCellKey);\n this.#licenseTimers.delete(featureCellKey);\n }, this.#licenseTimeoutMs);\n\n this.#licenseTimers.set(featureCellKey, timer);\n }\n\n #expirePendingLicenses(featureCellKey: string): void {\n const record = this.#registry.get(featureCellKey);\n if (!record) return;\n\n // istanbul ignore next -- defensive only not testable\n const allEntities = [...(record.behaviors?.values() ?? []), ...(record.controllers?.values() ?? [])];\n\n let changed = false;\n\n for (const entity of allEntities) {\n if (entity.needsLicense && entity.validLicense === VaultRegistrationLicenseStatusTypes.Pending) {\n const map = record.behaviors?.has(entity.key) ? record.behaviors : record.controllers;\n\n map?.set(\n entity.key,\n Object.freeze({\n ...entity,\n validLicense: VaultRegistrationLicenseStatusTypes.Timeout\n })\n );\n\n changed = true;\n }\n }\n\n if (changed) {\n this.#publishStatus(featureCellKey, false);\n }\n\n this.#clearLicenseTimer(featureCellKey);\n }\n\n // Do not evaluate until both sides registered\n #emitLicenseStatus(featureCellKey: string): void {\n const record = this.#registry.get(featureCellKey);\n if (!record) return;\n\n if (!record.behaviorsRegistered || !record.controllersRegistered) return;\n\n // istanbul ignore next -- defensive only not testable\n const allEntities = [...(record.behaviors?.values() ?? []), ...(record.controllers?.values() ?? [])];\n\n // Only entities that require a license matter\n const entities = allEntities.filter((e) => e.needsLicense);\n\n // Nothing requires a license → immediately approved\n if (entities.length === 0) {\n this.#publishStatus(featureCellKey, true);\n return;\n }\n\n // Any revoked → deny immediately\n if (\n entities.some(\n (e) =>\n e.validLicense === VaultRegistrationLicenseStatusTypes.Revoked ||\n e.validLicense === VaultRegistrationLicenseStatusTypes.Timeout\n )\n ) {\n this.#clearLicenseTimer(featureCellKey);\n this.#publishStatus(featureCellKey, false);\n return;\n }\n\n // Any pending → do nothing (still waiting)\n if (entities.some((e) => e.validLicense === VaultRegistrationLicenseStatusTypes.Pending)) {\n return;\n }\n\n // All valid\n this.#publishStatus(featureCellKey, true);\n }\n\n #clearLicenseTimer(featureCellKey: string): void {\n const timer = this.#licenseTimers.get(featureCellKey);\n if (timer) {\n clearTimeout(timer);\n this.#licenseTimers.delete(featureCellKey);\n }\n }\n\n #publishStatus(featureCellKey: string, approved: boolean): void {\n if (this.#terminalStatus.has(featureCellKey)) return;\n\n this.#terminalStatus.set(featureCellKey, approved);\n\n this.#clearLicenseTimer(featureCellKey);\n\n this.#lastStatus.set(featureCellKey, approved);\n\n this.#validationBus$.next({\n featureCellKey,\n approved\n });\n }\n\n #handleLicenseValidation(event: LicensingEventShape<unknown>): void {\n const { featureCellKey, key, licenseToken, valid } = event;\n\n if (this.#terminalStatus.has(event.featureCellKey)) return;\n\n if (!key) {\n vaultWarn('Cannot validate license without a key.');\n return;\n }\n\n const record = this.#registry.get(featureCellKey);\n if (!record) return;\n\n this.#applyLicenseValidation(record.behaviors, key, licenseToken, valid);\n this.#applyLicenseValidation(record.controllers, key, licenseToken, valid);\n\n if (valid && key === CORE_LICENSE_BEHAVIOR_KEY) {\n this.#enableAiAssist();\n }\n }\n\n #applyLicenseValidation(\n entities: Map<string, VaultRegistrationEntityShape> | undefined,\n key: string,\n licenseId: string | undefined,\n valid: boolean | undefined\n ): void {\n if (!entities?.has(key)) return;\n\n const entity = entities.get(key)!;\n\n // Must require license\n if (!entity.needsLicense) return;\n\n // Must have previously issued key\n if (!entity.licenseId) return;\n\n // Must match exactly\n if (entity.licenseId !== licenseId) {\n // if (DevMode.active) {\n vaultWarn(`[vault] License key mismatch for \"${key}\".`);\n //}\n return;\n }\n\n entities.set(\n key,\n Object.freeze({\n ...entity,\n validLicense: valid ? VaultRegistrationLicenseStatusTypes.Valid : VaultRegistrationLicenseStatusTypes.Revoked\n })\n );\n }\n\n #recordLicenses(event: LicensingEventShape<unknown>): void {\n const { featureCellKey, key, licenseToken } = event;\n\n const record = this.#registry.get(featureCellKey);\n if (!record) return;\n\n // istanbul ignore next -- defensive only not testable\n if (!key || typeof key !== 'string') {\n throw new Error('[vault] Cannot register controller license without a key.');\n }\n\n this.#recordLicense(record.behaviors, key, licenseToken);\n this.#recordLicense(record.controllers, key, licenseToken);\n }\n\n #recordLicense(\n entities: Map<string, VaultRegistrationEntityShape> | undefined,\n key: string,\n licenseId: string | undefined\n ): void {\n if (!entities?.has(key)) return;\n\n const entity = entities.get(key)!;\n\n // Must require license\n if (!entity.needsLicense) return;\n\n // First write wins — do not overwrite\n if (entity.licenseId) return;\n\n if (!licenseId) return;\n\n entities.set(\n key,\n Object.freeze({\n ...entity,\n licenseId\n })\n );\n }\n\n #warnIfAccidentalDevMode(): void {\n if (DevMode.active && !isTestEnv.active) {\n // eslint-disable-next-line\n console.error(\n `[vault] \"Development Mode\" is enabled outside of a test environment.\\n` +\n `This can expose sensitive data because safeguards that normally remove or sanitize data are disabled.\\n` +\n `You have explicitly disabled these safeguards and are responsible for ensuring production safety.\\n` +\n `If this is intentional, you can safely ignore this message.`\n );\n }\n }\n\n #summarizeFluent(event: Partial<LicensingFeatureDescriptionEventShape<unknown>>) {\n const fluent: Partial<LicensingFeatureDescriptionEventShape<unknown>['fluentApis']> = event?.fluentApis ?? {};\n\n return {\n filters: Array.isArray(fluent?.filters) ? fluent.filters.length : 0,\n reducers: Array.isArray(fluent?.reducers) ? fluent.reducers.length : 0,\n beforeTaps: Array.isArray(fluent?.beforeTaps) ? fluent.beforeTaps.length : 0,\n afterTaps: Array.isArray(fluent?.afterTaps) ? fluent.afterTaps.length : 0,\n emitStateCallbacks: Array.isArray(fluent?.emitStateCallbacks) ? fluent.emitStateCallbacks.length : 0,\n errorCallbacks: Array.isArray(fluent?.errorCallbacks) ? fluent.errorCallbacks.length : 0\n };\n }\n\n #ensureRecord(key: string): VaultRegistrationShape {\n if (!this.#registry.has(key)) {\n this.#registry.set(key, { key, behaviorsRegistered: false, controllersRegistered: false });\n }\n\n return this.#registry.get(key)!;\n }\n\n #enableAiAssist(): void {\n if (this.#aiAssistEnabled) return;\n if (!DevMode.active) return;\n // istanbul ignore next -- SSR guard; document is always defined in browser tests\n if (typeof document === 'undefined') return;\n\n this.#aiAssistEnabled = true;\n\n globalThis.sdux ??= {};\n globalThis.sdux.debugWidget ??= {};\n globalThis.sdux.debugWidget.aiAssistEnabled = true;\n\n document.dispatchEvent(new CustomEvent('sdux-license-resolved'));\n }\n\n #injectDebugWidget(): void {\n if (!DevMode.active) return;\n // istanbul ignore next line - this is defensive only\n if (typeof document === 'undefined') return;\n\n // Ensure root container exists\n globalThis.sdux ??= {};\n\n // Ensure debugWidget exists\n globalThis.sdux.debugWidget ??= {};\n\n globalThis.sdux.debugWidget.getRegistry = () => this.getRegistrySnapshot();\n\n initDevtoolsWidget();\n }\n\n //#endregion\n\n //#region Public Testing Method\n registerVaultSettled(key: string, fn: () => Promise<void>): void {\n const record = this.#ensureRecord(key);\n record.vaultSettled = fn;\n }\n\n async awaitFeatureCellSettled(key: string): Promise<void> {\n const record = this.#registry.get(key);\n\n if (!record) {\n throw new Error(`[vault] FeatureCell \"${key}\" not registered.`);\n }\n\n if (typeof record.vaultSettled === 'function') {\n await record.vaultSettled();\n await Promise.resolve(); // flush microtasks\n }\n }\n\n async awaitAllSettled(): Promise<void> {\n for (const record of this.#registry.values()) {\n if (typeof record.vaultSettled === 'function') {\n await record.vaultSettled();\n }\n }\n\n await Promise.resolve();\n }\n\n // TESTING ONLY — do not use in production code\n getRegistrySnapshot(): ReadonlyMap<string, VaultRegistrationShape> {\n // Return a shallow cloned map so tests cannot mutate internal state\n return new Map(this.#registry);\n }\n\n //#endregion\n}\n\nexport function registerFeatureCell(entry: RegisteredFeatureCellShape): void {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n if (!entry) {\n throw new Error('[vault] registerFeatureCell() requires a valid entry object.');\n }\n\n if (!entry.key || typeof entry.key !== 'string') {\n throw new Error('[vault] registerFeatureCell() requires a valid \"key\" (non-empty string).');\n }\n\n instance.registerCellRuntime(entry.key);\n}\n\nexport function getLicensePayload(licenseId: string): unknown {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n if (typeof licenseId !== 'string' || !licenseId.trim()) {\n throw new Error('[vault] getLicensePayload() requires a valid licenseId.');\n }\n\n return instance.getLicensePayload(licenseId);\n}\n\nexport async function vaultAllSettled(): Promise<void> {\n if (!instance) return;\n await instance.awaitAllSettled();\n}\n\nexport async function vaultSettled(key: string): Promise<void> {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n await instance.awaitFeatureCellSettled(key);\n}\n\nexport function registerVaultSettled(key: string, vaultSettled?: () => Promise<void>): void {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n if (!key || typeof key !== 'string') {\n throw new Error('[vault] registerVaultSettled() requires a valid \"key\" (non-empty string).');\n }\n\n if (typeof vaultSettled !== 'function') {\n // silently ignore in production; nothing to attach\n return;\n }\n\n instance.registerVaultSettled(key, vaultSettled);\n}\n\n/**\n * Resets the global Vault configuration for isolated tests.\n *\n * This function should **never** be called in production builds.\n */\nexport function resetVaultForTests(): void {\n resetLicensingServiceForTests();\n instance?.resetForTesting();\n instance = null;\n}\n\nexport function resetFeatureCellRegistry(): void {\n instance?.resetFeatureCellRegistry();\n}\n\nexport function getVaultRegistryForTests(): ReadonlyMap<string, VaultRegistrationShape> | undefined {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n return instance.getRegistrySnapshot();\n}\n\nexport function isAuthorizedKey(key: string): boolean {\n if (!instance) return false;\n\n if (instance.isBypassLicensing()) return true;\n\n return instance.isAuthorizedKey(key);\n}\n\nexport function isBypassLicensing(): boolean {\n if (!instance) return false;\n\n return instance.isBypassLicensing();\n}\n\nexport function hasVaultLicense(): boolean {\n if (!instance) return false;\n\n return instance.hasVaultLicense();\n}\n","// projects/core/src/lib/services/vault-behavior-lifecycle.service.ts\nimport {\n BEHAVIOR_META,\n BehaviorClassContext,\n BehaviorClassContract,\n BehaviorContract,\n BehaviorMetaShape,\n FeatureCellBaseShape,\n FeatureCellExtensionContext,\n validateBehaviorKey,\n vaultDebug,\n vaultError,\n VaultMonitorContract,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { PROTECTED_FEATURE_CELL_KEYS } from '../constants/protected-feature-cell-keys.constant';\nimport {\n getLicensePayload,\n hasVaultLicense,\n isAuthorizedKey,\n isBypassLicensing\n} from '../factories/vault/vault-core.function';\nimport { BehaviorInitializeClassContract } from '../interfaces/behavior/behavior-initialization.interface';\n\n/**\n * Manages instantiation and lifecycle initialization of FeatureCell behaviors.\n *\n * This class is responsible for constructing behavior instances from declared\n * behavior classes, validating metadata and keys, enforcing criticality rules,\n * and applying behavior-defined API extensions onto a FeatureCell instance.\n */\nexport class BehaviorInitializationClass implements BehaviorInitializeClassContract {\n /** Tracks whether initialization has already been performed. */\n #initialized = false;\n\n /** FeatureCell identifier associated with this initializer. */\n #cellKey: string;\n\n /**\n * Creates a new behavior initializer for a specific FeatureCell.\n *\n * @param cellKey - The unique FeatureCell key.\n */\n constructor(cellKey: string) {\n this.#cellKey = cellKey;\n }\n\n /**\n * Instantiates and validates all behaviors declared for a FeatureCell.\n *\n * This method enforces one-time initialization, validates required behavior\n * metadata, instantiates behavior classes with their configuration, and\n * ensures behavior keys are unique and correctly formatted.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param behaviorClasses - Behavior class definitions to instantiate.\n * @param behaviorConfigs - Configuration map keyed by behavior configKey.\n * @returns An ordered array of instantiated behavior objects.\n */\n initializeBehaviors<T>(\n behaviorClasses: Array<BehaviorClassContract<T>>,\n behaviorConfigs: Map<string, unknown>\n ): BehaviorContract<T>[] {\n if (this.#initialized)\n throw new Error(\n `[vault] VaultBehaviorRunner already initialized — cannot reissue core behavior ID for feature cell \"${this.#cellKey}\".`\n );\n\n this.#initialized = true;\n\n if (!behaviorClasses || behaviorClasses.length === 0) return [];\n\n const seenKeys = new Set<string>();\n\n return (\n behaviorClasses\n // eslint-disable-next-line\n .map((BehaviorClass: any) => {\n let isCritical = false;\n\n try {\n if (typeof BehaviorClass !== 'function') return;\n\n const meta = BehaviorClass[BEHAVIOR_META] as BehaviorMetaShape | undefined;\n\n if (!meta) {\n isCritical = true;\n throw new Error(`[vault] Behavior \"${BehaviorClass.name}\" missing @VaultBehavior metadata.`);\n }\n\n const behaviorKey = meta.key;\n const behaviorType = meta.type;\n\n if (!behaviorKey) {\n isCritical = true;\n throw new Error(`[vault] Behavior metadata missing \"key\".`);\n }\n\n if (!hasVaultLicense()) {\n if (!isAuthorizedKey(behaviorKey)) {\n vaultDebug(`[vault] Unlicensed behavior \"${behaviorKey}\" skipped during initialization.`);\n return;\n }\n }\n\n if (!behaviorType) {\n isCritical = true;\n throw new Error(`[vault] Behavior metadata missing \"type\" for \"${behaviorKey}\".`);\n }\n\n let behaviorConfig: unknown = undefined;\n\n if (meta.wantsConfig) {\n if (!meta.configKey) {\n isCritical = true;\n throw new Error(`[vault] Behavior \"${behaviorKey}\" declares wantsConfig but has no configKey.`);\n }\n\n behaviorConfig = behaviorConfigs.get(meta.configKey);\n }\n\n let licensePayload: unknown = undefined;\n if (meta.needsLicense && !isBypassLicensing()) {\n if (!meta.licenseId) {\n isCritical = true;\n throw new Error(`[vault] Behavior \"${behaviorKey}\" declares needsLicense but has no licenseId.`);\n }\n\n licensePayload = getLicensePayload(meta.licenseId);\n\n if (licensePayload === undefined) {\n isCritical = true;\n throw new Error(\n `[vault] License \"${meta.licenseId}\" required by behavior \"${behaviorKey}\" is not registered in Vault config.`\n );\n }\n }\n\n let instance: BehaviorContract<T>;\n try {\n instance = new BehaviorClass(behaviorKey, {\n featureCellKey: this.#cellKey,\n behaviorConfig,\n licensePayload\n } as BehaviorClassContext) as BehaviorContract<T>;\n } catch (error) {\n isCritical = meta.critical;\n throw error;\n }\n\n if (!instance.key) {\n isCritical = true;\n throw new Error(\n `[vault] Behavior missing key for type \"${behaviorType}\". Every behavior must define a unique \"key\".`\n );\n }\n\n if (!validateBehaviorKey(instance.key)) {\n isCritical = true;\n throw new Error(\n `[vault] Behavior key \"${instance.key}\" not valid format for \"${behaviorType}\" behavior.`\n );\n }\n\n if (instance.key && seenKeys.has(instance.key)) {\n vaultWarn(`[vault] Skipping duplicate behavior with key \"${instance.key}\"`);\n return null;\n }\n\n if (instance.key) seenKeys.add(instance.key);\n\n return instance;\n } catch (err) {\n if (isCritical) {\n throw err;\n }\n\n // eslint-disable-next-line\n vaultWarn(`[vault] Non-critical behavior initialization failed: ${(err as any)?.message}`);\n return null;\n }\n })\n .filter((behavior): behavior is BehaviorContract<T> => !!behavior)\n );\n }\n\n /**\n * Applies behavior-defined API extensions to a FeatureCell instance.\n *\n * Each behavior may expose extension functions that are attached to the\n * FeatureCell. Extensions are validated to prevent overriding protected\n * core APIs or other behavior extensions without explicit permission.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param cell - The FeatureCell instance to extend.\n * @param vaultMonitor - Monitor used for extension execution diagnostics.\n */\n applyBehaviorExtensions<T>(\n behaviors: BehaviorContract<T>[],\n cell: FeatureCellBaseShape<T>,\n vaultMonitor: VaultMonitorContract\n ): void {\n for (const behavior of behaviors) {\n const FeatureCellExtensionContext = {\n featureCellKey: cell.key,\n destroyed$: cell.destroyed$,\n reset$: cell.reset$,\n mergeState: cell.mergeState,\n replaceState: cell.replaceState,\n state$: cell.state$,\n vaultMonitor\n } as FeatureCellExtensionContext<T>;\n\n const extensions = behavior.extendCellAPI?.(FeatureCellExtensionContext);\n if (!extensions || typeof extensions !== 'object') continue;\n\n for (const [key, fn] of Object.entries(extensions)) {\n const alreadyDefined = cell[key as keyof FeatureCellBaseShape<T>] !== undefined;\n\n const canOverride =\n // eslint-disable-next-line\n Array.isArray((behavior as any).allowOverride) && (behavior as any).allowOverride.includes(key);\n\n if (PROTECTED_FEATURE_CELL_KEYS.has(key)) {\n throw new Error(\n `[vault] Behavior \"${behavior.key}\" attempted to overwrite core FeatureCell method \"${key}\".`\n );\n }\n\n if (alreadyDefined && !canOverride) {\n throw new Error(\n `[vault] Behavior \"${behavior.key}\" attempted to redefine method \"${key}\" already provided by another behavior.`\n );\n }\n\n if (alreadyDefined && canOverride) {\n vaultWarn(`[vault] Behavior \"${behavior.key}\" is overriding method \"${key}\" (explicitly allowed).`);\n // eslint-disable-next-line\n delete (cell as any)[key];\n }\n\n Object.defineProperty(cell, key, {\n // eslint-disable-next-line\n value: (...args: any[]) => {\n try {\n if (typeof fn !== 'function') return;\n return fn(...args);\n } catch (err) {\n vaultError(`[vault] Behavior extension \"${key}\" threw an error:`, err);\n throw err;\n }\n },\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n }\n }\n}\n","import {\n BehaviorContract,\n BehaviorTypes,\n CoreEmitStateBehaviorContract,\n ErrorCallbackBehaviorContract,\n ErrorTransformBehaviorContract,\n FinalState,\n isVaultNoop,\n VAULT_STOP\n} from '@sdux-vault/shared';\n\n/**\n * Type guard that identifies error transform behaviors.\n *\n * This function determines whether a behavior participates in the\n * error transformation stage of the pipeline based on its declared\n * behavior type.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param behavior - A behavior instance to inspect.\n * @returns `true` when the behavior is an error transform behavior.\n */\nexport const isErrorTransformBehavior = <T>(\n behavior: BehaviorContract<T>\n): behavior is ErrorTransformBehaviorContract<T> => {\n return behavior.type === BehaviorTypes.ErrorTransform;\n};\n\n/**\n * Type guard that identifies the core error callback behavior.\n *\n * This function is used to detect behaviors responsible for invoking\n * legacy or observational error callbacks during pipeline execution.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param behavior - A behavior instance to inspect.\n * @returns `true` when the behavior is the core error callback behavior.\n */\nexport const isCoreErrorCallbackBehavior = <T>(\n behavior: BehaviorContract<T>\n): behavior is ErrorCallbackBehaviorContract<T> => {\n return behavior.type === BehaviorTypes.CoreErrorCallback;\n};\n\n/**\n * Type guard that identifies the core emitState behavior.\n *\n * This function detects the behavior responsible for emitting finalized\n * state snapshots to observers after pipeline execution.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param behavior - A behavior instance to inspect.\n * @returns `true` when the behavior is the core emitState behavior.\n */\nexport const isCoreEmitStateCallbackBehavior = <T>(\n behavior: BehaviorContract<T>\n): behavior is CoreEmitStateBehaviorContract<T> => {\n return behavior.type === BehaviorTypes.CoreEmitState;\n};\n\n/**\n * Determines whether a final pipeline value represents a STOP signal.\n *\n * A STOP signal halts the pipeline immediately without committing state\n * and is typically produced by interceptor behaviors.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param current - The final pipeline result value.\n * @returns `true` when the value is the `VAULT_STOP` sentinel.\n */\nexport const isSignalStop = <T>(current: FinalState<T>): boolean => {\n return current === VAULT_STOP;\n};\n\n/**\n * Generates a compact uppercase trace identifier.\n *\n * The identifier is derived from `crypto.randomUUID()` when available,\n * with a fallback to a randomized string for environments where WebCrypto\n * is unavailable.\n *\n * @returns A five-character uppercase trace identifier.\n */\nexport const assignTraceId = (): string => {\n return crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2, 7);\n};\n\n/**\n * Determines whether a pipeline result is terminal.\n *\n * Terminal values indicate that the pipeline must halt without applying\n * a new state snapshot. This includes both no-op and stop signals.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param current - The final pipeline result value.\n * @returns `true` when the pipeline should not apply state.\n */\nexport const isPipelineTerminal = <T>(current: FinalState<T>): boolean => isVaultNoop(current) || isSignalStop(current);\n","import { VaultLicensePayloadType } from '../../../types/vault/vault-license-payload.type';\n\n/**\n * The public keys\n */\nexport const PublicKeys: Record<VaultLicensePayloadType, string> = {\n /**\n * the pro public key\n */\n pro: `\n-----BEGIN PUBLIC KEY-----\n-----END PUBLIC KEY-----\n`,\n /**\n * the enterprise public key\n */\n enterprise: `\n-----BEGIN PUBLIC KEY-----\n-----END PUBLIC KEY-----\n`,\n /**\n * the development public key\n */\n development: `\n-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6RDckQGY38NrlPq70YfI\nhIpBFmc9baNLS2HIeyKIU2m+Vvnt3AYcQJlQnzmO4ZLDOUkIP+VxAjaSCaUBeTOx\nKDYXAK8ds0xEur0cRV4Kn26jhLveLZVpfVzhkOjJ6I9ggLeh5JRt7kj3NPgKwnSm\nt5DxLh4JPyLfZdBDtW8tU2tCgCfEs2cArrVo/fg7Dei8FJ8w83PDhsKmX5UazSfj\nMC57gkTZ/cZmKBvVoIhnqaWVXcRRL+wZPArIsO801DRiMAhROyQYyC3EKpGLyUc1\n1VSKqdmQLIUE1pt151EnmStB+VOsMzCLZH4TyU7cd1Afs2Siqu947W2w4Qpm5+Y/\nFwIDAQAB\n-----END PUBLIC KEY-----\n`\n};\n","import { VaultLicensePayloadType } from '../../../types/vault/vault-license-payload.type';\nimport { PublicKeys } from './public-keys';\n\n/**\n * Static license verification utility used to validate signed license tokens\n * against tier-specific public keys. Tokens use a dot-separated format:\n * `base64(payload).base64(signature)`.\n *\n * The verification process:\n * - Splits the token on `.` to extract the encoded payload and signature\n * - Decodes the payload from base64 to determine the license tier\n * - Rejects tokens with missing or unrecognized tier\n * - Loads the appropriate PEM-encoded public key for the tier\n * - Uses `crypto.subtle.verify()` (RSA-SHA256) to validate the signature\n * against the raw base64-encoded payload string\n *\n * Verification failures return `false` rather than throwing.\n */\nexport const VerifyLicenseToken = {\n /**\n * Verifies the supplied signed license token using the public key associated\n * with its declared tier.\n *\n * @param token - A dot-separated token in the format\n * `base64(payload).base64(signature)`.\n * @returns A promise resolving to `true` if the signature validates;\n * otherwise `false`.\n */\n verify: async (token: string): Promise<boolean> => {\n try {\n const dotIndex = token.indexOf('.');\n\n if (dotIndex === -1) {\n return false;\n }\n\n const encodedPayload = token.substring(0, dotIndex);\n const signatureB64 = token.substring(dotIndex + 1);\n\n const payloadJson = atob(encodedPayload);\n const payload = JSON.parse(payloadJson);\n const signature = Uint8Array.from(atob(signatureB64), (c) => c.charCodeAt(0));\n\n const licenseType: VaultLicensePayloadType | undefined = payload?.licenseType;\n\n if (!licenseType) {\n return false;\n }\n\n const keyPem = PublicKeys[licenseType];\n\n if (!keyPem) return false;\n\n const key = await importPublicKey(keyPem);\n\n const verified = await crypto.subtle.verify(\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256'\n },\n key,\n signature,\n new TextEncoder().encode(encodedPayload)\n );\n\n return verified;\n } catch {\n return false;\n }\n }\n};\n\n/**\n * Imports an RSA public key from PEM format into a WebCrypto `CryptoKey`\n * configured for signature verification.\n *\n * @param pem - A PEM-encoded public key in subjectPublicKeyInfo format.\n * @returns A promise resolving to a usable verification `CryptoKey`.\n */\nasync function importPublicKey(pem: string) {\n const binaryDer = str2ab(pemToDer(pem));\n return crypto.subtle.importKey(\n 'spki',\n binaryDer,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256'\n },\n false,\n ['verify']\n );\n}\n\n/**\n * Converts a PEM-encoded public key into its raw DER body.\n *\n * @param pem - The PEM string containing header/footer markers.\n * @returns A base64-decoded DER binary string.\n */\nfunction pemToDer(pem: string) {\n const b64 = pem.replace(/-----.*KEY-----/g, '').replace(/\\s+/g, '');\n return atob(b64);\n}\n\n/**\n * Converts a binary string into an `ArrayBuffer`, suitable for WebCrypto key\n * import operations.\n *\n * @param str - A binary string.\n * @returns An `ArrayBuffer` containing the same byte values.\n */\nfunction str2ab(str: string): ArrayBuffer {\n const buf = new ArrayBuffer(str.length);\n const arr = new Uint8Array(buf);\n for (let i = 0; i < str.length; i++) arr[i] = str.charCodeAt(i);\n return buf;\n}\n","import { BehaviorClassContext, VaultLicenseError } from '@sdux-vault/shared';\nimport { LicensingServiceContract } from '../interfaces/licensing/licensing-service.interface';\nimport { LicensingService } from './licensing.service';\n\nexport abstract class LicensingAbstract<T> {\n static readonly needsLicense: boolean;\n static readonly key: string;\n\n #licenseToken!: string;\n #featureCellKey: string;\n #key: string;\n\n #licenseService: LicensingServiceContract<T>;\n\n constructor(ctx: BehaviorClassContext) {\n const ctor = this.constructor as typeof LicensingAbstract;\n\n if (typeof ctor.key !== 'string' || !ctor.key.trim()) {\n throw new VaultLicenseError(`LicensingClass requires a static \"key\". Did you forget @VaultBehavior?`);\n }\n\n this.#licenseService = LicensingService();\n this.#key = ctor.key;\n this.#featureCellKey = ctx.featureCellKey;\n\n if (ctor.needsLicense) {\n this.#requestLicense();\n }\n }\n\n #requestLicense(): void {\n this.#licenseToken = this.#licenseService.requestLicense(this.#featureCellKey, this.#key);\n }\n\n validateLicense(valid: boolean): void {\n if (!this.#licenseToken) {\n throw new VaultLicenseError(\n `validateLicense() called but no license was requested for \"${this.#featureCellKey}\" and \"${this.#key}\".`\n );\n }\n this.#licenseService.validateLicense(this.#featureCellKey, this.#key, this.#licenseToken, valid);\n }\n}\n","import {\n BehaviorClassContext,\n BehaviorType,\n BehaviorTypes,\n defineBehaviorKey,\n VaultBehavior,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { VAULT_LICENSE_ID } from '../../constants/vault-license-id.constant';\nimport { VerifyLicenseToken } from '../../factories/vault/token-validation/verify-license-token.utility';\nimport { LicensingAbstract } from '../../licensing/licensing.abstract';\n\n@VaultBehavior({\n type: BehaviorTypes.CoreLicense,\n key: defineBehaviorKey('Core', 'License'),\n critical: true,\n needsLicense: true,\n licenseId: VAULT_LICENSE_ID\n})\nexport class withCoreLicenseBehavior<T> extends LicensingAbstract<T> {\n static readonly type: BehaviorType;\n static override readonly key: string;\n static readonly critical: boolean;\n static override readonly needsLicense: boolean;\n\n readonly type = BehaviorTypes.CoreLicense;\n readonly critical = true;\n readonly key: string;\n\n constructor(\n key: string,\n readonly behaviorCtx: BehaviorClassContext\n ) {\n super(behaviorCtx);\n this.key = key;\n\n this.#performLicenseValidation();\n }\n\n async #performLicenseValidation(): Promise<void> {\n try {\n const payload = this.behaviorCtx.licensePayload as { token: string } | undefined;\n\n if (!payload?.token) {\n this.validateLicense(false);\n return;\n }\n\n const isValid = await VerifyLicenseToken.verify(payload.token);\n this.validateLicense(isValid);\n } catch {\n this.validateLicense(false);\n }\n }\n\n destroy(): void {\n vaultWarn(`${this.key} - destroy noop`);\n }\n\n reset(): void {\n vaultWarn(`${this.key} - reset noop`);\n }\n}\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: lib > src > orchestrator > orchestrator.ts\n// Updated: 2026-04-07 16:30\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport {\n AfterTapBehaviorContract,\n BeforeTapBehaviorContract,\n BEHAVIOR_META,\n BehaviorClassContract,\n BehaviorContext,\n BehaviorContract,\n BehaviorMetaShape,\n BehaviorType,\n BehaviorTypes,\n ControllerContext,\n CoreEmitStateBehaviorContract,\n CoreEmitStateCallback,\n CoreErrorBehaviorContract,\n CoreStateBehaviorContract,\n createVaultError,\n DecisionOutcomeType,\n DecisionOutcomeTypes,\n DeferredFactory,\n DeferredType,\n EncryptBehaviorContract,\n ErrorCallbackBehaviorContract,\n ErrorTransformBehaviorContract,\n FilterBehaviorContract,\n FilterFunction,\n FinalState,\n InterceptorBehaviorContract,\n isDefined,\n isFunction,\n isHttpResourceRef,\n isNullish,\n isolateValue,\n isPromise,\n isStateInputShape,\n isUndefined,\n isVaultClearState,\n isVaultContinue,\n isVaultNoop,\n MergeBehaviorContract,\n OperationType,\n OperationTypes,\n OperatorBehaviorContract,\n PersistBehaviorContract,\n PipelinePersistValue,\n PipelineUpstreamValue,\n ReduceBehaviorContract,\n ReducerFunction,\n ResolveBehaviorContract,\n ResolveType,\n ResolveTypes,\n StateInputShape,\n StateInputType,\n StepwiseBehaviorContract,\n TapCallback,\n VAULT_CLEAR_STATE,\n VAULT_CONTINUE,\n VAULT_NOOP,\n VAULT_STOP,\n vaultDebug,\n vaultError,\n VaultErrorCallback,\n VaultErrorShape,\n VaultPrivateErrorService,\n VaultPrivateErrorServiceContract,\n VaultUsagePromiseError,\n vaultWarn\n} from '@sdux-vault/shared';\n\nimport { OrchestratorConfig } from '../config/orchestrator.config';\nimport { VAULT_ORCHESTRATOR } from '../constants/vault-orchestrator.constant';\nimport { DecisionEngine } from '../decision-engine/decision-engine';\n\nimport { BehaviorInitializationClass } from '../utils/initialize-behavior.util';\nimport {\n isCoreEmitStateCallbackBehavior,\n isCoreErrorCallbackBehavior,\n isErrorTransformBehavior,\n isSignalStop\n} from '../utils/orchestrator.utils';\n\nimport { isObservable } from 'rxjs';\nimport { hasVaultLicense } from '../../public-api';\nimport { withCoreLicenseBehavior } from '../behaviors/license/with-core-license.behavior';\nimport { LicensingService } from '../licensing/licensing.service';\nimport { VaultMonitor } from '../monitor/vault-monitor.service';\n\nexport abstract class Orchestrator<T> {\n #afterTapCallbacks: TapCallback<T>[];\n #beforeTapCallbacks: TapCallback<T>[];\n #behaviors!: BehaviorContract<T>[];\n #stageBehaviors!: BehaviorContract<T>[];\n protected cellKey: string;\n protected decisionEngine!: DecisionEngine<T>;\n #coreErrorBehavior!: CoreErrorBehaviorContract<T>;\n #coreErrorCallbackBehavior!: ErrorCallbackBehaviorContract<T>;\n #emitStateCallbackBehavior!: CoreEmitStateBehaviorContract<T>;\n #emitStateCallbacks!: CoreEmitStateCallback<T>[];\n #coreStateBehavior!: CoreStateBehaviorContract<T>;\n #errorTransformBehaviors!: ErrorTransformBehaviorContract<T>[];\n #errorCallbacks: VaultErrorCallback<T>[];\n protected privateErrorService: VaultPrivateErrorServiceContract = VaultPrivateErrorService();\n #filterFunctions: FilterFunction<T>[] = [];\n #initialState: T | DeferredType<T>;\n #mergeBehavior!: MergeBehaviorContract<T>;\n #reducerFunctions: ReducerFunction<T>[];\n protected vaultMonitor = VaultMonitor();\n\n constructor(config: OrchestratorConfig<T>) {\n this.#afterTapCallbacks = config.afterTapCallbacks ?? [];\n this.#beforeTapCallbacks = config.beforeTapCallbacks ?? [];\n this.cellKey = config.cell?.key;\n this.#emitStateCallbacks = config.emitStateCallbacks ?? [];\n this.#errorCallbacks = config.errorCallbacks ?? [];\n this.#filterFunctions = config.filterCallbacks ?? [];\n this.#initialState = config.initialState;\n this.#reducerFunctions = config.reducerCallbacks ?? [];\n }\n\n protected initializeOrchestrator(config: OrchestratorConfig<T>): void {\n config.behaviors = config.behaviors ?? [];\n this.#registerBehaviors(config);\n }\n\n //#region Protected Methods\n\n protected async initializeFeatureCell(ctx: BehaviorContext<T>): Promise<void> {\n await this.#loadInitialState(ctx);\n }\n\n protected destroyBehaviors(ctx: BehaviorContext<T>): void {\n this.#destroyBehaviors(ctx);\n }\n\n protected resetBehaviors(ctx: BehaviorContext<T>): void {\n this.#resetBehaviors(ctx);\n }\n\n protected async orchestrate(ctx: BehaviorContext<T>, options?: unknown): Promise<void> {\n // no controllers → pipeline behaves exactly as before\n if (ctx.operation === OperationTypes.Replace) {\n await this.#orchestrateReplace(ctx);\n } else {\n await this.#orchestrateMerge(ctx, options);\n }\n return;\n }\n\n protected buildControllerCtx(ctx: BehaviorContext<T>): ControllerContext<T> {\n return {\n traceId: ctx.traceId,\n featureCellKey: ctx.featureCellKey,\n snapshot: ctx.lastSnapshot,\n incoming: ctx.incoming,\n operation: ctx.operation\n };\n }\n\n protected normalizeIncoming<T>(incoming: StateInputType<T>): StateInputType<T> {\n if (!incoming) return null;\n\n if (isHttpResourceRef(incoming) || isObservable(incoming) || isFunction(incoming) || isFunction(incoming)) {\n return incoming;\n }\n\n if (isStateInputShape(incoming)) {\n return isolateValue(incoming);\n }\n\n return {\n value: incoming\n } as StateInputType<T>;\n }\n\n protected controllerOutcomeNotification(type: DecisionOutcomeType, ctx: BehaviorContext<T>): void {\n switch (type) {\n case DecisionOutcomeTypes.Abort: {\n this.#coreStateBehavior.finalizeControllerAbort(ctx);\n break;\n }\n case DecisionOutcomeTypes.Deny: {\n this.#coreStateBehavior.finalizeControllerDeny(ctx);\n break;\n }\n }\n }\n\n protected prepareIncoming(\n ctx: BehaviorContext<T>,\n incoming: StateInputType<T>,\n operation: OperationType\n ): StateInputType<T> | typeof VAULT_NOOP | typeof VAULT_CLEAR_STATE {\n ctx = this.#prepIncomingForOrchestration(ctx, incoming, operation);\n\n const normalizedIncoming = this.#coreStateBehavior.preparePipelineIncoming(ctx);\n\n if (isVaultNoop(normalizedIncoming)) {\n this.vaultMonitor.startCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n this.#runStateBehaviors(ctx);\n this.vaultMonitor.endCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n if (isVaultClearState(normalizedIncoming)) {\n this.vaultMonitor.startCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n this.#resetBehaviors(ctx);\n this.#runStateBehaviors(ctx);\n this.vaultMonitor.endCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n return;\n }\n return normalizedIncoming;\n }\n\n //#endregion\n\n //#region Private Methods\n\n #prepIncomingForOrchestration(\n ctx: BehaviorContext<T>,\n incoming: StateInputType<T>,\n operation: OperationType\n ): BehaviorContext<T> {\n ctx.incoming = this.normalizeIncoming(incoming) as StateInputShape<T>;\n ctx.resolveType = this.#getResolveType(incoming);\n ctx.operation = operation;\n return ctx;\n }\n\n #addDefaultMergeBehavior(\n behaviors: BehaviorClassContract<T>[],\n config: OrchestratorConfig<T>\n ): BehaviorClassContract<T>[] {\n const mergeBehaviors = config.behaviors.filter((behaviorClass: BehaviorClassContract) => {\n return (behaviorClass as BehaviorClassContract<T>).type === BehaviorTypes.Merge;\n });\n\n if (mergeBehaviors.length > 1) {\n const names = mergeBehaviors.map((mergeBehavior) => mergeBehavior.key).join(', ');\n\n throw new Error(\n `SDuX Error: More than one MergeBehavior was provided. Only one merge strategy can be active per FeatureCell. Received: ${names}. Fix: Remove additional merge behaviors or combine them into a single behavior.`\n );\n }\n\n if (mergeBehaviors.length === 1) {\n behaviors.push(mergeBehaviors[0]);\n behaviors = behaviors.filter((behavior) => behavior.type !== BehaviorTypes.Merge);\n }\n\n return behaviors;\n }\n\n // ---------------------------------------------------------------------------\n // NORMALIZATION\n // ---------------------------------------------------------------------------\n\n #defineDefaultBehaviors(config: OrchestratorConfig<T>): BehaviorClassContract<T>[] {\n let defaultBehaviors = config.defaultBehaviors ?? [];\n\n defaultBehaviors = this.#determineCoreCallbackErrorBehavior(defaultBehaviors, config);\n\n defaultBehaviors = this.#addDefaultMergeBehavior(defaultBehaviors, config);\n\n defaultBehaviors = this.#addCoreEmitStateCallbackBehavior(defaultBehaviors, config);\n\n defaultBehaviors = this.#addCoreLicenseBehavior(defaultBehaviors);\n\n return defaultBehaviors;\n }\n\n #determineCoreCallbackErrorBehavior<T>(\n behaviors: BehaviorClassContract<T>[],\n config: OrchestratorConfig<T>\n ): BehaviorClassContract<T>[] {\n if (config?.errorCallbacks?.length === 0) {\n return behaviors.filter((behavior) => behavior.type !== BehaviorTypes.CoreErrorCallback);\n }\n\n return behaviors;\n }\n\n #addCoreEmitStateCallbackBehavior<T>(\n behaviors: BehaviorClassContract<T>[],\n config: OrchestratorConfig<T>\n ): BehaviorClassContract<T>[] {\n if (config?.emitStateCallbacks?.length === 0) {\n return behaviors.filter((behavior) => behavior.type !== BehaviorTypes.CoreEmitState);\n }\n\n return behaviors;\n }\n\n #addCoreLicenseBehavior<T>(behaviors: BehaviorClassContract<T>[]): BehaviorClassContract<T>[] {\n behaviors = behaviors?.filter((behavior: BehaviorClassContract<T>) => behavior.type !== BehaviorTypes.CoreLicense);\n\n if (hasVaultLicense()) {\n behaviors.push(withCoreLicenseBehavior);\n }\n\n return behaviors;\n }\n\n #registerBehaviorsWithVault(behaviors: BehaviorClassContract<T>[]): void {\n // eslint-disable-next-line\n const behaviorMetadata = behaviors.map((behavior: any) => {\n const meta = behavior[BEHAVIOR_META] as BehaviorMetaShape;\n\n return {\n key: behavior.key,\n type: meta.type,\n critical: meta.critical,\n needsLicense: meta.needsLicense\n };\n });\n\n LicensingService().describeBehaviors({\n featureCellKey: this.cellKey,\n behaviors: behaviorMetadata\n });\n }\n\n #registerBehaviors(config: OrchestratorConfig<T>): void {\n const defaultBehaviors = this.#defineDefaultBehaviors(config);\n\n // Strip out any user-provided reducers; they are passed separately via `reducers`\n const filteredUserBehaviors = config.behaviors?.filter((behavior: BehaviorClassContract<T>) => {\n return !(\n behavior.type === BehaviorTypes.CoreAfterTap ||\n behavior.type === BehaviorTypes.CoreBeforeTap ||\n behavior.type === BehaviorTypes.CoreError ||\n behavior.type === BehaviorTypes.CoreErrorCallback ||\n behavior.type === BehaviorTypes.CoreEmitState ||\n behavior.type === BehaviorTypes.CoreLicense ||\n behavior.type === BehaviorTypes.CoreState ||\n behavior.type === BehaviorTypes.Filter ||\n behavior.type === BehaviorTypes.FromObservable ||\n behavior.type === BehaviorTypes.FromPromise ||\n behavior.type === BehaviorTypes.FromStream ||\n behavior.type === BehaviorTypes.Reduce ||\n behavior.type === BehaviorTypes.Resolve\n );\n });\n\n config.operators = config.operators ?? [];\n config.interceptors = config.interceptors ?? [];\n\n let allBehaviors: BehaviorClassContract<T>[] = [\n ...defaultBehaviors,\n ...filteredUserBehaviors,\n ...config.operators,\n ...config.interceptors\n ];\n\n const hasTabSync = allBehaviors.some((behavior) => behavior.type === BehaviorTypes.TabSyncState);\n\n if (hasTabSync) {\n allBehaviors = allBehaviors.filter((behavior) => behavior.type !== BehaviorTypes.CoreState);\n }\n\n const behaviorInit = new BehaviorInitializationClass(this.cellKey);\n this.#registerBehaviorsWithVault(allBehaviors);\n this.#behaviors = behaviorInit.initializeBehaviors(allBehaviors, config.behaviorConfigs);\n\n this.#registerErrorBehavior();\n this.#registerMergeBehavior();\n this.#registerStageBehaviors();\n this.#registerStateBehavior();\n\n behaviorInit.applyBehaviorExtensions(this.#behaviors, config.cell, this.vaultMonitor);\n }\n\n #registerStageBehaviors(): void {\n // Remove merge behavior from the pipeline list\n this.#stageBehaviors = this.#behaviors.filter(\n (behavior) =>\n !(\n behavior.type === BehaviorTypes.CoreState ||\n behavior.type === BehaviorTypes.TabSyncState ||\n behavior.type === BehaviorTypes.CoreEmitState ||\n behavior.type === BehaviorTypes.CoreError ||\n behavior.type === BehaviorTypes.ErrorTransform ||\n behavior.type === BehaviorTypes.CoreErrorCallback ||\n behavior.type === BehaviorTypes.Merge\n )\n );\n }\n\n #registerStateBehavior(): void {\n const tabSyncState = this.#behaviors.filter((behavior) => behavior.type === BehaviorTypes.TabSyncState);\n const coreState = this.#behaviors.filter((behavior) => behavior.type === BehaviorTypes.CoreState);\n\n const stateBehaviors = tabSyncState.length > 0 ? tabSyncState : coreState;\n\n if (stateBehaviors.length > 1) {\n throw new Error('Only one core state behavior can be registered for a FeatureCell.');\n }\n\n this.#coreStateBehavior = (stateBehaviors[0] as CoreStateBehaviorContract<T>) ?? null;\n\n this.#emitStateCallbackBehavior = this.#behaviors.filter((behavior) =>\n isCoreEmitStateCallbackBehavior(behavior)\n )[0];\n }\n\n #registerErrorBehavior(): void {\n // Extract and remove error behavior\n const coreErrors = this.#behaviors.filter((behavior) => behavior.type === BehaviorTypes.CoreError);\n\n if (coreErrors.length > 1) {\n throw new Error('Only one core error behavior can be registered for a FeatureCell.');\n }\n\n this.#coreErrorBehavior = (coreErrors[0] as CoreErrorBehaviorContract<T>) ?? null;\n\n this.#coreErrorCallbackBehavior = this.#behaviors.filter((behavior) => isCoreErrorCallbackBehavior(behavior))[0];\n\n this.#errorTransformBehaviors = this.#behaviors.filter((behavior) => isErrorTransformBehavior(behavior));\n }\n\n #registerMergeBehavior(): void {\n // Extract and remove merge behavior\n const merges = this.#behaviors.filter((behavior) => behavior.type === BehaviorTypes.Merge);\n this.#mergeBehavior = (merges[0] as MergeBehaviorContract<T>) ?? null;\n }\n\n async #runStepwise(\n behaviorType: BehaviorType,\n ctx: BehaviorContext<T>,\n current: PipelineUpstreamValue<T>\n ): Promise<typeof VAULT_NOOP | typeof VAULT_CLEAR_STATE | typeof VAULT_CONTINUE> {\n const stepwise = await this.#runUpstreamStage(behaviorType, ctx, current);\n\n if (isVaultClearState(stepwise)) {\n return VAULT_CLEAR_STATE;\n }\n\n if (isVaultNoop(stepwise)) {\n return VAULT_NOOP;\n }\n\n return VAULT_CONTINUE;\n }\n\n async #finishPipeline(\n ctx: BehaviorContext<T>,\n resolved: PipelineUpstreamValue<T>\n ): Promise<PipelineUpstreamValue<T>> {\n // Stage: operators\n let pipelineDataFlow: PipelineUpstreamValue<T>;\n\n const stepwiseResolve = await this.#runStepwise(BehaviorTypes.StepwiseResolve, ctx, resolved);\n\n if (!isVaultContinue(stepwiseResolve)) {\n return stepwiseResolve;\n }\n\n if (this.#containsOperators()) {\n pipelineDataFlow = await this.#runOperatorStage(ctx, resolved);\n\n // Halt pipeline on noop\n if (isVaultNoop(pipelineDataFlow)) return VAULT_NOOP;\n } else {\n pipelineDataFlow = resolved;\n }\n\n // Stage: filter\n pipelineDataFlow = await this.#runUpstreamStage(BehaviorTypes.Filter, ctx, pipelineDataFlow);\n\n const stepwiseFilter = await this.#runStepwise(BehaviorTypes.StepwiseFilter, ctx, pipelineDataFlow);\n\n if (!isVaultContinue(stepwiseFilter)) {\n return stepwiseFilter;\n }\n\n await this.#runUpstreamStage(BehaviorTypes.CoreBeforeTap, ctx, isolateValue(pipelineDataFlow));\n\n // Stage: reduce\n pipelineDataFlow = await this.#runUpstreamStage(BehaviorTypes.Reduce, ctx, pipelineDataFlow);\n\n const stepwiseReducer = await this.#runStepwise(BehaviorTypes.StepwiseReducer, ctx, pipelineDataFlow);\n\n if (!isVaultContinue(stepwiseReducer)) {\n return stepwiseReducer;\n }\n\n await this.#runUpstreamStage(BehaviorTypes.CoreAfterTap, ctx, isolateValue(pipelineDataFlow));\n\n // Clone AFTER reduce for purity\n const stateData = isolateValue(pipelineDataFlow);\n\n let persistPipelineValue = stateData as PipelinePersistValue<T>;\n // Stage: encrypt\n persistPipelineValue = await this.#runPersistStage(BehaviorTypes.Encrypt, ctx, persistPipelineValue);\n\n // Stage: persist\n await this.#runPersistStage(BehaviorTypes.Persist, ctx, persistPipelineValue);\n\n // Commit the *cloned* pre-encrypted snapshot to signals\n return stateData;\n }\n\n async #orchestrateReplace(ctx: BehaviorContext<T>): Promise<void> {\n this.vaultMonitor.startReplace(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n await this.#safeAsync(async () => {\n let finalState!: FinalState<T>;\n finalState = await this.#runInterceptorStage(ctx);\n\n if (!isSignalStop(finalState)) {\n const resolved = await this.#runUpstreamStage(BehaviorTypes.Resolve, ctx, undefined);\n\n if (isVaultClearState(resolved)) {\n finalState = VAULT_CLEAR_STATE;\n } else {\n finalState = await this.#finishPipeline(ctx, resolved);\n }\n }\n\n return this.#handleFinalState(finalState, ctx);\n }, ctx);\n }\n\n async #orchestrateMerge(ctx: BehaviorContext<T>, options?: unknown): Promise<void> {\n this.vaultMonitor.startMerge(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n await this.#safeAsync(async () => {\n const safeCurrent = isolateValue(ctx.lastSnapshot.value);\n\n let finalState!: FinalState<T>;\n finalState = await this.#runInterceptorStage(ctx);\n\n if (!isSignalStop(finalState)) {\n const partial = await this.#runUpstreamStage(BehaviorTypes.Resolve, ctx, undefined);\n\n const safePartial = isolateValue(partial);\n\n this.vaultMonitor.startComputeMerge(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n // eslint-disable-next-line\n const mergeResult = await this.#mergeBehavior.computeMerge(safeCurrent, safePartial, options as any);\n\n this.vaultMonitor.endComputeMerge(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n if (isVaultClearState(mergeResult)) {\n finalState = VAULT_CLEAR_STATE;\n } else {\n const stateResult = isolateValue(mergeResult);\n finalState = await this.#finishPipeline(ctx, stateResult);\n }\n }\n return await this.#handleFinalState(finalState, ctx);\n }, ctx);\n }\n\n async #handleFinalState(finalState: FinalState<T>, ctx: BehaviorContext<T>): Promise<FinalState<T>> {\n let payload: unknown;\n\n if (isSignalStop(finalState)) {\n payload = { pipelinePaused: true };\n } else if (isVaultClearState(finalState)) {\n payload = { pipelineStateCleared: true };\n } else if (isUndefined(finalState) || isVaultNoop(finalState)) {\n payload = { noop: true };\n }\n\n if (ctx.operation === OperationTypes.Replace) {\n this.vaultMonitor.endReplace(this.cellKey, VAULT_ORCHESTRATOR, ctx, payload);\n } else {\n this.vaultMonitor.endMerge(this.cellKey, VAULT_ORCHESTRATOR, ctx, payload);\n }\n\n return finalState;\n }\n\n async #safeAsync(fn: () => Promise<FinalState<T>>, ctx: BehaviorContext<T>): Promise<void> {\n try {\n const result = await fn();\n\n this.vaultMonitor.startCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n if (isSignalStop(result)) {\n this.#coreStateBehavior.finalizePipelineVaultStop(ctx);\n } else {\n this.#coreStateBehavior.finalizePipelineState(result, ctx);\n }\n\n await this.#runStateBehaviors(ctx);\n this.vaultMonitor.endCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n this.decisionEngine?.notifySuccess(this.buildControllerCtx(ctx));\n } catch (err) {\n const pipelineError = await this.#runErrorBehaviors(err, ctx);\n\n await this.decisionEngine?.notifyFailure(this.buildControllerCtx(ctx), pipelineError);\n }\n }\n\n async #runUpstreamStage(\n stage: BehaviorType,\n ctx: BehaviorContext<T>,\n current: PipelineUpstreamValue<T>\n ): Promise<PipelineUpstreamValue<T>> {\n let stageBehaviors: BehaviorContract<T>[];\n if (stage === BehaviorTypes.Resolve) {\n stageBehaviors = this.#stageBehaviors.filter((behavior): behavior is ResolveBehaviorContract<T> => {\n return (behavior as ResolveBehaviorContract<T>).resolveType === ctx.resolveType && behavior.type === stage;\n });\n } else {\n stageBehaviors = this.#stageBehaviors.filter((behavior) => {\n return behavior.type === stage;\n });\n }\n\n for (const behavior of stageBehaviors) {\n let next: PipelineUpstreamValue<T>;\n\n try {\n switch (stage) {\n case BehaviorTypes.Resolve:\n if (typeof (behavior as ResolveBehaviorContract<T>).computeResolve === 'function') {\n this.vaultMonitor.startResolve(this.cellKey, behavior.key, ctx);\n\n next = await (behavior as ResolveBehaviorContract<T>).computeResolve(ctx);\n\n if (isDefined(next)) current = isolateValue(next);\n\n this.vaultMonitor.endResolve(this.cellKey, behavior.key, ctx);\n }\n break;\n\n case BehaviorTypes.StepwiseResolve:\n case BehaviorTypes.StepwiseFilter:\n case BehaviorTypes.StepwiseReducer:\n if (typeof (behavior as StepwiseBehaviorContract<T>).evaluateStepwise === 'function') {\n this.vaultMonitor.startStepwise(this.cellKey, behavior.key, ctx);\n\n const safeCurrent = isolateValue(ctx.lastSnapshot.value);\n const safeCandidate = isolateValue(current);\n next = await (behavior as StepwiseBehaviorContract<T>).evaluateStepwise(\n safeCurrent,\n safeCandidate,\n ctx.featureCellKey\n );\n\n this.vaultMonitor.endStepwise(this.cellKey, behavior.key, ctx);\n }\n break;\n\n case BehaviorTypes.Filter:\n if (typeof (behavior as FilterBehaviorContract<T>).applyFilter === 'function') {\n for (const filter of this.#filterFunctions) {\n this.vaultMonitor.startFilter(this.cellKey, behavior.key, ctx);\n const safeCurrent = isolateValue(current);\n\n const nextValue = await (behavior as FilterBehaviorContract<T>).applyFilter(safeCurrent, filter);\n\n this.vaultMonitor.endFilter(this.cellKey, behavior.key, ctx);\n if (isDefined(nextValue)) {\n current = isolateValue(nextValue);\n }\n }\n }\n break;\n\n case BehaviorTypes.CoreBeforeTap:\n if (typeof (behavior as BeforeTapBehaviorContract<T>).applyBeforeTap === 'function') {\n for (const beforeTap of this.#beforeTapCallbacks) {\n this.vaultMonitor.startBeforeTap(this.cellKey, behavior.key, ctx);\n\n const safeCurrent = isolateValue(current);\n\n await (behavior as BeforeTapBehaviorContract<T>).applyBeforeTap(safeCurrent, beforeTap);\n this.vaultMonitor.endBeforeTap(this.cellKey, behavior.key, ctx);\n }\n }\n break;\n\n case BehaviorTypes.Reduce:\n if (typeof (behavior as ReduceBehaviorContract<T>).applyReducer === 'function') {\n if (isUndefined(current) && this.#reducerFunctions.length > 0) {\n throw new Error(\n `[vault] Reducer stage received undefined state in FeatureCell \"${this.cellKey}\", but reducers are registered.`\n );\n }\n\n for (const reducer of this.#reducerFunctions) {\n this.vaultMonitor.startReducer(this.cellKey, behavior.key, ctx);\n\n const safeCurrent = isolateValue(current);\n\n const nextValue = await (behavior as ReduceBehaviorContract<T>).applyReducer(safeCurrent, reducer);\n\n this.vaultMonitor.endReducer(this.cellKey, behavior.key, ctx);\n if (isDefined(nextValue)) {\n current = isolateValue(nextValue);\n }\n }\n }\n break;\n\n case BehaviorTypes.CoreAfterTap:\n if (typeof (behavior as AfterTapBehaviorContract<T>).applyAfterTap === 'function') {\n for (const afterTap of this.#afterTapCallbacks) {\n this.vaultMonitor.startAfterTap(this.cellKey, behavior.key, ctx);\n const safeCurrent = isolateValue(current);\n\n await (behavior as AfterTapBehaviorContract<T>).applyAfterTap(safeCurrent, afterTap);\n this.vaultMonitor.endAfterTap(this.cellKey, behavior.key, ctx);\n }\n }\n break;\n }\n } catch (err) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n throw err;\n }\n\n if (isDefined(next)) current = isolateValue(next);\n }\n\n return current;\n }\n\n async #runInterceptorStage(ctx: BehaviorContext<T>): Promise<undefined | typeof VAULT_STOP> {\n const interceptorBehaviors = this.#stageBehaviors.filter(\n (behavior): behavior is InterceptorBehaviorContract<T> => behavior.type === BehaviorTypes.Interceptor\n );\n\n for (const behavior of interceptorBehaviors) {\n try {\n this.vaultMonitor.startInterceptor(this.cellKey, behavior.key, ctx);\n\n ctx.incoming = isolateValue(ctx.incoming);\n\n const nextIncoming = await behavior.applyInterceptor(ctx);\n\n if (isSignalStop(nextIncoming)) {\n this.vaultMonitor.endInterceptor(this.cellKey, behavior.key, ctx, { pipelinePaused: true });\n return VAULT_STOP;\n }\n\n this.vaultMonitor.endInterceptor(this.cellKey, behavior.key, ctx);\n } catch (err) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n throw err;\n }\n }\n\n return;\n }\n\n #containsOperators(): boolean {\n const operatorBehaviors = this.#stageBehaviors.filter((behavior) => behavior.type === BehaviorTypes.Operator);\n return operatorBehaviors.length > 0;\n }\n\n async #runOperatorStage(\n ctx: BehaviorContext<T>,\n current: PipelineUpstreamValue<T>\n ): Promise<PipelineUpstreamValue<T>> {\n const operatorBehaviors = this.#stageBehaviors.filter(\n (behavior): behavior is OperatorBehaviorContract<T> => behavior.type === BehaviorTypes.Operator\n );\n\n for (const behavior of operatorBehaviors) {\n try {\n this.vaultMonitor.startOperator(this.cellKey, behavior.key, ctx);\n\n const safeCurrent = isolateValue(current);\n const next = await behavior.applyOperator(safeCurrent);\n\n if (isUndefined(next)) {\n // short-circuit pipeline — operator decided to block this write\n this.vaultMonitor.endOperator(this.cellKey, behavior.key, ctx, { noop: true });\n return undefined;\n }\n\n current = isolateValue(next);\n this.vaultMonitor.endOperator(this.cellKey, behavior.key, ctx);\n } catch (err) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n throw err;\n }\n }\n\n return current;\n }\n\n async #runPersistStage(\n stage: BehaviorType,\n ctx: BehaviorContext<T>,\n current: PipelinePersistValue<T>\n ): Promise<PipelinePersistValue<T>> {\n let stageBehaviors: BehaviorContract<T>[];\n stageBehaviors = this.#stageBehaviors.filter((behavior) => behavior.type === stage);\n\n for (const behavior of stageBehaviors) {\n try {\n switch (stage) {\n case BehaviorTypes.Encrypt:\n if (typeof (behavior as EncryptBehaviorContract<T>).encryptState === 'function') {\n this.vaultMonitor.startEncrypt(this.cellKey, behavior.key, ctx);\n const safeCurrent = isolateValue(current);\n\n const nextValue = await (behavior as EncryptBehaviorContract<T>).encryptState(ctx, safeCurrent);\n this.vaultMonitor.endEncrypt(this.cellKey, behavior.key, ctx);\n\n if (isDefined(nextValue)) {\n current = isolateValue(nextValue);\n }\n }\n\n break;\n\n case BehaviorTypes.Persist:\n if (typeof (behavior as PersistBehaviorContract<T>).persistState === 'function') {\n this.vaultMonitor.startPersist(this.cellKey, behavior.key, ctx);\n const safeCurrent = isolateValue(current);\n await (behavior as PersistBehaviorContract<T>).persistState(safeCurrent);\n this.vaultMonitor.endPersist(this.cellKey, behavior.key, ctx);\n }\n break;\n }\n } catch (err) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n throw err;\n }\n }\n\n return current;\n }\n\n #destroyBehaviors(ctx: BehaviorContext<T>): void {\n for (const behavior of this.#behaviors) {\n this.vaultMonitor.startDestroy(this.cellKey, behavior.key, ctx);\n try {\n behavior.destroy?.(ctx);\n this.vaultMonitor.endDestroy(this.cellKey, behavior.key, ctx);\n } catch (err) {\n vaultError(`${behavior.key} destroy() failed`, err);\n this.vaultMonitor.endDestroy(this.cellKey, behavior.key, ctx, { destroyFailed: true });\n }\n }\n }\n\n #resetBehaviors(ctx: BehaviorContext<T>): void {\n for (const behavior of this.#behaviors) {\n this.vaultMonitor.startReset(this.cellKey, behavior.key, ctx);\n try {\n behavior.reset?.(ctx);\n this.vaultMonitor.endReset(this.cellKey, behavior.key, ctx);\n } catch (err) {\n vaultError(`${behavior.key} reset() failed`, err);\n this.vaultMonitor.endReset(this.cellKey, behavior.key, ctx, { resetFailed: true });\n }\n }\n }\n\n async #runStateBehaviors(ctx: BehaviorContext<T>): Promise<void> {\n if (this.#emitStateCallbacks?.length > 0) {\n const lastSnapshotClone = isolateValue(ctx.lastSnapshot);\n this.vaultMonitor.startCoreEmitState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n for (const callback of this.#emitStateCallbacks) {\n await this.#emitStateCallbackBehavior.emitState(lastSnapshotClone, callback);\n }\n this.vaultMonitor.endCoreEmitState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n }\n\n /**\n * Runs the error behaviors in sequence.\n *\n * - Starts from a normalized ResourceError produced by resourceError().\n * - Each behavior gets (rawError, currentResourceError, ctx).\n * - If a behavior returns:\n * • ResourceError → becomes the next currentResourceError\n * • VAULT_NOOP → previous ResourceError is kept\n *\n * Returns void\n */\n async #runErrorBehaviors(rawError: unknown, ctx: BehaviorContext<T>): Promise<VaultErrorShape> {\n let current: VaultErrorShape;\n\n /**\n * The order is\n *\n * Core Error\n * Transforms\n * State\n * Callbacks\n * Global Error Service\n */\n\n // ---- Core error normalization (trusted) ----\n try {\n this.vaultMonitor.startCoreError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n current = await this.#coreErrorBehavior.handleError(rawError, ctx.featureCellKey);\n\n vaultDebug(`${this.cellKey} #runErrorBehaviors starting with base ResourceError: ${JSON.stringify(current)}`);\n } catch (err) {\n vaultError('[vault] Core error normalization failed', err);\n current = createVaultError(rawError, ctx.featureCellKey);\n } finally {\n this.vaultMonitor.endCoreError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n // ---- Error behaviors (untrusted, isolated) ----\n for (const behavior of this.#errorTransformBehaviors) {\n try {\n this.vaultMonitor.startErrorTransform(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n const result = await behavior.transformError(\n isolateValue(rawError),\n isolateValue(current),\n isolateValue(ctx.lastSnapshot)\n );\n\n if (!isVaultNoop(result) && !isNullish(result)) {\n current = result as VaultErrorShape;\n }\n } catch (err) {\n vaultError(`[vault] ErrorBehavior \"${behavior.key}\" threw during error handling`, err);\n } finally {\n this.vaultMonitor.endErrorTransform(this.cellKey, VAULT_ORCHESTRATOR, ctx, current);\n }\n }\n\n // ---- Commit error state (trusted, must run) ----\n try {\n this.vaultMonitor.startCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n await this.#coreStateBehavior.finalizePipelineError(current, ctx);\n await this.#runStateBehaviors(ctx);\n } catch (err) {\n vaultError('[vault] Failed to finalize error state', err);\n } finally {\n this.vaultMonitor.endCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n try {\n this.vaultMonitor.startGlobalError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n await this.privateErrorService.setError(isolateValue(current));\n } catch (err) {\n // istanbul ignore next -- defensive only not testable\n vaultError('[vault] global error service', err);\n } finally {\n this.vaultMonitor.endGlobalError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n // ---- Error callbacks (untrusted, isolated) ----\n if (this.#errorCallbacks?.length > 0) {\n this.vaultMonitor.startCoreCallbackError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n for (const callback of this.#errorCallbacks) {\n try {\n await this.#coreErrorCallbackBehavior.callbackError(\n isolateValue(current),\n isolateValue(ctx.lastSnapshot),\n callback\n );\n } catch (err) {\n vaultError('[vault] Error callback threw during error handling', err);\n }\n }\n\n this.vaultMonitor.endCoreCallbackError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n vaultDebug(`${this.cellKey} #runErrorBehaviors completed with final ResourceError: ${JSON.stringify(current)}`);\n return current;\n }\n\n #getResolveType<TIncoming>(incoming: StateInputType<TIncoming>): ResolveType {\n if (isHttpResourceRef(incoming)) {\n return ResolveTypes.HttpResource;\n } else if (isObservable(incoming)) {\n return ResolveTypes.Observable;\n } else if (isFunction(incoming) || isFunction((incoming as DeferredFactory<T>)?.value)) {\n return ResolveTypes.Promise;\n } else if (isPromise(incoming) || isPromise((incoming as StateInputShape<T>)?.value)) {\n throw new VaultUsagePromiseError();\n } else {\n return ResolveTypes.Value;\n }\n }\n\n async #loadInitialState(ctx: BehaviorContext<T>): Promise<void> {\n const incoming = {\n value: undefined,\n loading: false,\n error: null\n } as StateInputShape<T>;\n\n let value: T | DeferredType<T> | undefined = undefined;\n\n if (isFunction(this.#initialState)) {\n value = this.#initialState;\n } else {\n const persistBehaviors = this.#getPersistedBehaviors();\n\n if (persistBehaviors.length > 0) {\n const persistedInitalValue = await this.#loadInitialPersistedState(ctx, persistBehaviors);\n if (isDefined(persistedInitalValue)) {\n vaultDebug('Persisted data loaded from storage');\n value = persistedInitalValue as T;\n }\n } else if (!isNullish(this.#initialState)) {\n this.vaultMonitor.startSetInitialValue(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n vaultDebug('Initialized data loaded from descriptor.initial');\n\n value = this.#initialState;\n\n this.vaultMonitor.endSetInitialValue(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n }\n\n incoming.value = value;\n\n if (!isNullish(incoming.value)) {\n await this.orchestrate(this.#prepIncomingForOrchestration(ctx, incoming, OperationTypes.Replace));\n } else {\n this.decisionEngine?.notifySuccess(this.buildControllerCtx(ctx));\n }\n }\n\n #getPersistedBehaviors(): PersistBehaviorContract<T>[] {\n return this.#stageBehaviors.filter(\n (behavior) => behavior.type === BehaviorTypes.Persist\n ) as PersistBehaviorContract<T>[];\n }\n\n async #loadInitialPersistedState(\n ctx: BehaviorContext<T>,\n persistBehaviors: PersistBehaviorContract<T>[]\n ): Promise<PipelineUpstreamValue<T>> {\n let loaded: PipelineUpstreamValue<T> = undefined;\n\n for (const behavior of persistBehaviors) {\n try {\n this.vaultMonitor.startLoadPersist(this.cellKey, behavior.key, ctx);\n loaded = await behavior.loadState?.();\n if (isDefined(loaded)) {\n this.vaultMonitor.endLoadPersist(this.cellKey, behavior.key, ctx);\n break;\n } else {\n this.vaultMonitor.endLoadPersist(this.cellKey, behavior.key, ctx, { noop: true });\n }\n // eslint-disable-next-line\n } catch (err: any) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n vaultWarn(`\"[vault] persist.loadState()\" for ${behavior.key} failed with ${err.message}`);\n }\n }\n\n const decryptBehaviors = this.#stageBehaviors.filter((behavior) => {\n return behavior.type === BehaviorTypes.Encrypt;\n }) as unknown as EncryptBehaviorContract<T>[];\n\n if (isDefined(loaded) && decryptBehaviors.length > 0) {\n for (const behavior of decryptBehaviors) {\n try {\n this.vaultMonitor.startDecrypt(this.cellKey, behavior.key, ctx);\n\n const decrypted = await behavior.decryptState?.(ctx, loaded);\n\n if (isDefined(decrypted)) {\n this.vaultMonitor.endDecrypt(this.cellKey, behavior.key, ctx);\n loaded = isolateValue(decrypted);\n } else {\n this.vaultMonitor.endDecrypt(this.cellKey, behavior.key, ctx, { noop: true });\n }\n // eslint-disable-next-line\n } catch (err: any) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n vaultWarn(`\"[vault] encrypt.decryptState()\" for ${behavior.key} failed with ${err.message}`);\n return undefined;\n }\n }\n }\n\n return loaded;\n }\n //#endregion\n}\n","export const ConductorLicenseStatusTypes = {\n Pending: 'pending',\n Approved: 'approved',\n Denied: 'denied'\n} as const;\n\nexport type ConductorLicenseStatusType = (typeof ConductorLicenseStatusTypes)[keyof typeof ConductorLicenseStatusTypes];\n","// projects/core/src/lib/services/vault-controller-lifecycle.service.ts\nimport {\n CONTROLLER_META,\n ControllerClassContext,\n ControllerClassContract,\n ControllerContract,\n ControllerMetaShape,\n ControllerTypes,\n validateControllerKey,\n vaultDebug,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Subject } from 'rxjs';\nimport {\n getLicensePayload,\n hasVaultLicense,\n isAuthorizedKey,\n isBypassLicensing\n} from '../factories/vault/vault-core.function';\nimport { ControllerInitializationClassContract } from '../interfaces/controller/controller-initialization.interface';\nimport { ControllerEventShape } from '../shapes/controller/controller-event.shape';\nimport { ControllerEventTypes } from '../types/controller-event.type';\n\n/**\n * Manages instantiation and validation of controllers for a FeatureCell.\n *\n * This class is responsible for constructing controller instances from\n * declared controller classes, validating required metadata, enforcing\n * uniqueness of controller keys, and wiring controller revote callbacks\n * into the controller event stream.\n */\nexport class ControllerInitializationClass implements ControllerInitializationClassContract {\n /** Tracks whether controller initialization has already occurred. */\n #initialized = false;\n\n /** FeatureCell identifier associated with this initializer. */\n #cellKey: string;\n\n /**\n * Creates a new initializer for a specific FeatureCell.\n *\n * @param cellKey - The unique FeatureCell key.\n */\n constructor(cellKey: string) {\n this.#cellKey = cellKey;\n }\n\n /**\n * Instantiates and validates all controllers declared for a FeatureCell.\n *\n * This method enforces one-time initialization, validates controller\n * metadata and key format, ensures uniqueness of controller keys, and\n * injects a revote callback that emits controller lifecycle events.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param controllerClasses - Controller class definitions to instantiate.\n * @param events$ - Subject used to emit controller lifecycle events.\n * @returns An ordered array of instantiated controller objects.\n */\n initializeControllers<T>(\n controllerClasses: Array<ControllerClassContract<T>>,\n events$: Subject<ControllerEventShape>,\n controllerConfigs: Map<string, unknown>\n ): ControllerContract<T>[] {\n if (this.#initialized)\n throw new Error(\n `[vault] VaultControllerRunner already initialized — cannot reissue core controller ID for feature cell \"${this.#cellKey}\".`\n );\n\n this.#initialized = true;\n\n if (!controllerClasses || controllerClasses.length === 0) return [];\n\n const seenKeys = new Set<string>();\n\n return (\n controllerClasses\n // eslint-disable-next-line\n .map((ControllerClass: any) => {\n let isCritical = false;\n\n try {\n if (typeof ControllerClass !== 'function') return;\n\n const meta = ControllerClass[CONTROLLER_META] as ControllerMetaShape | undefined;\n\n if (!meta) {\n isCritical = true;\n throw new Error(`[vault] Controller \"${ControllerClass.name}\" missing @VaultController metadata.`);\n }\n\n const controllerKey = meta.key;\n const controllerType = meta.type;\n\n if (!controllerKey) {\n isCritical = true;\n throw new Error(`[vault] Controller metadata missing \"key\".`);\n }\n\n if (!hasVaultLicense()) {\n if (!isAuthorizedKey(controllerKey)) {\n vaultDebug(`[vault] Unlicensed controller \"${controllerKey}\" skipped during initialization.`);\n return;\n }\n }\n\n if (!controllerType) {\n isCritical = true;\n throw new Error(`[vault] Controller metadata missing \"type\" for \"${controllerKey}\".`);\n }\n\n let controllerConfig: unknown = undefined;\n\n if (meta.wantsConfig) {\n if (!meta.configKey) {\n isCritical = true;\n throw new Error(`[vault] Controller \"${controllerKey}\" declares wantsConfig but has no configKey.`);\n }\n\n controllerConfig = controllerConfigs.get(meta.configKey);\n }\n\n let licensePayload: unknown = undefined;\n if (meta.needsLicense && !isBypassLicensing()) {\n if (!meta.licenseId) {\n isCritical = true;\n throw new Error(`[vault] Controller \"${controllerKey}\" declares needsLicense but has no licenseId.`);\n }\n\n licensePayload = getLicensePayload(meta.licenseId);\n\n if (licensePayload === undefined) {\n isCritical = true;\n throw new Error(\n `[vault] License \"${meta.licenseId}\" required by controller \"${controllerKey}\" is not registered in Vault config.`\n );\n }\n }\n\n const controllerClassContext = {\n featureCellKey: this.#cellKey,\n requestRevote: (traceId: string) => {\n events$.next({\n traceId,\n type: ControllerEventTypes.Revote\n });\n },\n requestAbort: (traceId: string) => {\n events$.next({\n traceId,\n type: ControllerEventTypes.Abort\n });\n },\n controllerConfig,\n licensePayload\n } as ControllerClassContext;\n\n if (controllerType === ControllerTypes.License) {\n controllerClassContext.licenseDenied = (traceId: string) => {\n events$.next({\n traceId,\n type: ControllerEventTypes.LicenseDenied\n });\n };\n controllerClassContext.licenseApproved = (traceId: string) => {\n events$.next({\n traceId,\n type: ControllerEventTypes.LicenseApproved\n });\n };\n }\n\n const instance = new ControllerClass(controllerKey, controllerClassContext);\n\n if (!instance.key) {\n isCritical = true;\n throw new Error(\n `[vault] Controller missing key for type \"${controllerType}\". Every controller must define a unique \"key\".`\n );\n }\n\n if (!validateControllerKey(instance.key)) {\n isCritical = true;\n throw new Error(\n `[vault] Controller key \"${instance.key}\" not valid format for \"${controllerType}\" controller.`\n );\n }\n\n if (instance.key && seenKeys.has(instance.key)) {\n vaultWarn(`[vault] Skipping duplicate controller with key \"${instance.key}\"`);\n return null;\n }\n\n if (instance.key) seenKeys.add(instance.key);\n\n return instance;\n } catch (err) {\n if (isCritical) {\n throw err;\n }\n\n // eslint-disable-next-line\n vaultWarn(`[vault] Non-critical controller initialization failed: ${(err as any)?.message}`);\n return null;\n }\n })\n .filter((controller): controller is ControllerContract<T> => !!controller)\n );\n }\n}\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: lib > src > conductor > conductor.ts\n// Updated: 2026-04-07 16:29\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport {\n BehaviorContext,\n CONTROLLER_META,\n ControllerClassContract,\n ControllerContext,\n ControllerContract,\n ControllerDecisionShape,\n ControllerMetaShape,\n ControllerTypes,\n createVaultError,\n DecisionOutcomeType,\n DecisionOutcomeTypes,\n DevMode,\n isolateValue,\n isVaultClearState,\n isVaultNoop,\n OperationType,\n OperationTypes,\n StateInputType,\n vaultDebug,\n vaultError\n} from '@sdux-vault/shared';\n\nimport { firstValueFrom, map, Observable, Subject, tap } from 'rxjs';\nimport { ConductorConfig } from '../config/conductor.config';\nimport { VAULT_CONDUCTOR } from '../constants/vault-conductor.constant';\nimport { withCoreAbstainController } from '../controllers/abstain/with-core-abstrain.controller';\nimport { withCoreErrorController } from '../controllers/error/with-core-error.controller';\nimport { withCoreLicenseController } from '../controllers/license/with-core-license.controller';\nimport { DecisionEngine } from '../decision-engine/decision-engine';\nimport { LicensingService } from '../licensing/licensing.service';\nimport { Orchestrator } from '../orchestrator/orchestrator';\nimport { PendingAttemptShape } from '../shapes/conductor/pending-attempt.shape';\nimport { ControllerEventShape } from '../shapes/controller/controller-event.shape';\nimport { ConductorLicenseStatusType, ConductorLicenseStatusTypes } from '../types/conductor-license-status.type';\nimport { ControllerEventType, ControllerEventTypes } from '../types/controller-event.type';\nimport { ControllerInitializationClass } from '../utils/initialize-controller.util';\nimport { assignTraceId } from '../utils/orchestrator.utils';\n\nexport class Conductor<T> extends Orchestrator<T> {\n readonly #attemptQueue: PendingAttemptShape<T>[] = [];\n #controllers: ControllerContract<T>[] = [];\n readonly #events$ = new Subject<ControllerEventShape>();\n #processing = false;\n #isDenyStateForTesting = false;\n #conductorLicenseStatus: ConductorLicenseStatusType = ConductorLicenseStatusTypes.Pending;\n\n #settled$ = new Subject<void>();\n\n constructor(config: ConductorConfig<T>) {\n super(config);\n\n LicensingService<T>().describeFeature({\n featureCellKey: config.cell.key,\n fluentApis: {\n filters: config.filterCallbacks,\n reducers: config.reducerCallbacks,\n beforeTaps: config.beforeTapCallbacks,\n afterTaps: config.afterTapCallbacks,\n emitStateCallbacks: config.emitStateCallbacks,\n errorCallbacks: config.errorCallbacks\n }\n });\n\n if (DevMode.active) {\n // eslint-disable-next-line\n (this as any).vaultSettled = this.#conductorSettled.bind(this);\n }\n\n this.#registerControllers(config);\n\n this.vaultMonitor.conductorLicenseAttempt(this.cellKey, `${this.cellKey}::license`);\n\n this.initializeOrchestrator(config);\n }\n\n initialize(ctx: BehaviorContext<T>): void {\n const initCtx = this.#buildPipelineCtx(ctx, OperationTypes.Initialize, undefined);\n\n this.#enqueueAttempt({\n behaviorCtx: initCtx,\n controllerCtx: this.buildControllerCtx(initCtx),\n options: undefined\n });\n }\n\n //#region public method\n\n conduct(ctx: BehaviorContext<T>, incoming: StateInputType<T>, operation: OperationType, options?: unknown): void {\n const behaviorCtx = this.#buildPipelineCtx(ctx, operation, options);\n\n const preparedIncoming = this.prepareIncoming(behaviorCtx, incoming, operation);\n\n if (isVaultNoop(preparedIncoming) || isVaultClearState(preparedIncoming)) {\n return;\n }\n\n behaviorCtx.incoming = preparedIncoming as StateInputType<T>;\n\n const controllerCtx = this.buildControllerCtx(behaviorCtx);\n this.#enqueueAttempt({ behaviorCtx, controllerCtx, options });\n }\n\n /**\n * Resets pipeline + controller state for this FeatureCell.\n *\n * FeatureCell should call this from its own reset() method.\n */\n reset(ctx: BehaviorContext<T>): void {\n this.vaultMonitor.startReset(this.cellKey, VAULT_CONDUCTOR, ctx);\n\n ctx.traceId = ctx.traceId ?? assignTraceId();\n\n this.#resetConductor();\n this.resetBehaviors(ctx);\n this.#resetControllers(ctx);\n\n // Reset controllers as well.\n this.vaultMonitor.endReset(this.cellKey, VAULT_CONDUCTOR, ctx);\n }\n\n /**\n * Destroys pipeline + controller state for this FeatureCell.\n *\n * FeatureCell should call this from its own destroy() method.\n */\n destroy(ctx: BehaviorContext<T>): void {\n vaultDebug(`${VAULT_CONDUCTOR} - destroy`);\n ctx.traceId = ctx.traceId ?? assignTraceId();\n this.vaultMonitor.startDestroy(this.cellKey, VAULT_CONDUCTOR, ctx);\n\n this.#resetConductor();\n this.destroyBehaviors(ctx);\n this.#destroyControllers(ctx);\n\n // Tear down controllers.\n this.#events$.complete();\n this.vaultMonitor.endDestroy(this.cellKey, VAULT_CONDUCTOR, ctx);\n }\n\n //#endregion\n\n //#region Private Methods\n\n async #processEvent(ctx: BehaviorContext<T>, options?: unknown): Promise<void> {\n if (ctx.operation === OperationTypes.Initialize) {\n await this.initializeFeatureCell(ctx);\n return;\n }\n\n if (ctx.operation === OperationTypes.Replace || ctx.operation === OperationTypes.Merge) {\n await this.orchestrate(ctx, options);\n return;\n }\n\n this.vaultMonitor.runtimeError(\n this.cellKey,\n VAULT_CONDUCTOR,\n ctx,\n new Error(`Unknown operation type: \"${ctx.operation}\"`)\n );\n\n this.#completeCurrentAttempt(ctx);\n }\n\n #enqueueMicrotask(): void {\n queueMicrotask(() => {\n this.#denyAttemptCompleted();\n });\n }\n\n /**\n * Enqueue an attempt and trigger queue processing if idle.\n */\n #enqueueAttempt(pending: PendingAttemptShape<T>): void {\n if (\n this.#conductorLicenseStatus === ConductorLicenseStatusTypes.Pending ||\n this.#conductorLicenseStatus === ConductorLicenseStatusTypes.Approved\n ) {\n this.vaultMonitor.startControllerAttempt(this.cellKey, pending.behaviorCtx.traceId, pending.controllerCtx);\n this.#attemptQueue.push(pending);\n\n if (this.#conductorLicenseStatus === ConductorLicenseStatusTypes.Approved) {\n if (!this.#processing && this.#attemptQueue.length === 1) {\n this.#processQueue();\n } else {\n if (this.#isDenyStateForTesting) {\n this.#enqueueMicrotask();\n }\n }\n } else {\n this.#enqueueMicrotask();\n }\n } else {\n this.#enqueueMicrotask();\n }\n }\n\n #completeCurrentAttempt(ctx: ControllerContext<T> | BehaviorContext<T>): void {\n const head = this.#attemptQueue[0];\n /* istanbul ignore next */\n if (!head || head.finalized) return;\n head.finalized = true;\n\n /**\n * IMPORTANT: Finalization MUST occur inside a microtask.\n *\n * Why?\n * The conductor processes controller outcomes and orchestrator work\n * within the same JavaScript turn. If `notifyFinalize()` runs\n * synchronously here, it can:\n *\n * - Re-enter the pipeline before the current call stack fully drains\n * - Trigger controller/orchestrator side effects in the same tick\n * - Cause double-finalization or out-of-order queue mutation\n * - Break `vaultSettled()` determinism in DevMode\n *\n * By deferring to a microtask:\n *\n * 1. The current pipeline cycle fully drains.\n * 2. All synchronous controller emissions complete.\n * 3. The attempt is finalized in a clean turn boundary.\n * 4. Queue mutation (shift) happens atomically with finalize.\n * 5. `#processQueue()` runs only after processing state resets.\n *\n * DO NOT:\n * - Move `notifyFinalize()` outside this microtask.\n * - Split this into multiple microtasks.\n * - Make queue mutation synchronous.\n *\n * The ordering inside this microtask is intentional:\n *\n * notifyFinalize →\n * shift queue →\n * reset processing flag →\n * signal vault settled →\n * process next attempt\n *\n * This guarantees:\n * - Single active attempt at a time\n * - No reentrancy\n * - Deterministic queue progression\n * - Stable DevMode/test flushing behavior\n */\n queueMicrotask(() => {\n this.decisionEngine.notifyFinalize(ctx);\n this.#attemptQueue.shift();\n this.#processing = false;\n this.#attemptCompleted();\n\n this.#processQueue();\n });\n }\n\n #resetProcessingState(ctx: BehaviorContext<T>, outcome: DecisionOutcomeType | ControllerEventType): void {\n this.vaultMonitor.restartControllerAttempt(this.cellKey, ctx.traceId, ctx, outcome);\n this.#processing = false;\n }\n\n /**\n * Central queue processor:\n * - ensures only one attempt is processed at a time\n * - runs controllers for the active attempt\n * - on Allow → runs Orchestrator\n * - on Reset/other → calls reset() for that context\n * - then continues to the next queued attempt\n */\n async #processQueue(): Promise<void> {\n if (this.#processing) return;\n if (!this.#attemptQueue.length) return;\n\n this.#processing = true;\n const activeAttempt = this.#attemptQueue[0]!;\n\n // istanbul ignore next line - defensive only\n if (!activeAttempt) {\n // istanbul ignore next line - defensive only\n this.#processing = false;\n // istanbul ignore next line - defensive only\n return;\n }\n\n try {\n const outcome = await firstValueFrom(this.#runControllers(activeAttempt));\n\n const pending = this.#attemptQueue[0]!;\n\n if (!pending) {\n this.#processing = false;\n return;\n }\n\n const { behaviorCtx, options } = pending;\n\n let isDeny = false;\n\n switch (outcome) {\n // ───────────────────────────────────────────────\n // ALLOW → orchestrator will run → outcome will later drive CLEAR\n // ───────────────────────────────────────────────\n case DecisionOutcomeTypes.Abstain: {\n vaultDebug(\n `${this.cellKey} DecisionOutcome: \"${DecisionOutcomeTypes.Abstain} received. Process Event dispatched.`\n );\n await this.#processEvent(behaviorCtx, options);\n break;\n }\n\n // ───────────────────────────────────────────────\n // FAIL → request is dead → remove + continue\n // ───────────────────────────────────────────────\n case DecisionOutcomeTypes.Abort: {\n this.controllerOutcomeNotification(DecisionOutcomeTypes.Abort, behaviorCtx);\n this.vaultMonitor.endControllerAttempt(this.cellKey, behaviorCtx.traceId, behaviorCtx, {\n status: outcome\n });\n this.#completeCurrentAttempt(behaviorCtx);\n break;\n }\n\n // ───────────────────────────────────────────────\n // DENY → pipeline blocked → keep attempt at head, do NOT shift\n // ───────────────────────────────────────────────\n case DecisionOutcomeTypes.Deny: {\n // do nothing — wait for external change\n this.#denyAttemptCompleted();\n\n isDeny = true;\n this.#processing = false;\n\n this.vaultMonitor.notifyConductorDeny(this.cellKey, behaviorCtx.traceId, behaviorCtx);\n this.controllerOutcomeNotification(DecisionOutcomeTypes.Deny, behaviorCtx);\n\n break;\n }\n }\n\n if (isDeny) {\n this.#isDenyStateForTesting = true;\n } else {\n this.#isDenyStateForTesting = false;\n return this.#processQueue();\n }\n\n // ───────────────────────────────────────────────\n // ERROR → treat as fail, shift queue, continue\n // ───────────────────────────────────────────────\n\n /*********************************\n * Catastrophic unreachable state — controller pipeline failed outside arbitrator\n * on 2025-12-10 I made the decision to leave it though I'm not a fan of untestable\n * and should be pruned code\n *********************************/\n } catch (err) {\n //istanbul ignore next\n vaultError('[conductor] Unreachable subscription error', err);\n\n //istanbul ignore next\n this.vaultMonitor.conductorCrashed(\n this.cellKey,\n activeAttempt?.controllerCtx.traceId ?? 'unknown',\n activeAttempt?.controllerCtx ?? ({ traceId: 'unknown' } as ControllerContext<T>),\n err\n );\n\n // Try to drop the corrupted request to recover\n //istanbul ignore next\n this.#attemptQueue.shift();\n //istanbul ignore next\n this.#processQueue();\n }\n }\n\n #registerDecisionEngine(): void {\n this.decisionEngine = new DecisionEngine<T>(this.#controllers, this.#events$);\n\n this.#events$.subscribe({\n next: (event: ControllerEventShape) => {\n if (event.type === ControllerEventTypes.LicenseDenied) {\n this.vaultMonitor.conductorLicenseDenied(this.cellKey, event.traceId);\n this.#conductorLicenseStatus = ConductorLicenseStatusTypes.Denied;\n\n const error = new Error(\n `${this.cellKey} Conductor Decision Engine: The FeatureCell received a \"License Denied\". Pipeline is disabled.`\n );\n\n vaultDebug(error.message);\n\n this.privateErrorService.setError(createVaultError(error, this.cellKey));\n\n this.#attemptQueue.length = 0;\n\n return;\n }\n\n if (event.type === ControllerEventTypes.LicenseApproved) {\n this.vaultMonitor.conductorLicenseApproved(this.cellKey, event.traceId);\n this.#conductorLicenseStatus = ConductorLicenseStatusTypes.Approved;\n\n vaultDebug(`${this.cellKey} Conductor Decision Engine: License Approved.`);\n\n this.#processQueue();\n\n return;\n }\n\n const head = this.#attemptQueue[0];\n if (!head) return;\n\n // Defensive guard: with serialized pipeline execution,\n // controller events cannot arrive out of order.\n // This is retained as a safety net against future regressions.\n /* istanbul ignore next */\n if (head.controllerCtx.traceId !== event.traceId) {\n vaultDebug(`The head ctx is not the same as the event. ${head.controllerCtx.traceId} != ${event.traceId}`);\n return;\n }\n\n // For both Success and Fail, this request is DONE from the queue’s POV\n switch (event.type) {\n case ControllerEventTypes.Success: {\n this.vaultMonitor.endControllerAttempt(this.cellKey, head.behaviorCtx.traceId, head.controllerCtx, {\n status: 'success'\n });\n\n this.#completeCurrentAttempt(head.controllerCtx);\n break;\n }\n\n case ControllerEventTypes.Failure: {\n this.vaultMonitor.endControllerAttempt(this.cellKey, head.behaviorCtx.traceId, head.controllerCtx, {\n status: 'failure'\n });\n\n this.#resetProcessingState(head.behaviorCtx, event.type);\n\n break;\n }\n\n case ControllerEventTypes.Abort: {\n this.vaultMonitor.conductorAbort(this.cellKey, event.traceId, head.controllerCtx);\n vaultDebug(\n `${this.cellKey} Conductor Decision Engine: Abort request received for Behavior TraceId: ${head.controllerCtx.traceId}.`\n );\n this.#completeCurrentAttempt(head.controllerCtx);\n\n break;\n }\n\n case ControllerEventTypes.Revote: {\n vaultDebug(\n `${this.cellKey} Conductor Decision Engine: Revote request received for Behavior TraceId: ${head.controllerCtx.traceId}.`\n );\n this.vaultMonitor.conductorRevote(this.cellKey, event.traceId, head.controllerCtx);\n this.#processing = false;\n vaultDebug(\n `${this.cellKey} Conductor Decision Engine: processQueue event dispatched for Behavior TraceId: ${head.controllerCtx.traceId}.`\n );\n this.#processQueue();\n break;\n }\n }\n }\n });\n }\n\n #buildPipelineCtx(ctx: BehaviorContext<T>, operation: OperationType, options: unknown): BehaviorContext<T> {\n const traceId = assignTraceId();\n\n return {\n // shared, live references (DO NOT CLONE)\n destroyed$: ctx.destroyed$,\n reset$: ctx.reset$,\n state$: ctx.state$,\n\n featureCellKey: ctx.featureCellKey,\n state: ctx.state,\n lastSnapshot: ctx.lastSnapshot,\n options: options != null ? isolateValue(options) : options,\n\n // per-attempt immutable values\n traceId,\n operation,\n resolveType: undefined,\n incoming: undefined\n };\n }\n\n #resetConductor() {\n this.#attemptQueue.length = 0;\n this.#processing = false;\n }\n\n #destroyControllers(ctx: BehaviorContext<T>): void {\n for (const controller of this.#controllers) {\n this.vaultMonitor.startDestroy(this.cellKey, controller.key, ctx);\n try {\n controller.destroy?.();\n this.vaultMonitor.endDestroy(this.cellKey, controller.key, ctx);\n } catch (err) {\n vaultError(`${controller.key} destroy() failed`, err);\n this.vaultMonitor.endDestroy(this.cellKey, controller.key, ctx, { destroyFailed: true });\n }\n }\n }\n\n #resetControllers(ctx: BehaviorContext<T>): void {\n for (const controller of this.#controllers) {\n this.vaultMonitor.startReset(this.cellKey, controller.key, ctx);\n try {\n controller.reset?.();\n this.vaultMonitor.endReset(this.cellKey, controller.key, ctx);\n } catch (err) {\n vaultError(`${controller.key} reset() failed`, err);\n this.vaultMonitor.endReset(this.cellKey, controller.key, ctx, { resetFailed: true });\n }\n }\n }\n\n #addDefaultErrorController(controllers: ControllerClassContract<T>[], config: ConductorConfig<T>): void {\n const errorControllers = config.controllers.filter((controllerClass: ControllerClassContract) => {\n return (controllerClass as ControllerClassContract<T>).type === ControllerTypes.Error;\n });\n\n if (errorControllers.length > 1) {\n const names = errorControllers.map((errorController) => errorController.key).join(', ');\n\n throw new Error(\n `SDuX Error: More than one ErrorController was provided. Only one error policy can be active per FeatureCell. Received: ${names}. Fix: Remove additional error controllers or combine them into a single controller.`\n );\n }\n\n if (errorControllers.length === 1) {\n controllers.push(errorControllers[0]);\n } else {\n controllers.unshift(withCoreErrorController);\n }\n }\n\n #filterRestrictedControllers(controllers: ControllerClassContract<T>[]): ControllerClassContract<T>[] {\n return controllers.filter((controller) => {\n if (controller.type === ControllerTypes.License || controller.type === ControllerTypes.CoreAbstain) {\n vaultDebug(\n `${this.cellKey} Conductor: Filtering out controller \"${controller.key}\" of type \"${controller.type}\" as it is reserved for internal use.`\n );\n return false;\n }\n return true;\n });\n }\n\n // ---------------------------------------------------------------------------\n // INTERNAL SCHEDULING\n // ---------------------------------------------------------------------------\n #registerControllers(config: ConductorConfig<T>): void {\n config.controllers = config.controllers ?? [];\n\n const allControllers = this.#filterRestrictedControllers(config.controllers) as ControllerClassContract<T>[];\n\n this.#addDefaultErrorController(allControllers, config);\n\n allControllers.unshift(withCoreLicenseController);\n allControllers.unshift(withCoreAbstainController);\n\n // eslint-disable-next-line\n const controllerMetadata = allControllers.map((controller: any) => {\n const meta = controller[CONTROLLER_META] as ControllerMetaShape;\n\n return {\n key: controller.key,\n type: meta.type,\n critical: meta.critical,\n needsLicense: meta.needsLicense\n };\n });\n\n LicensingService().describeControllers({\n featureCellKey: this.cellKey,\n controllers: controllerMetadata\n });\n\n const controllerInit = new ControllerInitializationClass(config.cell.key);\n this.#controllers = controllerInit.initializeControllers(allControllers, this.#events$, config.behaviorConfigs);\n\n this.#registerDecisionEngine();\n }\n\n /**\n * Run controllers for a single pending attempt and normalize their decision.\n *\n * Returns:\n * - ControllerVotes.Allow\n * - ControllerVotes.Reset\n *\n * All more detailed opinions (Deny/Retry/Buffer/Abstain) are reduced\n * at this layer for now.\n */\n #runControllers(pending: PendingAttemptShape<T>): Observable<DecisionOutcomeType> {\n this.vaultMonitor.startControllerVote(this.cellKey, pending.controllerCtx.traceId, pending.controllerCtx);\n return this.decisionEngine.evaluateAttempt(pending.controllerCtx)?.pipe(\n tap((decision: ControllerDecisionShape) => {\n this.vaultMonitor.endControllerVote(\n this.cellKey,\n pending.controllerCtx.traceId,\n pending.controllerCtx,\n decision\n );\n }),\n map((decision: ControllerDecisionShape) => decision.outcome)\n );\n }\n\n #denyAttemptCompleted(): void {\n if (!DevMode.active) return;\n this.#settled$.next();\n }\n\n // ADD\n #attemptCompleted(): void {\n if (!DevMode.active || this.#attemptQueue.length > 0) return;\n\n queueMicrotask(() => {\n this.#settled$.next();\n });\n }\n\n #conductorSettled(): Promise<void> {\n return firstValueFrom(this.#settled$);\n }\n\n //#endregion\n}\n","/**\n * Canonical identifier used to label FeatureCell-related ownership or origin.\n */\nexport const VAULT_FEATURE_CELL = 'vault-feature-cell';\n","import { BehaviorClassContract, BehaviorTypes } from '@sdux-vault/shared';\nimport { FeatureCellConfig } from '../../config/feature-cell.config';\n\n/**\n * Validates a `FeatureCelldescriptorModel` configuration prior to FeatureCell\n * initialization. This function ensures that the descriptor is structurally\n * correct and that conflicting behaviors are not registered on the same\n * FeatureCell instance.\n *\n * The validation enforces two primary constraints:\n *\n * 1. **Initial State Shape Validation**\n * The `initial` value must represent plain unwrapped data (e.g., `{}`, `[]`,\n * or primitives). Passing a resource-like object containing fields such as\n * `{ loading, data, error }` is not permitted because FeatureCells wrap\n * values internally and would otherwise double-encapsulate resource state.\n *\n * 2. **Encryption Behavior Exclusivity**\n * A FeatureCell may register at most one encryption behavior. Multiple\n * encryption behaviors introduce conflicting state guarantees and are\n * rejected during validation.\n *\n * @typeParam T - The type representing the FeatureCell’s state shape.\n *\n * @param descriptor - The declared FeatureCell descriptor, including key and initial state.\n * @param behaviors - A list of behavior classes registered for this FeatureCell.\n *\n * @throws Error if the initial state contains resource-like fields.\n * @throws Error if more than one encryption behavior is provided.\n */\nexport function featureCellValidation<T>(\n descriptor: FeatureCellConfig<T>,\n behaviors: BehaviorClassContract<T>[] = []\n): void {\n // Prevent incorrect initialization (e.g., passing a resource object)\n if (\n typeof descriptor.initialState === 'object' &&\n descriptor.initialState !== null &&\n // eslint-disable-next-line\n 'data' in (descriptor.initialState as any)\n ) {\n throw new Error(\n `[vault] Invalid FeatureCelldescriptorModel.initial for feature \"${descriptor.key}\". Expected raw data (e.g., [] or {}), but received an object with resource fields { loading, data, error }. Pass plain data to avoid double-wrapping.`\n );\n }\n\n const encryptBehaviors = behaviors.filter((behavior) => behavior.type === BehaviorTypes.Encrypt);\n\n if (encryptBehaviors.length > 1) {\n throw new Error(`[vault] FeatureCell cannot register multiple encryption behaviors.`);\n }\n}\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > factories > feature-cell > feature-cell.builder.ts\n// Updated: 2026-03-02 19:52\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport {\n BehaviorClassContract,\n BehaviorContext,\n CellBuilderContract,\n ControllerClassContract,\n CoreEmitStateCallback,\n DeferredType,\n DevMode,\n FeatureCellBaseShape,\n FilterFunction,\n InterceptorBehaviorClassContract,\n OperationTypes,\n OperatorsBehaviorClassContract,\n ReducerFunction,\n StateEmitSnapshotShape,\n StateInputType,\n StateSnapshotShape,\n TapCallback,\n VaultErrorCallback,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Subject } from 'rxjs';\nimport { Conductor } from '../../conductor/conductor';\nimport { FeatureCellConfig } from '../../config/feature-cell.config';\nimport { FeatureCellInitializeConfig } from '../../config/feature-cell.initialize.config';\nimport { VAULT_FEATURE_CELL } from '../../constants/vault-feature-cell.constant';\nimport { VaultMonitor } from '../../monitor/vault-monitor.service';\nimport { featureCellValidation } from '../../utils/feature-cell/feature-cell-validation.util';\nimport { registerVaultSettled } from '../vault/vault-core.function';\n\nexport abstract class FeatureCellBuilder<T> {\n #cellCorrupt = false;\n #conductor!: Conductor<T>;\n #initialized = false;\n readonly #vaultMonitor = VaultMonitor();\n\n protected cell!: FeatureCellBaseShape<T>;\n\n protected readonly cellKey: string;\n\n protected readonly ctx: BehaviorContext<T>;\n\n protected readonly destroyed$ = new Subject<void>();\n\n protected readonly reset$ = new Subject<void>();\n protected readonly state$ = new Subject<StateEmitSnapshotShape<T>>();\n\n constructor(\n // kept for parity with original API, even if not used directly\n protected readonly featureCellConfiguration: FeatureCellConfig<T>,\n private readonly defaultBehaviors: BehaviorClassContract<T>[],\n protected readonly behaviors: BehaviorClassContract<T>[],\n protected readonly controllers: ControllerClassContract<T>[]\n ) {\n this.cellKey = this.featureCellConfiguration.key;\n\n this.ctx = this.#buildCtx();\n }\n\n #buildCtx(): BehaviorContext<T> {\n const destroyed$ = this.destroyed$.asObservable();\n const state$ = this.state$;\n const reset$ = this.reset$.asObservable();\n\n const lastSnapshot = {\n isLoading: false,\n value: undefined,\n error: null,\n hasValue: false\n } as StateSnapshotShape<T>;\n\n const ctx = {\n destroyed$,\n featureCellKey: this.cellKey,\n reset$,\n state$,\n\n get state(): Readonly<StateSnapshotShape<T>> {\n const snapshot = this.lastSnapshot;\n return {\n isLoading: snapshot.isLoading,\n value: snapshot.value,\n error: snapshot.error,\n hasValue: snapshot.hasValue\n };\n }\n } as BehaviorContext<T>;\n\n // 🔒 CRITICAL: Lock the reference forever\n Object.defineProperty(ctx, 'lastSnapshot', {\n value: lastSnapshot,\n writable: false, // ❗ cannot reassign\n configurable: false, // ❗ cannot redefine\n enumerable: true\n });\n\n return ctx;\n }\n\n // ---------------------------------------------------------------------------\n // INTERNAL LIFECYCLE\n // ---------------------------------------------------------------------------\n\n protected reset(): void {\n this.#vaultMonitor.startReset(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n vaultWarn(`${VAULT_FEATURE_CELL}: reset`);\n\n this.#ensureInitialized();\n this.reset$.next();\n\n this.#conductor?.reset(this.ctx);\n\n this.#vaultMonitor.endReset(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n }\n\n protected destroy(): void {\n this.#vaultMonitor.startDestroy(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n vaultWarn(`${VAULT_FEATURE_CELL}: destroy`);\n\n this.reset$.next();\n this.reset$.complete();\n\n this.#conductor?.destroy(this.ctx);\n\n this.destroyed$.next();\n this.destroyed$.complete();\n\n this.state$.complete();\n\n this.#vaultMonitor.endDestroy(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n }\n\n #ensureInitialized(): void {\n if (this.#cellCorrupt) {\n const errorMessage = `[vault] FeatureCell \"${this.featureCellConfiguration.key}\" encountered a critical initialization failure and is now in a corrupted state. Further use is blocked.`;\n\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, errorMessage);\n throw new Error(errorMessage);\n }\n if (!this.#initialized) {\n const errorMessage = `[vault] FeatureCell \"${this.featureCellConfiguration.key}\" has not been initialized. You must call cell.initialize() before using state methods.`;\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, errorMessage);\n throw new Error(errorMessage);\n }\n }\n\n #initialize(ctx: FeatureCellInitializeConfig<T>): void {\n if (this.#initialized) {\n const errorMessage = `[vault] FeatureCell \"${this.featureCellConfiguration.key}\" already initialized.`;\n\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, errorMessage);\n throw new Error(errorMessage);\n }\n\n try {\n // Register cell + start lifecycle event\n this.#vaultMonitor.registerCell(this.cellKey, this.featureCellConfiguration.insights);\n this.#vaultMonitor.startInitialized(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n\n featureCellValidation(this.featureCellConfiguration, this.behaviors);\n\n // This must proceed the orchestrator instantiation\n this.#initialized = true;\n\n // Orchestrator needs the concrete cell API\n this.#conductor = new Conductor({\n afterTapCallbacks: ctx.afterTapCallbacks,\n beforeTapCallbacks: ctx.beforeTapCallbacks,\n behaviors: this.behaviors,\n behaviorConfigs: ctx.behaviorConfigs,\n cell: this.cell,\n defaultBehaviors: this.defaultBehaviors,\n controllers: this.controllers,\n emitStateCallbacks: ctx.emitStateCallbacks,\n errorCallbacks: ctx.errorCallbacks,\n filterCallbacks: ctx.filterFunctions,\n initialState: ctx.hydrate || this.featureCellConfiguration.initialState,\n interceptors: ctx.interceptors,\n operators: ctx.operators,\n reducerCallbacks: ctx.reducerFunctions\n });\n\n this.#conductor.initialize(this.ctx);\n\n if (DevMode.active) {\n Object.defineProperty(this.cell, 'vaultSettled', {\n enumerable: false,\n configurable: false,\n writable: false,\n // eslint-disable-next-line\n value: () => (this.#conductor as any).vaultSettled()\n });\n\n // eslint-disable-next-line\n registerVaultSettled(this.cellKey, (this.#conductor as any).vaultSettled.bind(this.#conductor));\n }\n\n this.#vaultMonitor.endInitialized(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n } catch (err) {\n this.#cellCorrupt = true;\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, err);\n throw err;\n }\n }\n\n #handleCorruptionError(message: string): void {\n this.#cellCorrupt = true;\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, message);\n throw new Error(message);\n }\n\n protected setup(): CellBuilderContract<T> {\n const afterTapCallbacks: TapCallback<T>[] = [];\n const beforeTapCallbacks: TapCallback<T>[] = [];\n const errorCallbacks: VaultErrorCallback<T>[] = [];\n const filterFunctions: FilterFunction<T>[] = [];\n let hydrate: DeferredType<T>;\n const interceptors: InterceptorBehaviorClassContract<T>[] = [];\n const operators: OperatorsBehaviorClassContract<T>[] = [];\n const reducerFunctions: ReducerFunction<T>[] = [];\n const emitStateCallbacks: CoreEmitStateCallback<T>[] = [];\n const behaviorConfigs = new Map<string, unknown>();\n\n const builder: CellBuilderContract<T> = {\n behaviorConfigs,\n\n afterTaps: (incomingAfterTaps: TapCallback<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"afterTaps\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n if (Array.isArray(incomingAfterTaps)) {\n afterTapCallbacks.push(...incomingAfterTaps);\n }\n return builder;\n },\n beforeTaps: (incomingBeforeTaps: TapCallback<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"beforeTaps\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n if (Array.isArray(incomingBeforeTaps)) {\n beforeTapCallbacks.push(...incomingBeforeTaps);\n }\n return builder;\n },\n emitStates: (incomingEmitStates: CoreEmitStateCallback<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"emitStates\" after initialize(). Configuration must be done before initialization.'\n );\n }\n if (Array.isArray(incomingEmitStates)) {\n emitStateCallbacks.push(...incomingEmitStates);\n }\n return builder;\n },\n errors: (incomingErrors: VaultErrorCallback<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"errors\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n if (Array.isArray(incomingErrors)) {\n errorCallbacks.push(...incomingErrors);\n }\n\n return builder;\n },\n filters: (incomingFilters: FilterFunction<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"filters\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n if (Array.isArray(incomingFilters)) {\n filterFunctions.push(...incomingFilters);\n }\n return builder;\n },\n hydrate: (incoming: DeferredType<T>): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"hydrate\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n hydrate = incoming;\n return builder;\n },\n initialize: () => {\n this.#initialize({\n afterTapCallbacks,\n beforeTapCallbacks,\n behaviorConfigs,\n emitStateCallbacks,\n errorCallbacks,\n filterFunctions,\n hydrate,\n interceptors,\n operators,\n reducerFunctions\n });\n },\n interceptors: (incomingInterceptors: InterceptorBehaviorClassContract<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"interceptors\" after initialize(). Configuration must be done before initialization.'\n );\n }\n if (Array.isArray(incomingInterceptors)) {\n interceptors.push(...incomingInterceptors);\n }\n return builder;\n },\n operators: (incomingOperators: OperatorsBehaviorClassContract<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"operators\" after initialize(). Configuration must be done before initialization.'\n );\n }\n if (Array.isArray(incomingOperators)) {\n operators.push(...incomingOperators);\n }\n return builder;\n },\n\n reducers: (incomingReducers: ReducerFunction<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"reducers\" after initialize(). Configuration must be done before initialization.'\n );\n }\n if (Array.isArray(incomingReducers)) {\n reducerFunctions.push(...incomingReducers);\n }\n return builder;\n }\n };\n\n return builder;\n }\n\n // ---------------------------------------------------------------------------\n // STATE OPERATIONS\n // ---------------------------------------------------------------------------\n\n protected mergeState(incoming: StateInputType<T>, options?: unknown): void {\n this.#ensureInitialized();\n\n return this.#conductor.conduct(this.ctx, incoming, OperationTypes.Merge, options);\n }\n\n protected replaceState(incoming: StateInputType<T>, options?: unknown): void {\n this.#ensureInitialized();\n\n return this.#conductor.conduct(this.ctx, incoming, OperationTypes.Replace, options);\n }\n}\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: projects > engine > src > lib > factories > feature-cell > feature-cell.class.ts\n// Updated: 2026-03-02 19:52\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\nimport { BehaviorClassContract, ControllerClassContract, StateSnapshotShape } from '@sdux-vault/shared';\nimport { FeatureCellConfig } from '../../config/feature-cell.config';\nimport { FeatureCellShape } from '../../shapes/feature-cell/feature-cell.shape';\nimport { FeatureCellBuilder } from './feature-cell.builder';\n\nexport class FeatureCellClass<T> extends FeatureCellBuilder<T> {\n constructor(\n descriptor: FeatureCellConfig<T>,\n defaultBehaviors: BehaviorClassContract<T>[],\n behaviors: BehaviorClassContract<T>[],\n controllers: ControllerClassContract<T>[]\n ) {\n super(descriptor, defaultBehaviors, behaviors, controllers);\n }\n\n build(): FeatureCellShape<T> {\n const builder = this.setup();\n const ctx = this.ctx;\n\n const cell: FeatureCellShape<T> = {\n afterTaps: builder.afterTaps,\n beforeTaps: builder.beforeTaps,\n\n destroy: this.destroy.bind(this),\n destroyed$: this.destroyed$.asObservable(),\n\n errors: builder.errors,\n\n filters: builder.filters,\n\n hydrate: builder.hydrate,\n\n initialize: builder.initialize,\n\n interceptors: builder.interceptors,\n\n key: this.cellKey,\n\n mergeState: this.mergeState.bind(this),\n\n operators: builder.operators,\n\n reducers: builder.reducers,\n\n emitStates: builder.emitStates,\n\n replaceState: this.replaceState.bind(this),\n\n reset$: this.reset$.asObservable(),\n reset: this.reset.bind(this),\n\n state$: this.state$.asObservable(),\n\n get state(): StateSnapshotShape<T> {\n return {\n isLoading: ctx.lastSnapshot.isLoading,\n value: ctx.lastSnapshot.value,\n error: ctx.lastSnapshot.error,\n hasValue: ctx.lastSnapshot.hasValue\n } as StateSnapshotShape<T>;\n }\n };\n\n // Keep a reference for orchestrator creation\n this.cell = cell;\n\n this.behaviors.forEach((behavior: BehaviorClassContract<T>) => {\n behavior?.installFluentApi?.(this.cell, builder.behaviorConfigs);\n });\n\n this.controllers.forEach((controller: ControllerClassContract<T>) => {\n controller?.installFluentApi?.(this.cell, builder.behaviorConfigs);\n });\n\n Object.defineProperty(cell, 'ctx', {\n value: this.ctx,\n enumerable: false,\n writable: false\n });\n\n Object.defineProperty(cell, 'key', {\n value: this.featureCellConfiguration.key,\n enumerable: false,\n writable: false\n });\n\n return cell;\n }\n}\n","import { DevMode } from '@sdux-vault/shared';\nimport { FeatureCellToken } from '../types/feature-cell-token.type';\n\n/**\n * The feature cell tokens map\n */\nconst featureCellTokens = new Map<string, FeatureCellToken>();\n\n/**\n * Tracks whether a FeatureCell token has already been retrieved\n */\nconst featureCellTokenRequested = new Map<string, boolean>();\n\n/**\n * Internal token resolution mechanism used by both createFeatureCellToken()\n * and getFeatureCellToken().\n *\n * Enforces:\n * - unique FeatureCell keys\n * - single retrieval per key (unless dev mode)\n */\nfunction internalFeatureCellToken(key: string, isCreate: boolean): FeatureCellToken {\n // ──────────────────────────────────────────────\n // CREATE MODE\n // ──────────────────────────────────────────────\n if (isCreate) {\n if (featureCellTokens.has(key)) {\n if (!DevMode.active) {\n const existing = featureCellTokens.get(key);\n throw new Error(\n `[vault] Duplicate FeatureCell key detected: \"${key}\". ` +\n `Each FeatureCell must have a unique key. Existing token: \"${existing?.key}\"`\n );\n }\n\n return featureCellTokens.get(key)!;\n }\n\n const token: FeatureCellToken = {\n key\n };\n // const token: FeatureCellToken = { key };\n featureCellTokens.set(key, token);\n return token;\n }\n\n // ──────────────────────────────────────────────\n // RETRIEVE MODE\n // ──────────────────────────────────────────────\n if (!featureCellTokens.has(key)) {\n throw new Error(\n `[vault] FeatureCell token not found for key \"${key}\". You must call provideFeatureCell() before retrieving this FeatureCell.`\n );\n }\n\n if (featureCellTokenRequested.has(key)) {\n if (!DevMode.active) {\n throw new Error(`[vault] FeatureCell \"${key}\" can only be owned by a single consumer.`);\n }\n\n return featureCellTokens.get(key)!;\n }\n\n featureCellTokenRequested.set(key, true);\n return featureCellTokens.get(key)!;\n}\n\n/**\n * Creates a FeatureCell token for the specified key.\n */\nexport function createFeatureCellToken(key: string) {\n return internalFeatureCellToken(key, true);\n}\n\n/**\n * Retrieves the FeatureCell token associated with a key.\n */\nexport function getFeatureCellToken(key: string) {\n return internalFeatureCellToken(key, false);\n}\n\n/**\n * Clears FeatureCell token state for test isolation.\n *\n * This must be called explicitly by test utilities.\n * No framework assumptions are made.\n */\nexport function resetFeatureCellToken(): void {\n // DevMode already gates unsafe behavior\n if (!DevMode.active) return;\n\n featureCellTokens.clear();\n featureCellTokenRequested.clear();\n}\n","// --- AI Model File Path (DO NOT DELETE) ---\n// FilePath: lib > public-api.ts\n// Updated: 2026-03-30 15:42\n//\t Generated by pathcomment [tab] (see .vscode/typescript.code-snippets) or\n//\t cmd+alt+j (see .vscode/keybindings.json)\n// --- END AI MODEL FILE PATH ---\n\n/*\n * This is for version support in dev mode and tracking in the devtools\n */\n\nimport './src/version/version.register';\n\nexport { Conductor } from './src/conductor/conductor';\nexport type { ConductorConfig } from './src/config/conductor.config';\nexport type { FeatureCellConfig } from './src/config/feature-cell.config';\nexport { VAULT_LICENSE_ID } from './src/constants/vault-license-id.constant';\nexport { FeatureCellClass } from './src/factories/feature-cell/feature-cell.class';\nexport { VerifyLicenseToken } from './src/factories/vault/token-validation/verify-license-token.utility';\nexport * from './src/factories/vault/vault-core.function';\nexport { registerFeatureCell, resetVaultForTests } from './src/factories/vault/vault-core.function';\nexport { LicensingAbstract } from './src/licensing/licensing.abstract';\nexport type { VaultStateRef } from './src/references/vault.reference';\nexport type { FeatureCellShape } from './src/shapes/feature-cell/feature-cell.shape';\nexport { createFeatureCellToken, getFeatureCellToken } from './src/tokens/feature-cell-token-registry';\nexport { isPipelineTerminal } from './src/utils/orchestrator.utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["instance","EVENT_POLICY"],"mappings":"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"}
1
+ {"version":3,"file":"sdux-vault-engine.mjs","sources":["../../../lib/src/version/version.register.ts","../../../lib/src/constants/vault-conductor.constant.ts","../../../lib/src/controllers/abstain/with-core-abstrain.controller.ts","../../../lib/src/controllers/error/with-core-error.controller.ts","../../../lib/src/types/license-event.type.ts","../../../lib/src/licensing/licensing.service.ts","../../../lib/src/controllers/license/with-core-license.controller.ts","../../../lib/src/arbitrator/arbitrator.ts","../../../lib/src/types/monitor/vault-monitor-event-category.type.ts","../../../lib/src/types/monitor/vault-monitor-field-rule.type.ts","../../../lib/src/monitor/event-policy/vault-monitor-category-field-policy.constant.ts","../../../lib/src/monitor/event-policy/vault-monitor-event-policy.constant.ts","../../../lib/src/monitor/vault-monitor-shared.state.ts","../../../lib/src/monitor/vault-monitor.helper.ts","../../../lib/src/monitor/vault-monitor.service.ts","../../../lib/src/types/controller-event.type.ts","../../../lib/src/decision-engine/decision-engine.ts","../../../lib/src/constants/vault-orchestrator.constant.ts","../../../lib/src/constants/protected-feature-cell-keys.constant.ts","../../../lib/src/types/vault/vault-registration-license-status.type.ts","../../../lib/src/constants/known-vault-keys.constant.ts","../../../lib/src/constants/vault-license-id.constant.ts","../../../lib/src/factories/vault/vault-core.function.ts","../../../lib/src/utils/initialize-behavior.util.ts","../../../lib/src/utils/orchestrator.utils.ts","../../../lib/src/factories/vault/token-validation/public-keys.ts","../../../lib/src/factories/vault/token-validation/verify-license-token.utility.ts","../../../lib/src/factories/vault/token-validation/utils/verify-license-payload.util.ts","../../../lib/src/licensing/licensing.abstract.ts","../../../lib/src/behaviors/license/with-core-license.behavior.ts","../../../lib/src/orchestrator/orchestrator.ts","../../../lib/src/types/conductor-license-status.type.ts","../../../lib/src/utils/initialize-controller.util.ts","../../../lib/src/conductor/conductor.ts","../../../lib/src/constants/vault-feature-cell.constant.ts","../../../lib/src/utils/feature-cell/feature-cell-validation.util.ts","../../../lib/src/factories/feature-cell/feature-cell.builder.ts","../../../lib/src/factories/feature-cell/feature-cell.class.ts","../../../lib/src/tokens/feature-cell-token-registry.ts","../../../lib/public-api.ts","../../../lib/sdux-vault-engine.ts"],"sourcesContent":["import { registerVersion } from '@sdux-vault/shared';\n\n/** Package name used for version registration. */\nconst SDUX_PACKAGE = '@sdux-vault/engine';\n/** Current package version registered with the Vault runtime. */\nconst SDUX_VERSION = '0.26.0';\n\nregisterVersion(SDUX_PACKAGE, SDUX_VERSION);\n","/**\n * Canonical identifier used to label the Conductor execution context.\n */\nexport const VAULT_CONDUCTOR = 'vault-conductor';\n","import {\n ControllerClassContext,\n ControllerMessageShape,\n ControllerMessageTypes,\n ControllerType,\n ControllerTypes,\n ControllerVote,\n ControllerVotes,\n defineControllerKey,\n OperationTypes,\n VaultController,\n vaultDebug,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Observable, of } from 'rxjs';\n\n/**\n * Core abstain controller responsible for participating in controller vote resolution.\n * This controller observes incoming controller messages and emits a neutral vote without modifying pipeline flow.\n *\n */\n@VaultController({\n type: ControllerTypes.CoreAbstain,\n key: defineControllerKey('Policy', 'CoreAbstain'),\n critical: false\n})\nexport class withCoreAbstainController<T> {\n /**\n * Static controller type identifier used by the orchestrator.\n */\n static readonly type: ControllerType;\n\n /**\n * Static controller key assigned by the decorator.\n */\n static readonly key: string;\n\n /**\n * Indicates whether this controller is critical.\n */\n static readonly critical: boolean;\n\n /**\n * Controller type identifier used for pipeline classification.\n */\n readonly type = withCoreAbstainController.type;\n\n /**\n * Indicates whether this controller instance is critical.\n */\n readonly critical = withCoreAbstainController.critical;\n\n /**\n * Unique controller key identifying this instance.\n */\n readonly key: string;\n\n /** Whether the FeatureCell has completed its initial pipeline cycle. */\n #isInitialized = false;\n\n /** Whether the initialization pipeline cycle failed. */\n #initializationFailed = false;\n\n /**\n * Creates a new core conductor controller instance.\n *\n * @param key Unique controller identifier supplied by the factory.\n * @param controllerCtx Controller context supplying execution metadata.\n */\n constructor(\n key: string,\n readonly controllerCtx: ControllerClassContext\n ) {\n this.key = key;\n }\n\n /**\n * Handles an incoming controller message and emits a controller vote.\n *\n * @param msg Controller message supplied by the orchestrator.\n * @returns Observable emitting a controller vote or no value.\n */\n handleMessage(msg: ControllerMessageShape<T>): Observable<ControllerVote | void> {\n vaultDebug(`${this.key} handleMessage received \"${msg.type}\" for trace \"${msg.traceId}\".`);\n\n switch (msg.type) {\n case ControllerMessageTypes.Attempt: {\n const { ctx } = msg;\n\n if (this.#initializationFailed) {\n return of(ControllerVotes.Abort);\n }\n\n if (ctx.operation === OperationTypes.Initialize) {\n return of(ControllerVotes.Abstain);\n }\n\n return of(this.#isInitialized ? ControllerVotes.Abstain : ControllerVotes.Deny);\n }\n\n case ControllerMessageTypes.Finalize: {\n this.#isInitialized = true;\n\n return of();\n }\n\n case ControllerMessageTypes.Success: {\n this.#isInitialized = true;\n\n return of();\n }\n\n case ControllerMessageTypes.Failure: {\n if (msg.ctx.operation === OperationTypes.Initialize) {\n this.#initializationFailed = true;\n }\n\n return of();\n }\n\n default: {\n return of(ControllerVotes.Abstain);\n }\n }\n }\n\n /**\n * Lifecycle hook invoked when the controller instance is destroyed.\n */\n destroy(): void {\n vaultWarn(`${this.key} - destroy noop`);\n }\n\n /**\n * Lifecycle hook invoked when the controller instance is reset.\n */\n reset(): void {\n vaultWarn(`${this.key} - reset noop`);\n }\n}\n","import {\n ControllerClassContext,\n ControllerMessageShape,\n ControllerMessageTypes,\n ControllerType,\n ControllerTypes,\n ControllerVote,\n ControllerVotes,\n defineControllerKey,\n VaultController,\n vaultDebug,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Observable, of } from 'rxjs';\n\n/**\n * Core error controller responsible for handling failure messages in the\n * controller vote resolution pipeline. This controller requests an abort\n * on failure and abstains from all other message types.\n */\n@VaultController({\n type: ControllerTypes.Error,\n key: defineControllerKey('Policy', 'CoreError'),\n critical: false\n})\nexport class withCoreErrorController<T> {\n /**\n * Static controller type identifier used by the orchestrator.\n */\n static readonly type: ControllerType;\n\n /**\n * Static controller key assigned by the decorator.\n */\n static readonly key: string;\n\n /**\n * Indicates whether this controller is critical.\n */\n static readonly critical: boolean;\n\n /**\n * Controller type identifier used for pipeline classification.\n */\n readonly type = withCoreErrorController.type;\n\n /**\n * Indicates whether this controller instance is critical.\n */\n readonly critical = withCoreErrorController.critical;\n\n /**\n * Unique controller key identifying this instance.\n */\n readonly key: string;\n\n /** Controller class context providing execution metadata. */\n ctx!: ControllerClassContext;\n\n /**\n * Creates a new core conductor controller instance.\n *\n * @param key Unique controller identifier supplied by the factory.\n * @param controllerCtx Controller context supplying execution metadata.\n */\n constructor(\n key: string,\n readonly controllerCtx: ControllerClassContext\n ) {\n this.key = key;\n this.ctx = controllerCtx;\n }\n\n /**\n * Handles an incoming controller message and emits a controller vote.\n *\n * @param msg Controller message supplied by the orchestrator.\n * @returns Observable emitting a controller vote or no value.\n */\n handleMessage(msg: ControllerMessageShape<T>): Observable<ControllerVote | void> {\n vaultDebug(`${this.key} handleMessage received \"${msg.type}\" for trace \"${msg.traceId}\".`);\n\n switch (msg.type) {\n case ControllerMessageTypes.Failure: {\n vaultDebug(`${this.key} ABORT — default failure handler for trace \"${msg.traceId}\"`);\n this.ctx.requestAbort(msg.traceId);\n return of();\n }\n\n default: {\n return of(ControllerVotes.Abstain);\n }\n }\n }\n\n /**\n * Lifecycle hook invoked when the controller instance is destroyed.\n */\n destroy(): void {\n vaultWarn(`${this.key} - destroy noop`);\n }\n\n /**\n * Lifecycle hook invoked when the controller instance is reset.\n */\n reset(): void {\n vaultWarn(`${this.key} - reset noop`);\n }\n}\n","/** Enumeration of license lifecycle event identifiers. */\nexport const LicenseEventTypes = {\n RequireLicense: 'requireLicense',\n\n ValidateLicense: 'validateLicense',\n LicenseStatus: 'licenseStatus',\n\n DescribeFeature: 'describe-feature',\n DescribeBehaviors: 'describe-behaviors',\n DescribeControllers: 'describe-controllers'\n} as const;\n\n/** Union type of all license event values. */\nexport type LicenseEventType = (typeof LicenseEventTypes)[keyof typeof LicenseEventTypes];\n","import { DevMode } from '@sdux-vault/shared';\nimport { Observable, Subject } from 'rxjs';\nimport { LicensingServiceContract } from '../interfaces/licensing/licensing-service.interface';\nimport { LicensingBehaviorEventShape } from '../shapes/licensing/licensing-behavior-event.shape';\nimport { LicensingControllerEvent } from '../shapes/licensing/licensing-controller-event.shape';\nimport { LicensingEventShape } from '../shapes/licensing/licensing-event.shape';\nimport { LicensingFeatureDescriptionEventShape } from '../shapes/licensing/licensing-feature-description-event.shape';\nimport { LicensingValidationShape } from '../shapes/licensing/licensing-validation.shape';\nimport { LicenseEventTypes } from '../types/license-event.type';\n\n/** Cached singleton instance of the licensing service. */\n//eslint-disable-next-line\nlet singleton: LicensingServiceContract<any> | null = null;\n\n/**\n * Initializes the global licensing service singleton.\n *\n * @param events$ - Subject used to emit licensing events.\n * @param validation$ - Observable providing license validation results.\n */\nexport function InitializeLicensingService<T>(\n events$: Subject<LicensingEventShape<T>>,\n validation$: Observable<LicensingValidationShape>\n): void {\n if (singleton) return;\n singleton = new LicensingServiceInstance(events$, validation$);\n}\n\n/**\n * Returns the global licensing service singleton.\n *\n * @returns The initialized licensing service contract.\n */\nexport function LicensingService<T>(): LicensingServiceContract<T> {\n if (!singleton) {\n throw new Error('[vault] LicensingService not initialized.');\n }\n return singleton;\n}\n\n/** Internal implementation of the licensing service contract. */\nclass LicensingServiceInstance<T> implements LicensingServiceContract<T> {\n /**\n * Creates a new licensing service backed by the supplied event streams.\n *\n * @param events$ - Subject used to emit licensing events.\n * @param validation$ - Observable providing license validation results.\n */\n constructor(\n private events$: Subject<LicensingEventShape<T>>,\n private validation$: Observable<LicensingValidationShape>\n ) {}\n\n /**\n * Emits a feature description event for licensing inspection.\n *\n * @param event - Feature description event to emit.\n */\n describeFeature(event: LicensingFeatureDescriptionEventShape<T>): void {\n event.type = LicenseEventTypes.DescribeFeature;\n this.events$.next(event);\n }\n\n /**\n * Emits a behavior description event for licensing inspection.\n *\n * @param event - Behavior description event to emit.\n */\n describeBehaviors(event: LicensingBehaviorEventShape): void {\n event.type = LicenseEventTypes.DescribeBehaviors;\n this.events$.next(event);\n }\n\n /**\n * Emits a controller description event for licensing inspection.\n *\n * @param event - Controller description event to emit.\n */\n describeControllers(event: LicensingControllerEvent): void {\n event.type = LicenseEventTypes.DescribeControllers;\n this.events$.next(event);\n }\n\n /**\n * Requests a license token for a behavior or controller.\n *\n * @param featureCellKey - Key of the FeatureCell requesting the license.\n * @param key - Key of the behavior or controller requiring a license.\n * @returns The generated license token.\n */\n requestLicense(featureCellKey: string, key: string): string {\n if (!key) {\n throw new Error('[vault] Cannot register controller license without a key.');\n }\n\n const licenseToken = this.#generateLicenseToken();\n this.events$.next({\n featureCellKey,\n key,\n licenseToken,\n type: LicenseEventTypes.RequireLicense\n });\n\n return licenseToken;\n }\n\n /**\n * Validates a previously requested license token.\n *\n * @param featureCellKey - Key of the FeatureCell owning the license.\n * @param key - Key of the behavior or controller being validated.\n * @param licenseToken - License token to validate.\n * @param valid - Whether the license is approved.\n */\n validateLicense(featureCellKey: string, key: string, licenseToken: string, valid: boolean): void {\n this.events$.next({\n featureCellKey,\n key,\n licenseToken,\n type: LicenseEventTypes.ValidateLicense,\n valid\n });\n }\n\n /** Generates a random alphanumeric license token. */\n #generateLicenseToken(): string {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n const randomPart = (length: number) =>\n Array.from({ length }, () => chars[Math.floor(Math.random() * chars.length)]).join('');\n\n return `${randomPart(5)}-${randomPart(5)}`;\n }\n\n /**\n * Returns an observable of license validation results.\n *\n * @returns Observable emitting validation outcomes.\n */\n getLicenseValidation$(): Observable<LicensingValidationShape> {\n return this.validation$;\n }\n}\n\n/** Resets the licensing service singleton for test isolation. */\nexport const resetLicensingServiceForTests = (): void => {\n if (!DevMode.active) return;\n singleton = null;\n};\n","import {\n ControllerClassContext,\n ControllerMessageShape,\n ControllerMessageTypes,\n ControllerType,\n ControllerTypes,\n ControllerVote,\n ControllerVotes,\n defineControllerKey,\n VaultController,\n vaultDebug,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { LicensingService } from '../../licensing/licensing.service';\nimport { LicensingValidationShape } from '../../shapes/licensing/licensing-validation.shape';\n\n/**\n * Core license controller that gates pipeline execution based on the\n * licensing service validation result. The controller subscribes to\n * the license validation stream on construction and votes Deny until\n * a license decision arrives, Abstain on approval, or Abort on denial.\n */\n@VaultController({\n type: ControllerTypes.License,\n key: defineControllerKey('Policy', 'CoreLicense'),\n critical: true\n})\nexport class withCoreLicenseController<T> {\n /** Static controller type assigned by the VaultController decorator. */\n static readonly type: ControllerType;\n /** Static controller key assigned by the VaultController decorator. */\n static readonly key: string;\n /** Static critical flag assigned by the VaultController decorator. */\n static readonly critical: boolean;\n\n /** Instance controller type mirrored from the static declaration. */\n readonly type = withCoreLicenseController.type;\n /** Instance critical flag mirrored from the static declaration. */\n readonly critical = withCoreLicenseController.critical;\n /** Unique key identifying this controller instance. */\n readonly key: string;\n\n /** Resolved license approval state: true, false, or null if pending. */\n #licenseApproved: boolean | null = null;\n /** Subscription to the licensing validation stream. */\n #sub?: Subscription;\n\n /**\n * Subscribes to the licensing validation stream and signals approval or denial.\n *\n * @param key - Unique key for this controller instance.\n * @param controllerCtx - Controller class context providing lifecycle hooks.\n */\n constructor(\n key: string,\n readonly controllerCtx: ControllerClassContext\n ) {\n this.key = key;\n\n const featureCellKey = controllerCtx.featureCellKey;\n\n this.#sub = LicensingService()\n .getLicenseValidation$()\n .pipe(filter((licenseEvent: LicensingValidationShape) => licenseEvent.featureCellKey === featureCellKey))\n .subscribe((event) => {\n this.#licenseApproved = event.approved;\n this.#sub?.unsubscribe();\n const traceId = `${featureCellKey}::license`;\n if (event.approved) {\n controllerCtx?.licenseApproved?.(traceId);\n } else {\n controllerCtx?.licenseDenied?.(traceId);\n }\n });\n }\n\n /**\n * Evaluates a controller message and returns a license-based vote.\n *\n * @param msg - The incoming controller message.\n * @returns An observable emitting the controller vote.\n */\n handleMessage(msg: ControllerMessageShape<T>): Observable<ControllerVote | void> {\n vaultDebug(`${this.key} received \"${msg.type}\" for trace \"${msg.traceId}\".`);\n\n switch (msg.type) {\n case ControllerMessageTypes.Attempt: {\n if (this.#licenseApproved) {\n return of(ControllerVotes.Abstain);\n } else if (this.#licenseApproved === null) {\n return of(ControllerVotes.Deny);\n }\n\n // abort\n return of(ControllerVotes.Abort);\n }\n\n default:\n return of();\n }\n }\n\n /** Unsubscribes from the licensing validation stream. */\n destroy(): void {\n this.#sub?.unsubscribe();\n vaultWarn(`${this.key} - destroy unsubscribe`);\n }\n\n /** No-op reset handler for this controller. */\n reset(): void {\n vaultWarn(`${this.key} - reset noop`);\n }\n}\n","import type { ControllerAttemptMessageShape, ControllerContract, ControllerMessageShape } from '@sdux-vault/shared';\n\nimport {\n ControllerDecisionShape,\n ControllerVotes,\n DecisionOutcomeTypes,\n vaultError,\n vaultWarn,\n type ControllerVote\n} from '@sdux-vault/shared';\n\nimport { catchError, forkJoin, map, Observable, of } from 'rxjs';\n\n/**\n * Pure decision engine responsible for aggregating controller votes.\n *\n * This class evaluates controller responses deterministically by normalizing\n * votes, applying priority rules, and producing a single decision outcome\n * without maintaining internal state or execution history.\n */\nexport class Arbitrator<T> {\n /**\n * Evaluates an ATTEMPT message across all provided controllers.\n *\n * Each controller vote is normalized and aggregated using deterministic\n * priority rules to produce exactly one decision outcome.\n *\n * @param controllers - The set of controllers participating in arbitration.\n * @param msg - The ATTEMPT message being evaluated.\n * @returns An observable emitting a single controller decision.\n */\n evaluateAttempt(\n controllers: ControllerContract<T>[],\n msg: ControllerAttemptMessageShape<T>\n ): Observable<ControllerDecisionShape> {\n // No controllers → treat as unanimous abstain → arbitrate\n if (controllers.length === 0) {\n return of(this.arbitrate(msg.traceId, [ControllerVotes.Abstain]));\n }\n\n try {\n const votes$ = controllers.map((controller) =>\n controller.handleMessage(msg).pipe(\n map((v) => v ?? ControllerVotes.Abstain),\n catchError((err) => {\n vaultWarn('[vault:arbitrator] controller threw during attempt:', err);\n return of(ControllerVotes.Deny);\n })\n )\n );\n\n return forkJoin(votes$).pipe(map((votes) => this.arbitrate(msg.traceId, votes)));\n } catch {\n return of(this.arbitrate(msg.traceId, [ControllerVotes.Deny]));\n }\n }\n\n /**\n * Notifies controllers of non-attempt lifecycle messages.\n *\n * These messages are forwarded to controllers for observation only and\n * do not participate in arbitration or decision-making.\n *\n * @param controllers - The controllers to notify.\n * @param msg - The lifecycle message being dispatched.\n * @returns An observable that completes when all notifications finish.\n */\n notify(controllers: ControllerContract<T>[], msg: ControllerMessageShape<T>): Observable<void> {\n if (controllers.length === 0) {\n return of(void 0);\n }\n\n try {\n const streams$ = controllers.map((controller) =>\n controller.handleMessage(msg).pipe(\n map(() => void 0),\n catchError((err) => {\n vaultWarn('[vault:arbitrator] controller threw during notify:', err);\n return of(void 0);\n })\n )\n );\n\n return forkJoin(streams$).pipe(map(() => void 0));\n } catch {\n return of(void 0);\n }\n }\n\n /**\n * Applies priority rules to a set of controller votes.\n *\n * Votes are evaluated in descending priority order to determine the\n * final controller decision for a given trace.\n *\n * @param traceId - The trace identifier associated with the decision.\n * @param votes - The normalized controller votes.\n * @returns The resolved controller decision.\n */\n private arbitrate(traceId: string, votes: ControllerVote[]): ControllerDecisionShape {\n const hasAbort = votes.includes(ControllerVotes.Abort);\n if (hasAbort) {\n return { traceId, outcome: DecisionOutcomeTypes.Abort };\n }\n\n const hasDeny = votes.includes(ControllerVotes.Deny);\n if (hasDeny) {\n return { traceId, outcome: DecisionOutcomeTypes.Deny };\n }\n\n const allAbstain = votes.every((v) => v === ControllerVotes.Abstain);\n if (allAbstain) {\n return { traceId, outcome: DecisionOutcomeTypes.Abstain };\n }\n\n vaultError(`Unknown controller vote detected`, { traceId, votes });\n\n return { traceId, outcome: DecisionOutcomeTypes.Deny };\n }\n}\n","/** Enumeration of monitor event category classifications. */\nexport const VaultMonitorEventCategoryType = {\n Boundary: 'boundary',\n State: 'state',\n Error: 'error'\n} as const;\n\n/** Union type of all monitor event category values. */\nexport type VaultMonitorEventCategoryType =\n (typeof VaultMonitorEventCategoryType)[keyof typeof VaultMonitorEventCategoryType];\n","/** Enumeration of field emission rules for monitor event policies. */\nexport const FieldRuleTypes = {\n Never: 'never',\n Optional: 'optional',\n Required: 'required'\n} as const;\n\n/** Union type of all field rule values. */\nexport type FieldRuleType = (typeof FieldRuleTypes)[keyof typeof FieldRuleTypes];\n","import { VaultMonitorCategoryFieldPolicyShape } from '../../shapes/monitor/vault-monitor-category-field-policy.shape';\nimport { VaultMonitorEventCategoryType } from '../../types/monitor/vault-monitor-event-category.type';\nimport { FieldRuleTypes } from '../../types/monitor/vault-monitor-field-rule.type';\n\n/** Field emission rules indexed by monitor event category. */\nexport const CATEGORY_FIELD_POLICY_CONSTANT: Record<\n VaultMonitorEventCategoryType,\n VaultMonitorCategoryFieldPolicyShape\n> = {\n [VaultMonitorEventCategoryType.Boundary]: {\n state: FieldRuleTypes.Never,\n payload: FieldRuleTypes.Optional,\n error: FieldRuleTypes.Never\n },\n\n [VaultMonitorEventCategoryType.State]: {\n state: FieldRuleTypes.Required,\n payload: FieldRuleTypes.Optional,\n error: FieldRuleTypes.Never\n },\n\n [VaultMonitorEventCategoryType.Error]: {\n state: FieldRuleTypes.Required,\n payload: FieldRuleTypes.Optional,\n error: FieldRuleTypes.Required\n }\n};\n","import { EventPolicyShape } from '../../shapes/monitor/vault-monitor-event-policy.shape';\nimport { VaultMonitorEventCategoryType } from '../../types/monitor/vault-monitor-event-category.type';\n\n/** Maps normalized event names to their monitor event category classification. */\nconst EVENT_POLICY_CONSTANT: Record<string, EventPolicyShape> = {\n // ─────────────────────────────────────────────\n // STATE\n // ─────────────────────────────────────────────\n 'stage:end:core-state': { category: VaultMonitorEventCategoryType.State },\n 'stage:end:core-emit-state': { category: VaultMonitorEventCategoryType.State },\n 'lifecycle:end:merge': { category: VaultMonitorEventCategoryType.State },\n 'lifecycle:end:replace': { category: VaultMonitorEventCategoryType.State },\n 'stage:end:compute-merge': { category: VaultMonitorEventCategoryType.State },\n 'stage:end:reducer': { category: VaultMonitorEventCategoryType.State },\n 'stage:end:resolve': { category: VaultMonitorEventCategoryType.State },\n\n // ─────────────────────────────────────────────\n // ERROR\n // ─────────────────────────────────────────────\n 'lifecycle:notification:failure': { category: VaultMonitorEventCategoryType.Error },\n 'lifecycle:notification:runtime-error': { category: VaultMonitorEventCategoryType.Error },\n 'lifecycle:notification:warn': { category: VaultMonitorEventCategoryType.Error },\n 'lifecycle:notification:fatal': { category: VaultMonitorEventCategoryType.Error },\n\n // ─────────────────────────────────────────────\n // BOUNDARY\n // ─────────────────────────────────────────────\n\n 'conductor:start:abort': { category: VaultMonitorEventCategoryType.Boundary },\n 'conductor:start:deny': { category: VaultMonitorEventCategoryType.Boundary },\n 'conductor:start:revote': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:end:vote': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Conductor\n 'conductor:start:license-approved': { category: VaultMonitorEventCategoryType.Boundary },\n 'conductor:start:license-attempt': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Controller\n 'controller:end:attempt': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:notification:finalize': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:notification:success': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:restart:restart-controller-attempt': {\n category: VaultMonitorEventCategoryType.Boundary\n },\n 'controller:start:attempt': { category: VaultMonitorEventCategoryType.Boundary },\n 'controller:start:vote': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Lifecycle (end)\n 'lifecycle:end:initialized': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Lifecycle (start)\n 'lifecycle:start:core-callback-error': {\n category: VaultMonitorEventCategoryType.Boundary\n },\n 'lifecycle:start:core-error': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:core-state': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:global-error': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:initialized': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:merge': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:start:replace': { category: VaultMonitorEventCategoryType.Boundary },\n\n 'lifecycle:start:error-transform': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:end:error-transform': { category: VaultMonitorEventCategoryType.Boundary },\n\n 'lifecycle:end:core-callback-error': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:end:core-error': { category: VaultMonitorEventCategoryType.Boundary },\n 'lifecycle:end:global-error': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Stage (end)\n 'stage:end:after-tap': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:before-tap': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:encrypt': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:filter': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:load-persist': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:operator': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:end:persist': { category: VaultMonitorEventCategoryType.Boundary },\n\n // Stage (start)\n 'stage:start:after-tap': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:before-tap': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:compute-merge': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:encrypt': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:filter': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:load-persist': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:operator': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:persist': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:reducer': { category: VaultMonitorEventCategoryType.Boundary },\n 'stage:start:resolve': { category: VaultMonitorEventCategoryType.Boundary }\n};\n\nexport { EVENT_POLICY_CONSTANT as EVENT_POLICY };\n","import { InsightConfig } from '@sdux-vault/shared';\n\n/**\n * Holds the singleton VaultMonitorSharedState instance.\n */\nlet instance: VaultMonitorSharedStateInstance | null = null;\n\n/**\n * Returns the global VaultMonitorSharedState singleton instance.\n *\n * @returns The global VaultMonitorSharedState instance.\n */\nexport function VaultMonitorSharedState(): VaultMonitorSharedStateInstance {\n if (!instance) {\n instance = new VaultMonitorSharedStateInstance();\n }\n\n return instance;\n}\n\n/**\n * Mutable shared state consumed by all VaultMonitor instances.\n *\n * This class holds the global insight override and the per-cell\n * insight registry so that every monitor operates on the same\n * canonical state.\n */\nexport class VaultMonitorSharedStateInstance {\n /**\n * Optional global insight definition that overrides per-cell insight\n * configuration for all monitor instances. When set, all monitors use\n * this definition when determining which event fields to emit.\n */\n globalInsightOverride: InsightConfig | null = null;\n\n /**\n * Registry of FeatureCell insight configurations keyed by cell ID.\n *\n * Each entry indicates whether insight is enabled and contains the\n * resolved list of InsightConfig values associated with that FeatureCell.\n */\n cellRegistry = new Map<\n string,\n {\n hasInsight: boolean;\n insights: InsightConfig[];\n }\n >();\n}\n","import {\n defineBehaviorKey,\n DEVTOOLS_AGGREGATE_KEY_CONSTANT,\n DEVTOOLS_LOGGING_KEY_CONSTANT,\n EventShape,\n InsightConfig\n} from '@sdux-vault/shared';\nimport { VaultMonitorEventCategoryType } from '../types/monitor/vault-monitor-event-category.type';\nimport { FieldRuleTypes } from '../types/monitor/vault-monitor-field-rule.type';\nimport { CATEGORY_FIELD_POLICY_CONSTANT } from './event-policy/vault-monitor-category-field-policy.constant';\nimport { EVENT_POLICY } from './event-policy/vault-monitor-event-policy.constant';\nimport { VaultMonitorSharedState } from './vault-monitor-shared.state';\n\n/**\n * Abstract helper base class used by both `VaultMonitor` and\n * `VaultQueueMonitor`.\n *\n * This class centralizes access to shared monitor state and DevMode\n * utilities. All mutable state is delegated to `VaultMonitorSharedState`,\n * ensuring that every monitor instance operates on the same global registry\n * and global insight override.\n *\n * No pipeline behavior is implemented directly here; this class provides\n * shared accessors, helpers, and common metadata required by monitor\n * implementations.\n */\nexport abstract class VaultMonitorHelper {\n /**\n * Shared global monitor state. All cell registry information and\n * global insight overrides are pulled from this injected source.\n */\n protected readonly shared = VaultMonitorSharedState();\n\n /**\n * Behavior key used for DevTools/Telemetry classification in\n * Vault diagnostics. Identifies monitor-related behavior for\n * analytics, devtools, and inspector utilities.\n */\n public readonly key = defineBehaviorKey('DevTools', 'Telemetry');\n\n /**\n * Retrieves the globally-applied insight override, if any.\n *\n * @returns The active global `InsightDefinition`, or `null` if\n * no override is applied.\n */\n protected get globalInsightOverride(): InsightConfig | null {\n return this.shared.globalInsightOverride;\n }\n\n /**\n * Applies a global insight override. This value is shared across all\n * monitors, allowing system-wide inspection behavior injection.\n *\n * @param def - The insight metadata to set as the global override.\n */\n protected set globalInsightOverride(def: InsightConfig | null) {\n this.shared.globalInsightOverride = def;\n }\n\n /**\n * Provides access to the shared FeatureCell registry. This registry\n * tracks monitor metadata about every registered cell, including\n * whether it provides insights and the definitions associated with it.\n *\n * @returns The shared cell registry map.\n */\n protected get cellRegistry() {\n return this.shared.cellRegistry;\n }\n\n /**\n * Registers a FeatureCell into the shared monitor registry.\n * Each entry stores insight awareness and any provided definitions.\n *\n * @param cellKey - The unique FeatureCell identifier.\n * @param insight - Optional `InsightDefinition` describing cell-level\n * insight capabilities.\n */\n public registerCell(cellKey: string, insight?: InsightConfig): void {\n const hasInsight = !!insight;\n\n this.cellRegistry.set(cellKey, {\n hasInsight,\n insights: hasInsight ? [insight!] : []\n });\n }\n\n /**\n * Applies a global insight override shared across all monitors.\n * When set, this overrides cell-specific insight metadata for\n * system-wide inspection behavior.\n *\n * @param definition - The global insight definition to activate.\n */\n public activateGlobalInsights(definition: InsightConfig): void {\n this.globalInsightOverride = definition;\n }\n\n /**\n * Determines whether the given cell key belongs to a Chrome DevTools channel.\n *\n * @param cell - The FeatureCell key to check.\n * @returns True when the cell is a DevTools-internal channel.\n */\n protected isChromeDevTools(cell: string): boolean {\n return cell === DEVTOOLS_LOGGING_KEY_CONSTANT || cell === DEVTOOLS_AGGREGATE_KEY_CONSTANT;\n }\n\n /**\n * Applies field-level emission policy to a pipeline event.\n *\n * @param event - The raw event to filter.\n * @param insight - Optional insight configuration controlling field visibility.\n * @returns The policy-filtered event.\n */\n protected applyPolicy<T>(event: EventShape<T>, insight?: InsightConfig): EventShape<T> {\n const category = EVENT_POLICY[event.name]?.category ?? VaultMonitorEventCategoryType.Boundary;\n\n const policy = CATEGORY_FIELD_POLICY_CONSTANT[category];\n\n const allowState = !!insight?.wantsState;\n const allowPayload = !!insight?.wantsPayload;\n const allowErrors = !!insight?.wantsErrors;\n\n if (!event.source) {\n delete event.source;\n }\n\n // STATE\n if (!allowState || policy.state === FieldRuleTypes.Never) {\n delete event.state;\n }\n\n // PAYLOAD\n if (\n !allowPayload ||\n policy.payload === FieldRuleTypes.Never ||\n (policy.payload === FieldRuleTypes.Optional && event.payload === undefined)\n ) {\n delete event.payload;\n }\n\n // ERROR\n if (!allowErrors || policy.error === FieldRuleTypes.Never) {\n delete event.error;\n } else if (policy.error === FieldRuleTypes.Required) {\n // Optional payload allowed on Error category\n if (!allowPayload || event.payload === undefined) {\n delete event.payload;\n }\n }\n\n return event;\n }\n}\n","import { EventBus } from '@sdux-vault/devtools';\nimport {\n BehaviorContext,\n ControllerContext,\n ControllerDecisionShape,\n DecisionOutcomeType,\n DevMode,\n EventBoundaryTypes,\n EventShape,\n EventTypes,\n StateSnapshotShape,\n VaultErrorShape,\n VaultMonitorContract,\n createVaultError,\n vaultError,\n vaultWarn\n} from '@sdux-vault/shared';\n\nimport { InsightConfig } from '@sdux-vault/shared';\nimport { VaultMonitorEventShape } from '../shapes/monitor/vault-monitor-event-input.shape';\nimport { VaultMonitorHelper } from './vault-monitor.helper';\n\n/**\n * Holds the singleton VaultMonitor instance.\n */\nlet instance: VaultMonitorContract | null = null;\n\n/**\n * Returns the global VaultMonitor singleton instance.\n * This function ensures a single monitor instance is created and reused across the runtime.\n *\n *\n * @returns The global VaultMonitor instance.\n */\nexport function VaultMonitor(): VaultMonitorContract {\n if (!instance) {\n instance = new VaultMonitorInstance();\n }\n\n return instance;\n}\n\n/**\n * Implements the VaultMonitorContract using shared helper functionality.\n * This class provides the concrete singleton implementation backing the VaultMonitor entry point.\n *\n */\nclass VaultMonitorInstance extends VaultMonitorHelper implements VaultMonitorContract {\n /**\n * Event bus used to emit structured pipeline events to DevTools.\n * This bus is consumed by the ngSDuX Chrome extension and internal\n * development utilities.\n */\n #eventBus = EventBus();\n\n /**\n * Creates a new VaultMonitor instance and exposes it globally for\n * DevTools integration. The monitor is attached to `window.sdux`\n * so that browser extensions can observe all emitted events.\n */\n constructor() {\n super();\n // This is for the chrome plugin\n window.sdux ??= {};\n window.sdux.vaultMonitorInstance = this;\n }\n\n /**\n * Maps a BehaviorContext into a StateSnapshot suitable for DevTools.\n *\n * @param ctx - Immutable behavior context provided by the orchestrator.\n * @returns A standardized StateSnapshot.\n */\n #toSnapshot<T>(ctx: Readonly<BehaviorContext<T> | ControllerContext<T>>): StateSnapshotShape<T> {\n // const src: any = ctx.incoming ?? ctx.state ?? {};\n const src: StateSnapshotShape<T> =\n (ctx as ControllerContext<T>)?.snapshot ?? (ctx as BehaviorContext<T>)?.state ?? {};\n\n return {\n isLoading: src.isLoading ?? false,\n value: src.value ?? undefined,\n error: src.error ?? null,\n hasValue: src.hasValue ?? !!src.value\n };\n }\n\n /** Emits a startAfterTap event. */\n startAfterTap<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'after-tap';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endAfterTap event with optional payload. */\n endAfterTap<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'after-tap';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startBeforeTap event. */\n startBeforeTap<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'before-tap';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endBeforeTap event with optional payload. */\n endBeforeTap<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'before-tap';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startClearPersist event. */\n startClearPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'clear-persist';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endClearPersist event. */\n endClearPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'clear-persist';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startComputeMerge event. */\n startComputeMerge<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'compute-merge';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endComputeMerge event. */\n endComputeMerge<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'compute-merge';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a notifyConductorDeny event. */\n notifyConductorDeny<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'deny';\n this.#emitEventV2ConductorNotification({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a conductorCrashed event. */\n conductorCrashed<T>(cell: string, behaviorKey: string, ctx: Readonly<ControllerContext<T>>, error: unknown) {\n const errorMessage = createVaultError(error, cell);\n const name = 'fatal';\n vaultError(cell, behaviorKey, errorMessage);\n\n this.#emitEventV2LifecycleNotification({\n cell,\n behaviorKey,\n name,\n ctx,\n payload: {\n message:\n 'This has proven to be untested code in unit tests. So you win some type of prize. Please create a github issues and share your amazing gift to bring down a systm.'\n },\n error: errorMessage\n });\n }\n\n /** Emits a conductorRevote event. */\n conductorRevote<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T> | ControllerContext<T>>) {\n const name = 'revote';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a conductorAbort event. */\n conductorAbort<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T> | ControllerContext<T>>) {\n const name = 'abort';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a conductorAttempt event. */\n conductorLicenseAttempt<T>(cell: string, featureCellKey: string) {\n const name = 'license-attempt';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey: featureCellKey, name, ctx: {} as BehaviorContext<T> });\n }\n\n /** Emits a conductorApproved event. */\n conductorLicenseApproved<T>(cell: string, featureCellKey: string) {\n const name = 'license-approved';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey: featureCellKey, name, ctx: {} as BehaviorContext<T> });\n }\n\n /** Emits a conductorDenied event. */\n conductorLicenseDenied<T>(cell: string, featureCellKey: string) {\n const name = 'license-denied';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey: featureCellKey, name, ctx: {} as BehaviorContext<T> });\n }\n\n /** Emits a startControllerAttempt event. */\n startControllerAttempt<T>(cell: string, behaviorKey: string, ctx: Readonly<ControllerContext<T>>) {\n const name = 'attempt';\n this.#emitEventV2ControllerStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a endControllerAttempt event. */\n endControllerAttempt<T>(\n cell: string,\n behaviorKey: string,\n ctx: Readonly<BehaviorContext<T> | ControllerContext<T>>,\n payload: unknown\n ) {\n const name = 'attempt';\n this.#emitEventV2ControllerEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a restartControllerAttempt event. */\n restartControllerAttempt<T>(\n cell: string,\n behaviorKey: string,\n ctx: Readonly<BehaviorContext<T>>,\n payload: DecisionOutcomeType\n ) {\n const name = 'restart-attempt';\n this.#emitEventV2ControllerNotification({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a controllerFailure event. */\n\n controllerFailure<T>(behaviorKey: string, ctx: Readonly<ControllerContext<T>>, error: unknown) {\n const errorMessage = createVaultError(error, behaviorKey);\n const name = 'failure';\n this.#emitEventV2LifecycleNotification({ cell: ctx.featureCellKey, behaviorKey, name, ctx, error: errorMessage });\n }\n\n /** Emits a controllerFinalize event. */\n controllerFinalize<T>(behaviorKey: string, ctx: Readonly<ControllerContext<T> | BehaviorContext<T>>) {\n const name = 'finalize';\n this.#emitEventV2LifecycleNotification({ cell: ctx.featureCellKey, behaviorKey, name, ctx });\n }\n\n /** Emits a controllerSuccess event. */\n controllerSuccess<T>(behaviorKey: string, ctx: Readonly<ControllerContext<T>>) {\n const name = 'success';\n this.#emitEventV2LifecycleNotification({ cell: ctx.featureCellKey, behaviorKey, name, ctx });\n }\n\n /** Emits a startControllerVote event. */\n startControllerVote<T>(cell: string, behaviorKey: string, ctx: Readonly<ControllerContext<T>>) {\n const name = 'vote';\n this.#emitEventV2ControllerStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a endControllerVote event. */\n endControllerVote<T>(\n cell: string,\n behaviorKey: string,\n ctx: Readonly<ControllerContext<T>>,\n payload: ControllerDecisionShape\n ) {\n const name = 'vote';\n this.#emitEventV2ControllerEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startCallbackError event. */\n startCoreCallbackError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-callback-error';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endCoreCallbackError event. */\n endCoreCallbackError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-callback-error';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startStatEmit event. */\n startCoreEmitState<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-emit-state';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endCoreEmitState event. */\n endCoreEmitState<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-emit-state';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startError event. */\n startCoreError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-error';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endCoreError event. */\n endCoreError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-error';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startState event. */\n startCoreState<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-state';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endCoreState event. */\n endCoreState<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'core-state';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startDecrypt event. */\n startDecrypt<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'decrypt';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endDecrypt event with optional payload. */\n endDecrypt<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'decrypt';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startDestroy event. */\n startDestroy<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'destroy';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endDestroy event. */\n endDestroy<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown): void {\n const name = 'destroy';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startEncrypt event. */\n startEncrypt<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'encrypt';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endEncrypt event. */\n endEncrypt<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'encrypt';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /**\n * Emits an error event. Errors are logged and sent to DevTools\n * depending on configured insight preferences.\n *\n * @param error - Raw error thrown by pipeline stage.\n */\n runtimeError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, error: unknown): void {\n const errorMessage = createVaultError(error, cell);\n vaultError(cell, behaviorKey, errorMessage);\n const name = 'runtime-error';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey, name, ctx, error: errorMessage });\n }\n\n /** Emits a startError event. */\n startErrorTransform<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'error-transform';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endError event. */\n endErrorTransform<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload: VaultErrorShape) {\n const name = 'error-transform';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startFilter event. */\n startFilter<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'filter';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endFilter event. */\n endFilter<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'filter';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startGlobalError event. */\n startGlobalError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'global-error';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endGlobalError event. */\n endGlobalError<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'global-error';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a ingressSubscribed event. */\n ingressSubscribed<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, source: string): void {\n const name = 'ingress-subscribed';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx, source });\n }\n\n /** Emits an ingressCompleted event. */\n ingressCompleted<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, source: string): void {\n const name = 'ingress-completed';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, source });\n }\n\n /** Emits a startInitialized event. */\n startInitialized<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'initialized';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endInitialized event. */\n endInitialized<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'initialized';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startInterceptor event. */\n startInterceptor<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'interceptor';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endInterceptor event with optional payload. */\n endInterceptor<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'interceptor';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startLoadPersist event. */\n startLoadPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'load-persist';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endLoadPersist event with optional payload. */\n endLoadPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n const name = 'load-persist';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startMerge event for DevTools inspection. */\n startMerge<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'merge';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endMerge event with an optional payload. */\n endMerge<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown): void {\n const name = 'merge';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startOperator event. */\n startOperator<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n this.#emitEventV2StageStart({\n cell,\n behaviorKey,\n name: 'operator',\n ctx\n });\n }\n\n /** Emits an endOperator event with optional payload. */\n endOperator<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown) {\n this.#emitEventV2StageEnd({\n cell,\n behaviorKey,\n name: 'operator',\n ctx,\n payload\n });\n }\n\n /** Emits a startPersist event. */\n startPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'persist';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endPersist event. */\n endPersist<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>) {\n const name = 'persist';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startReducer event. */\n startReducer<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n this.#emitEventV2StageStart({\n cell,\n behaviorKey,\n name: 'reducer',\n ctx\n });\n }\n\n /** Emits an endReducer event. */\n endReducer<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n this.#emitEventV2StageEnd({\n cell,\n behaviorKey,\n name: 'reducer',\n ctx\n });\n }\n\n /** Emits a startReplace event for DevTools inspection. */\n startReplace<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'replace';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endReplace event with an optional payload. */\n endReplace<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown): void {\n const name = 'replace';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startReset event. */\n startReset<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'reset';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endReset event. */\n endReset<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, payload?: unknown): void {\n const name = 'reset';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx, payload });\n }\n\n /** Emits a startResolve event. */\n startResolve<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'resolve';\n this.#emitEventV2StageStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endResolve event. */\n endResolve<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'resolve';\n this.#emitEventV2StageEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startSetInitialValue event. */\n startSetInitialValue<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'set-initial-value';\n this.#emitEventV2LifecycleStart({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits an endSetInitialValue event. */\n endSetInitialValue<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'set-initial-value';\n this.#emitEventV2LifecycleEnd({ cell, behaviorKey, name, ctx });\n }\n\n /** Emits a startStepwise event. */\n startStepwise<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'stepwise';\n this.#emitEventV2StageStart({\n cell,\n behaviorKey,\n name,\n ctx\n });\n }\n\n /** Emits an endStepwise event. */\n endStepwise<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>): void {\n const name = 'stepwise';\n this.#emitEventV2StageEnd({\n cell,\n behaviorKey,\n name,\n ctx\n });\n }\n\n /**\n * Emits a warning event to DevTools and console output.\n *\n * @param message - Warning description.\n */\n warn<T>(cell: string, behaviorKey: string, ctx: Readonly<BehaviorContext<T>>, message: string): void {\n const errorMessage = createVaultError(message, cell);\n vaultWarn(cell, behaviorKey, errorMessage);\n const name = 'warn';\n this.#emitEventV2LifecycleNotification({ cell, behaviorKey, name, ctx, error: errorMessage });\n }\n\n /** Prepends event type and boundary to the event name. */\n #buildEventName<T>(eventInput: VaultMonitorEventShape<T>): VaultMonitorEventShape<T> {\n eventInput.name = `${eventInput.type}:${eventInput.boundary}:${eventInput.name}`;\n return eventInput;\n }\n\n /** Emits a stage-start monitoring event. */\n #emitEventV2StageStart<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Stage;\n eventInput.boundary = EventBoundaryTypes.Start;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /** Emits a stage-end monitoring event. */\n #emitEventV2StageEnd<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Stage;\n eventInput.boundary = EventBoundaryTypes.End;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /** Emits a lifecycle-start monitoring event. */\n #emitEventV2LifecycleStart<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Lifecycle;\n eventInput.boundary = EventBoundaryTypes.Start;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /** Emits a lifecycle-end monitoring event. */\n #emitEventV2LifecycleEnd<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Lifecycle;\n eventInput.boundary = EventBoundaryTypes.End;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /** Emits a lifecycle-notification monitoring event. */\n #emitEventV2LifecycleNotification<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Lifecycle;\n eventInput.boundary = EventBoundaryTypes.Notification;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /** Emits a conductor-notification monitoring event. */\n #emitEventV2ConductorNotification<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Conductor;\n eventInput.boundary = EventBoundaryTypes.Notification;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /** Emits a controller-start monitoring event. */\n #emitEventV2ControllerStart<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Controller;\n eventInput.boundary = EventBoundaryTypes.Start;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /** Emits a controller-end monitoring event. */\n #emitEventV2ControllerEnd<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Controller;\n eventInput.boundary = EventBoundaryTypes.End;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /** Emits a controller-notification monitoring event. */\n #emitEventV2ControllerNotification<T>(eventInput: VaultMonitorEventShape<T>): void {\n eventInput.type = EventTypes.Controller;\n eventInput.boundary = EventBoundaryTypes.Notification;\n this.#emitEventV2(this.#buildEventName(eventInput));\n }\n\n /**\n * Emits a normalized monitoring event using a structured event input object.\n *\n * @param eventInput Aggregated monitoring event input containing context, payload, and metadata.\n */\n #emitEventV2<T>(eventInput: VaultMonitorEventShape<T>): void {\n const { cell, ctx, name, behaviorKey, source, error, payload, type, boundary } = eventInput;\n if (this.isChromeDevTools(cell) || !DevMode.active) return;\n\n let insight: InsightConfig;\n\n if (this.globalInsightOverride) {\n insight = this.globalInsightOverride;\n } else {\n const config = this.cellRegistry.get(cell);\n if (!config || !config.hasInsight) return;\n insight = config.insights[0];\n }\n\n const event: EventShape = {\n id: crypto.randomUUID(),\n cell,\n behaviorKey,\n name,\n timestamp: Date.now(),\n state: this.#toSnapshot(ctx as Readonly<BehaviorContext<T>>),\n type:\n type ??\n /* istanbul ignore next -- defensive invariant */\n EventTypes.Unknown,\n boundary:\n boundary ??\n /* istanbul ignore next -- defensive invariant */\n EventBoundaryTypes.Unknown,\n payload,\n error,\n source\n };\n\n if (ctx.traceId) {\n event.traceId = ctx.traceId;\n }\n\n this.#eventBus.nextPipeline(this.applyPolicy(event, insight));\n }\n}\n\n// If you’d like, I can also show you one tiny addition to your EventBus that would make Chrome extensions and external DevTools integration dramatically easier (like 4 lines of code). It would fit perfectly with the architecture you already wrote.\n","/**\n * Defines the set of supported controller event type identifiers.\n * This constant provides the canonical string values used to classify controller event outcomes.\n */\nexport const ControllerEventTypes = {\n /**\n * Indicates that the controller requested an abort to terminate now.\n */\n Abort: 'abort',\n\n /**\n * Indicates that the controller execution resulted in a failure.\n */\n Failure: 'failure',\n\n /**\n * Indicates that the license controller approved the FeatureCell for operation.\n */\n LicenseApproved: 'licenseApproved',\n\n /**\n * Indicates that the license controller denied the FeatureCell for operation.\n */\n LicenseDenied: 'licenseDenied',\n\n /**\n * Indicates that the controller requested a revote.\n */\n Revote: 'revote',\n\n /**\n * Indicates that the controller execution completed successfully.\n */\n Success: 'success'\n} as const;\n\n/**\n * Represents the union of all valid controller event type values.\n * This type constrains controller events to the supported identifiers defined by the event type registry.\n *\n */\nexport type ControllerEventType = (typeof ControllerEventTypes)[keyof typeof ControllerEventTypes];\n","import { Subject } from 'rxjs';\n\nimport type {\n ControllerAttemptMessageShape,\n ControllerContract,\n ControllerFailMessageShape,\n ControllerFinalizeMessageShape,\n ControllerSuccessMessageShape,\n VaultErrorShape\n} from '@sdux-vault/shared';\nimport { BehaviorContext, ControllerContext, ControllerMessageTypes } from '@sdux-vault/shared';\nimport { Arbitrator } from '../arbitrator/arbitrator';\nimport { VaultMonitor } from '../monitor/vault-monitor.service';\nimport { ControllerEventShape } from '../shapes/controller/controller-event.shape';\nimport { ControllerEventTypes } from '../types/controller-event.type';\n\n/**\n * Coordinates controller arbitration and lifecycle notifications.\n *\n * This class mediates between pipeline execution and registered controllers\n * by delegating vote aggregation to the Arbitrator and emitting controller\n * lifecycle events for monitoring and diagnostics.\n */\nexport class DecisionEngine<T> {\n /** Arbitrator responsible for aggregating controller votes. */\n readonly #arbitrator = new Arbitrator<T>();\n /** Vault monitor instance used to emit controller lifecycle events. */\n readonly #vaultMonitor = VaultMonitor();\n\n /**\n * Creates a new decision engine instance.\n *\n * @param controllers - The controllers participating in pipeline decisions.\n * @param events$ - Subject used to emit controller lifecycle events.\n */\n constructor(\n private readonly controllers: ControllerContract<T>[],\n private readonly events$: Subject<ControllerEventShape>\n ) {}\n\n /**\n * Evaluates whether a pipeline execution attempt is permitted.\n *\n * @param ctx - The controller context for the current pipeline attempt.\n * @returns An observable emitting the aggregated controller decision.\n */\n evaluateAttempt(ctx: ControllerContext<T>) {\n const msg: ControllerAttemptMessageShape<T> = {\n type: ControllerMessageTypes.Attempt,\n traceId: ctx.traceId!,\n ctx\n };\n\n return this.#arbitrator.evaluateAttempt(this.controllers, msg);\n }\n\n /**\n * Notifies controllers that a pipeline execution completed successfully.\n *\n * @param ctx - The controller context associated with the successful run.\n */\n notifySuccess(ctx: ControllerContext<T>): void {\n if (!this.controllers.length) return;\n\n const msg: ControllerSuccessMessageShape<T> = {\n type: ControllerMessageTypes.Success,\n traceId: ctx.traceId!,\n ctx\n };\n\n this.#vaultMonitor.controllerSuccess('decision-engine', ctx);\n\n this.#arbitrator.notify(this.controllers, msg).subscribe({\n complete: () => {\n if (!this.events$.closed) {\n this.events$.next({\n traceId: ctx.traceId,\n type: ControllerEventTypes.Success\n });\n }\n }\n });\n }\n\n /**\n * Notifies controllers that a pipeline execution failed.\n *\n * @param ctx - The controller context associated with the failure.\n * @param error - The error that caused the pipeline to fail.\n */\n notifyFailure(ctx: ControllerContext<T>, error: VaultErrorShape | unknown): void {\n if (!this.controllers.length) return;\n\n const msg: ControllerFailMessageShape<T> = {\n type: ControllerMessageTypes.Failure,\n traceId: ctx.traceId!,\n ctx,\n error\n };\n\n this.#vaultMonitor.controllerFailure('decision-engine', ctx, error);\n\n this.#arbitrator.notify(this.controllers, msg).subscribe({\n complete: () => {\n if (!this.events$.closed) {\n this.events$.next({\n traceId: ctx.traceId,\n type: ControllerEventTypes.Failure\n });\n }\n }\n });\n }\n\n /**\n * Notifies controllers that a pipeline trace has finalized.\n *\n * @param ctx - The context associated with the finalized pipeline trace.\n */\n notifyFinalize(ctx: ControllerContext<T> | BehaviorContext<T>): void {\n if (!this.controllers.length) return;\n\n const msg: ControllerFinalizeMessageShape = {\n type: ControllerMessageTypes.Finalize,\n traceId: ctx.traceId\n };\n\n this.#vaultMonitor.controllerFinalize('decision-engine', ctx);\n\n this.#arbitrator.notify(this.controllers, msg).subscribe();\n }\n}\n","/**\n * Canonical identifier used to label the Orchestrator execution context.\n */\nexport const VAULT_ORCHESTRATOR = 'vault-orchestrator';\n","/**\n * Set of reserved FeatureCell API keys that behaviors are not allowed to\n * override through `extendCellAPI()`.\n *\n * These keys represent core lifecycle operations, pipeline configuration\n * methods, state mutation entry points, source adapters, tap-stage hooks,\n * identity properties, and other protected extensions used by the\n * FeatureCell runtime. Any attempt by a behavior to redefine one of these\n * keys will result in a runtime error to preserve API integrity.\n *\n * This list ensures that behaviors cannot replace, shadow, or mutate\n * critical functionality required for correct operation of the vault,\n * pipeline builder, state transitions, or devtools visibility.\n */\nexport const PROTECTED_FEATURE_CELL_KEYS = new Set<string>([\n // Core lifecycle\n 'initialize',\n 'destroy',\n 'destroyed$',\n 'reset',\n 'reset$',\n\n // Pipeline configurators\n 'reducers',\n 'operators',\n 'filters',\n 'interceptors',\n\n // State mutation\n 'mergeState',\n 'replaceState',\n\n // Tap stages\n 'beforeTaps',\n 'afterTaps',\n\n // Identity\n 'key',\n\n // State container\n 'state',\n\n // Other keys\n 'cache',\n 'persist',\n 'encrypt',\n 'beforeTap',\n 'afterTap',\n 'hydrate'\n]);\n","/** Enumeration of FeatureCell registration license validation statuses. */\nexport const VaultRegistrationLicenseStatusTypes = {\n NotRequired: 'not-required',\n Pending: 'pending',\n Revoked: 'revoked',\n Timeout: 'timeout',\n Valid: 'valid'\n} as const;\n\n/** Union type of all registration license status values. */\nexport type VaultRegistrationLicenseStatusType =\n (typeof VaultRegistrationLicenseStatusTypes)[keyof typeof VaultRegistrationLicenseStatusTypes];\n","/**\n * Set of all known behavior and controller keys shipped with the core,\n * addon, and engine packages. Keys in this set are always permitted\n * during behavior and controller initialization regardless of license\n * status.\n *\n * Any key not present in this set is treated as a custom extension and\n * requires a valid Vault license to be registered.\n *\n * Entries follow the canonical key format produced by\n * `defineBehaviorKey()` and `defineControllerKey()`:\n *\n * `SDUX::Behavior::<Domain>::<Name>`\n * `SDUX::Controller::<Domain>::<Name>`\n */\nexport const KNOWN_VAULT_KEYS = new Set<string>([\n // ---------------------------------------------------------------------------\n // Core Behaviors (libs/core)\n // ---------------------------------------------------------------------------\n 'SDUX::Behavior::Core::AfterTap',\n 'SDUX::Behavior::Core::ArrayMerge',\n 'SDUX::Behavior::Core::BeforeTap',\n 'SDUX::Behavior::Core::EmitState',\n 'SDUX::Behavior::Core::Error',\n 'SDUX::Behavior::Core::ErrorCallback',\n 'SDUX::Behavior::Core::Filter',\n 'SDUX::Behavior::Core::FromObservable',\n 'SDUX::Behavior::Core::FromPromise',\n 'SDUX::Behavior::Core::FromStream',\n 'SDUX::Behavior::Core::ObjectMerge',\n 'SDUX::Behavior::Core::Observable',\n 'SDUX::Behavior::Core::Promise',\n 'SDUX::Behavior::Core::Reducer',\n 'SDUX::Behavior::Core::State',\n 'SDUX::Behavior::Core::TabSyncState',\n 'SDUX::Behavior::Core::Value',\n\n // ---------------------------------------------------------------------------\n // Addon Behaviors (libs/addons)\n // ---------------------------------------------------------------------------\n 'SDUX::Behavior::Addon::DistinctUntilChanged',\n 'SDUX::Behavior::Cache::State',\n 'SDUX::Behavior::Core::Lookup',\n 'SDUX::Behavior::Core::Query',\n 'SDUX::Behavior::Encrypt::Aes256',\n 'SDUX::Behavior::Interceptor::GlobalErrorPause',\n 'SDUX::Behavior::Merge::ArrayAppend',\n 'SDUX::Behavior::Merge::ArrayPush',\n 'SDUX::Behavior::Merge::Deep',\n 'SDUX::Behavior::Persist::CookieStorage',\n 'SDUX::Behavior::Persist::LocalStorage',\n 'SDUX::Behavior::Persist::SessionStorage',\n 'SDUX::Behavior::Policy::StepwiseFilter',\n 'SDUX::Behavior::Policy::StepwiseReducer',\n 'SDUX::Behavior::Policy::StepwiseResolve',\n\n // ---------------------------------------------------------------------------\n // Engine Behaviors (vault-engine)\n // ---------------------------------------------------------------------------\n 'SDUX::Behavior::Core::License',\n\n // ---------------------------------------------------------------------------\n // Engine Controllers (vault-engine)\n // ---------------------------------------------------------------------------\n 'SDUX::Controller::Policy::CoreAbstain',\n 'SDUX::Controller::Policy::CoreError',\n 'SDUX::Controller::Policy::CoreLicense',\n\n // ---------------------------------------------------------------------------\n // Core Controllers (libs/core)\n // ---------------------------------------------------------------------------\n 'SDUX::Controller::Policy::TabSync',\n\n // ---------------------------------------------------------------------------\n // Addon Controllers (libs/addons)\n // ---------------------------------------------------------------------------\n 'SDUX::Controller::Policy::Delay',\n 'SDUX::Controller::Policy::MaxFailures',\n 'SDUX::Controller::Policy::ReplayGlobalError',\n 'SDUX::Controller::Policy::Stepwise',\n 'SDUX::Controller::Policy::Throttle'\n]);\n","/**\n * Canonical license identifier for the SDuX Vault engine license.\n *\n * This value must match the `licenseId` field in the `VaultLicensingShape`\n * payload supplied via `provideVault({ licenses: [...] })`.\n */\nexport const VAULT_LICENSE_ID = 'sdux-vault';\n","import {\n DevMode,\n isTestEnv,\n setVaultLogLevel,\n VaultConfig,\n VaultLicensingShape,\n VaultRegistrationEntityShape,\n VaultRegistrationShape,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { InitializeLicensingService, resetLicensingServiceForTests } from '../../licensing/licensing.service';\nimport { RegisteredFeatureCellShape } from '../../shapes/feature-cell/registered-feature-cell.shape';\nimport { LicensingBehaviorEventShape } from '../../shapes/licensing/licensing-behavior-event.shape';\nimport { LicensingControllerEvent } from '../../shapes/licensing/licensing-controller-event.shape';\nimport { LicensingEventShape } from '../../shapes/licensing/licensing-event.shape';\nimport { LicensingFeatureDescriptionEventShape } from '../../shapes/licensing/licensing-feature-description-event.shape';\nimport { LicensingValidationShape } from '../../shapes/licensing/licensing-validation.shape';\nimport { VaultShape } from '../../shapes/vault/vault.shape';\nimport { LicenseEventTypes } from '../../types/license-event.type';\nimport { VaultRegistrationLicenseStatusTypes } from '../../types/vault/vault-registration-license-status.type';\n\nimport { initDevtoolsWidget } from '@sdux-vault/devtools';\nimport { KNOWN_VAULT_KEYS } from '../../constants/known-vault-keys.constant';\nimport { VAULT_LICENSE_ID } from '../../constants/vault-license-id.constant';\n\n/** Behavior key used to identify the core license behavior during validation. */\nconst CORE_LICENSE_BEHAVIOR_KEY = 'SDUX::Behavior::Core::License';\n\n/** Cached singleton instance of the VaultCore runtime. */\nlet instance: VaultCoreInstance | null = null;\n\n/**\n * Initializes the global Vault runtime singleton with the supplied configuration.\n *\n * @param config - Optional Vault configuration overriding defaults.\n */\nexport function VaultCore(config: VaultConfig = {}): void {\n if (!instance) {\n instance = new VaultCoreInstance(config);\n }\n}\n\n/**\n * Internal singleton managing Vault configuration, licensing, and the\n * FeatureCell registry. All mutable state is held in private fields and\n * exposed only through controlled public methods.\n */\nclass VaultCoreInstance {\n /** Subscription to the licensing event bus. */\n #licensingSub?: Subscription;\n /** Subscription to the validation result bus. */\n #validaionSub?: Subscription;\n /** Map of license IDs to their decoded payloads. */\n #licenseMap = new Map<string, unknown>();\n /** Tracks FeatureCells that have reached a terminal license status. */\n #terminalStatus = new Map<string, boolean>();\n\n /** Whether AI-assist capabilities have been enabled. */\n #aiAssistEnabled = false;\n /** Whether licensing checks are bypassed in dev mode. */\n #bypassLicensing = false;\n /** Timeout duration in milliseconds for pending license evaluations. */\n #licenseTimeoutMs?: number;\n /** Active timeout handles for pending license evaluations keyed by FeatureCell. */\n // eslint-disable-next-line\n #licenseTimers = new Map<string, any>();\n\n /** Subject emitting licensing events to the licensing service. */\n #licensingBus$ = new Subject<LicensingEventShape<unknown>>();\n /** ReplaySubject emitting license validation results. */\n #validationBus$ = new ReplaySubject<LicensingValidationShape>();\n\n /** Last published license status per FeatureCell key. */\n #lastStatus = new Map<string, boolean>();\n\n /** Frozen global Vault configuration. */\n #vaultConfig!: Readonly<VaultShape> | undefined;\n\n /** Registry of FeatureCell registration records keyed by cell key. */\n #registry: Map<string, VaultRegistrationShape> = new Map();\n\n /**\n * Creates the VaultCore singleton and initializes licensing infrastructure.\n *\n * @param config - Raw Vault configuration.\n */\n constructor(config: VaultConfig) {\n InitializeLicensingService(this.#licensingBus$, this.#validationBus$.asObservable());\n this.setVaultConfig(config);\n this.#initializeLicenses(config.licenses);\n this.#subscribeToLicensingEvents();\n this.#injectDebugWidget();\n }\n\n //#region Public methods\n\n /**\n * Applies and freezes the global Vault configuration.\n *\n * This function is invoked by `provideVault()` and must never be\n * called manually in userland code.\n *\n * The configuration is:\n * - Normalized and frozen\n * - Prevented from being set multiple times (except in test environments)\n * - Used to validate license tokens asynchronously\n *\n * @param config - Raw user-supplied Vault configuration.\n * @throws If configuration is set more than once in non-test environments.\n */\n setVaultConfig(config: VaultConfig): void {\n const vaultConfig = {\n devMode: config.devMode ?? false,\n logLevel: config.logLevel ?? 'off'\n } as VaultShape;\n\n this.#vaultConfig = Object.freeze(vaultConfig);\n\n DevMode.setDevMode(this.#vaultConfig.devMode);\n setVaultLogLevel(this.#vaultConfig.logLevel!);\n\n this.#bypassLicensing = config.devMode ? (config.bypassLicensing ?? false) : false;\n\n this.#licenseTimeoutMs = config.licenseTimeoutMs ?? 15_000;\n\n this.#warnIfAccidentalDevMode();\n }\n\n /** Resets all internal state for test isolation. */\n resetForTesting(): void {\n this.#licensingSub?.unsubscribe();\n this.#licensingSub = undefined;\n\n this.#validaionSub?.unsubscribe();\n this.#validaionSub = undefined;\n\n this.#vaultConfig = undefined;\n this.resetFeatureCellRegistry();\n\n this.#lastStatus.clear();\n this.#licenseMap.clear();\n }\n\n /** Clears the FeatureCell registration registry. */\n resetFeatureCellRegistry(): void {\n this.#registry.clear();\n }\n\n /**\n * Registers a FeatureCell key in the runtime registry.\n *\n * @param key - Unique FeatureCell identifier.\n */\n registerCellRuntime(key: string): void {\n this.#ensureRecord(key);\n }\n\n /**\n * Registers behavior entities for a FeatureCell.\n *\n * @param key - FeatureCell key.\n * @param behaviors - Array of behavior entity descriptors.\n */\n registerBehaviors(key: string, behaviors: VaultRegistrationEntityShape[]): void {\n const record = this.#ensureRecord(key);\n record.behaviors = this.#registerEntities(behaviors);\n record.behaviorsRegistered = true;\n }\n\n /**\n * Registers controller entities for a FeatureCell.\n *\n * @param key - FeatureCell key.\n * @param controllers - Array of controller entity descriptors.\n */\n registerControllers(key: string, controllers: VaultRegistrationEntityShape[]): void {\n const record = this.#ensureRecord(key);\n record.controllers = this.#registerEntities(controllers);\n record.controllersRegistered = true;\n }\n\n /**\n * Registers fluent API callback counts for a FeatureCell.\n *\n * @param key - FeatureCell key.\n * @param summary - Object summarizing the count of each fluent API callback type.\n */\n registerFluentApis(\n key: string,\n summary: {\n filters: number;\n reducers: number;\n beforeTaps: number;\n afterTaps: number;\n emitStateCallbacks: number;\n errorCallbacks: number;\n }\n ): void {\n const record = this.#ensureRecord(key);\n record.fluentApis = Object.freeze(summary);\n }\n\n /**\n * Retrieves the decoded license payload for a given license ID.\n *\n * @param licenseId - License identifier to look up.\n * @returns The decoded payload, or undefined if not found.\n */\n getLicensePayload(licenseId: string): unknown | undefined {\n return this.#licenseMap.get(licenseId);\n }\n\n /**\n * Returns whether licensing checks are bypassed.\n *\n * @returns True when bypass licensing is active.\n */\n isBypassLicensing(): boolean {\n return this.#bypassLicensing;\n }\n\n /**\n * Checks whether a key belongs to the set of known Vault-internal keys.\n *\n * @param key - The key to check.\n * @returns True when the key is a recognized Vault key.\n */\n isAuthorizedKey(key: string): boolean {\n return KNOWN_VAULT_KEYS.has(key);\n }\n\n /**\n * Returns whether a Vault-level license has been registered.\n *\n * @returns True when a Vault license exists.\n */\n hasVaultLicense(): boolean {\n return this.#licenseMap.has(VAULT_LICENSE_ID);\n }\n\n //#endregion\n\n //#region private Methods\n\n /** Populates the license map from the supplied license configurations. */\n #initializeLicenses(licenses?: VaultLicensingShape[]): void {\n if (!licenses?.length) return;\n\n for (const license of licenses) {\n if (!license?.licenseId) continue;\n this.#licenseMap.set(license.licenseId, license.payload);\n }\n }\n\n /** Freezes and registers an array of entity descriptors into a keyed map. */\n #registerEntities(entities: VaultRegistrationEntityShape[]): Map<string, Readonly<VaultRegistrationEntityShape>> {\n return new Map(\n entities.map((entity: VaultRegistrationEntityShape) => {\n let needsLicense: boolean;\n if (this.#bypassLicensing) {\n needsLicense = false;\n } else {\n needsLicense = entity.needsLicense ?? false;\n }\n\n const frozen: VaultRegistrationEntityShape = {\n key: entity.key,\n type: entity.type,\n critical: !!entity.critical,\n needsLicense,\n validLicense: needsLicense\n ? VaultRegistrationLicenseStatusTypes.Pending\n : VaultRegistrationLicenseStatusTypes.NotRequired\n };\n\n return [entity.key, Object.freeze(frozen)];\n })\n );\n }\n\n /** Subscribes to the licensing bus and routes events to the appropriate handlers. */\n #subscribeToLicensingEvents(): void {\n this.#licensingSub = this.#licensingBus$.subscribe((event: LicensingEventShape<unknown>) => {\n switch (event.type) {\n case LicenseEventTypes.DescribeFeature: {\n const featureEvent = event as LicensingFeatureDescriptionEventShape<unknown>;\n this.registerFluentApis(featureEvent.featureCellKey, this.#summarizeFluent(featureEvent));\n break;\n }\n\n case LicenseEventTypes.DescribeBehaviors: {\n const behaviorEvent = event as LicensingBehaviorEventShape;\n this.registerBehaviors(behaviorEvent.featureCellKey, behaviorEvent.behaviors);\n this.#emitLicenseStatus(behaviorEvent.featureCellKey);\n break;\n }\n\n case LicenseEventTypes.DescribeControllers: {\n const controllerEvent = event as LicensingControllerEvent;\n this.registerControllers(controllerEvent.featureCellKey, controllerEvent.controllers);\n this.#emitLicenseStatus(controllerEvent.featureCellKey);\n break;\n }\n\n case LicenseEventTypes.RequireLicense: {\n this.#startLicenseTimeout(event.featureCellKey);\n this.#recordLicenses(event);\n return;\n }\n\n case LicenseEventTypes.ValidateLicense: {\n this.#handleLicenseValidation(event);\n this.#emitLicenseStatus(event.featureCellKey);\n return;\n }\n }\n });\n }\n\n /** Starts a timeout timer for pending licenses on a FeatureCell. */\n #startLicenseTimeout(featureCellKey: string): void {\n if (!this.#licenseTimeoutMs) return;\n\n if (this.#licenseTimers.has(featureCellKey)) return; // already running\n\n const timer = setTimeout(() => {\n this.#expirePendingLicenses(featureCellKey);\n this.#licenseTimers.delete(featureCellKey);\n }, this.#licenseTimeoutMs);\n\n this.#licenseTimers.set(featureCellKey, timer);\n }\n\n /** Expires all pending licenses for a FeatureCell and publishes a denial. */\n #expirePendingLicenses(featureCellKey: string): void {\n const record = this.#registry.get(featureCellKey);\n if (!record) return;\n\n // istanbul ignore next -- defensive only not testable\n const allEntities = [...(record.behaviors?.values() ?? []), ...(record.controllers?.values() ?? [])];\n\n let changed = false;\n\n for (const entity of allEntities) {\n if (entity.needsLicense && entity.validLicense === VaultRegistrationLicenseStatusTypes.Pending) {\n const map = record.behaviors?.has(entity.key) ? record.behaviors : record.controllers;\n\n map?.set(\n entity.key,\n Object.freeze({\n ...entity,\n validLicense: VaultRegistrationLicenseStatusTypes.Timeout\n })\n );\n\n changed = true;\n }\n }\n\n if (changed) {\n this.#publishStatus(featureCellKey, false);\n }\n\n this.#clearLicenseTimer(featureCellKey);\n }\n\n // Do not evaluate until both sides registered\n /** Evaluates and emits the aggregate license status for a FeatureCell. */\n #emitLicenseStatus(featureCellKey: string): void {\n const record = this.#registry.get(featureCellKey);\n if (!record) return;\n\n if (!record.behaviorsRegistered || !record.controllersRegistered) return;\n\n // istanbul ignore next -- defensive only not testable\n const allEntities = [...(record.behaviors?.values() ?? []), ...(record.controllers?.values() ?? [])];\n\n // Only entities that require a license matter\n const entities = allEntities.filter((e) => e.needsLicense);\n\n // Nothing requires a license → immediately approved\n if (entities.length === 0) {\n this.#publishStatus(featureCellKey, true);\n return;\n }\n\n // Any revoked → deny immediately\n if (\n entities.some(\n (e) =>\n e.validLicense === VaultRegistrationLicenseStatusTypes.Revoked ||\n e.validLicense === VaultRegistrationLicenseStatusTypes.Timeout\n )\n ) {\n this.#clearLicenseTimer(featureCellKey);\n this.#publishStatus(featureCellKey, false);\n return;\n }\n\n // Any pending → do nothing (still waiting)\n if (entities.some((e) => e.validLicense === VaultRegistrationLicenseStatusTypes.Pending)) {\n return;\n }\n\n // All valid\n this.#publishStatus(featureCellKey, true);\n }\n\n /** Clears the license timeout timer for a FeatureCell. */\n #clearLicenseTimer(featureCellKey: string): void {\n const timer = this.#licenseTimers.get(featureCellKey);\n if (timer) {\n clearTimeout(timer);\n this.#licenseTimers.delete(featureCellKey);\n }\n }\n\n /** Publishes a terminal license validation result for a FeatureCell. */\n #publishStatus(featureCellKey: string, approved: boolean): void {\n if (this.#terminalStatus.has(featureCellKey)) return;\n\n this.#terminalStatus.set(featureCellKey, approved);\n\n this.#clearLicenseTimer(featureCellKey);\n\n this.#lastStatus.set(featureCellKey, approved);\n\n this.#validationBus$.next({\n featureCellKey,\n approved\n });\n }\n\n /** Routes a license validation event to the appropriate entity maps. */\n #handleLicenseValidation(event: LicensingEventShape<unknown>): void {\n const { featureCellKey, key, licenseToken, valid } = event;\n\n if (this.#terminalStatus.has(event.featureCellKey)) return;\n\n if (!key) {\n vaultWarn('Cannot validate license without a key.');\n return;\n }\n\n const record = this.#registry.get(featureCellKey);\n if (!record) return;\n\n this.#applyLicenseValidation(record.behaviors, key, licenseToken, valid);\n this.#applyLicenseValidation(record.controllers, key, licenseToken, valid);\n\n if (valid && key === CORE_LICENSE_BEHAVIOR_KEY) {\n this.#enableAiAssist();\n }\n }\n\n /** Applies a license validation result to a single entity within a map. */\n #applyLicenseValidation(\n entities: Map<string, VaultRegistrationEntityShape> | undefined,\n key: string,\n licenseId: string | undefined,\n valid: boolean | undefined\n ): void {\n if (!entities?.has(key)) return;\n\n const entity = entities.get(key)!;\n\n // Must require license\n if (!entity.needsLicense) return;\n\n // Must have previously issued key\n if (!entity.licenseId) return;\n\n // Must match exactly\n if (entity.licenseId !== licenseId) {\n // if (DevMode.active) {\n vaultWarn(`[vault] License key mismatch for \"${key}\".`);\n //}\n return;\n }\n\n entities.set(\n key,\n Object.freeze({\n ...entity,\n validLicense: valid ? VaultRegistrationLicenseStatusTypes.Valid : VaultRegistrationLicenseStatusTypes.Revoked\n })\n );\n }\n\n /** Records a license token against the matching entity in the registry. */\n #recordLicenses(event: LicensingEventShape<unknown>): void {\n const { featureCellKey, key, licenseToken } = event;\n\n const record = this.#registry.get(featureCellKey);\n if (!record) return;\n\n // istanbul ignore next -- defensive only not testable\n if (!key || typeof key !== 'string') {\n throw new Error('[vault] Cannot register controller license without a key.');\n }\n\n this.#recordLicense(record.behaviors, key, licenseToken);\n this.#recordLicense(record.controllers, key, licenseToken);\n }\n\n /** Writes a license ID to a single entity if it requires a license. */\n #recordLicense(\n entities: Map<string, VaultRegistrationEntityShape> | undefined,\n key: string,\n licenseId: string | undefined\n ): void {\n if (!entities?.has(key)) return;\n\n const entity = entities.get(key)!;\n\n // Must require license\n if (!entity.needsLicense) return;\n\n // First write wins — do not overwrite\n if (entity.licenseId) return;\n\n if (!licenseId) return;\n\n entities.set(\n key,\n Object.freeze({\n ...entity,\n licenseId\n })\n );\n }\n\n /** Emits a console warning when dev mode is active outside a test environment. */\n #warnIfAccidentalDevMode(): void {\n if (DevMode.active && !isTestEnv.active) {\n // eslint-disable-next-line\n console.error(\n `[vault] \"Development Mode\" is enabled outside of a test environment.\\n` +\n `This can expose sensitive data because safeguards that normally remove or sanitize data are disabled.\\n` +\n `You have explicitly disabled these safeguards and are responsible for ensuring production safety.\\n` +\n `If this is intentional, you can safely ignore this message.`\n );\n }\n }\n\n /** Summarizes fluent API callback counts from a feature description event. */\n #summarizeFluent(event: Partial<LicensingFeatureDescriptionEventShape<unknown>>) {\n const fluent: Partial<LicensingFeatureDescriptionEventShape<unknown>['fluentApis']> = event?.fluentApis ?? {};\n\n return {\n filters: Array.isArray(fluent?.filters) ? fluent.filters.length : 0,\n reducers: Array.isArray(fluent?.reducers) ? fluent.reducers.length : 0,\n beforeTaps: Array.isArray(fluent?.beforeTaps) ? fluent.beforeTaps.length : 0,\n afterTaps: Array.isArray(fluent?.afterTaps) ? fluent.afterTaps.length : 0,\n emitStateCallbacks: Array.isArray(fluent?.emitStateCallbacks) ? fluent.emitStateCallbacks.length : 0,\n errorCallbacks: Array.isArray(fluent?.errorCallbacks) ? fluent.errorCallbacks.length : 0\n };\n }\n\n /** Returns or creates the registry record for a FeatureCell key. */\n #ensureRecord(key: string): VaultRegistrationShape {\n if (!this.#registry.has(key)) {\n this.#registry.set(key, { key, behaviorsRegistered: false, controllersRegistered: false });\n }\n\n return this.#registry.get(key)!;\n }\n\n /** Enables AI-assist capabilities when a core license is validated. */\n #enableAiAssist(): void {\n if (this.#aiAssistEnabled) return;\n if (!DevMode.active) return;\n // istanbul ignore next -- SSR guard; document is always defined in browser tests\n if (typeof document === 'undefined') return;\n\n this.#aiAssistEnabled = true;\n\n globalThis.sdux ??= {};\n globalThis.sdux.debugWidget ??= {};\n globalThis.sdux.debugWidget.aiAssistEnabled = true;\n\n document.dispatchEvent(new CustomEvent('sdux-license-resolved'));\n }\n\n /** Injects the DevTools debug widget into the global scope. */\n #injectDebugWidget(): void {\n if (!DevMode.active) return;\n // istanbul ignore next line - this is defensive only\n if (typeof document === 'undefined') return;\n\n // Ensure root container exists\n globalThis.sdux ??= {};\n\n // Ensure debugWidget exists\n globalThis.sdux.debugWidget ??= {};\n\n globalThis.sdux.debugWidget.getRegistry = () => this.getRegistrySnapshot();\n\n initDevtoolsWidget();\n }\n\n //#endregion\n\n //#region Public Testing Method\n /**\n * Registers a settled callback for a FeatureCell.\n *\n * @param key - FeatureCell key.\n * @param fn - Async function invoked when the cell settles.\n */\n registerVaultSettled(key: string, fn: () => Promise<void>): void {\n const record = this.#ensureRecord(key);\n record.vaultSettled = fn;\n }\n\n /**\n * Awaits the settled callback for a specific FeatureCell.\n *\n * @param key - FeatureCell key to await.\n */\n async awaitFeatureCellSettled(key: string): Promise<void> {\n const record = this.#registry.get(key);\n\n if (!record) {\n throw new Error(`[vault] FeatureCell \"${key}\" not registered.`);\n }\n\n if (typeof record.vaultSettled === 'function') {\n await record.vaultSettled();\n await Promise.resolve(); // flush microtasks\n }\n }\n\n /** Awaits settled callbacks for all registered FeatureCells. */\n async awaitAllSettled(): Promise<void> {\n for (const record of this.#registry.values()) {\n if (typeof record.vaultSettled === 'function') {\n await record.vaultSettled();\n }\n }\n\n await Promise.resolve();\n }\n\n // TESTING ONLY — do not use in production code\n /**\n * Returns a shallow clone of the internal registry for test inspection.\n *\n * @returns A read-only copy of the FeatureCell registry.\n */\n getRegistrySnapshot(): ReadonlyMap<string, VaultRegistrationShape> {\n // Return a shallow cloned map so tests cannot mutate internal state\n return new Map(this.#registry);\n }\n\n //#endregion\n}\n\n/**\n * Registers a FeatureCell entry in the global Vault registry.\n *\n * @param entry - Registration descriptor containing the FeatureCell key.\n */\nexport function registerFeatureCell(entry: RegisteredFeatureCellShape): void {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n if (!entry) {\n throw new Error('[vault] registerFeatureCell() requires a valid entry object.');\n }\n\n if (!entry.key || typeof entry.key !== 'string') {\n throw new Error('[vault] registerFeatureCell() requires a valid \"key\" (non-empty string).');\n }\n\n instance.registerCellRuntime(entry.key);\n}\n\n/**\n * Retrieves the decoded license payload for a given license ID.\n *\n * @param licenseId - License identifier to look up.\n * @returns The decoded payload.\n */\nexport function getLicensePayload(licenseId: string): unknown {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n if (typeof licenseId !== 'string' || !licenseId.trim()) {\n throw new Error('[vault] getLicensePayload() requires a valid licenseId.');\n }\n\n return instance.getLicensePayload(licenseId);\n}\n\n/** Awaits settled callbacks for all registered FeatureCells. */\nexport async function vaultAllSettled(): Promise<void> {\n if (!instance) return;\n await instance.awaitAllSettled();\n}\n\n/**\n * Awaits the settled callback for a specific FeatureCell.\n *\n * @param key - FeatureCell key to await.\n */\nexport async function vaultSettled(key: string): Promise<void> {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n await instance.awaitFeatureCellSettled(key);\n}\n\n/**\n * Registers a settled callback for a FeatureCell in the global Vault.\n *\n * @param key - FeatureCell key.\n * @param vaultSettled - Async function invoked when the cell settles.\n */\nexport function registerVaultSettled(key: string, vaultSettled?: () => Promise<void>): void {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n if (!key || typeof key !== 'string') {\n throw new Error('[vault] registerVaultSettled() requires a valid \"key\" (non-empty string).');\n }\n\n if (typeof vaultSettled !== 'function') {\n // silently ignore in production; nothing to attach\n return;\n }\n\n instance.registerVaultSettled(key, vaultSettled);\n}\n\n/**\n * Resets the global Vault configuration for isolated tests.\n *\n * This function should **never** be called in production builds.\n */\nexport function resetVaultForTests(): void {\n resetLicensingServiceForTests();\n instance?.resetForTesting();\n instance = null;\n}\n\n/** Clears the FeatureCell registration registry. */\nexport function resetFeatureCellRegistry(): void {\n instance?.resetFeatureCellRegistry();\n}\n\n/**\n * Returns a read-only snapshot of the FeatureCell registry for test inspection.\n *\n * @returns A read-only copy of the registry.\n */\nexport function getVaultRegistryForTests(): ReadonlyMap<string, VaultRegistrationShape> | undefined {\n if (!instance) {\n throw new Error('[vault] Vault not initialized.');\n }\n\n return instance.getRegistrySnapshot();\n}\n\n/**\n * Checks whether a key is authorized by the Vault runtime.\n *\n * @param key - The key to check.\n * @returns True when the key is authorized or licensing is bypassed.\n */\nexport function isAuthorizedKey(key: string): boolean {\n if (!instance) return false;\n\n if (instance.isBypassLicensing()) return true;\n\n return instance.isAuthorizedKey(key);\n}\n\n/**\n * Returns whether licensing checks are currently bypassed.\n *\n * @returns True when bypass licensing is active.\n */\nexport function isBypassLicensing(): boolean {\n if (!instance) return false;\n\n return instance.isBypassLicensing();\n}\n\n/**\n * Returns whether a Vault-level license has been registered.\n *\n * @returns True when a Vault license exists.\n */\nexport function hasVaultLicense(): boolean {\n if (!instance) return false;\n\n return instance.hasVaultLicense();\n}\n","// projects/core/src/lib/services/vault-behavior-lifecycle.service.ts\nimport {\n BEHAVIOR_META,\n BehaviorClassContext,\n BehaviorClassContract,\n BehaviorContract,\n BehaviorMetaShape,\n BehaviorTypes,\n FeatureCellBaseShape,\n FeatureCellExtensionContext,\n StateEmitSnapshotShape,\n StateSnapshotShape,\n TabSyncBehaviorClassContext,\n validateBehaviorKey,\n vaultDebug,\n vaultError,\n VaultMonitorContract,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Subject } from 'rxjs';\nimport { PROTECTED_FEATURE_CELL_KEYS } from '../constants/protected-feature-cell-keys.constant';\nimport {\n getLicensePayload,\n hasVaultLicense,\n isAuthorizedKey,\n isBypassLicensing\n} from '../factories/vault/vault-core.function';\nimport { BehaviorInitializeClassContract } from '../interfaces/behavior/behavior-initialization.interface';\n\n/**\n * Manages instantiation and lifecycle initialization of FeatureCell behaviors.\n *\n * This class is responsible for constructing behavior instances from declared\n * behavior classes, validating metadata and keys, enforcing criticality rules,\n * and applying behavior-defined API extensions onto a FeatureCell instance.\n */\nexport class BehaviorInitializationClass implements BehaviorInitializeClassContract {\n /** Tracks whether initialization has already been performed. */\n #initialized = false;\n\n /** FeatureCell identifier associated with this initializer. */\n #cellKey: string;\n\n /** Live reference to the FeatureCell's mutable last-snapshot object. */\n #lastSnapshot: StateSnapshotShape<unknown>;\n\n /** Subject used by the FeatureCell to emit state snapshots. */\n #state$: Subject<StateEmitSnapshotShape<unknown>>;\n\n /**\n * Creates a new behavior initializer for a specific FeatureCell.\n *\n * @param cellKey - The unique FeatureCell key.\n * @param lastSnapshot - Live reference to the FeatureCell's mutable state snapshot.\n * @param state$ - Subject used to emit state snapshots.\n */\n constructor(\n cellKey: string,\n lastSnapshot: StateSnapshotShape<unknown>,\n state$: Subject<StateEmitSnapshotShape<unknown>>\n ) {\n this.#cellKey = cellKey;\n this.#lastSnapshot = lastSnapshot;\n this.#state$ = state$;\n }\n\n /**\n * Instantiates and validates all behaviors declared for a FeatureCell.\n *\n * This method enforces one-time initialization, validates required behavior\n * metadata, instantiates behavior classes with their configuration, and\n * ensures behavior keys are unique and correctly formatted.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param behaviorClasses - Behavior class definitions to instantiate.\n * @param behaviorConfigs - Configuration map keyed by behavior configKey.\n * @returns An ordered array of instantiated behavior objects.\n */\n initializeBehaviors<T>(\n behaviorClasses: Array<BehaviorClassContract<T>>,\n behaviorConfigs: Map<string, unknown>\n ): BehaviorContract<T>[] {\n if (this.#initialized)\n throw new Error(\n `[vault] VaultBehaviorRunner already initialized — cannot reissue core behavior ID for feature cell \"${this.#cellKey}\".`\n );\n\n this.#initialized = true;\n\n if (!behaviorClasses || behaviorClasses.length === 0) return [];\n\n const seenKeys = new Set<string>();\n\n return (\n behaviorClasses\n // eslint-disable-next-line\n .map((BehaviorClass: any) => {\n let isCritical = false;\n\n try {\n if (typeof BehaviorClass !== 'function') return;\n\n const meta = BehaviorClass[BEHAVIOR_META] as BehaviorMetaShape | undefined;\n\n if (!meta) {\n isCritical = true;\n throw new Error(`[vault] Behavior \"${BehaviorClass.name}\" missing @VaultBehavior metadata.`);\n }\n\n const behaviorKey = meta.key;\n const behaviorType = meta.type;\n\n if (!behaviorKey) {\n isCritical = true;\n throw new Error(`[vault] Behavior metadata missing \"key\".`);\n }\n\n if (!hasVaultLicense()) {\n if (!isAuthorizedKey(behaviorKey)) {\n vaultDebug(`[vault] Unlicensed behavior \"${behaviorKey}\" skipped during initialization.`);\n return;\n }\n }\n\n if (!behaviorType) {\n isCritical = true;\n throw new Error(`[vault] Behavior metadata missing \"type\" for \"${behaviorKey}\".`);\n }\n\n let behaviorConfig: unknown = undefined;\n\n if (meta.wantsConfig) {\n if (!meta.configKey) {\n isCritical = true;\n throw new Error(`[vault] Behavior \"${behaviorKey}\" declares wantsConfig but has no configKey.`);\n }\n\n behaviorConfig = behaviorConfigs.get(meta.configKey);\n }\n\n let licensePayload: unknown = undefined;\n if (meta.needsLicense && !isBypassLicensing()) {\n if (!meta.licenseId) {\n isCritical = true;\n throw new Error(`[vault] Behavior \"${behaviorKey}\" declares needsLicense but has no licenseId.`);\n }\n\n licensePayload = getLicensePayload(meta.licenseId);\n\n if (licensePayload === undefined) {\n isCritical = true;\n throw new Error(\n `[vault] License \"${meta.licenseId}\" required by behavior \"${behaviorKey}\" is not registered in Vault config.`\n );\n }\n }\n\n let instance: BehaviorContract<T>;\n try {\n let behaviorContract: BehaviorClassContext | TabSyncBehaviorClassContext = {\n featureCellKey: this.#cellKey,\n behaviorConfig,\n licensePayload\n };\n\n if (meta.type === BehaviorTypes.TabSyncState) {\n behaviorContract = {\n ...behaviorContract,\n lastSnapshot: this.#lastSnapshot,\n state$: this.#state$\n };\n }\n\n instance = new BehaviorClass(behaviorKey, behaviorContract) as BehaviorContract<T>;\n } catch (error) {\n isCritical = meta.critical;\n throw error;\n }\n\n if (!instance.key) {\n isCritical = true;\n throw new Error(\n `[vault] Behavior missing key for type \"${behaviorType}\". Every behavior must define a unique \"key\".`\n );\n }\n\n if (!validateBehaviorKey(instance.key)) {\n isCritical = true;\n throw new Error(\n `[vault] Behavior key \"${instance.key}\" not valid format for \"${behaviorType}\" behavior.`\n );\n }\n\n if (instance.key && seenKeys.has(instance.key)) {\n vaultWarn(`[vault] Skipping duplicate behavior with key \"${instance.key}\"`);\n return null;\n }\n\n if (instance.key) seenKeys.add(instance.key);\n\n return instance;\n } catch (err) {\n if (isCritical) {\n throw err;\n }\n\n // eslint-disable-next-line\n vaultWarn(`[vault] Non-critical behavior initialization failed: ${(err as any)?.message}`);\n return null;\n }\n })\n .filter((behavior): behavior is BehaviorContract<T> => !!behavior)\n );\n }\n\n /**\n * Applies behavior-defined API extensions to a FeatureCell instance.\n *\n * Each behavior may expose extension functions that are attached to the\n * FeatureCell. Extensions are validated to prevent overriding protected\n * core APIs or other behavior extensions without explicit permission.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param cell - The FeatureCell instance to extend.\n * @param vaultMonitor - Monitor used for extension execution diagnostics.\n */\n applyBehaviorExtensions<T>(\n behaviors: BehaviorContract<T>[],\n cell: FeatureCellBaseShape<T>,\n vaultMonitor: VaultMonitorContract\n ): void {\n for (const behavior of behaviors) {\n const FeatureCellExtensionContext = {\n featureCellKey: cell.key,\n destroyed$: cell.destroyed$,\n reset$: cell.reset$,\n mergeState: cell.mergeState,\n replaceState: cell.replaceState,\n state$: cell.state$,\n vaultMonitor\n } as FeatureCellExtensionContext<T>;\n\n const extensions = behavior.extendCellAPI?.(FeatureCellExtensionContext);\n if (!extensions || typeof extensions !== 'object') continue;\n\n for (const [key, fn] of Object.entries(extensions)) {\n const alreadyDefined = cell[key as keyof FeatureCellBaseShape<T>] !== undefined;\n\n const canOverride =\n // eslint-disable-next-line\n Array.isArray((behavior as any).allowOverride) && (behavior as any).allowOverride.includes(key);\n\n if (PROTECTED_FEATURE_CELL_KEYS.has(key)) {\n throw new Error(\n `[vault] Behavior \"${behavior.key}\" attempted to overwrite core FeatureCell method \"${key}\".`\n );\n }\n\n if (alreadyDefined && !canOverride) {\n throw new Error(\n `[vault] Behavior \"${behavior.key}\" attempted to redefine method \"${key}\" already provided by another behavior.`\n );\n }\n\n if (alreadyDefined && canOverride) {\n vaultWarn(`[vault] Behavior \"${behavior.key}\" is overriding method \"${key}\" (explicitly allowed).`);\n // eslint-disable-next-line\n delete (cell as any)[key];\n }\n\n Object.defineProperty(cell, key, {\n // eslint-disable-next-line\n value: (...args: any[]) => {\n try {\n if (typeof fn !== 'function') return;\n return fn(...args);\n } catch (err) {\n vaultError(`[vault] Behavior extension \"${key}\" threw an error:`, err);\n throw err;\n }\n },\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n }\n }\n}\n","import {\n BehaviorContract,\n BehaviorTypes,\n CoreEmitStateBehaviorContract,\n ErrorCallbackBehaviorContract,\n ErrorTransformBehaviorContract,\n FinalState,\n isVaultNoop,\n VAULT_STOP\n} from '@sdux-vault/shared';\n\n/**\n * Type guard that identifies error transform behaviors.\n *\n * This function determines whether a behavior participates in the\n * error transformation stage of the pipeline based on its declared\n * behavior type.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param behavior - A behavior instance to inspect.\n * @returns `true` when the behavior is an error transform behavior.\n */\nexport const isErrorTransformBehavior = <T>(\n behavior: BehaviorContract<T>\n): behavior is ErrorTransformBehaviorContract<T> => {\n return behavior.type === BehaviorTypes.ErrorTransform;\n};\n\n/**\n * Type guard that identifies the core error callback behavior.\n *\n * This function is used to detect behaviors responsible for invoking\n * legacy or observational error callbacks during pipeline execution.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param behavior - A behavior instance to inspect.\n * @returns `true` when the behavior is the core error callback behavior.\n */\nexport const isCoreErrorCallbackBehavior = <T>(\n behavior: BehaviorContract<T>\n): behavior is ErrorCallbackBehaviorContract<T> => {\n return behavior.type === BehaviorTypes.CoreErrorCallback;\n};\n\n/**\n * Type guard that identifies the core emitState behavior.\n *\n * This function detects the behavior responsible for emitting finalized\n * state snapshots to observers after pipeline execution.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param behavior - A behavior instance to inspect.\n * @returns `true` when the behavior is the core emitState behavior.\n */\nexport const isCoreEmitStateCallbackBehavior = <T>(\n behavior: BehaviorContract<T>\n): behavior is CoreEmitStateBehaviorContract<T> => {\n return behavior.type === BehaviorTypes.CoreEmitState;\n};\n\n/**\n * Determines whether a final pipeline value represents a STOP signal.\n *\n * A STOP signal halts the pipeline immediately without committing state\n * and is typically produced by interceptor behaviors.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param current - The final pipeline result value.\n * @returns `true` when the value is the `VAULT_STOP` sentinel.\n */\nexport const isSignalStop = <T>(current: FinalState<T>): boolean => {\n return current === VAULT_STOP;\n};\n\n/**\n * Generates a compact uppercase trace identifier.\n *\n * The identifier is derived from `crypto.randomUUID()` when available,\n * with a fallback to a randomized string for environments where WebCrypto\n * is unavailable.\n *\n * @returns A five-character uppercase trace identifier.\n */\nexport const assignTraceId = (): string => {\n return crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2, 7);\n};\n\n/**\n * Determines whether a pipeline result is terminal.\n *\n * Terminal values indicate that the pipeline must halt without applying\n * a new state snapshot. This includes both no-op and stop signals.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param current - The final pipeline result value.\n * @returns `true` when the pipeline should not apply state.\n */\nexport const isPipelineTerminal = <T>(current: FinalState<T>): boolean => isVaultNoop(current) || isSignalStop(current);\n","import { VaultLicensePayloadType } from '../../../types/vault/vault-license-payload.type';\n\n/**\n * The public keys\n */\nexport const PublicKeys: Record<VaultLicensePayloadType, string> = {\n /**\n * the pro public key\n */\n pro: `\n-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuXto+eRaFm9pObys/IEI ASwV1wgGvNGJsiyw/9hXsEd9mA76aQI1X9lpkZRKmBFovHdK2unPHFOPQM0k9vJo ieFMNXO9kmHn7UYZV98bDCcDTNURFHQ4SWlcAE/HEiNqcUb9LwotFbON7/mcthM8 QQQ4Lycdv+lm1uozQl8rl+i7FjfQzLaxJMuAkm9jFZK+ta6eoSy/lmXfhDem8RIo dE19aZWfY+LTXP9nn977XFah0z0S0D3NSvMv96gZsXTN2hTbFBl5dgDMAOW9R5OI wT6I+kGwrVqARXq2pTDHnZjqfO3a+rT4Lrb5/L58RjQ0EfA5puZ16EXGEUpOabqI KVT4Z/wv818P8eyat+LtTcy2G0zx/h0Fcz0QANzx3P9K7ezxeqdg4SsjkcNXRWZq PaJUhZHygN/Xuef9zfWwjuKobCBSdyyeXxF5XS0A0Y6NBmdhikyHc/YOY2iYupIt xiUvlHaq97B5wej3XcTmp4kmJUQyeQ8oD5Mj8Dmf69oa7vhI/ANNKWo9s8e7u7UX Dx74Eu3d8JBpACQ+Vvek6ZEGw+D0yCyLF6u/CaCw+cb2cBYAlM7jWZ5kpgsbQcWw YP2nbGV3OofcEspoEU704M4RW4v+nSRYrJbMEIJJ5Wuxk2/RuUgk/9uwgCHAvzXZ cmGomIf9dXZGoNhwT5uW1OECAwEAAQ==\n-----END PUBLIC KEY-----\n`,\n /**\n * the enterprise public key\n */\n enterprise: `\n-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6k4XHyV4WE6Bd/fizN4Q c3C37LtskNTJ1c3FVxcziygAFd+fotRfbLHctwtJJhuO6+Pv+c1SPjrPeJsWRw4M IN7QHcBQHPbQDW/Erd1XjA0OVNbxs3xLVjtgMuVcd2sKYPp4nJqIyz5WLMde7v1g 1k8knI+ISrym0h4GcjkNSaHK5QKKpK7n3dzOXrjo1P6h1uOVsGAHC/ErVMQNHrAu dKgY+SDVn87oPIrd2pJb5SotI6H8HzODM/CDsF58hk/eK4zApnrtDViVb1j3oNCk hdDOnN98VIgwcHzHYZOhPFM0TFwudpi57Yu/PJJztI7WbsjpxTyX3JPvwVeWJR+Z tt6NEQ5ZaoBghGgHGiuRbhKR5qoznwsMkfb2jUbpbgRTinmtEjFmpIYSnROCixjq W1neupzBDrNi+JfoVsTwiP8SbzxHXWksN0gLMfL235l1LDMS/IrI3RmhcRkhB/Pu vPuc+jhPkwpbXaM9vDkkPWK1dmRYHWo3atYCWoSdK2705woo19oT8Dxm9OXKT+nh HsdOI+k9asBCqe4kQHi3OJ4Raesa6bFWWxKFLeUNKSAt7clJKo7GhrovnHIIAbty gk7ULdwLIlpjwB5mVUBBCts5z9KznHo+pumNoeEA8FGqq374a+jEPOHWjsshA678 RDYeqeRbh2VNcy/OwlqH/MUCAwEAAQ==\n-----END PUBLIC KEY-----\n`,\n /**\n * the development public key\n */\n development: `\n-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsAFRjQalSEZkCDPrdBEf IMQpY7ujGf4pqjuFk86rkZENr7kJ00RjVJxuhcafgygdmxVAhKS+d1WtsSAw6c9m AawI+sSyhAClB+wrwfuCrxt/ZlLbNMiMH5SD1YvoRaHstkLpMGbWnbsLDI+cCpaL hGKk+5LoJLikhf9ipBkGX8VSAT0xTMk06iaYtEV85H9cMWtfx7seyBw2Mps/8S6f Rtp3tLlbNJIyh9+5XjtkTqYNRWJtFW1rv75K9GN9dPVXrEXUGojqeV13G+z2R3Sr QvmhESkyC1DviZBxaYnEhpWoijJQFJUQ1DGRi29ugktYzf36Otw9gyz9jGb5MLNE W+meR2LdnbTBy83QNtaS5lCzNJVo2ohwbD+djblNVegH/Dr0rK4IHEYSgjdxjErY 6xqykJpKJ025CTU4kyI3aaaYB+l2CQMAKVAh2y2rgGyJSJnMDTR44aBIZ8rtTu2r wazjBJ/RiMr0OOkfBqEQPKZ6qzSWtBDebvD0iUyRAP8SXSdDo1DcaJNamLLmjIxr 3KCcwgJt2oLcdZZHKG3WbjqmIdp7tq03O4gajKJHd5GmyLWtHXKqBwaijAx9aNqr qDPWj/Qg/8C9qpSBs7EUod3slV6UhO4yEnb7FdD/O0o8mRMU0rtJ0KQTarpEh2bY MKVsYxByiFeAjUJUWLSqIX8CAwEAAQ==\n-----END PUBLIC KEY-----\n`\n};\n","import { DevMode } from '@sdux-vault/shared';\nimport { LicensePayloadShape } from '../../../shapes/vault/license-payload.shape';\nimport { VaultLicensePayloadType } from '../../../types/vault/vault-license-payload.type';\nimport { PublicKeys } from './public-keys';\n\n/** Whether license details have already been logged to the console. */\nlet hasLoggedLicenseDetails = false;\n\n/** Resets the license details log flag for test isolation. */\nexport function resetLicenseDetailsLog(): void {\n if (!DevMode.active) return;\n hasLoggedLicenseDetails = false;\n}\n\n/**\n * Static license verification utility that validates signed license tokens\n * against tier-specific RSA public keys. Tokens use a dot-separated\n * base64(payload).base64(signature) format verified via crypto.subtle.\n */\nexport const VerifyLicenseToken = {\n /**\n * Verifies the supplied signed license token using the public key associated\n * with its declared tier.\n *\n * @param token - A dot-separated token in the format\n * `base64(payload).base64(signature)`.\n * @returns A promise resolving to `true` if the signature validates;\n * otherwise `false`.\n */\n verify: async (token: string): Promise<boolean> => {\n try {\n const dotIndex = token.indexOf('.');\n\n if (dotIndex === -1) {\n return false;\n }\n\n const encodedPayload = token.substring(0, dotIndex);\n const signatureB64 = token.substring(dotIndex + 1);\n\n const payloadJson = atob(encodedPayload);\n const payload: LicensePayloadShape = JSON.parse(payloadJson);\n const signature = Uint8Array.from(atob(signatureB64), (c) => c.charCodeAt(0));\n\n const licenseType: VaultLicensePayloadType | undefined = payload?.licenseType;\n\n if (!licenseType) {\n return false;\n }\n\n if (!DevMode.active && licenseType === 'development') {\n // eslint-disable-next-line\n console.error('[sdux-vault] Development license token rejected in production environment.');\n return false;\n }\n\n const keyPem = PublicKeys[licenseType];\n\n if (!keyPem) return false;\n\n const key = await importPublicKey(keyPem);\n\n const verified = await crypto.subtle.verify(\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256'\n },\n key,\n signature,\n new TextEncoder().encode(encodedPayload)\n );\n\n if (!hasLoggedLicenseDetails) {\n hasLoggedLicenseDetails = true;\n if (verified) {\n // eslint-disable-next-line\n console.info(\n `[sdux-vault] License verified — organization: \"${payload.organization}\", tier: \"${payload.licenseType}\"`\n );\n } else {\n // eslint-disable-next-line\n console.warn(\n `[sdux-vault] License signature invalid — organization: \"${payload.organization}\", tier: \"${payload.licenseType}\"`\n );\n }\n\n // eslint-disable-next-line\n console.info('[sdux-vault] License organization:', payload.organization);\n // eslint-disable-next-line\n console.info('[sdux-vault] License domain:', payload.domain);\n // eslint-disable-next-line\n console.info('[sdux-vault] License type:', payload.licenseType);\n // eslint-disable-next-line\n console.info('[sdux-vault] License issuedAt:', formatLicenseDate(payload.issuedAt));\n // eslint-disable-next-line\n console.info('[sdux-vault] License expires:', formatLicenseDate(payload.expires));\n }\n\n if (verified && payload.licenseType === 'enterprise' && typeof payload.expires === 'number') {\n const msUntilExpiry = payload.expires - Date.now();\n\n if (msUntilExpiry < 0) {\n // eslint-disable-next-line\n console.error(\n `[sdux-vault] Enterprise license expired — organization: \"${payload.organization}\", expired: ${formatLicenseDate(payload.expires)}`\n );\n return false;\n }\n\n const fifteenDaysMs = 15 * 24 * 60 * 60 * 1000;\n if (msUntilExpiry <= fifteenDaysMs) {\n // eslint-disable-next-line\n console.warn(\n `[sdux-vault] Enterprise license expiring soon — organization: \"${payload.organization}\", expires: ${formatLicenseDate(payload.expires)}`\n );\n }\n }\n\n return verified;\n } catch (error) {\n // eslint-disable-next-line\n console.error('[sdux-vault] License token verification failed:', error);\n return false;\n }\n }\n};\n\n/**\n * Imports an RSA public key from PEM format into a WebCrypto `CryptoKey`\n * configured for signature verification.\n *\n * @param pem - A PEM-encoded public key in subjectPublicKeyInfo format.\n * @returns A promise resolving to a usable verification `CryptoKey`.\n */\nasync function importPublicKey(pem: string) {\n const binaryDer = str2ab(pemToDer(pem));\n return crypto.subtle.importKey(\n 'spki',\n binaryDer,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256'\n },\n false,\n ['verify']\n );\n}\n\n/**\n * Converts a PEM-encoded public key into its raw DER body.\n *\n * @param pem - The PEM string containing header/footer markers.\n * @returns A base64-decoded DER binary string.\n */\nfunction pemToDer(pem: string) {\n const b64 = pem.replace(/-----.*KEY-----/g, '').replace(/\\s+/g, '');\n return atob(b64);\n}\n\n/**\n * Converts a binary string into an `ArrayBuffer`, suitable for WebCrypto key\n * import operations.\n *\n * @param str - A binary string.\n * @returns An `ArrayBuffer` containing the same byte values.\n */\nfunction str2ab(str: string): ArrayBuffer {\n const buf = new ArrayBuffer(str.length);\n const arr = new Uint8Array(buf);\n for (let i = 0; i < str.length; i++) arr[i] = str.charCodeAt(i);\n return buf;\n}\n\n/**\n * Formats a license date value for display. Numeric timestamps are\n * formatted as locale-aware date strings; string values such as\n * `'forever'` are returned as-is.\n *\n * @param value - A Unix-epoch millisecond timestamp or a string literal.\n * @returns A human-readable date string.\n */\nfunction formatLicenseDate(value: number | string): string {\n if (typeof value === 'string') return value;\n return new Intl.DateTimeFormat('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric'\n }).format(new Date(value));\n}\n","import { VerifyLicenseToken } from '../verify-license-token.utility';\n\n/**\n * Verifies a signed license payload string.\n *\n * @param licensePayload - The signed license token to verify.\n * @returns A promise resolving to true if the license is valid.\n */\nexport async function verifyLicensePayload(licensePayload: string): Promise<boolean> {\n try {\n if (!licensePayload) {\n return false;\n }\n\n return await VerifyLicenseToken.verify(licensePayload);\n } catch {\n return false;\n }\n}\n","import { VaultLicenseError } from '@sdux-vault/shared';\nimport { LicensingServiceContract } from '../interfaces/licensing/licensing-service.interface';\nimport { LicensingService } from './licensing.service';\n\n/**\n * Abstract base class providing license lifecycle management for behaviors\n * and controllers. Subclasses automatically request a license token during\n * construction when the static `needsLicense` flag is set.\n */\nexport abstract class LicensingAbstract<T> {\n /** Whether this class requires a valid license to operate. */\n static readonly needsLicense: boolean;\n /** Static key assigned by the VaultBehavior or VaultController decorator. */\n static readonly key: string;\n\n /** License token received from the licensing service. */\n #licenseToken!: string;\n /** Key of the FeatureCell this instance belongs to. */\n #featureCellKey: string;\n /** Key identifying this behavior or controller. */\n #key: string;\n\n /** Licensing service used to request and validate licenses. */\n #licenseService: LicensingServiceContract<T>;\n\n /**\n * Creates a new licensing-aware instance and requests a license if required.\n *\n * @param ctx - Context providing the FeatureCell key and optional license payload.\n */\n constructor(ctx: { readonly featureCellKey: string; readonly licensePayload?: unknown }) {\n const ctor = this.constructor as typeof LicensingAbstract;\n\n if (typeof ctor.key !== 'string' || !ctor.key.trim()) {\n throw new VaultLicenseError(\n `LicensingClass requires a static \"key\". Did you forget @VaultBehavior or @VaultController?`\n );\n }\n\n this.#licenseService = LicensingService();\n this.#key = ctor.key;\n this.#featureCellKey = ctx.featureCellKey;\n\n if (ctor.needsLicense) {\n this.#requestLicense();\n }\n }\n\n /** Requests a license token from the licensing service. */\n #requestLicense(): void {\n this.#licenseToken = this.#licenseService.requestLicense(this.#featureCellKey, this.#key);\n }\n\n /**\n * Validates the previously requested license token.\n *\n * @param valid - Whether the license should be marked as approved.\n */\n validateLicense(valid: boolean): void {\n if (!this.#licenseToken) {\n throw new VaultLicenseError(\n `validateLicense() called but no license was requested for \"${this.#featureCellKey}\" and \"${this.#key}\".`\n );\n }\n this.#licenseService.validateLicense(this.#featureCellKey, this.#key, this.#licenseToken, valid);\n }\n}\n","import {\n BehaviorClassContext,\n BehaviorType,\n BehaviorTypes,\n defineBehaviorKey,\n VaultBehavior,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { VAULT_LICENSE_ID } from '../../constants/vault-license-id.constant';\nimport { verifyLicensePayload } from '../../factories/vault/token-validation/utils/verify-license-payload.util';\nimport { LicensingAbstract } from '../../licensing/licensing.abstract';\n\n/**\n * Core license behavior that validates the vault license payload on\n * construction. The behavior extends LicensingAbstract to integrate\n * with the licensing service and gates pipeline execution based on\n * the asynchronous verification result.\n */\n@VaultBehavior({\n type: BehaviorTypes.CoreLicense,\n key: defineBehaviorKey('Core', 'License'),\n critical: true,\n needsLicense: true,\n licenseId: VAULT_LICENSE_ID\n})\nexport class withCoreLicenseBehavior<T> extends LicensingAbstract<T> {\n /** Static behavior type assigned by the VaultBehavior decorator. */\n static readonly type: BehaviorType;\n /** Static behavior key assigned by the VaultBehavior decorator. */\n static override readonly key: string;\n /** Static critical flag assigned by the VaultBehavior decorator. */\n static readonly critical: boolean;\n /** Static license requirement flag assigned by the VaultBehavior decorator. */\n static override readonly needsLicense: boolean;\n\n /** Instance behavior type for core license evaluation. */\n readonly type = BehaviorTypes.CoreLicense;\n /** Instance critical flag indicating this behavior is required. */\n readonly critical = true;\n /** Unique key identifying this behavior instance. */\n readonly key: string;\n\n /**\n * Verifies the license payload asynchronously and reports the result.\n *\n * @param key - Unique key for this behavior instance.\n * @param behaviorCtx - Behavior class context providing the license payload.\n */\n constructor(\n key: string,\n readonly behaviorCtx: BehaviorClassContext\n ) {\n super(behaviorCtx);\n this.key = key;\n\n verifyLicensePayload(this.behaviorCtx.licensePayload as string).then((valid: boolean) =>\n this.validateLicense(valid)\n );\n }\n\n /** No-op destroy handler for this behavior. */\n destroy(): void {\n vaultWarn(`${this.key} - destroy noop`);\n }\n\n /** No-op reset handler for this behavior. */\n reset(): void {\n vaultWarn(`${this.key} - reset noop`);\n }\n}\n","import {\n AfterTapBehaviorContract,\n BeforeTapBehaviorContract,\n BEHAVIOR_META,\n BehaviorClassContract,\n BehaviorContext,\n BehaviorContract,\n BehaviorMetaShape,\n BehaviorType,\n BehaviorTypes,\n ControllerContext,\n CoreEmitStateBehaviorContract,\n CoreEmitStateCallback,\n CoreErrorBehaviorContract,\n CoreStateBehaviorContract,\n createVaultError,\n DecisionOutcomeType,\n DecisionOutcomeTypes,\n DeferredFactory,\n DeferredType,\n EncryptBehaviorContract,\n ErrorCallbackBehaviorContract,\n ErrorTransformBehaviorContract,\n FilterBehaviorContract,\n FilterFunction,\n FinalState,\n InterceptorBehaviorContract,\n isDefined,\n isFunction,\n isHttpResourceRef,\n isNullish,\n isolateValue,\n isPromise,\n isStateInputShape,\n isUndefined,\n isVaultClearState,\n isVaultContinue,\n isVaultNoop,\n MergeBehaviorContract,\n OperationType,\n OperationTypes,\n OperatorBehaviorContract,\n PersistBehaviorContract,\n PipelinePersistValue,\n PipelineUpstreamValue,\n ReduceBehaviorContract,\n ReducerFunction,\n ResolveBehaviorContract,\n ResolveType,\n ResolveTypes,\n StateEmitSnapshotShape,\n StateInputShape,\n StateInputType,\n StepwiseBehaviorContract,\n TapCallback,\n VAULT_CLEAR_STATE,\n VAULT_CONTINUE,\n VAULT_NOOP,\n VAULT_STOP,\n vaultDebug,\n vaultError,\n VaultErrorCallback,\n VaultErrorShape,\n VaultPrivateErrorService,\n VaultPrivateErrorServiceContract,\n VaultUsagePromiseError,\n vaultWarn\n} from '@sdux-vault/shared';\n\nimport { OrchestratorConfig } from '../config/orchestrator.config';\nimport { VAULT_ORCHESTRATOR } from '../constants/vault-orchestrator.constant';\nimport { DecisionEngine } from '../decision-engine/decision-engine';\n\nimport { BehaviorInitializationClass } from '../utils/initialize-behavior.util';\nimport {\n isCoreEmitStateCallbackBehavior,\n isCoreErrorCallbackBehavior,\n isErrorTransformBehavior,\n isSignalStop\n} from '../utils/orchestrator.utils';\n\nimport { isObservable, Subject } from 'rxjs';\nimport { hasVaultLicense } from '../../public-api';\nimport { withCoreLicenseBehavior } from '../behaviors/license/with-core-license.behavior';\nimport { LicensingService } from '../licensing/licensing.service';\nimport { VaultMonitor } from '../monitor/vault-monitor.service';\n\n/**\n * Abstract base class that executes the FeatureCell behavior pipeline in\n * a deterministic stage order. The Orchestrator resolves incoming state,\n * runs operators, filters, reducers, tap callbacks, and persistence\n * stages before committing the final state snapshot.\n */\nexport abstract class Orchestrator<T> {\n /** Registered after-tap callback functions executed post-reduce. */\n #afterTapCallbacks: TapCallback<T>[];\n /** Registered before-tap callback functions executed pre-reduce. */\n #beforeTapCallbacks: TapCallback<T>[];\n /** Full set of instantiated behavior instances for this FeatureCell. */\n #behaviors!: BehaviorContract<T>[];\n /** Subset of behaviors eligible for stage-based pipeline execution. */\n #stageBehaviors!: BehaviorContract<T>[];\n /** Unique key identifying the FeatureCell that owns this orchestrator. */\n protected cellKey: string;\n /** Decision engine used for controller vote evaluation. */\n protected decisionEngine!: DecisionEngine<T>;\n /** Core error behavior responsible for normalizing pipeline errors. */\n #coreErrorBehavior!: CoreErrorBehaviorContract<T>;\n /** Error callback behavior for dispatching errors to user callbacks. */\n #coreErrorCallbackBehavior!: ErrorCallbackBehaviorContract<T>;\n /** Emit-state callback behavior for notifying state change listeners. */\n #emitStateCallbackBehavior!: CoreEmitStateBehaviorContract<T>;\n /** User-provided emit-state callback functions. */\n #emitStateCallbacks!: CoreEmitStateCallback<T>[];\n /** Core state behavior managing snapshot commits and signal emission. */\n #coreStateBehavior!: CoreStateBehaviorContract<T>;\n /** Error transform behaviors for custom error shaping. */\n #errorTransformBehaviors!: ErrorTransformBehaviorContract<T>[];\n /** User-provided error callback functions. */\n #errorCallbacks: VaultErrorCallback<T>[];\n /** Global error service for broadcasting errors across FeatureCells. */\n protected privateErrorService: VaultPrivateErrorServiceContract = VaultPrivateErrorService();\n /** User-provided filter functions applied during the filter stage. */\n #filterFunctions: FilterFunction<T>[] = [];\n /** Initial state value or deferred factory for this FeatureCell. */\n #initialState: T | DeferredType<T>;\n /** Merge behavior responsible for combining partial and current state. */\n #mergeBehavior!: MergeBehaviorContract<T>;\n /** User-provided reducer functions applied during the reduce stage. */\n #reducerFunctions: ReducerFunction<T>[];\n /** Vault monitor instance for tracing pipeline lifecycle events. */\n protected vaultMonitor = VaultMonitor();\n\n /**\n * Initializes the orchestrator with configuration callbacks and initial state.\n *\n * @param config - Orchestrator configuration containing behaviors and callbacks.\n */\n constructor(config: OrchestratorConfig<T>) {\n this.#afterTapCallbacks = config.afterTapCallbacks ?? [];\n this.#beforeTapCallbacks = config.beforeTapCallbacks ?? [];\n this.cellKey = config.cell?.key;\n this.#emitStateCallbacks = config.emitStateCallbacks ?? [];\n this.#errorCallbacks = config.errorCallbacks ?? [];\n this.#filterFunctions = config.filterCallbacks ?? [];\n this.#initialState = config.initialState;\n this.#reducerFunctions = config.reducerCallbacks ?? [];\n }\n\n /** Registers all behaviors from the orchestrator configuration. */\n protected initializeOrchestrator(config: OrchestratorConfig<T>): void {\n config.behaviors = config.behaviors ?? [];\n this.#registerBehaviors(config);\n }\n\n //#region Protected Methods\n\n /** Loads the initial state and runs the first pipeline cycle. */\n protected async initializeFeatureCell(ctx: BehaviorContext<T>): Promise<void> {\n await this.#loadInitialState(ctx);\n }\n\n /** Invokes destroy on all registered behaviors. */\n protected destroyBehaviors(ctx: BehaviorContext<T>): void {\n this.#destroyBehaviors(ctx);\n }\n\n /** Invokes reset on all registered behaviors. */\n protected resetBehaviors(ctx: BehaviorContext<T>): void {\n this.#resetBehaviors(ctx);\n }\n\n /** Routes the pipeline context to the appropriate replace or merge orchestration flow. */\n protected async orchestrate(ctx: BehaviorContext<T>, options?: unknown): Promise<void> {\n // no controllers → pipeline behaves exactly as before\n if (ctx.operation === OperationTypes.Replace) {\n await this.#orchestrateReplace(ctx);\n } else {\n await this.#orchestrateMerge(ctx, options);\n }\n return;\n }\n\n /**\n * Builds a controller context from the current behavior context.\n *\n * @returns The controller context snapshot.\n */\n protected buildControllerCtx(ctx: BehaviorContext<T>): ControllerContext<T> {\n return {\n traceId: ctx.traceId,\n featureCellKey: ctx.featureCellKey,\n snapshot: ctx.lastSnapshot,\n incoming: ctx.incoming,\n operation: ctx.operation\n };\n }\n\n /**\n * Normalizes an incoming state input into a consistent shape.\n *\n * @returns The normalized state input value.\n */\n protected normalizeIncoming<T>(incoming: StateInputType<T>): StateInputType<T> {\n if (!incoming) return null;\n\n if (isHttpResourceRef(incoming) || isObservable(incoming) || isFunction(incoming) || isFunction(incoming)) {\n return incoming;\n }\n\n if (isStateInputShape(incoming)) {\n return isolateValue(incoming);\n }\n\n return {\n value: incoming\n } as StateInputType<T>;\n }\n\n /** Notifies the core state behavior of a controller abort or deny outcome. */\n protected controllerOutcomeNotification(type: DecisionOutcomeType, ctx: BehaviorContext<T>): void {\n switch (type) {\n case DecisionOutcomeTypes.Abort: {\n this.#coreStateBehavior.finalizeControllerAbort(ctx);\n break;\n }\n case DecisionOutcomeTypes.Deny: {\n this.#coreStateBehavior.finalizeControllerDeny(ctx);\n break;\n }\n }\n }\n\n /**\n * Prepares the incoming value and handles noop and clear-state short-circuits.\n *\n * @returns The normalized incoming value or undefined for short-circuit paths.\n */\n protected prepareIncoming(\n ctx: BehaviorContext<T>,\n incoming: StateInputType<T>,\n operation: OperationType\n ): StateInputType<T> | typeof VAULT_NOOP | typeof VAULT_CLEAR_STATE {\n ctx = this.#prepIncomingForOrchestration(ctx, incoming, operation);\n\n const normalizedIncoming = this.#coreStateBehavior.preparePipelineIncoming(ctx);\n\n if (isVaultNoop(normalizedIncoming)) {\n this.vaultMonitor.startCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n this.#runStateBehaviors(ctx);\n this.vaultMonitor.endCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n if (isVaultClearState(normalizedIncoming)) {\n this.vaultMonitor.startCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n this.#resetBehaviors(ctx);\n this.#runStateBehaviors(ctx);\n this.vaultMonitor.endCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n return;\n }\n return normalizedIncoming;\n }\n\n //#endregion\n\n //#region Private Methods\n\n /** Attaches incoming, resolve type, and operation to the behavior context. */\n #prepIncomingForOrchestration(\n ctx: BehaviorContext<T>,\n incoming: StateInputType<T>,\n operation: OperationType\n ): BehaviorContext<T> {\n ctx.incoming = this.normalizeIncoming(incoming) as StateInputShape<T>;\n ctx.resolveType = this.#getResolveType(incoming);\n ctx.operation = operation;\n return ctx;\n }\n\n /** Ensures at most one merge behavior is registered and adds it to the list. */\n #addDefaultMergeBehavior(\n behaviors: BehaviorClassContract<T>[],\n config: OrchestratorConfig<T>\n ): BehaviorClassContract<T>[] {\n const mergeBehaviors = config.behaviors.filter((behaviorClass: BehaviorClassContract) => {\n return (behaviorClass as BehaviorClassContract<T>).type === BehaviorTypes.Merge;\n });\n\n if (mergeBehaviors.length > 1) {\n const names = mergeBehaviors.map((mergeBehavior) => mergeBehavior.key).join(', ');\n\n throw new Error(\n `SDuX Error: More than one MergeBehavior was provided. Only one merge strategy can be active per FeatureCell. Received: ${names}. Fix: Remove additional merge behaviors or combine them into a single behavior.`\n );\n }\n\n if (mergeBehaviors.length === 1) {\n behaviors.push(mergeBehaviors[0]);\n behaviors = behaviors.filter((behavior) => behavior.type !== BehaviorTypes.Merge);\n }\n\n return behaviors;\n }\n\n // ---------------------------------------------------------------------------\n // NORMALIZATION\n // ---------------------------------------------------------------------------\n\n /** Assembles the default behavior set from configuration and internal overrides. */\n #defineDefaultBehaviors(config: OrchestratorConfig<T>): BehaviorClassContract<T>[] {\n let defaultBehaviors = config.defaultBehaviors ?? [];\n\n defaultBehaviors = this.#determineCoreCallbackErrorBehavior(defaultBehaviors, config);\n\n defaultBehaviors = this.#addDefaultMergeBehavior(defaultBehaviors, config);\n\n defaultBehaviors = this.#addCoreEmitStateCallbackBehavior(defaultBehaviors, config);\n\n defaultBehaviors = this.#addCoreLicenseBehavior(defaultBehaviors);\n\n return defaultBehaviors;\n }\n\n /** Removes the error callback behavior when no error callbacks are configured. */\n #determineCoreCallbackErrorBehavior<T>(\n behaviors: BehaviorClassContract<T>[],\n config: OrchestratorConfig<T>\n ): BehaviorClassContract<T>[] {\n if (config?.errorCallbacks?.length === 0) {\n return behaviors.filter((behavior) => behavior.type !== BehaviorTypes.CoreErrorCallback);\n }\n\n return behaviors;\n }\n\n /** Removes the emit-state callback behavior when no emit-state callbacks are configured. */\n #addCoreEmitStateCallbackBehavior<T>(\n behaviors: BehaviorClassContract<T>[],\n config: OrchestratorConfig<T>\n ): BehaviorClassContract<T>[] {\n if (config?.emitStateCallbacks?.length === 0) {\n return behaviors.filter((behavior) => behavior.type !== BehaviorTypes.CoreEmitState);\n }\n\n return behaviors;\n }\n\n /** Conditionally adds the core license behavior when a vault license is active. */\n #addCoreLicenseBehavior<T>(behaviors: BehaviorClassContract<T>[]): BehaviorClassContract<T>[] {\n behaviors = behaviors?.filter((behavior: BehaviorClassContract<T>) => behavior.type !== BehaviorTypes.CoreLicense);\n\n if (hasVaultLicense()) {\n behaviors.push(withCoreLicenseBehavior);\n }\n\n return behaviors;\n }\n\n /** Reports behavior metadata to the licensing service for license validation. */\n #registerBehaviorsWithVault(behaviors: BehaviorClassContract<T>[]): void {\n // eslint-disable-next-line\n const behaviorMetadata = behaviors.map((behavior: any) => {\n const meta = behavior[BEHAVIOR_META] as BehaviorMetaShape;\n\n return {\n key: behavior.key,\n type: meta.type,\n critical: meta.critical,\n needsLicense: meta.needsLicense\n };\n });\n\n LicensingService().describeBehaviors({\n featureCellKey: this.cellKey,\n behaviors: behaviorMetadata\n });\n }\n\n /** Initializes, filters, and registers all behaviors for this FeatureCell. */\n #registerBehaviors(config: OrchestratorConfig<T>): void {\n const defaultBehaviors = this.#defineDefaultBehaviors(config);\n\n // Strip out any user-provided reducers; they are passed separately via `reducers`\n const filteredUserBehaviors = config.behaviors?.filter((behavior: BehaviorClassContract<T>) => {\n return !(\n behavior.type === BehaviorTypes.CoreAfterTap ||\n behavior.type === BehaviorTypes.CoreBeforeTap ||\n behavior.type === BehaviorTypes.CoreError ||\n behavior.type === BehaviorTypes.CoreErrorCallback ||\n behavior.type === BehaviorTypes.CoreEmitState ||\n behavior.type === BehaviorTypes.CoreLicense ||\n behavior.type === BehaviorTypes.CoreState ||\n behavior.type === BehaviorTypes.Filter ||\n behavior.type === BehaviorTypes.FromObservable ||\n behavior.type === BehaviorTypes.FromPromise ||\n behavior.type === BehaviorTypes.FromStream ||\n behavior.type === BehaviorTypes.Reduce ||\n behavior.type === BehaviorTypes.Resolve\n );\n });\n\n config.operators = config.operators ?? [];\n config.interceptors = config.interceptors ?? [];\n\n let allBehaviors: BehaviorClassContract<T>[] = [\n ...defaultBehaviors,\n ...filteredUserBehaviors,\n ...config.operators,\n ...config.interceptors\n ];\n\n const hasTabSync = allBehaviors.some((behavior) => behavior.type === BehaviorTypes.TabSyncState);\n\n if (hasTabSync) {\n allBehaviors = allBehaviors.filter((behavior) => behavior.type !== BehaviorTypes.CoreState);\n }\n\n const behaviorInit = new BehaviorInitializationClass(\n this.cellKey,\n config.lastSnapshot,\n config.state$ as Subject<StateEmitSnapshotShape<unknown>>\n );\n this.#registerBehaviorsWithVault(allBehaviors);\n this.#behaviors = behaviorInit.initializeBehaviors(allBehaviors, config.behaviorConfigs);\n\n this.#registerErrorBehavior();\n this.#registerMergeBehavior();\n this.#registerStageBehaviors();\n this.#registerStateBehavior();\n\n behaviorInit.applyBehaviorExtensions(this.#behaviors, config.cell, this.vaultMonitor);\n }\n\n /** Filters behaviors to only those eligible for stage-based pipeline execution. */\n #registerStageBehaviors(): void {\n // Remove merge behavior from the pipeline list\n this.#stageBehaviors = this.#behaviors.filter(\n (behavior) =>\n !(\n behavior.type === BehaviorTypes.CoreState ||\n behavior.type === BehaviorTypes.TabSyncState ||\n behavior.type === BehaviorTypes.CoreEmitState ||\n behavior.type === BehaviorTypes.CoreError ||\n behavior.type === BehaviorTypes.ErrorTransform ||\n behavior.type === BehaviorTypes.CoreErrorCallback ||\n behavior.type === BehaviorTypes.Merge\n )\n );\n }\n\n /** Extracts and registers the core state and emit-state callback behaviors. */\n #registerStateBehavior(): void {\n const tabSyncState = this.#behaviors.filter((behavior) => behavior.type === BehaviorTypes.TabSyncState);\n const coreState = this.#behaviors.filter((behavior) => behavior.type === BehaviorTypes.CoreState);\n\n const stateBehaviors = tabSyncState.length > 0 ? tabSyncState : coreState;\n\n if (stateBehaviors.length > 1) {\n throw new Error('Only one core state behavior can be registered for a FeatureCell.');\n }\n\n this.#coreStateBehavior = (stateBehaviors[0] as CoreStateBehaviorContract<T>) ?? null;\n\n this.#emitStateCallbackBehavior = this.#behaviors.filter((behavior) =>\n isCoreEmitStateCallbackBehavior(behavior)\n )[0];\n }\n\n /** Extracts and registers the core error, error callback, and error transform behaviors. */\n #registerErrorBehavior(): void {\n // Extract and remove error behavior\n const coreErrors = this.#behaviors.filter((behavior) => behavior.type === BehaviorTypes.CoreError);\n\n if (coreErrors.length > 1) {\n throw new Error('Only one core error behavior can be registered for a FeatureCell.');\n }\n\n this.#coreErrorBehavior = (coreErrors[0] as CoreErrorBehaviorContract<T>) ?? null;\n\n this.#coreErrorCallbackBehavior = this.#behaviors.filter((behavior) => isCoreErrorCallbackBehavior(behavior))[0];\n\n this.#errorTransformBehaviors = this.#behaviors.filter((behavior) => isErrorTransformBehavior(behavior));\n }\n\n /** Extracts and registers the merge behavior from the behavior list. */\n #registerMergeBehavior(): void {\n // Extract and remove merge behavior\n const merges = this.#behaviors.filter((behavior) => behavior.type === BehaviorTypes.Merge);\n this.#mergeBehavior = (merges[0] as MergeBehaviorContract<T>) ?? null;\n }\n\n /**\n * Runs a stepwise behavior and returns its pipeline signal.\n *\n * @returns A noop, clear-state, or continue signal.\n */\n async #runStepwise(\n behaviorType: BehaviorType,\n ctx: BehaviorContext<T>,\n current: PipelineUpstreamValue<T>\n ): Promise<typeof VAULT_NOOP | typeof VAULT_CLEAR_STATE | typeof VAULT_CONTINUE> {\n const stepwise = await this.#runUpstreamStage(behaviorType, ctx, current);\n\n if (isVaultClearState(stepwise)) {\n return VAULT_CLEAR_STATE;\n }\n\n if (isVaultNoop(stepwise)) {\n return VAULT_NOOP;\n }\n\n return VAULT_CONTINUE;\n }\n\n /**\n * Runs the post-resolve pipeline stages and returns the final state data.\n *\n * @returns The pipeline data flow result or a sentinel signal.\n */\n async #finishPipeline(\n ctx: BehaviorContext<T>,\n resolved: PipelineUpstreamValue<T>\n ): Promise<PipelineUpstreamValue<T>> {\n // Stage: operators\n let pipelineDataFlow: PipelineUpstreamValue<T>;\n\n const stepwiseResolve = await this.#runStepwise(BehaviorTypes.StepwiseResolve, ctx, resolved);\n\n if (!isVaultContinue(stepwiseResolve)) {\n return stepwiseResolve;\n }\n\n if (this.#containsOperators()) {\n pipelineDataFlow = await this.#runOperatorStage(ctx, resolved);\n\n // Halt pipeline on noop\n if (isVaultNoop(pipelineDataFlow)) return VAULT_NOOP;\n } else {\n pipelineDataFlow = resolved;\n }\n\n // Stage: filter\n pipelineDataFlow = await this.#runUpstreamStage(BehaviorTypes.Filter, ctx, pipelineDataFlow);\n\n const stepwiseFilter = await this.#runStepwise(BehaviorTypes.StepwiseFilter, ctx, pipelineDataFlow);\n\n if (!isVaultContinue(stepwiseFilter)) {\n return stepwiseFilter;\n }\n\n await this.#runUpstreamStage(BehaviorTypes.CoreBeforeTap, ctx, isolateValue(pipelineDataFlow));\n\n // Stage: reduce\n pipelineDataFlow = await this.#runUpstreamStage(BehaviorTypes.Reduce, ctx, pipelineDataFlow);\n\n const stepwiseReducer = await this.#runStepwise(BehaviorTypes.StepwiseReducer, ctx, pipelineDataFlow);\n\n if (!isVaultContinue(stepwiseReducer)) {\n return stepwiseReducer;\n }\n\n await this.#runUpstreamStage(BehaviorTypes.CoreAfterTap, ctx, isolateValue(pipelineDataFlow));\n\n // Clone AFTER reduce for purity\n const stateData = isolateValue(pipelineDataFlow);\n\n let persistPipelineValue = stateData as PipelinePersistValue<T>;\n // Stage: encrypt\n persistPipelineValue = await this.#runPersistStage(BehaviorTypes.Encrypt, ctx, persistPipelineValue);\n\n // Stage: persist\n await this.#runPersistStage(BehaviorTypes.Persist, ctx, persistPipelineValue);\n\n // Commit the *cloned* pre-encrypted snapshot to signals\n return stateData;\n }\n\n /** Orchestrates a full replace pipeline cycle for the current attempt. */\n async #orchestrateReplace(ctx: BehaviorContext<T>): Promise<void> {\n this.vaultMonitor.startReplace(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n await this.#safeAsync(async () => {\n let finalState!: FinalState<T>;\n finalState = await this.#runInterceptorStage(ctx);\n\n if (!isSignalStop(finalState)) {\n const resolved = await this.#runUpstreamStage(BehaviorTypes.Resolve, ctx, undefined);\n\n if (isVaultClearState(resolved)) {\n finalState = VAULT_CLEAR_STATE;\n } else {\n finalState = await this.#finishPipeline(ctx, resolved);\n }\n }\n\n return this.#handleFinalState(finalState, ctx);\n }, ctx);\n }\n\n /** Orchestrates a full merge pipeline cycle for the current attempt. */\n async #orchestrateMerge(ctx: BehaviorContext<T>, options?: unknown): Promise<void> {\n this.vaultMonitor.startMerge(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n await this.#safeAsync(async () => {\n const safeCurrent = isolateValue(ctx.lastSnapshot.value);\n\n let finalState!: FinalState<T>;\n finalState = await this.#runInterceptorStage(ctx);\n\n if (!isSignalStop(finalState)) {\n const partial = await this.#runUpstreamStage(BehaviorTypes.Resolve, ctx, undefined);\n\n const safePartial = isolateValue(partial);\n\n this.vaultMonitor.startComputeMerge(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n // eslint-disable-next-line\n const mergeResult = await this.#mergeBehavior.computeMerge(safeCurrent, safePartial, options as any);\n\n this.vaultMonitor.endComputeMerge(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n if (isVaultClearState(mergeResult)) {\n finalState = VAULT_CLEAR_STATE;\n } else {\n const stateResult = isolateValue(mergeResult);\n finalState = await this.#finishPipeline(ctx, stateResult);\n }\n }\n return await this.#handleFinalState(finalState, ctx);\n }, ctx);\n }\n\n /**\n * Emits monitor events for the final pipeline state and returns the result.\n *\n * @returns The final state value passed through.\n */\n async #handleFinalState(finalState: FinalState<T>, ctx: BehaviorContext<T>): Promise<FinalState<T>> {\n let payload: unknown;\n\n if (isSignalStop(finalState)) {\n payload = { pipelinePaused: true };\n } else if (isVaultClearState(finalState)) {\n payload = { pipelineStateCleared: true };\n } else if (isUndefined(finalState) || isVaultNoop(finalState)) {\n payload = { noop: true };\n }\n\n if (ctx.operation === OperationTypes.Replace) {\n this.vaultMonitor.endReplace(this.cellKey, VAULT_ORCHESTRATOR, ctx, payload);\n } else {\n this.vaultMonitor.endMerge(this.cellKey, VAULT_ORCHESTRATOR, ctx, payload);\n }\n\n return finalState;\n }\n\n /** Wraps an async pipeline function with error handling and state finalization. */\n async #safeAsync(fn: () => Promise<FinalState<T>>, ctx: BehaviorContext<T>): Promise<void> {\n try {\n const result = await fn();\n\n this.vaultMonitor.startCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n if (isSignalStop(result)) {\n this.#coreStateBehavior.finalizePipelineVaultStop(ctx);\n } else {\n this.#coreStateBehavior.finalizePipelineState(result, ctx);\n }\n\n await this.#runStateBehaviors(ctx);\n this.vaultMonitor.endCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n this.decisionEngine?.notifySuccess(this.buildControllerCtx(ctx));\n } catch (err) {\n const pipelineError = await this.#runErrorBehaviors(err, ctx);\n\n await this.decisionEngine?.notifyFailure(this.buildControllerCtx(ctx), pipelineError);\n }\n }\n\n /**\n * Iterates through behaviors matching the given stage and applies each one.\n *\n * @returns The accumulated pipeline value after all stage behaviors execute.\n */\n async #runUpstreamStage(\n stage: BehaviorType,\n ctx: BehaviorContext<T>,\n current: PipelineUpstreamValue<T>\n ): Promise<PipelineUpstreamValue<T>> {\n let stageBehaviors: BehaviorContract<T>[];\n if (stage === BehaviorTypes.Resolve) {\n stageBehaviors = this.#stageBehaviors.filter((behavior): behavior is ResolveBehaviorContract<T> => {\n return (behavior as ResolveBehaviorContract<T>).resolveType === ctx.resolveType && behavior.type === stage;\n });\n } else {\n stageBehaviors = this.#stageBehaviors.filter((behavior) => {\n return behavior.type === stage;\n });\n }\n\n for (const behavior of stageBehaviors) {\n let next: PipelineUpstreamValue<T>;\n\n try {\n switch (stage) {\n case BehaviorTypes.Resolve:\n if (typeof (behavior as ResolveBehaviorContract<T>).computeResolve === 'function') {\n this.vaultMonitor.startResolve(this.cellKey, behavior.key, ctx);\n\n next = await (behavior as ResolveBehaviorContract<T>).computeResolve(ctx);\n\n if (isDefined(next)) current = isolateValue(next);\n\n this.vaultMonitor.endResolve(this.cellKey, behavior.key, ctx);\n }\n break;\n\n case BehaviorTypes.StepwiseResolve:\n case BehaviorTypes.StepwiseFilter:\n case BehaviorTypes.StepwiseReducer:\n if (typeof (behavior as StepwiseBehaviorContract<T>).evaluateStepwise === 'function') {\n this.vaultMonitor.startStepwise(this.cellKey, behavior.key, ctx);\n\n const safeCurrent = isolateValue(ctx.lastSnapshot.value);\n const safeCandidate = isolateValue(current);\n next = await (behavior as StepwiseBehaviorContract<T>).evaluateStepwise(\n safeCurrent,\n safeCandidate,\n ctx.featureCellKey\n );\n\n this.vaultMonitor.endStepwise(this.cellKey, behavior.key, ctx);\n }\n break;\n\n case BehaviorTypes.Filter:\n if (typeof (behavior as FilterBehaviorContract<T>).applyFilter === 'function') {\n for (const filter of this.#filterFunctions) {\n this.vaultMonitor.startFilter(this.cellKey, behavior.key, ctx);\n const safeCurrent = isolateValue(current);\n\n const nextValue = await (behavior as FilterBehaviorContract<T>).applyFilter(safeCurrent, filter);\n\n this.vaultMonitor.endFilter(this.cellKey, behavior.key, ctx);\n if (isDefined(nextValue)) {\n current = isolateValue(nextValue);\n }\n }\n }\n break;\n\n case BehaviorTypes.CoreBeforeTap:\n if (typeof (behavior as BeforeTapBehaviorContract<T>).applyBeforeTap === 'function') {\n for (const beforeTap of this.#beforeTapCallbacks) {\n this.vaultMonitor.startBeforeTap(this.cellKey, behavior.key, ctx);\n\n const safeCurrent = isolateValue(current);\n\n await (behavior as BeforeTapBehaviorContract<T>).applyBeforeTap(safeCurrent, beforeTap);\n this.vaultMonitor.endBeforeTap(this.cellKey, behavior.key, ctx);\n }\n }\n break;\n\n case BehaviorTypes.Reduce:\n if (typeof (behavior as ReduceBehaviorContract<T>).applyReducer === 'function') {\n if (isUndefined(current) && this.#reducerFunctions.length > 0) {\n throw new Error(\n `[vault] Reducer stage received undefined state in FeatureCell \"${this.cellKey}\", but reducers are registered.`\n );\n }\n\n for (const reducer of this.#reducerFunctions) {\n this.vaultMonitor.startReducer(this.cellKey, behavior.key, ctx);\n\n const safeCurrent = isolateValue(current);\n\n const nextValue = await (behavior as ReduceBehaviorContract<T>).applyReducer(safeCurrent, reducer);\n\n this.vaultMonitor.endReducer(this.cellKey, behavior.key, ctx);\n if (isDefined(nextValue)) {\n current = isolateValue(nextValue);\n }\n }\n }\n break;\n\n case BehaviorTypes.CoreAfterTap:\n if (typeof (behavior as AfterTapBehaviorContract<T>).applyAfterTap === 'function') {\n for (const afterTap of this.#afterTapCallbacks) {\n this.vaultMonitor.startAfterTap(this.cellKey, behavior.key, ctx);\n const safeCurrent = isolateValue(current);\n\n await (behavior as AfterTapBehaviorContract<T>).applyAfterTap(safeCurrent, afterTap);\n this.vaultMonitor.endAfterTap(this.cellKey, behavior.key, ctx);\n }\n }\n break;\n }\n } catch (err) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n throw err;\n }\n\n if (isDefined(next)) current = isolateValue(next);\n }\n\n return current;\n }\n\n /**\n * Runs interceptor behaviors and returns a stop signal if any interceptor halts the pipeline.\n *\n * @returns Undefined to continue or VAULT_STOP to halt.\n */\n async #runInterceptorStage(ctx: BehaviorContext<T>): Promise<undefined | typeof VAULT_STOP> {\n const interceptorBehaviors = this.#stageBehaviors.filter(\n (behavior): behavior is InterceptorBehaviorContract<T> => behavior.type === BehaviorTypes.Interceptor\n );\n\n for (const behavior of interceptorBehaviors) {\n try {\n this.vaultMonitor.startInterceptor(this.cellKey, behavior.key, ctx);\n\n ctx.incoming = isolateValue(ctx.incoming);\n\n const nextIncoming = await behavior.applyInterceptor(ctx);\n\n if (isSignalStop(nextIncoming)) {\n this.vaultMonitor.endInterceptor(this.cellKey, behavior.key, ctx, { pipelinePaused: true });\n return VAULT_STOP;\n }\n\n this.vaultMonitor.endInterceptor(this.cellKey, behavior.key, ctx);\n } catch (err) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n throw err;\n }\n }\n\n return;\n }\n\n /** Returns whether any operator behaviors are registered in the pipeline. */\n #containsOperators(): boolean {\n const operatorBehaviors = this.#stageBehaviors.filter((behavior) => behavior.type === BehaviorTypes.Operator);\n return operatorBehaviors.length > 0;\n }\n\n /**\n * Runs operator behaviors in sequence and returns the transformed value.\n *\n * @returns The pipeline value after all operators execute or undefined on noop.\n */\n async #runOperatorStage(\n ctx: BehaviorContext<T>,\n current: PipelineUpstreamValue<T>\n ): Promise<PipelineUpstreamValue<T>> {\n const operatorBehaviors = this.#stageBehaviors.filter(\n (behavior): behavior is OperatorBehaviorContract<T> => behavior.type === BehaviorTypes.Operator\n );\n\n for (const behavior of operatorBehaviors) {\n try {\n this.vaultMonitor.startOperator(this.cellKey, behavior.key, ctx);\n\n const safeCurrent = isolateValue(current);\n const next = await behavior.applyOperator(safeCurrent);\n\n if (isUndefined(next)) {\n // short-circuit pipeline — operator decided to block this write\n this.vaultMonitor.endOperator(this.cellKey, behavior.key, ctx, { noop: true });\n return undefined;\n }\n\n current = isolateValue(next);\n this.vaultMonitor.endOperator(this.cellKey, behavior.key, ctx);\n } catch (err) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n throw err;\n }\n }\n\n return current;\n }\n\n /**\n * Runs encrypt and persist behaviors in sequence for state persistence.\n *\n * @returns The pipeline persist value after all stage behaviors execute.\n */\n async #runPersistStage(\n stage: BehaviorType,\n ctx: BehaviorContext<T>,\n current: PipelinePersistValue<T>\n ): Promise<PipelinePersistValue<T>> {\n let stageBehaviors: BehaviorContract<T>[];\n stageBehaviors = this.#stageBehaviors.filter((behavior) => behavior.type === stage);\n\n for (const behavior of stageBehaviors) {\n try {\n switch (stage) {\n case BehaviorTypes.Encrypt:\n if (typeof (behavior as EncryptBehaviorContract<T>).encryptState === 'function') {\n this.vaultMonitor.startEncrypt(this.cellKey, behavior.key, ctx);\n const safeCurrent = isolateValue(current);\n\n const nextValue = await (behavior as EncryptBehaviorContract<T>).encryptState(ctx, safeCurrent);\n this.vaultMonitor.endEncrypt(this.cellKey, behavior.key, ctx);\n\n if (isDefined(nextValue)) {\n current = isolateValue(nextValue);\n }\n }\n\n break;\n\n case BehaviorTypes.Persist:\n if (typeof (behavior as PersistBehaviorContract<T>).persistState === 'function') {\n this.vaultMonitor.startPersist(this.cellKey, behavior.key, ctx);\n const safeCurrent = isolateValue(current);\n await (behavior as PersistBehaviorContract<T>).persistState(safeCurrent);\n this.vaultMonitor.endPersist(this.cellKey, behavior.key, ctx);\n }\n break;\n }\n } catch (err) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n throw err;\n }\n }\n\n return current;\n }\n\n /** Invokes destroy on each registered behavior with monitor tracing. */\n #destroyBehaviors(ctx: BehaviorContext<T>): void {\n for (const behavior of this.#behaviors) {\n this.vaultMonitor.startDestroy(this.cellKey, behavior.key, ctx);\n try {\n behavior.destroy?.(ctx);\n this.vaultMonitor.endDestroy(this.cellKey, behavior.key, ctx);\n } catch (err) {\n vaultError(`${behavior.key} destroy() failed`, err);\n this.vaultMonitor.endDestroy(this.cellKey, behavior.key, ctx, { destroyFailed: true });\n }\n }\n }\n\n /** Invokes reset on each registered behavior with monitor tracing. */\n #resetBehaviors(ctx: BehaviorContext<T>): void {\n for (const behavior of this.#behaviors) {\n this.vaultMonitor.startReset(this.cellKey, behavior.key, ctx);\n try {\n behavior.reset?.(ctx);\n this.vaultMonitor.endReset(this.cellKey, behavior.key, ctx);\n } catch (err) {\n vaultError(`${behavior.key} reset() failed`, err);\n this.vaultMonitor.endReset(this.cellKey, behavior.key, ctx, { resetFailed: true });\n }\n }\n }\n\n /** Runs emit-state callbacks with an isolated snapshot clone. */\n async #runStateBehaviors(ctx: BehaviorContext<T>): Promise<void> {\n if (this.#emitStateCallbacks?.length > 0) {\n const lastSnapshotClone = isolateValue(ctx.lastSnapshot);\n this.vaultMonitor.startCoreEmitState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n for (const callback of this.#emitStateCallbacks) {\n await this.#emitStateCallbackBehavior.emitState(lastSnapshotClone, callback);\n }\n this.vaultMonitor.endCoreEmitState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n }\n\n /**\n * Runs error normalization, transforms, state commit, and callbacks in sequence.\n *\n * @returns The final normalized vault error shape.\n */\n async #runErrorBehaviors(rawError: unknown, ctx: BehaviorContext<T>): Promise<VaultErrorShape> {\n let current: VaultErrorShape;\n\n /**\n * The order is\n *\n * Core Error\n * Transforms\n * State\n * Callbacks\n * Global Error Service\n */\n\n // ---- Core error normalization (trusted) ----\n try {\n this.vaultMonitor.startCoreError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n current = await this.#coreErrorBehavior.handleError(rawError, ctx.featureCellKey);\n\n vaultDebug(`${this.cellKey} #runErrorBehaviors starting with base ResourceError: ${JSON.stringify(current)}`);\n } catch (err) {\n vaultError('[vault] Core error normalization failed', err);\n current = createVaultError(rawError, ctx.featureCellKey);\n } finally {\n this.vaultMonitor.endCoreError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n // ---- Error behaviors (untrusted, isolated) ----\n for (const behavior of this.#errorTransformBehaviors) {\n try {\n this.vaultMonitor.startErrorTransform(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n const result = await behavior.transformError(\n isolateValue(rawError),\n isolateValue(current),\n isolateValue(ctx.lastSnapshot)\n );\n\n if (!isVaultNoop(result) && !isNullish(result)) {\n current = result as VaultErrorShape;\n }\n } catch (err) {\n vaultError(`[vault] ErrorBehavior \"${behavior.key}\" threw during error handling`, err);\n } finally {\n this.vaultMonitor.endErrorTransform(this.cellKey, VAULT_ORCHESTRATOR, ctx, current);\n }\n }\n\n // ---- Commit error state (trusted, must run) ----\n try {\n this.vaultMonitor.startCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n await this.#coreStateBehavior.finalizePipelineError(current, ctx);\n await this.#runStateBehaviors(ctx);\n } catch (err) {\n vaultError('[vault] Failed to finalize error state', err);\n } finally {\n this.vaultMonitor.endCoreState(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n try {\n this.vaultMonitor.startGlobalError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n await this.privateErrorService.setError(isolateValue(current));\n } catch (err) {\n // istanbul ignore next -- defensive only not testable\n vaultError('[vault] global error service', err);\n } finally {\n this.vaultMonitor.endGlobalError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n // ---- Error callbacks (untrusted, isolated) ----\n if (this.#errorCallbacks?.length > 0) {\n this.vaultMonitor.startCoreCallbackError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n\n for (const callback of this.#errorCallbacks) {\n try {\n await this.#coreErrorCallbackBehavior.callbackError(\n isolateValue(current),\n isolateValue(ctx.lastSnapshot),\n callback\n );\n } catch (err) {\n vaultError('[vault] Error callback threw during error handling', err);\n }\n }\n\n this.vaultMonitor.endCoreCallbackError(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n\n vaultDebug(`${this.cellKey} #runErrorBehaviors completed with final ResourceError: ${JSON.stringify(current)}`);\n return current;\n }\n\n /**\n * Determines the resolve type for the incoming state input.\n *\n * @returns The resolve type matching the incoming value shape.\n */\n #getResolveType<TIncoming>(incoming: StateInputType<TIncoming>): ResolveType {\n if (isHttpResourceRef(incoming)) {\n return ResolveTypes.HttpResource;\n } else if (isObservable(incoming)) {\n return ResolveTypes.Observable;\n } else if (isFunction(incoming) || isFunction((incoming as DeferredFactory<T>)?.value)) {\n return ResolveTypes.Promise;\n } else if (isPromise(incoming) || isPromise((incoming as StateInputShape<T>)?.value)) {\n throw new VaultUsagePromiseError();\n } else {\n return ResolveTypes.Value;\n }\n }\n\n /** Loads the initial state from persistence, configuration, or a deferred factory. */\n async #loadInitialState(ctx: BehaviorContext<T>): Promise<void> {\n const incoming = {\n value: undefined,\n loading: false,\n error: null\n } as StateInputShape<T>;\n\n let value: T | DeferredType<T> | undefined = undefined;\n\n if (isFunction(this.#initialState)) {\n value = this.#initialState;\n } else {\n const persistBehaviors = this.#getPersistedBehaviors();\n\n if (persistBehaviors.length > 0) {\n const persistedInitalValue = await this.#loadInitialPersistedState(ctx, persistBehaviors);\n if (isDefined(persistedInitalValue)) {\n vaultDebug('Persisted data loaded from storage');\n value = persistedInitalValue as T;\n }\n } else if (!isNullish(this.#initialState)) {\n this.vaultMonitor.startSetInitialValue(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n vaultDebug('Initialized data loaded from descriptor.initial');\n\n value = this.#initialState;\n\n this.vaultMonitor.endSetInitialValue(this.cellKey, VAULT_ORCHESTRATOR, ctx);\n }\n }\n\n incoming.value = value;\n\n if (!isNullish(incoming.value)) {\n await this.orchestrate(this.#prepIncomingForOrchestration(ctx, incoming, OperationTypes.Replace));\n } else {\n this.decisionEngine?.notifySuccess(this.buildControllerCtx(ctx));\n }\n }\n\n /**\n * Returns persist behaviors registered for this FeatureCell.\n *\n * @returns Array of persist behavior instances.\n */\n #getPersistedBehaviors(): PersistBehaviorContract<T>[] {\n return this.#stageBehaviors.filter(\n (behavior) => behavior.type === BehaviorTypes.Persist\n ) as PersistBehaviorContract<T>[];\n }\n\n /**\n * Loads persisted state and decrypts it if encryption behaviors are registered.\n *\n * @returns The loaded and optionally decrypted state or undefined on failure.\n */\n async #loadInitialPersistedState(\n ctx: BehaviorContext<T>,\n persistBehaviors: PersistBehaviorContract<T>[]\n ): Promise<PipelineUpstreamValue<T>> {\n let loaded: PipelineUpstreamValue<T> = undefined;\n\n for (const behavior of persistBehaviors) {\n try {\n this.vaultMonitor.startLoadPersist(this.cellKey, behavior.key, ctx);\n loaded = await behavior.loadState?.();\n if (isDefined(loaded)) {\n this.vaultMonitor.endLoadPersist(this.cellKey, behavior.key, ctx);\n break;\n } else {\n this.vaultMonitor.endLoadPersist(this.cellKey, behavior.key, ctx, { noop: true });\n }\n // eslint-disable-next-line\n } catch (err: any) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n vaultWarn(`\"[vault] persist.loadState()\" for ${behavior.key} failed with ${err.message}`);\n }\n }\n\n const decryptBehaviors = this.#stageBehaviors.filter((behavior) => {\n return behavior.type === BehaviorTypes.Encrypt;\n }) as unknown as EncryptBehaviorContract<T>[];\n\n if (isDefined(loaded) && decryptBehaviors.length > 0) {\n for (const behavior of decryptBehaviors) {\n try {\n this.vaultMonitor.startDecrypt(this.cellKey, behavior.key, ctx);\n\n const decrypted = await behavior.decryptState?.(ctx, loaded);\n\n if (isDefined(decrypted)) {\n this.vaultMonitor.endDecrypt(this.cellKey, behavior.key, ctx);\n loaded = isolateValue(decrypted);\n } else {\n this.vaultMonitor.endDecrypt(this.cellKey, behavior.key, ctx, { noop: true });\n }\n // eslint-disable-next-line\n } catch (err: any) {\n this.vaultMonitor.runtimeError(this.cellKey, behavior.key, ctx, err);\n vaultWarn(`\"[vault] encrypt.decryptState()\" for ${behavior.key} failed with ${err.message}`);\n return undefined;\n }\n }\n }\n\n return loaded;\n }\n //#endregion\n}\n","/** Enumeration of conductor license evaluation statuses. */\nexport const ConductorLicenseStatusTypes = {\n Pending: 'pending',\n Approved: 'approved',\n Denied: 'denied'\n} as const;\n\n/** Union type of all conductor license status values. */\nexport type ConductorLicenseStatusType = (typeof ConductorLicenseStatusTypes)[keyof typeof ConductorLicenseStatusTypes];\n","// projects/core/src/lib/services/vault-controller-lifecycle.service.ts\nimport {\n CONTROLLER_META,\n ControllerClassContext,\n ControllerClassContract,\n ControllerContract,\n ControllerMetaShape,\n ControllerTypes,\n validateControllerKey,\n vaultDebug,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Subject } from 'rxjs';\nimport {\n getLicensePayload,\n hasVaultLicense,\n isAuthorizedKey,\n isBypassLicensing\n} from '../factories/vault/vault-core.function';\nimport { ControllerInitializationClassContract } from '../interfaces/controller/controller-initialization.interface';\nimport { ControllerEventShape } from '../shapes/controller/controller-event.shape';\nimport { ControllerEventTypes } from '../types/controller-event.type';\n\n/**\n * Manages instantiation and validation of controllers for a FeatureCell.\n *\n * This class is responsible for constructing controller instances from\n * declared controller classes, validating required metadata, enforcing\n * uniqueness of controller keys, and wiring controller revote callbacks\n * into the controller event stream.\n */\nexport class ControllerInitializationClass implements ControllerInitializationClassContract {\n /** Tracks whether controller initialization has already occurred. */\n #initialized = false;\n\n /** FeatureCell identifier associated with this initializer. */\n #cellKey: string;\n\n /**\n * Creates a new initializer for a specific FeatureCell.\n *\n * @param cellKey - The unique FeatureCell key.\n */\n constructor(cellKey: string) {\n this.#cellKey = cellKey;\n }\n\n /**\n * Instantiates and validates all controllers declared for a FeatureCell.\n *\n * This method enforces one-time initialization, validates controller\n * metadata and key format, ensures uniqueness of controller keys, and\n * injects a revote callback that emits controller lifecycle events.\n *\n * @typeParam T - The FeatureCell state value type.\n * @param controllerClasses - Controller class definitions to instantiate.\n * @param events$ - Subject used to emit controller lifecycle events.\n * @returns An ordered array of instantiated controller objects.\n */\n initializeControllers<T>(\n controllerClasses: Array<ControllerClassContract<T>>,\n events$: Subject<ControllerEventShape>,\n controllerConfigs: Map<string, unknown>\n ): ControllerContract<T>[] {\n if (this.#initialized)\n throw new Error(\n `[vault] VaultControllerRunner already initialized — cannot reissue core controller ID for feature cell \"${this.#cellKey}\".`\n );\n\n this.#initialized = true;\n\n if (!controllerClasses || controllerClasses.length === 0) return [];\n\n const seenKeys = new Set<string>();\n\n return (\n controllerClasses\n // eslint-disable-next-line\n .map((ControllerClass: any) => {\n let isCritical = false;\n\n try {\n if (typeof ControllerClass !== 'function') return;\n\n const meta = ControllerClass[CONTROLLER_META] as ControllerMetaShape | undefined;\n\n if (!meta) {\n isCritical = true;\n throw new Error(`[vault] Controller \"${ControllerClass.name}\" missing @VaultController metadata.`);\n }\n\n const controllerKey = meta.key;\n const controllerType = meta.type;\n\n if (!controllerKey) {\n isCritical = true;\n throw new Error(`[vault] Controller metadata missing \"key\".`);\n }\n\n if (!hasVaultLicense()) {\n if (!isAuthorizedKey(controllerKey)) {\n vaultDebug(`[vault] Unlicensed controller \"${controllerKey}\" skipped during initialization.`);\n return;\n }\n }\n\n if (!controllerType) {\n isCritical = true;\n throw new Error(`[vault] Controller metadata missing \"type\" for \"${controllerKey}\".`);\n }\n\n let controllerConfig: unknown = undefined;\n\n if (meta.wantsConfig) {\n if (!meta.configKey) {\n isCritical = true;\n throw new Error(`[vault] Controller \"${controllerKey}\" declares wantsConfig but has no configKey.`);\n }\n\n controllerConfig = controllerConfigs.get(meta.configKey);\n }\n\n let licensePayload: unknown = undefined;\n if (meta.needsLicense && !isBypassLicensing()) {\n if (!meta.licenseId) {\n isCritical = true;\n throw new Error(`[vault] Controller \"${controllerKey}\" declares needsLicense but has no licenseId.`);\n }\n\n licensePayload = getLicensePayload(meta.licenseId);\n\n if (licensePayload === undefined) {\n isCritical = true;\n throw new Error(\n `[vault] License \"${meta.licenseId}\" required by controller \"${controllerKey}\" is not registered in Vault config.`\n );\n }\n }\n\n const controllerClassContext = {\n featureCellKey: this.#cellKey,\n requestRevote: (traceId: string) => {\n events$.next({\n traceId,\n type: ControllerEventTypes.Revote\n });\n },\n requestAbort: (traceId: string) => {\n events$.next({\n traceId,\n type: ControllerEventTypes.Abort\n });\n },\n controllerConfig,\n licensePayload\n } as ControllerClassContext;\n\n if (controllerType === ControllerTypes.License) {\n controllerClassContext.licenseDenied = (traceId: string) => {\n events$.next({\n traceId,\n type: ControllerEventTypes.LicenseDenied\n });\n };\n controllerClassContext.licenseApproved = (traceId: string) => {\n events$.next({\n traceId,\n type: ControllerEventTypes.LicenseApproved\n });\n };\n }\n\n const instance = new ControllerClass(controllerKey, controllerClassContext);\n\n if (!instance.key) {\n isCritical = true;\n throw new Error(\n `[vault] Controller missing key for type \"${controllerType}\". Every controller must define a unique \"key\".`\n );\n }\n\n if (!validateControllerKey(instance.key)) {\n isCritical = true;\n throw new Error(\n `[vault] Controller key \"${instance.key}\" not valid format for \"${controllerType}\" controller.`\n );\n }\n\n if (instance.key && seenKeys.has(instance.key)) {\n vaultWarn(`[vault] Skipping duplicate controller with key \"${instance.key}\"`);\n return null;\n }\n\n if (instance.key) seenKeys.add(instance.key);\n\n return instance;\n } catch (err) {\n if (isCritical) {\n throw err;\n }\n\n // eslint-disable-next-line\n vaultWarn(`[vault] Non-critical controller initialization failed: ${(err as any)?.message}`);\n return null;\n }\n })\n .filter((controller): controller is ControllerContract<T> => !!controller)\n );\n }\n}\n","import {\n BehaviorContext,\n CONTROLLER_META,\n ControllerClassContract,\n ControllerContext,\n ControllerContract,\n ControllerDecisionShape,\n ControllerMetaShape,\n ControllerTypes,\n createVaultError,\n DecisionOutcomeType,\n DecisionOutcomeTypes,\n DevMode,\n isolateValue,\n isVaultClearState,\n isVaultNoop,\n OperationType,\n OperationTypes,\n StateInputType,\n vaultDebug,\n vaultError\n} from '@sdux-vault/shared';\n\nimport { firstValueFrom, map, Observable, Subject, tap } from 'rxjs';\nimport { ConductorConfig } from '../config/conductor.config';\nimport { VAULT_CONDUCTOR } from '../constants/vault-conductor.constant';\nimport { withCoreAbstainController } from '../controllers/abstain/with-core-abstrain.controller';\nimport { withCoreErrorController } from '../controllers/error/with-core-error.controller';\nimport { withCoreLicenseController } from '../controllers/license/with-core-license.controller';\nimport { DecisionEngine } from '../decision-engine/decision-engine';\nimport { LicensingService } from '../licensing/licensing.service';\nimport { Orchestrator } from '../orchestrator/orchestrator';\nimport { PendingAttemptShape } from '../shapes/conductor/pending-attempt.shape';\nimport { ControllerEventShape } from '../shapes/controller/controller-event.shape';\nimport { ConductorLicenseStatusType, ConductorLicenseStatusTypes } from '../types/conductor-license-status.type';\nimport { ControllerEventType, ControllerEventTypes } from '../types/controller-event.type';\nimport { ControllerInitializationClass } from '../utils/initialize-controller.util';\nimport { assignTraceId } from '../utils/orchestrator.utils';\n\n/**\n * Coordinates pipeline execution, controller arbitration, and license\n * gating for a single FeatureCell. The Conductor serializes pipeline\n * attempts through a FIFO queue and delegates vote resolution to the\n * DecisionEngine.\n */\nexport class Conductor<T> extends Orchestrator<T> {\n /** FIFO queue of pending pipeline attempts awaiting controller evaluation. */\n readonly #attemptQueue: PendingAttemptShape<T>[] = [];\n /** Instantiated controller instances for this FeatureCell. */\n #controllers: ControllerContract<T>[] = [];\n /** Subject emitting controller lifecycle events to the decision engine. */\n readonly #events$ = new Subject<ControllerEventShape>();\n /** Whether the conductor is currently processing an attempt. */\n #processing = false;\n /** Whether the conductor is in a deny state for test flushing. */\n #isDenyStateForTesting = false;\n /** Current license evaluation status for this conductor. */\n #conductorLicenseStatus: ConductorLicenseStatusType = ConductorLicenseStatusTypes.Pending;\n\n /** Subject signaling when the conductor has settled for DevMode testing. */\n #settled$ = new Subject<void>();\n\n /**\n * Creates a new Conductor and initializes controllers and licensing.\n *\n * @param config - Configuration describing behaviors, controllers, and callbacks.\n */\n constructor(config: ConductorConfig<T>) {\n super(config);\n\n LicensingService<T>().describeFeature({\n featureCellKey: config.cell.key,\n fluentApis: {\n filters: config.filterCallbacks,\n reducers: config.reducerCallbacks,\n beforeTaps: config.beforeTapCallbacks,\n afterTaps: config.afterTapCallbacks,\n emitStateCallbacks: config.emitStateCallbacks,\n errorCallbacks: config.errorCallbacks\n }\n });\n\n if (DevMode.active) {\n // eslint-disable-next-line\n (this as any).vaultSettled = this.#conductorSettled.bind(this);\n }\n\n this.#registerControllers(config);\n\n this.vaultMonitor.conductorLicenseAttempt(this.cellKey, `${this.cellKey}::license`);\n\n this.initializeOrchestrator(config);\n }\n\n /**\n * Enqueues an initialization attempt for the FeatureCell pipeline.\n *\n * @param ctx - Behavior context for the initialization cycle.\n */\n initialize(ctx: BehaviorContext<T>): void {\n const initCtx = this.#buildPipelineCtx(ctx, OperationTypes.Initialize, undefined);\n\n this.#enqueueAttempt({\n behaviorCtx: initCtx,\n controllerCtx: this.buildControllerCtx(initCtx),\n options: undefined\n });\n }\n\n //#region public method\n\n /**\n * Enqueues a pipeline attempt for a merge or replace operation.\n *\n * @param ctx - Behavior context for the current pipeline cycle.\n * @param incoming - Incoming state input value.\n * @param operation - Pipeline operation type.\n * @param options - Optional merge or replace options.\n */\n conduct(ctx: BehaviorContext<T>, incoming: StateInputType<T>, operation: OperationType, options?: unknown): void {\n const behaviorCtx = this.#buildPipelineCtx(ctx, operation, options);\n\n const preparedIncoming = this.prepareIncoming(behaviorCtx, incoming, operation);\n\n if (isVaultNoop(preparedIncoming) || isVaultClearState(preparedIncoming)) {\n return;\n }\n\n behaviorCtx.incoming = preparedIncoming as StateInputType<T>;\n\n const controllerCtx = this.buildControllerCtx(behaviorCtx);\n this.#enqueueAttempt({ behaviorCtx, controllerCtx, options });\n }\n\n /**\n * Resets pipeline + controller state for this FeatureCell.\n *\n * FeatureCell should call this from its own reset() method.\n */\n reset(ctx: BehaviorContext<T>): void {\n this.vaultMonitor.startReset(this.cellKey, VAULT_CONDUCTOR, ctx);\n\n ctx.traceId = ctx.traceId ?? assignTraceId();\n\n this.#resetConductor();\n this.resetBehaviors(ctx);\n this.#resetControllers(ctx);\n\n // Reset controllers as well.\n this.vaultMonitor.endReset(this.cellKey, VAULT_CONDUCTOR, ctx);\n }\n\n /**\n * Destroys pipeline + controller state for this FeatureCell.\n *\n * FeatureCell should call this from its own destroy() method.\n */\n destroy(ctx: BehaviorContext<T>): void {\n vaultDebug(`${VAULT_CONDUCTOR} - destroy`);\n ctx.traceId = ctx.traceId ?? assignTraceId();\n this.vaultMonitor.startDestroy(this.cellKey, VAULT_CONDUCTOR, ctx);\n\n this.#resetConductor();\n this.destroyBehaviors(ctx);\n this.#destroyControllers(ctx);\n\n // Tear down controllers.\n this.#events$.complete();\n this.vaultMonitor.endDestroy(this.cellKey, VAULT_CONDUCTOR, ctx);\n }\n\n //#endregion\n\n //#region Private Methods\n\n /** Routes a pipeline attempt to the appropriate orchestrator method. */\n async #processEvent(ctx: BehaviorContext<T>, options?: unknown): Promise<void> {\n if (ctx.operation === OperationTypes.Initialize) {\n await this.initializeFeatureCell(ctx);\n return;\n }\n\n if (ctx.operation === OperationTypes.Replace || ctx.operation === OperationTypes.Merge) {\n await this.orchestrate(ctx, options);\n return;\n }\n\n this.vaultMonitor.runtimeError(\n this.cellKey,\n VAULT_CONDUCTOR,\n ctx,\n new Error(`Unknown operation type: \"${ctx.operation}\"`)\n );\n\n this.#completeCurrentAttempt(ctx);\n }\n\n /** Schedules a microtask to signal a deny-state completion. */\n #enqueueMicrotask(): void {\n queueMicrotask(() => {\n this.#denyAttemptCompleted();\n });\n }\n\n /**\n * Enqueue an attempt and trigger queue processing if idle.\n */\n #enqueueAttempt(pending: PendingAttemptShape<T>): void {\n if (\n this.#conductorLicenseStatus === ConductorLicenseStatusTypes.Pending ||\n this.#conductorLicenseStatus === ConductorLicenseStatusTypes.Approved\n ) {\n this.vaultMonitor.startControllerAttempt(this.cellKey, pending.behaviorCtx.traceId, pending.controllerCtx);\n this.#attemptQueue.push(pending);\n\n if (this.#conductorLicenseStatus === ConductorLicenseStatusTypes.Approved) {\n if (!this.#processing && this.#attemptQueue.length === 1) {\n this.#processQueue();\n } else {\n if (this.#isDenyStateForTesting) {\n this.#enqueueMicrotask();\n }\n }\n } else {\n this.#enqueueMicrotask();\n }\n } else {\n this.#enqueueMicrotask();\n }\n }\n\n /** Finalizes the current attempt and advances the queue in a microtask. */\n #completeCurrentAttempt(ctx: ControllerContext<T> | BehaviorContext<T>): void {\n const head = this.#attemptQueue[0];\n /* istanbul ignore next */\n if (!head || head.finalized) return;\n head.finalized = true;\n\n /**\n * IMPORTANT: Finalization MUST occur inside a microtask.\n *\n * Why?\n * The conductor processes controller outcomes and orchestrator work\n * within the same JavaScript turn. If `notifyFinalize()` runs\n * synchronously here, it can:\n *\n * - Re-enter the pipeline before the current call stack fully drains\n * - Trigger controller/orchestrator side effects in the same tick\n * - Cause double-finalization or out-of-order queue mutation\n * - Break `vaultSettled()` determinism in DevMode\n *\n * By deferring to a microtask:\n *\n * 1. The current pipeline cycle fully drains.\n * 2. All synchronous controller emissions complete.\n * 3. The attempt is finalized in a clean turn boundary.\n * 4. Queue mutation (shift) happens atomically with finalize.\n * 5. `#processQueue()` runs only after processing state resets.\n *\n * DO NOT:\n * - Move `notifyFinalize()` outside this microtask.\n * - Split this into multiple microtasks.\n * - Make queue mutation synchronous.\n *\n * The ordering inside this microtask is intentional:\n *\n * notifyFinalize →\n * shift queue →\n * reset processing flag →\n * signal vault settled →\n * process next attempt\n *\n * This guarantees:\n * - Single active attempt at a time\n * - No reentrancy\n * - Deterministic queue progression\n * - Stable DevMode/test flushing behavior\n */\n queueMicrotask(() => {\n this.decisionEngine.notifyFinalize(ctx);\n this.#attemptQueue.shift();\n this.#processing = false;\n this.#attemptCompleted();\n\n this.#processQueue();\n });\n }\n\n /** Resets the processing flag and emits a restart-attempt monitor event. */\n #resetProcessingState(ctx: BehaviorContext<T>, outcome: DecisionOutcomeType | ControllerEventType): void {\n this.vaultMonitor.restartControllerAttempt(this.cellKey, ctx.traceId, ctx, outcome);\n this.#processing = false;\n }\n\n /**\n * Central queue processor:\n * - ensures only one attempt is processed at a time\n * - runs controllers for the active attempt\n * - on Allow → runs Orchestrator\n * - on Reset/other → calls reset() for that context\n * - then continues to the next queued attempt\n */\n async #processQueue(): Promise<void> {\n if (this.#processing) return;\n if (!this.#attemptQueue.length) return;\n\n this.#processing = true;\n const activeAttempt = this.#attemptQueue[0]!;\n\n // istanbul ignore next line - defensive only\n if (!activeAttempt) {\n // istanbul ignore next line - defensive only\n this.#processing = false;\n // istanbul ignore next line - defensive only\n return;\n }\n\n try {\n const outcome = await firstValueFrom(this.#runControllers(activeAttempt));\n\n const pending = this.#attemptQueue[0]!;\n\n if (!pending) {\n this.#processing = false;\n return;\n }\n\n const { behaviorCtx, options } = pending;\n\n let isDeny = false;\n\n switch (outcome) {\n // ───────────────────────────────────────────────\n // ALLOW → orchestrator will run → outcome will later drive CLEAR\n // ───────────────────────────────────────────────\n case DecisionOutcomeTypes.Abstain: {\n vaultDebug(\n `${this.cellKey} DecisionOutcome: \"${DecisionOutcomeTypes.Abstain} received. Process Event dispatched.`\n );\n await this.#processEvent(behaviorCtx, options);\n break;\n }\n\n // ───────────────────────────────────────────────\n // FAIL → request is dead → remove + continue\n // ───────────────────────────────────────────────\n case DecisionOutcomeTypes.Abort: {\n this.controllerOutcomeNotification(DecisionOutcomeTypes.Abort, behaviorCtx);\n this.vaultMonitor.endControllerAttempt(this.cellKey, behaviorCtx.traceId, behaviorCtx, {\n status: outcome\n });\n this.#completeCurrentAttempt(behaviorCtx);\n break;\n }\n\n // ───────────────────────────────────────────────\n // DENY → pipeline blocked → keep attempt at head, do NOT shift\n // ───────────────────────────────────────────────\n case DecisionOutcomeTypes.Deny: {\n // do nothing — wait for external change\n this.#denyAttemptCompleted();\n\n isDeny = true;\n this.#processing = false;\n\n this.vaultMonitor.notifyConductorDeny(this.cellKey, behaviorCtx.traceId, behaviorCtx);\n this.controllerOutcomeNotification(DecisionOutcomeTypes.Deny, behaviorCtx);\n\n break;\n }\n }\n\n if (isDeny) {\n this.#isDenyStateForTesting = true;\n } else {\n this.#isDenyStateForTesting = false;\n return this.#processQueue();\n }\n\n // ───────────────────────────────────────────────\n // ERROR → treat as fail, shift queue, continue\n // ───────────────────────────────────────────────\n\n /*********************************\n * Catastrophic unreachable state — controller pipeline failed outside arbitrator\n * on 2025-12-10 I made the decision to leave it though I'm not a fan of untestable\n * and should be pruned code\n *********************************/\n } catch (err) {\n //istanbul ignore next\n vaultError('[conductor] Unreachable subscription error', err);\n\n //istanbul ignore next\n this.vaultMonitor.conductorCrashed(\n this.cellKey,\n activeAttempt?.controllerCtx.traceId ?? 'unknown',\n activeAttempt?.controllerCtx ?? ({ traceId: 'unknown' } as ControllerContext<T>),\n err\n );\n\n // Try to drop the corrupted request to recover\n //istanbul ignore next\n this.#attemptQueue.shift();\n //istanbul ignore next\n this.#processQueue();\n }\n }\n\n /** Registers the decision engine and subscribes to controller lifecycle events. */\n #registerDecisionEngine(): void {\n this.decisionEngine = new DecisionEngine<T>(this.#controllers, this.#events$);\n\n this.#events$.subscribe({\n next: (event: ControllerEventShape) => {\n if (event.type === ControllerEventTypes.LicenseDenied) {\n this.vaultMonitor.conductorLicenseDenied(this.cellKey, event.traceId);\n this.#conductorLicenseStatus = ConductorLicenseStatusTypes.Denied;\n\n const error = new Error(\n `${this.cellKey} Conductor Decision Engine: The FeatureCell received a \"License Denied\". Pipeline is disabled.`\n );\n\n // eslint-disable-next-line\n console.error(`[vault] ${error.message}`);\n\n vaultDebug(error.message);\n\n this.privateErrorService.setError(createVaultError(error, this.cellKey));\n\n this.#attemptQueue.length = 0;\n\n return;\n }\n\n if (event.type === ControllerEventTypes.LicenseApproved) {\n this.vaultMonitor.conductorLicenseApproved(this.cellKey, event.traceId);\n this.#conductorLicenseStatus = ConductorLicenseStatusTypes.Approved;\n\n vaultDebug(`${this.cellKey} Conductor Decision Engine: License Approved.`);\n\n this.#processQueue();\n\n return;\n }\n\n const head = this.#attemptQueue[0];\n if (!head) return;\n\n // Defensive guard: with serialized pipeline execution,\n // controller events cannot arrive out of order.\n // This is retained as a safety net against future regressions.\n /* istanbul ignore next */\n if (head.controllerCtx.traceId !== event.traceId) {\n vaultDebug(`The head ctx is not the same as the event. ${head.controllerCtx.traceId} != ${event.traceId}`);\n return;\n }\n\n // For both Success and Fail, this request is DONE from the queue’s POV\n switch (event.type) {\n case ControllerEventTypes.Success: {\n this.vaultMonitor.endControllerAttempt(this.cellKey, head.behaviorCtx.traceId, head.controllerCtx, {\n status: 'success'\n });\n\n this.#completeCurrentAttempt(head.controllerCtx);\n break;\n }\n\n case ControllerEventTypes.Failure: {\n this.vaultMonitor.endControllerAttempt(this.cellKey, head.behaviorCtx.traceId, head.controllerCtx, {\n status: 'failure'\n });\n\n this.#resetProcessingState(head.behaviorCtx, event.type);\n\n break;\n }\n\n case ControllerEventTypes.Abort: {\n this.vaultMonitor.conductorAbort(this.cellKey, event.traceId, head.controllerCtx);\n vaultDebug(\n `${this.cellKey} Conductor Decision Engine: Abort request received for Behavior TraceId: ${head.controllerCtx.traceId}.`\n );\n this.#completeCurrentAttempt(head.controllerCtx);\n\n break;\n }\n\n case ControllerEventTypes.Revote: {\n vaultDebug(\n `${this.cellKey} Conductor Decision Engine: Revote request received for Behavior TraceId: ${head.controllerCtx.traceId}.`\n );\n this.vaultMonitor.conductorRevote(this.cellKey, event.traceId, head.controllerCtx);\n this.#processing = false;\n vaultDebug(\n `${this.cellKey} Conductor Decision Engine: processQueue event dispatched for Behavior TraceId: ${head.controllerCtx.traceId}.`\n );\n this.#processQueue();\n break;\n }\n }\n }\n });\n }\n\n /** Builds an isolated pipeline context for a single attempt. */\n #buildPipelineCtx(ctx: BehaviorContext<T>, operation: OperationType, options: unknown): BehaviorContext<T> {\n const traceId = assignTraceId();\n\n return {\n // shared, live references (DO NOT CLONE)\n destroyed$: ctx.destroyed$,\n reset$: ctx.reset$,\n state$: ctx.state$,\n\n featureCellKey: ctx.featureCellKey,\n state: ctx.state,\n lastSnapshot: ctx.lastSnapshot,\n options: options != null ? isolateValue(options) : options,\n\n // per-attempt immutable values\n traceId,\n operation,\n resolveType: undefined,\n incoming: undefined\n };\n }\n\n /** Clears the attempt queue and resets the processing flag. */\n #resetConductor() {\n this.#attemptQueue.length = 0;\n this.#processing = false;\n }\n\n /** Invokes destroy on all registered controllers. */\n #destroyControllers(ctx: BehaviorContext<T>): void {\n for (const controller of this.#controllers) {\n this.vaultMonitor.startDestroy(this.cellKey, controller.key, ctx);\n try {\n controller.destroy?.();\n this.vaultMonitor.endDestroy(this.cellKey, controller.key, ctx);\n } catch (err) {\n vaultError(`${controller.key} destroy() failed`, err);\n this.vaultMonitor.endDestroy(this.cellKey, controller.key, ctx, { destroyFailed: true });\n }\n }\n }\n\n /** Invokes reset on all registered controllers. */\n #resetControllers(ctx: BehaviorContext<T>): void {\n for (const controller of this.#controllers) {\n this.vaultMonitor.startReset(this.cellKey, controller.key, ctx);\n try {\n controller.reset?.();\n this.vaultMonitor.endReset(this.cellKey, controller.key, ctx);\n } catch (err) {\n vaultError(`${controller.key} reset() failed`, err);\n this.vaultMonitor.endReset(this.cellKey, controller.key, ctx, { resetFailed: true });\n }\n }\n }\n\n /** Adds the default or user-supplied error controller to the controller list. */\n #addDefaultErrorController(controllers: ControllerClassContract<T>[], config: ConductorConfig<T>): void {\n const errorControllers = config.controllers.filter((controllerClass: ControllerClassContract) => {\n return (controllerClass as ControllerClassContract<T>).type === ControllerTypes.Error;\n });\n\n if (errorControllers.length > 1) {\n const names = errorControllers.map((errorController) => errorController.key).join(', ');\n\n throw new Error(\n `SDuX Error: More than one ErrorController was provided. Only one error policy can be active per FeatureCell. Received: ${names}. Fix: Remove additional error controllers or combine them into a single controller.`\n );\n }\n\n if (errorControllers.length === 1) {\n controllers.push(errorControllers[0]);\n } else {\n controllers.unshift(withCoreErrorController);\n }\n }\n\n /** Removes reserved controller types from the user-supplied list. */\n #filterRestrictedControllers(controllers: ControllerClassContract<T>[]): ControllerClassContract<T>[] {\n return controllers.filter((controller) => {\n if (controller.type === ControllerTypes.License || controller.type === ControllerTypes.CoreAbstain) {\n vaultDebug(\n `${this.cellKey} Conductor: Filtering out controller \"${controller.key}\" of type \"${controller.type}\" as it is reserved for internal use.`\n );\n return false;\n }\n return true;\n });\n }\n\n // ---------------------------------------------------------------------------\n // INTERNAL SCHEDULING\n // ---------------------------------------------------------------------------\n /** Initializes all controllers and registers the decision engine. */\n #registerControllers(config: ConductorConfig<T>): void {\n config.controllers = config.controllers ?? [];\n\n const allControllers = this.#filterRestrictedControllers(config.controllers) as ControllerClassContract<T>[];\n\n this.#addDefaultErrorController(allControllers, config);\n\n allControllers.unshift(withCoreLicenseController);\n allControllers.unshift(withCoreAbstainController);\n\n // eslint-disable-next-line\n const controllerMetadata = allControllers.map((controller: any) => {\n const meta = controller[CONTROLLER_META] as ControllerMetaShape;\n\n return {\n key: controller.key,\n type: meta.type,\n critical: meta.critical,\n needsLicense: meta.needsLicense\n };\n });\n\n LicensingService().describeControllers({\n featureCellKey: this.cellKey,\n controllers: controllerMetadata\n });\n\n const controllerInit = new ControllerInitializationClass(config.cell.key);\n this.#controllers = controllerInit.initializeControllers(allControllers, this.#events$, config.behaviorConfigs);\n\n this.#registerDecisionEngine();\n }\n\n /**\n * Run controllers for a single pending attempt and normalize their decision.\n *\n * Returns:\n * - ControllerVotes.Allow\n * - ControllerVotes.Reset\n *\n * All more detailed opinions (Deny/Retry/Buffer/Abstain) are reduced\n * at this layer for now.\n */\n #runControllers(pending: PendingAttemptShape<T>): Observable<DecisionOutcomeType> {\n this.vaultMonitor.startControllerVote(this.cellKey, pending.controllerCtx.traceId, pending.controllerCtx);\n return this.decisionEngine.evaluateAttempt(pending.controllerCtx)?.pipe(\n tap((decision: ControllerDecisionShape) => {\n this.vaultMonitor.endControllerVote(\n this.cellKey,\n pending.controllerCtx.traceId,\n pending.controllerCtx,\n decision\n );\n }),\n map((decision: ControllerDecisionShape) => decision.outcome)\n );\n }\n\n /** Signals a deny-state settlement for DevMode testing. */\n #denyAttemptCompleted(): void {\n if (!DevMode.active) return;\n this.#settled$.next();\n }\n\n // ADD\n /** Signals queue settlement when all attempts have been processed. */\n #attemptCompleted(): void {\n if (!DevMode.active || this.#attemptQueue.length > 0) return;\n\n queueMicrotask(() => {\n this.#settled$.next();\n });\n }\n\n /** Returns a promise that resolves when the conductor has settled. */\n #conductorSettled(): Promise<void> {\n return firstValueFrom(this.#settled$);\n }\n\n //#endregion\n}\n","/**\n * Canonical identifier used to label FeatureCell-related ownership or origin.\n */\nexport const VAULT_FEATURE_CELL = 'vault-feature-cell';\n","import { BehaviorClassContract, BehaviorTypes } from '@sdux-vault/shared';\nimport { FeatureCellConfig } from '../../config/feature-cell.config';\n\n/**\n * Validates a `FeatureCelldescriptorModel` configuration prior to FeatureCell\n * initialization. This function ensures that the descriptor is structurally\n * correct and that conflicting behaviors are not registered on the same\n * FeatureCell instance.\n *\n * The validation enforces two primary constraints:\n *\n * 1. **Initial State Shape Validation**\n * The `initial` value must represent plain unwrapped data (e.g., `{}`, `[]`,\n * or primitives). Passing a resource-like object containing fields such as\n * `{ loading, data, error }` is not permitted because FeatureCells wrap\n * values internally and would otherwise double-encapsulate resource state.\n *\n * 2. **Encryption Behavior Exclusivity**\n * A FeatureCell may register at most one encryption behavior. Multiple\n * encryption behaviors introduce conflicting state guarantees and are\n * rejected during validation.\n *\n * @typeParam T - The type representing the FeatureCell’s state shape.\n *\n * @param descriptor - The declared FeatureCell descriptor, including key and initial state.\n * @param behaviors - A list of behavior classes registered for this FeatureCell.\n *\n * @throws Error if the initial state contains resource-like fields.\n * @throws Error if more than one encryption behavior is provided.\n */\nexport function featureCellValidation<T>(\n descriptor: FeatureCellConfig<T>,\n behaviors: BehaviorClassContract<T>[] = []\n): void {\n // Prevent incorrect initialization (e.g., passing a resource object)\n if (\n typeof descriptor.initialState === 'object' &&\n descriptor.initialState !== null &&\n // eslint-disable-next-line\n 'data' in (descriptor.initialState as any)\n ) {\n throw new Error(\n `[vault] Invalid FeatureCelldescriptorModel.initial for feature \"${descriptor.key}\". Expected raw data (e.g., [] or {}), but received an object with resource fields { loading, data, error }. Pass plain data to avoid double-wrapping.`\n );\n }\n\n const encryptBehaviors = behaviors.filter((behavior) => behavior.type === BehaviorTypes.Encrypt);\n\n if (encryptBehaviors.length > 1) {\n throw new Error(`[vault] FeatureCell cannot register multiple encryption behaviors.`);\n }\n}\n","import {\n BehaviorClassContract,\n BehaviorContext,\n CellBuilderContract,\n ControllerClassContract,\n CoreEmitStateCallback,\n DeferredType,\n DevMode,\n FeatureCellBaseShape,\n FilterFunction,\n InterceptorBehaviorClassContract,\n OperationTypes,\n OperatorsBehaviorClassContract,\n ReducerFunction,\n StateEmitSnapshotShape,\n StateInputType,\n StateSnapshotShape,\n TapCallback,\n VaultErrorCallback,\n vaultWarn\n} from '@sdux-vault/shared';\nimport { Subject } from 'rxjs';\nimport { Conductor } from '../../conductor/conductor';\nimport { FeatureCellConfig } from '../../config/feature-cell.config';\nimport { FeatureCellInitializeConfig } from '../../config/feature-cell.initialize.config';\nimport { VAULT_FEATURE_CELL } from '../../constants/vault-feature-cell.constant';\nimport { VaultMonitor } from '../../monitor/vault-monitor.service';\nimport { featureCellValidation } from '../../utils/feature-cell/feature-cell-validation.util';\nimport { registerVaultSettled } from '../vault/vault-core.function';\n\n/**\n * Abstract builder that assembles the fluent configuration API and\n * lifecycle wiring for a FeatureCell. Subclasses call setup() to obtain\n * a CellBuilderContract, then build the final FeatureCellShape from it.\n * The builder manages conductor creation, initialization guards, and\n * state operation dispatch.\n */\nexport abstract class FeatureCellBuilder<T> {\n /** Whether the cell encountered a critical failure and is permanently unusable. */\n #cellCorrupt = false;\n /** Conductor instance managing pipeline execution for this cell. */\n #conductor!: Conductor<T>;\n /** Whether the cell has been initialized via the builder. */\n #initialized = false;\n /** Vault monitor instance for tracing lifecycle events. */\n readonly #vaultMonitor = VaultMonitor();\n\n /** Reference to the constructed FeatureCellBaseShape. */\n protected cell!: FeatureCellBaseShape<T>;\n\n /** Unique key identifying this FeatureCell. */\n protected readonly cellKey: string;\n\n /** Shared behavior context for pipeline execution. */\n protected readonly ctx: BehaviorContext<T>;\n\n /** Subject signaling cell destruction. */\n protected readonly destroyed$ = new Subject<void>();\n\n /** Subject signaling cell reset. */\n protected readonly reset$ = new Subject<void>();\n /** Subject emitting state snapshots to subscribers. */\n protected readonly state$ = new Subject<StateEmitSnapshotShape<T>>();\n\n /**\n * Creates the builder and initializes the shared behavior context.\n *\n * @param featureCellConfiguration - FeatureCell descriptor configuration.\n * @param defaultBehaviors - Default behavior classes provided by the framework.\n * @param behaviors - User-supplied behavior classes.\n * @param controllers - User-supplied controller classes.\n */\n constructor(\n // kept for parity with original API, even if not used directly\n protected readonly featureCellConfiguration: FeatureCellConfig<T>,\n private readonly defaultBehaviors: BehaviorClassContract<T>[],\n protected readonly behaviors: BehaviorClassContract<T>[],\n protected readonly controllers: ControllerClassContract<T>[]\n ) {\n this.cellKey = this.featureCellConfiguration.key;\n\n this.ctx = this.#buildCtx();\n }\n\n /**\n * Builds the initial behavior context with locked snapshot reference.\n *\n * @returns The constructed behavior context.\n */\n #buildCtx(): BehaviorContext<T> {\n const destroyed$ = this.destroyed$.asObservable();\n const state$ = this.state$;\n const reset$ = this.reset$.asObservable();\n\n const lastSnapshot = {\n isLoading: false,\n value: undefined,\n error: null,\n hasValue: false\n } as StateSnapshotShape<T>;\n\n const ctx = {\n destroyed$,\n featureCellKey: this.cellKey,\n reset$,\n state$,\n\n get state(): Readonly<StateSnapshotShape<T>> {\n const snapshot = this.lastSnapshot;\n return {\n isLoading: snapshot.isLoading,\n value: snapshot.value,\n error: snapshot.error,\n hasValue: snapshot.hasValue\n };\n }\n } as BehaviorContext<T>;\n\n // 🔒 CRITICAL: Lock the reference forever\n Object.defineProperty(ctx, 'lastSnapshot', {\n value: lastSnapshot,\n writable: false, // ❗ cannot reassign\n configurable: false, // ❗ cannot redefine\n enumerable: true\n });\n\n return ctx;\n }\n\n // ---------------------------------------------------------------------------\n // INTERNAL LIFECYCLE\n // ---------------------------------------------------------------------------\n\n /** Resets the conductor and emits a reset signal. */\n protected reset(): void {\n this.#vaultMonitor.startReset(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n vaultWarn(`${VAULT_FEATURE_CELL}: reset`);\n\n this.#ensureInitialized();\n this.reset$.next();\n\n this.#conductor?.reset(this.ctx);\n\n this.#vaultMonitor.endReset(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n }\n\n /** Destroys the conductor, completes all subjects, and emits destruction signals. */\n protected destroy(): void {\n this.#vaultMonitor.startDestroy(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n vaultWarn(`${VAULT_FEATURE_CELL}: destroy`);\n\n this.reset$.next();\n this.reset$.complete();\n\n this.#conductor?.destroy(this.ctx);\n\n this.destroyed$.next();\n this.destroyed$.complete();\n\n this.state$.complete();\n\n this.#vaultMonitor.endDestroy(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n }\n\n /** Throws if the cell is corrupt or has not been initialized. */\n #ensureInitialized(): void {\n if (this.#cellCorrupt) {\n const errorMessage = `[vault] FeatureCell \"${this.featureCellConfiguration.key}\" encountered a critical initialization failure and is now in a corrupted state. Further use is blocked.`;\n\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, errorMessage);\n throw new Error(errorMessage);\n }\n if (!this.#initialized) {\n const errorMessage = `[vault] FeatureCell \"${this.featureCellConfiguration.key}\" has not been initialized. You must call cell.initialize() before using state methods.`;\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, errorMessage);\n throw new Error(errorMessage);\n }\n }\n\n /** Creates the conductor, validates the cell, and starts the initialization lifecycle. */\n #initialize(ctx: FeatureCellInitializeConfig<T>): void {\n if (this.#initialized) {\n const errorMessage = `[vault] FeatureCell \"${this.featureCellConfiguration.key}\" already initialized.`;\n\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, errorMessage);\n throw new Error(errorMessage);\n }\n\n try {\n // Register cell + start lifecycle event\n this.#vaultMonitor.registerCell(this.cellKey, this.featureCellConfiguration.insights);\n this.#vaultMonitor.startInitialized(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n\n featureCellValidation(this.featureCellConfiguration, this.behaviors);\n\n // This must proceed the orchestrator instantiation\n this.#initialized = true;\n\n // Orchestrator needs the concrete cell API\n this.#conductor = new Conductor({\n afterTapCallbacks: ctx.afterTapCallbacks,\n beforeTapCallbacks: ctx.beforeTapCallbacks,\n behaviors: this.behaviors,\n behaviorConfigs: ctx.behaviorConfigs,\n cell: this.cell,\n defaultBehaviors: this.defaultBehaviors,\n controllers: this.controllers,\n emitStateCallbacks: ctx.emitStateCallbacks,\n errorCallbacks: ctx.errorCallbacks,\n filterCallbacks: ctx.filterFunctions,\n initialState: ctx.hydrate || this.featureCellConfiguration.initialState,\n interceptors: ctx.interceptors,\n lastSnapshot: this.ctx.lastSnapshot,\n operators: ctx.operators,\n reducerCallbacks: ctx.reducerFunctions,\n state$: this.state$\n });\n\n this.#conductor.initialize(this.ctx);\n\n if (DevMode.active) {\n Object.defineProperty(this.cell, 'vaultSettled', {\n enumerable: false,\n configurable: false,\n writable: false,\n // eslint-disable-next-line\n value: () => (this.#conductor as any).vaultSettled()\n });\n\n // eslint-disable-next-line\n registerVaultSettled(this.cellKey, (this.#conductor as any).vaultSettled.bind(this.#conductor));\n }\n\n this.#vaultMonitor.endInitialized(this.cellKey, VAULT_FEATURE_CELL, this.ctx);\n } catch (err) {\n this.#cellCorrupt = true;\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, err);\n throw err;\n }\n }\n\n /** Marks the cell as corrupt, logs a runtime error, and throws. */\n #handleCorruptionError(message: string): void {\n this.#cellCorrupt = true;\n this.#vaultMonitor.runtimeError(this.cellKey, VAULT_FEATURE_CELL, this.ctx, message);\n throw new Error(message);\n }\n\n /**\n * Constructs the fluent CellBuilderContract with pre-initialization guards.\n *\n * @returns The builder contract exposing configuration and initialize methods.\n */\n protected setup(): CellBuilderContract<T> {\n const afterTapCallbacks: TapCallback<T>[] = [];\n const beforeTapCallbacks: TapCallback<T>[] = [];\n const errorCallbacks: VaultErrorCallback<T>[] = [];\n const filterFunctions: FilterFunction<T>[] = [];\n let hydrate: DeferredType<T>;\n const interceptors: InterceptorBehaviorClassContract<T>[] = [];\n const operators: OperatorsBehaviorClassContract<T>[] = [];\n const reducerFunctions: ReducerFunction<T>[] = [];\n const emitStateCallbacks: CoreEmitStateCallback<T>[] = [];\n const behaviorConfigs = new Map<string, unknown>();\n\n const builder: CellBuilderContract<T> = {\n behaviorConfigs,\n\n afterTaps: (incomingAfterTaps: TapCallback<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"afterTaps\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n if (Array.isArray(incomingAfterTaps)) {\n afterTapCallbacks.push(...incomingAfterTaps);\n }\n return builder;\n },\n beforeTaps: (incomingBeforeTaps: TapCallback<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"beforeTaps\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n if (Array.isArray(incomingBeforeTaps)) {\n beforeTapCallbacks.push(...incomingBeforeTaps);\n }\n return builder;\n },\n emitStates: (incomingEmitStates: CoreEmitStateCallback<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"emitStates\" after initialize(). Configuration must be done before initialization.'\n );\n }\n if (Array.isArray(incomingEmitStates)) {\n emitStateCallbacks.push(...incomingEmitStates);\n }\n return builder;\n },\n errors: (incomingErrors: VaultErrorCallback<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"errors\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n if (Array.isArray(incomingErrors)) {\n errorCallbacks.push(...incomingErrors);\n }\n\n return builder;\n },\n filters: (incomingFilters: FilterFunction<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"filters\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n if (Array.isArray(incomingFilters)) {\n filterFunctions.push(...incomingFilters);\n }\n return builder;\n },\n hydrate: (incoming: DeferredType<T>): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"hydrate\" after initialize(). Configuration must be done before initialization.'\n );\n }\n\n hydrate = incoming;\n return builder;\n },\n initialize: () => {\n this.#initialize({\n afterTapCallbacks,\n beforeTapCallbacks,\n behaviorConfigs,\n emitStateCallbacks,\n errorCallbacks,\n filterFunctions,\n hydrate,\n interceptors,\n operators,\n reducerFunctions\n });\n },\n interceptors: (incomingInterceptors: InterceptorBehaviorClassContract<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"interceptors\" after initialize(). Configuration must be done before initialization.'\n );\n }\n if (Array.isArray(incomingInterceptors)) {\n interceptors.push(...incomingInterceptors);\n }\n return builder;\n },\n operators: (incomingOperators: OperatorsBehaviorClassContract<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"operators\" after initialize(). Configuration must be done before initialization.'\n );\n }\n if (Array.isArray(incomingOperators)) {\n operators.push(...incomingOperators);\n }\n return builder;\n },\n\n reducers: (incomingReducers: ReducerFunction<T>[]): CellBuilderContract<T> => {\n if (this.#initialized) {\n this.#handleCorruptionError(\n 'Cannot call \"reducers\" after initialize(). Configuration must be done before initialization.'\n );\n }\n if (Array.isArray(incomingReducers)) {\n reducerFunctions.push(...incomingReducers);\n }\n return builder;\n }\n };\n\n return builder;\n }\n\n // ---------------------------------------------------------------------------\n // STATE OPERATIONS\n // ---------------------------------------------------------------------------\n\n /** Dispatches a merge operation through the conductor pipeline. */\n protected mergeState(incoming: StateInputType<T>, options?: unknown): void {\n this.#ensureInitialized();\n\n return this.#conductor.conduct(this.ctx, incoming, OperationTypes.Merge, options);\n }\n\n /** Dispatches a replace operation through the conductor pipeline. */\n protected replaceState(incoming: StateInputType<T>, options?: unknown): void {\n this.#ensureInitialized();\n\n return this.#conductor.conduct(this.ctx, incoming, OperationTypes.Replace, options);\n }\n}\n","import { BehaviorClassContract, ControllerClassContract, StateSnapshotShape } from '@sdux-vault/shared';\nimport { FeatureCellConfig } from '../../config/feature-cell.config';\nimport { FeatureCellShape } from '../../shapes/feature-cell/feature-cell.shape';\nimport { FeatureCellBuilder } from './feature-cell.builder';\n\n/**\n * Concrete FeatureCell factory that extends the builder to produce a\n * fully configured FeatureCellShape instance. The class wires fluent\n * API extensions from behaviors and controllers onto the resulting\n * cell and attaches non-enumerable context and key properties.\n */\nexport class FeatureCellClass<T> extends FeatureCellBuilder<T> {\n /**\n * Creates a new FeatureCellClass with the provided descriptor and behavior/controller lists.\n *\n * @param descriptor - FeatureCell configuration descriptor.\n * @param defaultBehaviors - Default behavior classes provided by the framework.\n * @param behaviors - User-supplied behavior classes.\n * @param controllers - User-supplied controller classes.\n */\n constructor(\n descriptor: FeatureCellConfig<T>,\n defaultBehaviors: BehaviorClassContract<T>[],\n behaviors: BehaviorClassContract<T>[],\n controllers: ControllerClassContract<T>[]\n ) {\n super(descriptor, defaultBehaviors, behaviors, controllers);\n }\n\n /**\n * Assembles and returns a fully configured FeatureCellShape with fluent API extensions.\n *\n * @returns The constructed FeatureCellShape instance.\n */\n build(): FeatureCellShape<T> {\n const builder = this.setup();\n const ctx = this.ctx;\n\n const cell: FeatureCellShape<T> = {\n afterTaps: builder.afterTaps,\n beforeTaps: builder.beforeTaps,\n\n destroy: this.destroy.bind(this),\n destroyed$: this.destroyed$.asObservable(),\n\n errors: builder.errors,\n\n filters: builder.filters,\n\n hydrate: builder.hydrate,\n\n initialize: builder.initialize,\n\n interceptors: builder.interceptors,\n\n key: this.cellKey,\n\n mergeState: this.mergeState.bind(this),\n\n operators: builder.operators,\n\n reducers: builder.reducers,\n\n emitStates: builder.emitStates,\n\n replaceState: this.replaceState.bind(this),\n\n reset$: this.reset$.asObservable(),\n reset: this.reset.bind(this),\n\n state$: this.state$.asObservable(),\n\n get state(): StateSnapshotShape<T> {\n return {\n isLoading: ctx.lastSnapshot.isLoading,\n value: ctx.lastSnapshot.value,\n error: ctx.lastSnapshot.error,\n hasValue: ctx.lastSnapshot.hasValue\n } as StateSnapshotShape<T>;\n }\n };\n\n // Keep a reference for orchestrator creation\n this.cell = cell;\n\n this.behaviors.forEach((behavior: BehaviorClassContract<T>) => {\n behavior?.installFluentApi?.(this.cell, builder.behaviorConfigs);\n });\n\n this.controllers.forEach((controller: ControllerClassContract<T>) => {\n controller?.installFluentApi?.(this.cell, builder.behaviorConfigs);\n });\n\n Object.defineProperty(cell, 'ctx', {\n value: this.ctx,\n enumerable: false,\n writable: false\n });\n\n Object.defineProperty(cell, 'key', {\n value: this.featureCellConfiguration.key,\n enumerable: false,\n writable: false\n });\n\n return cell;\n }\n}\n","import { DevMode } from '@sdux-vault/shared';\nimport { FeatureCellToken } from '../types/feature-cell-token.type';\n\n/**\n * The feature cell tokens map\n */\nconst featureCellTokens = new Map<string, FeatureCellToken>();\n\n/**\n * Tracks whether a FeatureCell token has already been retrieved\n */\nconst featureCellTokenRequested = new Map<string, boolean>();\n\n/**\n * Internal token resolution mechanism used by both createFeatureCellToken()\n * and getFeatureCellToken().\n *\n * Enforces:\n * - unique FeatureCell keys\n * - single retrieval per key (unless dev mode)\n */\nfunction internalFeatureCellToken(key: string, isCreate: boolean): FeatureCellToken {\n // ──────────────────────────────────────────────\n // CREATE MODE\n // ──────────────────────────────────────────────\n if (isCreate) {\n if (featureCellTokens.has(key)) {\n if (!DevMode.active) {\n const existing = featureCellTokens.get(key);\n throw new Error(\n `[vault] Duplicate FeatureCell key detected: \"${key}\". ` +\n `Each FeatureCell must have a unique key. Existing token: \"${existing?.key}\"`\n );\n }\n\n return featureCellTokens.get(key)!;\n }\n\n const token: FeatureCellToken = {\n key\n };\n // const token: FeatureCellToken = { key };\n featureCellTokens.set(key, token);\n return token;\n }\n\n // ──────────────────────────────────────────────\n // RETRIEVE MODE\n // ──────────────────────────────────────────────\n if (!featureCellTokens.has(key)) {\n throw new Error(\n `[vault] FeatureCell token not found for key \"${key}\". You must call provideFeatureCell() before retrieving this FeatureCell.`\n );\n }\n\n if (featureCellTokenRequested.has(key)) {\n if (!DevMode.active) {\n throw new Error(`[vault] FeatureCell \"${key}\" can only be owned by a single consumer.`);\n }\n\n return featureCellTokens.get(key)!;\n }\n\n featureCellTokenRequested.set(key, true);\n return featureCellTokens.get(key)!;\n}\n\n/**\n * Creates a FeatureCell token for the specified key.\n */\nexport function createFeatureCellToken(key: string) {\n return internalFeatureCellToken(key, true);\n}\n\n/**\n * Retrieves the FeatureCell token associated with a key.\n */\nexport function getFeatureCellToken(key: string) {\n return internalFeatureCellToken(key, false);\n}\n\n/**\n * Clears FeatureCell token state for test isolation.\n *\n * This must be called explicitly by test utilities.\n * No framework assumptions are made.\n */\nexport function resetFeatureCellToken(): void {\n // DevMode already gates unsafe behavior\n if (!DevMode.active) return;\n\n featureCellTokens.clear();\n featureCellTokenRequested.clear();\n}\n","/*\n * This is for version support in dev mode and tracking in the devtools\n */\n\nimport './src/version/version.register';\n\nexport { Conductor } from './src/conductor/conductor';\nexport type { ConductorConfig } from './src/config/conductor.config';\nexport type { FeatureCellConfig } from './src/config/feature-cell.config';\nexport { VAULT_LICENSE_ID } from './src/constants/vault-license-id.constant';\nexport { FeatureCellClass } from './src/factories/feature-cell/feature-cell.class';\nexport { verifyLicensePayload } from './src/factories/vault/token-validation/utils/verify-license-payload.util';\nexport { VerifyLicenseToken } from './src/factories/vault/token-validation/verify-license-token.utility';\nexport * from './src/factories/vault/vault-core.function';\nexport { registerFeatureCell, resetVaultForTests } from './src/factories/vault/vault-core.function';\nexport { LicensingAbstract } from './src/licensing/licensing.abstract';\nexport type { VaultStateRef } from './src/references/vault.reference';\nexport type { FeatureCellShape } from './src/shapes/feature-cell/feature-cell.shape';\nexport { createFeatureCellToken, getFeatureCellToken } from './src/tokens/feature-cell-token-registry';\nexport { isPipelineTerminal } from './src/utils/orchestrator.utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["instance","EVENT_POLICY"],"mappings":"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"}