Conversation
Owner
MadBomber
commented
Mar 26, 2026
- feat(browser_tools): add demo of LLM-powered web automation
- feat: add examples/all.rb script to run all demos
- feat: Expand the capabilities of SharedTools gem
- feat(screenshot): add ability to capture web page screenshots
- feat(docker): add support for array arguments in compose_run_tool
- feat(notification): add demo for NotificationTool
- feat(notification): add new desktop notification, alert, and text-to-speech capabilities
- feat(mcp_client_demo): update client file paths
- feat(mcp): add GitHub client for MCP server
- feat(mcp): add new MCP client demos
- feat(mcp): add Hugging Face client
- feat(mcp): add support for new MCP clients
- feat(mcp): handle LoadError exceptions more robustly
- feat(mcp): add client load tracking and reporting
- bumped version
- updated the changelog file
This commit adds a new example script `browser_tool_demo.rb` that demonstrates how an LLM can automate web browser interactions through natural language prompts using the BrowserTool. The script covers various use cases such as navigating to a website, inspecting page content, performing search workflows, capturing screenshots, multi-step navigation, form interactions, and conversational browsing. The key changes include: - Added a new file `examples/browser_tool_demo.rb` that showcases the capabilities of the BrowserTool. - Removed the older `browser_tool_example.rb` file, as the new demo script provides a more comprehensive and up-to-date example. - Updated the `docs/index.md` file to include an image for the SharedTools project. This commit helps improve the documentation and examples for the BrowserTool, making it easier for users to understand and utilize the tool's functionality when integrating with LLMs.
This commit adds a new script, examples/all.rb, that runs all the *_demo.rb files in the examples directory sequentially. This will make it easier to execute all the demonstration scripts for the shared_tools gem. The script simply iterates through the demo files, prints out some formatting, and then runs each one using the system command.
This commit expands the features and capabilities of the SharedTools Ruby gem by adding the following improvements: - Increased the number of available tools from 13+ to 20+, including new tools for document processing, DNS/WHOIS lookups, IP geolocation, data science, and more. - Improved the description of the gem to highlight the expanded set of features and use cases. - Updated the installation instructions to include additional gem dependencies for the new tool capabilities. - Adjusted the Quick Start example to showcase the broader set of tools that can be used with the RubyLLM agent. These changes significantly enhance the functionality and versatility of the SharedTools gem, making it a more comprehensive solution for a wide range of automation, processing, and integration tasks.
This commit introduces a new tool called `PageScreenshotTool` that allows capturing screenshots of web pages. The tool uses a `MockDriver` class to simulate the screenshot functionality, which is then returned as a base64-encoded string. Additionally, this commit makes the following changes: - Adds the `minitest-mock` gem as a development dependency to provide stubbing and mocking support for Minitest 6, as it was removed from the core library. - Removes the `DevopsToolkit` module, as it was providing simulated functionality without any real system interaction. - Adds a `load_all_tools` method to the `SharedTools` module to eagerly load all tool classes into `ObjectSpace`. This is necessary for the `AIA::GemActivator` to properly detect and load the available tools. - Adds a `tools` method to the `SharedTools` module to return all loaded `RubyLLM::Tool` subclasses provided by the gem. BREAKING CHANGE: The `DevopsToolkit` module has been removed entirely, and any references or usage of it should be updated accordingly.
The commit adds support for passing an array of arguments to the `compose_run_tool` in the `shared_tools` gem. Previously, the `args` parameter was defined as a string, but this change updates it to be an array of strings, allowing more flexibility in passing multiple arguments to the command being run.
This commit adds a new demo script, `notification_tool_demo.rb`, that showcases the functionality of the `NotificationTool` in the `SharedTools` library. The demo includes examples of using the tool to display desktop notifications, speak text aloud, and show modal alert dialogs. The new demo script is located in the `examples` directory and can be run using the provided instructions. This addition helps demonstrate the capabilities of the `NotificationTool` and provides a useful reference for developers working with the `SharedTools` library.
…speech capabilities This commit adds a new Notification Tool to the SharedTools library, providing cross-platform support for desktop notifications, modal alert dialogs, and text-to-speech functionality. The key features include: - Simplified API with `notify`, `alert`, and `speak` actions - Supports macOS and Linux natively with no gem dependencies - Notification banners, blocking alert dialogs, and configurable text-to-speech - Integrated into the existing examples and documentation This new tool enhances the capabilities of the SharedTools library, making it easier for users to incorporate notification features into their applications.
The commit message should be: feat(mcp_client_demo): update client file paths This commit updates the file paths used to load the various MCP clients in the `mcp_client_demo.rb` file. The changes ensure that the correct client files are loaded for each MCP service.
The commit introduces a new GitHub client for the MCP (Machine Capability Provider) server. The client provides full access to the GitHub API, including repositories, issues, pull requests, code search, commits, branches, and releases. The client has the following key features: - Requires Homebrew (https://brew.sh) and a GitHub Personal Access Token for configuration. - Automatically installs the `github-mcp-server` binary via Homebrew if missing. - Integrates with the `ruby_llm-mcp` gem, allowing the client to be used with the RubyLLM framework. - Includes a `SharedTools.utilities` module with utility methods for verifying environment variables and installing packages. This commit adds new files `lib/shared_tools/mcp/github_client.rb` and `lib/shared_tools/utilities.rb`, and modifies `lib/shared_tools.rb` to load the new utilities module.
The commit introduces two new MCP client demo applications: 1. `brave_search_demo.rb`: A demo showcasing the usage of the Brave Search MCP client to perform web and news searches. 2. `chart_demo.rb`: A demo demonstrating the usage of the Chart MCP client to generate various types of data visualizations (bar, line, and pie charts). The commit also includes a common setup file `common.rb` that provides shared functionality for the MCP demo applications.
This commit adds a new Hugging Face MCP client to the SharedTools library. The client allows users to browse the Hugging Face Hub, search for models and datasets, read model cards, and explore trending repositories and AI tools. The client requires the `HF_TOKEN` environment variable to be set, which can be obtained by creating a token at https://huggingface.co/settings/tokens. The commit includes a new demo script `examples/mcp/hugging_face_demo.rb` that showcases the capabilities of the Hugging Face client, such as: 1. Listing the most popular and trending text-generation models on Hugging Face. 2. Searching for models or datasets related to Ruby programming, Rails, or software engineering code generation. 3. Finding small language models (under 8B parameters) that are highly capable. This client addition enhances the MCP (Model Context Protocol) capabilities of the SharedTools library, allowing users to seamlessly integrate Hugging Face resources into their AI-powered applications.
This commit adds support for several new MCP (Model Context Protocol) clients in the SharedTools library: - Tavily (web search, news, research, URL extraction) - requires API key only - GitHub (repos, issues, PRs, code search) - auto-installs via Homebrew - Notion (pages, databases, search, content CRUD) - auto-installs via Homebrew - Slack (channels, messages, threads, user info) - auto-installs via Homebrew - Hugging Face (models, datasets, Spaces, model cards) - auto-installs via Homebrew - Memory (persistent knowledge graph) - auto-downloads via npx - Sequential Thinking (chain-of-thought reasoning) - auto-downloads via npx - Chart (chart and visualisation generation) - auto-downloads via npx - Brave Search (web and news search) - auto-downloads via npx The new clients are opt-in, with each one requiring a specific environment variable to be set for authentication. Documentation on the new clients has been added to the README. This change introduces several new features and capabilities to the SharedTools library, allowing users to integrate a wide range of external services and tools into their applications.
Introduce a more robust exception handling mechanism in the MCP client loader to better handle LoadError exceptions, which are a type of ScriptError and not a StandardError. The previous `rescue => e` approach would not catch LoadError exceptions, leading to "terminated with exception" errors when loading the MCP clients. The new `rescue Exception => e` approach ensures that all load failures are properly caught and handled, allowing the rest of the MCP clients to be loaded successfully. Additionally, a comment has been added to explain the rationale behind the change and the difference between LoadError (a ScriptError) and StandardError.
This commit adds functionality to the SharedTools module to track the success or failure of loading MCP clients, and provide methods to report on the overall load status. The key changes are: 1. A new `record_mcp_result` method that is called by the mcp.rb loader to record the outcome of each client load attempt. 2. New `mcp_loaded`, `mcp_failed`, and `mcp_status` methods that provide access to the load tracking data. 3. Updates to the mcp.rb loader to use the new tracking methods and provide better error handling/reporting when clients fail to load. This provides greater visibility into the MCP setup process, making it easier to diagnose and resolve issues with missing dependencies or configuration.
- lib/shared_tools.rb: remove duplicate method definitions merged from main (load_all_tools, tools, execute?); restore develop's STDIN.getch- based execute? and Zeitwerk-based load_all_tools/tools; ignore tools/enabler.rb which defines Tools::Enabler not SharedTools::Tools::Enabler - test/test_helper.rb: add with_stdin_input helper needed by merged tests - test eval tool tests: replace $stdin = StringIO.new pattern from main with with_stdin_input stub to match develop's STDIN.getch in execute? - .gitignore: add .claude/, .serena/, site/, *.gem, Gemfile.lock, local scratch files, and examples/.workflows/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.