shared_tools 0.3.1 → 0.4.2

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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -14
  3. data/README.md +259 -262
  4. data/lib/shared_tools/browser_tool.rb +5 -0
  5. data/lib/shared_tools/calculator_tool.rb +4 -0
  6. data/lib/shared_tools/clipboard_tool.rb +4 -0
  7. data/lib/shared_tools/composite_analysis_tool.rb +4 -0
  8. data/lib/shared_tools/computer_tool.rb +5 -0
  9. data/lib/shared_tools/cron_tool.rb +4 -0
  10. data/lib/shared_tools/current_date_time_tool.rb +4 -0
  11. data/lib/shared_tools/data_science_kit.rb +4 -0
  12. data/lib/shared_tools/database.rb +4 -0
  13. data/lib/shared_tools/database_query_tool.rb +4 -0
  14. data/lib/shared_tools/database_tool.rb +5 -0
  15. data/lib/shared_tools/disk_tool.rb +5 -0
  16. data/lib/shared_tools/dns_tool.rb +4 -0
  17. data/lib/shared_tools/doc_tool.rb +5 -0
  18. data/lib/shared_tools/error_handling_tool.rb +4 -0
  19. data/lib/shared_tools/eval_tool.rb +5 -0
  20. data/lib/shared_tools/mcp/brave_search_client.rb +37 -0
  21. data/lib/shared_tools/mcp/chart_client.rb +32 -0
  22. data/lib/shared_tools/mcp/github_client.rb +38 -0
  23. data/lib/shared_tools/mcp/hugging_face_client.rb +43 -0
  24. data/lib/shared_tools/mcp/memory_client.rb +33 -0
  25. data/lib/shared_tools/mcp/notion_client.rb +40 -0
  26. data/lib/shared_tools/mcp/playwright_client.rb +34 -0
  27. data/lib/shared_tools/mcp/sequential_thinking_client.rb +33 -0
  28. data/lib/shared_tools/mcp/slack_client.rb +54 -0
  29. data/lib/shared_tools/mcp/streamable_http_patch.rb +42 -0
  30. data/lib/shared_tools/mcp/tavily_client.rb +41 -0
  31. data/lib/shared_tools/mcp.rb +45 -16
  32. data/lib/shared_tools/system_info_tool.rb +4 -0
  33. data/lib/shared_tools/tools/browser/base_tool.rb +8 -12
  34. data/lib/shared_tools/tools/browser/click_tool.rb +4 -2
  35. data/lib/shared_tools/tools/browser/ferrum_driver.rb +119 -0
  36. data/lib/shared_tools/tools/browser/inspect_tool.rb +4 -2
  37. data/lib/shared_tools/tools/browser/page_inspect_tool.rb +4 -2
  38. data/lib/shared_tools/tools/browser/page_screenshot_tool.rb +19 -7
  39. data/lib/shared_tools/tools/browser/selector_inspect_tool.rb +4 -2
  40. data/lib/shared_tools/tools/browser/text_field_area_set_tool.rb +4 -2
  41. data/lib/shared_tools/tools/browser/visit_tool.rb +4 -2
  42. data/lib/shared_tools/tools/browser.rb +31 -2
  43. data/lib/shared_tools/tools/browser_tool.rb +6 -0
  44. data/lib/shared_tools/tools/clipboard_tool.rb +69 -144
  45. data/lib/shared_tools/tools/composite_analysis_tool.rb +60 -4
  46. data/lib/shared_tools/tools/computer/mac_driver.rb +37 -4
  47. data/lib/shared_tools/tools/cron_tool.rb +237 -379
  48. data/lib/shared_tools/tools/current_date_time_tool.rb +54 -120
  49. data/lib/shared_tools/tools/data_science_kit.rb +63 -13
  50. data/lib/shared_tools/tools/dns_tool.rb +335 -269
  51. data/lib/shared_tools/tools/doc/docx_reader_tool.rb +107 -0
  52. data/lib/shared_tools/tools/doc/spreadsheet_reader_tool.rb +171 -0
  53. data/lib/shared_tools/tools/doc/text_reader_tool.rb +57 -0
  54. data/lib/shared_tools/tools/doc.rb +3 -0
  55. data/lib/shared_tools/tools/doc_tool.rb +101 -6
  56. data/lib/shared_tools/tools/docker/compose_run_tool.rb +1 -1
  57. data/lib/shared_tools/tools/enabler.rb +42 -0
  58. data/lib/shared_tools/tools/error_handling_tool.rb +3 -1
  59. data/lib/shared_tools/tools/notification/base_driver.rb +51 -0
  60. data/lib/shared_tools/tools/notification/linux_driver.rb +115 -0
  61. data/lib/shared_tools/tools/notification/mac_driver.rb +66 -0
  62. data/lib/shared_tools/tools/notification/null_driver.rb +29 -0
  63. data/lib/shared_tools/tools/notification.rb +12 -0
  64. data/lib/shared_tools/tools/notification_tool.rb +99 -0
  65. data/lib/shared_tools/tools/system_info_tool.rb +130 -343
  66. data/lib/shared_tools/tools/workflow_manager_tool.rb +32 -0
  67. data/lib/shared_tools/utilities.rb +193 -0
  68. data/lib/shared_tools/version.rb +1 -1
  69. data/lib/shared_tools/weather_tool.rb +4 -0
  70. data/lib/shared_tools/workflow_manager_tool.rb +4 -0
  71. data/lib/shared_tools.rb +28 -38
  72. metadata +75 -9
  73. data/lib/shared_tools/mcp/github_mcp_server.rb +0 -58
  74. data/lib/shared_tools/mcp/imcp.rb +0 -28
  75. data/lib/shared_tools/mcp/tavily_mcp_server.rb +0 -44
  76. data/lib/shared_tools/tools/devops_toolkit.rb +0 -420
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5775624c9ae2d7f0fb1a47c515b2dbe7316faaee9de7bc62823e0d602274a0a
4
- data.tar.gz: 480df1266dc12f1bd4104ef3f80a78b895ac22ebf149b9090f0bcf679bcb8a99
3
+ metadata.gz: c72583fc2d491abce837a4c42268770fa5385c96800c28bd846a2b6cd12aa506
4
+ data.tar.gz: 41aefa6cb69ceea26c66d2c68bc46602d08e824213737ad432bdcf73bf3fef92
5
5
  SHA512:
6
- metadata.gz: 00a01f1113bb7e728b00aa196f998850c66246d4e5e26d7e1db16d0314bf3f2993f1632dafe964ea347690a6a03a9e9c04440ed47ef1f1870c858c1f2eda3aed
7
- data.tar.gz: 613fbbae8478fa3b805d368102e31cf9c9709e16f954f87a8fea10aa8f148550147f884b68956714eb817cd6288b1f4213b3612ea887ad502e8be8d13973db74
6
+ metadata.gz: 77eb4bb5382359ef3132b376ddeca5f244edf9f4e4eab2d54bf7c9a0eff49825c75a0fbf5efca5ce0f737b799c782d34f3c1f91ac3a1e42dbd9c7d14b6a3cb16
7
+ data.tar.gz: e342c4d27481ce0bc72631753f64b6dfc047b70d3848b48be21affec7baa0360f46537dfbb86061cac756818df64f93e384c3f1e0048be83aee620ef1e585593
data/CHANGELOG.md CHANGED
@@ -2,21 +2,60 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ### [0.4.2] - 2026-03-27
6
+
7
+ #### MCP Clients
8
+ - Added Playwright MCP client (`mcp/playwright_client.rb`) — browser automation via the official `@playwright/mcp` package (npx auto-download, no pre-installation required)
9
+ - Added `mcp/tool_schema_patch.rb` — strips `$schema` from MCP tool input schemas before API serialization; fixes `BadRequestError` from Claude's API when MCP servers annotate schemas with JSON Schema Draft 2020-12 meta-fields
10
+ - Added demo script: `examples/mcp/playwright_demo.rb`
11
+
5
12
  ## Released
6
- ### [0.3.1] 2025-12-17
7
-
8
- - added ClipboardTool for cross-platform clipboard read/write operations
9
- - added CronTool for cron expression parsing and scheduling
10
- - added CurrentDateTimeTool for date/time retrieval with timezone support
11
- - added DnsTool for DNS lookups and resolution
12
- - added SystemInfoTool for system information retrieval
13
- - updated gem dependencies and Zeitwerk configuration
14
- - improved BrowserTool, ComputerTool, and DatabaseTool implementations
15
- - updated GitHub Pages deployment workflow
16
- - fixed a problem with eager loading when used with the `aia` gem
17
-
18
- ### [0.3.0] 2025-11-08
19
- - changed focus of shared_tools to only support the ruby_llm and ruby_llm-mcp ecosystem
13
+
14
+ ### [0.4.1] - 2026-03-26
15
+
16
+ #### MCP Clients
17
+ - Added `SharedTools.mcp_status` prints a formatted table of loaded vs. skipped clients
18
+ - Added `SharedTools.mcp_loaded` returns array of successfully loaded client names
19
+ - Added `SharedTools.mcp_failed` returns hash of skipped client names mapped to their error messages
20
+ - Added `SharedTools.record_mcp_result` thread-safe internal method used by `mcp.rb` to record each client's load outcome
21
+ - Fixed `mcp.rb` thread exception handling: changed `rescue => e` to `rescue Exception => e` so `LoadError` (a `ScriptError`, not a `StandardError`) is caught and the thread does not terminate with an unhandled exception
22
+ - Added SSE line-ending normalization patch (`mcp/streamable_http_patch.rb`) for MCP servers that mix `\n` and `\r\n` line endings in SSE responses (e.g. Tavily), fixing a 30-second `tools/list` timeout
23
+ - Added brew-installed MCP clients: Notion (`notion_client.rb`), Slack (`slack_client.rb`), Hugging Face (`hugging_face_client.rb`)
24
+ - All `package_install` methods now raise `LoadError` on failure (consistent with `verify_envars`)
25
+ - Added demo scripts: `examples/mcp/notion_demo.rb`, `examples/mcp/slack_demo.rb`, `examples/mcp/hugging_face_demo.rb`
26
+
27
+ #### Tests
28
+ - Added `test/shared_tools/utilities_test.rb` — 28 tests covering `verify_envars`, `brew_install`, `npm_install`, `gem_install`, `package_install`, and MCP load tracking methods
29
+ - Added `test/shared_tools/mcp/streamable_http_patch_test.rb` — 15 tests covering SSE buffer normalization for all line-ending variants (`\n\n`, `\r\n\r\n`, mixed `\n\r\n`, bare `\r`)
30
+
31
+ #### Documentation
32
+ - Updated `README.md` with MCP Clients section covering all three transport categories
33
+ - Updated `examples/README.md` with entries for all 10 `examples/mcp/` demos and expanded environment variables table
34
+ - Updated `docs/getting-started/installation.md` with MCP client setup section
35
+ - Updated `docs/index.md` and `lib/shared_tools/mcp/README.md` with Notion, Slack, and Hugging Face client details
36
+
37
+ ### [0.4.0] - 2026-03-25
38
+
39
+ #### MCP Clients
40
+ - Added Tavily MCP client (`mcp/tavily_client.rb`) — AI-optimized web search via remote HTTP transport
41
+ - Added GitHub MCP client (`mcp/github_client.rb`) — repos, issues, PRs, code search via brew-installed binary
42
+ - Added Memory MCP client (`mcp/memory_client.rb`) — persistent knowledge graph via npx
43
+ - Added Sequential Thinking MCP client (`mcp/sequential_thinking_client.rb`) — chain-of-thought reasoning via npx
44
+ - Added Chart MCP client (`mcp/chart_client.rb`) — chart generation via npx
45
+ - Added Brave Search MCP client (`mcp/brave_search_client.rb`) — web/news search via npx
46
+ - Added `mcp.rb` bulk loader — requires all available clients concurrently in parallel threads; missing-key clients silently skipped
47
+ - Added `SharedTools.verify_envars` — raises `LoadError` listing missing environment variable names
48
+ - Added `SharedTools.package_install`, `brew_install`, `apt_install`, `dnf_install`, `npm_install`, `gem_install` in `utilities.rb`
49
+
50
+ #### Tools
51
+ - Added `NotificationTool` — cross-platform desktop notifications (`notify`), modal alert dialogs (`alert`), and text-to-speech (`speak`) for macOS and Linux
52
+ - Added screenshot capability to `BrowserTool`
53
+ - Added array argument support to `Docker::ComposeRunTool`
54
+
55
+ #### Examples
56
+ - Added `examples/mcp/` subdirectory with individual demo scripts for each MCP client
57
+ - Added `examples/mcp/common.rb` shared helper for MCP demos
58
+
20
59
 
21
60
  ### [0.2.1] 2025-07-03
22
61
  - iMCP server app for MacOS is noisy logger so redirect stderr to /dev/null