revert prompt-too-long fallback and keep inline directives

This commit is contained in:
Peter Steinberger
2025-12-05 23:18:03 +00:00
parent 36b0796976
commit 3c64a57c84
3 changed files with 0 additions and 65 deletions

View File

@@ -251,35 +251,6 @@ describe("runCommandReply (pi)", () => {
expect(meta.killed).toBe(true);
});
it("surfaces prompt-too-long and flags meta for session reset", async () => {
mockPiRpc({
stdout:
'{"type":"agent_end","message":{"role":"assistant","content":[],"errorMessage":"400 {\\"type\\":\\"error\\",\\"error\\":{\\"type\\":\\"invalid_request_error\\",\\"message\\":\\"prompt is too long: 200333 tokens > 200000 maximum\\"}}"}}',
stderr: "",
code: 0,
});
const { payloads, meta } = await runCommandReply({
reply: {
mode: "command",
command: ["pi", "{{Body}}"],
agent: { kind: "pi" },
},
templatingCtx: noopTemplateCtx,
sendSystemOnce: false,
isNewSession: false,
isFirstTurnInSession: false,
systemSent: false,
timeoutMs: 1000,
timeoutSeconds: 1,
commandRunner: vi.fn(),
enqueue: enqueueImmediate,
});
expect(payloads?.[0]?.text).toMatch(/history is too long/i);
expect(meta.agentMeta?.extra?.promptTooLong).toBe(true);
});
it("collapses rpc deltas instead of emitting raw JSON spam", async () => {
mockPiRpc({
stdout: [

View File

@@ -684,7 +684,6 @@ export async function runCommandReply(
if (stderr?.trim()) {
logVerbose(`Command auto-reply stderr: ${stderr.trim()}`);
}
const promptTooLong = rawStdout.includes("prompt is too long");
const logFailure = () => {
const truncate = (s?: string) =>
@@ -703,21 +702,6 @@ export async function runCommandReply(
);
};
if (promptTooLong) {
const text =
"⚠️ Session history is too long. Starting a fresh session — please resend your last message.";
const meta: CommandReplyMeta = {
durationMs: Date.now() - started,
queuedMs,
queuedAhead,
exitCode: code,
signal,
killed,
agentMeta: { extra: { promptTooLong: true } },
};
return { payloads: [{ text }], meta };
}
const parsed = trimmed ? agent.parseOutput(trimmed) : undefined;
// Collect assistant texts and tool results from parseOutput (tau RPC can emit many).

View File

@@ -701,26 +701,6 @@ export async function getReplyFromConfig(
});
const payloadArray = runResult.payloads ?? [];
const meta = runResult.meta;
const promptTooLong =
meta.agentMeta &&
typeof meta.agentMeta.extra === "object" &&
(meta.agentMeta.extra as { promptTooLong?: boolean }).promptTooLong;
if (promptTooLong && sessionCfg && sessionStore && sessionKey) {
// Rotate to a new session to avoid hitting context limits again.
const newId = crypto.randomUUID();
sessionEntry = {
sessionId: newId,
updatedAt: Date.now(),
systemSent,
abortedLastRun: false,
};
sessionStore[sessionKey] = sessionEntry;
await saveSessionStore(storePath, sessionStore);
sessionId = newId;
isNewSession = true;
}
let finalPayloads = payloadArray;
if (!finalPayloads || finalPayloads.length === 0) {
return undefined;