fix(retrieval): multi-hump field-name queries reach their definers (#1319)
Three compounding defects (#1196) made a query bag of object-literal keys (`profileInfo isTrialEligible quotaInfo billingMethod`) return unrelated results while the defining files never surfaced: 1. Step 5b title-cased interior humps (profileInfo -> Profileinfo) and then compared case-SENSITIVELY, dropping every row SQLite's case-insensitive LIKE had just recovered. The hump lookup is now case-insensitive with an explicit uppercase-at-match requirement. 2. Step 5b/5c's kind whitelist held only type-like kinds — dead code on method-centric codebases. Callable kinds (function/method/component) are fetched as a SEPARATE LIKE batch so hot single-word terms can't crowd classes out of the length-ordered 200-row batch. 3. explore's named-symbol seeding was exact-name only; a field token seeded nothing. A camelCase token with ZERO exact defs now seeds its camel-infix definers (callables, hump-boundary or prefix, shortest first, capped at 3) — bare lowercase words keep the #1252 stopword guard untouched. The reporter's acceptance query is a pinned e2e test (definer files present, exact-name seeding unaffected). excalidraw probe: the canonical flow query (mutateElement renderStaticScene) is byte- identical; NL queries shift toward more-central callables (useUIAppState/getDefaultAppState over observer periphery). Fixes #1196 Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
a5a8942d1c
commit
1de7e8f8b5
@@ -8,6 +8,7 @@
|
||||
import * as path from 'path';
|
||||
import {
|
||||
Node,
|
||||
NodeKind,
|
||||
Edge,
|
||||
FileRecord,
|
||||
ExtractionResult,
|
||||
@@ -1220,6 +1221,20 @@ export class CodeGraph {
|
||||
return this.queries.getNodesByNamePrefix(prefix, limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Nodes whose name CONTAINS `substring` (LIKE scan, ASCII-case-insensitive,
|
||||
* shortest-first). The camel-infix lookup FTS can't do — `profileInfo`
|
||||
* inside `getProfileInfoV2` is one FTS token (#1196).
|
||||
*/
|
||||
getNodesByNameSubstring(
|
||||
substring: string,
|
||||
options: { kinds?: NodeKind[]; limit?: number; excludePrefix?: boolean } = {}
|
||||
): Node[] {
|
||||
return this.queries
|
||||
.findNodesByNameSubstring(substring, options)
|
||||
.map((r) => r.node);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search nodes by text
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user