@flyingrobots/graft 0.11.0 → 0.12.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.
Files changed (209) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/README.md +7 -0
  3. package/dist/adapters/node-fs.d.ts.map +1 -1
  4. package/dist/adapters/node-fs.js +6 -0
  5. package/dist/adapters/node-fs.js.map +1 -1
  6. package/dist/api/index.d.ts +2 -2
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/index.js +2 -2
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/api/repo-workspace.d.ts.map +1 -1
  11. package/dist/api/repo-workspace.js +3 -0
  12. package/dist/api/repo-workspace.js.map +1 -1
  13. package/dist/cli/cli-error.d.ts.map +1 -1
  14. package/dist/cli/cli-error.js +4 -1
  15. package/dist/cli/cli-error.js.map +1 -1
  16. package/dist/cli/command-parser.d.ts.map +1 -1
  17. package/dist/cli/command-parser.js +5 -0
  18. package/dist/cli/command-parser.js.map +1 -1
  19. package/dist/cli/structural-review-render.d.ts.map +1 -1
  20. package/dist/cli/structural-review-render.js +5 -0
  21. package/dist/cli/structural-review-render.js.map +1 -1
  22. package/dist/contracts/capabilities.d.ts +5 -5
  23. package/dist/contracts/capabilities.d.ts.map +1 -1
  24. package/dist/contracts/capabilities.js +10 -0
  25. package/dist/contracts/capabilities.js.map +1 -1
  26. package/dist/contracts/output-schema-cli.d.ts +56 -0
  27. package/dist/contracts/output-schema-cli.d.ts.map +1 -1
  28. package/dist/contracts/output-schema-cli.js +1 -0
  29. package/dist/contracts/output-schema-cli.js.map +1 -1
  30. package/dist/contracts/output-schema-mcp.d.ts +79 -1
  31. package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
  32. package/dist/contracts/output-schema-mcp.js +27 -0
  33. package/dist/contracts/output-schema-mcp.js.map +1 -1
  34. package/dist/contracts/output-schema-meta.d.ts +7 -4
  35. package/dist/contracts/output-schema-meta.d.ts.map +1 -1
  36. package/dist/contracts/output-schema-meta.js +8 -2
  37. package/dist/contracts/output-schema-meta.js.map +1 -1
  38. package/dist/contracts/output-schemas.d.ts +3 -5
  39. package/dist/contracts/output-schemas.d.ts.map +1 -1
  40. package/dist/contracts/output-schemas.js +9 -34
  41. package/dist/contracts/output-schemas.js.map +1 -1
  42. package/dist/echo/structural-reading-adapter.d.ts.map +1 -1
  43. package/dist/echo/structural-reading-adapter.js +42 -0
  44. package/dist/echo/structural-reading-adapter.js.map +1 -1
  45. package/dist/echo/structural-reading-generated-model.d.ts.map +1 -1
  46. package/dist/echo/structural-reading-generated-model.js +7 -3
  47. package/dist/echo/structural-reading-generated-model.js.map +1 -1
  48. package/dist/mcp/burden.d.ts.map +1 -1
  49. package/dist/mcp/burden.js +1 -0
  50. package/dist/mcp/burden.js.map +1 -1
  51. package/dist/mcp/repo-workspace.d.ts.map +1 -1
  52. package/dist/mcp/repo-workspace.js +5 -1
  53. package/dist/mcp/repo-workspace.js.map +1 -1
  54. package/dist/mcp/server-invocation.d.ts.map +1 -1
  55. package/dist/mcp/server-invocation.js +46 -11
  56. package/dist/mcp/server-invocation.js.map +1 -1
  57. package/dist/mcp/server-tool-access.d.ts +2 -0
  58. package/dist/mcp/server-tool-access.d.ts.map +1 -1
  59. package/dist/mcp/server-tool-access.js +5 -0
  60. package/dist/mcp/server-tool-access.js.map +1 -1
  61. package/dist/mcp/tool-registry.d.ts.map +1 -1
  62. package/dist/mcp/tool-registry.js +2 -0
  63. package/dist/mcp/tool-registry.js.map +1 -1
  64. package/dist/mcp/tools/changed-since.d.ts.map +1 -1
  65. package/dist/mcp/tools/changed-since.js +8 -63
  66. package/dist/mcp/tools/changed-since.js.map +1 -1
  67. package/dist/mcp/tools/code-find.d.ts.map +1 -1
  68. package/dist/mcp/tools/code-find.js +1 -0
  69. package/dist/mcp/tools/code-find.js.map +1 -1
  70. package/dist/mcp/tools/code-refs.d.ts.map +1 -1
  71. package/dist/mcp/tools/code-refs.js +1 -0
  72. package/dist/mcp/tools/code-refs.js.map +1 -1
  73. package/dist/mcp/tools/code-show.d.ts.map +1 -1
  74. package/dist/mcp/tools/code-show.js +17 -10
  75. package/dist/mcp/tools/code-show.js.map +1 -1
  76. package/dist/mcp/tools/file-outline.d.ts.map +1 -1
  77. package/dist/mcp/tools/file-outline.js +18 -39
  78. package/dist/mcp/tools/file-outline.js.map +1 -1
  79. package/dist/mcp/tools/graft-diff.js +1 -1
  80. package/dist/mcp/tools/graft-diff.js.map +1 -1
  81. package/dist/mcp/tools/import-diagnostics.d.ts +3 -0
  82. package/dist/mcp/tools/import-diagnostics.d.ts.map +1 -0
  83. package/dist/mcp/tools/import-diagnostics.js +25 -0
  84. package/dist/mcp/tools/import-diagnostics.js.map +1 -0
  85. package/dist/mcp/tools/map.d.ts.map +1 -1
  86. package/dist/mcp/tools/map.js +1 -0
  87. package/dist/mcp/tools/map.js.map +1 -1
  88. package/dist/mcp/tools/precision-live.d.ts +8 -0
  89. package/dist/mcp/tools/precision-live.d.ts.map +1 -1
  90. package/dist/mcp/tools/precision-live.js +16 -3
  91. package/dist/mcp/tools/precision-live.js.map +1 -1
  92. package/dist/mcp/tools/precision.d.ts +1 -1
  93. package/dist/mcp/tools/precision.d.ts.map +1 -1
  94. package/dist/mcp/tools/precision.js +1 -1
  95. package/dist/mcp/tools/precision.js.map +1 -1
  96. package/dist/mcp/tools/read-range.d.ts.map +1 -1
  97. package/dist/mcp/tools/read-range.js +23 -8
  98. package/dist/mcp/tools/read-range.js.map +1 -1
  99. package/dist/mcp/tools/safe-read.js +1 -1
  100. package/dist/mcp/tools/safe-read.js.map +1 -1
  101. package/dist/mcp/tools/since.d.ts.map +1 -1
  102. package/dist/mcp/tools/since.js +1 -0
  103. package/dist/mcp/tools/since.js.map +1 -1
  104. package/dist/mcp/tools/structural-review.d.ts.map +1 -1
  105. package/dist/mcp/tools/structural-review.js +16 -13
  106. package/dist/mcp/tools/structural-review.js.map +1 -1
  107. package/dist/mcp/workspace-read-observation-model.d.ts +1 -0
  108. package/dist/mcp/workspace-read-observation-model.d.ts.map +1 -1
  109. package/dist/mcp/workspace-read-observation-model.js +1 -0
  110. package/dist/mcp/workspace-read-observation-model.js.map +1 -1
  111. package/dist/mcp/workspace-read-observation.d.ts.map +1 -1
  112. package/dist/mcp/workspace-read-observation.js +3 -1
  113. package/dist/mcp/workspace-read-observation.js.map +1 -1
  114. package/dist/mcp/workspace-router-model.d.ts +4 -0
  115. package/dist/mcp/workspace-router-model.d.ts.map +1 -1
  116. package/dist/mcp/workspace-router-model.js +7 -0
  117. package/dist/mcp/workspace-router-model.js.map +1 -1
  118. package/dist/mcp/workspace-router.d.ts +8 -1
  119. package/dist/mcp/workspace-router.d.ts.map +1 -1
  120. package/dist/mcp/workspace-router.js +81 -2
  121. package/dist/mcp/workspace-router.js.map +1 -1
  122. package/dist/operations/file-outline.d.ts +13 -4
  123. package/dist/operations/file-outline.d.ts.map +1 -1
  124. package/dist/operations/file-outline.js +12 -7
  125. package/dist/operations/file-outline.js.map +1 -1
  126. package/dist/operations/read-range.d.ts +9 -4
  127. package/dist/operations/read-range.d.ts.map +1 -1
  128. package/dist/operations/read-range.js +12 -7
  129. package/dist/operations/read-range.js.map +1 -1
  130. package/dist/operations/repo-workspace.d.ts +53 -3
  131. package/dist/operations/repo-workspace.d.ts.map +1 -1
  132. package/dist/operations/repo-workspace.js +125 -65
  133. package/dist/operations/repo-workspace.js.map +1 -1
  134. package/dist/operations/safe-read.d.ts +8 -5
  135. package/dist/operations/safe-read.d.ts.map +1 -1
  136. package/dist/operations/safe-read.js +34 -26
  137. package/dist/operations/safe-read.js.map +1 -1
  138. package/dist/operations/structural-review.d.ts +7 -1
  139. package/dist/operations/structural-review.d.ts.map +1 -1
  140. package/dist/operations/structural-review.js +13 -2
  141. package/dist/operations/structural-review.js.map +1 -1
  142. package/dist/operations/workspace-read-view.d.ts +208 -0
  143. package/dist/operations/workspace-read-view.d.ts.map +1 -0
  144. package/dist/operations/workspace-read-view.js +302 -0
  145. package/dist/operations/workspace-read-view.js.map +1 -0
  146. package/dist/ports/filesystem.d.ts +2 -0
  147. package/dist/ports/filesystem.d.ts.map +1 -1
  148. package/dist/ports/structural-reading.d.ts +21 -1
  149. package/dist/ports/structural-reading.d.ts.map +1 -1
  150. package/dist/ports/structural-reading.js.map +1 -1
  151. package/dist/warp/ast-emitter.d.ts +4 -0
  152. package/dist/warp/ast-emitter.d.ts.map +1 -1
  153. package/dist/warp/ast-emitter.js +16 -10
  154. package/dist/warp/ast-emitter.js.map +1 -1
  155. package/dist/warp/ast-import-resolver.d.ts +7 -0
  156. package/dist/warp/ast-import-resolver.d.ts.map +1 -1
  157. package/dist/warp/ast-import-resolver.js +41 -20
  158. package/dist/warp/ast-import-resolver.js.map +1 -1
  159. package/dist/warp/committed-reference-scan.d.ts +38 -0
  160. package/dist/warp/committed-reference-scan.d.ts.map +1 -0
  161. package/dist/warp/committed-reference-scan.js +346 -0
  162. package/dist/warp/committed-reference-scan.js.map +1 -0
  163. package/dist/warp/go-reference-context.d.ts +8 -0
  164. package/dist/warp/go-reference-context.d.ts.map +1 -0
  165. package/dist/warp/go-reference-context.js +209 -0
  166. package/dist/warp/go-reference-context.js.map +1 -0
  167. package/dist/warp/import-diagnostic.d.ts +17 -0
  168. package/dist/warp/import-diagnostic.d.ts.map +1 -0
  169. package/dist/warp/import-diagnostic.js +2 -0
  170. package/dist/warp/import-diagnostic.js.map +1 -0
  171. package/dist/warp/index-head.d.ts.map +1 -1
  172. package/dist/warp/index-head.js +34 -8
  173. package/dist/warp/index-head.js.map +1 -1
  174. package/dist/warp/python-import-resolver.d.ts +10 -0
  175. package/dist/warp/python-import-resolver.d.ts.map +1 -0
  176. package/dist/warp/python-import-resolver.js +100 -0
  177. package/dist/warp/python-import-resolver.js.map +1 -0
  178. package/dist/warp/qualified-reference-bindings.d.ts +11 -0
  179. package/dist/warp/qualified-reference-bindings.d.ts.map +1 -0
  180. package/dist/warp/qualified-reference-bindings.js +483 -0
  181. package/dist/warp/qualified-reference-bindings.js.map +1 -0
  182. package/dist/warp/qualified-reference-contract.d.ts +76 -0
  183. package/dist/warp/qualified-reference-contract.d.ts.map +1 -0
  184. package/dist/warp/qualified-reference-contract.js +2 -0
  185. package/dist/warp/qualified-reference-contract.js.map +1 -0
  186. package/dist/warp/qualified-reference-language-adapters.d.ts +4 -0
  187. package/dist/warp/qualified-reference-language-adapters.d.ts.map +1 -0
  188. package/dist/warp/qualified-reference-language-adapters.js +148 -0
  189. package/dist/warp/qualified-reference-language-adapters.js.map +1 -0
  190. package/dist/warp/qualified-reference-resolver.d.ts +10 -0
  191. package/dist/warp/qualified-reference-resolver.d.ts.map +1 -0
  192. package/dist/warp/qualified-reference-resolver.js +222 -0
  193. package/dist/warp/qualified-reference-resolver.js.map +1 -0
  194. package/dist/warp/qualified-reference-shadows.d.ts +5 -0
  195. package/dist/warp/qualified-reference-shadows.d.ts.map +1 -0
  196. package/dist/warp/qualified-reference-shadows.js +601 -0
  197. package/dist/warp/qualified-reference-shadows.js.map +1 -0
  198. package/dist/warp/structural-reading-adapter.d.ts +2 -1
  199. package/dist/warp/structural-reading-adapter.d.ts.map +1 -1
  200. package/dist/warp/structural-reading-adapter.js +79 -27
  201. package/dist/warp/structural-reading-adapter.js.map +1 -1
  202. package/docs/CLI.md +10 -1
  203. package/docs/MCP.md +9 -1
  204. package/docs/SETUP.md +7 -0
  205. package/package.json +9 -7
  206. package/dist/operations/import-reference-impact.d.ts +0 -13
  207. package/dist/operations/import-reference-impact.d.ts.map +0 -1
  208. package/dist/operations/import-reference-impact.js +0 -101
  209. package/dist/operations/import-reference-impact.js.map +0 -1
@@ -0,0 +1,483 @@
1
+ import { isPythonPackageModulePath, pythonChildModuleSource, resolvePythonModulePath } from "./python-import-resolver.js";
2
+ function walk(node, visit) {
3
+ visit(node);
4
+ for (const child of node.namedChildren)
5
+ walk(child, visit);
6
+ }
7
+ function nearestAncestor(node, types) {
8
+ let cursor = node.parent;
9
+ while (cursor !== null) {
10
+ if (types.has(cursor.type))
11
+ return cursor;
12
+ cursor = cursor.parent;
13
+ }
14
+ return null;
15
+ }
16
+ const RUST_IMPORT_SCOPE_TYPES = new Set(["block", "declaration_list"]);
17
+ const PYTHON_LEXICAL_SCOPE_TYPES = new Set(["function_definition", "lambda", "class_definition"]);
18
+ function compiledSpecifierSourceCandidates(raw) {
19
+ const pairs = [
20
+ [".js", [".ts", ".tsx"]], [".jsx", [".tsx", ".ts"]],
21
+ [".mjs", [".mts", ".ts"]], [".cjs", [".cts", ".ts"]],
22
+ ];
23
+ for (const [extension, replacements] of pairs) {
24
+ if (!raw.endsWith(extension))
25
+ continue;
26
+ const base = raw.slice(0, -extension.length);
27
+ return replacements.map((replacement) => `${base}${replacement}`);
28
+ }
29
+ return [];
30
+ }
31
+ function resolveRelativeModule(language, source, importingFilePath, context) {
32
+ if (!source.startsWith(".") && !source.startsWith("/"))
33
+ return null;
34
+ const directory = importingFilePath.includes("/")
35
+ ? importingFilePath.slice(0, importingFilePath.lastIndexOf("/"))
36
+ : "";
37
+ const raw = source.startsWith("/")
38
+ ? context.pathOps.normalize(source.slice(1))
39
+ : directory === ""
40
+ ? context.pathOps.normalize(source)
41
+ : context.pathOps.join(directory, source);
42
+ if (raw === "")
43
+ return null;
44
+ const sourceExtensions = language === "js"
45
+ ? [".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".mts", ".cts"]
46
+ : [".ts", ".tsx", ".js", ".jsx", ".mts", ".cts"];
47
+ const candidates = [
48
+ raw,
49
+ ...compiledSpecifierSourceCandidates(raw),
50
+ ...sourceExtensions.map((extension) => `${raw}${extension}`),
51
+ `${raw}.d.ts`, `${raw}.d.mts`, `${raw}.d.cts`,
52
+ ...sourceExtensions.map((extension) => `${raw}/index${extension}`),
53
+ `${raw}/index.d.ts`, `${raw}/index.d.mts`, `${raw}/index.d.cts`,
54
+ ];
55
+ return candidates.find((candidate) => context.knownFiles.has(candidate)) ?? null;
56
+ }
57
+ function stringValue(node) {
58
+ const fragment = node.namedChildren.find((child) => child.type === "string_fragment");
59
+ if (fragment !== undefined)
60
+ return fragment.text;
61
+ const text = node.text;
62
+ return text.length >= 2 ? text.slice(1, -1) : null;
63
+ }
64
+ function* pythonImportClauses(root, filePath, context) {
65
+ const statements = [];
66
+ walk(root, (node) => {
67
+ if (node.type === "import_statement" || node.type === "import_from_statement") {
68
+ statements.push(node);
69
+ }
70
+ });
71
+ for (const statement of statements) {
72
+ const lexicalScope = nearestAncestor(statement, PYTHON_LEXICAL_SCOPE_TYPES);
73
+ const scopeBody = lexicalScope?.childForFieldName("body") ?? lexicalScope;
74
+ const scope = {
75
+ scopeStartIndex: statement.endIndex,
76
+ scopeEndIndex: scopeBody?.endIndex ?? root.endIndex,
77
+ };
78
+ if (statement.type === "import_statement") {
79
+ for (const specifier of statement.namedChildren) {
80
+ const moduleNode = specifier.type === "aliased_import"
81
+ ? specifier.childForFieldName("name") ?? specifier.namedChildren.find((child) => child.type === "dotted_name")
82
+ : specifier;
83
+ if (moduleNode?.type !== "dotted_name")
84
+ continue;
85
+ const alias = specifier.type === "aliased_import"
86
+ ? specifier.childForFieldName("alias") ?? specifier.namedChildren.find((child) => child.type === "identifier")
87
+ : undefined;
88
+ yield { kind: "module", specifier, moduleNode, alias, ...scope };
89
+ }
90
+ continue;
91
+ }
92
+ const packageNode = statement.childForFieldName("module_name") ??
93
+ statement.namedChildren.find((child) => child.type === "dotted_name" || child.type === "relative_import");
94
+ if (packageNode === undefined)
95
+ continue;
96
+ const packagePath = resolvePythonModulePath(packageNode.text, filePath, context.pathOps, context.knownFiles);
97
+ for (const specifier of statement.namedChildren.slice(statement.namedChildren.indexOf(packageNode) + 1)) {
98
+ if (specifier.type === "wildcard_import") {
99
+ yield { kind: "wildcard", specifier, packagePath, ...scope };
100
+ continue;
101
+ }
102
+ const imported = specifier.type === "aliased_import"
103
+ ? specifier.childForFieldName("name") ?? specifier.namedChildren.find((child) => child.type === "dotted_name")
104
+ : specifier;
105
+ if (imported?.type !== "dotted_name")
106
+ continue;
107
+ const alias = specifier.type === "aliased_import"
108
+ ? specifier.childForFieldName("alias") ?? specifier.namedChildren.find((child) => child.type === "identifier")
109
+ : undefined;
110
+ const childPath = packagePath === null || isPythonPackageModulePath(packagePath)
111
+ ? resolvePythonModulePath(pythonChildModuleSource(packageNode.text, imported.text), filePath, context.pathOps, context.knownFiles)
112
+ : null;
113
+ yield { kind: "from", specifier, packagePath, imported, alias, childPath, ...scope };
114
+ }
115
+ }
116
+ }
117
+ function pythonBindings(root, filePath, context) {
118
+ const bindings = [];
119
+ for (const clause of pythonImportClauses(root, filePath, context)) {
120
+ if (clause.kind === "module") {
121
+ const moduleParts = clause.moduleNode.text.split(".");
122
+ const bindingName = clause.alias?.text ?? moduleParts[0];
123
+ if (bindingName === undefined)
124
+ continue;
125
+ bindings.push({
126
+ name: bindingName,
127
+ targetFilePath: resolvePythonModulePath(clause.moduleNode.text, filePath, context.pathOps, context.knownFiles),
128
+ ...(clause.alias === undefined && moduleParts.length > 1 ? { qualifiedPath: moduleParts.slice(1) } : {}),
129
+ scopeStartIndex: clause.scopeStartIndex,
130
+ scopeEndIndex: clause.scopeEndIndex,
131
+ importNode: clause.specifier,
132
+ });
133
+ continue;
134
+ }
135
+ if (clause.kind === "wildcard")
136
+ continue;
137
+ bindings.push({
138
+ name: clause.alias?.text ?? clause.imported.text,
139
+ targetFilePath: clause.childPath,
140
+ scopeStartIndex: clause.scopeStartIndex,
141
+ scopeEndIndex: clause.scopeEndIndex,
142
+ importNode: clause.specifier,
143
+ });
144
+ }
145
+ return bindings;
146
+ }
147
+ function typescriptBindings(language, root, filePath, context) {
148
+ const bindings = [];
149
+ for (const statement of root.namedChildren) {
150
+ if (statement.type !== "import_statement")
151
+ continue;
152
+ const importRequire = statement.namedChildren.find((child) => child.type === "import_require_clause");
153
+ const sourceNode = statement.childForFieldName("source") ??
154
+ importRequire?.childForFieldName("source") ??
155
+ statement.namedChildren.find((child) => child.type === "string");
156
+ const source = sourceNode === undefined ? null : stringValue(sourceNode);
157
+ if (source === null)
158
+ continue;
159
+ const importRequireAlias = importRequire?.namedChildren.find((child) => child.type === "identifier");
160
+ if (importRequire !== undefined && importRequireAlias !== undefined) {
161
+ bindings.push({
162
+ name: importRequireAlias.text,
163
+ targetFilePath: resolveRelativeModule(language, source, filePath, context),
164
+ importNode: importRequire,
165
+ });
166
+ continue;
167
+ }
168
+ const namespace = statement.namedChildren
169
+ .find((child) => child.type === "import_clause")
170
+ ?.namedChildren.find((child) => child.type === "namespace_import");
171
+ const alias = namespace?.namedChildren.find((child) => child.type === "identifier");
172
+ if (namespace !== undefined && alias !== undefined) {
173
+ bindings.push({
174
+ name: alias.text,
175
+ targetFilePath: resolveRelativeModule(language, source, filePath, context),
176
+ importNode: namespace,
177
+ });
178
+ }
179
+ }
180
+ return bindings;
181
+ }
182
+ function rustSourceRoot(filePath, knownFiles) {
183
+ const parts = filePath.split("/");
184
+ for (let length = parts.length - 1; length >= 0; length--) {
185
+ const directory = parts.slice(0, length).join("/");
186
+ const manifest = directory === "" ? "Cargo.toml" : `${directory}/Cargo.toml`;
187
+ if (!knownFiles.has(manifest))
188
+ continue;
189
+ const sourceRoot = directory === "" ? "src" : `${directory}/src`;
190
+ const autoTargetRoots = [
191
+ `${sourceRoot}/bin`,
192
+ directory === "" ? "examples" : `${directory}/examples`,
193
+ directory === "" ? "tests" : `${directory}/tests`,
194
+ directory === "" ? "benches" : `${directory}/benches`,
195
+ ];
196
+ for (const targetRoot of autoTargetRoots) {
197
+ if (parentDirectory(filePath) === targetRoot)
198
+ return targetRoot;
199
+ if (!filePath.startsWith(`${targetRoot}/`))
200
+ continue;
201
+ const relative = filePath.slice(targetRoot.length + 1);
202
+ const targetName = relative.split("/")[0];
203
+ if (targetName === undefined)
204
+ continue;
205
+ const directoryTarget = `${targetRoot}/${targetName}`;
206
+ if (knownFiles.has(`${directoryTarget}/main.rs`))
207
+ return directoryTarget;
208
+ if (knownFiles.has(`${targetRoot}/${targetName}.rs`))
209
+ return targetRoot;
210
+ }
211
+ return sourceRoot;
212
+ }
213
+ const srcIndex = parts.lastIndexOf("src");
214
+ return srcIndex >= 0 ? parts.slice(0, srcIndex + 1).join("/") : "";
215
+ }
216
+ function parentDirectory(value) {
217
+ return value.includes("/") ? value.slice(0, value.lastIndexOf("/")) : "";
218
+ }
219
+ function rustLogicalModuleDirectory(filePath) {
220
+ const directory = parentDirectory(filePath);
221
+ const fileName = filePath.slice(directory.length === 0 ? 0 : directory.length + 1);
222
+ if (fileName === "lib.rs" || fileName === "main.rs" || fileName === "mod.rs") {
223
+ return directory;
224
+ }
225
+ const moduleName = fileName.endsWith(".rs") ? fileName.slice(0, -3) : fileName;
226
+ return directory === "" ? moduleName : `${directory}/${moduleName}`;
227
+ }
228
+ function rustInlineModuleSegments(node) {
229
+ const segments = [];
230
+ let cursor = node.parent;
231
+ while (cursor !== null) {
232
+ if (cursor.type === "mod_item") {
233
+ const body = cursor.childForFieldName("body") ??
234
+ cursor.namedChildren.find((child) => child.type === "declaration_list");
235
+ const name = cursor.childForFieldName("name") ??
236
+ cursor.namedChildren.find((child) => child.type === "identifier");
237
+ if (body !== undefined && name !== undefined)
238
+ segments.unshift(name.text);
239
+ }
240
+ cursor = cursor.parent;
241
+ }
242
+ return segments;
243
+ }
244
+ function rustModuleCandidatePath(source, filePath, context, importNode) {
245
+ const sourceRoot = rustSourceRoot(filePath, context.knownFiles);
246
+ const logicalDirectory = rustLogicalModuleDirectory(filePath);
247
+ const inlineSegments = importNode === undefined ? [] : rustInlineModuleSegments(importNode);
248
+ const moduleDirectory = inlineSegments.length === 0
249
+ ? logicalDirectory
250
+ : context.pathOps.join(logicalDirectory, ...inlineSegments);
251
+ const segments = source.split("::");
252
+ const prefix = segments.shift();
253
+ let base;
254
+ if (prefix === "crate")
255
+ base = sourceRoot;
256
+ else if (prefix === "self")
257
+ base = moduleDirectory;
258
+ else if (prefix === "super") {
259
+ base = parentDirectory(moduleDirectory);
260
+ while (segments[0] === "super") {
261
+ segments.shift();
262
+ base = parentDirectory(base);
263
+ }
264
+ }
265
+ else
266
+ return null;
267
+ return context.pathOps.normalize(context.pathOps.join(base, ...segments));
268
+ }
269
+ function resolveRustModule(source, filePath, context, importNode) {
270
+ const raw = rustModuleCandidatePath(source, filePath, context, importNode);
271
+ if (raw === null)
272
+ return null;
273
+ return [`${raw}.rs`, `${raw}/mod.rs`].find((candidate) => context.knownFiles.has(candidate)) ?? null;
274
+ }
275
+ function rustCrateRootFiles(filePath, sourceRoot, knownFiles) {
276
+ const directory = parentDirectory(filePath);
277
+ const fileName = filePath.slice(directory === "" ? 0 : directory.length + 1);
278
+ const isPackageSourceRoot = sourceRoot === "src" || sourceRoot.endsWith("/src");
279
+ if (directory === sourceRoot && fileName !== "lib.rs" && fileName !== "main.rs" && !isPackageSourceRoot) {
280
+ return [filePath];
281
+ }
282
+ return [`${sourceRoot}/lib.rs`, `${sourceRoot}/main.rs`]
283
+ .filter((candidate) => knownFiles.has(candidate));
284
+ }
285
+ function unresolvedRustModuleOwners(source, filePath, context, importNode) {
286
+ const sourceRoot = rustSourceRoot(filePath, context.knownFiles);
287
+ let candidate = rustModuleCandidatePath(source, filePath, context, importNode);
288
+ if (candidate === null)
289
+ return [];
290
+ while (candidate !== "") {
291
+ const owner = [`${candidate}.rs`, `${candidate}/mod.rs`]
292
+ .find((file) => context.knownFiles.has(file));
293
+ if (owner !== undefined)
294
+ return [owner];
295
+ if (candidate === sourceRoot) {
296
+ return rustCrateRootFiles(filePath, sourceRoot, context.knownFiles);
297
+ }
298
+ candidate = parentDirectory(candidate);
299
+ }
300
+ return [];
301
+ }
302
+ export function resolveRustQualifiedModule(source, filePath, context, sourceNode) {
303
+ const targetFilePath = resolveRustModule(source, filePath, context, sourceNode);
304
+ return {
305
+ targetFilePath,
306
+ unresolvedTargetFilePaths: targetFilePath === null
307
+ ? unresolvedRustModuleOwners(source, filePath, context, sourceNode)
308
+ : [],
309
+ };
310
+ }
311
+ function joinRustUsePath(prefix, path) {
312
+ if (path === "self")
313
+ return prefix === "" ? path : prefix;
314
+ if (path === "crate" || path === "super" || path.startsWith("crate::") || path.startsWith("self::") || path.startsWith("super::")) {
315
+ return path;
316
+ }
317
+ return prefix === "" ? path : `${prefix}::${path}`;
318
+ }
319
+ function rustUseModuleCandidates(node, prefix = "") {
320
+ if (node.type === "use_as_clause") {
321
+ const path = node.childForFieldName("path") ?? node.namedChildren[0];
322
+ const alias = node.childForFieldName("alias") ?? node.namedChildren.at(-1);
323
+ if (path === undefined || alias === undefined)
324
+ return [];
325
+ return [{ name: alias.text, source: joinRustUsePath(prefix, path.text), importNode: node }];
326
+ }
327
+ if (node.type === "scoped_use_list") {
328
+ const path = node.childForFieldName("path") ?? node.namedChildren[0];
329
+ const list = node.namedChildren.find((child) => child.type === "use_list");
330
+ if (path === undefined || list === undefined)
331
+ return [];
332
+ const nestedPrefix = joinRustUsePath(prefix, path.text);
333
+ return list.namedChildren.flatMap((child) => rustUseModuleCandidates(child, nestedPrefix));
334
+ }
335
+ if (node.type === "use_list") {
336
+ return node.namedChildren.flatMap((child) => rustUseModuleCandidates(child, prefix));
337
+ }
338
+ if (node.type === "scoped_identifier") {
339
+ const name = node.childForFieldName("name") ?? node.namedChildren.at(-1);
340
+ return name === undefined
341
+ ? []
342
+ : [{ name: name.text, source: joinRustUsePath(prefix, node.text), importNode: node }];
343
+ }
344
+ if (node.type === "identifier") {
345
+ return [{ name: node.text, source: joinRustUsePath(prefix, node.text), importNode: node }];
346
+ }
347
+ if (node.type === "self" && prefix !== "") {
348
+ const name = prefix.split("::").at(-1);
349
+ return name === undefined ? [] : [{ name, source: prefix, importNode: node }];
350
+ }
351
+ return [];
352
+ }
353
+ function rustBindings(root, filePath, context) {
354
+ const bindings = [];
355
+ const statements = [];
356
+ walk(root, (node) => {
357
+ if (node.type === "use_declaration")
358
+ statements.push(node);
359
+ });
360
+ for (const statement of statements) {
361
+ const argument = statement.childForFieldName("argument") ?? statement.namedChildren[0];
362
+ if (argument === undefined)
363
+ continue;
364
+ const scope = nearestAncestor(statement, RUST_IMPORT_SCOPE_TYPES);
365
+ const scopeStartIndex = scope?.startIndex ?? root.startIndex;
366
+ const scopeEndIndex = scope?.endIndex ?? root.endIndex;
367
+ for (const candidate of rustUseModuleCandidates(argument)) {
368
+ const resolution = resolveRustQualifiedModule(candidate.source, filePath, context, candidate.importNode);
369
+ bindings.push({
370
+ name: candidate.name,
371
+ targetFilePath: resolution.targetFilePath,
372
+ ...(resolution.targetFilePath === null
373
+ ? { unresolvedTargetFilePaths: resolution.unresolvedTargetFilePaths }
374
+ : {}),
375
+ scopeStartIndex,
376
+ scopeEndIndex,
377
+ importNode: candidate.importNode,
378
+ });
379
+ }
380
+ }
381
+ walk(root, (node) => {
382
+ if (node.type !== "mod_item" || node.childForFieldName("body") !== null)
383
+ return;
384
+ const name = node.childForFieldName("name") ?? node.namedChildren.find((child) => child.type === "identifier");
385
+ if (name === undefined)
386
+ return;
387
+ const targetFilePath = resolveRustModule(`self::${name.text}`, filePath, context, node);
388
+ if (targetFilePath === null)
389
+ return;
390
+ const scope = nearestAncestor(node, RUST_IMPORT_SCOPE_TYPES);
391
+ bindings.push({
392
+ name: name.text,
393
+ targetFilePath,
394
+ scopeStartIndex: scope?.startIndex ?? root.startIndex,
395
+ scopeEndIndex: scope?.endIndex ?? root.endIndex,
396
+ importNode: node,
397
+ });
398
+ });
399
+ return bindings;
400
+ }
401
+ function goBindings(root, context) {
402
+ const go = context.go;
403
+ if (go === undefined)
404
+ return [];
405
+ const bindings = [];
406
+ walk(root, (node) => {
407
+ if (node.type !== "import_spec")
408
+ return;
409
+ const pathNode = node.childForFieldName("path") ?? node.namedChildren.find((child) => child.type.endsWith("string_literal"));
410
+ if (pathNode === undefined)
411
+ return;
412
+ const importPath = stringValue(pathNode);
413
+ if (importPath === null || (importPath !== go.modulePath && !importPath.startsWith(`${go.modulePath}/`)))
414
+ return;
415
+ const directory = importPath === go.modulePath ? "" : importPath.slice(go.modulePath.length + 1);
416
+ if (!go.packageNames.has(directory))
417
+ return;
418
+ const explicit = node.childForFieldName("name") ?? node.namedChildren.find((child) => child.type === "package_identifier");
419
+ const name = explicit?.text ?? go.packageNames.get(directory);
420
+ if (name === undefined || name === null || name === "_" || name === ".")
421
+ return;
422
+ bindings.push({ name, targetFilePath: null, packageDirectory: directory, importNode: node });
423
+ });
424
+ return bindings;
425
+ }
426
+ export function goTargetDirectoryPath(context, packageDirectory, pathOps) {
427
+ if (context.moduleDirectory === "")
428
+ return packageDirectory;
429
+ if (packageDirectory === "")
430
+ return context.moduleDirectory;
431
+ return pathOps.join(context.moduleDirectory, packageDirectory);
432
+ }
433
+ export function resolveQualifiedImportBindings(language, filePath, root, context) {
434
+ if (language === "python")
435
+ return pythonBindings(root, filePath, context);
436
+ if (language === "rust")
437
+ return rustBindings(root, filePath, context);
438
+ if (language === "go")
439
+ return goBindings(root, context);
440
+ return typescriptBindings(language, root, filePath, context);
441
+ }
442
+ export function analyzeDirectSymbolImportReferences(language, filePath, root, context) {
443
+ const references = [];
444
+ if (language === "python") {
445
+ for (const clause of pythonImportClauses(root, filePath, context)) {
446
+ if (clause.kind === "from" && clause.packagePath !== null && clause.childPath === null) {
447
+ references.push({ importedName: clause.imported.text, targetFilePath: clause.packagePath });
448
+ }
449
+ }
450
+ }
451
+ if (language === "rust") {
452
+ walk(root, (statement) => {
453
+ if (statement.type !== "use_declaration")
454
+ return;
455
+ const argument = statement.childForFieldName("argument") ?? statement.namedChildren[0];
456
+ if (argument === undefined)
457
+ return;
458
+ for (const candidate of rustUseModuleCandidates(argument)) {
459
+ if (resolveRustModule(candidate.source, filePath, context, candidate.importNode) !== null)
460
+ continue;
461
+ const segments = candidate.source.split("::");
462
+ const importedName = segments.pop();
463
+ if (importedName === undefined || segments.length === 0)
464
+ continue;
465
+ const targetFilePath = resolveRustModule(segments.join("::"), filePath, context, candidate.importNode);
466
+ if (targetFilePath !== null)
467
+ references.push({ importedName, targetFilePath });
468
+ }
469
+ });
470
+ }
471
+ return references;
472
+ }
473
+ export function analyzeUnsupportedWildcardImportTargets(language, filePath, root, context) {
474
+ if (language !== "python")
475
+ return [];
476
+ const targets = new Set();
477
+ for (const clause of pythonImportClauses(root, filePath, context)) {
478
+ if (clause.kind === "wildcard" && clause.packagePath !== null)
479
+ targets.add(clause.packagePath);
480
+ }
481
+ return [...targets];
482
+ }
483
+ //# sourceMappingURL=qualified-reference-bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualified-reference-bindings.js","sourceRoot":"","sources":["../../src/warp/qualified-reference-bindings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { PathOps } from "../ports/paths.js";
2
+ import type { ImportBindingDiagnostic } from "./import-diagnostic.js";
3
+ export type TSNode = import("web-tree-sitter").SyntaxNode;
4
+ export type QualifiedReferenceLanguage = "python" | "ts" | "tsx" | "js" | "rust" | "go";
5
+ export type QualifiedReferenceNamespace = "value" | "type";
6
+ export interface GoReferenceContext {
7
+ readonly modulePath: string;
8
+ readonly moduleDirectory: string;
9
+ readonly packageNames: ReadonlyMap<string, string | null>;
10
+ readonly packageFiles: ReadonlyMap<string, readonly string[]>;
11
+ /** package directory -> exported name -> unique declaring file, or null when ambiguous */
12
+ readonly declarations: ReadonlyMap<string, ReadonlyMap<string, string | null>>;
13
+ }
14
+ export interface QualifiedReferenceContext {
15
+ readonly pathOps: PathOps;
16
+ readonly knownFiles: ReadonlySet<string>;
17
+ readonly go?: GoReferenceContext | undefined;
18
+ }
19
+ export interface ResolvedImportBinding {
20
+ readonly name: string;
21
+ readonly targetFilePath: string | null;
22
+ readonly unresolvedTargetFilePaths?: readonly string[] | undefined;
23
+ readonly qualifiedPath?: readonly string[] | undefined;
24
+ readonly scopeStartIndex?: number | undefined;
25
+ readonly scopeEndIndex?: number | undefined;
26
+ readonly packageDirectory?: string | undefined;
27
+ readonly importNode: TSNode;
28
+ }
29
+ export interface QualifiedReferenceAccess {
30
+ readonly binding: string;
31
+ readonly member: string;
32
+ readonly targetFilePath: string;
33
+ readonly node: TSNode;
34
+ readonly shadow: ImportBindingDiagnostic | null;
35
+ }
36
+ export interface UnresolvedQualifiedReferenceAccess {
37
+ readonly binding: string;
38
+ readonly member: string;
39
+ readonly targetDirectoryPath?: string | undefined;
40
+ readonly targetFilePath?: string | undefined;
41
+ readonly node: TSNode;
42
+ readonly shadow: ImportBindingDiagnostic | null;
43
+ }
44
+ export interface QualifiedReferenceAnalysis {
45
+ readonly bindings: readonly ResolvedImportBinding[];
46
+ readonly accesses: readonly QualifiedReferenceAccess[];
47
+ readonly unresolvedAccesses: readonly UnresolvedQualifiedReferenceAccess[];
48
+ readonly diagnostics: readonly ImportBindingDiagnostic[];
49
+ }
50
+ export interface DirectSymbolImportReference {
51
+ readonly importedName: string;
52
+ readonly targetFilePath: string;
53
+ }
54
+ export interface ShadowRegion {
55
+ readonly binding: string;
56
+ readonly bindingImportStartIndex: number;
57
+ readonly startIndex: number;
58
+ readonly endIndex: number;
59
+ readonly diagnostic: ImportBindingDiagnostic;
60
+ readonly pythonClassScope?: TSNode | undefined;
61
+ readonly namespaces: ReadonlySet<QualifiedReferenceNamespace>;
62
+ }
63
+ export interface QualifiedAccessParts {
64
+ readonly binding: TSNode;
65
+ readonly qualifier: readonly string[];
66
+ readonly member: TSNode;
67
+ readonly namespace: QualifiedReferenceNamespace;
68
+ }
69
+ export interface QualifiedReferenceLanguageAdapter {
70
+ readonly languages: readonly QualifiedReferenceLanguage[];
71
+ resolveBindings(filePath: string, root: TSNode, context: QualifiedReferenceContext): readonly ResolvedImportBinding[];
72
+ collectShadows(filePath: string, root: TSNode, bindings: readonly ResolvedImportBinding[], context: QualifiedReferenceContext): readonly ShadowRegion[];
73
+ accessParts(node: TSNode): QualifiedAccessParts | null;
74
+ isUnsupportedWrite(node: TSNode): boolean;
75
+ }
76
+ //# sourceMappingURL=qualified-reference-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualified-reference-contract.d.ts","sourceRoot":"","sources":["../../src/warp/qualified-reference-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=qualified-reference-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualified-reference-contract.js","sourceRoot":"","sources":["../../src/warp/qualified-reference-contract.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { QualifiedReferenceLanguage, QualifiedReferenceLanguageAdapter } from "./qualified-reference-contract.js";
2
+ export declare const registeredQualifiedReferenceLanguages: readonly QualifiedReferenceLanguage[];
3
+ export declare function qualifiedReferenceAdapterFor(language: QualifiedReferenceLanguage): QualifiedReferenceLanguageAdapter;
4
+ //# sourceMappingURL=qualified-reference-language-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualified-reference-language-adapters.d.ts","sourceRoot":"","sources":["../../src/warp/qualified-reference-language-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,0BAA0B,EAC1B,iCAAiC,EAElC,MAAM,mCAAmC,CAAC;AAwJ3C,eAAO,MAAM,qCAAqC,uCAEjD,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,0BAA0B,GACnC,iCAAiC,CAEnC"}