chore: merge origin/main into main

This commit is contained in:
Peter Steinberger
2026-02-22 13:42:52 +00:00
304 changed files with 17041 additions and 5502 deletions

View File

@@ -1,41 +1,28 @@
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { CURRENT_SESSION_VERSION } from "@mariozechner/pi-coding-agent";
import { describe, expect, it, vi } from "vitest";
import { createMockSessionEntry, createTranscriptFixtureSync } from "./chat.test-helpers.js";
import type { GatewayRequestContext } from "./types.js";
// Guardrail: Ensure gateway "injected" assistant transcript messages are appended via SessionManager,
// so they are attached to the current leaf with a `parentId` and do not sever compaction history.
describe("gateway chat.inject transcript writes", () => {
it("appends a Pi session entry that includes parentId", async () => {
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "openclaw-chat-inject-"));
const transcriptPath = path.join(dir, "sess.jsonl");
// Minimal Pi session header so SessionManager can open/append safely.
fs.writeFileSync(
transcriptPath,
`${JSON.stringify({
type: "session",
version: CURRENT_SESSION_VERSION,
id: "sess-1",
timestamp: new Date(0).toISOString(),
cwd: "/tmp",
})}\n`,
"utf-8",
);
const sessionId = "sess-1";
const { transcriptPath } = createTranscriptFixtureSync({
prefix: "openclaw-chat-inject-",
sessionId,
});
vi.doMock("../session-utils.js", async (importOriginal) => {
const original = await importOriginal<typeof import("../session-utils.js")>();
return {
...original,
loadSessionEntry: () => ({
storePath: path.join(dir, "sessions.json"),
entry: {
sessionId: "sess-1",
sessionFile: transcriptPath,
},
}),
loadSessionEntry: () =>
createMockSessionEntry({
transcriptPath,
sessionId,
canonicalKey: "k1",
}),
};
});