x_aeon_agents 2.0.3 → 2.1.0
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 +18 -0
- data/lib/x_aeon_agents/agents/skill_installer_agent.rb +34 -17
- data/lib/x_aeon_agents/agents/tester_agent.rb +6 -1
- data/lib/x_aeon_agents/cli.rb +6 -3
- data/lib/x_aeon_agents/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: 8b1e7041fddfc65c38861e98fbfc8fda9ea487cb11559f4303632536ca36b6f1
|
|
4
|
+
data.tar.gz: 20e83d9866bd6c2bbb373cfa264341b37e3c19e88d23192fef88eda253bf273f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a7b20717c0585a4e4ee6e95f818c22e0c7ebafc98d302c3af4beb1899fb0406dbac3f5ec59050523702cb0a7e26946072ecebb171e6f9fee5c5aee26adcbe2d1
|
|
7
|
+
data.tar.gz: 318d0c1d1dbdd6d3e2dfef4626f1e1c227b491db5536eeda6cad082398036d1d25f757c350e54f8defcffe388eedfe922c4d64a7dbb2815ca2e53b27d3f28577
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
# [v2.1.0](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.0.4...v2.1.0) (2026-10-22 13:25:41)
|
|
2
|
+
|
|
3
|
+
## Global changes
|
|
4
|
+
### Patches
|
|
5
|
+
|
|
6
|
+
* [feat(skill-installer): add global skills installation support](https://github.com/Muriel-Salvan/x_aeon_agents/commit/165088bc2cbd077cb3ccd781c51d9a590cef0b80)
|
|
7
|
+
|
|
8
|
+
## Changes for skill-installer
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* [feat(skill-installer): add global skills installation support](https://github.com/Muriel-Salvan/x_aeon_agents/commit/165088bc2cbd077cb3ccd781c51d9a590cef0b80)
|
|
12
|
+
|
|
13
|
+
# [v2.0.4](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.0.3...v2.0.4) (2026-10-22 11:31:50)
|
|
14
|
+
|
|
15
|
+
### Patches
|
|
16
|
+
|
|
17
|
+
* [refactor(agents): enrich tester plan_modifications contract with type metadata](https://github.com/Muriel-Salvan/x_aeon_agents/commit/2dabb5da11150c89d62d93b631b917c5ca330b49)
|
|
18
|
+
|
|
1
19
|
# [v2.0.3](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.0.2...v2.0.3) (2026-10-21 16:35:35)
|
|
2
20
|
|
|
3
21
|
## Global changes
|
|
@@ -10,7 +10,13 @@ module XAeonAgents
|
|
|
10
10
|
#
|
|
11
11
|
# @return [Hash{Symbol => Object}] Set of input artifacts description, per artifact name
|
|
12
12
|
def input_artifacts_contracts
|
|
13
|
-
{
|
|
13
|
+
{
|
|
14
|
+
agent: 'Agent name to be used to install skills',
|
|
15
|
+
global: {
|
|
16
|
+
description: 'Install skills globally instead of in the project',
|
|
17
|
+
optional: true
|
|
18
|
+
}
|
|
19
|
+
}
|
|
14
20
|
end
|
|
15
21
|
|
|
16
22
|
# Constructor
|
|
@@ -22,9 +28,10 @@ module XAeonAgents
|
|
|
22
28
|
|
|
23
29
|
# Execute the agent to install skills from the .skills manifest.
|
|
24
30
|
#
|
|
25
|
-
# @param agent [String] Agent name to be used to install skills
|
|
31
|
+
# @param agent [String, Symbol] Agent name to be used to install skills
|
|
32
|
+
# @param global [Boolean] Install skills globally (in the user home directory) instead of in the project
|
|
26
33
|
# @return [Hash{Symbol => Object}] Output artifacts content
|
|
27
|
-
def run(agent: 'cline')
|
|
34
|
+
def run(agent: 'cline', global: false)
|
|
28
35
|
super
|
|
29
36
|
agent_name = agent.to_sym
|
|
30
37
|
original_no_color = ENV.fetch('NO_COLOR', nil)
|
|
@@ -39,7 +46,8 @@ module XAeonAgents
|
|
|
39
46
|
install_skills_recursive(
|
|
40
47
|
repo_desc[4..].strip,
|
|
41
48
|
skills_desc[12..].split(',').map(&:strip),
|
|
42
|
-
agent_name
|
|
49
|
+
agent_name,
|
|
50
|
+
global:
|
|
43
51
|
)
|
|
44
52
|
end
|
|
45
53
|
|
|
@@ -49,22 +57,34 @@ module XAeonAgents
|
|
|
49
57
|
|
|
50
58
|
private
|
|
51
59
|
|
|
60
|
+
# Directory in which skills are installed for the given agent.
|
|
61
|
+
#
|
|
62
|
+
# @param _agent [Symbol] Agent to use
|
|
63
|
+
# @param global [Boolean] Whether skills are installed globally
|
|
64
|
+
# @return [String] Skills directory path
|
|
65
|
+
def skills_dir_for(_agent, global)
|
|
66
|
+
# TODO: Adapt to other kinds of agents, or get the directory from skillkit itself.
|
|
67
|
+
if global
|
|
68
|
+
File.join(Dir.home, '.cline', 'skills')
|
|
69
|
+
else
|
|
70
|
+
File.join(Dir.pwd, '.cline', 'skills')
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
52
74
|
# Install skills using skillkit, including dependencies recursively.
|
|
53
75
|
#
|
|
54
76
|
# @param repo [String] Repository
|
|
55
77
|
# @param skills [Array<String>] Skills to install
|
|
56
78
|
# @param agent [Symbol] Agent to use
|
|
57
|
-
|
|
79
|
+
# @param global [Boolean] Whether skills are installed globally
|
|
80
|
+
def install_skills_recursive(repo, skills, agent, global: false)
|
|
58
81
|
return if skills.empty?
|
|
59
82
|
|
|
60
|
-
|
|
61
|
-
cline: { skills_dir: '.cline/skills' }
|
|
62
|
-
}
|
|
63
|
-
skills_dir = agents_config[agent][:skills_dir]
|
|
83
|
+
skills_dir = skills_dir_for(agent, global)
|
|
64
84
|
|
|
65
85
|
task(:install_skills, name: 'Install skills', intent: "Install skills #{repo} / #{skills.join(',')}") do
|
|
66
|
-
Helpers.run_cmd("skillkit install #{repo} --yes --skills=#{skills.join(',')} --agent=#{agent}")
|
|
67
|
-
fix_skills_metadata(skills,
|
|
86
|
+
Helpers.run_cmd("skillkit install #{repo} --yes --skills=#{skills.join(',')} --agent=#{agent}#{' --global' if global}")
|
|
87
|
+
fix_skills_metadata(skills, skills_dir)
|
|
68
88
|
|
|
69
89
|
# Resolve dependencies
|
|
70
90
|
deps_per_repo = {}
|
|
@@ -82,20 +102,17 @@ module XAeonAgents
|
|
|
82
102
|
end
|
|
83
103
|
end
|
|
84
104
|
|
|
85
|
-
deps_per_repo.each { |dep_repo, dep_skills| install_skills_recursive(dep_repo, dep_skills, agent) }
|
|
105
|
+
deps_per_repo.each { |dep_repo, dep_skills| install_skills_recursive(dep_repo, dep_skills, agent, global:) }
|
|
86
106
|
end
|
|
87
107
|
end
|
|
88
108
|
|
|
89
109
|
# Fix the .skillkit.json subpath property after skillkit install.
|
|
90
110
|
#
|
|
91
111
|
# @param skills [Array<String>] Installed skills
|
|
92
|
-
# @param
|
|
93
|
-
def fix_skills_metadata(skills,
|
|
112
|
+
# @param skills_dir [String] Directory in which skills are installed
|
|
113
|
+
def fix_skills_metadata(skills, skills_dir)
|
|
94
114
|
require 'json'
|
|
95
115
|
|
|
96
|
-
agents_config = { cline: { skills_dir: '.cline/skills' } }
|
|
97
|
-
skills_dir = agents_config[agent][:skills_dir]
|
|
98
|
-
|
|
99
116
|
skills.each do |skill_name|
|
|
100
117
|
json_file = "#{skills_dir}/#{skill_name}/.skillkit.json"
|
|
101
118
|
json = JSON.parse(File.read(json_file))
|
|
@@ -23,7 +23,12 @@ module XAeonAgents
|
|
|
23
23
|
#
|
|
24
24
|
# @return [Hash{Symbol => Object}] Set of output artifacts description, per artifact name
|
|
25
25
|
def output_artifacts_contracts
|
|
26
|
-
super.merge(
|
|
26
|
+
super.merge(
|
|
27
|
+
plan_modifications: {
|
|
28
|
+
description: 'The modification or divergence you considered from the implementation plan',
|
|
29
|
+
type: :markdown
|
|
30
|
+
}
|
|
31
|
+
)
|
|
27
32
|
end
|
|
28
33
|
|
|
29
34
|
# Constructor
|
data/lib/x_aeon_agents/cli.rb
CHANGED
|
@@ -333,13 +333,16 @@ module XAeonAgents
|
|
|
333
333
|
$ xaa install-skills
|
|
334
334
|
|
|
335
335
|
$ xaa install-skills --agent cline
|
|
336
|
+
|
|
337
|
+
$ xaa install-skills --global
|
|
336
338
|
LONGDESC
|
|
337
339
|
option :agent, type: :string, default: 'cline', desc: 'Agent name to be used to install skills'
|
|
340
|
+
option :global, type: :boolean, default: false, desc: 'Install skills globally instead of in the project'
|
|
338
341
|
# Installs skills and their dependencies from the .skills manifest.
|
|
339
342
|
def install_skills
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
)
|
|
343
|
+
kwargs = { agent: options[:agent].to_sym }
|
|
344
|
+
kwargs[:global] = true if options[:global]
|
|
345
|
+
Agents::SkillInstallerAgent.new(session_id: options[:session_id]).run(**kwargs)
|
|
343
346
|
end
|
|
344
347
|
|
|
345
348
|
# --------------------------------------------------------------------------- #
|