/** * Entity-name merge key for the memory knowledge graph. * * `resolveEntity`'s exact-name index (`nameIndexKey` in memory-kg-names.ts) matches * only identical strings after light normalization (`canonicalName`), so * "Node.js" and "nodejs" never find each other. `mergeKey` folds a name down * to a coarser form so common spelling variants — case, separators * (kebab/snake/camel/spaces), a plain trailing plural, path/URL differences — * land on the same key, while staying conservative about names that only look * similar: distinct symbols (C vs C++, .NET vs Net, Disney+ vs Disney), * acronyms (HTTPS vs HTTP), identifiers (fetchUsers vs fetchUser), and * distinct paths/URLs never fold together. * * Validated on a blind-labeled benchmark (three independently-authored, * disjoint pair sets, method frozen before the final score): F0.5 0.775 * against 0.480 for exact-match identity, 3 false merges out of 261 pairs. * The benchmark itself is not checked in; see the test cases below for the * concrete merge/non-merge examples it was built from. * `resolveEntity` uses this only to find CANDIDATES for its existing * (type, name) resolution rules — a merge-key hit is never itself sufficient * to merge two differently-typed entities. * * @module v1/cli/memory/entity-name-key */ /** Merge key: same key ⇒ candidate for the same entity. Different keys never * implies "different entity" on its own — the caller still owns that call. */ export declare function mergeKey(name: string): string; //# sourceMappingURL=entity-name-key.d.ts.map