@happyvertical/smrt-core 0.52.0 → 0.53.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.
Files changed (63) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.md +8 -2
  3. package/agents/model-moves.md +114 -0
  4. package/agents/object-runtime.md +3 -1
  5. package/agents/run-once.md +16 -7
  6. package/dist/cascade.d.ts.map +1 -1
  7. package/dist/cascade.js +4 -2
  8. package/dist/cascade.js.map +1 -1
  9. package/dist/generators/preflight-route.d.ts.map +1 -1
  10. package/dist/generators/preflight-route.js +1 -1
  11. package/dist/generators/preflight-route.js.map +1 -1
  12. package/dist/knowledge.d.ts.map +1 -1
  13. package/dist/knowledge.js +3 -0
  14. package/dist/knowledge.js.map +1 -1
  15. package/dist/manifest/static-manifest.js +1 -1
  16. package/dist/manifest/static-manifest.js.map +1 -1
  17. package/dist/manifest/store.js +1 -1
  18. package/dist/manifest.json +1 -1
  19. package/dist/migrations/index.d.ts +1 -0
  20. package/dist/migrations/index.d.ts.map +1 -1
  21. package/dist/migrations/index.js +2 -1
  22. package/dist/migrations/qualified-name-aliases.d.ts +134 -0
  23. package/dist/migrations/qualified-name-aliases.d.ts.map +1 -0
  24. package/dist/migrations/qualified-name-aliases.js +294 -0
  25. package/dist/migrations/qualified-name-aliases.js.map +1 -0
  26. package/dist/migrations.js +2 -1
  27. package/dist/polymorphic-association.d.ts +18 -0
  28. package/dist/polymorphic-association.d.ts.map +1 -1
  29. package/dist/polymorphic-association.js +27 -2
  30. package/dist/polymorphic-association.js.map +1 -1
  31. package/dist/registry/class-registration.d.ts.map +1 -1
  32. package/dist/registry/class-registration.js +27 -4
  33. package/dist/registry/class-registration.js.map +1 -1
  34. package/dist/registry/name-resolver.d.ts +8 -2
  35. package/dist/registry/name-resolver.d.ts.map +1 -1
  36. package/dist/registry/name-resolver.js +17 -8
  37. package/dist/registry/name-resolver.js.map +1 -1
  38. package/dist/registry/qualified-name-aliases.d.ts +109 -0
  39. package/dist/registry/qualified-name-aliases.d.ts.map +1 -0
  40. package/dist/registry/qualified-name-aliases.js +286 -0
  41. package/dist/registry/qualified-name-aliases.js.map +1 -0
  42. package/dist/registry/relationship-graph.d.ts.map +1 -1
  43. package/dist/registry/relationship-graph.js +1 -1
  44. package/dist/registry/relationship-graph.js.map +1 -1
  45. package/dist/registry/types.d.ts +26 -0
  46. package/dist/registry/types.d.ts.map +1 -1
  47. package/dist/registry.d.ts +59 -2
  48. package/dist/registry.d.ts.map +1 -1
  49. package/dist/registry.js +115 -6
  50. package/dist/registry.js.map +1 -1
  51. package/dist/scanner/manifest-generator.d.ts +11 -0
  52. package/dist/scanner/manifest-generator.d.ts.map +1 -1
  53. package/dist/scanner/manifest-generator.js +36 -1
  54. package/dist/scanner/manifest-generator.js.map +1 -1
  55. package/dist/schema/conflict-target.js +8 -1
  56. package/dist/schema/conflict-target.js.map +1 -1
  57. package/dist/scripts/browser-plain-json-regression.mjs +4 -1
  58. package/dist/smrt-knowledge.json +15 -9
  59. package/dist/utils/qualified-names.d.ts +11 -0
  60. package/dist/utils/qualified-names.d.ts.map +1 -1
  61. package/dist/utils/qualified-names.js +21 -1
  62. package/dist/utils/qualified-names.js.map +1 -1
  63. package/package.json +11 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualified-name-aliases.js","names":[],"sources":["../../src/registry/qualified-name-aliases.ts"],"sourcesContent":["/**\n * Deprecated qualified-name aliases (#3338).\n *\n * A class that moves package (or is renamed) changes its qualified name, and\n * every persisted or declared reference to the old name — a polymorphic\n * `metaType`, a `@crossPackageRef` target, a playbook `model:` — would stop\n * resolving silently. `@smrt({ previousQualifiedNames })` declares the old\n * names; this module turns them into lookup bridges.\n *\n * An alias is never a registry key. The `classes` map — and so\n * `getAllClasses()`, schema/DDL, MCP, CLI and REST generation, and every other\n * iteration — still holds exactly one entry per class. Qualified-name lookups\n * consult the derived alias index only after a direct miss, so a live class\n * always wins and an alias can never shadow one; registration refuses the\n * collisions that would make that ambiguous.\n *\n * Like the simple-name index in `name-resolver.ts`, the alias index is\n * derived, not maintained: it is rebuilt from `classes` once per registry\n * generation (#3047).\n */\n\nimport { createLogger } from '@happyvertical/logger';\nimport { ConfigurationError } from '../errors';\nimport {\n getLocalTestManifestCache,\n getManifestCache,\n getStaticManifestCache,\n getTestManifestCache,\n} from '../manifest/store.js';\nimport type { SmartObjectManifest } from '../scanner/types.js';\nimport {\n isQualifiedNameAliasFormat,\n readPreviousQualifiedNames,\n} from '../utils/qualified-names.js';\nimport { recordRegistryDiagnostic } from './diagnostics';\nimport { getRegistryGeneration } from './generation';\nimport { getClasses } from './shared-state';\nimport type { RegisteredClass } from './types';\n\nexport {\n isQualifiedNameAliasFormat,\n readPreviousQualifiedNames,\n} from '../utils/qualified-names.js';\n\n/** Error code for an alias that collides with a live class or another alias. */\nexport const QUALIFIED_NAME_ALIAS_COLLISION =\n 'CONFIG_QUALIFIED_NAME_ALIAS_COLLISION';\n\n/** Error code for a malformed `previousQualifiedNames` declaration. */\nexport const QUALIFIED_NAME_ALIAS_INVALID =\n 'CONFIG_QUALIFIED_NAME_ALIAS_INVALID';\n\n/** Diagnostic code recorded (once per alias) when a lookup uses an old name. */\nexport const QUALIFIED_NAME_ALIAS_DEPRECATED =\n 'QUALIFIED_NAME_ALIAS_DEPRECATED';\n\nconst logger = createLogger({ level: 'info' });\n\ndeclare global {\n // eslint-disable-next-line no-var\n var __smrtRegistryWarnedQualifiedNameAliases: Set<string> | undefined;\n}\n\nfunction getWarnedAliases(): Set<string> {\n if (!globalThis.__smrtRegistryWarnedQualifiedNameAliases) {\n globalThis.__smrtRegistryWarnedQualifiedNameAliases = new Set();\n }\n return globalThis.__smrtRegistryWarnedQualifiedNameAliases;\n}\n\n/** Forget which aliases already warned (`ObjectRegistry.clear()`, tests). */\nexport function resetQualifiedNameAliasWarnings(): void {\n getWarnedAliases().clear();\n}\n\n/**\n * Two registrations describe the same class: one object, one constructor, or\n * one qualified name (a manifest stub later replaced by its real class, or\n * an HMR reload).\n */\nfunction sameClass(left: RegisteredClass, right: RegisteredClass): boolean {\n return (\n left === right ||\n left.constructor === right.constructor ||\n (!!left.qualifiedName && left.qualifiedName === right.qualifiedName)\n );\n}\n\nfunction ownName(entry: RegisteredClass, registrationKey?: string): string {\n return entry.qualifiedName ?? registrationKey ?? entry.name;\n}\n\nlet aliasIndex:\n | {\n generation: number;\n classes: Map<string, RegisteredClass>;\n byAlias: Map<string, RegisteredClass>;\n }\n | undefined;\n\n/** Alias → registered class, rebuilt once per registry generation. */\nfunction getAliasIndex(): Map<string, RegisteredClass> {\n const classes = getClasses();\n const generation = getRegistryGeneration();\n if (\n aliasIndex &&\n aliasIndex.generation === generation &&\n aliasIndex.classes === classes\n ) {\n return aliasIndex.byAlias;\n }\n\n const byAlias = new Map<string, RegisteredClass>();\n for (const [key, entry] of classes) {\n for (const alias of readPreviousQualifiedNames(entry.config)) {\n // A live class always wins over an alias (registration refuses the\n // collision; this guards registries assembled before that check ran).\n if (classes.has(alias)) continue;\n const existing = byAlias.get(alias);\n // The same class can sit under a transitional simple key and its\n // qualified key; prefer the qualified registration.\n if (!existing || (sameClass(existing, entry) && key.includes(':'))) {\n byAlias.set(alias, entry);\n }\n }\n }\n aliasIndex = { generation, classes, byAlias };\n return byAlias;\n}\n\n/**\n * The class a deprecated qualified name now resolves to, WITHOUT warning.\n * Returns `undefined` for live names and unknown names alike.\n */\nexport function lookupQualifiedNameAlias(\n name: string,\n): RegisteredClass | undefined {\n if (!name.includes(':')) return undefined;\n return getAliasIndex().get(name);\n}\n\n/**\n * Resolve a deprecated qualified name to its current class, logging the\n * one-time deprecation warning. `source` names the resolution site for that\n * warning (e.g. `SmrtPolymorphicAssociation.hydrate`).\n */\nexport function resolveQualifiedNameAlias(\n name: string,\n source = 'ObjectRegistry qualified-name lookup',\n): RegisteredClass | undefined {\n const registered = lookupQualifiedNameAlias(name);\n if (registered) {\n warnDeprecatedQualifiedName(\n name,\n registered.qualifiedName ?? registered.name,\n source,\n );\n }\n return registered;\n}\n\n/**\n * Warn — once per old name per process — that a lookup used a deprecated\n * qualified name. Also recorded as a `warn` registry diagnostic so apps and\n * tests can inspect it through `ObjectRegistry.getDiagnostics()`.\n */\nexport function warnDeprecatedQualifiedName(\n alias: string,\n current: string,\n source: string,\n): void {\n const warned = getWarnedAliases();\n if (warned.has(alias)) return;\n warned.add(alias);\n const message =\n `Qualified name \"${alias}\" is deprecated; it now resolves to \"${current}\" ` +\n `(resolved from ${source}). Store and declare \"${current}\" instead — ` +\n 'the alias will be removed in a later breaking release. ' +\n '`smrt doctor --db` counts stored references that still use it.';\n const context = { alias, current, source };\n recordRegistryDiagnostic('warn', QUALIFIED_NAME_ALIAS_DEPRECATED, message, {\n ...context,\n });\n logger.warn(`[smrt:${QUALIFIED_NAME_ALIAS_DEPRECATED}] ${message}`, context);\n}\n\n/** Every declared alias → its class's current qualified name, sorted. */\nexport function getQualifiedNameAliasMap(): Map<string, string> {\n const entries = [...getAliasIndex()].map(\n ([alias, registered]) =>\n [alias, registered.qualifiedName ?? registered.name] as const,\n );\n entries.sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0));\n return new Map(entries);\n}\n\n/**\n * Refuse a registration whose aliases would make a qualified name resolve to\n * two classes. Called before a class is stored in `classes` — and, for an\n * update of a live entry, with the PROPOSED entry and `replacing` set to the\n * live one, before anything is mutated, so a refused update changes nothing.\n *\n * - every alias is a scoped `@scope/package:ClassName` string, distinct from the\n * class's own name, and declared once;\n * - no alias is the key of a different live class;\n * - no alias is also declared by a different class;\n * - the class's own name is not another class's alias.\n *\n * @throws {ConfigurationError} `CONFIG_QUALIFIED_NAME_ALIAS_INVALID` or\n * `CONFIG_QUALIFIED_NAME_ALIAS_COLLISION`.\n */\nexport function assertQualifiedNameAliasesAvailable(\n registrationKey: string,\n entry: RegisteredClass,\n replacing?: RegisteredClass,\n): void {\n const self = ownName(entry, registrationKey);\n const declared = (entry.config as { previousQualifiedNames?: unknown })\n ?.previousQualifiedNames;\n if (declared !== undefined && !Array.isArray(declared)) {\n throw new ConfigurationError(\n `${self}: previousQualifiedNames must be an array of qualified names (\"@package/name:ClassName\").`,\n QUALIFIED_NAME_ALIAS_INVALID,\n { className: self, previousQualifiedNames: declared },\n );\n }\n const aliases = (declared as unknown[] | undefined) ?? [];\n const seen = new Set<string>();\n for (const alias of aliases) {\n if (!isQualifiedNameAliasFormat(alias)) {\n throw new ConfigurationError(\n `${self}: previousQualifiedNames entry ${JSON.stringify(alias)} is not a qualified name (\"@package/name:ClassName\").`,\n QUALIFIED_NAME_ALIAS_INVALID,\n { className: self, alias },\n );\n }\n if (alias === self) {\n throw new ConfigurationError(\n `${self}: previousQualifiedNames lists the class's own current name \"${alias}\".`,\n QUALIFIED_NAME_ALIAS_INVALID,\n { className: self, alias },\n );\n }\n if (alias === registrationKey) {\n // Another package's manifest entry under the old name is being merged\n // into, or keyed onto, this class: the old name is still live.\n throw collision(\n `${self} declares previousQualifiedNames \"${alias}\", but a class is being registered under \"${alias}\". ` +\n 'An alias may only name a class that no longer exists; remove the alias or the stale class/manifest.',\n { className: self, alias },\n );\n }\n if (seen.has(alias)) {\n throw new ConfigurationError(\n `${self}: previousQualifiedNames lists \"${alias}\" more than once.`,\n QUALIFIED_NAME_ALIAS_INVALID,\n { className: self, alias },\n );\n }\n seen.add(alias);\n }\n\n const classes = getClasses();\n // Identities a registration answers to: its qualified name, its key, and\n // `<packageName>:<name>` (a source registration can sit under a simple key\n // before its qualified promotion).\n const identities = (other: RegisteredClass, key: string): string[] => [\n ownName(other, key),\n key,\n ...(other.packageName ? [`${other.packageName}:${other.name}`] : []),\n ];\n const selfIdentities = new Set(identities(entry, registrationKey));\n\n for (const [key, other] of classes) {\n if (other === replacing || sameClass(other, entry)) continue;\n const otherName = ownName(other, key);\n for (const identity of identities(other, key)) {\n if (seen.has(identity)) {\n throw collision(\n `${self} declares previousQualifiedNames \"${identity}\", but \"${identity}\" is a live registered class. ` +\n 'An alias may only name a class that no longer exists; remove the alias or the stale class/manifest.',\n { className: self, alias: identity, liveClass: otherName },\n );\n }\n }\n const otherAliases = readPreviousQualifiedNames(other.config);\n if (otherAliases.length === 0) continue;\n for (const alias of otherAliases) {\n if (seen.has(alias)) {\n throw collision(\n `previousQualifiedNames \"${alias}\" is declared by both ${self} and ${otherName}; ` +\n 'an old name can resolve to only one class.',\n { className: self, alias, otherClass: otherName },\n );\n }\n if (selfIdentities.has(alias)) {\n throw collision(\n `${otherName} declares previousQualifiedNames \"${alias}\", but ${self} is registered under that name. ` +\n 'An alias may only name a class that no longer exists; remove the alias or the stale class/manifest.',\n { className: self, alias, otherClass: otherName },\n );\n }\n }\n }\n\n // A competing claim in any manifest this process has loaded — an\n // installed package not registered yet — is the same collision (#3338).\n if (seen.size > 0) {\n assertNoCompetingManifestClaims(\n seen,\n collectManifestAliasInventory(loadedManifests()),\n entry.qualifiedName ?? self,\n );\n }\n}\n\nfunction collision(\n message: string,\n details: Record<string, unknown>,\n): ConfigurationError {\n return new ConfigurationError(\n message,\n QUALIFIED_NAME_ALIAS_COLLISION,\n details,\n );\n}\n\n/** The current qualified name a manifest object registers under. */\nfunction manifestObjectQualifiedName(\n manifest: SmartObjectManifest,\n key: string,\n objectDef: SmartObjectManifest['objects'][string],\n): string | undefined {\n if (objectDef.qualifiedName) return objectDef.qualifiedName;\n if (key.includes(':')) return key;\n const packageName = objectDef.packageName ?? manifest.packageName;\n return packageName ? `${packageName}:${objectDef.className}` : undefined;\n}\n\n/**\n * What a set of manifests says about qualified names (#3338): which classes\n * claim each old name, and which qualified names the manifests DEFINE as\n * classes of their own (installed but possibly unregistered).\n */\nexport interface ManifestAliasInventory {\n /** Old name → distinct current names claiming it. */\n claims: Map<string, Set<string>>;\n /** Every qualified name a manifest defines as a class. */\n defined: Set<string>;\n}\n\n/**\n * Index `manifests` (one manifest may appear twice, e.g. cached and static;\n * the same class claiming twice is one claim). A re-exported constructor is\n * not a definition: manifests list only classes a package declares.\n */\nexport function collectManifestAliasInventory(\n manifests: Iterable<SmartObjectManifest | null | undefined>,\n): ManifestAliasInventory {\n const claims = new Map<string, Set<string>>();\n const defined = new Set<string>();\n for (const manifest of manifests) {\n if (!manifest?.objects) continue;\n for (const [key, objectDef] of Object.entries(manifest.objects)) {\n const current = manifestObjectQualifiedName(manifest, key, objectDef);\n if (!current) continue;\n defined.add(current);\n for (const alias of readPreviousQualifiedNames(\n objectDef?.decoratorConfig,\n )) {\n const owners = claims.get(alias) ?? new Set<string>();\n owners.add(current);\n claims.set(alias, owners);\n }\n }\n }\n return { claims, defined };\n}\n\n/**\n * THE manifest rule for old names (#3338). Throws when any of `aliases`:\n *\n * - is defined as a class by a manifest in `inventory` — an installed\n * (possibly stale) package still ships the old class, so the old name is\n * live, not deprecated;\n * - is claimed by a class other than `owner` (or, with no `owner`, by more\n * than one class).\n *\n * @throws {ConfigurationError} `CONFIG_QUALIFIED_NAME_ALIAS_COLLISION`\n */\nexport function assertNoCompetingManifestClaims(\n aliases: Iterable<string>,\n inventory: ManifestAliasInventory,\n owner?: string,\n): void {\n for (const alias of aliases) {\n if (inventory.defined.has(alias)) {\n const claimants = [...(inventory.claims.get(alias) ?? [])];\n if (owner && !claimants.includes(owner)) claimants.push(owner);\n throw collision(\n `previousQualifiedNames \"${alias}\" is still defined as a class by an installed manifest (claimed by ${claimants.sort().join(', ') || 'no class'}). ` +\n 'An alias may only name a class that no longer exists; remove the stale package/manifest or the alias.',\n { alias, claimants: claimants.sort(), definedByManifest: true },\n );\n }\n const owners = new Set(inventory.claims.get(alias) ?? []);\n if (owner) owners.add(owner);\n if (owners.size > 1) {\n const sorted = [...owners].sort();\n throw collision(\n `previousQualifiedNames \"${alias}\" is declared by more than one class across installed manifests (${sorted.join(', ')}); ` +\n 'an old name can resolve to only one class.',\n { alias, claimants: sorted },\n );\n }\n }\n}\n\n/** Every manifest this process has loaded (package, static, test caches). */\nfunction loadedManifests(): Array<SmartObjectManifest | null | undefined> {\n return [\n ...getManifestCache().values(),\n getStaticManifestCache(),\n getTestManifestCache(),\n getLocalTestManifestCache(),\n ];\n}\n\n/**\n * The single current owner of `alias` in an inventory, or `undefined` —\n * also when a manifest defines `alias` as a class of its own.\n * Two distinct claimants are refused rather than resolved first-match: an\n * old name can resolve to only one class, on the lazy path as on the eager\n * one.\n *\n * @throws {ConfigurationError} `CONFIG_QUALIFIED_NAME_ALIAS_COLLISION`\n */\nexport function resolveManifestQualifiedNameAlias(\n inventory: ManifestAliasInventory,\n alias: string,\n): string | undefined {\n // A name some manifest defines as a class is not an alias to follow.\n if (inventory.defined.has(alias)) return undefined;\n assertNoCompetingManifestClaims([alias], inventory);\n return [...(inventory.claims.get(alias) ?? [])][0];\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"relationship-graph.d.ts","sourceRoot":"","sources":["../../src/registry/relationship-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAGV,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAkCjB,mFAAmF;AACnF,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,GAAG,SAAS,CAe3B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAgC1D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CA6FxE"}
1
+ {"version":3,"file":"relationship-graph.d.ts","sourceRoot":"","sources":["../../src/registry/relationship-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAGV,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAyCjB,mFAAmF;AACnF,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,GAAG,SAAS,CAe3B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAgC1D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CA6FxE"}
@@ -20,7 +20,7 @@ function resolveTarget(registered, field) {
20
20
  }
21
21
  const related = field.related;
22
22
  if (!related) return null;
23
- if (related.includes(":")) return findClass(related)?.qualifiedName ?? related;
23
+ if (related.includes(":")) return findClass(related, `relationship target declared on ${registered.qualifiedName ?? registered.name}`)?.qualifiedName ?? related;
24
24
  const local = classes.get(`${registered.packageName}:${related}`);
25
25
  if (local) return local.qualifiedName ?? `${registered.packageName}:${related}`;
26
26
  const matches = Array.from(classes).filter(([, entry]) => entry.name === related);
@@ -1 +1 @@
1
- {"version":3,"file":"relationship-graph.js","names":[],"sources":["../../src/registry/relationship-graph.ts"],"sourcesContent":["/**\n * Relationship graph and dependency resolution module for the SMRT ObjectRegistry.\n *\n * Builds relationship maps and dependency graphs from registered class fields.\n *\n * Extracted from registry.ts as part of issue #1006.\n * @see https://github.com/happyvertical/smrt/issues/1006\n */\n\nimport { getInheritanceChain } from './inheritance-resolver';\nimport { findClass } from './name-resolver';\nimport { getClasses } from './shared-state';\nimport type {\n RegisteredClass,\n RegisteredField,\n RelationshipMetadata,\n} from './types';\n\n/** Resolve lazily: the target may register after the decorated child. */\nfunction resolveTarget(\n registered: RegisteredClass,\n field: RegisteredField,\n): string | null | undefined {\n const classes = getClasses();\n const ctor = field._meta?.relatedConstructor;\n if (typeof ctor === 'function') {\n const match = Array.from(classes).find(\n ([, entry]) => entry.constructor === ctor,\n );\n return match ? (match[1].qualifiedName ?? match[0]) : null;\n }\n const related = field.related;\n if (!related) return null;\n if (related.includes(':'))\n return findClass(related)?.qualifiedName ?? related;\n const local = classes.get(`${registered.packageName}:${related}`);\n if (local)\n return local.qualifiedName ?? `${registered.packageName}:${related}`;\n const matches = Array.from(classes).filter(\n ([, entry]) => entry.name === related,\n );\n const distinct = [\n ...new Map(matches.map((match) => [match[1], match])).values(),\n ];\n if (distinct.length === 0) return undefined;\n if (distinct.length !== 1) return null;\n const match = matches.find(([key]) => key.includes(':')) ?? distinct[0];\n return match[1].qualifiedName ?? match[0];\n}\n\n/** Canonical target of the field's declaring class, including inherited fields. */\nexport function resolveRelationshipTarget(\n className: string,\n fieldName: string,\n): string | null | undefined {\n for (const name of [\n className,\n ...[...getInheritanceChain(className)].reverse(),\n ]) {\n const registered = findClass(name);\n const field = registered?.fields.get(fieldName);\n if (registered && field) {\n return resolveTarget(registered, {\n ...field,\n related: field.related?.split('.')[0],\n });\n }\n }\n return undefined;\n}\n\n/**\n * Build dependency graph from foreignKey relationships.\n *\n * Returns a map where keys are class names and values are arrays\n * of class names that the key depends on (via foreignKey fields).\n */\nexport function getDependencyGraph(): Map<string, string[]> {\n const classes = getClasses();\n const graph = new Map<string, string[]>();\n\n // Initialize graph with all registered classes\n for (const [_key, entry] of classes) {\n graph.set(entry.name || _key, []);\n }\n\n // Scan all fields for foreignKey relationships\n for (const [_key, registered] of classes) {\n const simpleName = registered.name || _key;\n const dependencies: string[] = [];\n\n for (const [_fieldName, field] of registered.fields) {\n if (field.type === 'foreignKey' && field.related) {\n const relatedClass = field.related;\n // Skip self-references (table can reference itself after creation)\n // Only add if the related class is registered and not self\n if (\n relatedClass !== simpleName &&\n findClass(relatedClass) !== undefined\n ) {\n dependencies.push(relatedClass);\n }\n }\n }\n\n graph.set(simpleName, dependencies);\n }\n\n return graph;\n}\n\n/**\n * Build comprehensive relationship map from all field types.\n *\n * Returns a map containing all relationships (foreignKey, oneToMany, manyToMany)\n * discovered in registered classes.\n */\nexport function getRelationshipMap(): Map<string, RelationshipMetadata[]> {\n const classes = getClasses();\n const relationshipMap = new Map<string, RelationshipMetadata[]>();\n const simpleNameEntries = new Map<string, Set<RegisteredClass>>();\n\n // Initialize map with all registered classes\n for (const [key, entry] of classes) {\n // The registry is qualified-name keyed. Keep relationship buckets on that\n // canonical identity as well: classes in separate packages may share a\n // simple name, and a later empty declaration must not overwrite an earlier\n // class's relationships.\n relationshipMap.set(entry.qualifiedName || key, []);\n const simpleName = entry.name || key;\n const entries = simpleNameEntries.get(simpleName) ?? new Set();\n entries.add(entry);\n simpleNameEntries.set(simpleName, entries);\n }\n\n // Scan all fields for relationship types\n for (const [key, registered] of classes) {\n const simpleName = registered.name || key;\n const sourceQualifiedClass = registered.qualifiedName || key;\n const relationships: RelationshipMetadata[] = [];\n\n for (const [fieldName, field] of registered.fields) {\n // Check for foreignKey relationships\n if (field.type === 'foreignKey' && field.related) {\n relationships.push({\n sourceClass: simpleName,\n sourceQualifiedClass,\n fieldName,\n targetClass: field.related,\n targetQualifiedClass: resolveTarget(registered, field),\n type: 'foreignKey',\n options: field._meta,\n });\n }\n\n // Check for crossPackageRef relationships (cross-package, no DDL FK)\n if (field.type === 'crossPackageRef' && field.related) {\n relationships.push({\n sourceClass: simpleName,\n sourceQualifiedClass,\n fieldName,\n targetClass: field.related,\n targetQualifiedClass: resolveTarget(registered, field),\n type: 'crossPackageRef',\n options: field._meta,\n });\n }\n\n // Check for oneToMany relationships\n if (field.type === 'oneToMany' && field.related) {\n relationships.push({\n sourceClass: simpleName,\n sourceQualifiedClass,\n fieldName,\n targetClass: field.related,\n targetQualifiedClass: resolveTarget(registered, field),\n type: 'oneToMany',\n options: field._meta,\n });\n }\n\n // Check for manyToMany relationships\n if (field.type === 'manyToMany' && field.related) {\n relationships.push({\n sourceClass: simpleName,\n sourceQualifiedClass,\n fieldName,\n targetClass: field.related,\n targetQualifiedClass: resolveTarget(registered, field),\n type: 'manyToMany',\n options: field._meta,\n });\n }\n }\n\n relationshipMap.set(registered.qualifiedName || key, relationships);\n }\n\n // Preserve the public simple-name map contract where that name identifies\n // exactly one registered class. Colliding names intentionally have no alias:\n // callers with a constructor must use the qualified bucket above.\n for (const [key, registered] of classes) {\n const simpleName = registered.name || key;\n if (simpleNameEntries.get(simpleName)?.size !== 1) continue;\n const qualifiedName = registered.qualifiedName || key;\n const relationships = relationshipMap.get(qualifiedName);\n if (relationships) relationshipMap.set(simpleName, relationships);\n }\n\n return relationshipMap;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"relationship-graph.js","names":[],"sources":["../../src/registry/relationship-graph.ts"],"sourcesContent":["/**\n * Relationship graph and dependency resolution module for the SMRT ObjectRegistry.\n *\n * Builds relationship maps and dependency graphs from registered class fields.\n *\n * Extracted from registry.ts as part of issue #1006.\n * @see https://github.com/happyvertical/smrt/issues/1006\n */\n\nimport { getInheritanceChain } from './inheritance-resolver';\nimport { findClass } from './name-resolver';\nimport { getClasses } from './shared-state';\nimport type {\n RegisteredClass,\n RegisteredField,\n RelationshipMetadata,\n} from './types';\n\n/** Resolve lazily: the target may register after the decorated child. */\nfunction resolveTarget(\n registered: RegisteredClass,\n field: RegisteredField,\n): string | null | undefined {\n const classes = getClasses();\n const ctor = field._meta?.relatedConstructor;\n if (typeof ctor === 'function') {\n const match = Array.from(classes).find(\n ([, entry]) => entry.constructor === ctor,\n );\n return match ? (match[1].qualifiedName ?? match[0]) : null;\n }\n const related = field.related;\n if (!related) return null;\n // A deprecated qualified target (#3338) resolves to the class's current\n // name, so relationship loads, inverses and delete planning all key on it.\n if (related.includes(':'))\n return (\n findClass(\n related,\n `relationship target declared on ${registered.qualifiedName ?? registered.name}`,\n )?.qualifiedName ?? related\n );\n const local = classes.get(`${registered.packageName}:${related}`);\n if (local)\n return local.qualifiedName ?? `${registered.packageName}:${related}`;\n const matches = Array.from(classes).filter(\n ([, entry]) => entry.name === related,\n );\n const distinct = [\n ...new Map(matches.map((match) => [match[1], match])).values(),\n ];\n if (distinct.length === 0) return undefined;\n if (distinct.length !== 1) return null;\n const match = matches.find(([key]) => key.includes(':')) ?? distinct[0];\n return match[1].qualifiedName ?? match[0];\n}\n\n/** Canonical target of the field's declaring class, including inherited fields. */\nexport function resolveRelationshipTarget(\n className: string,\n fieldName: string,\n): string | null | undefined {\n for (const name of [\n className,\n ...[...getInheritanceChain(className)].reverse(),\n ]) {\n const registered = findClass(name);\n const field = registered?.fields.get(fieldName);\n if (registered && field) {\n return resolveTarget(registered, {\n ...field,\n related: field.related?.split('.')[0],\n });\n }\n }\n return undefined;\n}\n\n/**\n * Build dependency graph from foreignKey relationships.\n *\n * Returns a map where keys are class names and values are arrays\n * of class names that the key depends on (via foreignKey fields).\n */\nexport function getDependencyGraph(): Map<string, string[]> {\n const classes = getClasses();\n const graph = new Map<string, string[]>();\n\n // Initialize graph with all registered classes\n for (const [_key, entry] of classes) {\n graph.set(entry.name || _key, []);\n }\n\n // Scan all fields for foreignKey relationships\n for (const [_key, registered] of classes) {\n const simpleName = registered.name || _key;\n const dependencies: string[] = [];\n\n for (const [_fieldName, field] of registered.fields) {\n if (field.type === 'foreignKey' && field.related) {\n const relatedClass = field.related;\n // Skip self-references (table can reference itself after creation)\n // Only add if the related class is registered and not self\n if (\n relatedClass !== simpleName &&\n findClass(relatedClass) !== undefined\n ) {\n dependencies.push(relatedClass);\n }\n }\n }\n\n graph.set(simpleName, dependencies);\n }\n\n return graph;\n}\n\n/**\n * Build comprehensive relationship map from all field types.\n *\n * Returns a map containing all relationships (foreignKey, oneToMany, manyToMany)\n * discovered in registered classes.\n */\nexport function getRelationshipMap(): Map<string, RelationshipMetadata[]> {\n const classes = getClasses();\n const relationshipMap = new Map<string, RelationshipMetadata[]>();\n const simpleNameEntries = new Map<string, Set<RegisteredClass>>();\n\n // Initialize map with all registered classes\n for (const [key, entry] of classes) {\n // The registry is qualified-name keyed. Keep relationship buckets on that\n // canonical identity as well: classes in separate packages may share a\n // simple name, and a later empty declaration must not overwrite an earlier\n // class's relationships.\n relationshipMap.set(entry.qualifiedName || key, []);\n const simpleName = entry.name || key;\n const entries = simpleNameEntries.get(simpleName) ?? new Set();\n entries.add(entry);\n simpleNameEntries.set(simpleName, entries);\n }\n\n // Scan all fields for relationship types\n for (const [key, registered] of classes) {\n const simpleName = registered.name || key;\n const sourceQualifiedClass = registered.qualifiedName || key;\n const relationships: RelationshipMetadata[] = [];\n\n for (const [fieldName, field] of registered.fields) {\n // Check for foreignKey relationships\n if (field.type === 'foreignKey' && field.related) {\n relationships.push({\n sourceClass: simpleName,\n sourceQualifiedClass,\n fieldName,\n targetClass: field.related,\n targetQualifiedClass: resolveTarget(registered, field),\n type: 'foreignKey',\n options: field._meta,\n });\n }\n\n // Check for crossPackageRef relationships (cross-package, no DDL FK)\n if (field.type === 'crossPackageRef' && field.related) {\n relationships.push({\n sourceClass: simpleName,\n sourceQualifiedClass,\n fieldName,\n targetClass: field.related,\n targetQualifiedClass: resolveTarget(registered, field),\n type: 'crossPackageRef',\n options: field._meta,\n });\n }\n\n // Check for oneToMany relationships\n if (field.type === 'oneToMany' && field.related) {\n relationships.push({\n sourceClass: simpleName,\n sourceQualifiedClass,\n fieldName,\n targetClass: field.related,\n targetQualifiedClass: resolveTarget(registered, field),\n type: 'oneToMany',\n options: field._meta,\n });\n }\n\n // Check for manyToMany relationships\n if (field.type === 'manyToMany' && field.related) {\n relationships.push({\n sourceClass: simpleName,\n sourceQualifiedClass,\n fieldName,\n targetClass: field.related,\n targetQualifiedClass: resolveTarget(registered, field),\n type: 'manyToMany',\n options: field._meta,\n });\n }\n }\n\n relationshipMap.set(registered.qualifiedName || key, relationships);\n }\n\n // Preserve the public simple-name map contract where that name identifies\n // exactly one registered class. Colliding names intentionally have no alias:\n // callers with a constructor must use the qualified bucket above.\n for (const [key, registered] of classes) {\n const simpleName = registered.name || key;\n if (simpleNameEntries.get(simpleName)?.size !== 1) continue;\n const qualifiedName = registered.qualifiedName || key;\n const relationships = relationshipMap.get(qualifiedName);\n if (relationships) relationshipMap.set(simpleName, relationships);\n }\n\n return relationshipMap;\n}\n"],"mappings":"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"}
@@ -245,6 +245,32 @@ export interface SmartObjectConfig {
245
245
  * stack/package.json discovery, which can fail in bundled deployments.
246
246
  */
247
247
  packageName?: string;
248
+ /**
249
+ * Deprecated qualified names (`@package/name:ClassName`) this class was
250
+ * registered under before it moved package or was renamed (#3338).
251
+ *
252
+ * Each entry is a lookup bridge, never a second class: qualified lookups,
253
+ * `SmrtPolymorphicAssociation.hydrate()`, `@crossPackageRef` and
254
+ * relationship targets, and playbook `model:` names that still use an old
255
+ * name resolve to this class, logging a one-time deprecation warning per
256
+ * name. The alias never owns a table, route, tool, or `getAllClasses()`
257
+ * entry, and new writes store the current qualified name. An alias that
258
+ * equals a live class's qualified name, or that two classes both declare,
259
+ * is a `CONFIG_QUALIFIED_NAME_ALIAS_COLLISION` error.
260
+ *
261
+ * Removing an entry is a breaking change: ship it only once
262
+ * `smrt doctor --db` reports no stored references to that name. See
263
+ * `packages/core/agents/model-moves.md`.
264
+ *
265
+ * @example
266
+ * ```typescript
267
+ * @smrt({
268
+ * previousQualifiedNames: ['@happyvertical/smrt-projects:ServiceTimeEntry'],
269
+ * })
270
+ * export class ServiceTimeEntry extends SmrtObject {}
271
+ * ```
272
+ */
273
+ previousQualifiedNames?: string[];
248
274
  /**
249
275
  * Custom table name for database storage (defaults to pluralized snake_case class name)
250
276
  * Explicitly setting this ensures the table name survives code minification
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"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"}
@@ -511,7 +511,56 @@ export declare class ObjectRegistry {
511
511
  * }
512
512
  * ```
513
513
  */
514
- static getClassByQualifiedName(qualifiedName: string): RegisteredClass | undefined;
514
+ static getClassByQualifiedName(qualifiedName: string, options?: {
515
+ source?: string;
516
+ }): RegisteredClass | undefined;
517
+ /**
518
+ * Every deprecated qualified name declared through
519
+ * `@smrt({ previousQualifiedNames })`, mapped to its class's CURRENT
520
+ * qualified name and sorted by old name (#3338). Aliases are lookup bridges
521
+ * only: they never appear in {@link getAllClasses} or any other iteration.
522
+ */
523
+ static getQualifiedNameAliases(): Map<string, string>;
524
+ /**
525
+ * The current qualified name for `name` — itself when it is a live
526
+ * qualified name, the class's current name when it is a deprecated alias
527
+ * (logging the one-time deprecation warning), `undefined` otherwise —
528
+ * including for every simple (unqualified) name (#3338).
529
+ * Use it to normalize a stored or declared name before writing it.
530
+ */
531
+ static resolveQualifiedName(name: string, options?: {
532
+ source?: string;
533
+ }): string | undefined;
534
+ /**
535
+ * {@link resolveQualifiedName}, also covering a class that is not
536
+ * registered yet: on a qualified miss it lazily loads the name from its
537
+ * package's manifest — or, for a deprecated name, from the manifest of the
538
+ * class that now declares it — before resolving (#3338). A genuinely
539
+ * unknown name still returns `undefined`.
540
+ */
541
+ static resolveQualifiedNameAsync(name: string, options?: {
542
+ source?: string;
543
+ }): Promise<string | undefined>;
544
+ /**
545
+ * {@link getEquivalentQualifiedNames}, lazily loading a qualified name's
546
+ * class from its manifest first when it is not registered yet (#3338), so
547
+ * stored-name filters see a moved class's old names before anything else
548
+ * has registered it.
549
+ */
550
+ static getEquivalentQualifiedNamesAsync(name: string, options?: {
551
+ source?: string;
552
+ }): Promise<string[]>;
553
+ /**
554
+ * Every qualified name stored data may use for the class `name` resolves
555
+ * to: its current qualified name first, then its declared
556
+ * `previousQualifiedNames` (#3338). Readers that match persisted names
557
+ * (e.g. a polymorphic `metaType` filter) use this so rows written before
558
+ * and after a model move both match. A simple (unqualified) or
559
+ * unresolvable `name` is returned alone.
560
+ */
561
+ static getEquivalentQualifiedNames(name: string, options?: {
562
+ source?: string;
563
+ }): string[];
515
564
  /**
516
565
  * Get a registered class by package name and class name.
517
566
  * This is a convenience method for looking up classes by their namespace components.
@@ -635,6 +684,14 @@ export declare class ObjectRegistry {
635
684
  * collisions by preferring qualified class names where available.
636
685
  */
637
686
  static getQualifiedClassNames(): string[];
687
+ /**
688
+ * Old-name claims and defined class names across every manifest this
689
+ * process can see: loaded caches AND every discoverable package's manifest, which this
690
+ * also loads into the cache so registration-time checks see it (#3338).
691
+ * Rebuilt only when the registry generation moves, so repeated lookups of
692
+ * a stale or unknown old name do not rescan every installed manifest.
693
+ */
694
+ private static loadManifestAliasInventory;
638
695
  /**
639
696
  * Try to load and register a class from external SMRT packages
640
697
  *
@@ -889,7 +946,7 @@ export declare class ObjectRegistry {
889
946
  * const fields = ObjectRegistry.getFields('Place'); // Now has fields
890
947
  * ```
891
948
  */
892
- static ensureManifestLoaded(className: string): Promise<void>;
949
+ static ensureManifestLoaded(requestedName: string): Promise<void>;
893
950
  /**
894
951
  * Get configuration for a registered class
895
952
  */
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/registry.js CHANGED
@@ -5,14 +5,15 @@ import { buildCascadePlan } from "./cascade.js";
5
5
  import { applyOneToManyChildAccessors } from "./child-accessors.js";
6
6
  import { applyPendingDecoratorRegistrations } from "./decorators/compatibility.js";
7
7
  import { bumpRegistryGeneration, getRegistryGeneration } from "./registry/generation.js";
8
- import { createQualifiedName, isQualifiedName, parseQualifiedName } from "./utils/qualified-names.js";
8
+ import { createQualifiedName, isQualifiedName, parseQualifiedName, readPreviousQualifiedNames } from "./utils/qualified-names.js";
9
9
  import { LRUCache } from "./utils/lru-cache.js";
10
10
  import { getClasses, getCollectionCache, getCollectionTableNames, getCollections, getConstructorFieldDecorators, getConstructorTenantScopedDeclarations, getDbInstanceIds, getDiscoveryAttemptCache, getFieldDecorators, getInheritanceCache, getLegacyFieldDecorators, getMethodDecorators, getNextDbId, getSourceFileFromStack, getStiSiblingsLoaded, setNextDbId, verboseLog } from "./registry/shared-state.js";
11
11
  import { clearRegistryDiagnostics, flushRegistryDiagnostics, getRegistryDiagnostics, recordRegistryDiagnostic } from "./registry/diagnostics.js";
12
- import { cloneManifestSchemaColumns, discoverCachedManifestSync, getManifestCache, getNodeBuiltins, loadExternalManifestSyncWithNode } from "./manifest/store.js";
12
+ import { cloneManifestSchemaColumns, discoverCachedManifestSync, getLocalTestManifestCache, getManifestCache, getNodeBuiltins, getStaticManifestCache, getTestManifestCache, loadExternalManifestSyncWithNode } from "./manifest/store.js";
13
13
  import { getDefaultCompositeSource } from "./manifest/sources/composite.js";
14
14
  import { getPackageName } from "./manifest/manifest-loader.js";
15
15
  import { ExplicitPathsManifestSource } from "./manifest/sources/explicit-paths.js";
16
+ import { collectManifestAliasInventory, getQualifiedNameAliasMap, lookupQualifiedNameAlias, resetQualifiedNameAliasWarnings, resolveManifestQualifiedNameAlias, warnDeprecatedQualifiedName } from "./registry/qualified-name-aliases.js";
16
17
  import { findClass, findClassesByName, getAllClasses, getCanonicalClassName, getClass, getClassByConstructor, getClassByQualifiedName, getClassInPackage, getClassNames, getClassesByPackage, getClassesByVisibility, getPublicClasses, getQualifiedClassNames, hasClass, hasClassCaseInsensitive, resolveType } from "./registry/name-resolver.js";
17
18
  import { getAllFields, getAllMethods, getInheritanceChain, mergeFieldConfigs } from "./registry/inheritance-resolver.js";
18
19
  import { resolveCollectionCacheConfig } from "./registry/cache-config.js";
@@ -72,13 +73,18 @@ var manifestLoaderModule;
72
73
  * not cached, so a transient failure is retried on the next call.
73
74
  */
74
75
  function importManifestLoader() {
75
- if (!manifestLoaderModule) manifestLoaderModule = import(getManifestLoaderSpecifier()).catch((error) => {
76
+ if (!manifestLoaderModule) manifestLoaderModule = (import.meta.url.endsWith(".ts") ? import(getManifestLoaderSpecifier()) : import("./manifest/index.js")).catch((error) => {
76
77
  manifestLoaderModule = void 0;
77
78
  throw error;
78
79
  });
79
80
  return manifestLoaderModule;
80
81
  }
81
82
  /**
83
+ * Lazy alias claim inventory (#3338), keyed to the registry generation it
84
+ * was built at. See `ObjectRegistry.loadManifestAliasInventory()`.
85
+ */
86
+ var manifestAliasInventory;
87
+ /**
82
88
  * Registered classes whose manifest has been reconciled, keyed to the registry
83
89
  * generation it was reconciled at (#3047). `ensureManifestLoaded()` sits on
84
90
  * every hydration path; once a class agrees with its manifest there is nothing
@@ -748,8 +754,69 @@ var ObjectRegistry = class ObjectRegistry {
748
754
  * }
749
755
  * ```
750
756
  */
751
- static getClassByQualifiedName(qualifiedName) {
752
- return getClassByQualifiedName(qualifiedName);
757
+ static getClassByQualifiedName(qualifiedName, options = {}) {
758
+ return getClassByQualifiedName(qualifiedName, options.source);
759
+ }
760
+ /**
761
+ * Every deprecated qualified name declared through
762
+ * `@smrt({ previousQualifiedNames })`, mapped to its class's CURRENT
763
+ * qualified name and sorted by old name (#3338). Aliases are lookup bridges
764
+ * only: they never appear in {@link getAllClasses} or any other iteration.
765
+ */
766
+ static getQualifiedNameAliases() {
767
+ return getQualifiedNameAliasMap();
768
+ }
769
+ /**
770
+ * The current qualified name for `name` — itself when it is a live
771
+ * qualified name, the class's current name when it is a deprecated alias
772
+ * (logging the one-time deprecation warning), `undefined` otherwise —
773
+ * including for every simple (unqualified) name (#3338).
774
+ * Use it to normalize a stored or declared name before writing it.
775
+ */
776
+ static resolveQualifiedName(name, options = {}) {
777
+ if (!name.includes(":")) return void 0;
778
+ const registered = getClassByQualifiedName(name, options.source);
779
+ if (!registered) return void 0;
780
+ return registered.qualifiedName ?? name;
781
+ }
782
+ /**
783
+ * {@link resolveQualifiedName}, also covering a class that is not
784
+ * registered yet: on a qualified miss it lazily loads the name from its
785
+ * package's manifest — or, for a deprecated name, from the manifest of the
786
+ * class that now declares it — before resolving (#3338). A genuinely
787
+ * unknown name still returns `undefined`.
788
+ */
789
+ static async resolveQualifiedNameAsync(name, options = {}) {
790
+ if (!name.includes(":")) return void 0;
791
+ const resolved = ObjectRegistry.resolveQualifiedName(name, options);
792
+ if (resolved) return resolved;
793
+ if (!await ObjectRegistry.tryLoadFromExternalPackage(name)) return;
794
+ return ObjectRegistry.resolveQualifiedName(name, options);
795
+ }
796
+ /**
797
+ * {@link getEquivalentQualifiedNames}, lazily loading a qualified name's
798
+ * class from its manifest first when it is not registered yet (#3338), so
799
+ * stored-name filters see a moved class's old names before anything else
800
+ * has registered it.
801
+ */
802
+ static async getEquivalentQualifiedNamesAsync(name, options = {}) {
803
+ if (!name.includes(":")) return [name];
804
+ await ObjectRegistry.resolveQualifiedNameAsync(name, options);
805
+ return ObjectRegistry.getEquivalentQualifiedNames(name, options);
806
+ }
807
+ /**
808
+ * Every qualified name stored data may use for the class `name` resolves
809
+ * to: its current qualified name first, then its declared
810
+ * `previousQualifiedNames` (#3338). Readers that match persisted names
811
+ * (e.g. a polymorphic `metaType` filter) use this so rows written before
812
+ * and after a model move both match. A simple (unqualified) or
813
+ * unresolvable `name` is returned alone.
814
+ */
815
+ static getEquivalentQualifiedNames(name, options = {}) {
816
+ if (!name.includes(":")) return [name];
817
+ const registered = getClassByQualifiedName(name, options.source);
818
+ if (!registered?.qualifiedName) return [name];
819
+ return [registered.qualifiedName, ...readPreviousQualifiedNames(registered.config).filter((alias) => alias !== registered.qualifiedName)];
753
820
  }
754
821
  /**
755
822
  * Get a registered class by package name and class name.
@@ -893,6 +960,34 @@ var ObjectRegistry = class ObjectRegistry {
893
960
  return getQualifiedClassNames();
894
961
  }
895
962
  /**
963
+ * Old-name claims and defined class names across every manifest this
964
+ * process can see: loaded caches AND every discoverable package's manifest, which this
965
+ * also loads into the cache so registration-time checks see it (#3338).
966
+ * Rebuilt only when the registry generation moves, so repeated lookups of
967
+ * a stale or unknown old name do not rescan every installed manifest.
968
+ */
969
+ static async loadManifestAliasInventory(loadExternalManifest) {
970
+ if (manifestAliasInventory?.generation === getRegistryGeneration()) return manifestAliasInventory.inventory;
971
+ let packages = [];
972
+ try {
973
+ packages = await discoverInstalledSmrtPackages();
974
+ } catch (error) {
975
+ verboseLog(`[ObjectRegistry] Package discovery failed while indexing qualified-name aliases: ${error instanceof Error ? error.message : String(error)}`);
976
+ }
977
+ for (const packageName of packages) await loadExternalManifest(packageName);
978
+ const inventory = collectManifestAliasInventory([
979
+ ...getManifestCache().values(),
980
+ getStaticManifestCache(),
981
+ getTestManifestCache(),
982
+ getLocalTestManifestCache()
983
+ ]);
984
+ manifestAliasInventory = {
985
+ generation: getRegistryGeneration(),
986
+ inventory
987
+ };
988
+ return inventory;
989
+ }
990
+ /**
896
991
  * Try to load and register a class from external SMRT packages
897
992
  *
898
993
  * This method attempts to auto-discover classes from @happyvertical/smrt-* packages
@@ -930,6 +1025,16 @@ var ObjectRegistry = class ObjectRegistry {
930
1025
  });
931
1026
  }
932
1027
  if (matches.length === 0) {
1028
+ if (requestedPackageName) {
1029
+ const current = resolveManifestQualifiedNameAlias(await ObjectRegistry.loadManifestAliasInventory(loadExternalManifest), className);
1030
+ if (current && current !== className) {
1031
+ if (await ObjectRegistry.tryLoadFromExternalPackage(current)) {
1032
+ const registered = lookupQualifiedNameAlias(className);
1033
+ if (registered) warnDeprecatedQualifiedName(className, registered.qualifiedName ?? current, "manifest alias index (lazy load)");
1034
+ return true;
1035
+ }
1036
+ }
1037
+ }
933
1038
  verboseLog(`[ObjectRegistry] ❌ Could not find ${className} in any SMRT package`);
934
1039
  return false;
935
1040
  }
@@ -939,6 +1044,7 @@ var ObjectRegistry = class ObjectRegistry {
939
1044
  });
940
1045
  const { manifest, packageName, objectDef } = matches[0];
941
1046
  verboseLog(`[ObjectRegistry] ✅ Found ${className} in ${packageName} manifest`);
1047
+ if (Object.values(manifest.objects).some((def) => readPreviousQualifiedNames(def?.decoratorConfig).length > 0)) await ObjectRegistry.loadManifestAliasInventory(loadExternalManifest);
942
1048
  ObjectRegistry.registerFromManifest(objectDef.className || requestedClassName, objectDef, manifest.packageName);
943
1049
  const childClassName = objectDef.className || requestedClassName;
944
1050
  if (objectDef.extends && objectDef.extends !== childClassName) {
@@ -1211,6 +1317,7 @@ var ObjectRegistry = class ObjectRegistry {
1211
1317
  ObjectRegistry.constructorTenantScopedDeclarations.clear();
1212
1318
  getLegacyFieldDecorators().clear();
1213
1319
  ObjectRegistry.stiSiblingsLoaded.clear();
1320
+ resetQualifiedNameAliasWarnings();
1214
1321
  ObjectRegistry.nextDbId = 1;
1215
1322
  }
1216
1323
  /**
@@ -1408,7 +1515,8 @@ var ObjectRegistry = class ObjectRegistry {
1408
1515
  * const fields = ObjectRegistry.getFields('Place'); // Now has fields
1409
1516
  * ```
1410
1517
  */
1411
- static async ensureManifestLoaded(className) {
1518
+ static async ensureManifestLoaded(requestedName) {
1519
+ let className = requestedName;
1412
1520
  const startGeneration = getRegistryGeneration();
1413
1521
  let registered = ObjectRegistry.findClass(className);
1414
1522
  if (registered && manifestEnsuredAtGeneration.get(registered) === startGeneration) return;
@@ -1423,6 +1531,7 @@ var ObjectRegistry = class ObjectRegistry {
1423
1531
  const testHint = process.env.NODE_ENV === "test" || process.env.VITEST === "true" || typeof testGlobals.describe !== "undefined" || typeof testGlobals.it !== "undefined" ? "\n\n⚠️ Are you using 'smrt test'? Tests require manifest generation.\n ✅ Use: smrt test\n ❌ NOT: npx vitest\n" : "";
1424
1532
  throw new Error(`Class '${className}' is not registered. Ensure the class is decorated with @smrt() before using it.` + testHint);
1425
1533
  }
1534
+ if (registered.qualifiedName && registered.qualifiedName !== className && lookupQualifiedNameAlias(className) === registered) className = registered.qualifiedName;
1426
1535
  const existingFieldCount = registered.fields.size;
1427
1536
  const { discoverManifestEntry } = await importManifestLoader();
1428
1537
  const manifestEntry = await discoverManifestEntry(registered.constructor, className);