/** * 把要打进会话输入框的正文收成一次「粘贴 + 回车」。 * * 编辑器往终端写字时,会把所有换行改成回车字符。会话收到一大段字时, * 不会把这些回车当成「发送」,而是整段放进输入框。框里只要还留着这种回车, * 第一次按回车只是把它们清掉,消息不会发出去,人得再按一次。 * * 粘贴括号里的回车会被还原成换行。括号结束之后紧跟的那个回车才是发送, * 而且必须和正文在同一次写入里:分开写的话,长正文还没写完,回车可能插进正文中间。 * 正文里的转义字符要去掉,否则会把粘贴提前截断。 */ const PASTE_START = '\u001B[200~' const PASTE_END = '\u001B[201~' export function buildSessionSubmitPayload(text: string): string { const body = text.replaceAll('\u001B', '') return `${PASTE_START}${body}${PASTE_END}\r` }