Files
superwork/vscode/src/panel/handlers/sessionSubmit.ts
T

19 lines
926 B
TypeScript

/**
* 把要打进会话输入框的正文收成一次「粘贴 + 回车」。
*
* 编辑器往终端写字时,会把所有换行改成回车字符。会话收到一大段字时,
* 不会把这些回车当成「发送」,而是整段放进输入框。框里只要还留着这种回车,
* 第一次按回车只是把它们清掉,消息不会发出去,人得再按一次。
*
* 粘贴括号里的回车会被还原成换行。括号结束之后紧跟的那个回车才是发送,
* 而且必须和正文在同一次写入里:分开写的话,长正文还没写完,回车可能插进正文中间。
* 正文里的转义字符要去掉,否则会把粘贴提前截断。
*/
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`
}