Files
orca/src/shared/returned-draft-text.ts
T
Kelvin Amoaba 14819eb8c0 fix(chat): isolate sends from terminal drafts (#37774)
* fix(chat): isolate sends from terminal drafts

* test(chat): expect replacement clear for resume commands

* test(chat): refresh draft-clear RPC recordings
2026-11-03 18:28:10 +00:00

27 lines
863 B
TypeScript

import { isLoneStructuredAgentSessionConversationCommand } from './agent-session/view/structured-agent-session-composer'
/** Append returned text without replacing typed drafts or duplicating an existing suffix.
* Replace lone /compact or /clear commands: they were unsent, and trailing text would read as their arguments. */
export function appendReturnedDraftText(
draft: string,
text: string,
options?: { preserveConversationCommands?: boolean }
): string {
const returned = text.trimEnd()
if (returned.trim() === '') {
return draft
}
const kept = draft.trimEnd()
if (
kept === '' ||
(!options?.preserveConversationCommands &&
isLoneStructuredAgentSessionConversationCommand(kept))
) {
return text
}
if (kept === returned || kept.endsWith(`\n\n${returned}`)) {
return draft
}
return `${kept}\n\n${text}`
}