@roarpeng/graphflow 0.6.14 → 1.0.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/AGENTS.md +1 -1
- package/CHANGELOG.md +45 -0
- package/README.md +58 -11
- package/dist/agents/validator.d.ts.map +1 -1
- package/dist/agents/validator.js +19 -8
- package/dist/agents/validator.js.map +1 -1
- package/dist/agents/worker.d.ts.map +1 -1
- package/dist/agents/worker.js +3 -2
- package/dist/agents/worker.js.map +1 -1
- package/dist/config/schema.d.ts +31 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/dag-engine.d.ts.map +1 -1
- package/dist/core/dag-engine.js +9 -3
- package/dist/core/dag-engine.js.map +1 -1
- package/dist/core/orchestrator.d.ts +7 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +61 -3
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/state-machine.d.ts +1 -0
- package/dist/core/state-machine.d.ts.map +1 -1
- package/dist/core/state-machine.js +20 -0
- package/dist/core/state-machine.js.map +1 -1
- package/dist/core/types.d.ts +7 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/graph/adaptive-budget.d.ts +18 -0
- package/dist/graph/adaptive-budget.d.ts.map +1 -0
- package/dist/graph/adaptive-budget.js +50 -0
- package/dist/graph/adaptive-budget.js.map +1 -0
- package/dist/graph/compression-model.d.ts +52 -0
- package/dist/graph/compression-model.d.ts.map +1 -0
- package/dist/graph/compression-model.js +125 -0
- package/dist/graph/compression-model.js.map +1 -0
- package/dist/graph/context-slicer.d.ts +32 -0
- package/dist/graph/context-slicer.d.ts.map +1 -1
- package/dist/graph/context-slicer.js +157 -0
- package/dist/graph/context-slicer.js.map +1 -1
- package/dist/graph/graph-compression.d.ts +44 -0
- package/dist/graph/graph-compression.d.ts.map +1 -0
- package/dist/graph/graph-compression.js +153 -0
- package/dist/graph/graph-compression.js.map +1 -0
- package/dist/graph/repo-map.d.ts +25 -0
- package/dist/graph/repo-map.d.ts.map +1 -0
- package/dist/graph/repo-map.js +80 -0
- package/dist/graph/repo-map.js.map +1 -0
- package/dist/graph/semantic-compression.d.ts +65 -0
- package/dist/graph/semantic-compression.d.ts.map +1 -0
- package/dist/graph/semantic-compression.js +173 -0
- package/dist/graph/semantic-compression.js.map +1 -0
- package/dist/integrations/agent-mcp-installer.d.ts +11 -0
- package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
- package/dist/integrations/agent-mcp-installer.js +175 -9
- package/dist/integrations/agent-mcp-installer.js.map +1 -1
- package/dist/learning/hnsw-index.d.ts +46 -0
- package/dist/learning/hnsw-index.d.ts.map +1 -0
- package/dist/learning/hnsw-index.js +138 -0
- package/dist/learning/hnsw-index.js.map +1 -0
- package/dist/learning/vector-store.d.ts +2 -0
- package/dist/learning/vector-store.d.ts.map +1 -1
- package/dist/learning/vector-store.js +4 -0
- package/dist/learning/vector-store.js.map +1 -1
- package/dist/routing/model-router.d.ts +7 -0
- package/dist/routing/model-router.d.ts.map +1 -1
- package/dist/routing/model-router.js +36 -0
- package/dist/routing/model-router.js.map +1 -1
- package/dist/routing/provider-executor.d.ts.map +1 -1
- package/dist/routing/provider-executor.js +5 -4
- package/dist/routing/provider-executor.js.map +1 -1
- package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/graph.js +30 -1
- package/dist/surfaces/cli/runtime/graph.js.map +1 -1
- package/dist/surfaces/cli/runtime/panel.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/panel.js +2 -0
- package/dist/surfaces/cli/runtime/panel.js.map +1 -1
- package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/routing.js +15 -0
- package/dist/surfaces/cli/runtime/routing.js.map +1 -1
- package/dist/surfaces/cli/runtime/types.d.ts +20 -0
- package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
- package/dist/surfaces/mcp/server.js +20 -2
- package/dist/surfaces/mcp/server.js.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +2 -1
|
@@ -6,8 +6,13 @@ exports.vectorRecall = vectorRecall;
|
|
|
6
6
|
exports.buildLayeredContextPackage = buildLayeredContextPackage;
|
|
7
7
|
exports.createContextRefillManager = createContextRefillManager;
|
|
8
8
|
exports.summarizeNodes = summarizeNodes;
|
|
9
|
+
exports.buildEnhancedContextPackage = buildEnhancedContextPackage;
|
|
9
10
|
const logger_1 = require("../utils/logger");
|
|
10
11
|
const embeddings_1 = require("../learning/embeddings");
|
|
12
|
+
const graph_compression_1 = require("./graph-compression");
|
|
13
|
+
const repo_map_1 = require("./repo-map");
|
|
14
|
+
const semantic_compression_1 = require("./semantic-compression");
|
|
15
|
+
const adaptive_budget_1 = require("./adaptive-budget");
|
|
11
16
|
let encoderFn = null;
|
|
12
17
|
let encoderLoaded = false;
|
|
13
18
|
function getEncoder() {
|
|
@@ -243,4 +248,156 @@ function markLayerUsed(layer, used) {
|
|
|
243
248
|
}
|
|
244
249
|
used.l3 += 1;
|
|
245
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Enhanced context packaging with graph-structure compression, semantic
|
|
253
|
+
* compression (minicpm-1b), and adaptive budgeting.
|
|
254
|
+
*
|
|
255
|
+
* Compression pipeline:
|
|
256
|
+
* 1. [Optional] RepoMap fallback for low budgets
|
|
257
|
+
* 2. Keyword + vector retrieval (existing)
|
|
258
|
+
* 3. Graph compression: connected subgraph + PageRank re-ranking
|
|
259
|
+
* 4. Semantic compression: cluster similar nodes, summarize, densify
|
|
260
|
+
* 5. Layer quotas + token budgeting (existing)
|
|
261
|
+
*/
|
|
262
|
+
async function buildEnhancedContextPackage(client, query, task, maxTokens, options) {
|
|
263
|
+
// Step 0: Adaptive budget estimation.
|
|
264
|
+
if (options?.taskMode) {
|
|
265
|
+
const estimate = (0, adaptive_budget_1.estimateContextBudget)(task, options.taskMode);
|
|
266
|
+
maxTokens = estimate.tokens;
|
|
267
|
+
logger_1.logger.info({ estimate }, "Adaptive budget estimated");
|
|
268
|
+
}
|
|
269
|
+
// Step 1: RepoMap fallback for tight budgets.
|
|
270
|
+
if (options?.enableRepoMapFallback && maxTokens < 1000) {
|
|
271
|
+
try {
|
|
272
|
+
const repoMap = await (0, repo_map_1.buildRepoMap)(client);
|
|
273
|
+
const mapStr = (0, repo_map_1.formatRepoMapString)(repoMap);
|
|
274
|
+
const tokens = estimateTokens(mapStr);
|
|
275
|
+
if (tokens < maxTokens) {
|
|
276
|
+
return {
|
|
277
|
+
summaryChannel: [mapStr],
|
|
278
|
+
anchorChannel: [],
|
|
279
|
+
tokenEstimate: tokens,
|
|
280
|
+
truncated: false,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
logger_1.logger.warn({ error }, "RepoMap fallback failed, proceeding with normal retrieval");
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// Step 2: Keyword + vector retrieval (existing logic).
|
|
289
|
+
const keywordHits = await client.queryByKeyword(query);
|
|
290
|
+
let hits = keywordHits;
|
|
291
|
+
if (options?.enableVectorRecall === true && options.embeddingProvider) {
|
|
292
|
+
try {
|
|
293
|
+
const queryEmbedding = await options.embeddingProvider.embed(query);
|
|
294
|
+
const topK = options.vectorTopK ?? 8;
|
|
295
|
+
const minSim = options.vectorMinSimilarity ?? 0.05;
|
|
296
|
+
let vectorHits;
|
|
297
|
+
// For large candidate sets, use HNSW ANN index (10-100x faster).
|
|
298
|
+
if (options.enableHnsw !== false && keywordHits.length >= 200) {
|
|
299
|
+
const { HnswVectorIndex } = await import("../learning/hnsw-index.js");
|
|
300
|
+
const index = new HnswVectorIndex({ space: "cosine" });
|
|
301
|
+
index.load(keywordHits);
|
|
302
|
+
const results = await index.search(queryEmbedding, topK, minSim);
|
|
303
|
+
vectorHits = results.map((r) => r.node);
|
|
304
|
+
logger_1.logger.info({ backend: index.backend, candidates: keywordHits.length }, "Vector recall via HNSW");
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
vectorHits = vectorRecall(keywordHits, queryEmbedding, topK, minSim);
|
|
308
|
+
}
|
|
309
|
+
hits = (0, embeddings_1.reciprocalRankFusion)([keywordHits, vectorHits]);
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
logger_1.logger.error({ error }, "Vector recall failed");
|
|
313
|
+
hits = keywordHits;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
if (options?.enableGraphCompression && hits.length > 0) {
|
|
317
|
+
try {
|
|
318
|
+
const ranked = await (0, graph_compression_1.extractConnectedSubgraph)(client, hits, options.graphCompressionOptions);
|
|
319
|
+
const snapshot = client.readSnapshot?.();
|
|
320
|
+
if (snapshot) {
|
|
321
|
+
const pageRank = (0, graph_compression_1.computePageRank)(ranked.map((r) => r.node), snapshot.edges);
|
|
322
|
+
hits = (0, graph_compression_1.blendWithCentrality)(ranked.map((r) => r.node), pageRank, 0.3);
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
hits = ranked.map((r) => r.node);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
logger_1.logger.warn({ error }, "Graph compression failed, using uncompressed hits");
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// Step 4: Semantic compression - cluster + summarize + densify.
|
|
333
|
+
if (options?.enableSemanticCompression) {
|
|
334
|
+
try {
|
|
335
|
+
hits = await (0, semantic_compression_1.applySemanticCompression)(hits, {
|
|
336
|
+
...(options.clusteringOptions ? { clusteringOptions: options.clusteringOptions } : {}),
|
|
337
|
+
...(options.summarizerOptions ? { summarizerOptions: options.summarizerOptions } : {}),
|
|
338
|
+
...(options.densifierOptions ? { densifierOptions: options.densifierOptions } : {}),
|
|
339
|
+
...(options.compressionModel ? { modelHandle: options.compressionModel } : {}),
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
logger_1.logger.warn({ error }, "Semantic compression failed, using uncompressed hits");
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
// Step 5: Build layered package (existing logic).
|
|
347
|
+
const summaryChannel = [];
|
|
348
|
+
const anchorChannel = [];
|
|
349
|
+
let tokens = 0;
|
|
350
|
+
let truncated = false;
|
|
351
|
+
const quota = {
|
|
352
|
+
l1: options?.layerQuota?.l1 ?? Number.POSITIVE_INFINITY,
|
|
353
|
+
l2: options?.layerQuota?.l2 ?? Number.POSITIVE_INFINITY,
|
|
354
|
+
l3: options?.layerQuota?.l3 ?? Number.POSITIVE_INFINITY,
|
|
355
|
+
};
|
|
356
|
+
const used = { l1: 0, l2: 0, l3: 0 };
|
|
357
|
+
const added = new Set();
|
|
358
|
+
for (const hit of hits) {
|
|
359
|
+
const layer = classifyLayer(hit);
|
|
360
|
+
if (!canUseLayer(layer, quota, used)) {
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
const summary = `${hit.type}: ${hit.content}`;
|
|
364
|
+
const estimate = estimateTokens(summary);
|
|
365
|
+
if (tokens + estimate > maxTokens) {
|
|
366
|
+
truncated = true;
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
summaryChannel.push(summary);
|
|
370
|
+
anchorChannel.push({ id: hit.id, type: hit.type, layer });
|
|
371
|
+
added.add(hit.id);
|
|
372
|
+
tokens += estimate;
|
|
373
|
+
markLayerUsed(layer, used);
|
|
374
|
+
}
|
|
375
|
+
// Step 6: Edge expansion (existing logic).
|
|
376
|
+
const enableExpansion = options?.enableEdgeExpansion !== false;
|
|
377
|
+
if (enableExpansion && !truncated && typeof client.getNeighbors === "function") {
|
|
378
|
+
const seedIds = anchorChannel.slice(0, 5).map((a) => a.id);
|
|
379
|
+
if (seedIds.length > 0) {
|
|
380
|
+
const expanded = await expandSubgraph(client, seedIds, { hops: 1 });
|
|
381
|
+
for (const node of expanded) {
|
|
382
|
+
if (added.has(node.id))
|
|
383
|
+
continue;
|
|
384
|
+
const layer = classifyLayer(node);
|
|
385
|
+
if (!canUseLayer(layer, quota, used))
|
|
386
|
+
continue;
|
|
387
|
+
const summary = `${node.type}: ${node.content}`;
|
|
388
|
+
const estimate = estimateTokens(summary);
|
|
389
|
+
if (tokens + estimate > maxTokens) {
|
|
390
|
+
truncated = true;
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
summaryChannel.push(summary);
|
|
394
|
+
anchorChannel.push({ id: node.id, type: node.type, layer });
|
|
395
|
+
added.add(node.id);
|
|
396
|
+
tokens += estimate;
|
|
397
|
+
markLayerUsed(layer, used);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return { summaryChannel, anchorChannel, tokenEstimate: tokens, truncated };
|
|
402
|
+
}
|
|
246
403
|
//# sourceMappingURL=context-slicer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-slicer.js","sourceRoot":"","sources":["../../src/graph/context-slicer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-slicer.js","sourceRoot":"","sources":["../../src/graph/context-slicer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { GraphEdge, GraphNode } from "../core/types";
|
|
2
|
+
import type { GraphClient } from "./client-factory";
|
|
3
|
+
/**
|
|
4
|
+
* Graph-structure-based context compression.
|
|
5
|
+
*
|
|
6
|
+
* Unlike token-level pruning (LLMLingua-style), this module compresses by
|
|
7
|
+
* exploiting the graph topology: edge-weighted connectivity + centrality
|
|
8
|
+
* ranking keeps the most "load-bearing" nodes and drops peripheral ones,
|
|
9
|
+
* with zero LLM cost.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_EDGE_WEIGHTS: Record<GraphEdge["relation"], number>;
|
|
12
|
+
export interface ConnectedSubgraphOptions {
|
|
13
|
+
edgeWeights?: Partial<Record<GraphEdge["relation"], number>>;
|
|
14
|
+
maxNodes?: number;
|
|
15
|
+
hops?: number;
|
|
16
|
+
/** Minimum accumulated edge weight to keep a node (prunes weakly-connected). */
|
|
17
|
+
minNodeWeight?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface RankedNode {
|
|
20
|
+
node: GraphNode;
|
|
21
|
+
score: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Extracts a connected subgraph centered on the seed nodes, ranking members
|
|
25
|
+
* by edge-weighted proximity. Returns nodes sorted by relevance (seeds first).
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractConnectedSubgraph(client: GraphClient, seeds: GraphNode[], options?: ConnectedSubgraphOptions): Promise<RankedNode[]>;
|
|
28
|
+
export interface PageRankOptions {
|
|
29
|
+
damping?: number;
|
|
30
|
+
iterations?: number;
|
|
31
|
+
edgeWeights?: Partial<Record<GraphEdge["relation"], number>>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Computes weighted PageRank over a node/edge set. Used to surface "central"
|
|
35
|
+
* nodes (frequently-referenced functions, core modules) that should be
|
|
36
|
+
* prioritized in the context budget.
|
|
37
|
+
*/
|
|
38
|
+
export declare function computePageRank(nodes: GraphNode[], edges: GraphEdge[], options?: PageRankOptions): Map<string, number>;
|
|
39
|
+
/**
|
|
40
|
+
* Re-ranks a candidate node list by blending retrieval order with PageRank
|
|
41
|
+
* centrality. alpha controls the centrality weight (0 = pure retrieval order).
|
|
42
|
+
*/
|
|
43
|
+
export declare function blendWithCentrality(candidates: GraphNode[], pageRank: Map<string, number>, alpha?: number): GraphNode[];
|
|
44
|
+
//# sourceMappingURL=graph-compression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-compression.d.ts","sourceRoot":"","sources":["../../src/graph/graph-compression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;GAOG;AAEH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAWtE,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,UAAU,EAAE,CAAC,CAkDvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAAE,EAClB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE,eAAe,GACxB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsDrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,EAAE,EACvB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,KAAK,SAAM,GACV,SAAS,EAAE,CAiBb"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_EDGE_WEIGHTS = void 0;
|
|
4
|
+
exports.extractConnectedSubgraph = extractConnectedSubgraph;
|
|
5
|
+
exports.computePageRank = computePageRank;
|
|
6
|
+
exports.blendWithCentrality = blendWithCentrality;
|
|
7
|
+
/**
|
|
8
|
+
* Graph-structure-based context compression.
|
|
9
|
+
*
|
|
10
|
+
* Unlike token-level pruning (LLMLingua-style), this module compresses by
|
|
11
|
+
* exploiting the graph topology: edge-weighted connectivity + centrality
|
|
12
|
+
* ranking keeps the most "load-bearing" nodes and drops peripheral ones,
|
|
13
|
+
* with zero LLM cost.
|
|
14
|
+
*/
|
|
15
|
+
exports.DEFAULT_EDGE_WEIGHTS = {
|
|
16
|
+
references: 1.0,
|
|
17
|
+
imports: 0.85,
|
|
18
|
+
depends_on: 0.7,
|
|
19
|
+
prerequisite: 0.7,
|
|
20
|
+
defines: 0.6,
|
|
21
|
+
validates: 0.5,
|
|
22
|
+
changes: 0.4,
|
|
23
|
+
improves: 0.4,
|
|
24
|
+
co_occurs: 0.3,
|
|
25
|
+
conflicts_with: 0.2,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Extracts a connected subgraph centered on the seed nodes, ranking members
|
|
29
|
+
* by edge-weighted proximity. Returns nodes sorted by relevance (seeds first).
|
|
30
|
+
*/
|
|
31
|
+
async function extractConnectedSubgraph(client, seeds, options) {
|
|
32
|
+
if (typeof client.getNeighbors !== "function" || seeds.length === 0) {
|
|
33
|
+
return seeds.map((node) => ({ node, score: 1 }));
|
|
34
|
+
}
|
|
35
|
+
const weights = { ...exports.DEFAULT_EDGE_WEIGHTS, ...options?.edgeWeights };
|
|
36
|
+
const maxNodes = options?.maxNodes ?? 30;
|
|
37
|
+
const hops = options?.hops ?? 2;
|
|
38
|
+
const minNodeWeight = options?.minNodeWeight ?? 0;
|
|
39
|
+
// Seeds start with full score; each hop decays.
|
|
40
|
+
const scores = new Map();
|
|
41
|
+
const nodeById = new Map();
|
|
42
|
+
for (const seed of seeds) {
|
|
43
|
+
scores.set(seed.id, 1);
|
|
44
|
+
nodeById.set(seed.id, seed);
|
|
45
|
+
}
|
|
46
|
+
let frontier = seeds.map((s) => s.id);
|
|
47
|
+
const relations = Object.keys(weights);
|
|
48
|
+
for (let depth = 0; depth < hops; depth += 1) {
|
|
49
|
+
if (frontier.length === 0 || nodeById.size >= maxNodes)
|
|
50
|
+
break;
|
|
51
|
+
const decay = 1 / (depth + 2); // hop 0 -> 0.5, hop 1 -> 0.33, ...
|
|
52
|
+
const neighbors = await client.getNeighbors(frontier, relations, "both");
|
|
53
|
+
const nextFrontier = [];
|
|
54
|
+
for (const { node, via } of neighbors) {
|
|
55
|
+
const edgeWeight = weights[via] ?? 0.1;
|
|
56
|
+
const contribution = edgeWeight * decay;
|
|
57
|
+
const prev = scores.get(node.id) ?? 0;
|
|
58
|
+
scores.set(node.id, prev + contribution);
|
|
59
|
+
if (!nodeById.has(node.id)) {
|
|
60
|
+
nodeById.set(node.id, node);
|
|
61
|
+
nextFrontier.push(node.id);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
frontier = nextFrontier;
|
|
65
|
+
}
|
|
66
|
+
const ranked = [];
|
|
67
|
+
for (const [id, score] of scores.entries()) {
|
|
68
|
+
const node = nodeById.get(id);
|
|
69
|
+
if (!node)
|
|
70
|
+
continue;
|
|
71
|
+
if (score < minNodeWeight)
|
|
72
|
+
continue;
|
|
73
|
+
ranked.push({ node, score });
|
|
74
|
+
}
|
|
75
|
+
ranked.sort((a, b) => b.score - a.score);
|
|
76
|
+
return ranked.slice(0, maxNodes);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Computes weighted PageRank over a node/edge set. Used to surface "central"
|
|
80
|
+
* nodes (frequently-referenced functions, core modules) that should be
|
|
81
|
+
* prioritized in the context budget.
|
|
82
|
+
*/
|
|
83
|
+
function computePageRank(nodes, edges, options) {
|
|
84
|
+
const damping = options?.damping ?? 0.85;
|
|
85
|
+
const iterations = options?.iterations ?? 20;
|
|
86
|
+
const weights = { ...exports.DEFAULT_EDGE_WEIGHTS, ...options?.edgeWeights };
|
|
87
|
+
const ids = nodes.map((n) => n.id);
|
|
88
|
+
const idSet = new Set(ids);
|
|
89
|
+
const n = ids.length;
|
|
90
|
+
if (n === 0)
|
|
91
|
+
return new Map();
|
|
92
|
+
// Build weighted outbound adjacency.
|
|
93
|
+
const outWeight = new Map();
|
|
94
|
+
const outEdges = new Map();
|
|
95
|
+
for (const edge of edges) {
|
|
96
|
+
if (!idSet.has(edge.from) || !idSet.has(edge.to))
|
|
97
|
+
continue;
|
|
98
|
+
const w = weights[edge.relation] ?? 0.1;
|
|
99
|
+
const list = outEdges.get(edge.from) ?? [];
|
|
100
|
+
list.push({ to: edge.to, w });
|
|
101
|
+
outEdges.set(edge.from, list);
|
|
102
|
+
outWeight.set(edge.from, (outWeight.get(edge.from) ?? 0) + w);
|
|
103
|
+
}
|
|
104
|
+
let rank = new Map(ids.map((id) => [id, 1 / n]));
|
|
105
|
+
const base = (1 - damping) / n;
|
|
106
|
+
for (let iter = 0; iter < iterations; iter += 1) {
|
|
107
|
+
const next = new Map(ids.map((id) => [id, base]));
|
|
108
|
+
let danglingSum = 0;
|
|
109
|
+
for (const id of ids) {
|
|
110
|
+
const out = outEdges.get(id);
|
|
111
|
+
const r = rank.get(id) ?? 0;
|
|
112
|
+
if (!out || out.length === 0) {
|
|
113
|
+
danglingSum += r;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const total = outWeight.get(id) ?? 1;
|
|
117
|
+
for (const { to, w } of out) {
|
|
118
|
+
next.set(to, (next.get(to) ?? 0) + damping * r * (w / total));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Redistribute dangling-node mass uniformly.
|
|
122
|
+
if (danglingSum > 0) {
|
|
123
|
+
const share = (damping * danglingSum) / n;
|
|
124
|
+
for (const id of ids) {
|
|
125
|
+
next.set(id, (next.get(id) ?? 0) + share);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
rank = next;
|
|
129
|
+
}
|
|
130
|
+
return rank;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Re-ranks a candidate node list by blending retrieval order with PageRank
|
|
134
|
+
* centrality. alpha controls the centrality weight (0 = pure retrieval order).
|
|
135
|
+
*/
|
|
136
|
+
function blendWithCentrality(candidates, pageRank, alpha = 0.3) {
|
|
137
|
+
if (candidates.length === 0)
|
|
138
|
+
return candidates;
|
|
139
|
+
const maxPr = Math.max(1e-9, ...Array.from(pageRank.values()));
|
|
140
|
+
const scored = candidates.map((node, index) => {
|
|
141
|
+
const retrievalScore = 1 - index / candidates.length; // higher = earlier
|
|
142
|
+
const centrality = (pageRank.get(node.id) ?? 0) / maxPr;
|
|
143
|
+
const score = (1 - alpha) * retrievalScore + alpha * centrality;
|
|
144
|
+
return { node, score, index };
|
|
145
|
+
});
|
|
146
|
+
scored.sort((a, b) => {
|
|
147
|
+
if (b.score !== a.score)
|
|
148
|
+
return b.score - a.score;
|
|
149
|
+
return a.index - b.index;
|
|
150
|
+
});
|
|
151
|
+
return scored.map((s) => s.node);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=graph-compression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-compression.js","sourceRoot":"","sources":["../../src/graph/graph-compression.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { GraphClient } from "./client-factory";
|
|
2
|
+
/**
|
|
3
|
+
* Repo-Map: module-level overview compression inspired by Aider's repo-map.
|
|
4
|
+
*
|
|
5
|
+
* Instead of sending full symbol definitions, we generate a high-level "map"
|
|
6
|
+
* where each module gets one line: `path/to/module: exports symbol1, symbol2, ...`
|
|
7
|
+
*
|
|
8
|
+
* This is extremely token-efficient (~100-300 tokens for entire repos) and
|
|
9
|
+
* lets LLMs understand the project structure before diving into specific code.
|
|
10
|
+
*/
|
|
11
|
+
export interface RepoMapEntry {
|
|
12
|
+
moduleId: string;
|
|
13
|
+
path: string;
|
|
14
|
+
exports: string[];
|
|
15
|
+
tokenEstimate: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Builds a repo map from Module nodes. Each entry summarizes one module's exports.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildRepoMap(client: GraphClient): Promise<RepoMapEntry[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Formats the repo map into a single string for injection into LLM context.
|
|
23
|
+
*/
|
|
24
|
+
export declare function formatRepoMapString(entries: RepoMapEntry[]): string;
|
|
25
|
+
//# sourceMappingURL=repo-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-map.d.ts","sourceRoot":"","sources":["../../src/graph/repo-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;GAQG;AAEH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAwB/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAUnE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildRepoMap = buildRepoMap;
|
|
4
|
+
exports.formatRepoMapString = formatRepoMapString;
|
|
5
|
+
/**
|
|
6
|
+
* Builds a repo map from Module nodes. Each entry summarizes one module's exports.
|
|
7
|
+
*/
|
|
8
|
+
async function buildRepoMap(client) {
|
|
9
|
+
if (typeof client.readSnapshot !== "function") {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
const snapshot = client.readSnapshot();
|
|
13
|
+
const modules = snapshot.nodes.filter((n) => n.type === "Module");
|
|
14
|
+
const entries = [];
|
|
15
|
+
for (const mod of modules) {
|
|
16
|
+
const path = extractModulePath(mod);
|
|
17
|
+
const exports = extractExportedSymbols(mod, snapshot.nodes);
|
|
18
|
+
const line = formatRepoMapLine(path, exports);
|
|
19
|
+
entries.push({
|
|
20
|
+
moduleId: mod.id,
|
|
21
|
+
path,
|
|
22
|
+
exports,
|
|
23
|
+
tokenEstimate: Math.ceil(line.length / 4),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
// Sort by path for readability.
|
|
27
|
+
entries.sort((a, b) => a.path.localeCompare(b.path));
|
|
28
|
+
return entries;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Formats the repo map into a single string for injection into LLM context.
|
|
32
|
+
*/
|
|
33
|
+
function formatRepoMapString(entries) {
|
|
34
|
+
if (entries.length === 0) {
|
|
35
|
+
return "# Repository Map\n(No modules indexed)\n";
|
|
36
|
+
}
|
|
37
|
+
const lines = ["# Repository Map", ""];
|
|
38
|
+
for (const entry of entries) {
|
|
39
|
+
lines.push(formatRepoMapLine(entry.path, entry.exports));
|
|
40
|
+
}
|
|
41
|
+
return lines.join("\n");
|
|
42
|
+
}
|
|
43
|
+
function formatRepoMapLine(path, exports) {
|
|
44
|
+
if (exports.length === 0) {
|
|
45
|
+
return `${path}`;
|
|
46
|
+
}
|
|
47
|
+
return `${path}: exports ${exports.slice(0, 10).join(", ")}${exports.length > 10 ? ", ..." : ""}`;
|
|
48
|
+
}
|
|
49
|
+
function extractModulePath(moduleNode) {
|
|
50
|
+
// Module node content often contains the file path or module name.
|
|
51
|
+
const content = moduleNode.content.trim();
|
|
52
|
+
const pathMatch = content.match(/^(?:module|file):\s*(.+)$/i);
|
|
53
|
+
if (pathMatch && pathMatch[1]) {
|
|
54
|
+
return pathMatch[1].trim();
|
|
55
|
+
}
|
|
56
|
+
// Fallback: use id if it looks like a path.
|
|
57
|
+
if (moduleNode.id.includes("/") || moduleNode.id.includes("\\")) {
|
|
58
|
+
return moduleNode.id;
|
|
59
|
+
}
|
|
60
|
+
return content || moduleNode.id;
|
|
61
|
+
}
|
|
62
|
+
function extractExportedSymbols(moduleNode, _allNodes) {
|
|
63
|
+
// Heuristic: look for Symbol nodes that reference this module via "defines" edges.
|
|
64
|
+
// In practice, you'd traverse edges from the module to its defined symbols.
|
|
65
|
+
// For now, we do a simple name-based heuristic from the module's metadata.
|
|
66
|
+
const meta = moduleNode.metadata;
|
|
67
|
+
if (meta && Array.isArray(meta.exports)) {
|
|
68
|
+
return meta.exports.slice(0, 20).map(String);
|
|
69
|
+
}
|
|
70
|
+
// Fallback: scan content for "exports" keyword.
|
|
71
|
+
const content = moduleNode.content;
|
|
72
|
+
const exportMatches = content.match(/exports?[:\s]+([^\n]+)/gi);
|
|
73
|
+
if (exportMatches) {
|
|
74
|
+
return exportMatches
|
|
75
|
+
.map((m) => m.replace(/^exports?[:\s]+/i, "").trim())
|
|
76
|
+
.slice(0, 10);
|
|
77
|
+
}
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=repo-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-map.js","sourceRoot":"","sources":["../../src/graph/repo-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { GraphNode } from "../core/types";
|
|
2
|
+
import { type EmbeddingProvider } from "../learning/embeddings";
|
|
3
|
+
import { type OpenBmbRuntimeOptions } from "../routing/provider-adapters/openbmb";
|
|
4
|
+
import type { CompressionModelHandle } from "./compression-model";
|
|
5
|
+
/**
|
|
6
|
+
* Semantic compression via minicpm-1b: cluster similar nodes and generate
|
|
7
|
+
* unified summaries, or condense verbose content into dense descriptions.
|
|
8
|
+
*
|
|
9
|
+
* This is the "Layer 1" compression that leverages the local LLM after graph-
|
|
10
|
+
* structure pruning has already reduced the candidate set.
|
|
11
|
+
*/
|
|
12
|
+
export interface ClusteringOptions {
|
|
13
|
+
embeddingProvider?: EmbeddingProvider;
|
|
14
|
+
similarityThreshold?: number;
|
|
15
|
+
maxClusterSize?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface NodeCluster {
|
|
18
|
+
representative: GraphNode;
|
|
19
|
+
members: GraphNode[];
|
|
20
|
+
avgSimilarity: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Clusters nodes by embedding similarity. Nodes within a cluster can be
|
|
24
|
+
* merged into a single summary line to save tokens.
|
|
25
|
+
*/
|
|
26
|
+
export declare function clusterSimilarNodes(nodes: GraphNode[], options?: ClusteringOptions): Promise<NodeCluster[]>;
|
|
27
|
+
export interface SummarizerOptions extends OpenBmbRuntimeOptions {
|
|
28
|
+
maxSummaryTokens?: number;
|
|
29
|
+
/** Preferred: unified compression model handle (auto-selects external/embedded). */
|
|
30
|
+
modelHandle?: CompressionModelHandle;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generates a unified summary for a cluster of similar nodes.
|
|
34
|
+
* Uses the provided compression model handle (external or embedded) if given,
|
|
35
|
+
* otherwise falls back to direct embedded openbmb invocation.
|
|
36
|
+
* Example: 3 overloaded `login()` variants → "login function with 3 signatures".
|
|
37
|
+
*/
|
|
38
|
+
export declare function summarizeCluster(cluster: NodeCluster, options?: SummarizerOptions): Promise<string>;
|
|
39
|
+
export interface DensifierOptions extends OpenBmbRuntimeOptions {
|
|
40
|
+
maxOutputTokens?: number;
|
|
41
|
+
minInputTokens?: number;
|
|
42
|
+
/** Preferred: unified compression model handle (auto-selects external/embedded). */
|
|
43
|
+
modelHandle?: CompressionModelHandle;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Rewrites verbose node content into dense summaries.
|
|
47
|
+
* Uses the provided compression model handle if given, otherwise falls back to
|
|
48
|
+
* direct embedded openbmb invocation. Only applies to nodes exceeding minInputTokens.
|
|
49
|
+
*/
|
|
50
|
+
export declare function densifyNodeContent(node: GraphNode, options?: DensifierOptions): Promise<string>;
|
|
51
|
+
/**
|
|
52
|
+
* High-level pipeline: cluster similar nodes, summarize each cluster, and
|
|
53
|
+
* densify remaining verbose nodes. Returns compressed node set.
|
|
54
|
+
*
|
|
55
|
+
* When a compression model handle is provided, summarization/densification
|
|
56
|
+
* route through it (external economy tier or embedded minicpm); otherwise they
|
|
57
|
+
* fall back to direct embedded openbmb invocation.
|
|
58
|
+
*/
|
|
59
|
+
export declare function applySemanticCompression(nodes: GraphNode[], options?: {
|
|
60
|
+
clusteringOptions?: ClusteringOptions;
|
|
61
|
+
summarizerOptions?: SummarizerOptions;
|
|
62
|
+
densifierOptions?: DensifierOptions;
|
|
63
|
+
modelHandle?: CompressionModelHandle;
|
|
64
|
+
}): Promise<GraphNode[]>;
|
|
65
|
+
//# sourceMappingURL=semantic-compression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-compression.d.ts","sourceRoot":"","sources":["../../src/graph/semantic-compression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAsC,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpG,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AACvG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE;;;;;;GAMG;AAEH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,SAAS,CAAC;IAC1B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,WAAW,EAAE,CAAC,CA6CxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,GACA,OAAO,CAAC,SAAS,EAAE,CAAC,CA6CtB"}
|