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.
- package/dist/agents/issue-triage.d.ts +143 -0
- package/dist/agents/issue-triage.d.ts.map +1 -0
- package/dist/agents/issue-triage.js +230 -0
- package/dist/agents/issue-triage.js.map +1 -0
- package/dist/agents/prompts.d.ts +41 -1
- package/dist/agents/prompts.d.ts.map +1 -1
- package/dist/agents/prompts.js +123 -2
- package/dist/agents/prompts.js.map +1 -1
- package/dist/enhance/prompt.d.ts +1 -1
- package/dist/enhance/prompt.d.ts.map +1 -1
- package/dist/graph/builder.d.ts +13 -1
- package/dist/graph/builder.d.ts.map +1 -1
- package/dist/graph/builder.js +305 -6
- package/dist/graph/builder.js.map +1 -1
- package/dist/graph/call-chain.d.ts +27 -0
- package/dist/graph/call-chain.d.ts.map +1 -1
- package/dist/graph/call-chain.js +113 -18
- package/dist/graph/call-chain.js.map +1 -1
- package/dist/graph/changed-symbols.d.ts +57 -0
- package/dist/graph/changed-symbols.d.ts.map +1 -0
- package/dist/graph/changed-symbols.js +123 -0
- package/dist/graph/changed-symbols.js.map +1 -0
- package/dist/graph/extractors/index.d.ts +3 -3
- package/dist/graph/extractors/index.d.ts.map +1 -1
- package/dist/graph/extractors/index.js +2 -2
- package/dist/graph/extractors/index.js.map +1 -1
- package/dist/graph/extractors/javascript.d.ts.map +1 -1
- package/dist/graph/extractors/javascript.js +89 -3
- package/dist/graph/extractors/javascript.js.map +1 -1
- package/dist/graph/extractors/rust.d.ts.map +1 -1
- package/dist/graph/extractors/rust.js +7 -2
- package/dist/graph/extractors/rust.js.map +1 -1
- package/dist/graph/extractors/types.d.ts +7 -1
- package/dist/graph/extractors/types.d.ts.map +1 -1
- package/dist/graph/extractors/typescript.d.ts.map +1 -1
- package/dist/graph/extractors/typescript.js +95 -4
- package/dist/graph/extractors/typescript.js.map +1 -1
- package/dist/graph/index.d.ts +8 -3
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/index.js +4 -2
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/loader.d.ts +29 -0
- package/dist/graph/loader.d.ts.map +1 -1
- package/dist/graph/loader.js +70 -1
- package/dist/graph/loader.js.map +1 -1
- package/dist/graph/narrow-symbols.d.ts +73 -0
- package/dist/graph/narrow-symbols.d.ts.map +1 -0
- package/dist/graph/narrow-symbols.js +195 -0
- package/dist/graph/narrow-symbols.js.map +1 -0
- package/dist/graph/schema.d.ts +117 -4
- package/dist/graph/schema.d.ts.map +1 -1
- package/dist/graph/schema.js +67 -3
- package/dist/graph/schema.js.map +1 -1
- package/dist/graph/scip/builder.d.ts +64 -0
- package/dist/graph/scip/builder.d.ts.map +1 -0
- package/dist/graph/scip/builder.js +268 -0
- package/dist/graph/scip/builder.js.map +1 -0
- package/dist/graph/scip/merge.d.ts +66 -0
- package/dist/graph/scip/merge.d.ts.map +1 -0
- package/dist/graph/scip/merge.js +98 -0
- package/dist/graph/scip/merge.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/pipeline/prepare-graph.d.ts +23 -1
- package/dist/pipeline/prepare-graph.d.ts.map +1 -1
- package/dist/pipeline/prepare-graph.js +119 -3
- package/dist/pipeline/prepare-graph.js.map +1 -1
- package/dist/pipeline/prepare.d.ts.map +1 -1
- package/dist/pipeline/prepare.js +2 -0
- package/dist/pipeline/prepare.js.map +1 -1
- package/dist/providers/cli-bridge.d.ts.map +1 -1
- package/dist/providers/cli-bridge.js +1 -0
- package/dist/providers/cli-bridge.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- 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
|
-
/**
|
|
9
|
-
|
|
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":"AAAA;;;;;GAKG;AAIH,mEAAmE;AAEnE
|
|
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,
|
|
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;
|
|
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
|
-
/**
|
|
30
|
-
|
|
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');
|
|
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":"AAAA;;;;;GAKG;AAIH,mEAAmE;AAEnE,qFAAqF;AACrF,MAAM,eAAe,GAAG,2DAA2D,CAAC;AAEpF,8CAA8C;AAC9C,MAAM,iBAAiB,GAAG,2CAA2C,CAAC;AAEtE,qDAAqD;AACrD,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAElF,2CAA2C;AAC3C,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAE3D,+DAA+D;AAC/D,MAAM,eAAe,GAAG,2DAA2D,CAAC;AAEpF,mEAAmE;AAEnE,sDAAsD;AACtD,MAAM,kBAAkB,GAAG,yCAAyC,CAAC;AAErE,qBAAqB;AACrB,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAElD,6BAA6B;AAC7B,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;AAEjE,yCAAyC;AACzC,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAE9D,qBAAqB;AACrB,MAAM,iBAAiB,GAAG,8DAA8D,CAAC;AAEzF
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/graph/extractors/typescript.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/index.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/graph/index.js
CHANGED
|
@@ -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
|
package/dist/graph/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
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"}
|
package/dist/graph/loader.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/graph/loader.js
CHANGED
|
@@ -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 {
|
|
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.
|
package/dist/graph/loader.js.map
CHANGED
|
@@ -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"}
|