Remove list_files mcp
This commit is contained in:
@@ -143,7 +143,6 @@ Tool names may be formatted as \`(server name)/(tool name)\`, for example: \`${g
|
|||||||
|
|
||||||
**Git operations**: All git operations must use ${ghPullfrogMcpName} MCP tools to ensure proper authentication and commit attribution. Do NOT use git commands directly (e.g., \`git commit\`, \`git push\`, \`git checkout\`, \`git branch\`) - these will use incorrect credentials and attribute commits to the wrong author.
|
**Git operations**: All git operations must use ${ghPullfrogMcpName} MCP tools to ensure proper authentication and commit attribution. Do NOT use git commands directly (e.g., \`git commit\`, \`git push\`, \`git checkout\`, \`git branch\`) - these will use incorrect credentials and attribute commits to the wrong author.
|
||||||
|
|
||||||
**File discovery**: Use \`${ghPullfrogMcpName}/list_files\` to discover files in the repository. This tool finds both git-tracked and untracked files, including newly created files that haven't been committed yet. Prefer this over native agent tools like \`glob\` or \`grep\` for file discovery, as it provides consistent results and handles untracked files correctly.
|
|
||||||
` +
|
` +
|
||||||
// **Available git MCP tools**:
|
// **Available git MCP tools**:
|
||||||
// - \`${ghPullfrogMcpName}/checkout_pr\` - Checkout an existing PR branch locally (handles fork PRs automatically)
|
// - \`${ghPullfrogMcpName}/checkout_pr\` - Checkout an existing PR branch locally (handles fork PRs automatically)
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
add a file implementing quicksort and test it
|
Find all markdown files in the repository and list their names from https://github.com/ShawnMorreau/cal.com/
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
import { relative, resolve } from "node:path";
|
|
||||||
import { type } from "arktype";
|
|
||||||
import type { ToolContext } from "../main.ts";
|
|
||||||
import { $ } from "../utils/shell.ts";
|
|
||||||
import { execute, tool } from "./shared.ts";
|
|
||||||
|
|
||||||
export const ListFiles = type({
|
|
||||||
path: type.string
|
|
||||||
.describe("The path to list files from (defaults to current directory)")
|
|
||||||
.default("."),
|
|
||||||
});
|
|
||||||
|
|
||||||
export function ListFilesTool(_ctx: ToolContext) {
|
|
||||||
return tool({
|
|
||||||
name: "list_files",
|
|
||||||
description:
|
|
||||||
"List files in the repository, including both git-tracked and untracked files. Useful for discovering the file structure and locating files, including newly created files that haven't been committed yet.",
|
|
||||||
parameters: ListFiles,
|
|
||||||
execute: execute(async ({ path }: { path?: string }) => {
|
|
||||||
const pathStr = path ?? ".";
|
|
||||||
const cwd = process.cwd();
|
|
||||||
|
|
||||||
// Get git-tracked files
|
|
||||||
let gitFiles: string[] = [];
|
|
||||||
let gitFailed = false;
|
|
||||||
try {
|
|
||||||
const gitArgs = pathStr === "." ? ["ls-files"] : ["ls-files", pathStr];
|
|
||||||
const gitOutput = $("git", gitArgs, { log: false });
|
|
||||||
gitFiles = gitOutput
|
|
||||||
.split("\n")
|
|
||||||
.filter((f) => f.trim() !== "")
|
|
||||||
.map((f) => f.trim());
|
|
||||||
} catch {
|
|
||||||
// git might fail, that's ok - we'll use find instead
|
|
||||||
gitFailed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always also check filesystem for untracked files
|
|
||||||
// This is important because newly created files won't be in git yet
|
|
||||||
let filesystemFiles: string[] = [];
|
|
||||||
let findFailed = false;
|
|
||||||
try {
|
|
||||||
const findOutput = $(
|
|
||||||
"find",
|
|
||||||
[pathStr, "-maxdepth", "3", "-not", "-path", "*/.*", "-type", "f"],
|
|
||||||
{ log: false }
|
|
||||||
);
|
|
||||||
filesystemFiles = findOutput
|
|
||||||
.split("\n")
|
|
||||||
.filter((f) => f.trim() !== "")
|
|
||||||
.map((f) => {
|
|
||||||
const trimmed = f.trim();
|
|
||||||
// normalize to relative paths for comparison
|
|
||||||
try {
|
|
||||||
return relative(cwd, resolve(cwd, trimmed));
|
|
||||||
} catch {
|
|
||||||
return trimmed;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch {
|
|
||||||
// find might fail, that's ok - we'll just use git files
|
|
||||||
findFailed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if both methods failed, throw an error (execute helper will handle it)
|
|
||||||
if (gitFailed && findFailed) {
|
|
||||||
throw new Error(
|
|
||||||
`Failed to list files: both git ls-files and find commands failed. ` +
|
|
||||||
`Path: ${pathStr}, working directory: ${cwd}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a Set of git files for efficient lookup
|
|
||||||
const gitFilesSet = new Set(gitFiles);
|
|
||||||
|
|
||||||
// Combine both lists, removing duplicates
|
|
||||||
const allFiles = [...new Set([...gitFiles, ...filesystemFiles])].sort();
|
|
||||||
|
|
||||||
// Calculate actual untracked count (files in filesystem but not in git)
|
|
||||||
const untrackedFiles = filesystemFiles.filter((f) => !gitFilesSet.has(f));
|
|
||||||
const untrackedCount = untrackedFiles.length;
|
|
||||||
|
|
||||||
return {
|
|
||||||
files: allFiles,
|
|
||||||
method: "combined",
|
|
||||||
trackedCount: gitFiles.length,
|
|
||||||
untrackedCount,
|
|
||||||
};
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -17,7 +17,6 @@ import {
|
|||||||
AwaitDependencyInstallationTool,
|
AwaitDependencyInstallationTool,
|
||||||
StartDependencyInstallationTool,
|
StartDependencyInstallationTool,
|
||||||
} from "./dependencies.ts";
|
} from "./dependencies.ts";
|
||||||
import { ListFilesTool } from "./files.ts";
|
|
||||||
import { CommitFilesTool, CreateBranchTool, PushBranchTool } from "./git.ts";
|
import { CommitFilesTool, CreateBranchTool, PushBranchTool } from "./git.ts";
|
||||||
import { IssueTool } from "./issue.ts";
|
import { IssueTool } from "./issue.ts";
|
||||||
import { GetIssueCommentsTool } from "./issueComments.ts";
|
import { GetIssueCommentsTool } from "./issueComments.ts";
|
||||||
@@ -95,7 +94,6 @@ export async function startMcpHttpServer(
|
|||||||
CreateBranchTool(ctx),
|
CreateBranchTool(ctx),
|
||||||
CommitFilesTool(ctx),
|
CommitFilesTool(ctx),
|
||||||
PushBranchTool(ctx),
|
PushBranchTool(ctx),
|
||||||
ListFilesTool(ctx),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (!ctx.payload.disableProgressComment) {
|
if (!ctx.payload.disableProgressComment) {
|
||||||
|
|||||||
Reference in New Issue
Block a user