staff-mcp 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lsp/manager.d.ts +5 -1
- package/dist/src/lsp/manager.js +235 -104
- package/dist/src/lsp/manager.js.map +1 -1
- package/dist/src/test_lsp.d.ts +1 -0
- package/dist/src/test_lsp.js +4 -0
- package/dist/src/test_lsp.js.map +1 -0
- package/dist/src/tools/file-tools.js +97 -50
- package/dist/src/tools/file-tools.js.map +1 -1
- package/dist/src/tools/lsp-tools.js +43 -44
- package/dist/src/tools/lsp-tools.js.map +1 -1
- package/dist/src/utils/paths.d.ts +6 -0
- package/dist/src/utils/paths.js +16 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/tool-utils.d.ts +13 -0
- package/dist/src/utils/tool-utils.js +120 -0
- package/dist/src/utils/tool-utils.js.map +1 -0
- package/dist/tests/lsp-client.test.d.ts +1 -0
- package/dist/tests/lsp-client.test.js +46 -0
- package/dist/tests/lsp-client.test.js.map +1 -0
- package/dist/tests/test_files/test.d.ts +1 -0
- package/dist/tests/test_files/test.js +4 -0
- package/dist/tests/test_files/test.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as fs from "fs/promises";
|
|
2
2
|
import * as path from "path";
|
|
3
|
+
import { exec } from "child_process";
|
|
4
|
+
import { promisify } from "util";
|
|
3
5
|
import { z } from "zod";
|
|
4
6
|
import { CHARACTER_LIMIT } from "../constants.js";
|
|
5
|
-
import {
|
|
7
|
+
import { ensureRipgrep } from "../utils/tool-utils.js";
|
|
8
|
+
const execAsync = promisify(exec);
|
|
6
9
|
/**
|
|
7
10
|
* Registers file-related tools using the latest registerTool API.
|
|
8
11
|
*/
|
|
@@ -51,42 +54,39 @@ export function registerFileTools(server, security) {
|
|
|
51
54
|
oldText: z.string().describe("The exact text block to be replaced. Be as specific as possible to avoid wrong matches."),
|
|
52
55
|
newText: z.string().describe("The new text content to replace with."),
|
|
53
56
|
}).strict(),
|
|
54
|
-
}, async ({ path: filePath, oldText, newText }) => {
|
|
57
|
+
}, async ({ path: filePath, oldText: originalOldText, newText }) => {
|
|
55
58
|
try {
|
|
56
59
|
const validatedPath = security.resolveAndValidatePath(filePath);
|
|
57
60
|
const content = await fs.readFile(validatedPath, "utf-8");
|
|
58
|
-
|
|
61
|
+
let oldText = originalOldText;
|
|
59
62
|
let index = content.indexOf(oldText);
|
|
63
|
+
// If exact match fails, try fuzzy matching (ignoring whitespace differences)
|
|
60
64
|
if (index === -1) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
if (
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
const escapedOld = originalOldText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
66
|
+
// Replace whitespace sequences with \s+ to match any whitespace
|
|
67
|
+
const fuzzyRegex = new RegExp(escapedOld.replace(/\s+/g, '\\s+'), 'g');
|
|
68
|
+
const matches = [...content.matchAll(fuzzyRegex)];
|
|
69
|
+
if (matches.length === 1) {
|
|
70
|
+
index = matches[0].index;
|
|
71
|
+
oldText = matches[0][0]; // Use the actual matched text for replacement
|
|
72
|
+
}
|
|
73
|
+
else if (matches.length > 1) {
|
|
68
74
|
return {
|
|
69
|
-
content: [{ type: "text", text: `Error:
|
|
75
|
+
content: [{ type: "text", text: `Error: Multiple fuzzy matches found for the provided text. Please provide more context to uniquely identify the block.` }],
|
|
70
76
|
isError: true,
|
|
71
77
|
};
|
|
72
78
|
}
|
|
79
|
+
}
|
|
80
|
+
if (index === -1) {
|
|
73
81
|
return {
|
|
74
|
-
content: [{ type: "text", text: `Error: Could not find the text block to replace in ${filePath}.
|
|
82
|
+
content: [{ type: "text", text: `Error: Could not find the text block to replace in ${filePath}. Ensure the text matches exactly (including whitespace) or provide more surrounding context.` }],
|
|
75
83
|
isError: true,
|
|
76
84
|
};
|
|
77
85
|
}
|
|
78
86
|
const updatedContent = content.slice(0, index) + newText + content.slice(index + oldText.length);
|
|
79
87
|
await fs.writeFile(validatedPath, updatedContent, "utf-8");
|
|
80
|
-
let response = `Successfully updated ${filePath}`;
|
|
81
|
-
// Add diagnostics feedback
|
|
82
|
-
const rootPath = security.getWorkingDir();
|
|
83
|
-
const diagnostics = await lspManager.getDiagnostics(validatedPath, rootPath);
|
|
84
|
-
if (diagnostics && diagnostics.length > 0) {
|
|
85
|
-
const formatted = diagnostics.map((d) => `[Line ${d.range.start.line + 1}] ${d.message}`).join("\n");
|
|
86
|
-
response += `\n\nWarning: LSP diagnostics found after editing:\n${formatted}`;
|
|
87
|
-
}
|
|
88
88
|
return {
|
|
89
|
-
content: [{ type: "text", text:
|
|
89
|
+
content: [{ type: "text", text: `Successfully updated ${filePath}` }],
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
92
|
catch (error) {
|
|
@@ -108,16 +108,8 @@ export function registerFileTools(server, security) {
|
|
|
108
108
|
const validatedPath = security.resolveAndValidatePath(filePath);
|
|
109
109
|
await fs.mkdir(path.dirname(validatedPath), { recursive: true });
|
|
110
110
|
await fs.writeFile(validatedPath, content, "utf-8");
|
|
111
|
-
let response = `Successfully wrote file: ${filePath}`;
|
|
112
|
-
// Add diagnostics feedback
|
|
113
|
-
const rootPath = security.getWorkingDir();
|
|
114
|
-
const diagnostics = await lspManager.getDiagnostics(validatedPath, rootPath);
|
|
115
|
-
if (diagnostics && diagnostics.length > 0) {
|
|
116
|
-
const formatted = diagnostics.map((d) => `[Line ${d.range.start.line + 1}] ${d.message}`).join("\n");
|
|
117
|
-
response += `\n\nWarning: LSP diagnostics found after writing:\n${formatted}`;
|
|
118
|
-
}
|
|
119
111
|
return {
|
|
120
|
-
content: [{ type: "text", text:
|
|
112
|
+
content: [{ type: "text", text: `Successfully wrote file: ${filePath}` }],
|
|
121
113
|
};
|
|
122
114
|
}
|
|
123
115
|
catch (error) {
|
|
@@ -174,43 +166,98 @@ export function registerFileTools(server, security) {
|
|
|
174
166
|
});
|
|
175
167
|
// search_file_content
|
|
176
168
|
server.registerTool("search_file_content", {
|
|
177
|
-
description: "Perform a global
|
|
169
|
+
description: "Perform a global search for a pattern across all files in the project. Supports regex, case-sensitivity, and glob filters.",
|
|
178
170
|
inputSchema: z.object({
|
|
179
|
-
regex: z.string().describe("The
|
|
180
|
-
includeGlob: z.string().optional().describe("Glob pattern to limit the search (e.g. src/**/*.ts)."),
|
|
171
|
+
regex: z.string().describe("The pattern to search for (regex supported)."),
|
|
172
|
+
includeGlob: z.string().optional().describe("Glob pattern to limit the search (e.g. 'src/**/*.ts')."),
|
|
173
|
+
excludeGlob: z.string().optional().describe("Glob pattern to exclude from the search (e.g. 'node_modules/**')."),
|
|
174
|
+
caseSensitive: z.boolean().optional().describe("Whether the search should be case-sensitive (default: false)."),
|
|
175
|
+
wholeWord: z.boolean().optional().describe("Whether to match whole words only (default: false)."),
|
|
181
176
|
}).strict(),
|
|
182
|
-
}, async ({ regex, includeGlob }) => {
|
|
177
|
+
}, async ({ regex, includeGlob, excludeGlob, caseSensitive = false, wholeWord = false }) => {
|
|
183
178
|
try {
|
|
184
|
-
const searchRegex = new RegExp(regex, "g");
|
|
185
|
-
const results = [];
|
|
186
179
|
const baseDir = security.resolveAndValidatePath(".");
|
|
180
|
+
const rgPath = await ensureRipgrep();
|
|
181
|
+
if (rgPath) {
|
|
182
|
+
try {
|
|
183
|
+
let args = ["--line-number", "--column", "--no-heading", "--color", "never"];
|
|
184
|
+
if (!caseSensitive)
|
|
185
|
+
args.push("--ignore-case");
|
|
186
|
+
if (wholeWord)
|
|
187
|
+
args.push("--word-regexp");
|
|
188
|
+
if (includeGlob) {
|
|
189
|
+
args.push("--glob");
|
|
190
|
+
args.push(includeGlob);
|
|
191
|
+
}
|
|
192
|
+
if (excludeGlob) {
|
|
193
|
+
args.push("--glob");
|
|
194
|
+
args.push(`!${excludeGlob}`);
|
|
195
|
+
}
|
|
196
|
+
args.push("--");
|
|
197
|
+
args.push(regex);
|
|
198
|
+
args.push(baseDir);
|
|
199
|
+
// Use double quotes for all arguments to be safe on Windows
|
|
200
|
+
const command = `"${rgPath}" ${args.map(a => `"${a.replace(/"/g, '\\"')}"`).join(" ")}`;
|
|
201
|
+
const { stdout } = await execAsync(command);
|
|
202
|
+
const lines = stdout.trim().split("\n").filter(l => l.length > 0);
|
|
203
|
+
const formatted = lines.slice(0, 100).map(line => {
|
|
204
|
+
// Robust parsing for path:line:col:text, considering Windows drive letters
|
|
205
|
+
const match = line.match(/^((?:[a-zA-Z]:)?[^:]+):(\d+):(\d+):(.*)$/);
|
|
206
|
+
if (match) {
|
|
207
|
+
const [_, absPath, lineNum, colNum, context] = match;
|
|
208
|
+
const relPath = path.relative(baseDir, absPath);
|
|
209
|
+
return `${relPath}:${lineNum} - ${context.trim()}`;
|
|
210
|
+
}
|
|
211
|
+
return line;
|
|
212
|
+
});
|
|
213
|
+
if (lines.length > 100) {
|
|
214
|
+
formatted.push("... [Search results truncated after 100 matches]");
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
content: [{ type: "text", text: formatted.join("\n") || "No matches found." }],
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
catch (rgError) {
|
|
221
|
+
if (rgError.code === 1) { // rg exit code 1 means no matches
|
|
222
|
+
return { content: [{ type: "text", text: "No matches found." }] };
|
|
223
|
+
}
|
|
224
|
+
// If rg failed for other reasons, fall back to JS
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// JS Fallback
|
|
228
|
+
const results = [];
|
|
229
|
+
const searchRegex = new RegExp(wholeWord ? `\\b${regex}\\b` : regex, caseSensitive ? "g" : "gi");
|
|
187
230
|
async function searchRecursively(currentDir) {
|
|
188
231
|
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
189
232
|
for (const entry of entries) {
|
|
190
233
|
const fullPath = path.join(currentDir, entry.name);
|
|
191
|
-
|
|
192
|
-
if (entry.name === "node_modules" || entry.name === ".git")
|
|
234
|
+
const relPath = path.relative(baseDir, fullPath);
|
|
235
|
+
if (entry.name === "node_modules" || entry.name === ".git" || entry.name.startsWith("."))
|
|
193
236
|
continue;
|
|
194
237
|
if (entry.isDirectory()) {
|
|
195
238
|
await searchRecursively(fullPath);
|
|
196
239
|
}
|
|
197
240
|
else if (entry.isFile()) {
|
|
198
|
-
const relPath = path.relative(baseDir, fullPath);
|
|
199
|
-
// Basic glob matching (simple version)
|
|
200
241
|
if (includeGlob && !relPath.includes(includeGlob.replace(/\*/g, "")))
|
|
201
242
|
continue;
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
243
|
+
if (excludeGlob && relPath.includes(excludeGlob.replace(/\*/g, "")))
|
|
244
|
+
continue;
|
|
245
|
+
try {
|
|
246
|
+
const content = await fs.readFile(fullPath, "utf-8");
|
|
247
|
+
if (content.includes("\0"))
|
|
248
|
+
continue;
|
|
249
|
+
let match;
|
|
250
|
+
while ((match = searchRegex.exec(content)) !== null) {
|
|
251
|
+
const lineNum = content.substring(0, match.index).split(/\r?\n/).length;
|
|
252
|
+
const context = content.split(/\r?\n/)[lineNum - 1];
|
|
253
|
+
results.push(`${relPath}:${lineNum} - ${context.trim()}`);
|
|
254
|
+
if (results.length > 100) {
|
|
255
|
+
results.push("... [Search results truncated after 100 matches]");
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
212
258
|
}
|
|
213
259
|
}
|
|
260
|
+
catch (e) { }
|
|
214
261
|
}
|
|
215
262
|
}
|
|
216
263
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../../src/tools/file-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../../src/tools/file-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Project } from "ts-morph";
|
|
2
1
|
import { z } from "zod";
|
|
3
2
|
import { lspManager } from "../lsp/manager.js";
|
|
4
3
|
/**
|
|
@@ -38,7 +37,7 @@ export function registerLspTools(server, security) {
|
|
|
38
37
|
}, async ({ path: checkPath }) => {
|
|
39
38
|
try {
|
|
40
39
|
const validatedPath = security.resolveAndValidatePath(checkPath);
|
|
41
|
-
const rootPath = security.
|
|
40
|
+
const rootPath = security.getWorkingDir();
|
|
42
41
|
const diagnostics = await lspManager.getDiagnostics(validatedPath, rootPath);
|
|
43
42
|
const formatted = diagnostics.map((d) => `[Line ${d.range.start.line + 1}] ${d.message} (${d.severity === 1 ? 'Error' : 'Warning'})`).join("\n");
|
|
44
43
|
return {
|
|
@@ -78,23 +77,40 @@ export function registerLspTools(server, security) {
|
|
|
78
77
|
});
|
|
79
78
|
// get_document_symbols
|
|
80
79
|
server.registerTool("get_document_symbols", {
|
|
81
|
-
description: "Extract high-level symbols (classes, functions, interfaces) from a
|
|
80
|
+
description: "Extract high-level symbols (classes, functions, interfaces) from a file using LSP.",
|
|
82
81
|
inputSchema: z.object({
|
|
83
|
-
path: z.string().describe("
|
|
82
|
+
path: z.string().describe("File path to analyze."),
|
|
84
83
|
}).strict(),
|
|
85
84
|
}, async ({ path: filePath }) => {
|
|
86
85
|
try {
|
|
87
86
|
const validatedPath = security.resolveAndValidatePath(filePath);
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
87
|
+
const rootPath = security.getWorkingDir();
|
|
88
|
+
const symbols = await lspManager.getDocumentSymbols(validatedPath, rootPath);
|
|
89
|
+
if (!symbols || symbols.length === 0) {
|
|
90
|
+
return { content: [{ type: "text", text: "(No significant symbols found)" }] };
|
|
91
|
+
}
|
|
92
|
+
// Format symbols. The structure can be DocumentSymbol[] or SymbolInformation[]
|
|
93
|
+
const formatSymbol = (sym, indent = "") => {
|
|
94
|
+
const kindMap = {
|
|
95
|
+
1: "File", 2: "Module", 3: "Namespace", 4: "Package", 5: "Class", 6: "Method",
|
|
96
|
+
7: "Property", 8: "Field", 9: "Constructor", 10: "Enum", 11: "Interface",
|
|
97
|
+
12: "Function", 13: "Variable", 14: "Constant", 15: "String", 16: "Number",
|
|
98
|
+
17: "Boolean", 18: "Array", 19: "Object", 20: "Key", 21: "Null", 22: "EnumMember",
|
|
99
|
+
23: "Struct", 24: "Event", 25: "Operator", 26: "TypeParameter"
|
|
100
|
+
};
|
|
101
|
+
const kindStr = kindMap[sym.kind] || `Unknown(${sym.kind})`;
|
|
102
|
+
const line = sym.range ? sym.range.start.line + 1 : (sym.location?.range?.start?.line + 1 || '?');
|
|
103
|
+
let res = `${indent}[${kindStr}] ${sym.name} (Line ${line})\n`;
|
|
104
|
+
if (sym.children) {
|
|
105
|
+
for (const child of sym.children) {
|
|
106
|
+
res += formatSymbol(child, indent + " ");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return res;
|
|
110
|
+
};
|
|
111
|
+
const resultText = symbols.map(s => formatSymbol(s)).join("").trim();
|
|
96
112
|
return {
|
|
97
|
-
content: [{ type: "text", text:
|
|
113
|
+
content: [{ type: "text", text: resultText || "(No significant symbols found)" }],
|
|
98
114
|
};
|
|
99
115
|
}
|
|
100
116
|
catch (error) {
|
|
@@ -106,43 +122,26 @@ export function registerLspTools(server, security) {
|
|
|
106
122
|
});
|
|
107
123
|
// find_references
|
|
108
124
|
server.registerTool("find_references", {
|
|
109
|
-
description: "Find all references to a symbol
|
|
125
|
+
description: "Find all references to a symbol at a specific position in the project.",
|
|
110
126
|
inputSchema: z.object({
|
|
111
|
-
path: z.string().describe("File path where the symbol is
|
|
112
|
-
|
|
127
|
+
path: z.string().describe("File path where the symbol is located."),
|
|
128
|
+
line: z.number().describe("1-based line number."),
|
|
129
|
+
character: z.number().describe("1-based character position."),
|
|
113
130
|
}).strict(),
|
|
114
|
-
}, async ({ path: filePath,
|
|
131
|
+
}, async ({ path: filePath, line, character }) => {
|
|
115
132
|
try {
|
|
116
133
|
const validatedPath = security.resolveAndValidatePath(filePath);
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
throw new Error(`File not found: ${filePath}`);
|
|
122
|
-
}
|
|
123
|
-
// Search for the symbol
|
|
124
|
-
let node;
|
|
125
|
-
// Simple search by name in classes, functions, etc.
|
|
126
|
-
const allNodes = sourceFile.getDescendantsOfKind(1 /* Identifier */);
|
|
127
|
-
node = allNodes.find(n => n.getText() === symbolName);
|
|
128
|
-
if (!node) {
|
|
129
|
-
return {
|
|
130
|
-
content: [{ type: "text", text: `Could not find symbol "${symbolName}" in ${filePath}` }],
|
|
131
|
-
isError: true,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
const references = node.findReferences();
|
|
135
|
-
const results = [];
|
|
136
|
-
for (const reference of references) {
|
|
137
|
-
for (const ref of reference.getReferences()) {
|
|
138
|
-
const refSourceFile = ref.getSourceFile();
|
|
139
|
-
const line = refSourceFile.getLineAndColumnAtPos(ref.getTextSpan().getStart()).line;
|
|
140
|
-
const relPath = security.resolveAndValidatePath(refSourceFile.getFilePath()); // Re-validate or just use relative
|
|
141
|
-
results.push(`${refSourceFile.getFilePath()}:${line}`);
|
|
142
|
-
}
|
|
134
|
+
const rootPath = security.getWorkingDir();
|
|
135
|
+
const references = await lspManager.findReferences(validatedPath, line - 1, character - 1, rootPath);
|
|
136
|
+
if (!references || references.length === 0) {
|
|
137
|
+
return { content: [{ type: "text", text: "No references found." }] };
|
|
143
138
|
}
|
|
139
|
+
const results = references.map((ref) => {
|
|
140
|
+
const uri = ref.uri.replace("file://", "");
|
|
141
|
+
return `${uri}:${ref.range.start.line + 1}`;
|
|
142
|
+
});
|
|
144
143
|
return {
|
|
145
|
-
content: [{ type: "text", text: results.join("\n")
|
|
144
|
+
content: [{ type: "text", text: results.join("\n") }],
|
|
146
145
|
};
|
|
147
146
|
}
|
|
148
147
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-tools.js","sourceRoot":"","sources":["../../../src/tools/lsp-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lsp-tools.js","sourceRoot":"","sources":["../../../src/tools/lsp-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as os from "os";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
export const STAFF_DIR = path.join(os.homedir(), ".staff");
|
|
5
|
+
export const STAFF_TOOLS_DIR = path.join(STAFF_DIR, "tools");
|
|
6
|
+
/**
|
|
7
|
+
* Ensures the core .staff directories exist.
|
|
8
|
+
*/
|
|
9
|
+
export function ensureStaffDirs() {
|
|
10
|
+
[STAFF_DIR, STAFF_TOOLS_DIR].forEach(dir => {
|
|
11
|
+
if (!fs.existsSync(dir)) {
|
|
12
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the correct command name for the current platform (e.g. npm -> npm.cmd on Windows)
|
|
3
|
+
*/
|
|
4
|
+
export declare function getPlatformCommand(cmd: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Ensures a tool is available. If not found in .staff or system PATH,
|
|
7
|
+
* it attempts to install it into .staff/tools.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureTool(name: string, installCmd?: string): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Specialized version for ripgrep since it's a critical dependency
|
|
12
|
+
*/
|
|
13
|
+
export declare function ensureRipgrep(): Promise<string>;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import { exec, spawn } from "child_process";
|
|
4
|
+
import { promisify } from "util";
|
|
5
|
+
import { STAFF_TOOLS_DIR, ensureStaffDirs } from "./paths.js";
|
|
6
|
+
const execAsync = promisify(exec);
|
|
7
|
+
/**
|
|
8
|
+
* Gets the correct command name for the current platform (e.g. npm -> npm.cmd on Windows)
|
|
9
|
+
*/
|
|
10
|
+
export function getPlatformCommand(cmd) {
|
|
11
|
+
if (process.platform === "win32") {
|
|
12
|
+
if (cmd === "npm")
|
|
13
|
+
return "npm.cmd";
|
|
14
|
+
if (cmd === "npx")
|
|
15
|
+
return "npx.cmd";
|
|
16
|
+
}
|
|
17
|
+
return cmd;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Helper to check if a file/dir exists
|
|
21
|
+
*/
|
|
22
|
+
async function exists(p) {
|
|
23
|
+
try {
|
|
24
|
+
await fs.promises.access(p);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Ensures a tool is available. If not found in .staff or system PATH,
|
|
33
|
+
* it attempts to install it into .staff/tools.
|
|
34
|
+
*/
|
|
35
|
+
export async function ensureTool(name, installCmd) {
|
|
36
|
+
ensureStaffDirs();
|
|
37
|
+
const binaryName = process.platform === "win32" ? `${name}.exe` : name;
|
|
38
|
+
const staffBinPath = path.join(STAFF_TOOLS_DIR, "bin", binaryName);
|
|
39
|
+
const staffBinPathAlt = path.join(STAFF_TOOLS_DIR, "bin", name); // Fallback for extensionless
|
|
40
|
+
const staffNodeModulesPath = path.join(STAFF_TOOLS_DIR, "node_modules");
|
|
41
|
+
// 1. Check .staff/tools/bin
|
|
42
|
+
if (await exists(staffBinPath))
|
|
43
|
+
return staffBinPath;
|
|
44
|
+
if (process.platform === "win32" && await exists(staffBinPathAlt))
|
|
45
|
+
return staffBinPathAlt;
|
|
46
|
+
// 2. Check system PATH
|
|
47
|
+
try {
|
|
48
|
+
const checkCmd = process.platform === "win32" ? `where ${name}` : `which ${name}`;
|
|
49
|
+
const { stdout } = await execAsync(checkCmd);
|
|
50
|
+
const resolvedPath = stdout.trim().split("\r\n")[0].split("\n")[0];
|
|
51
|
+
if (resolvedPath)
|
|
52
|
+
return resolvedPath;
|
|
53
|
+
}
|
|
54
|
+
catch { }
|
|
55
|
+
// 3. Check node_modules in .staff/tools
|
|
56
|
+
if (name === "rg") {
|
|
57
|
+
// Special check for @vscode/ripgrep if installed in the tool directory
|
|
58
|
+
const rgInStaff = path.join(staffNodeModulesPath, "@vscode", "ripgrep", "bin", binaryName);
|
|
59
|
+
const rgInStaffAlt = path.join(staffNodeModulesPath, "@vscode", "ripgrep", "bin", name);
|
|
60
|
+
if (await exists(rgInStaff))
|
|
61
|
+
return rgInStaff;
|
|
62
|
+
if (process.platform === "win32" && await exists(rgInStaffAlt))
|
|
63
|
+
return rgInStaffAlt;
|
|
64
|
+
}
|
|
65
|
+
// 4. Trigger Auto-Installation if missing
|
|
66
|
+
if (installCmd) {
|
|
67
|
+
console.log(`Tool '${name}' not found. Installing into ${STAFF_TOOLS_DIR}...`);
|
|
68
|
+
// Ensure node_modules exists
|
|
69
|
+
if (!fs.existsSync(staffNodeModulesPath)) {
|
|
70
|
+
fs.mkdirSync(staffNodeModulesPath, { recursive: true });
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
// Process the install command for platform compatibility
|
|
74
|
+
const parts = installCmd.split(" ");
|
|
75
|
+
const cmd = getPlatformCommand(parts[0]);
|
|
76
|
+
const args = parts.slice(1);
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
const proc = spawn(cmd, args, {
|
|
79
|
+
cwd: STAFF_TOOLS_DIR,
|
|
80
|
+
shell: true,
|
|
81
|
+
stdio: "inherit"
|
|
82
|
+
});
|
|
83
|
+
proc.on("close", (code) => {
|
|
84
|
+
if (code === 0) {
|
|
85
|
+
console.log(`Successfully installed ${name}.`);
|
|
86
|
+
// Try to find it again after installation
|
|
87
|
+
ensureTool(name).then(resolve).catch(reject);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
reject(new Error(`Installation of ${name} failed with code ${code}`));
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
throw new Error(`Failed to run install command for ${name}: ${e.message}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
throw new Error(`Tool '${name}' is not available and no install command was provided.`);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Specialized version for ripgrep since it's a critical dependency
|
|
103
|
+
*/
|
|
104
|
+
export async function ensureRipgrep() {
|
|
105
|
+
// Try to find it in the project's own node_modules first
|
|
106
|
+
const localRgPaths = [
|
|
107
|
+
path.join(process.cwd(), "node_modules", "@vscode", "ripgrep", "bin", process.platform === "win32" ? "rg.exe" : "rg"),
|
|
108
|
+
path.join(process.cwd(), "node_modules", "vscode-ripgrep", "bin", process.platform === "win32" ? "rg.exe" : "rg"),
|
|
109
|
+
// Fallback for missing .exe on Windows
|
|
110
|
+
path.join(process.cwd(), "node_modules", "@vscode", "ripgrep", "bin", "rg"),
|
|
111
|
+
path.join(process.cwd(), "node_modules", "vscode-ripgrep", "bin", "rg"),
|
|
112
|
+
];
|
|
113
|
+
for (const p of localRgPaths) {
|
|
114
|
+
if (await exists(p))
|
|
115
|
+
return p;
|
|
116
|
+
}
|
|
117
|
+
// Otherwise, fall back to global/staff installation
|
|
118
|
+
return ensureTool("rg", "npm install @vscode/ripgrep");
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=tool-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-utils.js","sourceRoot":"","sources":["../../../src/utils/tool-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|