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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca63878f464258f86f9d780e3c02e8b5bd6f519caa475ebb11bb1f51457ebeb2
4
- data.tar.gz: '0780aa1af3dd89ab64c00aa28fb66afa4f320d98fa471cd715b0de3298267097'
3
+ metadata.gz: 4c95fbf7ea4fb512819b0462de5b1fd7345421fb33f7e4d016d4cd6897b66415
4
+ data.tar.gz: 92d92a27cf1aaec21544b282c41b14b42deea2d5e0389685f3c2d9303a681c4b
5
5
  SHA512:
6
- metadata.gz: b231e35b0015adacf2711b6cf2bbc3994722879f42a924ed4572b2c8ee2665b2082446b51df25f07f185b99620ddee8d74efbf6781719c869ab47e9753708c1f
7
- data.tar.gz: 9f12ff2f488d6735426bff1d8c88f44b9380a326018742ea1d768b8275a3aecef9343d152fa7da67084838b8f8b77f42b427082c48a19ca73a6709b10c48f6f0
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[1..]
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[:message].strip.empty?
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[:message].strip.empty?
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[:message].each_line.map { |line| "> #{line}".strip }.join("\n")}
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][:message].each_line.map { |line| "> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#{line}" }.join("\n")}
117
+ #{conversation_text(message[:answer]).each_line.map { |line| "> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#{line}" }.join("\n")}
118
118
  > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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
@@ -2,5 +2,5 @@ module XAeonAgents
2
2
  # @!group Global API
3
3
 
4
4
  # Gem version
5
- VERSION = '2.8.0'
5
+ VERSION = '2.8.1'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: x_aeon_agents
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muriel Salvan