swarm_sdk 2.7.3 → 2.7.4

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: 9d0b44f3edf346a30b0442027c9ca2e8cf06e3e2c074c89f483c0eab0964a592
4
- data.tar.gz: b7c690fd69303078c70c252a09a9e4f46b63f0f4a438a3fc9188cacc30e44109
3
+ metadata.gz: b5c93c6e9a850d624b8ac0fe9d31e53a4a764a1caa23319efcfa5b34edfd33b8
4
+ data.tar.gz: 2d4ec3258101a45507cbacbd98eeb86d8448627e35faedd2a693c0a18d8622a1
5
5
  SHA512:
6
- metadata.gz: e0881dd9ae7fefc423bdbad4d56d535be627b622f2301eae1c12858d8198f7f55472198f6413535bccd768b17368233ac24ca5d2ab58417cbee9a7a68e8cdc79
7
- data.tar.gz: a2af0ea8bf741a017196ce6db4d17a7b1bdc9fed2e517c35ae17c2336b950d25300186970f15b746fbc7dfd5c2679a53b9596d9f675c5a44089dc10672d542a0
6
+ metadata.gz: ac8f8c8dea846e5b0783b49dace5f2e01a0908ebed31eb377fdd4217480e99499fe9eb4bda14772cbfd71d52badc642687434a214f76cf136768c21967e1beff
7
+ data.tar.gz: 61a58b209810484c7bcf24727feaa8fb0e23aafc485dbb3ad8a510c095caeaa72778b0e3c97b22eb599a2d9153ef95093dc9aa6a3b34e717b23c4c5d9797b490
@@ -84,6 +84,11 @@ module SwarmSDK
84
84
  desc: "Message to send to the agent - can be a work request, question, or collaboration message",
85
85
  required: true
86
86
 
87
+ param :reset_context,
88
+ type: "boolean",
89
+ desc: "Reset the agent's conversation history before sending the message. Use it to recover from 'prompt too long' errors or other 4XX errors.",
90
+ required: false
91
+
87
92
  # Override name to return custom delegation tool name
88
93
  def name
89
94
  @tool_name
@@ -92,8 +97,9 @@ module SwarmSDK
92
97
  # Execute delegation with pre/post hooks
93
98
  #
94
99
  # @param message [String] Message to send to the agent
100
+ # @param reset_context [Boolean] Whether to reset the agent's conversation history before delegation
95
101
  # @return [String] Result from delegate agent or error message
96
- def execute(message:)
102
+ def execute(message:, reset_context: false)
97
103
  # Access swarm infrastructure
98
104
  call_stack = @swarm.delegation_call_stack
99
105
  hook_registry = @swarm.hook_registry
@@ -140,10 +146,10 @@ module SwarmSDK
140
146
  # Determine delegation type and proceed
141
147
  delegation_result = if @delegate_chat
142
148
  # Delegate to agent
143
- delegate_to_agent(message, call_stack)
149
+ delegate_to_agent(message, call_stack, reset_context: reset_context)
144
150
  elsif swarm_registry&.registered?(@delegate_target)
145
151
  # Delegate to registered swarm
146
- delegate_to_swarm(message, call_stack, swarm_registry)
152
+ delegate_to_swarm(message, call_stack, swarm_registry, reset_context: reset_context)
147
153
  else
148
154
  raise ConfigurationError, "Unknown delegation target: #{@delegate_target}"
149
155
  end
@@ -222,13 +228,15 @@ module SwarmSDK
222
228
  #
223
229
  # @param message [String] Message to send to the agent
224
230
  # @param call_stack [Array] Delegation call stack for circular dependency detection
231
+ # @param reset_context [Boolean] Whether to reset the agent's conversation history before delegation
225
232
  # @return [String] Result from agent
226
- def delegate_to_agent(message, call_stack)
233
+ def delegate_to_agent(message, call_stack, reset_context: false)
227
234
  # Push delegate target onto call stack to track delegation chain
228
235
  call_stack.push(@delegate_target)
229
236
  begin
230
- # Clear conversation if preserve_context is false
231
- @delegate_chat.clear_conversation unless @preserve_context
237
+ # Clear conversation if reset_context is true OR if preserve_context is false
238
+ # reset_context takes precedence as it's an explicit request
239
+ @delegate_chat.clear_conversation if reset_context || !@preserve_context
232
240
 
233
241
  response = @delegate_chat.ask(message, source: "delegation")
234
242
  response.content
@@ -243,20 +251,24 @@ module SwarmSDK
243
251
  # @param message [String] Message to send to the swarm
244
252
  # @param call_stack [Array] Delegation call stack for circular dependency detection
245
253
  # @param swarm_registry [SwarmRegistry] Registry for sub-swarms
254
+ # @param reset_context [Boolean] Whether to reset the swarm's conversation history before delegation
246
255
  # @return [String] Result from swarm's lead agent
247
- def delegate_to_swarm(message, call_stack, swarm_registry)
256
+ def delegate_to_swarm(message, call_stack, swarm_registry, reset_context: false)
248
257
  # Load sub-swarm (lazy load + cache)
249
258
  subswarm = swarm_registry.load_swarm(@delegate_target)
250
259
 
251
260
  # Push delegate target onto call stack to track delegation chain
252
261
  call_stack.push(@delegate_target)
253
262
  begin
263
+ # Reset swarm if reset_context is true
264
+ swarm_registry.reset(@delegate_target) if reset_context
265
+
254
266
  # Execute sub-swarm's lead agent
255
267
  lead_agent = subswarm.agents[subswarm.lead_agent]
256
268
  response = lead_agent.ask(message, source: "delegation")
257
269
  result = response.content
258
270
 
259
- # Reset if keep_context: false
271
+ # Reset if keep_context: false (standard behavior)
260
272
  swarm_registry.reset_if_needed(@delegate_target)
261
273
 
262
274
  result
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SwarmSDK
4
- VERSION = "2.7.3"
4
+ VERSION = "2.7.4"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swarm_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.3
4
+ version: 2.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Arruda