@roarpeng/graphflow 1.1.0 → 1.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/CHANGELOG.md +23 -0
- package/README.md +49 -3
- package/dist/agents/insight.js +5 -3
- package/dist/agents/insight.js.map +1 -1
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +7 -2
- package/dist/agents/planner.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/embedding-factory.d.ts.map +1 -1
- package/dist/config/embedding-factory.js +23 -12
- package/dist/config/embedding-factory.js.map +1 -1
- package/dist/config/loader.d.ts +11 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +103 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/core/agent-assignment.d.ts +39 -0
- package/dist/core/agent-assignment.d.ts.map +1 -0
- package/dist/core/agent-assignment.js +73 -0
- package/dist/core/agent-assignment.js.map +1 -0
- package/dist/core/agent-delegation.d.ts +1 -0
- package/dist/core/agent-delegation.d.ts.map +1 -1
- package/dist/core/agent-delegation.js +30 -1
- package/dist/core/agent-delegation.js.map +1 -1
- package/dist/core/dag-checkpoint.d.ts +83 -0
- package/dist/core/dag-checkpoint.d.ts.map +1 -0
- package/dist/core/dag-checkpoint.js +164 -0
- package/dist/core/dag-checkpoint.js.map +1 -0
- package/dist/core/dag-engine.d.ts +9 -0
- package/dist/core/dag-engine.d.ts.map +1 -1
- package/dist/core/dag-engine.js +42 -0
- package/dist/core/dag-engine.js.map +1 -1
- package/dist/core/merge-agent-insight.d.ts.map +1 -1
- package/dist/core/merge-agent-insight.js +39 -8
- package/dist/core/merge-agent-insight.js.map +1 -1
- package/dist/core/orchestrator-context.d.ts +10 -0
- package/dist/core/orchestrator-context.d.ts.map +1 -0
- package/dist/core/orchestrator-context.js +112 -0
- package/dist/core/orchestrator-context.js.map +1 -0
- package/dist/core/orchestrator-episode.d.ts +13 -0
- package/dist/core/orchestrator-episode.d.ts.map +1 -0
- package/dist/core/orchestrator-episode.js +128 -0
- package/dist/core/orchestrator-episode.js.map +1 -0
- package/dist/core/orchestrator-route.d.ts +20 -0
- package/dist/core/orchestrator-route.d.ts.map +1 -0
- package/dist/core/orchestrator-route.js +51 -0
- package/dist/core/orchestrator-route.js.map +1 -0
- package/dist/core/orchestrator.d.ts +2 -38
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +97 -286
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/triage.d.ts +21 -0
- package/dist/core/triage.d.ts.map +1 -1
- package/dist/core/triage.js +25 -6
- package/dist/core/triage.js.map +1 -1
- package/dist/core/types.d.ts +53 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/graph/context-slicer-types.d.ts +62 -0
- package/dist/graph/context-slicer-types.d.ts.map +1 -0
- package/dist/graph/context-slicer-types.js +13 -0
- package/dist/graph/context-slicer-types.js.map +1 -0
- package/dist/graph/context-slicer-utils.d.ts +24 -0
- package/dist/graph/context-slicer-utils.d.ts.map +1 -0
- package/dist/graph/context-slicer-utils.js +118 -0
- package/dist/graph/context-slicer-utils.js.map +1 -0
- package/dist/graph/context-slicer.d.ts +6 -61
- package/dist/graph/context-slicer.d.ts.map +1 -1
- package/dist/graph/context-slicer.js +73 -170
- package/dist/graph/context-slicer.js.map +1 -1
- package/dist/graph/file-indexer-cache.d.ts +34 -0
- package/dist/graph/file-indexer-cache.d.ts.map +1 -0
- package/dist/graph/file-indexer-cache.js +105 -0
- package/dist/graph/file-indexer-cache.js.map +1 -0
- package/dist/graph/file-indexer-edges.d.ts +55 -0
- package/dist/graph/file-indexer-edges.d.ts.map +1 -0
- package/dist/graph/file-indexer-edges.js +258 -0
- package/dist/graph/file-indexer-edges.js.map +1 -0
- package/dist/graph/file-indexer-nodes.d.ts +43 -0
- package/dist/graph/file-indexer-nodes.d.ts.map +1 -0
- package/dist/graph/file-indexer-nodes.js +137 -0
- package/dist/graph/file-indexer-nodes.js.map +1 -0
- package/dist/graph/file-indexer-walker.d.ts +35 -0
- package/dist/graph/file-indexer-walker.d.ts.map +1 -0
- package/dist/graph/file-indexer-walker.js +80 -0
- package/dist/graph/file-indexer-walker.js.map +1 -0
- package/dist/graph/file-indexer.d.ts +13 -39
- package/dist/graph/file-indexer.d.ts.map +1 -1
- package/dist/graph/file-indexer.js +167 -600
- package/dist/graph/file-indexer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/agent-mcp-installer.d.ts +25 -1
- package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
- package/dist/integrations/agent-mcp-installer.js +174 -13
- package/dist/integrations/agent-mcp-installer.js.map +1 -1
- package/dist/integrations/skill-installer.d.ts +80 -0
- package/dist/integrations/skill-installer.d.ts.map +1 -0
- package/dist/integrations/skill-installer.js +612 -0
- package/dist/integrations/skill-installer.js.map +1 -0
- package/dist/learning/embeddings.d.ts +11 -0
- package/dist/learning/embeddings.d.ts.map +1 -1
- package/dist/learning/embeddings.js +24 -0
- package/dist/learning/embeddings.js.map +1 -1
- package/dist/learning/episodic-memory.d.ts +3 -2
- package/dist/learning/episodic-memory.d.ts.map +1 -1
- package/dist/learning/episodic-memory.js +105 -10
- package/dist/learning/episodic-memory.js.map +1 -1
- package/dist/learning/local-embedding.d.ts.map +1 -1
- package/dist/learning/local-embedding.js +16 -0
- package/dist/learning/local-embedding.js.map +1 -1
- package/dist/learning/seed-skills.d.ts +21 -0
- package/dist/learning/seed-skills.d.ts.map +1 -0
- package/dist/learning/seed-skills.js +113 -0
- package/dist/learning/seed-skills.js.map +1 -0
- package/dist/learning/skill-evolution.d.ts +1 -1
- package/dist/learning/skill-evolution.d.ts.map +1 -1
- package/dist/learning/skill-evolution.js +1 -1
- package/dist/learning/skill-evolution.js.map +1 -1
- package/dist/learning/skill-package.d.ts +55 -0
- package/dist/learning/skill-package.d.ts.map +1 -0
- package/dist/learning/skill-package.js +115 -0
- package/dist/learning/skill-package.js.map +1 -0
- package/dist/learning/triage-telemetry.d.ts +43 -0
- package/dist/learning/triage-telemetry.d.ts.map +1 -0
- package/dist/learning/triage-telemetry.js +114 -0
- package/dist/learning/triage-telemetry.js.map +1 -0
- package/dist/surfaces/cli/index.js +74 -0
- package/dist/surfaces/cli/index.js.map +1 -1
- package/dist/surfaces/cli/init.d.ts +28 -2
- package/dist/surfaces/cli/init.d.ts.map +1 -1
- package/dist/surfaces/cli/init.js +163 -30
- package/dist/surfaces/cli/init.js.map +1 -1
- package/dist/surfaces/cli/output.d.ts.map +1 -1
- package/dist/surfaces/cli/output.js +6 -0
- package/dist/surfaces/cli/output.js.map +1 -1
- package/dist/surfaces/cli/runtime/graph.d.ts +23 -0
- package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/graph.js +40 -0
- package/dist/surfaces/cli/runtime/graph.js.map +1 -1
- package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/routing.js +8 -1
- package/dist/surfaces/cli/runtime/routing.js.map +1 -1
- package/dist/surfaces/cli/runtime.d.ts +1 -1
- package/dist/surfaces/cli/runtime.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.js +4 -1
- package/dist/surfaces/cli/runtime.js.map +1 -1
- package/dist/surfaces/mcp/tool-definitions.js +20 -20
- package/dist/surfaces/mcp/tool-definitions.js.map +1 -1
- package/package.json +4 -3
- package/scripts/safe-postinstall.cjs +323 -5
package/dist/core/triage.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.triageTaskExplain = triageTaskExplain;
|
|
3
4
|
exports.triageTask = triageTask;
|
|
4
5
|
exports.triageTaskLlm = triageTaskLlm;
|
|
5
6
|
const logger_1 = require("../utils/logger");
|
|
@@ -15,13 +16,31 @@ const COMPLEX_HINTS = [
|
|
|
15
16
|
"graph",
|
|
16
17
|
"and",
|
|
17
18
|
];
|
|
18
|
-
|
|
19
|
+
/**
|
|
20
|
+
* 带原因说明的 triage 启发式判定。
|
|
21
|
+
* 既返回 simple/complex 决策,也返回匹配到的关键词、任务长度与触发来源,
|
|
22
|
+
* 供 triage 准确率数据收集使用。
|
|
23
|
+
*/
|
|
24
|
+
function triageTaskExplain(task) {
|
|
19
25
|
const normalized = task.toLowerCase();
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
const matchedKeywords = COMPLEX_HINTS.filter((hint) => normalized.includes(hint));
|
|
27
|
+
const longEnough = task.length > 80;
|
|
28
|
+
const keywordHit = matchedKeywords.length >= 2;
|
|
29
|
+
const isComplex = longEnough || keywordHit;
|
|
30
|
+
let triggeredBy = "default";
|
|
31
|
+
if (longEnough && keywordHit)
|
|
32
|
+
triggeredBy = "both";
|
|
33
|
+
else if (longEnough)
|
|
34
|
+
triggeredBy = "length";
|
|
35
|
+
else if (keywordHit)
|
|
36
|
+
triggeredBy = "keywords";
|
|
37
|
+
return {
|
|
38
|
+
decision: isComplex ? "complex" : "simple",
|
|
39
|
+
reason: { matchedKeywords, taskLength: task.length, triggeredBy },
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function triageTask(task) {
|
|
43
|
+
return triageTaskExplain(task).decision;
|
|
25
44
|
}
|
|
26
45
|
async function triageTaskLlm(task, selection, context) {
|
|
27
46
|
if (!task.trim()) {
|
package/dist/core/triage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../src/core/triage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../src/core/triage.ts"],"names":[],"mappings":";;AAwCA,8CAgBC;AAED,gCAEC;AAED,sCAyCC;AAvGD,4CAAyC;AAEzC,oEAAqF;AAIrF,MAAM,aAAa,GAAG;IACpB,OAAO;IACP,QAAQ;IACR,UAAU;IACV,cAAc;IACd,QAAQ;IACR,UAAU;IACV,KAAK;IACL,OAAO;IACP,KAAK;CACN,CAAC;AAmBF;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,UAAU,IAAI,UAAU,CAAC;IAE3C,IAAI,WAAW,GAAgC,SAAS,CAAC;IACzD,IAAI,UAAU,IAAI,UAAU;QAAE,WAAW,GAAG,MAAM,CAAC;SAC9C,IAAI,UAAU;QAAE,WAAW,GAAG,QAAQ,CAAC;SACvC,IAAI,UAAU;QAAE,WAAW,GAAG,UAAU,CAAC;IAE9C,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAC1C,MAAM,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;KAClE,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;AAC1C,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,SAAyB,EACzB,OAAuB;IAEvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG;QACb,oFAAoF;QACpF,2GAA2G;QAC3G,sGAAsG;QACtG,8FAA8F;QAC9F,SAAS,IAAI,EAAE;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,qCAAiB,EAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEzC,IACE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC5B,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAC3D,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;QACxC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
import type { GraphClient } from "../graph/client-factory.js";
|
|
1
2
|
export type TaskStatus = "PENDING" | "RUNNING" | "VALIDATING" | "COMPLETED" | "FAILED" | "HUMAN_REVIEW_REQUIRED" | "DELEGATED";
|
|
2
3
|
export type AgentRole = "planner" | "worker" | "validator" | "enricher" | "evolver" | "compressor";
|
|
4
|
+
/**
|
|
5
|
+
* Agent 专业领域类型,用于多 Agent 协作编排时标注建议的执行角色。
|
|
6
|
+
* - frontend: 前端相关(ui/component/css/style)
|
|
7
|
+
* - backend: 后端相关(api/server/database/model)
|
|
8
|
+
* - testing: 测试相关(test/testing)
|
|
9
|
+
* - docs: 文档相关(doc/readme/changelog)
|
|
10
|
+
* - general: 通用任务(默认)
|
|
11
|
+
*/
|
|
12
|
+
export type AgentSpecialty = "frontend" | "backend" | "testing" | "docs" | "general";
|
|
3
13
|
export interface ValidationResult {
|
|
4
14
|
passed: boolean;
|
|
5
15
|
feedback: string;
|
|
@@ -49,6 +59,11 @@ export interface TaskRunResult {
|
|
|
49
59
|
expectedFormat: string;
|
|
50
60
|
}>;
|
|
51
61
|
insightSummary?: string;
|
|
62
|
+
/** 多 Agent 协作编排:每个任务节点建议的 agent 专业领域映射 */
|
|
63
|
+
agentAssignments?: Array<{
|
|
64
|
+
taskId: string;
|
|
65
|
+
specialty: AgentSpecialty;
|
|
66
|
+
}>;
|
|
52
67
|
};
|
|
53
68
|
}
|
|
54
69
|
export interface TaskNode {
|
|
@@ -58,11 +73,49 @@ export interface TaskNode {
|
|
|
58
73
|
status: TaskStatus;
|
|
59
74
|
contextQuery: string;
|
|
60
75
|
retryCount: number;
|
|
76
|
+
/** 指定执行该节点的 agent 角色(AgentSpecialty),用于多 Agent 协作编排 */
|
|
77
|
+
assignedAgent?: AgentSpecialty;
|
|
61
78
|
}
|
|
62
79
|
export interface OrchestrationInput {
|
|
63
80
|
task: string;
|
|
64
81
|
maxRetries?: number;
|
|
65
82
|
}
|
|
83
|
+
export interface OrchestrateOptions {
|
|
84
|
+
graphClient?: GraphClient;
|
|
85
|
+
enableAutoGraphSync?: boolean;
|
|
86
|
+
enableNearLosslessMode?: boolean;
|
|
87
|
+
nearLosslessQuery?: string;
|
|
88
|
+
maxContextTokens?: number;
|
|
89
|
+
layerQuota?: {
|
|
90
|
+
l1: number;
|
|
91
|
+
l2: number;
|
|
92
|
+
l3: number;
|
|
93
|
+
};
|
|
94
|
+
onContextPackage?: (pkg: import("../graph/context-slicer").LayeredContextPackage) => void;
|
|
95
|
+
providerHealth?: import("../routing/model-router").ProviderHealthMap;
|
|
96
|
+
providerFallbackChain?: import("../routing/model-router").ProviderName[];
|
|
97
|
+
enableSkillFlywheel?: boolean;
|
|
98
|
+
skillHintsLimit?: number;
|
|
99
|
+
/** 预置种子技能:在技能飞轮启用时,于 orchestrator 首次运行时写入常见工程技能基线(幂等)。 */
|
|
100
|
+
enableSeedSkills?: boolean;
|
|
101
|
+
enableLlmAgents?: boolean;
|
|
102
|
+
enableDriftReplan?: boolean;
|
|
103
|
+
maxReplanRounds?: number;
|
|
104
|
+
enableGraphContextInPrompt?: boolean;
|
|
105
|
+
enableEpisodicMemory?: boolean;
|
|
106
|
+
enableLlmTriage?: boolean;
|
|
107
|
+
embeddingProvider?: import("../learning/embeddings").EmbeddingProvider;
|
|
108
|
+
configPath?: string;
|
|
109
|
+
executionMode?: "bridge" | "llm";
|
|
110
|
+
/** Enable zero-cost graph-structure compression (edge weights + PageRank). Default true. */
|
|
111
|
+
enableGraphCompression?: boolean;
|
|
112
|
+
/** Adaptively size the context token budget from task complexity. Auto-enabled for complex tasks unless false. */
|
|
113
|
+
enableAdaptiveBudget?: boolean;
|
|
114
|
+
/** Return module-level RepoMap overview when budget is tight. Default false. */
|
|
115
|
+
enableRepoMapFallback?: boolean;
|
|
116
|
+
/** Run Six Hats plan_insight before complex DAG planning. Default true for complex tasks. */
|
|
117
|
+
enablePlanInsight?: boolean;
|
|
118
|
+
}
|
|
66
119
|
export interface GraphNode {
|
|
67
120
|
id: string;
|
|
68
121
|
type: "File" | "Symbol" | "Module" | "TaskRun" | "Decision" | "Skill";
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,uBAAuB,GACvB,WAAW,CAAC;AAEhB,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAEnG,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,mBAAmB,CAAC,EAAE;QACpB,MAAM,EAAE,SAAS,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,sFAAsF;QACtF,SAAS,CAAC,EAAE,eAAe,CAAC;QAC5B,cAAc,CAAC,EAAE,KAAK,CAAC;YACrB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,cAAc,EAAE,MAAM,CAAC;SACxB,CAAC,CAAC;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { GraphEdge, GraphNode } from "../core/types.js";
|
|
2
|
+
import type { EmbeddingProvider } from "../learning/embeddings.js";
|
|
3
|
+
import type { ConnectedSubgraphOptions } from "./graph-compression.js";
|
|
4
|
+
import type { ClusteringOptions, SummarizerOptions, DensifierOptions } from "./semantic-compression.js";
|
|
5
|
+
import type { TaskMode } from "./adaptive-budget.js";
|
|
6
|
+
import type { CompressionModelHandle } from "./compression-model.js";
|
|
7
|
+
export interface ContextSlice {
|
|
8
|
+
items: string[];
|
|
9
|
+
tokenEstimate: number;
|
|
10
|
+
}
|
|
11
|
+
export type ContextLayer = "L1" | "L2" | "L3";
|
|
12
|
+
export interface ContextAnchorItem {
|
|
13
|
+
id: string;
|
|
14
|
+
type: GraphNode["type"];
|
|
15
|
+
layer: ContextLayer;
|
|
16
|
+
}
|
|
17
|
+
export interface LayeredContextPackage {
|
|
18
|
+
summaryChannel: string[];
|
|
19
|
+
anchorChannel: ContextAnchorItem[];
|
|
20
|
+
tokenEstimate: number;
|
|
21
|
+
truncated: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface LayeredPackageOptions {
|
|
24
|
+
layerQuota?: {
|
|
25
|
+
l1: number;
|
|
26
|
+
l2: number;
|
|
27
|
+
l3: number;
|
|
28
|
+
};
|
|
29
|
+
enableEdgeExpansion?: boolean;
|
|
30
|
+
enableVectorRecall?: boolean;
|
|
31
|
+
embeddingProvider?: EmbeddingProvider;
|
|
32
|
+
vectorTopK?: number;
|
|
33
|
+
vectorMinSimilarity?: number;
|
|
34
|
+
/** Use HNSW ANN index for large candidate sets (>=200 nodes). Default true. */
|
|
35
|
+
enableHnsw?: boolean;
|
|
36
|
+
/** Enable graph-structure compression (edge weights, PageRank, connected subgraph). */
|
|
37
|
+
enableGraphCompression?: boolean;
|
|
38
|
+
graphCompressionOptions?: ConnectedSubgraphOptions;
|
|
39
|
+
/** Enable semantic compression via minicpm-1b (clustering, summarization, densification). */
|
|
40
|
+
enableSemanticCompression?: boolean;
|
|
41
|
+
clusteringOptions?: ClusteringOptions;
|
|
42
|
+
summarizerOptions?: SummarizerOptions;
|
|
43
|
+
densifierOptions?: DensifierOptions;
|
|
44
|
+
/** Unified compression model handle (auto-selects external economy tier or embedded minicpm). */
|
|
45
|
+
compressionModel?: CompressionModelHandle;
|
|
46
|
+
/** Return RepoMap overview if token budget is low. */
|
|
47
|
+
enableRepoMapFallback?: boolean;
|
|
48
|
+
/** Adaptive budget estimation based on task complexity. */
|
|
49
|
+
taskMode?: TaskMode;
|
|
50
|
+
}
|
|
51
|
+
export interface SubgraphExpansionOptions {
|
|
52
|
+
hops?: number;
|
|
53
|
+
maxNodes?: number;
|
|
54
|
+
relations?: GraphEdge["relation"][];
|
|
55
|
+
}
|
|
56
|
+
export interface ContextRefillManager {
|
|
57
|
+
initialPackage(query: string): Promise<LayeredContextPackage>;
|
|
58
|
+
refill(evidenceHints: string[]): Promise<string[]>;
|
|
59
|
+
}
|
|
60
|
+
export declare const DEFAULT_EXPANSION_RELATIONS: GraphEdge["relation"][];
|
|
61
|
+
export declare const ARCHITECTURE_QUERY: RegExp;
|
|
62
|
+
//# sourceMappingURL=context-slicer-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-slicer-types.d.ts","sourceRoot":"","sources":["../../src/graph/context-slicer-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uFAAuF;IACvF,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,wBAAwB,CAAC;IACnD,6FAA6F;IAC7F,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,sDAAsD;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC9D,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,2BAA2B,EAAE,SAAS,CAAC,UAAU,CAAC,EAO9D,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAA+C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ARCHITECTURE_QUERY = exports.DEFAULT_EXPANSION_RELATIONS = void 0;
|
|
4
|
+
exports.DEFAULT_EXPANSION_RELATIONS = [
|
|
5
|
+
"references",
|
|
6
|
+
"imports",
|
|
7
|
+
"depends_on",
|
|
8
|
+
"prerequisite",
|
|
9
|
+
"calls",
|
|
10
|
+
"defines",
|
|
11
|
+
];
|
|
12
|
+
exports.ARCHITECTURE_QUERY = /architecture|refactor|module|design|架构|模块/i;
|
|
13
|
+
//# sourceMappingURL=context-slicer-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-slicer-types.js","sourceRoot":"","sources":["../../src/graph/context-slicer-types.ts"],"names":[],"mappings":";;;AAmEa,QAAA,2BAA2B,GAA4B;IAClE,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,cAAc;IACd,OAAO;IACP,SAAS;CACV,CAAC;AAEW,QAAA,kBAAkB,GAAG,4CAA4C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { GraphNode } from "../core/types.js";
|
|
2
|
+
import type { ContextLayer, ContextAnchorItem } from "./context-slicer-types.js";
|
|
3
|
+
export declare function getEncoder(): ((text: string) => number[]) | null;
|
|
4
|
+
export declare function estimateTokens(text: string): number;
|
|
5
|
+
export declare function summarizeNodes(nodes: GraphNode[]): string[];
|
|
6
|
+
export declare function classifyLayer(node: GraphNode): ContextLayer;
|
|
7
|
+
export declare function canUseLayer(layer: ContextLayer, quota: {
|
|
8
|
+
l1: number;
|
|
9
|
+
l2: number;
|
|
10
|
+
l3: number;
|
|
11
|
+
}, used: {
|
|
12
|
+
l1: number;
|
|
13
|
+
l2: number;
|
|
14
|
+
l3: number;
|
|
15
|
+
}): boolean;
|
|
16
|
+
export declare function markLayerUsed(layer: ContextLayer, used: {
|
|
17
|
+
l1: number;
|
|
18
|
+
l2: number;
|
|
19
|
+
l3: number;
|
|
20
|
+
}): void;
|
|
21
|
+
export declare function modulePathKey(relPath: string): string;
|
|
22
|
+
export declare function deriveModuleId(anchor: ContextAnchorItem, node?: GraphNode): string | undefined;
|
|
23
|
+
export declare function extractFileFromSymbolId(id: string): string | undefined;
|
|
24
|
+
//# sourceMappingURL=context-slicer-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-slicer-utils.d.ts","sourceRoot":"","sources":["../../src/graph/context-slicer-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAKjF,wBAAgB,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,CAyBhE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAE3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CAU3D;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAC7C,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAUT;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYrG;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAgB9F;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUtE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getEncoder = getEncoder;
|
|
4
|
+
exports.estimateTokens = estimateTokens;
|
|
5
|
+
exports.summarizeNodes = summarizeNodes;
|
|
6
|
+
exports.classifyLayer = classifyLayer;
|
|
7
|
+
exports.canUseLayer = canUseLayer;
|
|
8
|
+
exports.markLayerUsed = markLayerUsed;
|
|
9
|
+
exports.modulePathKey = modulePathKey;
|
|
10
|
+
exports.deriveModuleId = deriveModuleId;
|
|
11
|
+
exports.extractFileFromSymbolId = extractFileFromSymbolId;
|
|
12
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
13
|
+
let encoderFn = null;
|
|
14
|
+
let encoderLoaded = false;
|
|
15
|
+
function getEncoder() {
|
|
16
|
+
if (encoderLoaded)
|
|
17
|
+
return encoderFn;
|
|
18
|
+
encoderLoaded = true;
|
|
19
|
+
try {
|
|
20
|
+
const mod = require("gpt-tokenizer/encoding/o200k_base");
|
|
21
|
+
if (typeof mod.encode === "function") {
|
|
22
|
+
encoderFn = mod.encode.bind(mod);
|
|
23
|
+
return encoderFn;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
logger_js_1.logger.error({ error }, "Caught error");
|
|
28
|
+
// fall through
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const mod = require("gpt-tokenizer");
|
|
32
|
+
if (typeof mod.encode === "function") {
|
|
33
|
+
encoderFn = mod.encode.bind(mod);
|
|
34
|
+
return encoderFn;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
logger_js_1.logger.error({ error }, "Caught error");
|
|
39
|
+
// fall through
|
|
40
|
+
}
|
|
41
|
+
encoderFn = null;
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
function estimateTokens(text) {
|
|
45
|
+
const enc = getEncoder();
|
|
46
|
+
if (enc) {
|
|
47
|
+
try {
|
|
48
|
+
const n = enc(text).length;
|
|
49
|
+
return Math.max(1, n);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger_js_1.logger.error({ error }, "Caught error");
|
|
53
|
+
// fall back below
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return Math.max(1, Math.ceil(text.length / 4));
|
|
57
|
+
}
|
|
58
|
+
function summarizeNodes(nodes) {
|
|
59
|
+
return nodes.map((node) => `${node.type}(${node.id})`);
|
|
60
|
+
}
|
|
61
|
+
function classifyLayer(node) {
|
|
62
|
+
if (node.type === "File" || node.type === "Symbol") {
|
|
63
|
+
return "L1";
|
|
64
|
+
}
|
|
65
|
+
if (node.type === "Module") {
|
|
66
|
+
return "L2";
|
|
67
|
+
}
|
|
68
|
+
return "L3";
|
|
69
|
+
}
|
|
70
|
+
function canUseLayer(layer, quota, used) {
|
|
71
|
+
if (layer === "L1") {
|
|
72
|
+
return used.l1 < quota.l1;
|
|
73
|
+
}
|
|
74
|
+
if (layer === "L2") {
|
|
75
|
+
return used.l2 < quota.l2;
|
|
76
|
+
}
|
|
77
|
+
return used.l3 < quota.l3;
|
|
78
|
+
}
|
|
79
|
+
function markLayerUsed(layer, used) {
|
|
80
|
+
if (layer === "L1") {
|
|
81
|
+
used.l1 += 1;
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (layer === "L2") {
|
|
85
|
+
used.l2 += 1;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
used.l3 += 1;
|
|
89
|
+
}
|
|
90
|
+
function modulePathKey(relPath) {
|
|
91
|
+
return relPath.replace(/\.(ts|tsx|js|jsx|md|json|py|rs|go|hpp|hxx|cpp|cxx|cc|h|c|java|rb|rake|gemspec)$/i, "");
|
|
92
|
+
}
|
|
93
|
+
function deriveModuleId(anchor, node) {
|
|
94
|
+
if (anchor.type === "File" && anchor.id.startsWith("file:")) {
|
|
95
|
+
return `module:${modulePathKey(anchor.id.slice("file:".length))}`;
|
|
96
|
+
}
|
|
97
|
+
if (anchor.type === "Symbol") {
|
|
98
|
+
const filePath = typeof node?.metadata?.file === "string"
|
|
99
|
+
? node.metadata.file
|
|
100
|
+
: extractFileFromSymbolId(anchor.id);
|
|
101
|
+
if (filePath) {
|
|
102
|
+
return `module:${modulePathKey(filePath)}`;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
function extractFileFromSymbolId(id) {
|
|
108
|
+
if (!id.startsWith("symbol:")) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
const body = id.slice("symbol:".length);
|
|
112
|
+
const hashIndex = body.lastIndexOf(":");
|
|
113
|
+
if (hashIndex > 0) {
|
|
114
|
+
return body.slice(0, hashIndex);
|
|
115
|
+
}
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=context-slicer-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-slicer-utils.js","sourceRoot":"","sources":["../../src/graph/context-slicer-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +1,14 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
import type { CompressionModelHandle } from "./compression-model";
|
|
8
|
-
export interface ContextSlice {
|
|
9
|
-
items: string[];
|
|
10
|
-
tokenEstimate: number;
|
|
11
|
-
}
|
|
12
|
-
export type ContextLayer = "L1" | "L2" | "L3";
|
|
13
|
-
export interface ContextAnchorItem {
|
|
14
|
-
id: string;
|
|
15
|
-
type: GraphNode["type"];
|
|
16
|
-
layer: ContextLayer;
|
|
17
|
-
}
|
|
18
|
-
export interface LayeredContextPackage {
|
|
19
|
-
summaryChannel: string[];
|
|
20
|
-
anchorChannel: ContextAnchorItem[];
|
|
21
|
-
tokenEstimate: number;
|
|
22
|
-
truncated: boolean;
|
|
23
|
-
}
|
|
24
|
-
export interface LayeredPackageOptions {
|
|
25
|
-
layerQuota?: {
|
|
26
|
-
l1: number;
|
|
27
|
-
l2: number;
|
|
28
|
-
l3: number;
|
|
29
|
-
};
|
|
30
|
-
enableEdgeExpansion?: boolean;
|
|
31
|
-
enableVectorRecall?: boolean;
|
|
32
|
-
embeddingProvider?: EmbeddingProvider;
|
|
33
|
-
vectorTopK?: number;
|
|
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;
|
|
51
|
-
}
|
|
52
|
-
export interface SubgraphExpansionOptions {
|
|
53
|
-
hops?: number;
|
|
54
|
-
maxNodes?: number;
|
|
55
|
-
relations?: GraphEdge["relation"][];
|
|
56
|
-
}
|
|
1
|
+
import type { GraphNode } from "../core/types.js";
|
|
2
|
+
import type { GraphClient } from "./client-factory.js";
|
|
3
|
+
export type { ContextSlice, ContextLayer, ContextAnchorItem, LayeredContextPackage, LayeredPackageOptions, SubgraphExpansionOptions, ContextRefillManager, } from "./context-slicer-types.js";
|
|
4
|
+
export { DEFAULT_EXPANSION_RELATIONS, ARCHITECTURE_QUERY, } from "./context-slicer-types.js";
|
|
5
|
+
export { getEncoder, estimateTokens, summarizeNodes, classifyLayer, canUseLayer, markLayerUsed, modulePathKey, deriveModuleId, extractFileFromSymbolId, } from "./context-slicer-utils.js";
|
|
6
|
+
import type { ContextSlice, LayeredContextPackage, LayeredPackageOptions, SubgraphExpansionOptions, ContextRefillManager } from "./context-slicer-types.js";
|
|
57
7
|
export declare function expandSubgraph(client: GraphClient, seedIds: string[], options?: SubgraphExpansionOptions): Promise<GraphNode[]>;
|
|
58
8
|
export declare function buildContextSlice(client: GraphClient, query: string, maxTokens: number): Promise<ContextSlice>;
|
|
59
9
|
export declare function vectorRecall(nodes: GraphNode[], queryEmbedding: number[], topK: number, minSimilarity: number): GraphNode[];
|
|
60
10
|
export declare function buildLayeredContextPackage(client: GraphClient, query: string, maxTokens: number, options?: LayeredPackageOptions): Promise<LayeredContextPackage>;
|
|
61
|
-
export interface ContextRefillManager {
|
|
62
|
-
initialPackage(query: string): Promise<LayeredContextPackage>;
|
|
63
|
-
refill(evidenceHints: string[]): Promise<string[]>;
|
|
64
|
-
}
|
|
65
11
|
export declare function createContextRefillManager(client: GraphClient, maxTokens: number, options?: LayeredPackageOptions): ContextRefillManager;
|
|
66
|
-
export declare function summarizeNodes(nodes: GraphNode[]): string[];
|
|
67
12
|
/**
|
|
68
13
|
* Enhanced context packaging with graph-structure compression, semantic
|
|
69
14
|
* compression (minicpm-1b), and adaptive budgeting.
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"context-slicer.d.ts","sourceRoot":"","sources":["../../src/graph/context-slicer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAcvD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAYnC,OAAO,KAAK,EACV,YAAY,EAEZ,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAGnC,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC,CAyBtB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAGvB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,cAAc,EAAE,MAAM,EAAE,EACxB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GACpB,SAAS,EAAE,CAWb;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAoJhC;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,oBAAoB,CAsCtB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAyJhC"}
|