Project Files
src / tools / savePythonFile.ts
import { tool } from "@lmstudio/sdk";
import { z } from "zod";
import { savePythonFile } from "../utils/pythonFileEditor";
import { MAX_FILE_WRITE_BYTES } from "../utils/safePaths";
import { getToolDefinition } from "../utils/toolRegistry";
const TOOL_DEFINITION = getToolDefinition("save_python_file");
export const savePythonFileTool = tool({
name: TOOL_DEFINITION.name,
description: TOOL_DEFINITION.description,
parameters: {
filePath: z.string().min(1).max(500).describe("Python file path relative to workspace or absolute inside workspace."),
content: z.string().max(MAX_FILE_WRITE_BYTES).describe("UTF-8 Python source code to write."),
overwrite: z.boolean().optional().describe("Whether to overwrite an existing file."),
createDirectories: z.boolean().optional().describe("Whether to create missing parent directories."),
},
implementation: async ({ filePath, content, overwrite, createDirectories }) => {
return await savePythonFile({
filePath,
content,
overwrite: overwrite ?? false,
createDirectories: createDirectories ?? false,
});
},
});