legionio 1.4.114 → 1.4.115
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/CLAUDE.md +7 -7
- data/README.md +3 -3
- data/lib/legion/extensions.rb +2 -1
- data/lib/legion/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: abcb24b9f1dbcec868c68b5b66d203405896b38487f4197f352f2ad69e96b2b4
|
|
4
|
+
data.tar.gz: 9a684aa568b3d19fcc9e19c186a4d2a9efdc7d5001776cceae9d33d9aa0cc7dd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41610c2dec55f16656d15356ffc29c7d0f76020623e662fa47dbd54ed67038962a02b1f4dfadfa9a3057d6fd3d124a24dc476f95ae14e3f5cb7510f71283fcbc
|
|
7
|
+
data.tar.gz: 2cfbdefeb8d689545a5fb62b47255dcae967cc83087feaf950bc0169aedce32b5c89c24e7f9dc951d74c43b2ac45cd49e0100740dffd786d447dc2c11f71a94d
|
data/CLAUDE.md
CHANGED
|
@@ -9,7 +9,7 @@ The primary gem for the LegionIO framework. An extensible async job engine for s
|
|
|
9
9
|
|
|
10
10
|
**GitHub**: https://github.com/LegionIO/LegionIO
|
|
11
11
|
**Gem**: `legionio`
|
|
12
|
-
**Version**: 1.4.
|
|
12
|
+
**Version**: 1.4.114
|
|
13
13
|
**License**: Apache-2.0
|
|
14
14
|
**Docker**: `legionio/legion`
|
|
15
15
|
**Ruby**: >= 3.4
|
|
@@ -50,14 +50,14 @@ Legion.start
|
|
|
50
50
|
├── 9. setup_gaia (legion-gaia, cognitive coordination layer, optional)
|
|
51
51
|
├── 10. setup_telemetry (OpenTelemetry, optional)
|
|
52
52
|
├── 11. setup_supervision (process supervision)
|
|
53
|
-
├── 12. load_extensions (
|
|
53
|
+
├── 12. load_extensions (parallel require+autobuild on 4-thread pool, then hook_all_actors)
|
|
54
54
|
├── 13. Legion::Crypt.cs (distribute cluster secret)
|
|
55
55
|
└── 14. setup_api (start Sinatra/Puma on port 4567)
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
Each phase calls `Legion::Readiness.mark_ready(:component)`. All phases are individually toggleable via `Service.new(transport: false, ...)`.
|
|
59
59
|
|
|
60
|
-
Extension loading is two-phase: all extensions are `require`d and `autobuild` runs
|
|
60
|
+
Extension loading is two-phase and parallel: all extensions are `require`d and `autobuild` runs concurrently on a `Concurrent::FixedThreadPool(min(count, extensions.parallel_pool_size))`, collecting actors into a thread-safe `Concurrent::Array` of `@pending_actors`. Pool size defaults to 24, configurable via `Legion::Settings[:extensions][:parallel_pool_size]`. After all extensions are loaded, `hook_all_actors` starts AMQP subscriptions, timers, and other actor types sequentially. This prevents race conditions where early extensions start ticking while later ones haven't loaded yet. Thread safety relies on ThreadLocal AMQP channels, per-extension Settings keys, and sequential post-processing of Catalog transitions and Registry writes.
|
|
61
61
|
|
|
62
62
|
### Reload Sequence
|
|
63
63
|
|
|
@@ -476,7 +476,7 @@ legion
|
|
|
476
476
|
|
|
477
477
|
### MCP Design
|
|
478
478
|
|
|
479
|
-
Extracted to the `legion-mcp` gem (v0.1
|
|
479
|
+
Extracted to the `legion-mcp` gem (v0.4.1). See `legion-mcp/CLAUDE.md` for full architecture.
|
|
480
480
|
|
|
481
481
|
- `Legion::MCP.server` is memoized singleton — call `Legion::MCP.reset!` in tests
|
|
482
482
|
- Tool naming: `legion.snake_case_name` (dot namespace, not slash)
|
|
@@ -500,7 +500,7 @@ Extracted to the `legion-mcp` gem (v0.1.0). See `legion-mcp/CLAUDE.md` for full
|
|
|
500
500
|
| `oj` (>= 3.16) | Fast JSON (C extension) |
|
|
501
501
|
| `puma` (>= 6.0) | HTTP server for API |
|
|
502
502
|
| `rackup` (>= 2.0) | Rack server launcher for MCP HTTP transport |
|
|
503
|
-
| `legion-mcp` | MCP server + Tier 0 routing (extracted gem) |
|
|
503
|
+
| `legion-mcp` (>= 0.4) | MCP server + Tier 0 routing (extracted gem) |
|
|
504
504
|
| `reline` (>= 0.5) | Interactive line editing for chat REPL |
|
|
505
505
|
| `rouge` (>= 4.0) | Syntax highlighting for chat markdown rendering |
|
|
506
506
|
| `tty-spinner` (~> 0.9) | Spinner animation for CLI loading states |
|
|
@@ -723,8 +723,8 @@ rack-test, rake, rspec, rubocop, rubocop-rspec, simplecov
|
|
|
723
723
|
|
|
724
724
|
```bash
|
|
725
725
|
bundle install
|
|
726
|
-
bundle exec rspec #
|
|
727
|
-
bundle exec rubocop #
|
|
726
|
+
bundle exec rspec # 2514 examples, 0 failures
|
|
727
|
+
bundle exec rubocop # 0 offenses
|
|
728
728
|
```
|
|
729
729
|
|
|
730
730
|
Specs use `rack-test` for API testing. `Legion::JSON.load` returns symbol keys — use `body[:data]` not `body['data']` in specs.
|
data/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Schedule tasks, chain services into dependency graphs, run them concurrently via
|
|
|
14
14
|
╰──────────────────────────────────────╯
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
**Ruby >= 3.4** | **v1.4.
|
|
17
|
+
**Ruby >= 3.4** | **v1.4.114** | **Apache-2.0** | [@Esity](https://github.com/Esity)
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
@@ -370,9 +370,9 @@ Brain-modeled cognitive architecture. 20 core orchestration extensions plus 222
|
|
|
370
370
|
|
|
371
371
|
Coordinated by [legion-gaia](https://github.com/LegionIO/legion-gaia), the cognitive coordination layer with tick-cycle scheduling, channel abstraction, and weighted routing across cognitive modules.
|
|
372
372
|
|
|
373
|
-
### AI / LLM (
|
|
373
|
+
### AI / LLM (7 provider extensions)
|
|
374
374
|
|
|
375
|
-
`lex-claude` `lex-
|
|
375
|
+
`lex-azure-ai` `lex-bedrock` `lex-claude` `lex-foundry` `lex-gemini` `lex-openai` `lex-xai`
|
|
376
376
|
|
|
377
377
|
Powered by [legion-llm](https://github.com/LegionIO/legion-llm) with three-tier routing (local Ollama, fleet GPU servers, cloud APIs), intent-based dispatch, health tracking, and automatic model discovery.
|
|
378
378
|
|
data/lib/legion/extensions.rb
CHANGED
|
@@ -84,7 +84,8 @@ module Legion
|
|
|
84
84
|
def load_extensions_parallel(eligible)
|
|
85
85
|
return if eligible.empty?
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
max_threads = Legion::Settings.dig(:extensions, :parallel_pool_size) || 24
|
|
88
|
+
pool_size = [eligible.count, max_threads].min
|
|
88
89
|
executor = Concurrent::FixedThreadPool.new(pool_size)
|
|
89
90
|
|
|
90
91
|
futures = eligible.map do |entry|
|
data/lib/legion/version.rb
CHANGED