TUI: strip only leading inbound metadata (#22461)
This commit is contained in:
@@ -87,3 +87,49 @@ export function stripInboundMetadata(text: string): string {
|
||||
|
||||
return result.join("\n").replace(/^\n+/, "");
|
||||
}
|
||||
|
||||
export function stripLeadingInboundMetadata(text: string): string {
|
||||
if (!text || !SENTINEL_FAST_RE.test(text)) {
|
||||
return text;
|
||||
}
|
||||
|
||||
const lines = text.split("\n");
|
||||
let index = 0;
|
||||
|
||||
while (index < lines.length && lines[index] === "") {
|
||||
index++;
|
||||
}
|
||||
if (index >= lines.length) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (!INBOUND_META_SENTINELS.some((s) => lines[index].startsWith(s))) {
|
||||
return text;
|
||||
}
|
||||
|
||||
while (index < lines.length) {
|
||||
const line = lines[index];
|
||||
if (!INBOUND_META_SENTINELS.some((s) => line.startsWith(s))) {
|
||||
break;
|
||||
}
|
||||
|
||||
index++;
|
||||
if (index < lines.length && lines[index].trim() === "```json") {
|
||||
index++;
|
||||
while (index < lines.length && lines[index].trim() !== "```") {
|
||||
index++;
|
||||
}
|
||||
if (index < lines.length && lines[index].trim() === "```") {
|
||||
index++;
|
||||
}
|
||||
} else {
|
||||
return text;
|
||||
}
|
||||
|
||||
while (index < lines.length && lines[index].trim() === "") {
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
return lines.slice(index).join("\n");
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { formatRawAssistantErrorForUi } from "../agents/pi-embedded-helpers.js";
|
||||
import { stripInboundMetadata } from "../auto-reply/reply/strip-inbound-meta.js";
|
||||
import { stripLeadingInboundMetadata } from "../auto-reply/reply/strip-inbound-meta.js";
|
||||
import { stripAnsi } from "../terminal/ansi.js";
|
||||
import { formatTokenCount } from "../utils/usage-format.js";
|
||||
|
||||
@@ -275,7 +275,7 @@ export function extractTextFromMessage(
|
||||
const text = extractTextBlocks(record.content, opts);
|
||||
if (text) {
|
||||
if (record.role === "user") {
|
||||
return stripInboundMetadata(text);
|
||||
return stripLeadingInboundMetadata(text);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import type { TUI } from "@mariozechner/pi-tui";
|
||||
import { stripInboundMetadata } from "../auto-reply/reply/strip-inbound-meta.js";
|
||||
import type { SessionsPatchResult } from "../gateway/protocol/index.js";
|
||||
import {
|
||||
normalizeAgentId,
|
||||
@@ -327,7 +326,7 @@ export function createSessionActions(context: SessionActionContext) {
|
||||
if (message.role === "user") {
|
||||
const text = extractTextFromMessage(message);
|
||||
if (text) {
|
||||
chatLog.addUser(stripInboundMetadata(text));
|
||||
chatLog.addUser(text);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user