@vetala/vetala 0.4.0-dev → 0.5.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 (48) hide show
  1. package/README.md +5 -14
  2. package/dist/src/agent.d.ts +6 -0
  3. package/dist/src/agent.js +48 -20
  4. package/dist/src/agent.js.map +1 -1
  5. package/dist/src/app-meta.d.ts +1 -1
  6. package/dist/src/app-meta.js +1 -1
  7. package/dist/src/cli.js +41 -4
  8. package/dist/src/cli.js.map +1 -1
  9. package/dist/src/edit-history.d.ts +2 -2
  10. package/dist/src/edit-history.js +3 -3
  11. package/dist/src/edit-history.js.map +1 -1
  12. package/dist/src/edits/diff.d.ts +2 -1
  13. package/dist/src/edits/diff.js +12 -1
  14. package/dist/src/edits/diff.js.map +1 -1
  15. package/dist/src/ipc-backend.js +134 -16
  16. package/dist/src/ipc-backend.js.map +1 -1
  17. package/dist/src/ipc-ui.d.ts +2 -1
  18. package/dist/src/ipc-ui.js +15 -2
  19. package/dist/src/ipc-ui.js.map +1 -1
  20. package/dist/src/providers/openai-compatible-client.js +7 -1
  21. package/dist/src/providers/openai-compatible-client.js.map +1 -1
  22. package/dist/src/tools/advanced.js +16 -3
  23. package/dist/src/tools/advanced.js.map +1 -1
  24. package/dist/src/tools/filesystem.js +73 -22
  25. package/dist/src/tools/filesystem.js.map +1 -1
  26. package/dist/src/tools/interaction.js +53 -15
  27. package/dist/src/tools/interaction.js.map +1 -1
  28. package/dist/src/tools/languages.d.ts +14 -0
  29. package/dist/src/tools/languages.js +249 -0
  30. package/dist/src/tools/languages.js.map +1 -0
  31. package/dist/src/tools/lsp.js +156 -44
  32. package/dist/src/tools/lsp.js.map +1 -1
  33. package/dist/src/tools/repo-search.d.ts +3 -0
  34. package/dist/src/tools/repo-search.js +14 -2
  35. package/dist/src/tools/repo-search.js.map +1 -1
  36. package/dist/src/tools/shell.js +5 -1
  37. package/dist/src/tools/shell.js.map +1 -1
  38. package/dist/src/tools/tree-sitter-check.d.ts +12 -0
  39. package/dist/src/tools/tree-sitter-check.js +153 -0
  40. package/dist/src/tools/tree-sitter-check.js.map +1 -0
  41. package/dist/src/types.d.ts +9 -1
  42. package/package.json +4 -3
  43. package/tui/vetala-darwin-arm64 +0 -0
  44. package/tui/vetala-darwin-x64 +0 -0
  45. package/tui/vetala-linux-arm64 +0 -0
  46. package/tui/vetala-linux-x64 +0 -0
  47. package/tui/vetala-win32-arm64.exe +0 -0
  48. package/tui/vetala-win32-x64.exe +0 -0
@@ -0,0 +1,249 @@
1
+ const UNPKG = "https://unpkg.com";
2
+ export const LANGUAGES = [
3
+ {
4
+ id: "typescript",
5
+ label: "TypeScript",
6
+ extensions: [".ts", ".tsx"],
7
+ projectFiles: ["tsconfig.json"],
8
+ nativeCheck: { command: "npx tsc --noEmit", binary: "npx" },
9
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-typescript@latest/tree-sitter-typescript.wasm`
10
+ },
11
+ {
12
+ id: "javascript",
13
+ label: "JavaScript",
14
+ extensions: [".js", ".jsx", ".mjs", ".cjs"],
15
+ projectFiles: ["package.json"],
16
+ nativeCheck: { command: "npx tsc --noEmit --allowJs --checkJs", binary: "npx" },
17
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-javascript@latest/tree-sitter-javascript.wasm`
18
+ },
19
+ {
20
+ id: "go",
21
+ label: "Go",
22
+ extensions: [".go"],
23
+ projectFiles: ["go.mod"],
24
+ nativeCheck: { command: "go build ./...", binary: "go" },
25
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-go@latest/tree-sitter-go.wasm`
26
+ },
27
+ {
28
+ id: "python",
29
+ label: "Python",
30
+ extensions: [".py"],
31
+ projectFiles: ["pyproject.toml", "requirements.txt", "setup.py"],
32
+ nativeCheck: { command: "python3 -m compileall .", binary: "python3" },
33
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-python@latest/tree-sitter-python.wasm`
34
+ },
35
+ {
36
+ id: "rust",
37
+ label: "Rust",
38
+ extensions: [".rs"],
39
+ projectFiles: ["Cargo.toml"],
40
+ nativeCheck: { command: "cargo check 2>&1", binary: "cargo" },
41
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-rust@latest/tree-sitter-rust.wasm`
42
+ },
43
+ {
44
+ id: "c",
45
+ label: "C",
46
+ extensions: [".c", ".h"],
47
+ projectFiles: ["Makefile", "CMakeLists.txt", "meson.build"],
48
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-c@latest/tree-sitter-c.wasm`
49
+ },
50
+ {
51
+ id: "cpp",
52
+ label: "C++",
53
+ extensions: [".cpp", ".cc", ".cxx", ".hpp", ".hxx"],
54
+ projectFiles: ["CMakeLists.txt", "meson.build"],
55
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-cpp@latest/tree-sitter-cpp.wasm`
56
+ },
57
+ {
58
+ id: "java",
59
+ label: "Java",
60
+ extensions: [".java"],
61
+ projectFiles: ["pom.xml", "build.gradle", "build.gradle.kts"],
62
+ nativeCheck: { command: "javac -version", binary: "javac" },
63
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-java@latest/tree-sitter-java.wasm`
64
+ },
65
+ {
66
+ id: "ruby",
67
+ label: "Ruby",
68
+ extensions: [".rb"],
69
+ projectFiles: ["Gemfile"],
70
+ nativeCheck: { command: "ruby -c .", binary: "ruby" },
71
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-ruby@latest/tree-sitter-ruby.wasm`
72
+ },
73
+ {
74
+ id: "csharp",
75
+ label: "C#",
76
+ extensions: [".cs"],
77
+ projectFiles: ["*.csproj", "*.sln"],
78
+ nativeCheck: { command: "dotnet build 2>&1", binary: "dotnet" },
79
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-c-sharp@latest/tree-sitter-c_sharp.wasm`
80
+ },
81
+ {
82
+ id: "php",
83
+ label: "PHP",
84
+ extensions: [".php"],
85
+ projectFiles: ["composer.json"],
86
+ nativeCheck: { command: "php -l .", binary: "php" },
87
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-php@latest/tree-sitter-php.wasm`
88
+ },
89
+ {
90
+ id: "swift",
91
+ label: "Swift",
92
+ extensions: [".swift"],
93
+ projectFiles: ["Package.swift"],
94
+ nativeCheck: { command: "swift build", binary: "swift" },
95
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-swift@latest/tree-sitter-swift.wasm`
96
+ },
97
+ {
98
+ id: "lua",
99
+ label: "Lua",
100
+ extensions: [".lua"],
101
+ projectFiles: [],
102
+ nativeCheck: { command: "luac -p $(find . -name '*.lua')", binary: "luac" },
103
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-lua@latest/tree-sitter-lua.wasm`
104
+ },
105
+ {
106
+ id: "dart",
107
+ label: "Dart / Flutter",
108
+ extensions: [".dart"],
109
+ projectFiles: ["pubspec.yaml", "pubspec.yml"],
110
+ nativeCheck: { command: "dart analyze", binary: "dart" },
111
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-dart@latest/tree-sitter-dart.wasm`
112
+ },
113
+ {
114
+ id: "kotlin",
115
+ label: "Kotlin",
116
+ extensions: [".kt", ".kts"],
117
+ projectFiles: ["build.gradle.kts", "settings.gradle.kts"],
118
+ nativeCheck: { command: "kotlinc -version", binary: "kotlinc" },
119
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-kotlin@latest/tree-sitter-kotlin.wasm`
120
+ },
121
+ {
122
+ id: "scala",
123
+ label: "Scala",
124
+ extensions: [".scala", ".sc"],
125
+ projectFiles: ["build.sbt", "build.sc"],
126
+ nativeCheck: { command: "scalac -version", binary: "scalac" },
127
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-scala@latest/tree-sitter-scala.wasm`
128
+ },
129
+ {
130
+ id: "elixir",
131
+ label: "Elixir",
132
+ extensions: [".ex", ".exs"],
133
+ projectFiles: ["mix.exs"],
134
+ nativeCheck: { command: "mix compile", binary: "mix" },
135
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-elixir@latest/tree-sitter-elixir.wasm`
136
+ },
137
+ {
138
+ id: "haskell",
139
+ label: "Haskell",
140
+ extensions: [".hs", ".lhs"],
141
+ projectFiles: ["stack.yaml", "cabal.project", "*.cabal"],
142
+ nativeCheck: { command: "ghc --version", binary: "ghc" },
143
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-haskell@latest/tree-sitter-haskell.wasm`
144
+ },
145
+ {
146
+ id: "ocaml",
147
+ label: "OCaml",
148
+ extensions: [".ml", ".mli"],
149
+ projectFiles: ["dune-project", "*.opam"],
150
+ nativeCheck: { command: "ocaml --version", binary: "ocaml" },
151
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-ocaml@latest/tree-sitter-ocaml.wasm`
152
+ },
153
+ {
154
+ id: "r",
155
+ label: "R",
156
+ extensions: [".r", ".R", ".Rmd", ".rmd"],
157
+ projectFiles: ["DESCRIPTION", ".Rproj"],
158
+ nativeCheck: { command: "Rscript --version", binary: "Rscript" },
159
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-r@latest/tree-sitter-r.wasm`
160
+ },
161
+ {
162
+ id: "julia",
163
+ label: "Julia",
164
+ extensions: [".jl"],
165
+ projectFiles: ["Project.toml", "Manifest.toml"],
166
+ nativeCheck: { command: "julia --version", binary: "julia" },
167
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-julia@latest/tree-sitter-julia.wasm`
168
+ },
169
+ {
170
+ id: "zig",
171
+ label: "Zig",
172
+ extensions: [".zig"],
173
+ projectFiles: ["build.zig"],
174
+ nativeCheck: { command: "zig build", binary: "zig" },
175
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-zig@latest/tree-sitter-zig.wasm`
176
+ },
177
+ {
178
+ id: "nim",
179
+ label: "Nim",
180
+ extensions: [".nim", ".nims"],
181
+ projectFiles: ["*.nimble"],
182
+ nativeCheck: { command: "nim check", binary: "nim" },
183
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-nim@latest/tree-sitter-nim.wasm`
184
+ },
185
+ {
186
+ id: "bash",
187
+ label: "Bash / Shell",
188
+ extensions: [".sh", ".bash", ".zsh", ".fish"],
189
+ projectFiles: [".bashrc", ".zshrc"],
190
+ nativeCheck: { command: "bash --norc -n", binary: "bash" },
191
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-bash@latest/tree-sitter-bash.wasm`
192
+ },
193
+ {
194
+ id: "sql",
195
+ label: "SQL",
196
+ extensions: [".sql"],
197
+ projectFiles: [],
198
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-sql@latest/tree-sitter-sql.wasm`
199
+ },
200
+ {
201
+ id: "css",
202
+ label: "CSS",
203
+ extensions: [".css", ".scss", ".sass", ".less"],
204
+ projectFiles: [],
205
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-css@latest/tree-sitter-css.wasm`
206
+ },
207
+ {
208
+ id: "html",
209
+ label: "HTML",
210
+ extensions: [".html", ".htm"],
211
+ projectFiles: [],
212
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-html@latest/tree-sitter-html.wasm`
213
+ },
214
+ {
215
+ id: "toml",
216
+ label: "TOML",
217
+ extensions: [".toml"],
218
+ projectFiles: [],
219
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-toml@latest/tree-sitter-toml.wasm`
220
+ },
221
+ {
222
+ id: "yaml",
223
+ label: "YAML",
224
+ extensions: [".yaml", ".yml"],
225
+ projectFiles: [],
226
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-yaml@latest/tree-sitter-yaml.wasm`
227
+ },
228
+ {
229
+ id: "json",
230
+ label: "JSON",
231
+ extensions: [".json", ".jsonc"],
232
+ projectFiles: [],
233
+ treeSitterWasmUrl: `${UNPKG}/tree-sitter-json@latest/tree-sitter-json.wasm`
234
+ }
235
+ ];
236
+ export function detectLanguageByProject(existingFiles) {
237
+ for (const lang of LANGUAGES) {
238
+ for (const marker of lang.projectFiles) {
239
+ if (existingFiles.has(marker)) {
240
+ return lang;
241
+ }
242
+ }
243
+ }
244
+ return undefined;
245
+ }
246
+ export function detectLanguageByExtension(ext) {
247
+ return LANGUAGES.find(l => l.extensions.includes(ext));
248
+ }
249
+ //# sourceMappingURL=languages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/tools/languages.ts"],"names":[],"mappings":"AAYA,MAAM,KAAK,GAAG,mBAAmB,CAAC;AAElC,MAAM,CAAC,MAAM,SAAS,GAAoB;IACtC;QACI,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,CAAC,eAAe,CAAC;QAC/B,WAAW,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE;QAC3D,iBAAiB,EAAE,GAAG,KAAK,4DAA4D;KAC1F;IACD;QACI,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC3C,YAAY,EAAE,CAAC,cAAc,CAAC;QAC9B,WAAW,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,MAAM,EAAE,KAAK,EAAE;QAC/E,iBAAiB,EAAE,GAAG,KAAK,4DAA4D;KAC1F;IACD;QACI,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,YAAY,EAAE,CAAC,QAAQ,CAAC;QACxB,WAAW,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;QACxD,iBAAiB,EAAE,GAAG,KAAK,4CAA4C;KAC1E;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,YAAY,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,CAAC;QAChE,WAAW,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,SAAS,EAAE;QACtE,iBAAiB,EAAE,GAAG,KAAK,oDAAoD;KAClF;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,YAAY,EAAE,CAAC,YAAY,CAAC;QAC5B,WAAW,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE;QAC7D,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;IACD;QACI,EAAE,EAAE,GAAG;QACP,KAAK,EAAE,GAAG;QACV,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACxB,YAAY,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC;QAC3D,iBAAiB,EAAE,GAAG,KAAK,0CAA0C;KACxE;IACD;QACI,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QACnD,YAAY,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;QAC/C,iBAAiB,EAAE,GAAG,KAAK,8CAA8C;KAC5E;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,kBAAkB,CAAC;QAC7D,WAAW,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE;QAC3D,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,YAAY,EAAE,CAAC,SAAS,CAAC;QACzB,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QACrD,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,YAAY,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;QACnC,WAAW,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC/D,iBAAiB,EAAE,GAAG,KAAK,sDAAsD;KACpF;IACD;QACI,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,YAAY,EAAE,CAAC,eAAe,CAAC;QAC/B,WAAW,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;QACnD,iBAAiB,EAAE,GAAG,KAAK,8CAA8C;KAC5E;IACD;QACI,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,CAAC,QAAQ,CAAC;QACtB,YAAY,EAAE,CAAC,eAAe,CAAC;QAC/B,WAAW,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE;QACxD,iBAAiB,EAAE,GAAG,KAAK,kDAAkD;KAChF;IACD;QACI,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3E,iBAAiB,EAAE,GAAG,KAAK,8CAA8C;KAC5E;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,gBAAgB;QACvB,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,YAAY,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;QAC7C,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE;QACxD,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;QACzD,WAAW,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE;QAC/D,iBAAiB,EAAE,GAAG,KAAK,oDAAoD;KAClF;IACD;QACI,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC7B,YAAY,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;QACvC,WAAW,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC7D,iBAAiB,EAAE,GAAG,KAAK,kDAAkD;KAChF;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,CAAC,SAAS,CAAC;QACzB,WAAW,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE;QACtD,iBAAiB,EAAE,GAAG,KAAK,oDAAoD;KAClF;IACD;QACI,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,SAAS,CAAC;QACxD,WAAW,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;QACxD,iBAAiB,EAAE,GAAG,KAAK,sDAAsD;KACpF;IACD;QACI,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC;QACxC,WAAW,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE;QAC5D,iBAAiB,EAAE,GAAG,KAAK,kDAAkD;KAChF;IACD;QACI,EAAE,EAAE,GAAG;QACP,KAAK,EAAE,GAAG;QACV,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;QACxC,YAAY,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;QACvC,WAAW,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE;QAChE,iBAAiB,EAAE,GAAG,KAAK,0CAA0C;KACxE;IACD;QACI,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,YAAY,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QAC/C,WAAW,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE;QAC5D,iBAAiB,EAAE,GAAG,KAAK,kDAAkD;KAChF;IACD;QACI,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE;QACpD,iBAAiB,EAAE,GAAG,KAAK,8CAA8C;KAC5E;IACD;QACI,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC7B,YAAY,EAAE,CAAC,UAAU,CAAC;QAC1B,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE;QACpD,iBAAiB,EAAE,GAAG,KAAK,8CAA8C;KAC5E;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;QAC7C,YAAY,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;QACnC,WAAW,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1D,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;IACD;QACI,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,GAAG,KAAK,8CAA8C;KAC5E;IACD;QACI,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/C,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,GAAG,KAAK,8CAA8C;KAC5E;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7B,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7B,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;IACD;QACI,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC/B,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,GAAG,KAAK,gDAAgD;KAC9E;CACJ,CAAC;AAEF,MAAM,UAAU,uBAAuB,CACnC,aAA0B;IAE1B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACjD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -1,60 +1,131 @@
1
- import { readFile, stat } from "node:fs/promises";
1
+ import { readFile, readdir } from "node:fs/promises";
2
2
  import { runShellCommand } from "../process-utils.js";
3
3
  import { searchRepo } from "./repo-search.js";
4
+ import { detectLanguageByProject, detectLanguageByExtension, LANGUAGES } from "./languages.js";
5
+ import { checkSyntaxWithTreeSitter, formatDiagnostics } from "./tree-sitter-check.js";
4
6
  import path from "node:path";
5
7
  export function createLspTools() {
6
8
  return [getDiagnosticsTool, findReferencesTool, listExportsTool];
7
9
  }
10
+ // ---------------------------------------------------------------------------
11
+ // Utilities
12
+ // ---------------------------------------------------------------------------
13
+ /**
14
+ * Check whether a CLI binary is available on this machine.
15
+ * Uses `which` on Unix or `where` on Windows — fully cross-platform.
16
+ */
17
+ async function commandExists(name) {
18
+ const checkCmd = process.platform === "win32" ? `where ${name}` : `which ${name}`;
19
+ try {
20
+ const result = await runShellCommand(checkCmd, { cwd: ".", timeoutMs: 5000, noPty: true });
21
+ return result.exitCode === 0;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ // ---------------------------------------------------------------------------
28
+ // get_diagnostics — Two-tier: native toolchain → tree-sitter fallback
29
+ // ---------------------------------------------------------------------------
8
30
  const getDiagnosticsTool = {
9
31
  name: "get_diagnostics",
10
- description: "Get compiler errors and warnings for the project. Automatically detects TypeScript, Go, or Python to run the appropriate check.",
32
+ description: "Get compiler errors and warnings for the project. " +
33
+ "Supports TypeScript, JavaScript, Go, Python, Rust, C, C++, Java, and Ruby. " +
34
+ "Uses the native toolchain when available; falls back to tree-sitter syntax checking otherwise.",
11
35
  jsonSchema: {
12
36
  type: "object",
13
37
  properties: {},
14
38
  additionalProperties: false
15
39
  },
16
40
  readOnly: true,
17
- async execute(rawArgs, context) {
18
- // Try to auto-detect language
19
- const hasFile = async (name) => {
20
- try {
21
- const p = await context.paths.ensureReadable(path.join(context.workspaceRoot, name));
22
- await stat(p);
23
- return true;
24
- }
25
- catch {
26
- return false;
27
- }
28
- };
29
- let cmd = "";
30
- if (await hasFile("tsconfig.json")) {
31
- cmd = "npx tsc --noEmit";
41
+ async execute(_rawArgs, context) {
42
+ // 1. Scan workspace for project marker files
43
+ const existingFiles = new Set();
44
+ try {
45
+ const entries = await readdir(context.workspaceRoot);
46
+ for (const e of entries)
47
+ existingFiles.add(e);
32
48
  }
33
- else if (await hasFile("go.mod")) {
34
- cmd = "go build ./...";
35
- }
36
- else if (await hasFile("pyproject.toml") || await hasFile("requirements.txt")) {
37
- cmd = "python -m py_compile $(find . -name '*.py')"; // simple syntax check
49
+ catch {
50
+ return {
51
+ summary: "Cannot read workspace",
52
+ content: "Failed to list workspace root directory.",
53
+ isError: true
54
+ };
38
55
  }
39
- else {
56
+ const lang = detectLanguageByProject(existingFiles);
57
+ if (!lang) {
58
+ const supported = LANGUAGES.map(l => l.projectFiles.join("/")).join(", ");
40
59
  return {
41
60
  summary: "No supported project type detected",
42
- content: "Could not find tsconfig.json, go.mod, or pyproject.toml to run diagnostics.",
61
+ content: `Could not detect a project type. Looked for: ${supported}.\n` +
62
+ "Make sure you are in a project root with a recognizable config file.",
43
63
  isError: true
44
64
  };
45
65
  }
46
- const result = await runShellCommand(cmd, { cwd: context.workspaceRoot, timeoutMs: 30000 });
47
- const output = [result.stdout.trim(), result.stderr.trim()].filter(Boolean).join("\n");
48
- if (result.exitCode === 0) {
49
- return { summary: "No errors found", content: "No errors or warnings found.", isError: false };
66
+ // 2. Tier 1 try native toolchain if the binary is installed
67
+ if (lang.nativeCheck) {
68
+ const binAvailable = await commandExists(lang.nativeCheck.binary);
69
+ if (binAvailable) {
70
+ return runNativeCheck(lang, context.workspaceRoot);
71
+ }
72
+ }
73
+ // 3. Tier 2 — tree-sitter fallback (zero external deps)
74
+ if (lang.treeSitterWasmUrl) {
75
+ return runTreeSitterCheck(lang, context.workspaceRoot);
50
76
  }
77
+ // 4. No checker available at all for this language
51
78
  return {
52
- summary: `Found errors using ${cmd.split(" ")[0]}`,
53
- content: output || "(no output but command failed)",
54
- isError: true // Not necessarily a tool error, but indicates code errors
79
+ summary: `No diagnostics available for ${lang.label}`,
80
+ content: `Detected a ${lang.label} project but the native toolchain (${lang.nativeCheck?.binary ?? "n/a"}) is not installed ` +
81
+ "and no tree-sitter grammar is configured for fallback checking.",
82
+ isError: true
55
83
  };
56
84
  }
57
85
  };
86
+ async function runNativeCheck(lang, cwd) {
87
+ const cmd = lang.nativeCheck.command;
88
+ const result = await runShellCommand(cmd, { cwd, timeoutMs: 60_000 });
89
+ const output = [result.stdout.trim(), result.stderr.trim()].filter(Boolean).join("\n");
90
+ if (result.exitCode === 0) {
91
+ return {
92
+ summary: `${lang.label}: no errors found (${lang.nativeCheck.binary})`,
93
+ content: "No errors or warnings found.",
94
+ isError: false
95
+ };
96
+ }
97
+ return {
98
+ summary: `${lang.label}: errors found via ${lang.nativeCheck.binary}`,
99
+ content: output || "(no output but command failed)",
100
+ isError: true
101
+ };
102
+ }
103
+ async function runTreeSitterCheck(lang, cwd) {
104
+ const diagnostics = await checkSyntaxWithTreeSitter(cwd, lang.extensions, lang.treeSitterWasmUrl);
105
+ if (diagnostics === null) {
106
+ return {
107
+ summary: `Tree-sitter unavailable for ${lang.label}`,
108
+ content: "Could not initialize tree-sitter syntax checking. " +
109
+ `Install the native ${lang.nativeCheck?.binary ?? lang.id} toolchain for full diagnostics.`,
110
+ isError: true
111
+ };
112
+ }
113
+ if (diagnostics.length === 0) {
114
+ return {
115
+ summary: `${lang.label}: no syntax errors (tree-sitter)`,
116
+ content: "No syntax errors found via tree-sitter analysis.",
117
+ isError: false
118
+ };
119
+ }
120
+ return {
121
+ summary: `${lang.label}: ${diagnostics.length} syntax error(s) (tree-sitter)`,
122
+ content: formatDiagnostics(diagnostics),
123
+ isError: true
124
+ };
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // find_references
128
+ // ---------------------------------------------------------------------------
58
129
  const findReferencesTool = {
59
130
  name: "find_references",
60
131
  description: "Find all usages of a symbol or function name across the codebase.",
@@ -73,14 +144,14 @@ const findReferencesTool = {
73
144
  async execute(rawArgs, context) {
74
145
  const args = expectObject(rawArgs);
75
146
  const symbol = requiredString(args.symbol, "symbol");
76
- // Use the existing searchRepo functionality for semantic boundaries
77
147
  const matches = await searchRepo({
78
148
  query: symbol,
79
149
  target: ".",
80
150
  cwd: context.workspaceRoot,
81
151
  limit: 50,
82
152
  mode: "fixed",
83
- caseSensitive: true
153
+ caseSensitive: true,
154
+ context
84
155
  });
85
156
  if (matches.length === 0) {
86
157
  return { summary: `No references found for ${symbol}`, content: "(no matches)", isError: false };
@@ -93,6 +164,9 @@ const findReferencesTool = {
93
164
  };
94
165
  }
95
166
  };
167
+ // ---------------------------------------------------------------------------
168
+ // list_exports — uses language registry for extension matching
169
+ // ---------------------------------------------------------------------------
96
170
  const listExportsTool = {
97
171
  name: "list_exports",
98
172
  description: "List all exported functions, classes, and types from a file to quickly understand its API surface.",
@@ -115,20 +189,55 @@ const listExportsTool = {
115
189
  const lines = content.split("\n");
116
190
  const exports = [];
117
191
  const ext = path.extname(target);
192
+ const lang = detectLanguageByExtension(ext);
118
193
  for (let i = 0; i < lines.length; i++) {
119
194
  const line = lines[i].trim();
120
- // TS/JS
121
- if ((ext === ".ts" || ext === ".js" || ext === ".tsx" || ext === ".jsx") &&
122
- (line.startsWith("export ") || line.startsWith("module.exports"))) {
123
- exports.push(`${i + 1}: ${line}`);
124
- }
125
- // Python
126
- else if (ext === ".py" && (line.startsWith("def ") || line.startsWith("class "))) {
127
- exports.push(`${i + 1}: ${line}`);
195
+ if (lang) {
196
+ switch (lang.id) {
197
+ case "typescript":
198
+ case "javascript":
199
+ if (line.startsWith("export ") || line.startsWith("module.exports")) {
200
+ exports.push(`${i + 1}: ${line}`);
201
+ }
202
+ break;
203
+ case "python":
204
+ if (line.startsWith("def ") || line.startsWith("class ")) {
205
+ exports.push(`${i + 1}: ${line}`);
206
+ }
207
+ break;
208
+ case "go":
209
+ if ((line.startsWith("func ") || line.startsWith("type ")) && /[A-Z]/.test(line.charAt(5))) {
210
+ exports.push(`${i + 1}: ${line}`);
211
+ }
212
+ break;
213
+ case "rust":
214
+ if (line.startsWith("pub fn ") || line.startsWith("pub struct ") || line.startsWith("pub enum ") || line.startsWith("pub trait ")) {
215
+ exports.push(`${i + 1}: ${line}`);
216
+ }
217
+ break;
218
+ case "java":
219
+ if (line.startsWith("public ")) {
220
+ exports.push(`${i + 1}: ${line}`);
221
+ }
222
+ break;
223
+ case "ruby":
224
+ if (line.startsWith("def ") || line.startsWith("class ") || line.startsWith("module ")) {
225
+ exports.push(`${i + 1}: ${line}`);
226
+ }
227
+ break;
228
+ default:
229
+ // Fallback heuristic for unknown languages
230
+ if (line.startsWith("export ") || line.startsWith("pub ") || line.startsWith("public ")) {
231
+ exports.push(`${i + 1}: ${line}`);
232
+ }
233
+ }
128
234
  }
129
- // Go
130
- else if (ext === ".go" && (line.startsWith("func ") || line.startsWith("type ")) && /[A-Z]/.test(line.charAt(5))) {
131
- exports.push(`${i + 1}: ${line}`);
235
+ else {
236
+ // No language match try generic export heuristics
237
+ if (line.startsWith("export ") || line.startsWith("module.exports") ||
238
+ line.startsWith("pub ") || line.startsWith("public ")) {
239
+ exports.push(`${i + 1}: ${line}`);
240
+ }
132
241
  }
133
242
  }
134
243
  if (exports.length === 0) {
@@ -142,6 +251,9 @@ const listExportsTool = {
142
251
  };
143
252
  }
144
253
  };
254
+ // ---------------------------------------------------------------------------
255
+ // Shared helpers
256
+ // ---------------------------------------------------------------------------
145
257
  function expectObject(value) {
146
258
  if (value && typeof value === "object" && !Array.isArray(value)) {
147
259
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../../src/tools/lsp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../../src/tools/lsp.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ToolContext } from "../types.js";
1
2
  export interface RepoSearchMatch {
2
3
  filePath: string;
3
4
  lineNumber: number;
@@ -11,6 +12,7 @@ export interface RepoSearchOptions {
11
12
  mode?: "fixed" | "regex";
12
13
  caseSensitive?: boolean;
13
14
  globs?: string[];
15
+ context?: ToolContext;
14
16
  }
15
17
  export interface RepoSymbolSearchOptions {
16
18
  symbol: string;
@@ -18,6 +20,7 @@ export interface RepoSymbolSearchOptions {
18
20
  cwd: string;
19
21
  limit: number;
20
22
  globs?: string[];
23
+ context?: ToolContext;
21
24
  }
22
25
  export declare function searchRepo(options: RepoSearchOptions): Promise<RepoSearchMatch[]>;
23
26
  export declare function searchRepoSymbol(options: RepoSymbolSearchOptions): Promise<RepoSearchMatch[]>;
@@ -30,7 +30,8 @@ export async function searchRepo(options) {
30
30
  }
31
31
  return fallbackSearch({
32
32
  ...options,
33
- globs
33
+ globs,
34
+ context: options.context
34
35
  });
35
36
  }
36
37
  }
@@ -43,7 +44,8 @@ export async function searchRepoSymbol(options) {
43
44
  limit: Math.max(options.limit * 6, options.limit),
44
45
  mode: "regex",
45
46
  caseSensitive: true,
46
- globs: options.globs ?? []
47
+ globs: options.globs ?? [],
48
+ context: options.context
47
49
  });
48
50
  return candidates
49
51
  .sort((left, right) => {
@@ -101,6 +103,16 @@ function parseSearchMatches(output, limit) {
101
103
  return matches;
102
104
  }
103
105
  async function fallbackSearch(options) {
106
+ // If we have a performance-capable context, offload to Go backend for speed
107
+ if (options.context?.performance.fastSearch) {
108
+ const goMatches = await options.context.performance.fastSearch(options.query, options.target, {
109
+ limit: options.limit,
110
+ regex: options.mode === "regex"
111
+ });
112
+ if (goMatches) {
113
+ return goMatches;
114
+ }
115
+ }
104
116
  const matches = [];
105
117
  const targetStats = await stat(options.target);
106
118
  if (targetStats.isFile()) {