staff-mcp 1.0.2 → 1.0.3

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 CHANGED
@@ -4,6 +4,7 @@ import * as path from "path";
4
4
  import { createServer } from "./server.js";
5
5
  import { startStdioServer } from "./transports/stdio.js";
6
6
  import { startHttpServer } from "./transports/http.js";
7
+ import { ensureStaffDirs } from "./utils/paths.js";
7
8
  const program = new Command();
8
9
  program
9
10
  .name("staff-mcp")
@@ -15,6 +16,7 @@ program
15
16
  .option("-w, --working-dir <path>", "Working directory for the server (defaults to current execution path)", process.cwd())
16
17
  .option("-d, --allowed-dir <paths...>", "Additional directories allowed for sandbox", [])
17
18
  .action(async (options) => {
19
+ ensureStaffDirs();
18
20
  const workingDir = path.resolve(options.workingDir);
19
21
  const allowedDirs = options.allowedDir.map((d) => path.resolve(d));
20
22
  const server = createServer("staff-mcp", "1.0.0", workingDir, allowedDirs);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,wBAAwB,EAAE,gCAAgC,EAAE,OAAO,CAAC;KAC3E,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,WAAW,CAAC;KACnE,MAAM,CAAC,0BAA0B,EAAE,uEAAuE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC1H,MAAM,CAAC,8BAA8B,EAAE,4CAA4C,EAAE,EAAE,CAAC;KACxF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE3E,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,wBAAwB,EAAE,gCAAgC,EAAE,OAAO,CAAC;KAC3E,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,WAAW,CAAC;KACnE,MAAM,CAAC,0BAA0B,EAAE,uEAAuE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC1H,MAAM,CAAC,8BAA8B,EAAE,4CAA4C,EAAE,EAAE,CAAC;KACxF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,eAAe,EAAE,CAAC;IAClB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE3E,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -22,7 +22,6 @@ export declare class LSPClient {
22
22
  export declare class LSPManager {
23
23
  readonly DEFAULT_CONFIGS: Record<string, LSPConfig>;
24
24
  private clients;
25
- private lspDir;
26
25
  constructor();
27
26
  ensureServer(language: string): Promise<void>;
28
27
  getClient(language: string, rootPath: string): Promise<LSPClient>;
@@ -1,16 +1,18 @@
1
- import { spawn } from "child_process";
1
+ import { spawn, execSync } from "child_process";
2
2
  import * as path from "path";
3
- import * as os from "os";
4
3
  import * as fs from "fs";
4
+ import { STAFF_TOOLS_DIR, ensureStaffDirs } from "../utils/paths.js";
5
+ import { getPlatformCommand } from "../utils/tool-utils.js";
6
+ const STAFF_NODE_MODULES = path.join(STAFF_TOOLS_DIR, "node_modules");
5
7
  const DEFAULT_CONFIGS = {
6
8
  typescript: {
7
- command: ["node", path.join(os.homedir(), ".staff/lsp/node_modules/typescript-language-server/lib/cli.mjs"), "--stdio"],
8
- installCommand: "npm install --prefix " + path.join(os.homedir(), ".staff/lsp") + " typescript-language-server typescript",
9
+ command: ["node", path.join(STAFF_NODE_MODULES, "typescript-language-server/lib/cli.mjs"), "--stdio"],
10
+ installCommand: `npm install typescript-language-server typescript`,
9
11
  extensions: [".ts", ".tsx", ".js", ".jsx"]
10
12
  },
11
13
  python: {
12
- command: ["node", path.join(os.homedir(), ".staff/lsp/node_modules/pyright/dist/pyright-langserver.js"), "--stdio"],
13
- installCommand: "npm install --prefix " + path.join(os.homedir(), ".staff/lsp") + " pyright",
14
+ command: ["node", path.join(STAFF_NODE_MODULES, "pyright/dist/pyright-langserver.js"), "--stdio"],
15
+ installCommand: `npm install pyright`,
14
16
  extensions: [".py"]
15
17
  },
16
18
  go: {
@@ -18,21 +20,6 @@ const DEFAULT_CONFIGS = {
18
20
  installCommand: "go install golang.org/x/tools/gopls@latest",
19
21
  extensions: [".go"]
20
22
  },
21
- cpp: {
22
- command: ["clangd"],
23
- installCommand: "echo 'Please install clangd (e.g., sudo apt install clangd)'",
24
- extensions: [".c", ".cpp", ".h", ".hpp"]
25
- },
26
- java: {
27
- command: ["jdtls"],
28
- installCommand: "echo 'Please install jdtls and ensure it is in your PATH'",
29
- extensions: [".java"]
30
- },
31
- kotlin: {
32
- command: ["kotlin-language-server"],
33
- installCommand: "echo 'Please install kotlin-language-server and ensure it is in your PATH'",
34
- extensions: [".kt", ".kts"]
35
- },
36
23
  rust: {
37
24
  command: ["rust-analyzer"],
38
25
  installCommand: "rustup component add rust-analyzer",
@@ -51,9 +38,11 @@ export class LSPClient {
51
38
  this.rootPath = rootPath;
52
39
  }
53
40
  async start() {
54
- this.process = spawn(this.config.command[0], this.config.command.slice(1), {
41
+ const executable = getPlatformCommand(this.config.command[0]);
42
+ this.process = spawn(executable, this.config.command.slice(1), {
55
43
  cwd: this.rootPath,
56
- stdio: ["pipe", "pipe", "pipe"]
44
+ stdio: ["pipe", "pipe", "pipe"],
45
+ shell: true // Using shell helps with path resolution on Windows
57
46
  });
58
47
  this.process.stdout?.on("data", (data) => {
59
48
  this.handleData(data.toString());
@@ -141,44 +130,44 @@ export class LSPClient {
141
130
  export class LSPManager {
142
131
  DEFAULT_CONFIGS = DEFAULT_CONFIGS;
143
132
  clients = new Map();
144
- lspDir = path.join(os.homedir(), ".staff/lsp");
145
133
  constructor() {
146
- if (!fs.existsSync(this.lspDir)) {
147
- fs.mkdirSync(this.lspDir, { recursive: true });
134
+ ensureStaffDirs();
135
+ if (!fs.existsSync(STAFF_NODE_MODULES)) {
136
+ fs.mkdirSync(STAFF_NODE_MODULES, { recursive: true });
148
137
  }
149
138
  }
150
139
  async ensureServer(language) {
151
140
  const config = DEFAULT_CONFIGS[language];
152
- if (!config || !config.installCommand)
141
+ if (!config)
142
+ return;
143
+ // Check if it's a node module we manage
144
+ const serverPath = config.command[1];
145
+ if (serverPath && path.isAbsolute(serverPath) && fs.existsSync(serverPath)) {
153
146
  return;
147
+ }
154
148
  // Check if the command exists in PATH
155
149
  const cmd = config.command[0];
156
- const { execSync } = await import("child_process");
157
150
  try {
158
151
  const checkCmd = process.platform === 'win32' ? `where ${cmd}` : `which ${cmd}`;
159
152
  execSync(checkCmd, { stdio: 'ignore' });
160
153
  return; // Found in PATH
161
154
  }
162
155
  catch {
163
- // Not in PATH, check if it's a specific node_module path we manage
164
- if (path.isAbsolute(cmd) && fs.existsSync(cmd)) {
165
- return;
166
- }
167
- // Check common user bin path for go
168
- if (language === 'go') {
169
- const goBin = path.join(os.homedir(), 'go', 'bin', 'gopls');
170
- if (fs.existsSync(goBin)) {
171
- config.command[0] = goBin;
172
- return;
156
+ if (config.installCommand) {
157
+ console.log(`LSP server '${cmd}' not found. Attempting auto-install for ${language}...`);
158
+ try {
159
+ const installParts = config.installCommand.split(" ");
160
+ const platformNpm = getPlatformCommand(installParts[0]);
161
+ const args = installParts.slice(1);
162
+ execSync(`${platformNpm} ${args.join(" ")}`, {
163
+ cwd: STAFF_TOOLS_DIR,
164
+ stdio: 'inherit',
165
+ shell: true
166
+ });
167
+ }
168
+ catch (e) {
169
+ console.error(`Failed to install LSP for ${language}:`, e);
173
170
  }
174
- }
175
- console.log(`LSP server '${cmd}' not found. Attempting install for ${language}...`);
176
- try {
177
- // Use inherit only for major installs to avoid blocking
178
- execSync(config.installCommand, { stdio: 'pipe' });
179
- }
180
- catch (e) {
181
- console.error(`Failed to install LSP for ${language}:`, e);
182
171
  }
183
172
  }
184
173
  }
@@ -190,18 +179,6 @@ export class LSPManager {
190
179
  const config = DEFAULT_CONFIGS[language];
191
180
  if (!config)
192
181
  throw new Error(`Unsupported language: ${language}`);
193
- // Verify binary exists before spawning
194
- const cmd = config.command[0];
195
- const { execSync } = await import("child_process");
196
- try {
197
- const checkCmd = process.platform === 'win32' ? `where ${cmd}` : `which ${cmd}`;
198
- execSync(checkCmd, { stdio: 'ignore' });
199
- }
200
- catch {
201
- if (!path.isAbsolute(cmd) || !fs.existsSync(cmd)) {
202
- throw new Error(`LSP server binary '${cmd}' not found for ${language}`);
203
- }
204
- }
205
182
  const client = new LSPClient(config, rootPath);
206
183
  await client.start();
207
184
  this.clients.set(key, client);
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/lsp/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/lsp/manager.ts"],"names":[],"mappings":"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"}
@@ -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 { lspManager } from "../lsp/manager.js";
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
- // Simple fuzzy match: try exact first, then trimmed
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
- // Try fuzzy: trim and normalize line endings
62
- const normalize = (s) => s.replace(/\r\n/g, "\n").trim();
63
- const normalizedContent = normalize(content);
64
- const normalizedOld = normalize(oldText);
65
- if (normalizedContent.includes(normalizedOld)) {
66
- // If normalized matches, we need to find the actual position in the original content
67
- // For simplicity, if exact match fails but normalized would work, we warn the model
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: The oldText provided did not match exactly. Please ensure whitespace and line endings match or provide more context.` }],
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}. Check for typos or provide more context.` }],
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: response }],
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: response }],
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 regex search for a specific string across all files in the project.",
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 regular expression pattern to search for."),
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
- // Simple check to skip node_modules and .git
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
- const content = await fs.readFile(fullPath, "utf-8");
203
- let match;
204
- while ((match = searchRegex.exec(content)) !== null) {
205
- // Find line number using cross-platform line endings
206
- const lineNum = content.substring(0, match.index).split(/\r?\n/).length;
207
- const context = content.split(/\r?\n/)[lineNum - 1];
208
- results.push(`${relPath}:${lineNum} - ${context.trim()}`);
209
- if (results.length > 100) {
210
- results.push("... [Search results truncated after 100 matches]");
211
- return;
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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"}
@@ -0,0 +1,6 @@
1
+ export declare const STAFF_DIR: string;
2
+ export declare const STAFF_TOOLS_DIR: string;
3
+ /**
4
+ * Ensures the core .staff directories exist.
5
+ */
6
+ export declare function ensureStaffDirs(): void;
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "staff-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "main": "dist/src/index.js",
6
6
  "bin": {
@@ -21,6 +21,7 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@modelcontextprotocol/sdk": "^1.1.0",
24
+ "@vscode/ripgrep": "^1.17.1",
24
25
  "commander": "^12.1.0",
25
26
  "cors": "^2.8.5",
26
27
  "express": "^4.21.1",