@roarpeng/graphflow 0.6.15 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +54 -1
  3. package/README.md +149 -44
  4. package/dist/agents/insight.d.ts +83 -0
  5. package/dist/agents/insight.d.ts.map +1 -0
  6. package/dist/agents/insight.js +381 -0
  7. package/dist/agents/insight.js.map +1 -0
  8. package/dist/agents/validator.d.ts.map +1 -1
  9. package/dist/agents/validator.js +19 -8
  10. package/dist/agents/validator.js.map +1 -1
  11. package/dist/agents/worker.d.ts.map +1 -1
  12. package/dist/agents/worker.js +3 -2
  13. package/dist/agents/worker.js.map +1 -1
  14. package/dist/config/defaults.js +1 -1
  15. package/dist/config/defaults.js.map +1 -1
  16. package/dist/config/discover-workspace.d.ts +16 -0
  17. package/dist/config/discover-workspace.d.ts.map +1 -0
  18. package/dist/config/discover-workspace.js +112 -0
  19. package/dist/config/discover-workspace.js.map +1 -0
  20. package/dist/config/resolve.d.ts.map +1 -1
  21. package/dist/config/resolve.js +22 -8
  22. package/dist/config/resolve.js.map +1 -1
  23. package/dist/config/scaffold.d.ts.map +1 -1
  24. package/dist/config/scaffold.js +2 -1
  25. package/dist/config/scaffold.js.map +1 -1
  26. package/dist/config/schema.d.ts +31 -0
  27. package/dist/config/schema.d.ts.map +1 -1
  28. package/dist/config/workspace-root.d.ts +24 -0
  29. package/dist/config/workspace-root.d.ts.map +1 -0
  30. package/dist/config/workspace-root.js +59 -0
  31. package/dist/config/workspace-root.js.map +1 -0
  32. package/dist/core/orchestrator.d.ts +7 -0
  33. package/dist/core/orchestrator.d.ts.map +1 -1
  34. package/dist/core/orchestrator.js +54 -3
  35. package/dist/core/orchestrator.js.map +1 -1
  36. package/dist/core/state-machine.d.ts +1 -0
  37. package/dist/core/state-machine.d.ts.map +1 -1
  38. package/dist/core/state-machine.js +20 -0
  39. package/dist/core/state-machine.js.map +1 -1
  40. package/dist/core/types.d.ts +9 -3
  41. package/dist/core/types.d.ts.map +1 -1
  42. package/dist/graph/adaptive-budget.d.ts +18 -0
  43. package/dist/graph/adaptive-budget.d.ts.map +1 -0
  44. package/dist/graph/adaptive-budget.js +50 -0
  45. package/dist/graph/adaptive-budget.js.map +1 -0
  46. package/dist/graph/artifact-manager.d.ts +72 -0
  47. package/dist/graph/artifact-manager.d.ts.map +1 -0
  48. package/dist/graph/artifact-manager.js +215 -0
  49. package/dist/graph/artifact-manager.js.map +1 -0
  50. package/dist/graph/compression-model.d.ts +52 -0
  51. package/dist/graph/compression-model.d.ts.map +1 -0
  52. package/dist/graph/compression-model.js +125 -0
  53. package/dist/graph/compression-model.js.map +1 -0
  54. package/dist/graph/context-slicer.d.ts +32 -0
  55. package/dist/graph/context-slicer.d.ts.map +1 -1
  56. package/dist/graph/context-slicer.js +159 -1
  57. package/dist/graph/context-slicer.js.map +1 -1
  58. package/dist/graph/file-indexer.d.ts +31 -0
  59. package/dist/graph/file-indexer.d.ts.map +1 -1
  60. package/dist/graph/file-indexer.js +332 -3
  61. package/dist/graph/file-indexer.js.map +1 -1
  62. package/dist/graph/graph-compression.d.ts +44 -0
  63. package/dist/graph/graph-compression.d.ts.map +1 -0
  64. package/dist/graph/graph-compression.js +155 -0
  65. package/dist/graph/graph-compression.js.map +1 -0
  66. package/dist/graph/graph-utils.d.ts +4 -1
  67. package/dist/graph/graph-utils.d.ts.map +1 -1
  68. package/dist/graph/graph-utils.js +62 -0
  69. package/dist/graph/graph-utils.js.map +1 -1
  70. package/dist/graph/graphify-file-client.d.ts.map +1 -1
  71. package/dist/graph/graphify-file-client.js +30 -8
  72. package/dist/graph/graphify-file-client.js.map +1 -1
  73. package/dist/graph/language-indexers/c-cpp.d.ts +9 -1
  74. package/dist/graph/language-indexers/c-cpp.d.ts.map +1 -1
  75. package/dist/graph/language-indexers/c-cpp.js +328 -103
  76. package/dist/graph/language-indexers/c-cpp.js.map +1 -1
  77. package/dist/graph/language-indexers/index.d.ts +20 -0
  78. package/dist/graph/language-indexers/index.d.ts.map +1 -1
  79. package/dist/graph/language-indexers/index.js +4 -0
  80. package/dist/graph/language-indexers/index.js.map +1 -1
  81. package/dist/graph/language-indexers/java.d.ts +12 -0
  82. package/dist/graph/language-indexers/java.d.ts.map +1 -0
  83. package/dist/graph/language-indexers/java.js +273 -0
  84. package/dist/graph/language-indexers/java.js.map +1 -0
  85. package/dist/graph/language-indexers/python.d.ts.map +1 -1
  86. package/dist/graph/language-indexers/python.js +47 -4
  87. package/dist/graph/language-indexers/python.js.map +1 -1
  88. package/dist/graph/language-indexers/ruby.d.ts +14 -0
  89. package/dist/graph/language-indexers/ruby.d.ts.map +1 -0
  90. package/dist/graph/language-indexers/ruby.js +245 -0
  91. package/dist/graph/language-indexers/ruby.js.map +1 -0
  92. package/dist/graph/language-indexers/rust.d.ts +10 -1
  93. package/dist/graph/language-indexers/rust.d.ts.map +1 -1
  94. package/dist/graph/language-indexers/rust.js +254 -80
  95. package/dist/graph/language-indexers/rust.js.map +1 -1
  96. package/dist/graph/language-indexers/tree-sitter-loader.d.ts +8 -1
  97. package/dist/graph/language-indexers/tree-sitter-loader.d.ts.map +1 -1
  98. package/dist/graph/language-indexers/tree-sitter-loader.js +64 -13
  99. package/dist/graph/language-indexers/tree-sitter-loader.js.map +1 -1
  100. package/dist/graph/language-indexers/typescript.d.ts.map +1 -1
  101. package/dist/graph/language-indexers/typescript.js +72 -8
  102. package/dist/graph/language-indexers/typescript.js.map +1 -1
  103. package/dist/graph/metrics.d.ts +33 -0
  104. package/dist/graph/metrics.d.ts.map +1 -0
  105. package/dist/graph/metrics.js +117 -0
  106. package/dist/graph/metrics.js.map +1 -0
  107. package/dist/graph/repo-map.d.ts +25 -0
  108. package/dist/graph/repo-map.d.ts.map +1 -0
  109. package/dist/graph/repo-map.js +80 -0
  110. package/dist/graph/repo-map.js.map +1 -0
  111. package/dist/graph/semantic-compression.d.ts +65 -0
  112. package/dist/graph/semantic-compression.d.ts.map +1 -0
  113. package/dist/graph/semantic-compression.js +173 -0
  114. package/dist/graph/semantic-compression.js.map +1 -0
  115. package/dist/graph/token-savings.d.ts +52 -0
  116. package/dist/graph/token-savings.d.ts.map +1 -0
  117. package/dist/graph/token-savings.js +113 -0
  118. package/dist/graph/token-savings.js.map +1 -0
  119. package/dist/index.d.ts +2 -1
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +7 -1
  122. package/dist/index.js.map +1 -1
  123. package/dist/integrations/agent-mcp-installer.d.ts +13 -0
  124. package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
  125. package/dist/integrations/agent-mcp-installer.js +287 -29
  126. package/dist/integrations/agent-mcp-installer.js.map +1 -1
  127. package/dist/learning/episodic-memory.d.ts +8 -1
  128. package/dist/learning/episodic-memory.d.ts.map +1 -1
  129. package/dist/learning/episodic-memory.js +33 -0
  130. package/dist/learning/episodic-memory.js.map +1 -1
  131. package/dist/learning/hnsw-index.d.ts +46 -0
  132. package/dist/learning/hnsw-index.d.ts.map +1 -0
  133. package/dist/learning/hnsw-index.js +138 -0
  134. package/dist/learning/hnsw-index.js.map +1 -0
  135. package/dist/routing/model-router.d.ts +7 -0
  136. package/dist/routing/model-router.d.ts.map +1 -1
  137. package/dist/routing/model-router.js +36 -0
  138. package/dist/routing/model-router.js.map +1 -1
  139. package/dist/skills/index.d.ts +157 -0
  140. package/dist/skills/index.d.ts.map +1 -0
  141. package/dist/skills/index.js +157 -0
  142. package/dist/skills/index.js.map +1 -0
  143. package/dist/surfaces/cli/index.js +119 -0
  144. package/dist/surfaces/cli/index.js.map +1 -1
  145. package/dist/surfaces/cli/output.d.ts.map +1 -1
  146. package/dist/surfaces/cli/output.js +7 -0
  147. package/dist/surfaces/cli/output.js.map +1 -1
  148. package/dist/surfaces/cli/runtime/graph.d.ts +77 -3
  149. package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
  150. package/dist/surfaces/cli/runtime/graph.js +170 -10
  151. package/dist/surfaces/cli/runtime/graph.js.map +1 -1
  152. package/dist/surfaces/cli/runtime/panel.d.ts.map +1 -1
  153. package/dist/surfaces/cli/runtime/panel.js +2 -0
  154. package/dist/surfaces/cli/runtime/panel.js.map +1 -1
  155. package/dist/surfaces/cli/runtime/routing.d.ts +24 -1
  156. package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
  157. package/dist/surfaces/cli/runtime/routing.js +72 -0
  158. package/dist/surfaces/cli/runtime/routing.js.map +1 -1
  159. package/dist/surfaces/cli/runtime/settings.d.ts.map +1 -1
  160. package/dist/surfaces/cli/runtime/settings.js +4 -1
  161. package/dist/surfaces/cli/runtime/settings.js.map +1 -1
  162. package/dist/surfaces/cli/runtime/types.d.ts +36 -0
  163. package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
  164. package/dist/surfaces/cli/runtime.d.ts +2 -2
  165. package/dist/surfaces/cli/runtime.d.ts.map +1 -1
  166. package/dist/surfaces/cli/runtime.js +11 -1
  167. package/dist/surfaces/cli/runtime.js.map +1 -1
  168. package/dist/surfaces/mcp/server.d.ts.map +1 -1
  169. package/dist/surfaces/mcp/server.js +145 -4
  170. package/dist/surfaces/mcp/server.js.map +1 -1
  171. package/dist/utils/logger.js +1 -1
  172. package/dist/utils/logger.js.map +1 -1
  173. package/package.json +6 -2
  174. package/scripts/safe-postinstall.cjs +167 -12
  175. package/src/surfaces/trae-skill/graphflow/SKILL.md +535 -0
  176. package/wasm/tree-sitter-c.wasm +0 -0
  177. package/wasm/tree-sitter-go.wasm +0 -0
  178. package/wasm/tree-sitter-java.wasm +0 -0
  179. package/wasm/tree-sitter-python.wasm +0 -0
  180. package/wasm/tree-sitter-ruby.wasm +0 -0
  181. package/wasm/tree-sitter-rust.wasm +0 -0
@@ -31,6 +31,8 @@ function extractFromAst(relPath, content, ts) {
31
31
  const sourceFile = ts.createSourceFile(relPath, content, ts.ScriptTarget.Latest, true, scriptKind);
32
32
  const symbols = [];
33
33
  const imports = [];
34
+ const calls = [];
35
+ const inherits = [];
34
36
  const estimateComplexity = (text) => {
35
37
  const hits = text.match(/\b(if|else if|for|while|case|catch|\&\&|\|\|)\b/g);
36
38
  return 1 + (hits?.length ?? 0);
@@ -94,12 +96,38 @@ function extractFromAst(relPath, content, ts) {
94
96
  const flags = ts.getCombinedModifierFlags(node);
95
97
  return (flags & ts.ModifierFlags.Export) !== 0;
96
98
  };
99
+ const extractHeritage = (node, childName, childLine) => {
100
+ if (!node.heritageClauses)
101
+ return;
102
+ for (const clause of node.heritageClauses) {
103
+ const isImplements = clause.token === ts.SyntaxKind.ImplementsKeyword;
104
+ const isExtends = clause.token === ts.SyntaxKind.ExtendsKeyword;
105
+ if (!isImplements && !isExtends)
106
+ continue;
107
+ for (const type of clause.types) {
108
+ const parentText = type.expression.getText(sourceFile);
109
+ if (parentText) {
110
+ inherits.push({
111
+ child: childName,
112
+ parent: parentText,
113
+ kind: isImplements ? "implements" : "extends",
114
+ line: childLine,
115
+ });
116
+ }
117
+ }
118
+ }
119
+ };
97
120
  for (const stmt of sourceFile.statements) {
98
121
  if (ts.isFunctionDeclaration(stmt)) {
99
122
  addDecl(stmt.name, "function", hasExport(stmt), stmt, declarationType(stmt));
100
123
  }
101
124
  else if (ts.isClassDeclaration(stmt)) {
102
125
  addDecl(stmt.name, "class", hasExport(stmt), stmt);
126
+ if (stmt.name && ts.isIdentifier(stmt.name)) {
127
+ const start = stmt.name.getStart(sourceFile);
128
+ const { line } = sourceFile.getLineAndCharacterOfPosition(start);
129
+ extractHeritage(stmt, stmt.name.text, line + 1);
130
+ }
103
131
  for (const member of stmt.members) {
104
132
  if (ts.isMethodDeclaration(member) && member.name && ts.isIdentifier(member.name)) {
105
133
  addDecl(member.name, "method", false, member, declarationType(member));
@@ -108,6 +136,11 @@ function extractFromAst(relPath, content, ts) {
108
136
  }
109
137
  else if (ts.isInterfaceDeclaration(stmt)) {
110
138
  addDecl(stmt.name, "interface", hasExport(stmt), stmt);
139
+ if (stmt.name && ts.isIdentifier(stmt.name)) {
140
+ const start = stmt.name.getStart(sourceFile);
141
+ const { line } = sourceFile.getLineAndCharacterOfPosition(start);
142
+ extractHeritage(stmt, stmt.name.text, line + 1);
143
+ }
111
144
  }
112
145
  else if (ts.isTypeAliasDeclaration(stmt)) {
113
146
  addDecl(stmt.name, "type", hasExport(stmt), stmt);
@@ -134,19 +167,50 @@ function extractFromAst(relPath, content, ts) {
134
167
  imports.push({ module: spec.text, raw: spec.text });
135
168
  }
136
169
  }
137
- const visit = (node) => {
170
+ const extractCalleeName = (expr) => {
171
+ if (ts.isIdentifier(expr))
172
+ return expr.text;
173
+ if (ts.isPropertyAccessExpression(expr)) {
174
+ // e.g. obj.method() → "method"
175
+ return expr.name.text;
176
+ }
177
+ if (ts.isElementAccessExpression(expr)) {
178
+ return undefined;
179
+ }
180
+ return undefined;
181
+ };
182
+ const visit = (node, caller) => {
138
183
  if (ts.isCallExpression(node)) {
139
184
  const callee = node.expression;
140
- if (ts.isIdentifier(callee) && callee.text === "require" && node.arguments.length > 0) {
141
- const arg = node.arguments[0];
142
- if (arg && ts.isStringLiteral(arg))
143
- imports.push({ module: arg.text, raw: arg.text });
185
+ // require() calls are already captured as imports
186
+ if (!(ts.isIdentifier(callee) && callee.text === "require")) {
187
+ const calleeName = extractCalleeName(callee);
188
+ if (calleeName) {
189
+ const start = callee.getStart(sourceFile);
190
+ const { line } = sourceFile.getLineAndCharacterOfPosition(start);
191
+ calls.push({
192
+ callee: calleeName,
193
+ ...(caller ? { caller } : {}),
194
+ line: line + 1,
195
+ });
196
+ }
144
197
  }
145
198
  }
146
- ts.forEachChild(node, visit);
199
+ // Track enclosing function/method for call attribution
200
+ let nextCaller = caller;
201
+ if (ts.isFunctionDeclaration(node) && node.name && ts.isIdentifier(node.name)) {
202
+ nextCaller = node.name.text;
203
+ }
204
+ else if (ts.isMethodDeclaration(node) && node.name && ts.isIdentifier(node.name)) {
205
+ nextCaller = node.name.text;
206
+ }
207
+ else if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {
208
+ // Anonymous — keep parent caller context
209
+ }
210
+ ts.forEachChild(node, (child) => visit(child, nextCaller));
147
211
  };
148
- ts.forEachChild(sourceFile, visit);
149
- return { symbols, imports };
212
+ ts.forEachChild(sourceFile, (child) => visit(child));
213
+ return { symbols, imports, calls, inherits };
150
214
  }
151
215
  function fallbackExtract(relPath, content) {
152
216
  const lines = content.split(/\r?\n/);
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/graph/language-indexers/typescript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/graph/language-indexers/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { GraphFlowConfig } from "../config/schema";
2
+ /**
3
+ * Prometheus-compatible metrics exporter.
4
+ *
5
+ * Exposes cumulative GraphFlow observability metrics in Prometheus text format.
6
+ * Borrowed from codebase-memory-mcp's observability pattern — enables teams to
7
+ * scrape GraphFlow ROI (token savings, graph size, compression ratio) from a
8
+ * standard /metrics endpoint or CLI dump.
9
+ *
10
+ * Metrics exposed:
11
+ * - graphflow_token_savings_total (counter) cumulative tokens saved
12
+ * - graphflow_token_raw_total (counter) cumulative raw tokens
13
+ * - graphflow_token_compressed_total (counter) cumulative compressed tokens
14
+ * - graphflow_token_savings_percent (gauge) average savings ratio
15
+ * - graphflow_runs_total (counter) cumulative preview/run count
16
+ * - graphflow_graph_nodes (gauge) current graph node count
17
+ * - graphflow_graph_edges (gauge) current graph edge count
18
+ * - graphflow_compression_ratio (gauge) compressed/raw ratio
19
+ * - graphflow_index_store_bytes (gauge) graph store file size in bytes
20
+ * - graphflow_index_cache_entries (gauge) index cache file count
21
+ */
22
+ export interface MetricsSnapshot {
23
+ metrics: Record<string, number>;
24
+ labels: Record<string, string>;
25
+ text: string;
26
+ }
27
+ /**
28
+ * Collect current metrics snapshot.
29
+ *
30
+ * @param config GraphFlow config
31
+ */
32
+ export declare function collectMetrics(config: GraphFlowConfig): MetricsSnapshot;
33
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/graph/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAqBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAgEvE"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collectMetrics = collectMetrics;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const paths_1 = require("../config/paths");
7
+ const token_savings_1 = require("./token-savings");
8
+ const helpers_1 = require("../surfaces/cli/runtime/helpers");
9
+ const METRIC_DEFS = [
10
+ { name: "graphflow_token_savings_total", type: "counter", help: "Cumulative tokens saved by context compression" },
11
+ { name: "graphflow_token_raw_total", type: "counter", help: "Cumulative raw (uncompressed) tokens" },
12
+ { name: "graphflow_token_compressed_total", type: "counter", help: "Cumulative compressed tokens" },
13
+ { name: "graphflow_token_savings_percent", type: "gauge", help: "Average token savings percentage" },
14
+ { name: "graphflow_runs_total", type: "counter", help: "Cumulative preview/run invocations" },
15
+ { name: "graphflow_graph_nodes", type: "gauge", help: "Current graph node count" },
16
+ { name: "graphflow_graph_edges", type: "gauge", help: "Current graph edge count" },
17
+ { name: "graphflow_compression_ratio", type: "gauge", help: "Compressed/raw token ratio (0-1)" },
18
+ { name: "graphflow_index_store_bytes", type: "gauge", help: "Graph store file size in bytes" },
19
+ { name: "graphflow_index_cache_entries", type: "gauge", help: "Index cache entry count" },
20
+ ];
21
+ /**
22
+ * Collect current metrics snapshot.
23
+ *
24
+ * @param config GraphFlow config
25
+ */
26
+ function collectMetrics(config) {
27
+ const root = config.graphPolicy.workspaceRoot ?? process.cwd();
28
+ const stats = (0, token_savings_1.getSavingsStats)(config);
29
+ // Graph size from store
30
+ let nodeCount = 0;
31
+ let edgeCount = 0;
32
+ let storeBytes = 0;
33
+ try {
34
+ const store = (0, helpers_1.loadGraphStore)(config);
35
+ nodeCount = store.nodes.length;
36
+ edgeCount = store.edges.length;
37
+ }
38
+ catch {
39
+ // store may not exist yet
40
+ }
41
+ try {
42
+ const storePath = (0, paths_1.resolveGraphStorePath)(config);
43
+ if ((0, node_fs_1.existsSync)(storePath)) {
44
+ storeBytes = (0, node_fs_1.statSync)(storePath).size;
45
+ }
46
+ }
47
+ catch {
48
+ // ignore
49
+ }
50
+ // Index cache entries
51
+ let cacheEntries = 0;
52
+ try {
53
+ const cachePath = (0, node_path_1.join)(root, ".graphflow-cache", "index-state.json");
54
+ if ((0, node_fs_1.existsSync)(cachePath)) {
55
+ const raw = (0, node_fs_1.readFileSync)(cachePath, "utf8");
56
+ const parsed = JSON.parse(raw);
57
+ if (parsed.state && typeof parsed.state === "object") {
58
+ cacheEntries = Object.keys(parsed.state).length;
59
+ }
60
+ }
61
+ }
62
+ catch {
63
+ // ignore
64
+ }
65
+ const compressionRatio = stats.totalRawTokens > 0
66
+ ? stats.totalCompressedTokens / stats.totalRawTokens
67
+ : 0;
68
+ const metrics = {
69
+ graphflow_token_savings_total: stats.totalSavedTokens,
70
+ graphflow_token_raw_total: stats.totalRawTokens,
71
+ graphflow_token_compressed_total: stats.totalCompressedTokens,
72
+ graphflow_token_savings_percent: stats.averageSavingsPercent,
73
+ graphflow_runs_total: stats.totalRuns,
74
+ graphflow_graph_nodes: nodeCount,
75
+ graphflow_graph_edges: edgeCount,
76
+ graphflow_compression_ratio: compressionRatio,
77
+ graphflow_index_store_bytes: storeBytes,
78
+ graphflow_index_cache_entries: cacheEntries,
79
+ };
80
+ const labels = {
81
+ workspace: root.replace(/\\/g, "/"),
82
+ };
83
+ const text = renderPrometheusText(metrics, labels);
84
+ return { metrics, labels, text };
85
+ }
86
+ /**
87
+ * Render metrics in Prometheus text exposition format.
88
+ *
89
+ * Example output:
90
+ * # HELP graphflow_token_savings_total Cumulative tokens saved by context compression
91
+ * # TYPE graphflow_token_savings_total counter
92
+ * graphflow_token_savings_total{workspace="/repo"} 12345
93
+ */
94
+ function renderPrometheusText(metrics, labels) {
95
+ const labelStr = Object.entries(labels)
96
+ .map(([k, v]) => `${k}="${escapeLabelValue(v)}"`)
97
+ .join(",");
98
+ const lines = [];
99
+ for (const def of METRIC_DEFS) {
100
+ const value = metrics[def.name] ?? 0;
101
+ lines.push(`# HELP ${def.name} ${def.help}`);
102
+ lines.push(`# TYPE ${def.name} ${def.type}`);
103
+ lines.push(`${def.name}{${labelStr}} ${formatNumber(value)}`);
104
+ }
105
+ return lines.join("\n") + "\n";
106
+ }
107
+ function escapeLabelValue(value) {
108
+ return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n");
109
+ }
110
+ function formatNumber(value) {
111
+ if (Number.isInteger(value)) {
112
+ return value.toString();
113
+ }
114
+ // Prometheus accepts floating point; trim trailing zeros for readability
115
+ return parseFloat(value.toFixed(4)).toString();
116
+ }
117
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/graph/metrics.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"}