Class FileFunctionTools

java.lang.Object
org.machanism.machai.gw.tools.FileFunctionTools
All Implemented Interfaces:
FunctionTools

public class FileFunctionTools extends Object implements FunctionTools
Installs file-system tools into a Genai.

Tools in this installer are intended for host-integrated use where the host controls the base working directory. All paths provided to these tools are interpreted relative to the working directory supplied by the provider/runtime.

Installed tools

  • read_file_from_file_system – reads a file as text
  • write_file_to_file_system – writes a file (creating parent directories as needed)
  • list_files_in_directory – lists immediate children of a directory
  • get_recursive_file_list – recursively lists all files under a directory
Author:
Viktor Tovstyi
  • Constructor Details

    • FileFunctionTools

      public FileFunctionTools()
  • Method Details

    • applyTools

      public void applyTools(Genai provider)
      Registers file read/write/list tools into the provided provider.
      Specified by:
      applyTools in interface FunctionTools
      Parameters:
      provider - provider instance
    • getRecursiveFiles

      public Object getRecursiveFiles(com.fasterxml.jackson.databind.JsonNode params, File workingDir)
      Implements get_recursive_file_list.

      Expected parameters:

      1. JsonNode optionally containing dir_path
      2. File working directory
      Parameters:
      params - tool arguments
      Returns:
      a newline-separated list of project-relative file paths, or a message if no files are found
    • listFiles

      public Object listFiles(com.fasterxml.jackson.databind.JsonNode params, File workingDir)
      Implements list_files_in_directory.

      Expected parameters:

      1. JsonNode optionally containing dir_path
      2. File working directory
      Parameters:
      params - tool arguments
      Returns:
      a comma-separated list of project-relative paths, or a message if the directory does not exist or is empty
    • writeFile

      public Object writeFile(com.fasterxml.jackson.databind.JsonNode props, File workingDir)
      Implements write_file_to_file_system.

      Expected parameters:

      1. JsonNode containing file_path, text, start_position, and end_position
      2. File working directory
      Parameters:
      params - tool arguments
      Returns:
      success message, or an error message if writing fails
    • readFile

      public Object readFile(com.fasterxml.jackson.databind.JsonNode props, File workingDir)
      Implements read_file_from_file_system.

      Expected parameters:

      1. JsonNode containing file_path
      2. File working directory
      Parameters:
      params - tool arguments
      Returns:
      file content as text, or a message if the file does not exist
      Throws:
      IllegalArgumentException - on I/O error
    • getRelativePath

      public static String getRelativePath(File dir, File file, boolean addSingleDot)
      Computes a project-relative path string.

      The returned path always uses forward slashes (/) for consistency across platforms.

      Parameters:
      dir - base directory used to relativize the file
      file - target file or directory
      addSingleDot - whether to prefix relative paths with ./
      Returns:
      relative path, . if dir equals file, or null if file is not a descendant of dir