Sha256: 15691858deb400bdded1986ce7c8529d5af518ea82ef6a8e8bdc76ba9252cc01

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

module Llm
  module Functions
    class GetGemFilesList < Base
      def function_name
        :get_gem_files_list
      end

      def self.gem_name_enums
        @gem_name_enums ||= ::Bundler.locked_gems.specs.map(&:full_name)
      end

      def definition
        return @definition unless @definition.nil?

        @definition = {
          name: self.function_name,
          description: I18n.t("ghostest.functions.#{self.function_name}.description"),
          parameters: {
            type: :object,
            properties: {
              gem_name: {
                type: :string,
                description: I18n.t("ghostest.functions.#{self.function_name}.parameters.gem_name"),
                enum: self.class.gem_name_enums,
              },
            },
            required: [:gem_name],
          },
        }
        @definition
      end

      def execute_and_generate_message(args)
        unless self.class.gem_name_enums.include?(args['gem_name'])
          return { message: 'invalid gem_name. gem_name is below' + self.class.gem_name_enums.join("\n") }
        end
        files_list = Dir.glob("#{Gem.paths.home}/gems/#{args['gem_name']}/**/*.{rb,yml}")

        { files_list: }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ghostest-0.1.0 lib/llm/functions/get_gem_files_list.rb