@vetala/vetala 0.4.1-dev → 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 (63) hide show
  1. package/README.md +16 -22
  2. package/dist/src/agent.d.ts +5 -0
  3. package/dist/src/agent.js +26 -35
  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/app-meta.js.map +1 -1
  8. package/dist/src/cli.js +10 -2
  9. package/dist/src/cli.js.map +1 -1
  10. package/dist/src/config.d.ts +2 -0
  11. package/dist/src/config.js +294 -24
  12. package/dist/src/config.js.map +1 -1
  13. package/dist/src/context-files.d.ts +3 -0
  14. package/dist/src/context-files.js +127 -0
  15. package/dist/src/context-files.js.map +1 -0
  16. package/dist/src/context-memory.d.ts +2 -2
  17. package/dist/src/context-memory.js +34 -26
  18. package/dist/src/context-memory.js.map +1 -1
  19. package/dist/src/edit-history.d.ts +2 -2
  20. package/dist/src/edit-history.js +3 -3
  21. package/dist/src/edit-history.js.map +1 -1
  22. package/dist/src/edits/diff.d.ts +2 -1
  23. package/dist/src/edits/diff.js +12 -1
  24. package/dist/src/edits/diff.js.map +1 -1
  25. package/dist/src/history-store.d.ts +2 -0
  26. package/dist/src/history-store.js +69 -0
  27. package/dist/src/history-store.js.map +1 -0
  28. package/dist/src/ipc-backend.js +215 -29
  29. package/dist/src/ipc-backend.js.map +1 -1
  30. package/dist/src/ipc-ui.d.ts +2 -1
  31. package/dist/src/ipc-ui.js +19 -2
  32. package/dist/src/ipc-ui.js.map +1 -1
  33. package/dist/src/memories/pipeline.d.ts +3 -0
  34. package/dist/src/memories/pipeline.js +376 -0
  35. package/dist/src/memories/pipeline.js.map +1 -0
  36. package/dist/src/terminal-ui.js +4 -0
  37. package/dist/src/terminal-ui.js.map +1 -1
  38. package/dist/src/tools/advanced.js +16 -3
  39. package/dist/src/tools/advanced.js.map +1 -1
  40. package/dist/src/tools/filesystem.js +8 -6
  41. package/dist/src/tools/filesystem.js.map +1 -1
  42. package/dist/src/tools/languages.d.ts +14 -0
  43. package/dist/src/tools/languages.js +249 -0
  44. package/dist/src/tools/languages.js.map +1 -0
  45. package/dist/src/tools/lsp.js +156 -44
  46. package/dist/src/tools/lsp.js.map +1 -1
  47. package/dist/src/tools/repo-search.d.ts +3 -0
  48. package/dist/src/tools/repo-search.js +14 -2
  49. package/dist/src/tools/repo-search.js.map +1 -1
  50. package/dist/src/tools/tree-sitter-check.d.ts +12 -0
  51. package/dist/src/tools/tree-sitter-check.js +153 -0
  52. package/dist/src/tools/tree-sitter-check.js.map +1 -0
  53. package/dist/src/types.d.ts +47 -1
  54. package/dist/src/xdg.d.ts +6 -0
  55. package/dist/src/xdg.js +13 -2
  56. package/dist/src/xdg.js.map +1 -1
  57. package/package.json +3 -2
  58. package/tui/vetala-darwin-arm64 +0 -0
  59. package/tui/vetala-darwin-x64 +0 -0
  60. package/tui/vetala-linux-arm64 +0 -0
  61. package/tui/vetala-linux-x64 +0 -0
  62. package/tui/vetala-win32-arm64.exe +0 -0
  63. package/tui/vetala-win32-x64.exe +0 -0
@@ -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()) {
@@ -1 +1 @@
1
- {"version":3,"file":"repo-search.js","sourceRoot":"","sources":["../../../src/tools/repo-search.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,SAAS;IACT,cAAc;IACd,MAAM;IACN,OAAO;IACP,UAAU;CACX,CAAC,CAAC;AA0BH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,EACJ,WAAW,CAAC;YACV,GAAG,OAAO;YACV,KAAK;SACN,CAAC,EACF;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,IAAI;SACZ,CACF,CAAC;QAEF,OAAO,kBAAkB,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,cAAc,CAAC;YACpB,GAAG,OAAO;YACV,KAAK;SACN,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgC;IACrE,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3D,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC;QAClC,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;QACjD,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;KAC3B,CAAC,CAAC;IAEH,OAAO,UAAU;SACd,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpH,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9D,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC1E,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,OAAgD;IACnE,MAAM,IAAI,GAAG;QACX,eAAe;QACf,cAAc;QACd,SAAS;QACT,OAAO;QACP,aAAa;QACb,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,gBAAgB;KACjB,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAEhF,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,KAAa;IACvD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACxB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;SACzB,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAgD;IAC5E,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QACzB,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,MAAM;YACR,CAAC;YAED,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3D,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtB,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,OAA0B,EAC1B,QAAgB,EAChB,OAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ;gBACR,UAAU,EAAE,KAAK,GAAG,CAAC;gBACrB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAA0B;IAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5F,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5E,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,MAAc;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,kBAAkB,GAAG;QACzB,IAAI,MAAM,CAAC,yCAAyC,SAAS,KAAK,CAAC;QACnE,IAAI,MAAM,CAAC,0BAA0B,SAAS,KAAK,CAAC;QACpD,IAAI,MAAM,CAAC,8BAA8B,SAAS,KAAK,CAAC;QACxD,IAAI,MAAM,CAAC,yBAAyB,SAAS,KAAK,CAAC;QACnD,IAAI,MAAM,CAAC,yBAAyB,SAAS,KAAK,CAAC;QACnD,IAAI,MAAM,CAAC,oCAAoC,SAAS,KAAK,CAAC;QAC9D,IAAI,MAAM,CAAC,UAAU,SAAS,KAAK,CAAC;QACpC,IAAI,MAAM,CAAC,cAAc,SAAS,KAAK,CAAC;QACxC,IAAI,MAAM,CAAC,aAAa,SAAS,KAAK,CAAC;KACxC,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,IAAI,MAAM,CAAC,MAAM,SAAS,6BAA6B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,MAAM,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,KAAe;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,IAAI;aACjB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;aACpC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC;aACvC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC;aACvC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC;aAC/B,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aACvB,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC;aACxC,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC;aACxC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACnG,CAAC"}
1
+ {"version":3,"file":"repo-search.js","sourceRoot":"","sources":["../../../src/tools/repo-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface SyntaxDiagnostic {
2
+ file: string;
3
+ line: number;
4
+ column: number;
5
+ endLine: number;
6
+ endColumn: number;
7
+ type: "ERROR" | "MISSING";
8
+ context: string;
9
+ }
10
+ export declare function checkSyntaxWithTreeSitter(workspaceRoot: string, extensions: string[], wasmUrl: string): Promise<SyntaxDiagnostic[] | null>;
11
+ export declare function isTreeSitterAvailable(): Promise<boolean>;
12
+ export declare function formatDiagnostics(diagnostics: SyntaxDiagnostic[]): string;
@@ -0,0 +1,153 @@
1
+ import { readFile, stat, mkdir, writeFile as fsWriteFile, readdir } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import os from "node:os";
4
+ // web-tree-sitter exports both default and named — handle both
5
+ let Parser;
6
+ let parserInitialized = false;
7
+ async function ensureParser() {
8
+ if (parserInitialized)
9
+ return;
10
+ parserInitialized = true;
11
+ try {
12
+ const mod = await import("web-tree-sitter");
13
+ Parser = mod.default || mod;
14
+ await Parser.init();
15
+ }
16
+ catch {
17
+ Parser = null;
18
+ }
19
+ }
20
+ function grammarCacheDir() {
21
+ return path.join(os.homedir(), ".cache", "vetala", "grammars");
22
+ }
23
+ async function ensureGrammarWasm(wasmUrl) {
24
+ const cacheDir = grammarCacheDir();
25
+ // Derive a stable filename from the URL
26
+ const urlObj = new URL(wasmUrl);
27
+ const filename = urlObj.pathname.split("/").filter(Boolean).pop() || "grammar.wasm";
28
+ const cachedPath = path.join(cacheDir, filename);
29
+ // Check if already cached
30
+ try {
31
+ await stat(cachedPath);
32
+ return cachedPath;
33
+ }
34
+ catch {
35
+ // Not cached yet — need to download
36
+ }
37
+ // Download
38
+ const response = await fetch(wasmUrl);
39
+ if (!response.ok) {
40
+ throw new Error(`Failed to download grammar: ${response.status} from ${wasmUrl}`);
41
+ }
42
+ const buffer = Buffer.from(await response.arrayBuffer());
43
+ // Ensure cache dir exists
44
+ await mkdir(cacheDir, { recursive: true });
45
+ await fsWriteFile(cachedPath, buffer);
46
+ return cachedPath;
47
+ }
48
+ async function collectSourceFiles(dir, extensions, maxFiles = 200) {
49
+ const IGNORE = new Set([
50
+ "node_modules", ".git", "__pycache__", ".mypy_cache", "dist",
51
+ "build", "target", "vendor", ".next", ".cache", "coverage"
52
+ ]);
53
+ const files = [];
54
+ async function walk(currentDir) {
55
+ if (files.length >= maxFiles)
56
+ return;
57
+ let entries;
58
+ try {
59
+ entries = await readdir(currentDir, { withFileTypes: true });
60
+ }
61
+ catch {
62
+ return;
63
+ }
64
+ for (const entry of entries) {
65
+ if (files.length >= maxFiles)
66
+ break;
67
+ if (entry.isDirectory()) {
68
+ if (!IGNORE.has(entry.name) && !entry.name.startsWith(".")) {
69
+ await walk(path.join(currentDir, entry.name));
70
+ }
71
+ }
72
+ else if (entry.isFile()) {
73
+ const ext = path.extname(entry.name);
74
+ if (extensions.includes(ext)) {
75
+ files.push(path.join(currentDir, entry.name));
76
+ }
77
+ }
78
+ }
79
+ }
80
+ await walk(dir);
81
+ return files;
82
+ }
83
+ function collectErrors(node, filePath, sourceLines, results) {
84
+ if (node.type === "ERROR" || node.isMissing) {
85
+ const line = node.startPosition.row;
86
+ results.push({
87
+ file: filePath,
88
+ line: line + 1, // 1-indexed
89
+ column: node.startPosition.column + 1,
90
+ endLine: node.endPosition.row + 1,
91
+ endColumn: node.endPosition.column + 1,
92
+ type: node.isMissing ? "MISSING" : "ERROR",
93
+ context: sourceLines[line] ?? ""
94
+ });
95
+ }
96
+ for (let i = 0; i < node.childCount; i++) {
97
+ collectErrors(node.child(i), filePath, sourceLines, results);
98
+ }
99
+ }
100
+ export async function checkSyntaxWithTreeSitter(workspaceRoot, extensions, wasmUrl) {
101
+ await ensureParser();
102
+ if (!Parser)
103
+ return null;
104
+ let grammarPath;
105
+ try {
106
+ grammarPath = await ensureGrammarWasm(wasmUrl);
107
+ }
108
+ catch {
109
+ return null; // Can't download grammar (offline, etc.)
110
+ }
111
+ const parser = new Parser();
112
+ try {
113
+ const language = await Parser.Language.load(grammarPath);
114
+ parser.setLanguage(language);
115
+ }
116
+ catch {
117
+ return null; // Grammar incompatible or corrupted
118
+ }
119
+ const files = await collectSourceFiles(workspaceRoot, extensions);
120
+ if (files.length === 0)
121
+ return [];
122
+ const diagnostics = [];
123
+ for (const filePath of files) {
124
+ try {
125
+ const source = await readFile(filePath, "utf8");
126
+ const tree = parser.parse(source);
127
+ const sourceLines = source.split("\n");
128
+ const relPath = path.relative(workspaceRoot, filePath);
129
+ collectErrors(tree.rootNode, relPath, sourceLines, diagnostics);
130
+ }
131
+ catch {
132
+ // Skip unparseable files
133
+ }
134
+ }
135
+ return diagnostics;
136
+ }
137
+ export async function isTreeSitterAvailable() {
138
+ await ensureParser();
139
+ return Parser !== null;
140
+ }
141
+ export function formatDiagnostics(diagnostics) {
142
+ if (diagnostics.length === 0)
143
+ return "No syntax errors found.";
144
+ return diagnostics
145
+ .map(d => {
146
+ const loc = `${d.file}:${d.line}:${d.column}`;
147
+ const tag = d.type === "MISSING" ? "MISSING token" : "SYNTAX ERROR";
148
+ const ctx = d.context.trim();
149
+ return `${loc}: ${tag}\n ${ctx}`;
150
+ })
151
+ .join("\n\n");
152
+ }
153
+ //# sourceMappingURL=tree-sitter-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-sitter-check.js","sourceRoot":"","sources":["../../../src/tools/tree-sitter-check.ts"],"names":[],"mappings":"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"}