legion-mcp 0.6.4 → 0.6.6
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/lib/legion/mcp/actors/self_generate_cycle.rb +48 -0
- data/lib/legion/mcp/function_discovery.rb +2 -5
- data/lib/legion/mcp/version.rb +1 -1
- data/lib/legion/mcp.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3e1c1371cb216ffb1b47a924ec9fd5d65b352b94a87e0103ef28d2f96aee77b1
|
|
4
|
+
data.tar.gz: 0e96367cb8c743f2408f95c9ccdf051ecd1ba991302963b4e5b5c500db5eb136
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ab78e2afd0d736017b922a12010c3feb9ca519a82599e163e6cdf187d448978b40a62a5efc2f0ebe7991424af5593effa6dfe89c17192eb721b809216ba80f01
|
|
7
|
+
data.tar.gz: 4ee7a30af588af08bf7090748dd700ff40863150bf4cbdaf147e5f073cb60c7bff82ac26758c650e325c4833b24fc5a2e4bd17ca341c8bbfede8e24e9d037677
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.6.6] - 2026-03-28
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- `Legion::MCP::Actor::SelfGenerateCycle` — periodic `Every`-style actor that calls `SelfGenerate.run_cycle` on a configurable interval (default 300 s, reads `codegen.self_generate.cycle_interval` from Settings)
|
|
9
|
+
|
|
10
|
+
## [0.6.5] - 2026-03-28
|
|
11
|
+
|
|
12
|
+
### Removed
|
|
13
|
+
- Legacy `expose_as_mcp_tool` and `mcp_tool_prefix` fallback reads from `FunctionDiscovery#runner_expose_opts` — runners that do not use the definition DSL are no longer exposed; `class_expose` is always `nil` and `prefix` is always `nil` in the opts hash
|
|
14
|
+
|
|
5
15
|
## [0.6.4] - 2026-03-28
|
|
6
16
|
|
|
7
17
|
### Changed
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
return unless defined?(Legion::Extensions::Actors::Every)
|
|
4
|
+
|
|
5
|
+
module Legion
|
|
6
|
+
module MCP
|
|
7
|
+
module Actor
|
|
8
|
+
class SelfGenerateCycle < Legion::Extensions::Actors::Every
|
|
9
|
+
def runner_class = self.class
|
|
10
|
+
def runner_function = 'action'
|
|
11
|
+
def check_subtask? = false
|
|
12
|
+
def generate_task? = false
|
|
13
|
+
|
|
14
|
+
def time
|
|
15
|
+
if defined?(Legion::Settings) && !Legion::Settings[:codegen].nil?
|
|
16
|
+
Legion::Settings.dig(:codegen, :self_generate, :cycle_interval) || 300
|
|
17
|
+
else
|
|
18
|
+
300
|
|
19
|
+
end
|
|
20
|
+
rescue StandardError => e
|
|
21
|
+
log.warn(e.message)
|
|
22
|
+
300
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def enabled?
|
|
26
|
+
SelfGenerate.enabled?
|
|
27
|
+
rescue StandardError => e
|
|
28
|
+
log.warn(e.message)
|
|
29
|
+
false
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def action(_payload = nil)
|
|
33
|
+
SelfGenerate.run_cycle
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
def log
|
|
39
|
+
return Legion::Logging if defined?(Legion::Logging)
|
|
40
|
+
|
|
41
|
+
@log ||= Object.new.tap do |nl|
|
|
42
|
+
%i[debug info warn error fatal].each { |m| nl.define_singleton_method(m) { |*| nil } }
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -33,12 +33,9 @@ module Legion
|
|
|
33
33
|
functions.each { |func_name, meta| register_function(runner_module, func_name, meta, opts) }
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
def runner_expose_opts(
|
|
37
|
-
# @deprecated class_expose/prefix — prefer definition DSL (mcp_exposed:, mcp_tool_prefix:)
|
|
38
|
-
class_expose = runner_module.respond_to?(:expose_as_mcp_tool) ? runner_module.expose_as_mcp_tool : nil
|
|
36
|
+
def runner_expose_opts(_runner_module)
|
|
39
37
|
global_expose = defined?(Legion::Settings) ? (Legion::Settings.dig(:mcp, :auto_expose_runners) || false) : false
|
|
40
|
-
|
|
41
|
-
{ class_expose: class_expose, global_expose: global_expose, prefix: prefix }
|
|
38
|
+
{ class_expose: nil, global_expose: global_expose, prefix: nil }
|
|
42
39
|
end
|
|
43
40
|
|
|
44
41
|
def register_function(runner_module, func_name, meta, opts)
|
data/lib/legion/mcp/version.rb
CHANGED
data/lib/legion/mcp.rb
CHANGED
|
@@ -11,6 +11,7 @@ require_relative 'mcp/tool_governance'
|
|
|
11
11
|
require_relative 'mcp/server'
|
|
12
12
|
require_relative 'mcp/override_broadcast'
|
|
13
13
|
require_relative 'mcp/client'
|
|
14
|
+
require_relative 'mcp/actors/self_generate_cycle' if defined?(Legion::Extensions::Actors::Every)
|
|
14
15
|
|
|
15
16
|
module Legion
|
|
16
17
|
module MCP
|
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.
|
|
4
|
+
version: 0.6.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -119,6 +119,7 @@ files:
|
|
|
119
119
|
- Rakefile
|
|
120
120
|
- legion-mcp.gemspec
|
|
121
121
|
- lib/legion/mcp.rb
|
|
122
|
+
- lib/legion/mcp/actors/self_generate_cycle.rb
|
|
122
123
|
- lib/legion/mcp/auth.rb
|
|
123
124
|
- lib/legion/mcp/catalog_bridge.rb
|
|
124
125
|
- lib/legion/mcp/client.rb
|