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 +4 -4
- data/lib/swarm_sdk/tools/delegate.rb +20 -8
- data/lib/swarm_sdk/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: b5c93c6e9a850d624b8ac0fe9d31e53a4a764a1caa23319efcfa5b34edfd33b8
|
|
4
|
+
data.tar.gz: 2d4ec3258101a45507cbacbd98eeb86d8448627e35faedd2a693c0a18d8622a1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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
|
data/lib/swarm_sdk/version.rb
CHANGED