@@ -229,6 +229,7 @@ function* handleStepsDefault({
229229 }
230230}
231231function * handleStepsMax ( {
232+ agentState,
232233 params,
233234 logger,
234235} : AgentStepContext ) : ReturnType <
@@ -255,6 +256,28 @@ function* handleStepsMax({
255256 'editor-implementor-opus' ,
256257 ] as const
257258
259+ // Only keep messages up to just before the last spawn agent tool call.
260+ const { messageHistory : initialMessageHistory } = agentState
261+ const lastSpawnAgentMessageIndex = initialMessageHistory . findLastIndex (
262+ ( message ) =>
263+ message . role === 'assistant' &&
264+ Array . isArray ( message . content ) &&
265+ message . content . length > 0 &&
266+ message . content [ 0 ] . type === 'tool-call' &&
267+ message . content [ 0 ] . toolName === 'spawn_agents' ,
268+ )
269+ const updatedMessageHistory = initialMessageHistory . slice (
270+ 0 ,
271+ lastSpawnAgentMessageIndex ,
272+ )
273+ yield {
274+ toolName : 'set_messages' ,
275+ input : {
276+ messages : updatedMessageHistory ,
277+ } ,
278+ includeToolCall : false ,
279+ } satisfies ToolCall < 'set_messages' >
280+
258281 // Spawn implementor agents using the model pattern
259282 const implementorAgents = MAX_MODEL_PATTERN . slice ( 0 , n ) . map ( ( agent_type ) => ( {
260283 agent_type,
0 commit comments