@vizalice/codegraph 1.5.0 → 1.6.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 (131) hide show
  1. package/README.md +25 -1
  2. package/dist/bin/codegraph.js +126 -24
  3. package/dist/bin/codegraph.js.map +1 -1
  4. package/dist/context/index.d.ts +12 -0
  5. package/dist/context/index.d.ts.map +1 -1
  6. package/dist/context/index.js +47 -8
  7. package/dist/context/index.js.map +1 -1
  8. package/dist/db/index.d.ts +2 -0
  9. package/dist/db/index.d.ts.map +1 -1
  10. package/dist/db/index.js +23 -0
  11. package/dist/db/index.js.map +1 -1
  12. package/dist/db/queries.d.ts +39 -2
  13. package/dist/db/queries.d.ts.map +1 -1
  14. package/dist/db/queries.js +104 -19
  15. package/dist/db/queries.js.map +1 -1
  16. package/dist/directory.d.ts +29 -0
  17. package/dist/directory.d.ts.map +1 -1
  18. package/dist/directory.js +52 -0
  19. package/dist/directory.js.map +1 -1
  20. package/dist/extraction/grammars.d.ts.map +1 -1
  21. package/dist/extraction/grammars.js +38 -2
  22. package/dist/extraction/grammars.js.map +1 -1
  23. package/dist/extraction/index.d.ts +59 -0
  24. package/dist/extraction/index.d.ts.map +1 -1
  25. package/dist/extraction/index.js +175 -53
  26. package/dist/extraction/index.js.map +1 -1
  27. package/dist/extraction/languages/erlang.d.ts.map +1 -1
  28. package/dist/extraction/languages/erlang.js +58 -22
  29. package/dist/extraction/languages/erlang.js.map +1 -1
  30. package/dist/extraction/languages/rust.d.ts +20 -0
  31. package/dist/extraction/languages/rust.d.ts.map +1 -1
  32. package/dist/extraction/languages/rust.js +44 -20
  33. package/dist/extraction/languages/rust.js.map +1 -1
  34. package/dist/extraction/parse-pool.d.ts +7 -0
  35. package/dist/extraction/parse-pool.d.ts.map +1 -1
  36. package/dist/extraction/parse-pool.js +20 -1
  37. package/dist/extraction/parse-pool.js.map +1 -1
  38. package/dist/extraction/tree-sitter.d.ts.map +1 -1
  39. package/dist/extraction/tree-sitter.js +66 -35
  40. package/dist/extraction/tree-sitter.js.map +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +68 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/installer/index.d.ts +2 -2
  45. package/dist/installer/index.d.ts.map +1 -1
  46. package/dist/installer/index.js +4 -3
  47. package/dist/installer/index.js.map +1 -1
  48. package/dist/installer/targets/codex.d.ts +22 -8
  49. package/dist/installer/targets/codex.d.ts.map +1 -1
  50. package/dist/installer/targets/codex.js +65 -48
  51. package/dist/installer/targets/codex.js.map +1 -1
  52. package/dist/installer/targets/types.d.ts +4 -4
  53. package/dist/mcp/daemon-manager.d.ts +1 -1
  54. package/dist/mcp/daemon-manager.d.ts.map +1 -1
  55. package/dist/mcp/daemon-manager.js +1 -1
  56. package/dist/mcp/daemon-manager.js.map +1 -1
  57. package/dist/mcp/daemon-paths.d.ts +6 -0
  58. package/dist/mcp/daemon-paths.d.ts.map +1 -1
  59. package/dist/mcp/daemon-paths.js +54 -0
  60. package/dist/mcp/daemon-paths.js.map +1 -1
  61. package/dist/mcp/daemon-registry.d.ts +10 -0
  62. package/dist/mcp/daemon-registry.d.ts.map +1 -1
  63. package/dist/mcp/daemon-registry.js +51 -3
  64. package/dist/mcp/daemon-registry.js.map +1 -1
  65. package/dist/mcp/daemon.d.ts +9 -6
  66. package/dist/mcp/daemon.d.ts.map +1 -1
  67. package/dist/mcp/daemon.js +10 -8
  68. package/dist/mcp/daemon.js.map +1 -1
  69. package/dist/mcp/engine.d.ts +3 -0
  70. package/dist/mcp/engine.d.ts.map +1 -1
  71. package/dist/mcp/engine.js +45 -3
  72. package/dist/mcp/engine.js.map +1 -1
  73. package/dist/mcp/explore-diagnostics.d.ts +2 -0
  74. package/dist/mcp/explore-diagnostics.d.ts.map +1 -1
  75. package/dist/mcp/explore-diagnostics.js +3 -0
  76. package/dist/mcp/explore-diagnostics.js.map +1 -1
  77. package/dist/mcp/index.d.ts.map +1 -1
  78. package/dist/mcp/index.js +17 -4
  79. package/dist/mcp/index.js.map +1 -1
  80. package/dist/mcp/session.d.ts.map +1 -1
  81. package/dist/mcp/session.js +17 -12
  82. package/dist/mcp/session.js.map +1 -1
  83. package/dist/mcp/tools.d.ts +17 -0
  84. package/dist/mcp/tools.d.ts.map +1 -1
  85. package/dist/mcp/tools.js +164 -25
  86. package/dist/mcp/tools.js.map +1 -1
  87. package/dist/project-config.d.ts +23 -0
  88. package/dist/project-config.d.ts.map +1 -1
  89. package/dist/project-config.js +39 -2
  90. package/dist/project-config.js.map +1 -1
  91. package/dist/resolution/c-fnptr-synthesizer.js +2 -2
  92. package/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
  93. package/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  94. package/dist/resolution/callback-synthesizer.js +38 -10
  95. package/dist/resolution/callback-synthesizer.js.map +1 -1
  96. package/dist/resolution/frameworks/swift.d.ts.map +1 -1
  97. package/dist/resolution/frameworks/swift.js +11 -1
  98. package/dist/resolution/frameworks/swift.js.map +1 -1
  99. package/dist/resolution/import-resolver.d.ts.map +1 -1
  100. package/dist/resolution/import-resolver.js +16 -1
  101. package/dist/resolution/import-resolver.js.map +1 -1
  102. package/dist/resolution/index.d.ts.map +1 -1
  103. package/dist/resolution/index.js +5 -1
  104. package/dist/resolution/index.js.map +1 -1
  105. package/dist/resolution/name-matcher.d.ts +30 -0
  106. package/dist/resolution/name-matcher.d.ts.map +1 -1
  107. package/dist/resolution/name-matcher.js +278 -0
  108. package/dist/resolution/name-matcher.js.map +1 -1
  109. package/dist/resolution/path-aliases.d.ts +6 -4
  110. package/dist/resolution/path-aliases.d.ts.map +1 -1
  111. package/dist/resolution/path-aliases.js +125 -17
  112. package/dist/resolution/path-aliases.js.map +1 -1
  113. package/dist/search/identifier-segments.d.ts +10 -0
  114. package/dist/search/identifier-segments.d.ts.map +1 -1
  115. package/dist/search/identifier-segments.js +29 -0
  116. package/dist/search/identifier-segments.js.map +1 -1
  117. package/dist/search/query-paths.d.ts +57 -0
  118. package/dist/search/query-paths.d.ts.map +1 -0
  119. package/dist/search/query-paths.js +298 -0
  120. package/dist/search/query-paths.js.map +1 -0
  121. package/dist/search/query-utils.d.ts +1 -1
  122. package/dist/search/query-utils.d.ts.map +1 -1
  123. package/dist/search/query-utils.js +12 -3
  124. package/dist/search/query-utils.js.map +1 -1
  125. package/dist/sync/watcher.d.ts +22 -0
  126. package/dist/sync/watcher.d.ts.map +1 -1
  127. package/dist/sync/watcher.js +51 -5
  128. package/dist/sync/watcher.js.map +1 -1
  129. package/dist/types.d.ts +8 -0
  130. package/dist/types.d.ts.map +1 -1
  131. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"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"}
@@ -236,6 +236,13 @@ export interface ExploreAllocationCandidate {
236
236
  worth: number;
237
237
  /** Carries a symbol on the rendered flow spine. */
238
238
  spine: boolean;
239
+ /**
240
+ * The query named this file by PATH (see query-paths.ts). Pinned files are
241
+ * never cliffed or trimmed, and weigh at least as much as the strongest
242
+ * candidate — the agent asked for the file itself, so starving it on text/
243
+ * graph scores (which a pure-path query doesn't produce) defeats the ask.
244
+ */
245
+ pinned?: boolean;
239
246
  }
240
247
  export interface ExploreAllocation {
241
248
  /** path → chars of source it may render. Only holds admitted files. */
@@ -375,6 +382,8 @@ export declare class ToolHandler {
375
382
  private cg;
376
383
  private projectCache;
377
384
  private defaultProjectHint;
385
+ private knownSubprojects;
386
+ private knownSubprojectsBase;
378
387
  private worktreeMismatchCache;
379
388
  private catchUpGate;
380
389
  private queryPool;
@@ -413,6 +422,14 @@ export declare class ToolHandler {
413
422
  * Used only to make the "no default project" error actionable.
414
423
  */
415
424
  setDefaultProjectHint(searchedPath: string): void;
425
+ /**
426
+ * Engine-only: record the indexed sub-projects the workspace down-scan saw
427
+ * when it could not adopt a default project (#1606/#1607). An empty list
428
+ * clears any previous note.
429
+ */
430
+ setKnownSubprojects(roots: string[], base: string): void;
431
+ /** One message line naming the indexed sub-projects, or '' when none known. */
432
+ private formatKnownSubprojects;
416
433
  /**
417
434
  * Whether a default CodeGraph instance is available
418
435
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
package/dist/mcp/tools.js CHANGED
@@ -33,6 +33,7 @@ function __setLoadCodeGraphForTests(cls) {
33
33
  }
34
34
  const worktree_1 = require("../sync/worktree");
35
35
  const query_utils_1 = require("../search/query-utils");
36
+ const query_paths_1 = require("../search/query-paths");
36
37
  const fs_1 = require("fs");
37
38
  const crypto_1 = require("crypto");
38
39
  const utils_1 = require("../utils");
@@ -96,9 +97,14 @@ const RUST_PATH_PREFIXES = new Set(['crate', 'super', 'self']);
96
97
  const CONTAINER_NODE_KINDS = new Set([
97
98
  'class', 'struct', 'union', 'interface', 'trait', 'protocol', 'enum', 'namespace', 'module',
98
99
  ]);
99
- /** Last `::` / `.` / `/`-separated segment of a qualified symbol. */
100
+ /**
101
+ * Last `::` / `.` / `/`-separated segment of a qualified symbol. An Erlang
102
+ * arity tail (`mod::fn/3`, `fn/3`) is stripped first — the useful last segment
103
+ * is the function name, never the digits (#1610).
104
+ */
100
105
  function lastQualifierPart(symbol) {
101
- const parts = symbol.split(/::|[./]/).filter((p) => p.length > 0);
106
+ const noArity = symbol.replace(/\/\d{1,3}$/, '') || symbol;
107
+ const parts = noArity.split(/::|[./]/).filter((p) => p.length > 0);
102
108
  return parts[parts.length - 1] ?? symbol;
103
109
  }
104
110
  /**
@@ -561,7 +567,16 @@ function allocateExploreBudget(candidates, budget, maxFiles) {
561
567
  const w = Math.max(0, c.score) * Math.max(0, Math.min(1, c.worth)) * (c.spine ? A.SPINE_WEIGHT_BOOST : 1);
562
568
  return Number.isFinite(w) ? w : 0;
563
569
  };
564
- const weights = new Map(candidates.map((c) => [c.path, weightOf(c)]));
570
+ // Pinned files weigh at least as much as the strongest raw candidate: their
571
+ // score is whatever the stripped query happened to match (for a pure-path
572
+ // query, nearly nothing), and a proportional split on that would fund the
573
+ // named file worst of all. Floor of 1 covers the all-pinned/zero-score case.
574
+ const rawWeights = new Map(candidates.map((c) => [c.path, weightOf(c)]));
575
+ const topRaw = Math.max(...rawWeights.values());
576
+ const weights = new Map(candidates.map((c) => [
577
+ c.path,
578
+ c.pinned ? Math.max(rawWeights.get(c.path) ?? 0, topRaw, 1) : (rawWeights.get(c.path) ?? 0),
579
+ ]));
565
580
  const topWeight = Math.max(...weights.values());
566
581
  if (!(topWeight > 0))
567
582
  return empty;
@@ -571,7 +586,7 @@ function allocateExploreBudget(candidates, budget, maxFiles) {
571
586
  const cliffed = [];
572
587
  let admitted = [];
573
588
  for (const c of candidates) {
574
- if (!c.spine && (weights.get(c.path) ?? 0) < cliffAt)
589
+ if (!c.spine && !c.pinned && (weights.get(c.path) ?? 0) < cliffAt)
575
590
  cliffed.push(c.path);
576
591
  else
577
592
  admitted.push(c);
@@ -593,7 +608,7 @@ function allocateExploreBudget(candidates, budget, maxFiles) {
593
608
  const byWeight = [...admitted].sort((a, b) => (weights.get(b.path) ?? 0) - (weights.get(a.path) ?? 0));
594
609
  const keep = new Set(byWeight.slice(0, affordable).map((c) => c.path));
595
610
  for (const c of admitted)
596
- if (c.spine)
611
+ if (c.spine || c.pinned)
597
612
  keep.add(c.path);
598
613
  for (const c of admitted)
599
614
  if (!keep.has(c.path))
@@ -1103,6 +1118,13 @@ class ToolHandler {
1103
1118
  // The directory the server last searched for a default project. Surfaced in
1104
1119
  // the "not initialized" error so users can see why detection missed.
1105
1120
  defaultProjectHint = null;
1121
+ // Indexed sub-projects the engine's bounded down-scan saw below the search
1122
+ // base when no default project resolved (#1607). Listed in the "not
1123
+ // initialized" error so the fact is reachable through the protocol, not just
1124
+ // the host's stderr capture. Engine-maintained (initial resolve + throttled
1125
+ // retry) — tool calls themselves never scan.
1126
+ knownSubprojects = [];
1127
+ knownSubprojectsBase = null;
1106
1128
  // Per-start-path cache of the git worktree/index mismatch (issue #155). The
1107
1129
  // mismatch is a fixed property of (where the request came from → which
1108
1130
  // .codegraph/ it resolves to), so the up-to-two `git rev-parse` spawns run
@@ -1198,6 +1220,24 @@ class ToolHandler {
1198
1220
  setDefaultProjectHint(searchedPath) {
1199
1221
  this.defaultProjectHint = searchedPath;
1200
1222
  }
1223
+ /**
1224
+ * Engine-only: record the indexed sub-projects the workspace down-scan saw
1225
+ * when it could not adopt a default project (#1606/#1607). An empty list
1226
+ * clears any previous note.
1227
+ */
1228
+ setKnownSubprojects(roots, base) {
1229
+ this.knownSubprojects = roots;
1230
+ this.knownSubprojectsBase = base;
1231
+ }
1232
+ /** One message line naming the indexed sub-projects, or '' when none known. */
1233
+ formatKnownSubprojects() {
1234
+ if (this.knownSubprojects.length === 0)
1235
+ return '';
1236
+ const base = this.knownSubprojectsBase;
1237
+ const rels = this.knownSubprojects.map((r) => (base ? (0, path_1.relative)(base, r) || '.' : r));
1238
+ return (`Indexed sub-projects were found below it: ${rels.join(', ')} — ` +
1239
+ 'pass one of them (absolute, or resolved against that directory) as projectPath.\n');
1240
+ }
1201
1241
  /**
1202
1242
  * Whether a default CodeGraph instance is available
1203
1243
  */
@@ -1315,6 +1355,7 @@ class ToolHandler {
1315
1355
  const searched = this.defaultProjectHint ?? process.cwd();
1316
1356
  throw new NotIndexedError('No CodeGraph project is loaded for this session.\n' +
1317
1357
  `Searched for a .codegraph/ directory starting from: ${searched}\n` +
1358
+ this.formatKnownSubprojects() +
1318
1359
  'Either the server root has no index of its own (e.g. a monorepo where only ' +
1319
1360
  "sub-projects are indexed), or the MCP client launched the server outside your " +
1320
1361
  'project without reporting the workspace root. Either way, target the project ' +
@@ -3059,6 +3100,30 @@ class ToolHandler {
3059
3100
  budget = getExploreOutputBudget(Infinity);
3060
3101
  }
3061
3102
  const maxFiles = (0, utils_1.clamp)(args.maxFiles || budget.defaultMaxFiles, 1, 20);
3103
+ // File paths named in the query become PINNED files: guaranteed admission,
3104
+ // top of the rank order, funded first — and their span is REMOVED from the
3105
+ // matching query. Runs on the RAW query (normalizeQuerySpelling strips
3106
+ // `/digits` tails, which would mangle numeric path segments). Without this,
3107
+ // a SvelteKit path like `runs/[runId]/+page.svelte` was shredded by the
3108
+ // seeding tokenizer (splits on brackets → `runId` seeded as a "named
3109
+ // symbol") and by FTS (`page`/`runs` fragments admitted every sibling
3110
+ // `+page.svelte`), starving the very files the agent asked for.
3111
+ let pinnedFiles = [];
3112
+ let unresolvedPathSpans = [];
3113
+ let matchQuery = query;
3114
+ if ((0, query_paths_1.queryMightContainPaths)(rawQuery)) {
3115
+ try {
3116
+ const extraction = (0, query_paths_1.extractQueryPaths)(rawQuery, cg.getFiles().map((f) => f.path), { maxPins: maxFiles });
3117
+ if (extraction.pinnedFiles.length > 0 || extraction.unresolvedPathSpans.length > 0) {
3118
+ pinnedFiles = extraction.pinnedFiles;
3119
+ unresolvedPathSpans = extraction.unresolvedPathSpans;
3120
+ matchQuery = normalizeQuerySpelling(extraction.strippedQuery);
3121
+ }
3122
+ }
3123
+ catch { /* path pinning must never fail an explore call */ }
3124
+ }
3125
+ const pinnedSet = new Set(pinnedFiles);
3126
+ const pinnedOrder = new Map(pinnedFiles.map((p, i) => [p, i]));
3062
3127
  // Per-file allocation diagnostic (CG-4). `null` unless CODEGRAPH_EXPLORE_DEBUG
3063
3128
  // is set — every `diag?.` below is then a no-op and the response is
3064
3129
  // byte-identical. It only OBSERVES: it must never feed back into rendering.
@@ -3105,15 +3170,38 @@ class ToolHandler {
3105
3170
  // Use a large maxNodes budget — explore has its own 35k char output limit
3106
3171
  // that prevents context bloat, so more nodes just means better coverage
3107
3172
  // across entry points (especially for large files like Svelte components).
3108
- const subgraph = await cg.findRelevantContext(query, {
3173
+ // Matching runs on the path-stripped query; `query` stays for display.
3174
+ const subgraph = await cg.findRelevantContext(matchQuery, {
3109
3175
  searchLimit: 8,
3110
3176
  traversalDepth: 3,
3111
3177
  maxNodes: 200,
3112
3178
  minScore: 0.2,
3113
3179
  });
3180
+ // Pinned files' symbols enter the gather unconditionally — the agent named
3181
+ // the file itself, so its contents ARE the answer regardless of what the
3182
+ // stripped query text matched (which, for a pure-path query, is nothing).
3183
+ const PINNED_FILE_NODE_CAP = 300;
3184
+ for (const fp of pinnedFiles) {
3185
+ let fileNodes = [];
3186
+ try {
3187
+ fileNodes = cg.getNodesInFile(fp);
3188
+ }
3189
+ catch {
3190
+ continue;
3191
+ }
3192
+ fileNodes
3193
+ .filter((n) => n.kind !== 'file' && n.kind !== 'import' && n.kind !== 'export')
3194
+ .sort((a, b) => a.startLine - b.startLine)
3195
+ .slice(0, PINNED_FILE_NODE_CAP)
3196
+ .forEach((n) => { if (!subgraph.nodes.has(n.id))
3197
+ subgraph.nodes.set(n.id, n); });
3198
+ }
3114
3199
  if (subgraph.nodes.size === 0) {
3115
3200
  diag?.finishEmpty('no relevant code found — empty subgraph');
3116
- const empty = `No relevant code found for "${query}"`;
3201
+ const missNote = unresolvedPathSpans.length > 0
3202
+ ? ` (no indexed file uniquely matches ${unresolvedPathSpans.map((s) => `\`${s}\``).join(', ')})`
3203
+ : '';
3204
+ const empty = `No relevant code found for "${query}"${missNote}`;
3117
3205
  // Still an explore call, so it is still recorded: an empty answer spends a
3118
3206
  // call against the tier budget even though it emits no source.
3119
3207
  return this.exploreResult(empty, {
@@ -3180,6 +3268,13 @@ class ToolHandler {
3180
3268
  {
3181
3269
  const FILE_EXT = /\.(?:java|kt|kts|ts|tsx|js|jsx|mjs|cjs|cs|py|go|rb|php|swift|rs|cpp|cc|cxx|c|h|hpp|scala|lua|dart|vue|svelte|astro|erl|hrl)$/i;
3182
3270
  const CALLABLE = new Set(['method', 'function', 'component', 'constructor']);
3271
+ // Variables/constants seed too: in Svelte/React a `$state` variable
3272
+ // (`chatAtBottom`, `feedAtBottom`) is exactly the kind of symbol an agent
3273
+ // names in a query, and the exact-name search channel already returns
3274
+ // them — only this seeding tier was callable-only. The NL-stopword guard
3275
+ // below applies unchanged, so bare English words still can't seed a
3276
+ // same-named local. Callables keep priority via the body-size sort.
3277
+ const SEEDABLE = new Set([...CALLABLE, 'variable', 'constant']);
3183
3278
  const isTestPath = (p) => /(^|\/)(tests?|specs?|__tests__|testdata|mocks?|fixtures?)\//i.test(p) || /\.(test|spec)\.[a-z]+$/i.test(p);
3184
3279
  const bodyLines = (n) => Math.max(0, (n.endLine ?? n.startLine) - n.startLine);
3185
3280
  const callerCount = (n) => { try {
@@ -3188,7 +3283,7 @@ class ToolHandler {
3188
3283
  catch {
3189
3284
  return 0;
3190
3285
  } };
3191
- const tokens = [...new Set(query.split(/[\s,()[\]]+/)
3286
+ const tokens = [...new Set(matchQuery.split(/[\s,()[\]]+/)
3192
3287
  .map((t) => t.replace(FILE_EXT, '').trim())
3193
3288
  .filter((t) => t.length >= 3 && /^[A-Za-z_$][\w$]*(?:(?:::|\.)[\w$]+)*$/.test(t)))].slice(0, 16);
3194
3289
  // PascalCase tokens in the query are type/file disambiguators — when the
@@ -3261,24 +3356,26 @@ class ToolHandler {
3261
3356
  }
3262
3357
  }
3263
3358
  let cands = raw
3264
- .filter((n) => CALLABLE.has(n.kind) && !isTestPath(n.filePath))
3359
+ .filter((n) => SEEDABLE.has(n.kind) && !isTestPath(n.filePath))
3265
3360
  .sort((a, b) => (bodyLines(b) > 1 ? 1 : 0) - (bodyLines(a) > 1 ? 1 : 0) || bodyLines(b) - bodyLines(a));
3266
3361
  // Field-name seeding fallback (#1196): a camelCase token that names NO
3267
3362
  // definition of its own is usually an object-literal key / API field
3268
3363
  // (`profileInfo`) — no node exists, so it contributed zero seeds and
3269
3364
  // the files that DEFINE it (`getProfileInfoV2` in profileController)
3270
- // never surfaced. Seed its camel-infix definers instead: callables
3271
- // whose name contains the token at a hump boundary or as a prefix.
3365
+ // never surfaced. Seed its camel-infix definers instead: seedable
3366
+ // symbols (callables + variables `atBottom` must reach the `$state`
3367
+ // variables `feedAtBottom`/`chatAtBottom`) whose name contains the
3368
+ // token at a hump boundary or as a prefix.
3272
3369
  // Exact-empty + camel-shaped only (bare words keep the NL-stopword
3273
3370
  // guard below), shortest-first, capped so a hot infix can't flood.
3274
3371
  if (cands.length === 0 && !isQual && /[a-z][A-Z]/.test(t)) {
3275
3372
  const lcToken = t.toLowerCase();
3276
3373
  cands = cg
3277
3374
  .getNodesByNameSubstring(t, {
3278
- kinds: ['function', 'method', 'component'],
3375
+ kinds: ['function', 'method', 'component', 'variable', 'constant'],
3279
3376
  limit: 60,
3280
3377
  })
3281
- .filter((n) => CALLABLE.has(n.kind) && !isTestPath(n.filePath))
3378
+ .filter((n) => SEEDABLE.has(n.kind) && !isTestPath(n.filePath))
3282
3379
  .filter((n) => {
3283
3380
  const idx = n.name.toLowerCase().indexOf(lcToken);
3284
3381
  if (idx < 0)
@@ -3473,8 +3570,9 @@ class ToolHandler {
3473
3570
  }
3474
3571
  fileGroups.set(node.filePath, group);
3475
3572
  }
3476
- // Extract query terms for relevance checking
3477
- const queryTerms = query.toLowerCase().split(/\s+/).filter(t => t.length >= 3);
3573
+ // Extract query terms for relevance checking (path-stripped: a pinned
3574
+ // file's own path fragments must not count as "term hits" everywhere)
3575
+ const queryTerms = matchQuery.toLowerCase().split(/\s+/).filter(t => t.length >= 3);
3478
3576
  // Test/spec/icon/i18n file detector — used by the pre-floor hard filter, the
3479
3577
  // rank penalty, and the comparator deprioritization.
3480
3578
  //
@@ -3552,9 +3650,10 @@ class ToolHandler {
3552
3650
  // keep-minimum then pulled two test files back in as the "spread".
3553
3651
  let candidateFiles = [...fileGroups.entries()];
3554
3652
  {
3555
- const queryMentionsTests = /\b(test|tests|testing|spec|verify|verifies)\b/i.test(query);
3653
+ const queryMentionsTests = /\b(test|tests|testing|spec|verify|verifies)\b/i.test(matchQuery);
3556
3654
  if (!queryMentionsTests) {
3557
- const nonLow = candidateFiles.filter(([p]) => !isLowValue(p));
3655
+ // A pinned file is exempt: naming a test file by path IS asking for it.
3656
+ const nonLow = candidateFiles.filter(([p]) => !isLowValue(p) || pinnedSet.has(p));
3558
3657
  if (nonLow.length >= 2) {
3559
3658
  candidateFiles = nonLow;
3560
3659
  }
@@ -3565,7 +3664,7 @@ class ToolHandler {
3565
3664
  // best file's score and why that fraction is clamped at both ends.
3566
3665
  const topScore = Math.max(0, ...candidateFiles.map(([, g]) => g.score));
3567
3666
  const scoreFloor = Math.max(SCORE_FLOOR_ABSOLUTE, Math.min(SCORE_FLOOR_MAX, topScore * SCORE_FLOOR_FRACTION_OF_TOP));
3568
- let relevantFiles = candidateFiles.filter(([, group]) => group.score >= scoreFloor);
3667
+ let relevantFiles = candidateFiles.filter(([fp, group]) => group.score >= scoreFloor || pinnedSet.has(fp));
3569
3668
  if (relevantFiles.length < SCORE_FLOOR_KEEP_MIN) {
3570
3669
  // Backfill from what the RELATIVE floor cut, best first, at two strengths:
3571
3670
  //
@@ -3580,8 +3679,10 @@ class ToolHandler {
3580
3679
  // worst outcome on the board — the agent falls straight back to grep.
3581
3680
  const minEvidence = relevantFiles.length === 0 ? Number.EPSILON : SCORE_FLOOR_ABSOLUTE;
3582
3681
  relevantFiles = candidateFiles
3583
- .filter(([, group]) => group.score >= minEvidence)
3584
- .sort((a, b) => b[1].score - a[1].score || b[1].nodes.length - a[1].nodes.length)
3682
+ .filter(([fp, group]) => group.score >= minEvidence || pinnedSet.has(fp))
3683
+ .sort((a, b) => (pinnedSet.has(b[0]) ? 1 : 0) - (pinnedSet.has(a[0]) ? 1 : 0)
3684
+ || b[1].score - a[1].score
3685
+ || b[1].nodes.length - a[1].nodes.length)
3585
3686
  .slice(0, Math.max(SCORE_FLOOR_KEEP_MIN, relevantFiles.length));
3586
3687
  }
3587
3688
  diag?.setScoreFloor(scoreFloor, relevantFiles.length);
@@ -3683,7 +3784,8 @@ class ToolHandler {
3683
3784
  // dropped, so the budget never fills with incidental files. Guarded so it
3684
3785
  // never prunes below 2.
3685
3786
  if (maxGraph > 0) {
3686
- const gated = relevantFiles.filter(([fp]) => (fileGraphScore.get(fp) ?? 0) >= maxGraph * 0.06
3787
+ const gated = relevantFiles.filter(([fp]) => pinnedSet.has(fp)
3788
+ || (fileGraphScore.get(fp) ?? 0) >= maxGraph * 0.06
3687
3789
  || centralFiles.has(fp)
3688
3790
  || entryFiles.has(fp)
3689
3791
  || changeSurfaceFiles.has(fp)
@@ -3737,7 +3839,16 @@ class ToolHandler {
3737
3839
  const sortedFiles = relevantFiles.sort((a, b) => {
3738
3840
  const aPath = a[0].toLowerCase();
3739
3841
  const bPath = b[0].toLowerCase();
3740
- // Agent-named files first (it asked for a symbol defined here by name).
3842
+ // Pinned files first of all the agent named the FILE by path, which is
3843
+ // even more explicit than naming a symbol in it. Among pins, keep the
3844
+ // order they appeared in the query.
3845
+ const aPin = pinnedSet.has(a[0]) ? 1 : 0;
3846
+ const bPin = pinnedSet.has(b[0]) ? 1 : 0;
3847
+ if (aPin !== bPin)
3848
+ return bPin - aPin;
3849
+ if (aPin && bPin)
3850
+ return (pinnedOrder.get(a[0]) ?? 0) - (pinnedOrder.get(b[0]) ?? 0);
3851
+ // Agent-named files next (it asked for a symbol defined here by name).
3741
3852
  const aNamed = namedSeedFiles.has(a[0]) ? 1 : 0;
3742
3853
  const bNamed = namedSeedFiles.has(b[0]) ? 1 : 0;
3743
3854
  if (aNamed !== bNamed)
@@ -3833,7 +3944,7 @@ class ToolHandler {
3833
3944
  // Compute the flow spine once — used both to prepend the Flow section (below)
3834
3945
  // and to gate adaptive source sizing: files on the spine get full source,
3835
3946
  // off-spine peers skeletonize.
3836
- const flow = this.buildFlowFromNamedSymbols(cg, query);
3947
+ const flow = this.buildFlowFromNamedSymbols(cg, matchQuery);
3837
3948
  // Snapshot every ranked candidate's scoring inputs, in final sort order, so
3838
3949
  // the diagnostic can show what each file's share of the envelope was BOUGHT
3839
3950
  // with (score, graph mass, term hits, flags) — not just what it cost.
@@ -3854,6 +3965,7 @@ class ToolHandler {
3854
3965
  graphScore: fileGraphScore.get(fp) ?? 0,
3855
3966
  termHits: fileTermHits.get(fp) ?? 0,
3856
3967
  nodes: group.nodes.length,
3968
+ pinned: pinnedSet.has(fp),
3857
3969
  named: namedSeedFiles.has(fp),
3858
3970
  central: centralFiles.has(fp),
3859
3971
  entry: entryFiles.has(fp),
@@ -3872,8 +3984,11 @@ class ToolHandler {
3872
3984
  const allocation = allocateExploreBudget(sortedFiles.map(([fp, group]) => ({
3873
3985
  path: fp,
3874
3986
  score: group.score,
3875
- worth: rankPenalty(fp),
3987
+ // A pinned file's bytes are worth full price by definition — the agent
3988
+ // asked for the file itself, generated/test or not.
3989
+ worth: pinnedSet.has(fp) ? 1 : rankPenalty(fp),
3876
3990
  spine: group.nodes.some((n) => flow.pathNodeIds.has(n.id)),
3991
+ pinned: pinnedSet.has(fp),
3877
3992
  })), budget, maxFiles);
3878
3993
  diag?.setAllocation(allocation.allowances, allocation.cliffed, allocation.cliffAt, allocation.pool);
3879
3994
  // Cliffed files ship as pointers — path, symbols, line numbers — so the agent
@@ -5548,9 +5663,19 @@ class ToolHandler {
5548
5663
  return sum;
5549
5664
  return sum + new Set(g.nodes.filter((n) => n.kind !== 'import' && n.kind !== 'export').map((n) => n.id)).size;
5550
5665
  }, 0);
5551
- const summaryLine = survivors.length > 0
5666
+ let summaryLine = survivors.length > 0
5552
5667
  ? `Found ${shownSymbols} symbol${shownSymbols === 1 ? '' : 's'} across ${survivors.length} file${survivors.length === 1 ? '' : 's'}.`
5553
5668
  : `Found ${subgraph.nodes.size} symbol${subgraph.nodes.size === 1 ? '' : 's'} across ${fileGroups.size} file${fileGroups.size === 1 ? '' : 's'}.`;
5669
+ // Path pinning is visible, not silent: say which query-named files were
5670
+ // honored, and which path spans matched nothing so the agent can correct
5671
+ // them instead of trusting a response that quietly ignored the path.
5672
+ const pinnedShown = pinnedFiles.filter((fp) => survivors.includes(fp)).length;
5673
+ if (pinnedShown > 0) {
5674
+ summaryLine += ` ${pinnedShown} file${pinnedShown === 1 ? '' : 's'} pinned from the query.`;
5675
+ }
5676
+ if (unresolvedPathSpans.length > 0) {
5677
+ summaryLine += ` No indexed file uniquely matches ${unresolvedPathSpans.map((s) => `\`${s}\``).join(', ')}.`;
5678
+ }
5554
5679
  finalText = finalText.replace(SUMMARY_SENTINEL, summaryLine);
5555
5680
  // Emit the allocation diagnostic from the FINAL text, so per-file bytes and
5556
5681
  // shares account for the hard-ceiling truncation above (CG-4).
@@ -6240,6 +6365,20 @@ class ToolHandler {
6240
6365
  * Python — `stage_apply::run` matches a `run` in `stage_apply.rs`)
6241
6366
  */
6242
6367
  matchesSymbol(node, symbol) {
6368
+ // Erlang arity spelling (`fn/3`, `mod:fn/3` → normalized `mod.fn/3`): when
6369
+ // the node's qualifiedName carries an arity (`mod::fn/3`, #1610), the
6370
+ // written arity must match it exactly; the remaining comparison then runs
6371
+ // on the arity-less spelling. A node with no arity in its qualifiedName
6372
+ // keeps the original symbol (a `/` there means a path-ish name instead).
6373
+ const aritySpelling = /^(.+)\/(\d{1,3})$/.exec(symbol);
6374
+ if (aritySpelling) {
6375
+ const nodeArity = /\/(\d{1,3})$/.exec(node.qualifiedName ?? '')?.[1];
6376
+ if (nodeArity !== undefined) {
6377
+ if (nodeArity !== aritySpelling[2])
6378
+ return false;
6379
+ symbol = aritySpelling[1];
6380
+ }
6381
+ }
6243
6382
  // Simple name match
6244
6383
  if (node.name === symbol)
6245
6384
  return true;