src / tools / lsTool.ts

import { tool, ToolsProviderController } from "@lmstudio/sdk";
import { z } from "zod";
import { readdir } from "fs/promises";

export const getLsTool = (ctl: ToolsProviderController) => {
  return tool({
    name: "ls",
    description:
      "List files and directories in a specified path (default is current directory).",
    parameters: {
      path: z.string().optional().default("."),
    },
    implementation: async ({ path }) => {
      try {
        const files = await readdir(path);
        return `Files in ${path}: ${files.join(", ")}`;
      } catch (err) {
        return `Error: ${err}`;
      }
    },
  });
};