shared_tools 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +36 -33
  4. data/lib/shared_tools/llm_rb.rb +2 -0
  5. data/lib/shared_tools/omniai.rb +2 -0
  6. data/lib/shared_tools/raix/what_is_the_weather.rb +18 -0
  7. data/lib/shared_tools/raix.rb +9 -0
  8. data/lib/shared_tools/ruby_llm/edit_file.rb +1 -0
  9. data/lib/shared_tools/ruby_llm/incomplete/calculator_tool.rb +70 -0
  10. data/lib/shared_tools/ruby_llm/incomplete/composite_analysis_tool.rb +89 -0
  11. data/lib/shared_tools/ruby_llm/incomplete/data_science_kit.rb +128 -0
  12. data/lib/shared_tools/ruby_llm/incomplete/database_query_tool.rb +100 -0
  13. data/lib/shared_tools/ruby_llm/incomplete/devops_toolkit.rb +112 -0
  14. data/lib/shared_tools/ruby_llm/incomplete/error_handling_tool.rb +109 -0
  15. data/lib/shared_tools/ruby_llm/incomplete/secure_tool_template.rb +117 -0
  16. data/lib/shared_tools/ruby_llm/incomplete/weather_tool.rb +110 -0
  17. data/lib/shared_tools/ruby_llm/incomplete/workflow_manager_tool.rb +145 -0
  18. data/lib/shared_tools/ruby_llm/list_files.rb +1 -0
  19. data/lib/shared_tools/ruby_llm/mcp/github_mcp_server.rb +51 -0
  20. data/lib/shared_tools/ruby_llm/mcp/imcp.rb +28 -0
  21. data/lib/shared_tools/ruby_llm/mcp.rb +10 -0
  22. data/lib/shared_tools/ruby_llm/pdf_page_reader.rb +1 -0
  23. data/lib/shared_tools/ruby_llm/python_eval.rb +4 -8
  24. data/lib/shared_tools/ruby_llm/read_file.rb +1 -0
  25. data/lib/shared_tools/ruby_llm/ruby_eval.rb +4 -8
  26. data/lib/shared_tools/ruby_llm/run_shell_command.rb +3 -4
  27. data/lib/shared_tools/ruby_llm.rb +6 -1
  28. data/lib/shared_tools/version.rb +1 -1
  29. data/lib/shared_tools.rb +35 -2
  30. metadata +44 -2
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SharedTools
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/shared_tools.rb CHANGED
@@ -1,21 +1,54 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'io/console'
4
+
3
5
  require "zeitwerk"
4
6
  loader = Zeitwerk::Loader.for_gem
5
7
  # Ignore aggregate loader files that don't define constants
6
8
  loader.ignore("#{__dir__}/shared_tools/ruby_llm.rb")
7
9
  loader.ignore("#{__dir__}/shared_tools/llm_rb.rb")
8
10
  loader.ignore("#{__dir__}/shared_tools/omniai.rb")
11
+ loader.ignore("#{__dir__}/shared_tools/raix.rb")
9
12
  loader.setup
10
13
 
11
14
  module SharedTools
12
- @st_supported_gems = [:ruby_llm, :llm_rb, :omniai]
15
+ SUPPORTED_GEMS ||= %i(ruby_llm llm_rb omniai raix)
16
+ @auto_execute ||= false # Human in the loop
17
+ @mcp_servers ||= []
13
18
 
14
19
  class << self
20
+ def mcp_servers
21
+ @mcp_servers
22
+ end
23
+
24
+ def mcp_servers=(client)
25
+ @mcp_servers << client
26
+ end
27
+
28
+ def auto_execute(wildwest=true)
29
+ @auto_execute = wildwest
30
+ end
31
+
32
+ def execute?(tool: 'unknown', stuff: '')
33
+ # Return true if auto_execute is explicitly enabled
34
+ return true if @auto_execute == true
35
+
36
+ puts "\n\nThe AI (tool: #{tool}) wants to do the following ..."
37
+ puts "="*42
38
+ puts(stuff.empty? ? "unknown strange and mysterious things" : stuff)
39
+ puts "="*42
40
+
41
+ sleep 0.2 if defined?(AIA) # Allows CLI spinner to recycle
42
+ print "\nIs it okay to proceed? (y/N"
43
+ STDIN.getch == "y"
44
+ end
45
+
46
+
15
47
  def detected_gem
16
48
  return :ruby_llm if defined?(::RubyLLM::Tool)
17
49
  return :llm_rb if defined?(::LLM) || defined?(::Llm)
18
50
  return :omniai if defined?(::OmniAI) || defined?(::Omniai)
51
+ return :raix if defined?(::Raix::FunctionDispatch)
19
52
  nil
20
53
  end
21
54
 
@@ -27,6 +60,6 @@ module SharedTools
27
60
  end
28
61
 
29
62
  if detected_gem.nil?
30
- warn "⚠️ SharedTools: No supported LLM provider API gem detected. Please require one of: #{@st_supported_gems.join(', ')} before requiring shared_tools."
63
+ warn "⚠️ SharedTools: No supported gem detected. Supported gems are: #{SUPPORTED_GEMS.join(', ')}"
31
64
  end
32
65
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shared_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MadBomber Team
@@ -66,7 +66,7 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '2.0'
68
68
  - !ruby/object:Gem::Dependency
69
- name: ruby_llm
69
+ name: raix
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
@@ -79,6 +79,34 @@ dependencies:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: ruby_llm
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.1
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 1.3.1
96
+ - !ruby/object:Gem::Dependency
97
+ name: ruby_llm-mcp
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 0.3.1
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 0.3.1
82
110
  - !ruby/object:Gem::Dependency
83
111
  name: bundler
84
112
  requirement: !ruby/object:Gem::Requirement
@@ -151,9 +179,23 @@ files:
151
179
  - lib/shared_tools/llm_rb.rb
152
180
  - lib/shared_tools/llm_rb/run_shell_command.rb
153
181
  - lib/shared_tools/omniai.rb
182
+ - lib/shared_tools/raix.rb
183
+ - lib/shared_tools/raix/what_is_the_weather.rb
154
184
  - lib/shared_tools/ruby_llm.rb
155
185
  - lib/shared_tools/ruby_llm/edit_file.rb
186
+ - lib/shared_tools/ruby_llm/incomplete/calculator_tool.rb
187
+ - lib/shared_tools/ruby_llm/incomplete/composite_analysis_tool.rb
188
+ - lib/shared_tools/ruby_llm/incomplete/data_science_kit.rb
189
+ - lib/shared_tools/ruby_llm/incomplete/database_query_tool.rb
190
+ - lib/shared_tools/ruby_llm/incomplete/devops_toolkit.rb
191
+ - lib/shared_tools/ruby_llm/incomplete/error_handling_tool.rb
192
+ - lib/shared_tools/ruby_llm/incomplete/secure_tool_template.rb
193
+ - lib/shared_tools/ruby_llm/incomplete/weather_tool.rb
194
+ - lib/shared_tools/ruby_llm/incomplete/workflow_manager_tool.rb
156
195
  - lib/shared_tools/ruby_llm/list_files.rb
196
+ - lib/shared_tools/ruby_llm/mcp.rb
197
+ - lib/shared_tools/ruby_llm/mcp/github_mcp_server.rb
198
+ - lib/shared_tools/ruby_llm/mcp/imcp.rb
157
199
  - lib/shared_tools/ruby_llm/pdf_page_reader.rb
158
200
  - lib/shared_tools/ruby_llm/python_eval.rb
159
201
  - lib/shared_tools/ruby_llm/read_file.rb