ghagga-core 3.2.0 → 3.3.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 (79) hide show
  1. package/dist/agents/issue-triage.d.ts +143 -0
  2. package/dist/agents/issue-triage.d.ts.map +1 -0
  3. package/dist/agents/issue-triage.js +230 -0
  4. package/dist/agents/issue-triage.js.map +1 -0
  5. package/dist/agents/prompts.d.ts +41 -1
  6. package/dist/agents/prompts.d.ts.map +1 -1
  7. package/dist/agents/prompts.js +123 -2
  8. package/dist/agents/prompts.js.map +1 -1
  9. package/dist/enhance/prompt.d.ts +1 -1
  10. package/dist/enhance/prompt.d.ts.map +1 -1
  11. package/dist/graph/builder.d.ts +13 -1
  12. package/dist/graph/builder.d.ts.map +1 -1
  13. package/dist/graph/builder.js +305 -6
  14. package/dist/graph/builder.js.map +1 -1
  15. package/dist/graph/call-chain.d.ts +27 -0
  16. package/dist/graph/call-chain.d.ts.map +1 -1
  17. package/dist/graph/call-chain.js +113 -18
  18. package/dist/graph/call-chain.js.map +1 -1
  19. package/dist/graph/changed-symbols.d.ts +57 -0
  20. package/dist/graph/changed-symbols.d.ts.map +1 -0
  21. package/dist/graph/changed-symbols.js +123 -0
  22. package/dist/graph/changed-symbols.js.map +1 -0
  23. package/dist/graph/extractors/index.d.ts +3 -3
  24. package/dist/graph/extractors/index.d.ts.map +1 -1
  25. package/dist/graph/extractors/index.js +2 -2
  26. package/dist/graph/extractors/index.js.map +1 -1
  27. package/dist/graph/extractors/javascript.d.ts.map +1 -1
  28. package/dist/graph/extractors/javascript.js +89 -3
  29. package/dist/graph/extractors/javascript.js.map +1 -1
  30. package/dist/graph/extractors/rust.d.ts.map +1 -1
  31. package/dist/graph/extractors/rust.js +7 -2
  32. package/dist/graph/extractors/rust.js.map +1 -1
  33. package/dist/graph/extractors/types.d.ts +7 -1
  34. package/dist/graph/extractors/types.d.ts.map +1 -1
  35. package/dist/graph/extractors/typescript.d.ts.map +1 -1
  36. package/dist/graph/extractors/typescript.js +95 -4
  37. package/dist/graph/extractors/typescript.js.map +1 -1
  38. package/dist/graph/index.d.ts +8 -3
  39. package/dist/graph/index.d.ts.map +1 -1
  40. package/dist/graph/index.js +4 -2
  41. package/dist/graph/index.js.map +1 -1
  42. package/dist/graph/loader.d.ts +29 -0
  43. package/dist/graph/loader.d.ts.map +1 -1
  44. package/dist/graph/loader.js +70 -1
  45. package/dist/graph/loader.js.map +1 -1
  46. package/dist/graph/narrow-symbols.d.ts +73 -0
  47. package/dist/graph/narrow-symbols.d.ts.map +1 -0
  48. package/dist/graph/narrow-symbols.js +195 -0
  49. package/dist/graph/narrow-symbols.js.map +1 -0
  50. package/dist/graph/schema.d.ts +117 -4
  51. package/dist/graph/schema.d.ts.map +1 -1
  52. package/dist/graph/schema.js +67 -3
  53. package/dist/graph/schema.js.map +1 -1
  54. package/dist/graph/scip/builder.d.ts +64 -0
  55. package/dist/graph/scip/builder.d.ts.map +1 -0
  56. package/dist/graph/scip/builder.js +268 -0
  57. package/dist/graph/scip/builder.js.map +1 -0
  58. package/dist/graph/scip/merge.d.ts +66 -0
  59. package/dist/graph/scip/merge.d.ts.map +1 -0
  60. package/dist/graph/scip/merge.js +98 -0
  61. package/dist/graph/scip/merge.js.map +1 -0
  62. package/dist/index.d.ts +5 -2
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +3 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/pipeline/prepare-graph.d.ts +23 -1
  67. package/dist/pipeline/prepare-graph.d.ts.map +1 -1
  68. package/dist/pipeline/prepare-graph.js +119 -3
  69. package/dist/pipeline/prepare-graph.js.map +1 -1
  70. package/dist/pipeline/prepare.d.ts.map +1 -1
  71. package/dist/pipeline/prepare.js +2 -0
  72. package/dist/pipeline/prepare.js.map +1 -1
  73. package/dist/providers/cli-bridge.d.ts.map +1 -1
  74. package/dist/providers/cli-bridge.js +1 -0
  75. package/dist/providers/cli-bridge.js.map +1 -1
  76. package/dist/types.d.ts +21 -0
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/types.js.map +1 -1
  79. package/package.json +3 -1
@@ -5,8 +5,13 @@
5
5
  * Handles use statements, mod declarations, and pub exports.
6
6
  */
7
7
  // ─── Import Patterns ────────────────────────────────────────────
8
- /** use crate::module::item; / use super::module; / use std::collections::HashMap; */
9
- const USE_RE = /^use\s+([\w:]+(?:::\{[^}]+\})?(?:::\*)?)\s*;/gm;
8
+ /**
9
+ * use crate::module::item; / use super::module; / use std::collections::HashMap;
10
+ * / pub use crate::module::Item; / pub(crate) use crate::module::Item; — a
11
+ * `pub use` is a re-export (Rust's barrel-equivalent) and must be captured
12
+ * with the same import-entry parity as a plain `use` (BL-SCIP-BARREL-PYTHON-RUST).
13
+ */
14
+ const USE_RE = /^(?:pub(?:\([\w]+\))?\s+)?use\s+([\w:]+(?:::\{[^}]+\})?(?:::\*)?)\s*;/gm;
10
15
  /** mod module_name; — external module declaration (links to another file) */
11
16
  const MOD_RE = /^(?:pub\s+)?mod\s+(\w+)\s*;/gm;
12
17
  // ─── Export Patterns ────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/graph/extractors/rust.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/graph/extractors/rust.ts"],"names":[],"mappings":"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"}
@@ -13,10 +13,16 @@ export interface ImportInfo {
13
13
  symbols: string[];
14
14
  }
15
15
  export interface ExportInfo {
16
- /** Exported symbol name */
16
+ /** Exported symbol name (sentinel `'*'` for wildcard re-exports) */
17
17
  name: string;
18
18
  /** Kind of export */
19
19
  kind: 'function' | 'class' | 'variable' | 'type' | 'default';
20
+ /**
21
+ * Present ⇒ this is a re-export (`export ... from './source'`), not a
22
+ * locally-defined declaration. `source` is the raw (unresolved) module
23
+ * specifier. Additive/optional — absent for genuine local exports.
24
+ */
25
+ source?: string;
20
26
  }
21
27
  export interface Extractor {
22
28
  /** Language this extractor handles */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/graph/extractors/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;CAC9D;AAID,MAAM,WAAW,SAAS;IACxB,sCAAsC;IACtC,QAAQ,EAAE,iBAAiB,CAAC;IAE5B,wEAAwE;IACxE,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,kDAAkD;IAClD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;IAE9C,oDAAoD;IACpD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;CAC/C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/graph/extractors/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IAE7D;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,SAAS;IACxB,sCAAsC;IACtC,QAAQ,EAAE,iBAAiB,CAAC;IAE5B,wEAAwE;IACxE,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,kDAAkD;IAClD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;IAE9C,oDAAoD;IACpD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;CAC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/graph/extractors/typescript.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAc,SAAS,EAAc,MAAM,YAAY,CAAC;AA4CpE,eAAO,MAAM,mBAAmB,EAAE,SAmIjC,CAAC"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/graph/extractors/typescript.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAc,SAAS,EAAc,MAAM,YAAY,CAAC;AA6DpE,eAAO,MAAM,mBAAmB,EAAE,SAwNjC,CAAC"}
@@ -26,10 +26,23 @@ const EXPORT_VARIABLE_RE = /export\s+(?:const|let|var)\s+(\w+)/g;
26
26
  const EXPORT_TYPE_RE = /export\s+(?:type|interface)\s+(\w+)/g;
27
27
  /** export default */
28
28
  const EXPORT_DEFAULT_RE = /export\s+default\s+(?:function\s+(\w+)|class\s+(\w+)|(\w+))/g;
29
- /** export { x, y, z } — re-exports or named exports */
30
- const EXPORT_NAMED_RE = /export\s+{([^}]+)}/g;
29
+ /**
30
+ * export { x, y, z } — LOCAL named exports only. The negative lookahead
31
+ * excludes `export { x } from '...'` (a re-export), which is handled
32
+ * separately by REEXPORT_NAMED_RE/REEXPORT_TYPE_RE below (D2 discriminator:
33
+ * the `from` clause is the ground-truth signal that a name is re-exported,
34
+ * not locally declared).
35
+ */
36
+ const EXPORT_NAMED_RE = /export\s+{([^}]+)}(?!\s*from\b)/g;
31
37
  /** export default (anonymous) — export default function() {}, export default class {} */
32
38
  const EXPORT_DEFAULT_ANON_RE = /export\s+default\s+(?:function|class)\s*[({]/g;
39
+ // ─── Re-export Patterns (D1) ────────────────────────────────────
40
+ /** export { x, y } from 'module' — named re-export (multiline-safe) */
41
+ const REEXPORT_NAMED_RE = /export\s+{([^}]+)}\s+from\s+['"]([^'"]+)['"]/g;
42
+ /** export type { x, y } from 'module' — type-only re-export */
43
+ const REEXPORT_TYPE_RE = /export\s+type\s+{([^}]+)}\s+from\s+['"]([^'"]+)['"]/g;
44
+ /** export * from 'module' — wildcard re-export (symbols not enumerable) */
45
+ const REEXPORT_WILDCARD_RE = /export\s+\*\s+from\s+['"]([^'"]+)['"]/g;
33
46
  // ─── Extractor ──────────────────────────────────────────────────
34
47
  export const typescriptExtractor = {
35
48
  language: 'typescript',
@@ -97,17 +110,66 @@ export const typescriptExtractor = {
97
110
  imports.push({ source, symbols: [] });
98
111
  }
99
112
  }
113
+ // Re-export named: export { x, y } from 'module' (D1)
114
+ for (const match of content.matchAll(REEXPORT_NAMED_RE)) {
115
+ const symbols = match[1]
116
+ ?.split(',')
117
+ .map((s) => s.trim().replace(/\s+as\s+\w+/, ''))
118
+ .filter(Boolean);
119
+ const source = match[2];
120
+ const key = `${source}:reexport-named`;
121
+ if (!seen.has(key)) {
122
+ seen.add(key);
123
+ imports.push({ source, symbols });
124
+ }
125
+ }
126
+ // Re-export type-only: export type { x, y } from 'module' (D1)
127
+ for (const match of content.matchAll(REEXPORT_TYPE_RE)) {
128
+ const symbols = match[1]
129
+ ?.split(',')
130
+ .map((s) => s.trim().replace(/\s+as\s+\w+/, ''))
131
+ .filter(Boolean);
132
+ const source = match[2];
133
+ const key = `${source}:reexport-type`;
134
+ if (!seen.has(key)) {
135
+ seen.add(key);
136
+ imports.push({ source, symbols });
137
+ }
138
+ }
139
+ // Re-export wildcard: export * from 'module' (D1, D4 — never enumerate)
140
+ for (const match of content.matchAll(REEXPORT_WILDCARD_RE)) {
141
+ const source = match[1];
142
+ const key = `${source}:reexport-wildcard`;
143
+ if (!seen.has(key)) {
144
+ seen.add(key);
145
+ imports.push({ source, symbols: [] });
146
+ }
147
+ }
100
148
  return imports;
101
149
  },
102
150
  extractExports(content) {
103
151
  const exports = [];
104
152
  const seen = new Set();
153
+ const seenReExports = new Set();
105
154
  function add(name, kind) {
106
155
  if (!seen.has(name)) {
107
156
  seen.add(name);
108
157
  exports.push({ name, kind });
109
158
  }
110
159
  }
160
+ // Re-exported names are tracked in a SEPARATE seen-set, keyed by
161
+ // `name:source`, so (a) they never collide with a genuine local export
162
+ // of the same name and (b) the same name re-exported from two
163
+ // different sources isn't silently dropped. The wildcard sentinel
164
+ // (`'*'`) uses the same mechanism so multiple `export * from` lines
165
+ // (different sources) are all recorded.
166
+ function addReExport(name, kind, source) {
167
+ const key = `${name}:${source}`;
168
+ if (!seenReExports.has(key)) {
169
+ seenReExports.add(key);
170
+ exports.push({ name, kind, source });
171
+ }
172
+ }
111
173
  // export default (named)
112
174
  for (const match of content.matchAll(EXPORT_DEFAULT_RE)) {
113
175
  const name = match[1] ?? match[2] ?? match[3];
@@ -135,16 +197,45 @@ export const typescriptExtractor = {
135
197
  for (const match of content.matchAll(EXPORT_TYPE_RE)) {
136
198
  add(match[1], 'type');
137
199
  }
138
- // export { x, y, z }
200
+ // export { x, y, z } — local named exports only (D2: `from`-suffixed
201
+ // matches are excluded by EXPORT_NAMED_RE's negative lookahead)
139
202
  for (const match of content.matchAll(EXPORT_NAMED_RE)) {
140
203
  const names = match[1]
141
204
  ?.split(',')
142
205
  .map((s) => s.trim().replace(/\s+as\s+\w+/, ''))
143
206
  .filter(Boolean);
144
207
  for (const name of names) {
145
- add(name, 'variable'); // Can't determine kind from re-export
208
+ add(name, 'variable');
209
+ }
210
+ }
211
+ // export { x, y } from 'module' — named re-export (D1, D2)
212
+ for (const match of content.matchAll(REEXPORT_NAMED_RE)) {
213
+ const names = match[1]
214
+ ?.split(',')
215
+ .map((s) => s.trim().replace(/\s+as\s+\w+/, ''))
216
+ .filter(Boolean);
217
+ const source = match[2];
218
+ for (const name of names) {
219
+ addReExport(name, 'variable', source); // Can't determine kind from re-export
220
+ }
221
+ }
222
+ // export type { x, y } from 'module' — type-only re-export (D1, D2)
223
+ for (const match of content.matchAll(REEXPORT_TYPE_RE)) {
224
+ const names = match[1]
225
+ ?.split(',')
226
+ .map((s) => s.trim().replace(/\s+as\s+\w+/, ''))
227
+ .filter(Boolean);
228
+ const source = match[2];
229
+ for (const name of names) {
230
+ addReExport(name, 'type', source);
146
231
  }
147
232
  }
233
+ // export * from 'module' — wildcard re-export (D1, D4: sentinel name,
234
+ // never enumerate individual symbols)
235
+ for (const match of content.matchAll(REEXPORT_WILDCARD_RE)) {
236
+ const source = match[1];
237
+ addReExport('*', 'variable', source);
238
+ }
148
239
  return exports;
149
240
  },
150
241
  };
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/graph/extractors/typescript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/graph/extractors/typescript.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,11 @@
4
4
  * Re-exports all public types, interfaces, constants, and functions
5
5
  * from the graph subsystem.
6
6
  */
7
- export type { BlastRadiusMetadata, DependencyGraph, GraphLoader, GraphMetadata, GraphNode, SupportedLanguage, } from './schema.js';
8
- export { DEFAULT_TRAVERSAL_DEPTH, EXCLUDED_DIRS, GRAPH_STALE_DAYS, GRAPH_VERSION, isGraphStale, isTestFile, LANGUAGE_EXTENSIONS, MAX_BLAST_RADIUS_FILES, MAX_GRAPH_SIZE_BYTES, TEST_FILE_PATTERNS, validateGraph, validateMetadata, } from './schema.js';
7
+ export type { BlastRadiusMetadata, DependencyGraph, GraphLoader, GraphMetadata, GraphNode, RegexSupportedLanguage, ScipOnlyLanguage, SupportedLanguage, } from './schema.js';
8
+ export { DEFAULT_TRAVERSAL_DEPTH, EXCLUDED_DIRS, GRAPH_STALE_DAYS, GRAPH_VERSION, isGraphStale, isTestFile, LANGUAGE_EXTENSIONS, MAX_BLAST_RADIUS_FILES, MAX_GRAPH_SIZE_BYTES, REGEX_SUPPORTED_LANGUAGES, SCIP_ONLY_LANGUAGES, TEST_FILE_PATTERNS, validateGraph, validateMetadata, } from './schema.js';
9
9
  export type { BlastRadiusOptions, BlastRadiusResult } from './blast-radius.js';
10
10
  export { buildReverseIndex, computeBlastRadius } from './blast-radius.js';
11
- export { GitHubApiGraphLoader, NullGraphLoader, PreloadedGraphLoader } from './loader.js';
11
+ export { FilesystemGraphLoader, type FilesystemGraphLoaderOptions, GitHubApiGraphLoader, NullGraphLoader, PreloadedGraphLoader, } from './loader.js';
12
12
  export type { ExportInfo, Extractor, ImportInfo } from './extractors/index.js';
13
13
  export { getExtractor } from './extractors/index.js';
14
14
  export { buildGraph, buildGraphIncremental, detectLanguage, resolveImportPath } from './builder.js';
@@ -16,4 +16,9 @@ export type { CallChainBlastRadius, CallChainEdge, CallChainGraph, CallChainNode
16
16
  export { buildCallChainFromDiff } from './call-chain.js';
17
17
  export type { ReverseDependencyMap, ReverseDepsResult } from './reverse-deps.js';
18
18
  export { buildReverseDependencyMap, findDependents } from './reverse-deps.js';
19
+ export type { Index } from '@scip-code/scip';
20
+ export type { BuildGraphFromScipOptions } from './scip/builder.js';
21
+ export { buildGraphFromScip, parseScipIndex } from './scip/builder.js';
22
+ export type { MergeScipIndexesInput, MergeScipIndexesResult } from './scip/merge.js';
23
+ export { mergeScipIndexes } from './scip/merge.js';
19
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI1E,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAI1F,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIpG,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI1E,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,oBAAoB,EACpB,eAAe,EACf,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAIrB,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIpG,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI9E,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIvE,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -4,13 +4,15 @@
4
4
  * Re-exports all public types, interfaces, constants, and functions
5
5
  * from the graph subsystem.
6
6
  */
7
- export { DEFAULT_TRAVERSAL_DEPTH, EXCLUDED_DIRS, GRAPH_STALE_DAYS, GRAPH_VERSION, isGraphStale, isTestFile, LANGUAGE_EXTENSIONS, MAX_BLAST_RADIUS_FILES, MAX_GRAPH_SIZE_BYTES, TEST_FILE_PATTERNS, validateGraph, validateMetadata, } from './schema.js';
7
+ export { DEFAULT_TRAVERSAL_DEPTH, EXCLUDED_DIRS, GRAPH_STALE_DAYS, GRAPH_VERSION, isGraphStale, isTestFile, LANGUAGE_EXTENSIONS, MAX_BLAST_RADIUS_FILES, MAX_GRAPH_SIZE_BYTES, REGEX_SUPPORTED_LANGUAGES, SCIP_ONLY_LANGUAGES, TEST_FILE_PATTERNS, validateGraph, validateMetadata, } from './schema.js';
8
8
  export { buildReverseIndex, computeBlastRadius } from './blast-radius.js';
9
9
  // ─── Graph Loaders ──────────────────────────────────────────────
10
- export { GitHubApiGraphLoader, NullGraphLoader, PreloadedGraphLoader } from './loader.js';
10
+ export { FilesystemGraphLoader, GitHubApiGraphLoader, NullGraphLoader, PreloadedGraphLoader, } from './loader.js';
11
11
  export { getExtractor } from './extractors/index.js';
12
12
  // ─── Graph Builder ──────────────────────────────────────────────
13
13
  export { buildGraph, buildGraphIncremental, detectLanguage, resolveImportPath } from './builder.js';
14
14
  export { buildCallChainFromDiff } from './call-chain.js';
15
15
  export { buildReverseDependencyMap, findDependents } from './reverse-deps.js';
16
+ export { buildGraphFromScip, parseScipIndex } from './scip/builder.js';
17
+ export { mergeScipIndexes } from './scip/merge.js';
16
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,mEAAmE;AAEnE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAK1F,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,mEAAmE;AAEnE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAUpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAKzD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,mEAAmE;AAEnE,OAAO,EACL,qBAAqB,EAErB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,mEAAmE;AAEnE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAUpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAKzD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAM9E,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -29,6 +29,35 @@ export declare class NullGraphLoader implements GraphLoader {
29
29
  load(): Promise<DependencyGraph | null>;
30
30
  loadMetadata(): Promise<GraphMetadata | null>;
31
31
  }
32
+ export interface FilesystemGraphLoaderOptions {
33
+ /** Called when `graph.json` exceeds `MAX_GRAPH_SIZE_BYTES`, before returning null. */
34
+ onOversize?: (bytes: number, max: number) => void;
35
+ /**
36
+ * Called when `graph.json` exists but fails to parse or fails
37
+ * `validateGraph()` — DISTINCT from the "absent" case so callers can warn
38
+ * the user that a stale/corrupt graph is being ignored, not simply "no
39
+ * graph built yet".
40
+ */
41
+ onMalformed?: (reason: string) => void;
42
+ }
43
+ /**
44
+ * Reads the local, `ghagga index`-produced dependency graph from
45
+ * `<repoRoot>/.ghagga/graph.json` (and its sibling `.ghagga/metadata.json`).
46
+ *
47
+ * Never throws: absent, oversized, and malformed files all resolve to
48
+ * `null` — matching the other `GraphLoader` implementations and the
49
+ * `applyBlastRadius` degrade-gracefully contract. Oversize and malformed
50
+ * are reported via distinct optional callbacks so the CLI can warn
51
+ * differently for each (spec: "MUST NOT throw... distinct from the 'no
52
+ * graph present' case").
53
+ */
54
+ export declare class FilesystemGraphLoader implements GraphLoader {
55
+ private readonly repoRoot;
56
+ private readonly opts;
57
+ constructor(repoRoot: string, opts?: FilesystemGraphLoaderOptions);
58
+ load(): Promise<DependencyGraph | null>;
59
+ loadMetadata(): Promise<GraphMetadata | null>;
60
+ }
32
61
  /**
33
62
  * A loader that wraps a pre-fetched graph and optional metadata.
34
63
  * Used by the SaaS server when the graph is fetched early (before pipeline).
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/graph/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,aAAa,EAGnB,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IAEpD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM;IAG1B,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAuBvC,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAqBpD;AAID;;;GAGG;AACH,qBAAa,eAAgB,YAAW,WAAW;IAC3C,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIvC,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAGpD;AAID;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IAEpD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBADT,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,GAAE,aAAa,GAAG,IAAI,aAAA;IAG5C,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIvC,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAGpD"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/graph/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,aAAa,EAInB,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IAEpD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM;IAG1B,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAuBvC,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAqBpD;AAID;;;GAGG;AACH,qBAAa,eAAgB,YAAW,WAAW;IAC3C,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIvC,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAGpD;AAID,MAAM,WAAW,4BAA4B;IAC3C,sFAAsF;IACtF,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,YAAW,WAAW;IAErD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,4BAAiC;IAGpD,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAoCvC,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAgBpD;AAID;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IAEpD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBADT,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,GAAE,aAAa,GAAG,IAAI,aAAA;IAG5C,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIvC,YAAY,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAGpD"}
@@ -6,7 +6,10 @@
6
6
  * - NullGraphLoader: always returns null (used when blast-radius is disabled)
7
7
  * - PreloadedGraphLoader: wraps an already-fetched graph (used by SaaS for early fetch)
8
8
  */
9
- import { validateGraph, validateMetadata, } from './schema.js';
9
+ import { statSync } from 'node:fs';
10
+ import { readFile } from 'node:fs/promises';
11
+ import { join } from 'node:path';
12
+ import { MAX_GRAPH_SIZE_BYTES, validateGraph, validateMetadata, } from './schema.js';
10
13
  // ─── GitHub API Graph Loader ────────────────────────────────────
11
14
  /**
12
15
  * Fetches the dependency graph from a GitHub repository's ghagga/graph orphan branch.
@@ -82,6 +85,72 @@ export class NullGraphLoader {
82
85
  return null;
83
86
  }
84
87
  }
88
+ /**
89
+ * Reads the local, `ghagga index`-produced dependency graph from
90
+ * `<repoRoot>/.ghagga/graph.json` (and its sibling `.ghagga/metadata.json`).
91
+ *
92
+ * Never throws: absent, oversized, and malformed files all resolve to
93
+ * `null` — matching the other `GraphLoader` implementations and the
94
+ * `applyBlastRadius` degrade-gracefully contract. Oversize and malformed
95
+ * are reported via distinct optional callbacks so the CLI can warn
96
+ * differently for each (spec: "MUST NOT throw... distinct from the 'no
97
+ * graph present' case").
98
+ */
99
+ export class FilesystemGraphLoader {
100
+ repoRoot;
101
+ opts;
102
+ constructor(repoRoot, opts = {}) {
103
+ this.repoRoot = repoRoot;
104
+ this.opts = opts;
105
+ }
106
+ async load() {
107
+ const graphPath = join(this.repoRoot, '.ghagga', 'graph.json');
108
+ let stats;
109
+ try {
110
+ stats = statSync(graphPath);
111
+ }
112
+ catch {
113
+ // Absent — not an error, no callback.
114
+ return null;
115
+ }
116
+ if (stats.size > MAX_GRAPH_SIZE_BYTES) {
117
+ this.opts.onOversize?.(stats.size, MAX_GRAPH_SIZE_BYTES);
118
+ return null;
119
+ }
120
+ let raw;
121
+ let json;
122
+ try {
123
+ raw = await readFile(graphPath, 'utf-8');
124
+ json = JSON.parse(raw);
125
+ }
126
+ catch (error) {
127
+ const reason = error instanceof Error ? error.message : String(error);
128
+ this.opts.onMalformed?.(reason);
129
+ return null;
130
+ }
131
+ const graph = validateGraph(json);
132
+ if (!graph) {
133
+ this.opts.onMalformed?.('graph.json failed schema validation');
134
+ return null;
135
+ }
136
+ return graph;
137
+ }
138
+ async loadMetadata() {
139
+ const metadataPath = join(this.repoRoot, '.ghagga', 'metadata.json');
140
+ let raw;
141
+ let json;
142
+ try {
143
+ raw = await readFile(metadataPath, 'utf-8');
144
+ json = JSON.parse(raw);
145
+ }
146
+ catch {
147
+ // Absent or malformed — null-safe, no callback (metadata absence is
148
+ // handled by the caller's staleness check, D2/B-005).
149
+ return null;
150
+ }
151
+ return validateMetadata(json);
152
+ }
153
+ }
85
154
  // ─── Preloaded Graph Loader ─────────────────────────────────────
86
155
  /**
87
156
  * A loader that wraps a pre-fetched graph and optional metadata.
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/graph/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAIL,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,mEAAmE;AAEnE;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IAEZ;IACA;IACA;IAHnB,YACmB,KAAa,EACb,IAAY,EACZ,KAAa;QAFb,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;IAC7B,CAAC;IAEJ,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,gCAAgC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,+CAA+C,CAAC;YACnH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;oBACrC,MAAM,EAAE,4BAA4B;oBACpC,sBAAsB,EAAE,YAAY;iBACrC;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YAE9B,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC5C,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,gCAAgC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,kDAAkD,CAAC;YACtH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;oBACrC,MAAM,EAAE,4BAA4B;oBACpC,sBAAsB,EAAE,YAAY;iBACrC;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YAE9B,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC5C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED,mEAAmE;AAEnE;;;GAGG;AACH,MAAM,OAAO,eAAe;IAC1B,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,mEAAmE;AAEnE;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAEZ;IACA;IAFnB,YACmB,KAAsB,EACtB,QAA+B;QAD/B,UAAK,GAAL,KAAK,CAAiB;QACtB,aAAQ,GAAR,QAAQ,CAAuB;IAC/C,CAAC;IAEJ,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/graph/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Symbol-Precise Blast-Radius Narrowing (scip-symbol-exclusion, design v3 SAFE)
3
+ *
4
+ * A PURE SUBTRACTIVE POST-FILTER over `computeBlastRadius` — never an
5
+ * alternative inclusion path. `computeBlastRadius`/`buildReverseIndex`
6
+ * (blast-radius.ts) stay BYTE-IDENTICAL; this module only removes
7
+ * provably-unaffected DIRECT (depth-1) dependents from that result.
8
+ *
9
+ * Three fail-closed pillars, each independently load-bearing:
10
+ * - Pillar 0 (`isExactCommitFresh`): symbol-line attribution is only valid
11
+ * when the graph was indexed at the EXACT SAME commit as the diff's
12
+ * post-image — a stale graph shifts lines and silently maps changed
13
+ * lines to the WRONG symbol (Pillar 1 cannot catch this: a symbol WAS
14
+ * found, just the wrong one). ANY doubt about freshness ⇒ no exclusion.
15
+ * - Pillar 1 (`hasUnattributedChanges`): changed-symbol data always comes
16
+ * from `computeChangedSymbolsComplete`; any changed file with even one
17
+ * unattributed line forces conservative-include of every dependent
18
+ * reaching it.
19
+ * - Pillar 2 (`canExcludeEdge`): a pure, fail-closed ENUMERATED WHITELIST
20
+ * on B's (the changed file's) language + builtVia. DEFAULT false — only
21
+ * explicitly enumerated cells return true. This is a whitelist, not a
22
+ * `!== python` blacklist (that was JD-001, a confirmed BLOCKER: it
23
+ * wrongly allowed go/kotlin/csharp/php under SCIP).
24
+ *
25
+ * Any single uncertainty at any layer resolves to INCLUDE. Never narrows a
26
+ * directly-changed file, and — because condition (2) below forces include
27
+ * on ANY transitive hop — only ever prunes DIRECT (depth-1) dependents;
28
+ * transitive dependents are always included (documented, not a bug).
29
+ */
30
+ import type { ChangedSymbolsResult } from './changed-symbols.js';
31
+ import type { DependencyGraph, GraphMetadata, GraphNode } from './schema.js';
32
+ /**
33
+ * Pure, fail-closed gate for a single edge A→B (A depends on changed file
34
+ * B). DEFAULT return is `false`; only the explicitly enumerated cells in
35
+ * the D2 table return `true`. Gates on B's language — NEVER A's — because
36
+ * the carve-out is about B's extracted-symbol fidelity, not A's.
37
+ */
38
+ export declare function canExcludeEdge(aNode: GraphNode, bPath: string, bNode: GraphNode, builtVia: 'scip' | 'regex' | undefined): boolean;
39
+ /**
40
+ * True ONLY when `metadata.lastIndexedCommit` is present, EQUALS
41
+ * `currentHead`, and the graph is not stale-by-age. ANY doubt (absent
42
+ * metadata, head mismatch, empty currentHead, stale-by-age) ⇒ false —
43
+ * fails safe, never assumes freshness.
44
+ */
45
+ export declare function isExactCommitFresh(metadata: GraphMetadata | null, currentHead: string | undefined): boolean;
46
+ /**
47
+ * Compute the set of dependents to EXCLUDE from the blast radius.
48
+ *
49
+ * For each candidate dependent A (never a directly-changed file), A is
50
+ * excluded ONLY if, for EVERY direct import target B of A that is itself
51
+ * a changed file:
52
+ * - `changedByFile` has a complete entry for B with `hasUnattributedChanges === false`, AND
53
+ * - `canExcludeEdge(A, B)` is true, AND
54
+ * - `importSymbols[A][B] ∩ changedSymbols[B]` is empty.
55
+ *
56
+ * A is included (never excluded) on ANY of:
57
+ * - transitive-only reach (some blast-radius file M ∈ A's reachable set
58
+ * is NOT one of A's DIRECT imports and is a changed file — approximated
59
+ * here by A having no direct changed-file import at all while still
60
+ * being in the BFS-derived `dependents` list, i.e. reached only via an
61
+ * intermediate),
62
+ * - any reached direct-changed-file B with unattributed changes,
63
+ * - an empty `importSymbols[A][B]` (side-effect/namespace import — treated
64
+ * as "uncertain", never as "uses nothing"),
65
+ * - any gating uncertainty at all.
66
+ *
67
+ * `dependents` MUST NOT include any file in `changedFileSet` — narrowing
68
+ * never touches directly-changed files (callers must filter/verify this;
69
+ * this function additionally defends by skipping any candidate that is
70
+ * itself in `changedFileSet`).
71
+ */
72
+ export declare function narrowBySymbols(dependents: string[], changedByFile: Map<string, ChangedSymbolsResult>, graph: DependencyGraph, builtVia: 'scip' | 'regex' | undefined, _blastFiles: Set<string>, changedFileSet: Set<string>): Set<string>;
73
+ //# sourceMappingURL=narrow-symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrow-symbols.d.ts","sourceRoot":"","sources":["../../src/graph/narrow-symbols.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AAuChG;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GACrC,OAAO,CAyBT;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAOT;AAID;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAAE,EACpB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAChD,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EACtC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,GAAG,CAAC,MAAM,CAAC,CA6Db"}