legion-mcp 0.6.2 → 0.6.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e7d5c086abd567056b532b2e01df696e4fc025e1e709560b4260c8c81a8f921b
4
- data.tar.gz: b00dd7b18bd76e8342d93e7422141bdb26210fa74dc7a638d45e0e6121b2d164
3
+ metadata.gz: bfce8f2adcb9e23e5ed0f4cbeef3cd1b9652b9e75e8ed9220ecbed03cd062a3b
4
+ data.tar.gz: 1ea9a7387eed8be7ea87adee85017837306bca5abd41fdf546c3452e8e196ea3
5
5
  SHA512:
6
- metadata.gz: b06032b5477c79f163db706354ff02913ee3ffeffed4d036276c0acb186842452e0c2987275644bab9da0372392eb7442daba094a345a9bd7cc1ff0faefd92df
7
- data.tar.gz: da7f527912b6b96b40b45623c2090715bb91c0b3cf448e97e7fd40cc3546a86644f72dc7d40a0a72b40949ce9c3f9f152132bc6333b23be5a687d5675bf57e27
6
+ metadata.gz: b8aa048bf6f665695e4588b31018ea849903a004149b56d0bd0032194c1cd474dc2086c2bb934205fbf85116ff90e58f6bfec9d8c524b270c4624c0607b56b0e
7
+ data.tar.gz: 47bd47cf386c0b89ddc415abbf36aa5554ddad5cdd6165a937750f2307e46e19bda219bffda2bd9ce4faa6fd5be3db50b284f66b885684cc9e1c4c15e98534c6
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.6.3] - 2026-03-27
6
+
7
+ ### Added
8
+ - `legion.absorb` MCP tool for programmatic content absorption via pattern-matched absorber dispatch (60th tool)
9
+
5
10
  ## [0.6.2] - 2026-03-26
6
11
 
7
12
  ### Fixed
@@ -67,6 +67,7 @@ require_relative 'tools/mind_growth_health'
67
67
  require_relative 'tools/query_knowledge'
68
68
  require_relative 'tools/knowledge_health'
69
69
  require_relative 'tools/knowledge_context'
70
+ require_relative 'tools/absorb'
70
71
  require_relative 'catalog_bridge'
71
72
  require_relative 'resources/runner_catalog'
72
73
  require_relative 'resources/extension_info'
@@ -133,7 +134,8 @@ module Legion
133
134
  Tools::MindGrowthHealth,
134
135
  Tools::QueryKnowledge,
135
136
  Tools::KnowledgeHealth,
136
- Tools::KnowledgeContext
137
+ Tools::KnowledgeContext,
138
+ Tools::Absorb
137
139
  ].freeze
138
140
 
139
141
  @tool_registry = Concurrent::Array.new(STATIC_TOOLS)
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module MCP
5
+ module Tools
6
+ class Absorb < ::MCP::Tool
7
+ tool_name 'legion.absorb'
8
+ description 'Absorb content from a URL or resource into the knowledge system. ' \
9
+ 'Dispatches to the registered absorber that matches the input pattern.'
10
+
11
+ input_schema(
12
+ properties: {
13
+ input: { type: 'string', description: 'URL, file path, or resource identifier to absorb' },
14
+ scope: { type: 'string', enum: %w[local global all],
15
+ description: 'Knowledge scope (default: global)' }
16
+ },
17
+ required: %w[input]
18
+ )
19
+
20
+ class << self
21
+ def call(input:, scope: 'global')
22
+ return error_response('AbsorberDispatch not available') unless dispatch_available?
23
+
24
+ scope_str = scope.to_s
25
+ allowed_scopes = { 'local' => :local, 'global' => :global, 'all' => :all }
26
+ return error_response("invalid scope: #{scope}") unless allowed_scopes.key?(scope_str)
27
+
28
+ result = Legion::Extensions::Actors::AbsorberDispatch.dispatch(
29
+ input: input,
30
+ context: { scope: allowed_scopes[scope_str] }
31
+ )
32
+
33
+ if result[:success]
34
+ text_response(result)
35
+ else
36
+ error_response(result[:error] || 'absorption failed')
37
+ end
38
+ rescue StandardError => e
39
+ Legion::Logging.warn("Absorb MCP tool failed: #{e.message}") if defined?(Legion::Logging)
40
+ error_response("Absorption failed: #{e.message}")
41
+ end
42
+
43
+ private
44
+
45
+ def dispatch_available?
46
+ defined?(Legion::Extensions::Actors::AbsorberDispatch)
47
+ end
48
+
49
+ def text_response(data)
50
+ ::MCP::Tool::Response.new([{ type: 'text', text: Legion::JSON.dump(data) }])
51
+ end
52
+
53
+ def error_response(msg)
54
+ ::MCP::Tool::Response.new([{ type: 'text', text: Legion::JSON.dump({ error: msg }) }], error: true)
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module MCP
5
- VERSION = '0.6.2'
5
+ VERSION = '0.6.3'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-mcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -145,6 +145,7 @@ files:
145
145
  - lib/legion/mcp/settings.rb
146
146
  - lib/legion/mcp/tier_router.rb
147
147
  - lib/legion/mcp/tool_governance.rb
148
+ - lib/legion/mcp/tools/absorb.rb
148
149
  - lib/legion/mcp/tools/ask_peer.rb
149
150
  - lib/legion/mcp/tools/broadcast_peers.rb
150
151
  - lib/legion/mcp/tools/create_chain.rb