Skip to content

Commit 1cf3134

Browse files
committed
Expire user instructions message when spawning child
1 parent 6c8960c commit 1cf3134

File tree

3 files changed

+19
-17
lines changed

3 files changed

+19
-17
lines changed

backend/src/tools/handlers/tool/spawn-agent-inline.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export const handleSpawnAgentInline = ((params: {
6060
userId,
6161
agentTemplate: parentAgentTemplate,
6262
localAgentTemplates,
63-
agentState,
63+
agentState: parentAgentState,
6464
system,
6565
} = validateSpawnState(state, 'spawn_agent_inline')
6666

@@ -76,9 +76,10 @@ export const handleSpawnAgentInline = ((params: {
7676
// Create child agent state that shares message history with parent
7777
const childAgentState: AgentState = createAgentState(
7878
agentType,
79-
agentState,
79+
agentTemplate,
80+
parentAgentState,
8081
getLatestState().messages,
81-
agentState.agentContext,
82+
parentAgentState.agentContext,
8283
)
8384

8485
logAgentSpawn(
@@ -97,7 +98,7 @@ export const handleSpawnAgentInline = ((params: {
9798
prompt: prompt || '',
9899
params: agentParams,
99100
agentTemplate,
100-
parentAgentState: agentState,
101+
parentAgentState,
101102
agentState: childAgentState,
102103
fingerprintId,
103104
fileContext,
@@ -120,8 +121,8 @@ export const handleSpawnAgentInline = ((params: {
120121
state.messages = finalMessages
121122

122123
// Update parent agent state to reflect shared message history
123-
if (agentState && result.agentState) {
124-
agentState.messageHistory = finalMessages
124+
if (parentAgentState && result.agentState) {
125+
parentAgentState.messageHistory = finalMessages
125126
}
126127

127128
return undefined

backend/src/tools/handlers/tool/spawn-agent-utils.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import type {
1515
} from '@codebuff/common/types/session-state'
1616
import type { ProjectFileContext } from '@codebuff/common/util/file'
1717
import type { WebSocket } from 'ws'
18+
import { expireMessages } from '../../../util/messages'
1819
export interface SpawnAgentParams {
1920
agent_type: string
2021
prompt?: string
@@ -234,12 +235,17 @@ export function validateAgentInput(
234235
*/
235236
export function createAgentState(
236237
agentType: string,
238+
agentTemplate: AgentTemplate,
237239
parentAgentState: AgentState,
238-
messageHistory: Message[],
240+
parentMessageHistory: Message[],
239241
agentContext: Record<string, Subgoal>,
240242
): AgentState {
241243
const agentId = generateCompactId()
242244

245+
const messageHistory = agentTemplate.includeMessageHistory
246+
? expireMessages(parentMessageHistory, 'userPrompt')
247+
: []
248+
243249
return {
244250
agentId,
245251
agentType,

backend/src/tools/handlers/tool/spawn-agents.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ export const handleSpawnAgents = ((params: {
7878
userId,
7979
agentTemplate: parentAgentTemplate,
8080
localAgentTemplates,
81-
messages,
82-
agentState,
81+
agentState: parentAgentState,
8382
} = validatedState
8483

8584
const triggerSpawnAgents = async () => {
@@ -93,15 +92,11 @@ export const handleSpawnAgents = ((params: {
9392

9493
validateAgentInput(agentTemplate, agentType, prompt, params)
9594

96-
const subAgentMessages: Message[] = []
97-
if (agentTemplate.includeMessageHistory) {
98-
subAgentMessages.push(...getLatestState().messages)
99-
}
100-
10195
const subAgentState = createAgentState(
10296
agentType,
103-
agentState,
104-
subAgentMessages,
97+
agentTemplate,
98+
parentAgentState,
99+
getLatestState().messages,
105100
{},
106101
)
107102

@@ -120,7 +115,7 @@ export const handleSpawnAgents = ((params: {
120115
prompt: prompt || '',
121116
params,
122117
agentTemplate,
123-
parentAgentState: agentState,
118+
parentAgentState,
124119
agentState: subAgentState,
125120
fingerprintId,
126121
fileContext,

0 commit comments

Comments
 (0)