legionio 1.2.1 → 1.4.8
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/.github/workflows/ci.yml +16 -0
- data/.gitignore +13 -1
- data/.rubocop.yml +45 -69
- data/CHANGELOG.md +128 -1
- data/CLAUDE.md +533 -0
- data/Dockerfile +2 -2
- data/Gemfile +292 -3
- data/LICENSE +1 -1
- data/README.md +386 -143
- data/completions/_legion +868 -0
- data/completions/legion.bash +280 -0
- data/docker_deploy.rb +1 -0
- data/docs/README.md +6 -0
- data/exe/legion +17 -2
- data/legionio.gemspec +29 -23
- data/lib/legion/api/chains.rb +58 -0
- data/lib/legion/api/coldstart.rb +39 -0
- data/lib/legion/api/events.rb +84 -0
- data/lib/legion/api/extensions.rb +89 -0
- data/lib/legion/api/gaia.rb +19 -0
- data/lib/legion/api/helpers.rb +165 -0
- data/lib/legion/api/hooks.rb +65 -0
- data/lib/legion/api/middleware/auth.rb +102 -0
- data/lib/legion/api/nodes.rb +25 -0
- data/lib/legion/api/oauth.rb +39 -0
- data/lib/legion/api/openapi.rb +1363 -0
- data/lib/legion/api/relationships.rb +46 -0
- data/lib/legion/api/schedules.rb +78 -0
- data/lib/legion/api/settings.rb +41 -0
- data/lib/legion/api/tasks.rb +89 -0
- data/lib/legion/api/token.rb +31 -0
- data/lib/legion/api/transport.rb +73 -0
- data/lib/legion/api/workers.rb +219 -0
- data/lib/legion/api.rb +121 -0
- data/lib/legion/cli/auth_command.rb +87 -0
- data/lib/legion/cli/chain.rb +2 -0
- data/lib/legion/cli/chain_command.rb +95 -0
- data/lib/legion/cli/chat/agent_delegator.rb +75 -0
- data/lib/legion/cli/chat/agent_registry.rb +93 -0
- data/lib/legion/cli/chat/chat_logger.rb +48 -0
- data/lib/legion/cli/chat/checkpoint.rb +127 -0
- data/lib/legion/cli/chat/context.rb +116 -0
- data/lib/legion/cli/chat/extension_tool.rb +32 -0
- data/lib/legion/cli/chat/extension_tool_loader.rb +117 -0
- data/lib/legion/cli/chat/markdown_renderer.rb +101 -0
- data/lib/legion/cli/chat/memory_store.rb +108 -0
- data/lib/legion/cli/chat/permissions.rb +94 -0
- data/lib/legion/cli/chat/session.rb +107 -0
- data/lib/legion/cli/chat/session_store.rb +76 -0
- data/lib/legion/cli/chat/status_indicator.rb +59 -0
- data/lib/legion/cli/chat/subagent.rb +89 -0
- data/lib/legion/cli/chat/tool_registry.rb +60 -0
- data/lib/legion/cli/chat/tools/edit_file.rb +71 -0
- data/lib/legion/cli/chat/tools/read_file.rb +38 -0
- data/lib/legion/cli/chat/tools/run_command.rb +41 -0
- data/lib/legion/cli/chat/tools/save_memory.rb +29 -0
- data/lib/legion/cli/chat/tools/search_content.rb +53 -0
- data/lib/legion/cli/chat/tools/search_files.rb +31 -0
- data/lib/legion/cli/chat/tools/search_memory.rb +28 -0
- data/lib/legion/cli/chat/tools/spawn_agent.rb +45 -0
- data/lib/legion/cli/chat/tools/web_search.rb +36 -0
- data/lib/legion/cli/chat/tools/write_file.rb +30 -0
- data/lib/legion/cli/chat/web_fetch.rb +156 -0
- data/lib/legion/cli/chat/web_search.rb +105 -0
- data/lib/legion/cli/chat_command.rb +1089 -0
- data/lib/legion/cli/check_command.rb +217 -0
- data/lib/legion/cli/cohort.rb +2 -0
- data/lib/legion/cli/coldstart_command.rb +224 -0
- data/lib/legion/cli/commit_command.rb +175 -0
- data/lib/legion/cli/completion_command.rb +99 -0
- data/lib/legion/cli/config_command.rb +262 -0
- data/lib/legion/cli/config_scaffold.rb +263 -0
- data/lib/legion/cli/connection.rb +149 -0
- data/lib/legion/cli/doctor/bundle_check.rb +51 -0
- data/lib/legion/cli/doctor/cache_check.rb +63 -0
- data/lib/legion/cli/doctor/config_check.rb +73 -0
- data/lib/legion/cli/doctor/database_check.rb +92 -0
- data/lib/legion/cli/doctor/extensions_check.rb +77 -0
- data/lib/legion/cli/doctor/permissions_check.rb +43 -0
- data/lib/legion/cli/doctor/pid_check.rb +59 -0
- data/lib/legion/cli/doctor/rabbitmq_check.rb +53 -0
- data/lib/legion/cli/doctor/result.rb +45 -0
- data/lib/legion/cli/doctor/ruby_version_check.rb +29 -0
- data/lib/legion/cli/doctor/vault_check.rb +76 -0
- data/lib/legion/cli/doctor_command.rb +180 -0
- data/lib/legion/cli/error.rb +7 -0
- data/lib/legion/cli/function.rb +4 -2
- data/lib/legion/cli/gaia_command.rb +104 -0
- data/lib/legion/cli/generate_command.rb +366 -0
- data/lib/legion/cli/lex/actor.rb +2 -0
- data/lib/legion/cli/lex/exchange.rb +2 -0
- data/lib/legion/cli/lex/message.rb +2 -0
- data/lib/legion/cli/lex/queue.rb +2 -1
- data/lib/legion/cli/lex/runner.rb +3 -1
- data/lib/legion/cli/lex/templates/base/dockerfile.erb +1 -1
- data/lib/legion/cli/lex_command.rb +578 -0
- data/lib/legion/cli/mcp_command.rb +49 -0
- data/lib/legion/cli/memory_command.rb +113 -0
- data/lib/legion/cli/openapi_command.rb +55 -0
- data/lib/legion/cli/output.rb +206 -0
- data/lib/legion/cli/plan_command.rb +187 -0
- data/lib/legion/cli/pr_command.rb +234 -0
- data/lib/legion/cli/relationship.rb +2 -0
- data/lib/legion/cli/review_command.rb +309 -0
- data/lib/legion/cli/schedule_command.rb +174 -0
- data/lib/legion/cli/start.rb +48 -0
- data/lib/legion/cli/status.rb +113 -0
- data/lib/legion/cli/swarm_command.rb +152 -0
- data/lib/legion/cli/task.rb +2 -0
- data/lib/legion/cli/task_command.rb +356 -0
- data/lib/legion/cli/telemetry_command.rb +106 -0
- data/lib/legion/cli/theme.rb +116 -0
- data/lib/legion/cli/trigger.rb +6 -3
- data/lib/legion/cli/version.rb +5 -2
- data/lib/legion/cli/worker_command.rb +172 -0
- data/lib/legion/cli.rb +297 -39
- data/lib/legion/digital_worker/lifecycle.rb +105 -0
- data/lib/legion/digital_worker/registry.rb +51 -0
- data/lib/legion/digital_worker/risk_tier.rb +77 -0
- data/lib/legion/digital_worker/value_metrics.rb +71 -0
- data/lib/legion/digital_worker.rb +47 -0
- data/lib/legion/events.rb +68 -0
- data/lib/legion/extensions/actors/base.rb +2 -0
- data/lib/legion/extensions/actors/defaults.rb +2 -0
- data/lib/legion/extensions/actors/every.rb +3 -1
- data/lib/legion/extensions/actors/loop.rb +2 -0
- data/lib/legion/extensions/actors/nothing.rb +2 -2
- data/lib/legion/extensions/actors/once.rb +2 -0
- data/lib/legion/extensions/actors/poll.rb +6 -3
- data/lib/legion/extensions/actors/subscription.rb +7 -9
- data/lib/legion/extensions/builders/actors.rb +2 -0
- data/lib/legion/extensions/builders/base.rb +2 -0
- data/lib/legion/extensions/builders/helpers.rb +2 -0
- data/lib/legion/extensions/builders/hooks.rb +46 -0
- data/lib/legion/extensions/builders/runners.rb +2 -0
- data/lib/legion/extensions/core.rb +34 -0
- data/lib/legion/extensions/data/migrator.rb +3 -1
- data/lib/legion/extensions/data/model.rb +2 -0
- data/lib/legion/extensions/data.rb +4 -5
- data/lib/legion/extensions/helpers/base.rb +2 -0
- data/lib/legion/extensions/helpers/cache.rb +2 -0
- data/lib/legion/extensions/helpers/core.rb +2 -0
- data/lib/legion/extensions/helpers/data.rb +2 -0
- data/lib/legion/extensions/helpers/lex.rb +2 -0
- data/lib/legion/extensions/helpers/logger.rb +2 -0
- data/lib/legion/extensions/helpers/task.rb +2 -0
- data/lib/legion/extensions/helpers/transport.rb +2 -0
- data/lib/legion/extensions/hooks/base.rb +138 -0
- data/lib/legion/extensions/transport.rb +11 -6
- data/lib/legion/extensions.rb +42 -8
- data/lib/legion/ingress.rb +67 -0
- data/lib/legion/lex.rb +2 -22
- data/lib/legion/mcp/resources/extension_info.rb +67 -0
- data/lib/legion/mcp/resources/runner_catalog.rb +63 -0
- data/lib/legion/mcp/server.rb +103 -0
- data/lib/legion/mcp/tools/create_chain.rb +50 -0
- data/lib/legion/mcp/tools/create_relationship.rb +51 -0
- data/lib/legion/mcp/tools/create_schedule.rb +64 -0
- data/lib/legion/mcp/tools/delete_chain.rb +52 -0
- data/lib/legion/mcp/tools/delete_relationship.rb +52 -0
- data/lib/legion/mcp/tools/delete_schedule.rb +52 -0
- data/lib/legion/mcp/tools/delete_task.rb +49 -0
- data/lib/legion/mcp/tools/describe_runner.rb +92 -0
- data/lib/legion/mcp/tools/disable_extension.rb +50 -0
- data/lib/legion/mcp/tools/enable_extension.rb +50 -0
- data/lib/legion/mcp/tools/get_config.rb +63 -0
- data/lib/legion/mcp/tools/get_extension.rb +56 -0
- data/lib/legion/mcp/tools/get_status.rb +50 -0
- data/lib/legion/mcp/tools/get_task.rb +48 -0
- data/lib/legion/mcp/tools/get_task_logs.rb +56 -0
- data/lib/legion/mcp/tools/list_chains.rb +48 -0
- data/lib/legion/mcp/tools/list_extensions.rb +46 -0
- data/lib/legion/mcp/tools/list_relationships.rb +45 -0
- data/lib/legion/mcp/tools/list_schedules.rb +51 -0
- data/lib/legion/mcp/tools/list_tasks.rb +50 -0
- data/lib/legion/mcp/tools/list_workers.rb +53 -0
- data/lib/legion/mcp/tools/routing_stats.rb +51 -0
- data/lib/legion/mcp/tools/run_task.rb +68 -0
- data/lib/legion/mcp/tools/show_worker.rb +48 -0
- data/lib/legion/mcp/tools/team_summary.rb +53 -0
- data/lib/legion/mcp/tools/update_chain.rb +54 -0
- data/lib/legion/mcp/tools/update_relationship.rb +55 -0
- data/lib/legion/mcp/tools/update_schedule.rb +65 -0
- data/lib/legion/mcp/tools/worker_costs.rb +55 -0
- data/lib/legion/mcp/tools/worker_lifecycle.rb +54 -0
- data/lib/legion/mcp.rb +20 -0
- data/lib/legion/process.rb +15 -3
- data/lib/legion/readiness.rb +50 -0
- data/lib/legion/runner/log.rb +2 -0
- data/lib/legion/runner/status.rb +10 -9
- data/lib/legion/runner.rb +4 -0
- data/lib/legion/service.rb +142 -19
- data/lib/legion/supervision.rb +2 -0
- data/lib/legion/version.rb +3 -1
- data/lib/legion.rb +5 -0
- data/scripts/rollout-ci-workflow.sh +120 -0
- data/scripts/sync-github-labels-topics.sh +281 -0
- metadata +268 -62
- data/.github/workflows/rspec.yml +0 -45
- data/.github/workflows/rubocop.yml +0 -28
- data/.github/workflows/sourcehawk-scan.yml +0 -20
- data/CODE_OF_CONDUCT.md +0 -75
- data/CONTRIBUTING.md +0 -55
- data/INDIVIDUAL_CONTRIBUTOR_LICENSE.md +0 -30
- data/NOTICE.txt +0 -9
- data/SECURITY.md +0 -9
- data/attribution.txt +0 -1
- data/exe/legionio +0 -53
- data/exe/lex_gen +0 -5
- data/sourcehawk.yml +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6f04739022a1b0f58b820dbcc6be1850a1830cd852b6b253c9069d9f9eba5bb1
|
|
4
|
+
data.tar.gz: afa47da3a0fabe43c5379e6a21552fdf65270f6a5426f1309b41e7a390281d91
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 89de4e81fc89e8610b7b512390d6864dff9cb152079d1ffd02f084d5afb5086ccdf45f78a5947a5f5a3206158768d77d8651df48644bd7c98ba04c77654d11b6
|
|
7
|
+
data.tar.gz: b343fa58368cda584954ba83d85b55b64c2c7e64bbe5dbdcdc841ad75ae553781ddb05d22adcf98898345b4afe0a20d3c902e29a7e4fe7e558121f6c89f56d9f
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
ci:
|
|
9
|
+
uses: LegionIO/.github/.github/workflows/ci.yml@main
|
|
10
|
+
|
|
11
|
+
release:
|
|
12
|
+
needs: ci
|
|
13
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
14
|
+
uses: LegionIO/.github/.github/workflows/release.yml@main
|
|
15
|
+
secrets:
|
|
16
|
+
rubygems-api-key: ${{ secrets.RUBYGEMS_API_KEY }}
|
data/.gitignore
CHANGED
|
@@ -12,4 +12,16 @@
|
|
|
12
12
|
*.key
|
|
13
13
|
# rspec failure tracking
|
|
14
14
|
.rspec_status
|
|
15
|
-
legionio.key
|
|
15
|
+
legionio.key
|
|
16
|
+
# runtime artifacts
|
|
17
|
+
.DS_Store
|
|
18
|
+
legionio.db
|
|
19
|
+
logs/
|
|
20
|
+
# local settings (may contain secrets)
|
|
21
|
+
settings/
|
|
22
|
+
# design reference files
|
|
23
|
+
legion_colors*.html
|
|
24
|
+
legionio_animated*.html
|
|
25
|
+
legionio_wallpaper*.svg
|
|
26
|
+
# generated executive briefs
|
|
27
|
+
legionio_overview*
|
data/.rubocop.yml
CHANGED
|
@@ -1,90 +1,66 @@
|
|
|
1
|
+
AllCops:
|
|
2
|
+
TargetRubyVersion: 3.4
|
|
3
|
+
NewCops: enable
|
|
4
|
+
SuggestExtensions: false
|
|
5
|
+
|
|
1
6
|
Layout/LineLength:
|
|
2
7
|
Max: 160
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Metrics:
|
|
12
|
-
IgnorePatterns:
|
|
13
|
-
- .unknown
|
|
14
|
-
- .fatal
|
|
15
|
-
- .error
|
|
16
|
-
- .warn
|
|
17
|
-
- .info
|
|
18
|
-
- .debug
|
|
19
|
-
- .trace
|
|
8
|
+
|
|
9
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
|
10
|
+
EnforcedStyle: space
|
|
11
|
+
|
|
12
|
+
Layout/HashAlignment:
|
|
13
|
+
EnforcedHashRocketStyle: table
|
|
14
|
+
EnforcedColonStyle: table
|
|
15
|
+
|
|
20
16
|
Metrics/MethodLength:
|
|
21
17
|
Max: 50
|
|
22
|
-
|
|
23
|
-
- .
|
|
24
|
-
- .
|
|
25
|
-
|
|
26
|
-
- .warn
|
|
27
|
-
- .info
|
|
28
|
-
- .debug
|
|
29
|
-
- .trace
|
|
18
|
+
Exclude:
|
|
19
|
+
- 'lib/legion/cli/chat_command.rb'
|
|
20
|
+
- 'lib/legion/api/openapi.rb'
|
|
21
|
+
|
|
30
22
|
Metrics/ClassLength:
|
|
31
23
|
Max: 1500
|
|
24
|
+
|
|
32
25
|
Metrics/ModuleLength:
|
|
33
26
|
Max: 1500
|
|
27
|
+
|
|
34
28
|
Metrics/BlockLength:
|
|
35
29
|
Max: 40
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
- .
|
|
39
|
-
- .
|
|
40
|
-
- .
|
|
41
|
-
- .
|
|
42
|
-
- .
|
|
43
|
-
- .
|
|
30
|
+
Exclude:
|
|
31
|
+
- 'spec/**/*'
|
|
32
|
+
- 'legionio.gemspec'
|
|
33
|
+
- 'lib/legion/cli/chat_command.rb'
|
|
34
|
+
- 'lib/legion/cli/plan_command.rb'
|
|
35
|
+
- 'lib/legion/cli/swarm_command.rb'
|
|
36
|
+
- 'lib/legion/cli/gaia_command.rb'
|
|
37
|
+
- 'lib/legion/cli/schedule_command.rb'
|
|
38
|
+
|
|
44
39
|
Metrics/AbcSize:
|
|
45
40
|
Max: 60
|
|
46
|
-
|
|
47
|
-
- .
|
|
48
|
-
|
|
49
|
-
- .error
|
|
50
|
-
- .warn
|
|
51
|
-
- .info
|
|
52
|
-
- .debug
|
|
53
|
-
- .trace
|
|
41
|
+
Exclude:
|
|
42
|
+
- 'lib/legion/cli/chat_command.rb'
|
|
43
|
+
|
|
54
44
|
Metrics/CyclomaticComplexity:
|
|
55
45
|
Max: 15
|
|
56
|
-
|
|
57
|
-
- .
|
|
58
|
-
|
|
59
|
-
- .error
|
|
60
|
-
- .warn
|
|
61
|
-
- .info
|
|
62
|
-
- .debug
|
|
63
|
-
- .trace
|
|
46
|
+
Exclude:
|
|
47
|
+
- 'lib/legion/cli/chat_command.rb'
|
|
48
|
+
|
|
64
49
|
Metrics/PerceivedComplexity:
|
|
65
50
|
Max: 17
|
|
66
|
-
|
|
67
|
-
- .unknown
|
|
68
|
-
- .fatal
|
|
69
|
-
- .error
|
|
70
|
-
- .warn
|
|
71
|
-
- .info
|
|
72
|
-
- .debug
|
|
73
|
-
- .trace
|
|
74
|
-
Layout/SpaceAroundEqualsInParameterDefault:
|
|
75
|
-
EnforcedStyle: space
|
|
76
|
-
Style/SymbolArray:
|
|
77
|
-
Enabled: true
|
|
78
|
-
Layout/HashAlignment:
|
|
79
|
-
EnforcedHashRocketStyle: table
|
|
80
|
-
EnforcedColonStyle: table
|
|
51
|
+
|
|
81
52
|
Style/Documentation:
|
|
82
53
|
Enabled: false
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
54
|
+
|
|
55
|
+
Style/SymbolArray:
|
|
56
|
+
Enabled: true
|
|
57
|
+
|
|
87
58
|
Style/FrozenStringLiteralComment:
|
|
88
|
-
Enabled:
|
|
59
|
+
Enabled: true
|
|
60
|
+
EnforcedStyle: always
|
|
61
|
+
|
|
89
62
|
Naming/FileName:
|
|
90
63
|
Enabled: false
|
|
64
|
+
|
|
65
|
+
Naming/PredicateMethod:
|
|
66
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,135 @@
|
|
|
1
1
|
# Legion Changelog
|
|
2
2
|
|
|
3
|
+
## v1.4.8
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- Relationships API routes now fully functional (removed 501 stub guards, backed by legion-data migration)
|
|
7
|
+
- Relationships MCP tool no longer checks for missing model
|
|
8
|
+
- Gaia API route returns 503 instead of 500 when `Legion::Gaia` is defined but lacks `started?` method
|
|
9
|
+
|
|
10
|
+
## v1.4.7
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Extension-powered chat tools: LEX extensions can ship optional `tools/` directories with `RubyLLM::Tool` subclasses
|
|
14
|
+
- `ExtensionToolLoader` lazily discovers extension tools at chat startup
|
|
15
|
+
- `permission_tier` DSL for extension tools (`:read`, `:write`, `:shell`) with settings override
|
|
16
|
+
- Session mode ceiling: read_only blocks write/shell extension tools regardless of tool declaration
|
|
17
|
+
- Plan mode uses tier-based filtering (no longer hardcoded tool list)
|
|
18
|
+
- `legion generate tool <name>` scaffolds tool + spec in current LEX
|
|
19
|
+
- `legion lex create` now includes empty `tools/` directory
|
|
20
|
+
- Tab completion updated for `legion generate tool`
|
|
21
|
+
- `Permissions.register_extension_tier` and `Permissions.clear_extension_tiers!` for extension tool tier management
|
|
22
|
+
- System prompt includes extension tool names when available
|
|
23
|
+
|
|
24
|
+
## v1.4.6
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- `legion doctor` CLI command diagnoses the LegionIO environment and prescribes fixes
|
|
28
|
+
- 10 environment checks: Ruby version, bundle status, config files, RabbitMQ, database, cache, Vault, extensions, PID files, permissions
|
|
29
|
+
- `--fix` flag for auto-remediation of fixable issues (stale PIDs, missing gems, missing config)
|
|
30
|
+
- `--json` flag for machine-readable diagnosis output with pass/fail/warn/skip per check
|
|
31
|
+
- `Doctor::Result` value object with status, message, prescription, and auto_fixable fields
|
|
32
|
+
- Exit code 1 when any check fails, 0 when all checks pass or warn
|
|
33
|
+
|
|
34
|
+
## v1.4.5
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
- `legion openapi generate` CLI command outputs OpenAPI 3.1.0 spec JSON to stdout or file (-o)
|
|
38
|
+
- `legion openapi routes` CLI command lists all API routes with HTTP method and summary
|
|
39
|
+
- `GET /api/openapi.json` endpoint serves the full OpenAPI 3.1.0 spec at runtime (auth skipped)
|
|
40
|
+
- `Legion::API::OpenAPI` module with `.spec` (returns Hash) and `.to_json` class methods
|
|
41
|
+
- OpenAPI spec covers all 44 routes across 16 resource groups with request/response schemas
|
|
42
|
+
- Auth middleware SKIP_PATHS updated to include `/api/openapi.json`
|
|
43
|
+
|
|
44
|
+
## v1.4.4
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
- `legion completion bash` subcommand outputs bash tab completion script
|
|
48
|
+
- `legion completion zsh` subcommand outputs zsh tab completion script
|
|
49
|
+
- `legion completion install` subcommand prints shell-specific installation instructions
|
|
50
|
+
- `completions/legion.bash` bash completion script with full command tree coverage
|
|
51
|
+
- `completions/_legion` zsh completion script with descriptions for all commands and flags
|
|
52
|
+
- `legion lex create` now scaffolds a standalone `Client` class in new extensions
|
|
53
|
+
|
|
54
|
+
## v1.4.3
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- `legion gaia status` CLI subcommand (probes GET /api/gaia/status, shows cognitive layer health)
|
|
58
|
+
- `GET /api/gaia/status` API route returns GAIA boot state, active channels, heartbeat health
|
|
59
|
+
- `legion schedule` CLI subcommand (list, show, add, remove, logs) wrapping /api/schedules
|
|
60
|
+
- `/commit` chat slash command (AI-generated commit message from staged changes)
|
|
61
|
+
- `/workers` chat slash command (list digital workers from running daemon)
|
|
62
|
+
- `/dream` chat slash command (trigger dream cycle on running daemon)
|
|
63
|
+
|
|
64
|
+
## v1.4.2
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
- Multiline input support in chat REPL via backslash continuation (end a line with `\` to continue)
|
|
68
|
+
- Continuation prompt (`...`) for multiline input lines
|
|
69
|
+
- Specs for `read_user_input` method (12 examples)
|
|
70
|
+
|
|
71
|
+
## v1.4.1
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
- CLI status indicators using TTY::Spinner for chat REPL
|
|
75
|
+
- Session lifecycle events (:llm_start, :llm_first_token, :llm_complete, :tool_start, :tool_complete)
|
|
76
|
+
- StatusIndicator class subscribes to session events and manages spinner display
|
|
77
|
+
- Purple-themed braille dot spinner with phase labels (thinking..., running tool_name...)
|
|
78
|
+
- Tool counter prefix ([1/3]) for multi-tool loops
|
|
79
|
+
- Graceful degradation for non-TTY output (piped, redirected)
|
|
80
|
+
|
|
81
|
+
## v1.4.0
|
|
82
|
+
|
|
83
|
+
### Added
|
|
84
|
+
- File edit checkpointing system with `/rewind` to undo edits (per-edit, N steps, or per-file)
|
|
85
|
+
- Persistent memory system (`/memory`, `.legion/memory.md`, `~/.legion/memory/global.md`)
|
|
86
|
+
- `legion memory` CLI subcommand for managing persistent memory entries
|
|
87
|
+
- Web search via DuckDuckGo HTML scraping (`/search` slash command)
|
|
88
|
+
- Background subagent spawning via headless subprocess (`/agent`, `SpawnAgent` tool)
|
|
89
|
+
- Custom agent definitions (`.legion/agents/*.json` or `.yaml`) with `@name` delegation
|
|
90
|
+
- Plan mode toggle (`/plan`) — restricts tools to read-only for exploration
|
|
91
|
+
- `legion plan` CLI subcommand for standalone read-only exploration sessions
|
|
92
|
+
- Multi-agent swarm orchestration (`/swarm`, `legion swarm` CLI subcommand)
|
|
93
|
+
- `SaveMemory` and `SearchMemory` LLM tools for auto-remembering
|
|
94
|
+
- `WebSearch` LLM tool for web search during conversations
|
|
95
|
+
- Checkpoint integration in `WriteFile` and `EditFile` tools (auto-save before writes)
|
|
96
|
+
|
|
97
|
+
### Changed
|
|
98
|
+
- Rubocop exclusions added for plan_command.rb and swarm_command.rb (BlockLength)
|
|
99
|
+
- Rubocop exclusions added for chat_command.rb (MethodLength, CyclomaticComplexity)
|
|
100
|
+
|
|
101
|
+
## v1.3.0
|
|
102
|
+
|
|
103
|
+
### Added
|
|
104
|
+
- `legion chat` interactive REPL and headless prompt mode with LLM integration
|
|
105
|
+
- `legion commit` command for AI-generated commit messages
|
|
106
|
+
- `legion pr` command for AI-generated pull request descriptions
|
|
107
|
+
- `legion review` command for AI-powered code review
|
|
108
|
+
- `/fetch` slash command for injecting web page context into chat sessions
|
|
109
|
+
- Chat permission system with read/write/shell tiers and auto-approve mode
|
|
110
|
+
- Chat session persistence (save/load/list) and `/compact` context compression
|
|
111
|
+
- `--max-budget-usd` cost cap for chat sessions
|
|
112
|
+
- `--incognito` mode to disable automatic session history saving
|
|
113
|
+
- Markdown rendering for chat responses (via rouge)
|
|
114
|
+
- Purple palette theme, orbital ASCII banner, and branded CLI output
|
|
115
|
+
- Chat logger for structured debug/info logging
|
|
116
|
+
|
|
117
|
+
### Changed
|
|
118
|
+
- Worker lifecycle CLI passes `authority_verified`/`governance_override` flags
|
|
119
|
+
- Worker API accepts governance flags from request body
|
|
120
|
+
- Config `path` command now respects `--config-dir` option
|
|
121
|
+
|
|
122
|
+
### Fixed
|
|
123
|
+
- Config `sensitive_key?` false positive: `cluster_secret_timeout` no longer redacted
|
|
124
|
+
- `check_command` now rescues `LoadError` (missing gems no longer crash the check run)
|
|
125
|
+
- Config `show`/`path`/`validate` commands call `Connection.shutdown` in ensure blocks
|
|
126
|
+
- Config `path` and `validate` rescue `CLI::Error` properly
|
|
127
|
+
- Worker CLI/API handle `GovernanceRequired` and `AuthorityRequired` exceptions
|
|
128
|
+
- Removed unused `--json`/`--no-color` class_options from generate and mcp commands
|
|
129
|
+
|
|
3
130
|
## v1.2.1
|
|
4
131
|
* Updating LEX CLI templates
|
|
5
132
|
* Fixing issue with LEX schema migrator
|
|
6
133
|
|
|
7
134
|
## v1.2.0
|
|
8
|
-
Moving from BitBucket to GitHub
|
|
135
|
+
Moving from BitBucket to GitHub. All git history is reset from this point on
|