@nanonets/graft 0.4.5 → 0.5.1

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 (116) hide show
  1. package/README.md +60 -14
  2. package/dist/ai/crux.d.ts +20 -4
  3. package/dist/ai/crux.d.ts.map +1 -1
  4. package/dist/ai/crux.js +39 -41
  5. package/dist/ai/crux.js.map +1 -1
  6. package/dist/ai/llm/anthropic.d.ts +37 -0
  7. package/dist/ai/llm/anthropic.d.ts.map +1 -0
  8. package/dist/ai/llm/anthropic.js +141 -0
  9. package/dist/ai/llm/anthropic.js.map +1 -0
  10. package/dist/ai/llm/factory.d.ts +19 -0
  11. package/dist/ai/llm/factory.d.ts.map +1 -0
  12. package/dist/ai/llm/factory.js +20 -0
  13. package/dist/ai/llm/factory.js.map +1 -0
  14. package/dist/ai/llm/openai.d.ts +33 -0
  15. package/dist/ai/llm/openai.d.ts.map +1 -0
  16. package/dist/ai/llm/openai.js +146 -0
  17. package/dist/ai/llm/openai.js.map +1 -0
  18. package/dist/ai/llm/types.d.ts +113 -0
  19. package/dist/ai/llm/types.d.ts.map +1 -0
  20. package/dist/ai/llm/types.js +22 -0
  21. package/dist/ai/llm/types.js.map +1 -0
  22. package/dist/ai/providers.d.ts +37 -15
  23. package/dist/ai/providers.d.ts.map +1 -1
  24. package/dist/ai/providers.js +30 -5
  25. package/dist/ai/providers.js.map +1 -1
  26. package/dist/ai/summarize.d.ts +4 -4
  27. package/dist/ai/summarize.d.ts.map +1 -1
  28. package/dist/ai/summarize.js +6 -13
  29. package/dist/ai/summarize.js.map +1 -1
  30. package/dist/ai/synthesize.d.ts +12 -4
  31. package/dist/ai/synthesize.d.ts.map +1 -1
  32. package/dist/ai/synthesize.js +19 -34
  33. package/dist/ai/synthesize.js.map +1 -1
  34. package/dist/ask/ask.d.ts +33 -0
  35. package/dist/ask/ask.d.ts.map +1 -1
  36. package/dist/ask/ask.js +119 -9
  37. package/dist/ask/ask.js.map +1 -1
  38. package/dist/ask/fuse.d.ts +96 -0
  39. package/dist/ask/fuse.d.ts.map +1 -0
  40. package/dist/ask/fuse.js +184 -0
  41. package/dist/ask/fuse.js.map +1 -0
  42. package/dist/ask/graphrank.d.ts.map +1 -1
  43. package/dist/ask/graphrank.js +1 -13
  44. package/dist/ask/graphrank.js.map +1 -1
  45. package/dist/claude/format.d.ts +17 -0
  46. package/dist/claude/format.d.ts.map +1 -1
  47. package/dist/claude/format.js +49 -2
  48. package/dist/claude/format.js.map +1 -1
  49. package/dist/claude/hooks.d.ts.map +1 -1
  50. package/dist/claude/hooks.js +16 -15
  51. package/dist/claude/hooks.js.map +1 -1
  52. package/dist/claude/skill-template.d.ts.map +1 -1
  53. package/dist/claude/skill-template.js +28 -13
  54. package/dist/claude/skill-template.js.map +1 -1
  55. package/dist/claude/state.d.ts +4 -0
  56. package/dist/claude/state.d.ts.map +1 -1
  57. package/dist/claude/state.js +1 -1
  58. package/dist/claude/state.js.map +1 -1
  59. package/dist/cli.d.ts +2 -0
  60. package/dist/cli.d.ts.map +1 -1
  61. package/dist/cli.js +100 -9
  62. package/dist/cli.js.map +1 -1
  63. package/dist/engine.d.ts +5 -3
  64. package/dist/engine.d.ts.map +1 -1
  65. package/dist/engine.js +31 -20
  66. package/dist/engine.js.map +1 -1
  67. package/dist/graph/bindings.d.ts +42 -0
  68. package/dist/graph/bindings.d.ts.map +1 -0
  69. package/dist/graph/bindings.js +304 -0
  70. package/dist/graph/bindings.js.map +1 -0
  71. package/dist/graph/extract.d.ts +17 -1
  72. package/dist/graph/extract.d.ts.map +1 -1
  73. package/dist/graph/extract.js +47 -5
  74. package/dist/graph/extract.js.map +1 -1
  75. package/dist/graph/map.d.ts +71 -0
  76. package/dist/graph/map.d.ts.map +1 -0
  77. package/dist/graph/map.js +150 -0
  78. package/dist/graph/map.js.map +1 -0
  79. package/dist/graph/relations.d.ts +14 -0
  80. package/dist/graph/relations.d.ts.map +1 -0
  81. package/dist/graph/relations.js +8 -0
  82. package/dist/graph/relations.js.map +1 -0
  83. package/dist/graph/resolve.d.ts.map +1 -1
  84. package/dist/graph/resolve.js +0 -0
  85. package/dist/graph/resolve.js.map +1 -1
  86. package/dist/graph/scopes.d.ts +15 -0
  87. package/dist/graph/scopes.d.ts.map +1 -0
  88. package/dist/graph/scopes.js +346 -0
  89. package/dist/graph/scopes.js.map +1 -0
  90. package/dist/graph/traverse.d.ts.map +1 -1
  91. package/dist/graph/traverse.js +1 -12
  92. package/dist/graph/traverse.js.map +1 -1
  93. package/dist/hosts/instructions.d.ts.map +1 -1
  94. package/dist/hosts/instructions.js +13 -6
  95. package/dist/hosts/instructions.js.map +1 -1
  96. package/dist/index.d.ts +9 -3
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +8 -4
  99. package/dist/index.js.map +1 -1
  100. package/dist/mcp/server.d.ts +1 -1
  101. package/dist/mcp/server.d.ts.map +1 -1
  102. package/dist/mcp/server.js +2 -2
  103. package/dist/mcp/server.js.map +1 -1
  104. package/dist/mcp/tools.d.ts +1 -1
  105. package/dist/mcp/tools.d.ts.map +1 -1
  106. package/dist/mcp/tools.js +80 -7
  107. package/dist/mcp/tools.js.map +1 -1
  108. package/dist/search/grep-cli.d.ts +32 -0
  109. package/dist/search/grep-cli.d.ts.map +1 -0
  110. package/dist/search/grep-cli.js +101 -0
  111. package/dist/search/grep-cli.js.map +1 -0
  112. package/dist/search/grep.d.ts +55 -0
  113. package/dist/search/grep.d.ts.map +1 -0
  114. package/dist/search/grep.js +126 -0
  115. package/dist/search/grep.js.map +1 -0
  116. package/package.json +2 -1
@@ -0,0 +1,304 @@
1
+ /** Variable/field → bare type name, keyed by scope. Scope keys mirror
2
+ * extract.ts's own scope stack (`scope.join(".")`, `""` at module level) so a
3
+ * lookup from extract.ts's walk finds exactly what was bound in the same
4
+ * lexical position. */
5
+ export class FileBindings {
6
+ map = new Map();
7
+ set(scopePath, name, type) {
8
+ this.map.set(`${scopePath}|${name}`, type);
9
+ }
10
+ /** Innermost-first: for scope ["a","b"] name "x", tries `a.b|x`, `a|x`, `|x`. */
11
+ lookup(scope, name) {
12
+ for (let i = scope.length; i >= 0; i--) {
13
+ const hit = this.map.get(`${scope.slice(0, i).join(".")}|${name}`);
14
+ if (hit)
15
+ return hit;
16
+ }
17
+ return null;
18
+ }
19
+ }
20
+ const FN_VALUE_TYPES = new Set(["arrow_function", "function", "function_expression", "generator_function"]);
21
+ /** Definition-node types that push a new scope segment, mirroring extract.ts's
22
+ * `describe()` closely enough to keep the two scope stacks in lockstep — but
23
+ * duplicated here (not imported) to keep bindings.ts free of a value import on
24
+ * extract.ts. Returns the def's scope segment (bare name, except a Go method
25
+ * which is receiver-qualified — `Receiver.method` — exactly like extract.ts's
26
+ * `idName`, so a binding recorded inside a Go method body is stored under the
27
+ * same scope key extract.ts's walk will look it up with), or null if `node`
28
+ * isn't a definition. */
29
+ export function defName(node, lang) {
30
+ if (lang === "go") {
31
+ if (node.type === "method_declaration") {
32
+ const name = node.childForFieldName("name")?.text;
33
+ if (!name)
34
+ return null;
35
+ const recv = goReceiverTypeOf(node);
36
+ return recv ? `${recv}.${name}` : name;
37
+ }
38
+ if (node.type === "function_declaration" || node.type === "type_spec") {
39
+ return node.childForFieldName("name")?.text ?? null;
40
+ }
41
+ return null;
42
+ }
43
+ const defTypes = lang === "python"
44
+ ? new Set(["class_definition", "function_definition"])
45
+ : new Set([
46
+ "class_declaration",
47
+ "abstract_class_declaration",
48
+ "function_declaration",
49
+ "generator_function_declaration",
50
+ "method_definition",
51
+ "interface_declaration",
52
+ "type_alias_declaration",
53
+ "enum_declaration",
54
+ ]);
55
+ if (defTypes.has(node.type))
56
+ return node.childForFieldName("name")?.text ?? null;
57
+ if ((lang === "typescript" || lang === "tsx") && node.type === "variable_declarator") {
58
+ const value = node.childForFieldName("value");
59
+ if (value && FN_VALUE_TYPES.has(value.type))
60
+ return node.childForFieldName("name")?.text ?? null;
61
+ }
62
+ return null;
63
+ }
64
+ /** The receiver parameter's own variable name for a Go method (`func (w *Worker) …`
65
+ * → `w`). Null if it can't be read. */
66
+ export function goReceiverVarOf(node) {
67
+ const recv = node.childForFieldName("receiver");
68
+ const param = recv?.namedChildren.find((c) => c.type === "parameter_declaration");
69
+ return param?.childForFieldName("name")?.text ?? null;
70
+ }
71
+ /** The receiver's base type name for a Go method, unwrapping a pointer receiver
72
+ * (`func (w *Worker) …` → `Worker`). Mirrors extract.ts's own `goReceiverType`
73
+ * (duplicated, not imported, per this file's no-value-import-of-extract rule).
74
+ * Null if it can't be read. */
75
+ function goReceiverTypeOf(node) {
76
+ const recv = node.childForFieldName("receiver");
77
+ const param = recv?.namedChildren.find((c) => c.type === "parameter_declaration");
78
+ let type = param?.childForFieldName("type");
79
+ if (type?.type === "pointer_type")
80
+ type = type.namedChildren.at(-1) ?? null;
81
+ return type?.type === "type_identifier" ? type.text : null;
82
+ }
83
+ /** Resolves a call site's receiver text (from `calleeName`) to a bound type
84
+ * name, given the enclosing walk state. `self`/`cls`/`this`/the Go receiver
85
+ * var resolve directly to the enclosing class; anything else is a bindings-map
86
+ * lookup, normalizing `this.` to `self.` since both are stored the same way. */
87
+ export function resolveRecvType(receiver, ctx) {
88
+ if (!receiver)
89
+ return undefined;
90
+ if (receiver === "self" || receiver === "cls" || receiver === "this")
91
+ return ctx.enclosingClass ?? undefined;
92
+ if (receiver.startsWith("self.") || receiver.startsWith("this.")) {
93
+ return (ctx.bindings.lookup(ctx.scope, receiver) ??
94
+ ctx.bindings.lookup(ctx.scope, receiver.replace(/^this\./, "self.")) ??
95
+ undefined);
96
+ }
97
+ return ((ctx.lang === "go" && receiver === ctx.goReceiverVar ? ctx.enclosingClass : undefined) ??
98
+ ctx.bindings.lookup(ctx.scope, receiver) ??
99
+ undefined);
100
+ }
101
+ function isClassNode(node, lang) {
102
+ if (lang === "python")
103
+ return node.type === "class_definition";
104
+ if (lang === "typescript" || lang === "tsx") {
105
+ return node.type === "class_declaration" || node.type === "abstract_class_declaration";
106
+ }
107
+ return false;
108
+ }
109
+ /** Pass 1 over a parsed file: collect variable->type bindings. Pure. */
110
+ export function collectBindings(root, lang) {
111
+ const bindings = new FileBindings();
112
+ const aliases = new Map();
113
+ collectAliases(root, lang, aliases);
114
+ visit(root, lang, [], null, bindings, aliases);
115
+ return bindings;
116
+ }
117
+ /** Import aliases (`... as F`) can be declared anywhere relative to their use
118
+ * textually, so this scans the whole tree once, ahead of the scope-aware walk. */
119
+ function collectAliases(node, lang, aliases) {
120
+ if (lang === "python" && node.type === "aliased_import") {
121
+ const nameNode = node.childForFieldName("name");
122
+ const aliasNode = node.childForFieldName("alias");
123
+ if (nameNode && aliasNode) {
124
+ const orig = nameNode.type === "dotted_name" ? (nameNode.namedChildren.at(-1)?.text ?? nameNode.text) : nameNode.text;
125
+ aliases.set(aliasNode.text, orig);
126
+ }
127
+ }
128
+ else if ((lang === "typescript" || lang === "tsx") && node.type === "import_specifier") {
129
+ const nameNode = node.childForFieldName("name");
130
+ const aliasNode = node.childForFieldName("alias");
131
+ if (nameNode && aliasNode)
132
+ aliases.set(aliasNode.text, nameNode.text);
133
+ }
134
+ for (const child of node.namedChildren)
135
+ collectAliases(child, lang, aliases);
136
+ }
137
+ /** `scope`/`classScope` mirror extract.ts's walk: `scope` is the enclosing
138
+ * definition-name stack; `classScope` is the nearest enclosing class's scope
139
+ * path (distinct from `scope` once we're inside one of its methods) — that's
140
+ * where `self.attr`/`this.attr` bindings live. */
141
+ function visit(node, lang, scope, classScope, bindings, aliases) {
142
+ if (lang === "python")
143
+ handlePy(node, scope, classScope, bindings, aliases);
144
+ else if (lang === "go")
145
+ handleGo(node, scope, bindings);
146
+ else
147
+ handleTs(node, scope, classScope, bindings, aliases);
148
+ const name = defName(node, lang);
149
+ let childScope = scope;
150
+ let childClassScope = classScope;
151
+ if (name !== null) {
152
+ childScope = [...scope, name];
153
+ if (isClassNode(node, lang))
154
+ childClassScope = childScope.join(".");
155
+ }
156
+ for (const child of node.namedChildren)
157
+ visit(child, lang, childScope, childClassScope, bindings, aliases);
158
+ }
159
+ /** Resolves a bare type name through `aliases` — every annotation path must
160
+ * consult it, so an aliased import (`import Foo as Bar`) still binds to the
161
+ * original name callers actually search for. See the "aliases already
162
+ * resolved" contract above. */
163
+ function resolveAlias(name, aliases) {
164
+ return aliases.get(name) ?? name;
165
+ }
166
+ function pyTypeName(node, aliases) {
167
+ if (!node)
168
+ return null;
169
+ if (node.type === "identifier")
170
+ return resolveAlias(node.text, aliases);
171
+ if (node.type === "type") {
172
+ const inner = node.namedChildren[0];
173
+ return inner?.type === "identifier" ? resolveAlias(inner.text, aliases) : null;
174
+ }
175
+ return null;
176
+ }
177
+ function callTypeName(node, aliases) {
178
+ if (node?.type !== "call")
179
+ return null;
180
+ const fn = node.childForFieldName("function");
181
+ if (fn?.type !== "identifier")
182
+ return null;
183
+ return aliases.get(fn.text) ?? fn.text;
184
+ }
185
+ function handlePy(node, scope, classScope, bindings, aliases) {
186
+ const scopePath = scope.join(".");
187
+ if (node.type === "typed_parameter") {
188
+ const nameNode = node.namedChildren.find((c) => c.type === "identifier");
189
+ const typeName = pyTypeName(node.childForFieldName("type"), aliases);
190
+ if (nameNode && typeName)
191
+ bindings.set(scopePath, nameNode.text, typeName);
192
+ return;
193
+ }
194
+ if (node.type !== "assignment")
195
+ return;
196
+ const left = node.childForFieldName("left");
197
+ const right = node.childForFieldName("right");
198
+ if (!left)
199
+ return;
200
+ if (left.type === "identifier") {
201
+ const typeField = node.childForFieldName("type");
202
+ const typeName = typeField ? pyTypeName(typeField, aliases) : callTypeName(right, aliases);
203
+ if (typeName)
204
+ bindings.set(scopePath, left.text, typeName);
205
+ }
206
+ else if (left.type === "attribute") {
207
+ const obj = left.childForFieldName("object");
208
+ const attr = left.childForFieldName("attribute");
209
+ if (obj?.type === "identifier" && (obj.text === "self" || obj.text === "cls") && attr) {
210
+ const typeName = callTypeName(right, aliases);
211
+ if (typeName)
212
+ bindings.set(classScope ?? scopePath, `self.${attr.text}`, typeName);
213
+ }
214
+ }
215
+ }
216
+ function tsAnnotationTypeName(typeAnn, aliases) {
217
+ if (!typeAnn || typeAnn.type !== "type_annotation")
218
+ return null;
219
+ const t = typeAnn.namedChildren[0];
220
+ return t?.type === "type_identifier" ? resolveAlias(t.text, aliases) : null;
221
+ }
222
+ function tsNewTypeName(value, aliases) {
223
+ if (value?.type !== "new_expression")
224
+ return null;
225
+ const ctor = value.childForFieldName("constructor");
226
+ if (ctor?.type !== "identifier")
227
+ return null;
228
+ return aliases.get(ctor.text) ?? ctor.text;
229
+ }
230
+ function handleTs(node, scope, classScope, bindings, aliases) {
231
+ const scopePath = scope.join(".");
232
+ if (node.type === "variable_declarator") {
233
+ const value = node.childForFieldName("value");
234
+ if (value && FN_VALUE_TYPES.has(value.type))
235
+ return; // a function def, not a type binding
236
+ const name = node.childForFieldName("name");
237
+ if (name?.type !== "identifier")
238
+ return;
239
+ const typeName = tsNewTypeName(value, aliases) ?? tsAnnotationTypeName(node.childForFieldName("type"), aliases);
240
+ if (typeName)
241
+ bindings.set(scopePath, name.text, typeName);
242
+ }
243
+ else if (node.type === "public_field_definition") {
244
+ const name = node.childForFieldName("name");
245
+ if (!name)
246
+ return;
247
+ const typeName = tsAnnotationTypeName(node.childForFieldName("type"), aliases) ??
248
+ tsNewTypeName(node.childForFieldName("value"), aliases);
249
+ if (typeName)
250
+ bindings.set(classScope ?? scopePath, `this.${name.text}`, typeName);
251
+ }
252
+ else if (node.type === "required_parameter") {
253
+ const pattern = node.childForFieldName("pattern");
254
+ if (pattern?.type !== "identifier")
255
+ return;
256
+ const typeName = tsAnnotationTypeName(node.childForFieldName("type"), aliases);
257
+ if (typeName)
258
+ bindings.set(scopePath, pattern.text, typeName);
259
+ }
260
+ }
261
+ function handleGo(node, scope, bindings) {
262
+ const scopePath = scope.join(".");
263
+ if (node.type === "var_spec") {
264
+ const name = node.childForFieldName("name");
265
+ let type = node.childForFieldName("type");
266
+ if (type?.type === "pointer_type")
267
+ type = type.namedChildren.at(-1) ?? null;
268
+ if (name?.type === "identifier" && type?.type === "type_identifier") {
269
+ bindings.set(scopePath, name.text, type.text);
270
+ }
271
+ return;
272
+ }
273
+ if (node.type !== "short_var_declaration")
274
+ return;
275
+ const left = node.childForFieldName("left");
276
+ const right = node.childForFieldName("right");
277
+ if (!left || !right)
278
+ return;
279
+ const names = left.namedChildren;
280
+ const exprs = right.namedChildren;
281
+ for (let i = 0; i < names.length; i++) {
282
+ const nameNode = names[i];
283
+ let expr = exprs[i];
284
+ if (!nameNode || nameNode.type !== "identifier" || !expr)
285
+ continue;
286
+ if (expr.type === "unary_expression") {
287
+ expr = expr.namedChildren.find((c) => c.type === "composite_literal") ?? expr;
288
+ }
289
+ let typeName = null;
290
+ if (expr.type === "composite_literal") {
291
+ const t = expr.childForFieldName("type");
292
+ typeName = t?.type === "type_identifier" ? t.text : null;
293
+ }
294
+ else if (expr.type === "call_expression") {
295
+ const fn = expr.childForFieldName("function");
296
+ // Go convention: NewX(...) binds to X.
297
+ if (fn?.type === "identifier" && /^New[A-Z]/.test(fn.text))
298
+ typeName = fn.text.slice(3);
299
+ }
300
+ if (typeName)
301
+ bindings.set(scopePath, nameNode.text, typeName);
302
+ }
303
+ }
304
+ //# sourceMappingURL=bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/graph/bindings.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { NodeV1, Relation } from "./types.js";
1
+ import { type FileBindings } from "./bindings.js";
2
+ import type { Kind, NodeV1, Relation } from "./types.js";
2
3
  export type Language = "typescript" | "tsx" | "python" | "go";
3
4
  /** Map a file path to a supported language, or null if unsupported. */
4
5
  export declare function languageOf(path: string): Language | null;
@@ -14,10 +15,25 @@ export interface RawEdge {
14
15
  specifier?: string;
15
16
  name?: string;
16
17
  viaMember?: boolean;
18
+ /** calls with viaMember: the receiver's resolved type name (from bindings /
19
+ * self / this / Go receiver), when a confident local clue exists. */
20
+ recvType?: string;
17
21
  }
18
22
  export interface ExtractResult {
19
23
  nodes: NodeV1[];
20
24
  rawEdges: RawEdge[];
21
25
  }
26
+ export interface WalkCtx {
27
+ rel: string;
28
+ source: string;
29
+ lang: Language;
30
+ kinds: Record<string, Kind>;
31
+ scope: string[];
32
+ enclosingKind: Kind | null;
33
+ parentId: string;
34
+ bindings: FileBindings;
35
+ enclosingClass: string | null;
36
+ goReceiverVar: string | null;
37
+ }
22
38
  export declare function extractFile(rel: string, source: string, lang: Language): ExtractResult;
23
39
  //# sourceMappingURL=extract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/graph/extract.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAQ,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE9D,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAOxD;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAmHD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAqCtF"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/graph/extract.ts"],"names":[],"mappings":"AAcA,OAAO,EAAqD,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE9D,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAOxD;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;yEACqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAsFD,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAqBD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAyCtF"}
@@ -12,6 +12,7 @@ import Python from "tree-sitter-python";
12
12
  import Go from "tree-sitter-go";
13
13
  import { basename } from "node:path";
14
14
  import { contentHash } from "../util/id.js";
15
+ import { collectBindings, goReceiverVarOf, resolveRecvType } from "./bindings.js";
15
16
  /** Map a file path to a supported language, or null if unsupported. */
16
17
  export function languageOf(path) {
17
18
  const p = path.toLowerCase();
@@ -115,6 +116,7 @@ function parseSource(source) {
115
116
  export function extractFile(rel, source, lang) {
116
117
  parser.setLanguage(GRAMMARS[lang]);
117
118
  const root = parseSource(source);
119
+ const bindings = collectBindings(root, lang);
118
120
  const nodes = [
119
121
  {
120
122
  id: rel,
@@ -141,6 +143,9 @@ export function extractFile(rel, source, lang) {
141
143
  scope: [],
142
144
  enclosingKind: null,
143
145
  parentId: rel,
146
+ bindings,
147
+ enclosingClass: null,
148
+ goReceiverVar: null,
144
149
  };
145
150
  for (const child of root.namedChildren)
146
151
  walk(child, ctx, nodes, rawEdges);
@@ -180,11 +185,15 @@ function walk(node, ctx, out, edges) {
180
185
  // class heritage
181
186
  if (desc.kind === "class")
182
187
  edges.push(...heritageEdges(node, id, ctx));
188
+ const isGoMethod = ctx.lang === "go" && node.type === "method_declaration";
189
+ const enclosingClass = desc.kind === "class" ? desc.name : isGoMethod ? goReceiverType(node) : ctx.enclosingClass;
183
190
  const childCtx = {
184
191
  ...ctx,
185
192
  scope: [...ctx.scope, idPart],
186
193
  enclosingKind: desc.kind,
187
194
  parentId: id,
195
+ enclosingClass,
196
+ goReceiverVar: isGoMethod ? goReceiverVarOf(node) : ctx.goReceiverVar,
188
197
  };
189
198
  for (const child of node.namedChildren)
190
199
  walk(child, childCtx, out, edges);
@@ -195,13 +204,15 @@ function walk(node, ctx, out, edges) {
195
204
  if (node.type === callType) {
196
205
  const callee = calleeName(node, ctx.lang);
197
206
  if (callee) {
198
- edges.push({
207
+ const callEdge = {
199
208
  source: ctx.parentId,
200
209
  relation: "calls",
201
210
  name: callee.name,
202
211
  viaMember: callee.viaMember,
203
212
  file: ctx.rel,
204
- });
213
+ };
214
+ const recvType = resolveRecvType(callee.receiver, ctx);
215
+ edges.push(recvType ? { ...callEdge, recvType } : callEdge);
205
216
  }
206
217
  }
207
218
  else if (isImport(node, ctx.lang)) {
@@ -341,19 +352,50 @@ function calleeName(node, lang) {
341
352
  return { name: fn.text, viaMember: false };
342
353
  if (lang === "python" && fn.type === "attribute") {
343
354
  const a = fn.childForFieldName("attribute") ?? fn.namedChildren.at(-1);
344
- return a ? { name: a.text, viaMember: true } : null;
355
+ return a ? { name: a.text, viaMember: true, receiver: pyReceiver(fn) } : null;
345
356
  }
346
357
  if (lang === "go" && fn.type === "selector_expression") {
347
358
  // `pkg.Fn()` / `recv.Method()` — the called name is the trailing field.
348
359
  const p = fn.childForFieldName("field") ?? fn.namedChildren.at(-1);
349
- return p ? { name: p.text, viaMember: true } : null;
360
+ const operand = fn.childForFieldName("operand");
361
+ const receiver = operand?.type === "identifier" ? operand.text : undefined;
362
+ return p ? { name: p.text, viaMember: true, receiver } : null;
350
363
  }
351
364
  if ((lang === "typescript" || lang === "tsx") && fn.type === "member_expression") {
352
365
  const p = fn.childForFieldName("property") ?? fn.namedChildren.at(-1);
353
- return p ? { name: p.text, viaMember: true } : null;
366
+ return p ? { name: p.text, viaMember: true, receiver: tsReceiver(fn) } : null;
354
367
  }
355
368
  return null;
356
369
  }
370
+ /** py `attribute` node's receiver text: bare identifier, or `self.x` for a
371
+ * chained `self.x.y()`. Anything else (e.g. a chained call `f().g()`) → none. */
372
+ function pyReceiver(fn) {
373
+ const obj = fn.childForFieldName("object");
374
+ if (obj?.type === "identifier")
375
+ return obj.text;
376
+ if (obj?.type === "attribute") {
377
+ const innerObj = obj.childForFieldName("object");
378
+ const innerAttr = obj.childForFieldName("attribute");
379
+ if (innerObj?.type === "identifier" && innerObj.text === "self" && innerAttr)
380
+ return `self.${innerAttr.text}`;
381
+ }
382
+ return undefined;
383
+ }
384
+ /** ts `member_expression` node's receiver text: `this`, `this.x`, or a bare identifier. */
385
+ function tsReceiver(fn) {
386
+ const obj = fn.childForFieldName("object");
387
+ if (obj?.type === "this")
388
+ return "this";
389
+ if (obj?.type === "identifier")
390
+ return obj.text;
391
+ if (obj?.type === "member_expression") {
392
+ const innerObj = obj.childForFieldName("object");
393
+ const innerProp = obj.childForFieldName("property");
394
+ if (innerObj?.type === "this" && innerProp)
395
+ return `this.${innerProp.text}`;
396
+ }
397
+ return undefined;
398
+ }
357
399
  function isImport(node, lang) {
358
400
  // Go: match the per-import leaf, so single (`import "fmt"`) and grouped
359
401
  // (`import ( … )`) forms each yield one edge as the walk recurses into the list.
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/graph/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/graph/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * `graft map` core: a deterministic, token-budgeted repo orientation —
3
+ * directory clusters, per-directory hubs, and global hotspots — computed
4
+ * purely from the wiring graph (no LLM, no I/O beyond the already-loaded
5
+ * `GraphV1`).
6
+ *
7
+ * Grouping is by first path segment (`src/cache.ts` → `src`), so a coding
8
+ * agent gets the same top-level shape a human sees in a file tree. When one
9
+ * segment swallows most of the repo (a flat `src/` with everything under
10
+ * it), that single group would be useless as an orientation aid, so it gets
11
+ * one refinement pass: split one level deeper (`src` → `src/ask`,
12
+ * `src/graph`, …). Hubs and hotspots rank by incoming `WALK_RELATIONS`
13
+ * edges (shared with `graphrank.ts`/`grep.ts`, so "important" means the same
14
+ * thing everywhere in graft) — never by lines of code or heuristics that
15
+ * drift from the actual wiring.
16
+ *
17
+ * Pure and synchronous: same fixture-testable shape as `grep.ts` — no CLI or
18
+ * MCP concerns live here. `cli.ts` and `mcp/tools.ts` both call
19
+ * `buildRepoMap` + `formatRepoMap` directly.
20
+ */
21
+ import type { GraphV1 } from "./types.js";
22
+ export interface Hub {
23
+ name: string;
24
+ kind: string;
25
+ path: string;
26
+ span: string;
27
+ inDegree: number;
28
+ }
29
+ export interface DirEntry {
30
+ path: string;
31
+ files: number;
32
+ symbols: number;
33
+ languages: string[];
34
+ hubs: Hub[];
35
+ }
36
+ export interface RepoMap {
37
+ totals: {
38
+ files: number;
39
+ symbols: number;
40
+ edges: number;
41
+ languages: string[];
42
+ };
43
+ /** Sorted by symbol count desc (ties by path asc), capped at `maxDirs`. */
44
+ dirs: DirEntry[];
45
+ /** Global top hubs by inDegree, ties by name asc then path asc. */
46
+ hotspots: Hub[];
47
+ /** Directory groups beyond the `maxDirs` cap — never silently dropped. */
48
+ dropped: number;
49
+ }
50
+ export interface BuildRepoMapOptions {
51
+ /** Max directory entries kept (the rest are counted into `dropped`). Default 16. */
52
+ maxDirs?: number;
53
+ /** Max hubs listed per directory. Default 3. */
54
+ hubsPerDir?: number;
55
+ /** Max global hotspots. Default 12. */
56
+ hotspots?: number;
57
+ }
58
+ /**
59
+ * Build the repo map from an already-loaded `GraphV1`. Deterministic: same
60
+ * graph in → byte-identical `RepoMap` out (modulo insertion order, which is
61
+ * never observed — everything meaningful is sorted).
62
+ */
63
+ export declare function buildRepoMap(graph: GraphV1, opts?: BuildRepoMapOptions): RepoMap;
64
+ /**
65
+ * Render a `RepoMap` as the human report. Deterministic (same map in → same
66
+ * string out) and targets <= 6000 chars for a typical repo (the `maxDirs`/
67
+ * `hubsPerDir`/`hotspots` caps in `buildRepoMap` are what keep it bounded on
68
+ * very large graphs).
69
+ */
70
+ export declare function formatRepoMap(map: RepoMap): string;
71
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/graph/map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,YAAY,CAAC;AAIlD,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/E,2EAA2E;IAC3E,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,mEAAmE;IACnE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAiDD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAoEpF;AAwBD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAalD"}