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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +36 -33
- data/lib/shared_tools/llm_rb.rb +2 -0
- data/lib/shared_tools/omniai.rb +2 -0
- data/lib/shared_tools/raix/what_is_the_weather.rb +18 -0
- data/lib/shared_tools/raix.rb +9 -0
- data/lib/shared_tools/ruby_llm/edit_file.rb +1 -0
- data/lib/shared_tools/ruby_llm/incomplete/calculator_tool.rb +70 -0
- data/lib/shared_tools/ruby_llm/incomplete/composite_analysis_tool.rb +89 -0
- data/lib/shared_tools/ruby_llm/incomplete/data_science_kit.rb +128 -0
- data/lib/shared_tools/ruby_llm/incomplete/database_query_tool.rb +100 -0
- data/lib/shared_tools/ruby_llm/incomplete/devops_toolkit.rb +112 -0
- data/lib/shared_tools/ruby_llm/incomplete/error_handling_tool.rb +109 -0
- data/lib/shared_tools/ruby_llm/incomplete/secure_tool_template.rb +117 -0
- data/lib/shared_tools/ruby_llm/incomplete/weather_tool.rb +110 -0
- data/lib/shared_tools/ruby_llm/incomplete/workflow_manager_tool.rb +145 -0
- data/lib/shared_tools/ruby_llm/list_files.rb +1 -0
- data/lib/shared_tools/ruby_llm/mcp/github_mcp_server.rb +51 -0
- data/lib/shared_tools/ruby_llm/mcp/imcp.rb +28 -0
- data/lib/shared_tools/ruby_llm/mcp.rb +10 -0
- data/lib/shared_tools/ruby_llm/pdf_page_reader.rb +1 -0
- data/lib/shared_tools/ruby_llm/python_eval.rb +4 -8
- data/lib/shared_tools/ruby_llm/read_file.rb +1 -0
- data/lib/shared_tools/ruby_llm/ruby_eval.rb +4 -8
- data/lib/shared_tools/ruby_llm/run_shell_command.rb +3 -4
- data/lib/shared_tools/ruby_llm.rb +6 -1
- data/lib/shared_tools/version.rb +1 -1
- data/lib/shared_tools.rb +35 -2
- metadata +44 -2
data/lib/shared_tools/version.rb
CHANGED
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
|
-
|
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
|
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.
|
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:
|
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
|