@roarpeng/graphflow 0.6.15 → 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 +28 -1
- 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/orchestrator.d.ts +7 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +45 -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/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/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 +2 -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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive token budget allocation based on task complexity heuristics.
|
|
3
|
+
*
|
|
4
|
+
* Instead of a fixed maxContextTokens (e.g., 1500), we dynamically predict
|
|
5
|
+
* how much context a task needs by analyzing its description.
|
|
6
|
+
*/
|
|
7
|
+
export type TaskMode = "simple" | "complex";
|
|
8
|
+
export interface BudgetEstimate {
|
|
9
|
+
tokens: number;
|
|
10
|
+
rationale: string;
|
|
11
|
+
mode: TaskMode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Estimates required context tokens for a given task. Returns a budget
|
|
15
|
+
* recommendation based on heuristic signals (refactor, multi-file, etc.).
|
|
16
|
+
*/
|
|
17
|
+
export declare function estimateContextBudget(task: string, mode: TaskMode): BudgetEstimate;
|
|
18
|
+
//# sourceMappingURL=adaptive-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-budget.d.ts","sourceRoot":"","sources":["../../src/graph/adaptive-budget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,cAAc,CA4ClF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Adaptive token budget allocation based on task complexity heuristics.
|
|
4
|
+
*
|
|
5
|
+
* Instead of a fixed maxContextTokens (e.g., 1500), we dynamically predict
|
|
6
|
+
* how much context a task needs by analyzing its description.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.estimateContextBudget = estimateContextBudget;
|
|
10
|
+
/**
|
|
11
|
+
* Estimates required context tokens for a given task. Returns a budget
|
|
12
|
+
* recommendation based on heuristic signals (refactor, multi-file, etc.).
|
|
13
|
+
*/
|
|
14
|
+
function estimateContextBudget(task, mode) {
|
|
15
|
+
let base = mode === "simple" ? 800 : 1500;
|
|
16
|
+
const signals = [];
|
|
17
|
+
// Signal 1: Refactoring / migration tasks need more context.
|
|
18
|
+
if (/refactor|migrate|rewrite|reorganize/i.test(task)) {
|
|
19
|
+
base *= 1.5;
|
|
20
|
+
signals.push("refactor (+50%)");
|
|
21
|
+
}
|
|
22
|
+
// Signal 2: Multi-file coordination ("and", commas, semicolons).
|
|
23
|
+
const splitCount = (task.match(/\band\b|,|;/gi) || []).length;
|
|
24
|
+
if (splitCount > 2) {
|
|
25
|
+
base *= 1.2;
|
|
26
|
+
signals.push(`multi-part (${splitCount} splits, +20%)`);
|
|
27
|
+
}
|
|
28
|
+
// Signal 3: Architecture / design tasks need broader context.
|
|
29
|
+
if (/architect|design|structure|module|component/i.test(task)) {
|
|
30
|
+
base *= 1.3;
|
|
31
|
+
signals.push("architecture (+30%)");
|
|
32
|
+
}
|
|
33
|
+
// Signal 4: Bug fix / localized changes need less context.
|
|
34
|
+
if (/fix\s+bug|patch|hotfix|typo/i.test(task)) {
|
|
35
|
+
base *= 0.7;
|
|
36
|
+
signals.push("localized fix (-30%)");
|
|
37
|
+
}
|
|
38
|
+
// Signal 5: Adding tests usually needs implementation + existing test patterns.
|
|
39
|
+
if (/add\s+test|write\s+test|test\s+coverage/i.test(task)) {
|
|
40
|
+
base *= 1.15;
|
|
41
|
+
signals.push("test addition (+15%)");
|
|
42
|
+
}
|
|
43
|
+
// Cap at reasonable limits.
|
|
44
|
+
const tokens = Math.max(400, Math.min(Math.round(base), 4000));
|
|
45
|
+
const rationale = signals.length > 0
|
|
46
|
+
? `Base ${mode === "simple" ? 800 : 1500} → ${signals.join(", ")} → ${tokens}`
|
|
47
|
+
: `Default ${tokens} for ${mode} task`;
|
|
48
|
+
return { tokens, rationale, mode };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=adaptive-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-budget.js","sourceRoot":"","sources":["../../src/graph/adaptive-budget.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAcH,sDA4CC;AAhDD;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,IAAY,EAAE,IAAc;IAChE,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,6DAA6D;IAC7D,IAAI,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,IAAI,GAAG,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;IAED,iEAAiE;IACjE,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9D,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,IAAI,IAAI,GAAG,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,eAAe,UAAU,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,8DAA8D;IAC9D,IAAI,8CAA8C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,IAAI,IAAI,GAAG,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IAED,2DAA2D;IAC3D,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,IAAI,GAAG,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvC,CAAC;IAED,gFAAgF;IAChF,IAAI,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,IAAI,IAAI,IAAI,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvC,CAAC;IAED,4BAA4B;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/D,MAAM,SAAS,GACb,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,QAAQ,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,MAAM,EAAE;QAC9E,CAAC,CAAC,WAAW,MAAM,QAAQ,IAAI,OAAO,CAAC;IAE3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { GraphFlowConfig } from "../config/schema";
|
|
2
|
+
/**
|
|
3
|
+
* Unified compression-model adapter.
|
|
4
|
+
*
|
|
5
|
+
* Product strategy (hybrid, zero extra config):
|
|
6
|
+
* 1. backend="inherit" (default) → reuse config.tiers.economy
|
|
7
|
+
* - external API configured (openai/anthropic/bailian) → use it
|
|
8
|
+
* - provider=openbmb → use embedded minicpm-1b
|
|
9
|
+
* 2. backend="network" → external API (optionally stronger model)
|
|
10
|
+
* 3. backend="local" → force embedded minicpm-1b
|
|
11
|
+
*
|
|
12
|
+
* The compressor role resolution lives in model-router.ts; this module wraps
|
|
13
|
+
* it with embedded-model auto-download and a single generate() entrypoint.
|
|
14
|
+
*/
|
|
15
|
+
export interface CompressionModelHandle {
|
|
16
|
+
provider: string;
|
|
17
|
+
model: string;
|
|
18
|
+
isEmbedded: boolean;
|
|
19
|
+
/** False when no usable model is reachable (no API key, no embedded file). */
|
|
20
|
+
available: boolean;
|
|
21
|
+
generate(prompt: string, maxTokens?: number): Promise<string>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Detects provider fallback placeholders like "[openai:gpt-4.1-mini] <prompt>".
|
|
25
|
+
* These are returned by adapters when no real model is reachable; they must
|
|
26
|
+
* never be written into the compressed context.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isPlaceholderResponse(text: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Resolves the compression model based on config, auto-downloading the embedded
|
|
31
|
+
* model if needed. Returns a handle with a unified generate() method.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveCompressionModel(config: GraphFlowConfig, configPath?: string): Promise<CompressionModelHandle>;
|
|
34
|
+
/** Default embedded model: MiniCPM-1B Q4_K_M GGUF (~650MB). */
|
|
35
|
+
export declare const DEFAULT_EMBEDDED_MODEL = "minicpm-1b";
|
|
36
|
+
export declare const DEFAULT_EMBEDDED_MODEL_URL = "https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16-llama-format-gguf/resolve/main/ggml-model-Q4_K_M.gguf";
|
|
37
|
+
/**
|
|
38
|
+
* Ensures the embedded compression model is downloaded. Reuses the existing
|
|
39
|
+
* robust downloader (resumable, sha256-verified, file-locked) from the CLI
|
|
40
|
+
* runtime. Returns the resolved model path.
|
|
41
|
+
*/
|
|
42
|
+
export declare function ensureEmbeddedCompressionModel(config: GraphFlowConfig, configPath?: string): Promise<string>;
|
|
43
|
+
/**
|
|
44
|
+
* Reports which compression backend is active, for diagnostics/UI.
|
|
45
|
+
*/
|
|
46
|
+
export declare function describeCompressionBackend(config: GraphFlowConfig, _configPath?: string): {
|
|
47
|
+
backend: string;
|
|
48
|
+
provider: string;
|
|
49
|
+
model: string;
|
|
50
|
+
embedded: boolean;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=compression-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compression-model.d.ts","sourceRoot":"","sources":["../../src/graph/compression-model.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CA2DjC;AAUD,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,0BAA0B,6GACqE,CAAC;AAE7G;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,eAAe,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CASzE"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_EMBEDDED_MODEL_URL = exports.DEFAULT_EMBEDDED_MODEL = void 0;
|
|
4
|
+
exports.isPlaceholderResponse = isPlaceholderResponse;
|
|
5
|
+
exports.resolveCompressionModel = resolveCompressionModel;
|
|
6
|
+
exports.ensureEmbeddedCompressionModel = ensureEmbeddedCompressionModel;
|
|
7
|
+
exports.describeCompressionBackend = describeCompressionBackend;
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
const model_router_1 = require("../routing/model-router");
|
|
11
|
+
const provider_executor_1 = require("../routing/provider-executor");
|
|
12
|
+
/**
|
|
13
|
+
* Detects provider fallback placeholders like "[openai:gpt-4.1-mini] <prompt>".
|
|
14
|
+
* These are returned by adapters when no real model is reachable; they must
|
|
15
|
+
* never be written into the compressed context.
|
|
16
|
+
*/
|
|
17
|
+
function isPlaceholderResponse(text) {
|
|
18
|
+
return /^\[(openai|anthropic|bailian|doubao|openbmb):[^\]]+\]/i.test(text.trim());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolves the compression model based on config, auto-downloading the embedded
|
|
22
|
+
* model if needed. Returns a handle with a unified generate() method.
|
|
23
|
+
*/
|
|
24
|
+
async function resolveCompressionModel(config, configPath) {
|
|
25
|
+
const selection = (0, model_router_1.resolveModelForRole)("compressor", configPath);
|
|
26
|
+
const isEmbedded = selection.provider === "openbmb";
|
|
27
|
+
const timeoutMs = config.graphPolicy.compression?.timeoutMs;
|
|
28
|
+
// Probe availability: external providers need an API key, embedded needs a model file.
|
|
29
|
+
let available = true;
|
|
30
|
+
if (isEmbedded) {
|
|
31
|
+
const autoDownload = config.graphPolicy.compression?.autoDownloadEmbedded !== false;
|
|
32
|
+
if (autoDownload) {
|
|
33
|
+
try {
|
|
34
|
+
await ensureEmbeddedCompressionModel(config, configPath);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
logger_1.logger.warn({ error }, "Embedded model auto-download failed; compression will degrade to graph-only");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const modelPath = process.env.GRAPHFLOW_OPENBMB_MODEL_PATH;
|
|
41
|
+
available = Boolean(modelPath && (0, node_fs_1.existsSync)(modelPath));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const providerConfig = config.providers[selection.provider];
|
|
45
|
+
const apiKey = providerConfig?.apiKey;
|
|
46
|
+
// Unresolved "${ENV}" placeholders or missing keys mean no reachable model.
|
|
47
|
+
available = Boolean(apiKey && !/^\$\{.*\}$/.test(apiKey.trim()) && apiKey.trim().length > 0);
|
|
48
|
+
}
|
|
49
|
+
if (!available) {
|
|
50
|
+
logger_1.logger.info({ provider: selection.provider, model: selection.model }, "No usable compression model; semantic compression will be skipped (graph-structure compression still active)");
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
provider: selection.provider,
|
|
54
|
+
model: selection.model,
|
|
55
|
+
isEmbedded,
|
|
56
|
+
available,
|
|
57
|
+
async generate(prompt, maxTokens) {
|
|
58
|
+
const previousMax = process.env.GRAPHFLOW_OPENBMB_MAX_TOKENS;
|
|
59
|
+
const previousTimeout = process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS;
|
|
60
|
+
if (maxTokens !== undefined) {
|
|
61
|
+
process.env.GRAPHFLOW_OPENBMB_MAX_TOKENS = String(maxTokens);
|
|
62
|
+
}
|
|
63
|
+
if (timeoutMs !== undefined) {
|
|
64
|
+
process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS = String(timeoutMs);
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const result = await (0, provider_executor_1.executeRolePrompt)("compressor", prompt, selection);
|
|
68
|
+
// Guard: never let a provider placeholder leak into compressed context.
|
|
69
|
+
if (isPlaceholderResponse(result)) {
|
|
70
|
+
throw new Error(`Compression model unavailable (${selection.provider}/${selection.model})`);
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
restoreEnv("GRAPHFLOW_OPENBMB_MAX_TOKENS", previousMax);
|
|
76
|
+
restoreEnv("GRAPHFLOW_PROVIDER_TIMEOUT_MS", previousTimeout);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function restoreEnv(key, previous) {
|
|
82
|
+
if (previous === undefined) {
|
|
83
|
+
delete process.env[key];
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
process.env[key] = previous;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** Default embedded model: MiniCPM-1B Q4_K_M GGUF (~650MB). */
|
|
90
|
+
exports.DEFAULT_EMBEDDED_MODEL = "minicpm-1b";
|
|
91
|
+
exports.DEFAULT_EMBEDDED_MODEL_URL = "https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16-llama-format-gguf/resolve/main/ggml-model-Q4_K_M.gguf";
|
|
92
|
+
/**
|
|
93
|
+
* Ensures the embedded compression model is downloaded. Reuses the existing
|
|
94
|
+
* robust downloader (resumable, sha256-verified, file-locked) from the CLI
|
|
95
|
+
* runtime. Returns the resolved model path.
|
|
96
|
+
*/
|
|
97
|
+
async function ensureEmbeddedCompressionModel(config, configPath) {
|
|
98
|
+
const { downloadOpenBmbModel } = await import("../surfaces/cli/runtime/graph.js");
|
|
99
|
+
const customPath = config.graphPolicy.compression?.embeddedModelPath;
|
|
100
|
+
// Provide a default URL if user hasn't configured one via env.
|
|
101
|
+
if (!process.env.GRAPHFLOW_MINICPM_MODEL_URL) {
|
|
102
|
+
process.env.GRAPHFLOW_MINICPM_MODEL_URL = exports.DEFAULT_EMBEDDED_MODEL_URL;
|
|
103
|
+
}
|
|
104
|
+
const result = await downloadOpenBmbModel(configPath, {
|
|
105
|
+
model: exports.DEFAULT_EMBEDDED_MODEL,
|
|
106
|
+
...(customPath ? { targetPath: customPath } : {}),
|
|
107
|
+
});
|
|
108
|
+
// Point the embedded runtime at the downloaded model.
|
|
109
|
+
process.env.GRAPHFLOW_OPENBMB_MODEL_PATH = result.targetPath;
|
|
110
|
+
return result.targetPath;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Reports which compression backend is active, for diagnostics/UI.
|
|
114
|
+
*/
|
|
115
|
+
function describeCompressionBackend(config, _configPath) {
|
|
116
|
+
const backend = config.graphPolicy.compression?.backend ?? "inherit";
|
|
117
|
+
const selection = (0, model_router_1.resolveCompressorSelection)(config);
|
|
118
|
+
return {
|
|
119
|
+
backend,
|
|
120
|
+
provider: selection.provider,
|
|
121
|
+
model: selection.model,
|
|
122
|
+
embedded: selection.provider === "openbmb",
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=compression-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compression-model.js","sourceRoot":"","sources":["../../src/graph/compression-model.ts"],"names":[],"mappings":";;;AAkCA,sDAEC;AAMD,0DA8DC;AAoBD,wEAoBC;AAKD,gEAYC;AAjKD,qCAAqC;AACrC,4CAAyC;AACzC,0DAA0F;AAC1F,oEAAiE;AA0BjE;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,OAAO,wDAAwD,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACpF,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,uBAAuB,CAC3C,MAAuB,EACvB,UAAmB;IAEnB,MAAM,SAAS,GAAG,IAAA,kCAAmB,EAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC;IAE5D,uFAAuF;IACvF,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,oBAAoB,KAAK,KAAK,CAAC;QACpF,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,8BAA8B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,eAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,6EAA6E,CAAC,CAAC;YACxG,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;QAC3D,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAA,oBAAU,EAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAyC,CAAC,CAAC;QAC7F,MAAM,MAAM,GAAG,cAAc,EAAE,MAAM,CAAC;QACtC,4EAA4E;QAC5E,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CACT,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,EACxD,8GAA8G,CAC/G,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,UAAU;QACV,SAAS;QACT,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,SAAkB;YAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;YAC7D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;YAClE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAA,qCAAiB,EAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBACxE,wEAAwE;gBACxE,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC9F,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;oBAAS,CAAC;gBACT,UAAU,CAAC,8BAA8B,EAAE,WAAW,CAAC,CAAC;gBACxD,UAAU,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,QAA4B;IAC3D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,+DAA+D;AAClD,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,0BAA0B,GACrC,0GAA0G,CAAC;AAE7G;;;;GAIG;AACI,KAAK,UAAU,8BAA8B,CAClD,MAAuB,EACvB,UAAmB;IAEnB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAErE,+DAA+D;IAC/D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,kCAA0B,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE;QACpD,KAAK,EAAE,8BAAsB;QAC7B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC,CAAC;IAEH,sDAAsD;IACtD,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,MAAM,CAAC,UAAU,CAAC;IAC7D,OAAO,MAAM,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CACxC,MAAuB,EACvB,WAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,IAAI,SAAS,CAAC;IACrE,MAAM,SAAS,GAAG,IAAA,yCAA0B,EAAC,MAAM,CAAC,CAAC;IACrD,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ,KAAK,SAAS;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { GraphEdge, GraphNode } from "../core/types";
|
|
2
2
|
import { type EmbeddingProvider } from "../learning/embeddings";
|
|
3
3
|
import type { GraphClient } from "./client-factory";
|
|
4
|
+
import { type ConnectedSubgraphOptions } from "./graph-compression";
|
|
5
|
+
import { type ClusteringOptions, type SummarizerOptions, type DensifierOptions } from "./semantic-compression";
|
|
6
|
+
import { type TaskMode } from "./adaptive-budget";
|
|
7
|
+
import type { CompressionModelHandle } from "./compression-model";
|
|
4
8
|
export interface ContextSlice {
|
|
5
9
|
items: string[];
|
|
6
10
|
tokenEstimate: number;
|
|
@@ -28,6 +32,22 @@ export interface LayeredPackageOptions {
|
|
|
28
32
|
embeddingProvider?: EmbeddingProvider;
|
|
29
33
|
vectorTopK?: number;
|
|
30
34
|
vectorMinSimilarity?: number;
|
|
35
|
+
/** Use HNSW ANN index for large candidate sets (>=200 nodes). Default true. */
|
|
36
|
+
enableHnsw?: boolean;
|
|
37
|
+
/** Enable graph-structure compression (edge weights, PageRank, connected subgraph). */
|
|
38
|
+
enableGraphCompression?: boolean;
|
|
39
|
+
graphCompressionOptions?: ConnectedSubgraphOptions;
|
|
40
|
+
/** Enable semantic compression via minicpm-1b (clustering, summarization, densification). */
|
|
41
|
+
enableSemanticCompression?: boolean;
|
|
42
|
+
clusteringOptions?: ClusteringOptions;
|
|
43
|
+
summarizerOptions?: SummarizerOptions;
|
|
44
|
+
densifierOptions?: DensifierOptions;
|
|
45
|
+
/** Unified compression model handle (auto-selects external economy tier or embedded minicpm). */
|
|
46
|
+
compressionModel?: CompressionModelHandle;
|
|
47
|
+
/** Return RepoMap overview if token budget is low. */
|
|
48
|
+
enableRepoMapFallback?: boolean;
|
|
49
|
+
/** Adaptive budget estimation based on task complexity. */
|
|
50
|
+
taskMode?: TaskMode;
|
|
31
51
|
}
|
|
32
52
|
export interface SubgraphExpansionOptions {
|
|
33
53
|
hops?: number;
|
|
@@ -44,4 +64,16 @@ export interface ContextRefillManager {
|
|
|
44
64
|
}
|
|
45
65
|
export declare function createContextRefillManager(client: GraphClient, maxTokens: number, options?: LayeredPackageOptions): ContextRefillManager;
|
|
46
66
|
export declare function summarizeNodes(nodes: GraphNode[]): string[];
|
|
67
|
+
/**
|
|
68
|
+
* Enhanced context packaging with graph-structure compression, semantic
|
|
69
|
+
* compression (minicpm-1b), and adaptive budgeting.
|
|
70
|
+
*
|
|
71
|
+
* Compression pipeline:
|
|
72
|
+
* 1. [Optional] RepoMap fallback for low budgets
|
|
73
|
+
* 2. Keyword + vector retrieval (existing)
|
|
74
|
+
* 3. Graph compression: connected subgraph + PageRank re-ranking
|
|
75
|
+
* 4. Semantic compression: cluster similar nodes, summarize, densify
|
|
76
|
+
* 5. Layer quotas + token budgeting (existing)
|
|
77
|
+
*/
|
|
78
|
+
export declare function buildEnhancedContextPackage(client: GraphClient, query: string, task: string, maxTokens: number, options?: LayeredPackageOptions): Promise<LayeredContextPackage>;
|
|
47
79
|
//# sourceMappingURL=context-slicer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-slicer.d.ts","sourceRoot":"","sources":["../../src/graph/context-slicer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"context-slicer.d.ts","sourceRoot":"","sources":["../../src/graph/context-slicer.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|