Module: RubyLLM::Toolbox

Defined in:
lib/ruby_llm/toolbox.rb,
lib/ruby_llm/toolbox/base.rb,
lib/ruby_llm/toolbox/toml.rb,
lib/ruby_llm/toolbox/version.rb,
lib/ruby_llm/toolbox/data_path.rb,
lib/ruby_llm/toolbox/safe_math.rb,
lib/ruby_llm/toolbox/text_diff.rb,
lib/ruby_llm/toolbox/truncator.rb,
lib/ruby_llm/toolbox/tools/diff.rb,
lib/ruby_llm/toolbox/tools/glob.rb,
lib/ruby_llm/toolbox/tools/lint.rb,
lib/ruby_llm/toolbox/tools/tree.rb,
lib/ruby_llm/toolbox/ruby_outline.rb,
lib/ruby_llm/toolbox/sandbox/base.rb,
lib/ruby_llm/toolbox/search/brave.rb,
lib/ruby_llm/toolbox/tools/bundle.rb,
lib/ruby_llm/toolbox/configuration.rb,
lib/ruby_llm/toolbox/search/tavily.rb,
lib/ruby_llm/toolbox/tools/git_add.rb,
lib/ruby_llm/toolbox/tools/git_log.rb,
lib/ruby_llm/toolbox/process_runner.rb,
lib/ruby_llm/toolbox/sandbox/docker.rb,
lib/ruby_llm/toolbox/search/searxng.rb,
lib/ruby_llm/toolbox/tools/csv_read.rb,
lib/ruby_llm/toolbox/tools/gem_tool.rb,
lib/ruby_llm/toolbox/tools/git_diff.rb,
lib/ruby_llm/toolbox/tools/git_grep.rb,
lib/ruby_llm/toolbox/tools/git_show.rb,
lib/ruby_llm/toolbox/tools/run_ruby.rb,
lib/ruby_llm/toolbox/tools/run_rust.rb,
lib/ruby_llm/toolbox/tools/bash_tool.rb,
lib/ruby_llm/toolbox/tools/csv_write.rb,
lib/ruby_llm/toolbox/tools/date_time.rb,
lib/ruby_llm/toolbox/tools/edit_file.rb,
lib/ruby_llm/toolbox/tools/git_blame.rb,
lib/ruby_llm/toolbox/tools/move_file.rb,
lib/ruby_llm/toolbox/tools/read_file.rb,
lib/ruby_llm/toolbox/tools/run_tests.rb,
lib/ruby_llm/toolbox/tools/web_fetch.rb,
lib/ruby_llm/toolbox/process_registry.rb,
lib/ruby_llm/toolbox/safety/path_jail.rb,
lib/ruby_llm/toolbox/safety/url_guard.rb,
lib/ruby_llm/toolbox/tools/calculator.rb,
lib/ruby_llm/toolbox/tools/git_branch.rb,
lib/ruby_llm/toolbox/tools/git_commit.rb,
lib/ruby_llm/toolbox/tools/git_status.rb,
lib/ruby_llm/toolbox/tools/grep_files.rb,
lib/ruby_llm/toolbox/tools/json_query.rb,
lib/ruby_llm/toolbox/tools/multi_edit.rb,
lib/ruby_llm/toolbox/tools/parse_ruby.rb,
lib/ruby_llm/toolbox/tools/run_python.rb,
lib/ruby_llm/toolbox/tools/todo_write.rb,
lib/ruby_llm/toolbox/tools/toml_query.rb,
lib/ruby_llm/toolbox/tools/web_search.rb,
lib/ruby_llm/toolbox/tools/write_file.rb,
lib/ruby_llm/toolbox/tools/yaml_query.rb,
lib/ruby_llm/toolbox/tools/apply_patch.rb,
lib/ruby_llm/toolbox/tools/delete_file.rb,
lib/ruby_llm/toolbox/tools/git_helpers.rb,
lib/ruby_llm/toolbox/tools/sandbox_run.rb,
lib/ruby_llm/toolbox/sandbox/bubblewrap.rb,
lib/ruby_llm/toolbox/tools/git_checkout.rb,
lib/ruby_llm/toolbox/tools/http_helpers.rb,
lib/ruby_llm/toolbox/tools/http_request.rb,
lib/ruby_llm/toolbox/tools/process_kill.rb,
lib/ruby_llm/toolbox/tools/process_list.rb,
lib/ruby_llm/toolbox/tools/python_tests.rb,
lib/ruby_llm/toolbox/tools/download_file.rb,
lib/ruby_llm/toolbox/tools/process_start.rb,
lib/ruby_llm/toolbox/safety/command_guard.rb,
lib/ruby_llm/toolbox/sandbox/sandbox_exec.rb,
lib/ruby_llm/toolbox/tools/list_directory.rb,
lib/ruby_llm/toolbox/tools/process_output.rb,
lib/ruby_llm/toolbox/tools/create_directory.rb,
lib/ruby_llm/toolbox/tools/replace_in_files.rb,
lib/ruby_llm/toolbox/tools/toolchain_helpers.rb

Overview

A safe-by-default bundle of RubyLLM::Tool classes covering the skills common to most LLM harnesses. One require loads everything; the dangerous tools are inert until you flip config.enable_exec_tools.

Defined Under Namespace

Modules: DataPath, ProcessRegistry, ProcessRunner, RubyOutline, SafeMath, Safety, Sandbox, Search, TextDiff, Toml, Tools Classes: Base, Configuration, ManagedProcess, Truncator

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.all_tools(**overrides) ⇒ Object

Everything. Exec tools still honor the gate at call time, so handing the full set to a chat is safe by default.



156
157
158
# File 'lib/ruby_llm/toolbox.rb', line 156

def all_tools(**overrides)
  safe_tools(**overrides) + exec_tools(**overrides)
end

.configObject



79
80
81
# File 'lib/ruby_llm/toolbox.rb', line 79

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



83
84
85
# File 'lib/ruby_llm/toolbox.rb', line 83

def configure
  yield config
end

.exec_tools(**overrides) ⇒ Object

Tools whose effects are gated behind enable_exec_tools.



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/ruby_llm/toolbox.rb', line 127

def exec_tools(**overrides)
  [
    Tools::WriteFile.new(**overrides),
    Tools::EditFile.new(**overrides),
    Tools::MultiEdit.new(**overrides),
    Tools::CreateDirectory.new(**overrides),
    Tools::MoveFile.new(**overrides),
    Tools::DeleteFile.new(**overrides),
    Tools::GitAdd.new(**overrides),
    Tools::GitCommit.new(**overrides),
    Tools::GitCheckout.new(**overrides),
    Tools::ApplyPatch.new(**overrides),
    Tools::CsvWrite.new(**overrides),
    Tools::ReplaceInFiles.new(**overrides),
    Tools::DownloadFile.new(**overrides),
    Tools::RunTests.new(**overrides),
    Tools::PythonTests.new(**overrides),
    Tools::Lint.new(**overrides),
    Tools::Bundle.new(**overrides),
    Tools::BashTool.new(**overrides),
    Tools::ProcessStart.new(**overrides),
    Tools::RunRuby.new(**overrides),
    Tools::RunPython.new(**overrides),
    Tools::RunRust.new(**overrides)
  ]
end

.reset!Object

Resets global config. Primarily for tests.



88
89
90
# File 'lib/ruby_llm/toolbox.rb', line 88

def reset!
  @config = nil
end

.safe_tools(**overrides) ⇒ Object

Always-on, read-only tools.



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/ruby_llm/toolbox.rb', line 93

def safe_tools(**overrides)
  [
    Tools::ReadFile.new(**overrides),
    Tools::ListDirectory.new(**overrides),
    Tools::Tree.new(**overrides),
    Tools::Glob.new(**overrides),
    Tools::GrepFiles.new(**overrides),
    Tools::GemTool.new(**overrides),
    Tools::ParseRuby.new(**overrides),
    Tools::WebFetch.new(**overrides),
    Tools::WebSearch.new(**overrides),
    Tools::HttpRequest.new(**overrides),
    Tools::GitStatus.new(**overrides),
    Tools::GitDiff.new(**overrides),
    Tools::GitLog.new(**overrides),
    Tools::GitShow.new(**overrides),
    Tools::GitBlame.new(**overrides),
    Tools::GitGrep.new(**overrides),
    Tools::GitBranch.new(**overrides),
    Tools::JsonQuery.new(**overrides),
    Tools::YamlQuery.new(**overrides),
    Tools::TomlQuery.new(**overrides),
    Tools::CsvRead.new(**overrides),
    Tools::Calculator.new(**overrides),
    Tools::DateTime.new(**overrides),
    Tools::Diff.new(**overrides),
    Tools::TodoWrite.new(**overrides),
    Tools::ProcessOutput.new(**overrides),
    Tools::ProcessList.new(**overrides),
    Tools::ProcessKill.new(**overrides)
  ]
end