(deps: ReplOnQueryDeps)
| 67 | } |
| 68 | |
| 69 | export function createReplOnQuery(deps: ReplOnQueryDeps): ReplOnQueryFn { |
| 70 | return async function onQuery( |
| 71 | newMessages, |
| 72 | abortController, |
| 73 | shouldQuery, |
| 74 | additionalAllowedTools, |
| 75 | mainLoopModel, |
| 76 | onBeforeQueryCallback, |
| 77 | input, |
| 78 | effort, |
| 79 | ): Promise<void> { |
| 80 | if (isAgentSwarmsEnabled()) { |
| 81 | const teamName = getTeamName() |
| 82 | const agentName = getAgentName() |
| 83 | if (teamName && agentName) { |
| 84 | void setMemberActive(teamName, agentName, true) |
| 85 | } |
| 86 | } |
| 87 | |
| 88 | const thisGeneration = deps.queryGuard.tryStart() |
| 89 | if (thisGeneration === null) { |
| 90 | logEvent('ncode_concurrent_onquery_detected', {}) |
| 91 | |
| 92 | newMessages |
| 93 | .filter((message): message is UserMessage => { |
| 94 | return message.type === 'user' && !message.isMeta |
| 95 | }) |
| 96 | .map(message => getContentText(message.message.content)) |
| 97 | .filter((message): message is string => message !== null) |
| 98 | .forEach((message, index) => { |
| 99 | deps.enqueuePrompt(message) |
| 100 | if (index === 0) { |
| 101 | logEvent('ncode_concurrent_onquery_enqueued', {}) |
| 102 | } |
| 103 | }) |
| 104 | return |
| 105 | } |
| 106 | |
| 107 | let caughtError: unknown |
| 108 | try { |
| 109 | deps.resetTimingRefs() |
| 110 | deps.setMessages(oldMessages => [...oldMessages, ...newMessages]) |
| 111 | deps.responseLengthRef.current = 0 |
| 112 | if (feature('TOKEN_BUDGET')) { |
| 113 | const parsedBudget = input ? parseTokenBudget(input) : null |
| 114 | snapshotOutputTokensForTurn( |
| 115 | parsedBudget ?? getCurrentTurnTokenBudget(), |
| 116 | ) |
| 117 | } |
| 118 | deps.apiMetricsRef.current = [] |
| 119 | deps.setStreamingToolUses([]) |
| 120 | deps.setStreamingText(null) |
| 121 | |
| 122 | const latestMessages = deps.messagesRef.current |
| 123 | if (input) { |
| 124 | await deps.mrOnBeforeQuery(input, latestMessages, newMessages.length) |
| 125 | } |
| 126 |
no test coverage detected