Class: XAeonAgents::Agents::SkillInstallerAgent

Inherits:
ComposableAgents::Agent
  • Object
show all
Includes:
XAeonAgents::AgentDefaults
Defined in:
lib/x_aeon_agents/agents/skill_installer_agent.rb

Overview

Agent responsible for installing skills from the .skills manifest.

Instance Method Summary collapse

Methods included from XAeonAgents::AgentDefaults

#new_agent, prepended, singleton_session_id

Instance Method Details

#input_artifacts_contractsHash{Symbol => Object}

Define input artifacts contracts

Returns:

  • (Hash{Symbol => Object})

    Set of input artifacts description, per artifact name



12
13
14
# File 'lib/x_aeon_agents/agents/skill_installer_agent.rb', line 12

def input_artifacts_contracts
  { agent: 'Agent name to be used to install skills' }
end

#run(agent: 'cline') ⇒ Hash{Symbol => Object}

Execute the agent to install skills from the .skills manifest.

Parameters:

  • agent (String) (defaults to: 'cline')

    Agent name to be used to install skills

Returns:

  • (Hash{Symbol => Object})

    Output artifacts content



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/x_aeon_agents/agents/skill_installer_agent.rb', line 20

def run(agent: 'cline')
  agent_name = agent.to_sym
  original_no_color = ENV.fetch('NO_COLOR', nil)
  ENV['NO_COLOR'] = '1'
  begin
    list_lines = `skillkit manifest`.split("\n")
  ensure
    ENV['NO_COLOR'] = original_no_color
  end
  list_lines = list_lines[(list_lines.index('Skills:') + 1)..]
  list_lines[0..(list_lines.index('') - 1)].each_slice(2) do |repo_desc, skills_desc|
    install_skills_recursive(
      repo_desc[4..].strip,
      skills_desc[12..].split(',').map(&:strip),
      agent_name
    )
  end

  puts
  puts 'Skills identified in the skillkit manifest and their dependencies have been installed successfully'
  { installed: true }
end