x_aeon_agents 2.8.0 → 2.8.1
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 +6 -0
- data/TODO.md +1 -0
- data/lib/x_aeon_agents/agents/pull_request_creator_agent.rb +38 -6
- 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: 4c95fbf7ea4fb512819b0462de5b1fd7345421fb33f7e4d016d4cd6897b66415
|
|
4
|
+
data.tar.gz: 92d92a27cf1aaec21544b282c41b14b42deea2d5e0389685f3c2d9303a681c4b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f1957d9fa88264eb0db84d5f99e46e75275d49bbe91dbf386b1b7fecd020a75ad87faf376c361f9c8a96b090f0d9724dec85e18345ab5ada403cd8096fde2a3a
|
|
7
|
+
data.tar.gz: 7966f5edbc3a73ccda0986b2703f392c9eae7842292504c6c958c315e7026a7362631665bb599969ae59496493c280161ad933fc317e222e3aad88c1d76bef3a
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# [v2.8.1](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.8.0...v2.8.1) (2026-11-12 17:54:34)
|
|
2
|
+
|
|
3
|
+
### Patches
|
|
4
|
+
|
|
5
|
+
* [fix: handle structured hash messages in PR creator agent](https://github.com/Muriel-Salvan/x_aeon_agents/commit/5b6496bd2d0fe3f8498da16d1f227586a2d18f84)
|
|
6
|
+
|
|
1
7
|
# [v2.8.0](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.7.1...v2.8.0) (2026-11-12 17:47:11)
|
|
2
8
|
|
|
3
9
|
## Global changes
|
data/TODO.md
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
* Consider remove the checklists from MarkdownHeavy (maybe having MarkdownFiles?).
|
|
1
2
|
* Embed TaskStarter as an option to implement-issue CLI.
|
|
2
3
|
* Add a --tdd option to implement-issue and use a TddAgent in place of DeveloperAgent.
|
|
3
4
|
* Add a bump dependencies CLI command to do what bump_gemspec_minor does (and also in Gemfile) for Ruby projects, and make it so it can be extended for other languages.
|
|
@@ -72,20 +72,20 @@ module XAeonAgents
|
|
|
72
72
|
# Skip the first user instruction
|
|
73
73
|
remaining_conversation =
|
|
74
74
|
if !author.conversation.empty? && author.conversation.first[:author].downcase == 'user'
|
|
75
|
-
author.conversation
|
|
75
|
+
author.conversation.drop(1)
|
|
76
76
|
else
|
|
77
|
-
author.conversation
|
|
77
|
+
author.conversation.dup
|
|
78
78
|
end
|
|
79
79
|
until remaining_conversation.empty?
|
|
80
80
|
message = remaining_conversation.shift
|
|
81
|
-
next if message
|
|
81
|
+
next if conversation_text(message).strip.empty?
|
|
82
82
|
|
|
83
83
|
if message[:author].downcase == 'user'
|
|
84
84
|
messages << message
|
|
85
85
|
elsif message[:question]
|
|
86
86
|
answer = remaining_conversation.first
|
|
87
87
|
messages <<
|
|
88
|
-
if answer && answer[:author].downcase == 'user' && !answer
|
|
88
|
+
if answer && answer[:author].downcase == 'user' && !conversation_text(answer).strip.empty?
|
|
89
89
|
message.merge(answer: remaining_conversation.shift)
|
|
90
90
|
else
|
|
91
91
|
message
|
|
@@ -107,14 +107,14 @@ module XAeonAgents
|
|
|
107
107
|
.map do |message|
|
|
108
108
|
<<~EO_MESSAGE.strip
|
|
109
109
|
› **#{message[:author]}**
|
|
110
|
-
#{message
|
|
110
|
+
#{conversation_text(message).each_line.map { |line| "> #{line}".strip }.join("\n")}
|
|
111
111
|
> <sub>#{message[:at]}</sub>
|
|
112
112
|
#{
|
|
113
113
|
if message[:answer]
|
|
114
114
|
<<~EO_ANSWER
|
|
115
115
|
>
|
|
116
116
|
> › **#{message[:answer][:author]}**
|
|
117
|
-
#{message[:answer]
|
|
117
|
+
#{conversation_text(message[:answer]).each_line.map { |line| "> #{line}" }.join("\n")}
|
|
118
118
|
> <sub>#{message[:answer][:at]}</sub>
|
|
119
119
|
EO_ANSWER
|
|
120
120
|
end
|
|
@@ -149,6 +149,38 @@ module XAeonAgents
|
|
|
149
149
|
end
|
|
150
150
|
{}
|
|
151
151
|
end
|
|
152
|
+
|
|
153
|
+
private
|
|
154
|
+
|
|
155
|
+
# Normalize a conversation entry's message to a String for display.
|
|
156
|
+
# Conversation messages are stored as String by #converse, but as Hash
|
|
157
|
+
# (or nil) when they come from #ask with a structured (Cline) question.
|
|
158
|
+
#
|
|
159
|
+
# @param entry [Hash{Symbol => Object}] A single conversation entry
|
|
160
|
+
# @return [String] The human-readable message text (possibly empty)
|
|
161
|
+
def conversation_text(entry)
|
|
162
|
+
message = entry[:message] || entry['message']
|
|
163
|
+
case message
|
|
164
|
+
when String
|
|
165
|
+
message
|
|
166
|
+
when nil
|
|
167
|
+
''
|
|
168
|
+
when Hash
|
|
169
|
+
text = message[:text] || message['text'] || message[:message] || message['message'] ||
|
|
170
|
+
message[:question] || message['question']
|
|
171
|
+
text = text.join("\n") if text.is_a?(Array)
|
|
172
|
+
options = message[:options] || message['options']
|
|
173
|
+
options_text =
|
|
174
|
+
if options.is_a?(Array)
|
|
175
|
+
options.map { |option| option.is_a?(Hash) ? (option[:text] || option['text'] || option.to_s) : option.to_s }.join(' / ')
|
|
176
|
+
else
|
|
177
|
+
''
|
|
178
|
+
end
|
|
179
|
+
[text.to_s, options_text].reject(&:empty?).join("\n")
|
|
180
|
+
else
|
|
181
|
+
message.to_s
|
|
182
|
+
end
|
|
183
|
+
end
|
|
152
184
|
end
|
|
153
185
|
end
|
|
154
186
|
end
|