Class: Legion::CLI::FleetSetup
- Inherits:
-
Object
- Object
- Legion::CLI::FleetSetup
- Defined in:
- lib/legion/cli/fleet_setup.rb
Constant Summary collapse
- FLEET_GEMS =
%w[ lex-assessor lex-planner lex-developer lex-validator lex-codegen lex-eval lex-exec lex-tasker lex-conditioner lex-transformer lex-audit lex-governance lex-agentic-social ].freeze
- MANIFEST_PATH =
File.('../fleet/manifest.yml', __dir__)
Instance Attribute Summary collapse
-
#formatter ⇒ Object
readonly
Returns the value of attribute formatter.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(formatter:, options:) ⇒ FleetSetup
constructor
A new instance of FleetSetup.
-
#phase1_install ⇒ Object
Phase 1: Install gems.
-
#phase2_wire ⇒ Object
Phase 2: Wire relationships, seed rules, register settings.
Constructor Details
#initialize(formatter:, options:) ⇒ FleetSetup
Returns a new instance of FleetSetup.
20 21 22 23 |
# File 'lib/legion/cli/fleet_setup.rb', line 20 def initialize(formatter:, options:) @formatter = formatter @options = end |
Instance Attribute Details
#formatter ⇒ Object (readonly)
Returns the value of attribute formatter.
18 19 20 |
# File 'lib/legion/cli/fleet_setup.rb', line 18 def formatter @formatter end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
18 19 20 |
# File 'lib/legion/cli/fleet_setup.rb', line 18 def @options end |
Class Method Details
.fleet_gems ⇒ Object
25 26 27 |
# File 'lib/legion/cli/fleet_setup.rb', line 25 def self.fleet_gems FLEET_GEMS end |
.manifest_path ⇒ Object
29 30 31 |
# File 'lib/legion/cli/fleet_setup.rb', line 29 def self.manifest_path MANIFEST_PATH end |
Instance Method Details
#phase1_install ⇒ Object
Phase 1: Install gems. Extensions register themselves on next LegionIO start.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/legion/cli/fleet_setup.rb', line 34 def phase1_install formatter.header('Fleet Setup - Phase 1: Install') unless [:json] installed, missing = partition_gems if missing.empty? formatter.success('All fleet gems already installed') unless [:json] return { success: true, installed: installed.size, skipped: 0 } end result = install_gems(missing) if result[:failed].positive? formatter.error("#{result[:failed]} gem(s) failed to install") unless [:json] return { success: false, error: :install_failed, **result } end formatter.success("Phase 1 complete: #{result[:installed]} gem(s) installed") unless [:json] { success: true, **result } end |
#phase2_wire ⇒ Object
Phase 2: Wire relationships, seed rules, register settings. Requires that extensions have been loaded and registered (LexRegister).
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/legion/cli/fleet_setup.rb', line 55 def phase2_wire formatter.header('Fleet Setup - Phase 2: Wire') unless [:json] require 'legion/workflow/manifest' require 'legion/workflow/loader' manifest = Legion::Workflow::Manifest.new(path: MANIFEST_PATH) unless manifest.valid? formatter.error("Invalid manifest: #{manifest.errors.join(', ')}") unless [:json] return { success: false, error: :invalid_manifest, errors: manifest.errors } end loader_result = Legion::Workflow::Loader.new.install(manifest) unless loader_result[:success] formatter.error("Relationship install failed: #{loader_result[:error]}") unless [:json] return { success: false, error: :relationship_install_failed, detail: loader_result } end apply_planner_timeout_policy rules_result = seed_conditioner_rules settings_result = register_settings unless [:json] formatter.success( "Phase 2 complete: chain_id=#{loader_result[:chain_id]}, " \ "#{loader_result[:relationship_ids].size} relationships" ) end { success: true, chain_id: loader_result[:chain_id], relationships: loader_result[:relationship_ids].size, rules: rules_result, settings: settings_result } end |