fix: repair origin main CI failures

This commit is contained in:
Shakker
2026-06-10 23:49:41 +01:00
parent a7b0d325af
commit a450ff036a
2 changed files with 37 additions and 10 deletions

View File

@@ -1,6 +1,7 @@
// Assertions for upgrade-survivor E2E scenarios.
import fs from "node:fs";
import path from "node:path";
import { DatabaseSync } from "node:sqlite";
import { readPluginInstallIndex } from "../plugin-index-sqlite.mjs";
const command = process.argv[2];
@@ -481,8 +482,7 @@ function assertSessionMetadataMigrated(stateDir) {
);
}
assert(fs.existsSync(targetStorePath), `agent session store missing: ${targetStorePath}`);
const store = readJson(targetStorePath);
const store = readMigratedSessionStore(stateDir, targetStorePath);
const main = store["agent:main:main"];
const direct = store["agent:main:+15551234567"];
const group = store["agent:main:slack:channel:cupgrade"];
@@ -511,6 +511,33 @@ function assertSessionMetadataMigrated(stateDir) {
);
}
function readMigratedSessionStore(stateDir, targetStorePath) {
if (fs.existsSync(targetStorePath)) {
return readJson(targetStorePath);
}
const dbPath = path.join(stateDir, "agents", "main", "agent", "openclaw-agent.sqlite");
assert(fs.existsSync(dbPath), `agent session store missing: ${targetStorePath} or ${dbPath}`);
let db;
try {
db = new DatabaseSync(dbPath, { readOnly: true });
const rows = db
.prepare("SELECT key, value_json FROM cache_entries WHERE scope = ?")
.all("session_entries");
const store = {};
for (const row of rows) {
if (typeof row?.key !== "string" || typeof row?.value_json !== "string") {
continue;
}
store[row.key] = JSON.parse(row.value_json);
}
return store;
} finally {
db?.close();
}
}
function readInstalledPluginIndex() {
const stateDir = requireEnv("OPENCLAW_STATE_DIR");
const index = readPluginInstallIndex({ stateDir });

View File

@@ -1995,11 +1995,11 @@ function resolveStaleLegacySessionFile(params: {
return undefined;
}
const legacyBackupHasTranscript = safeReadDir(path.dirname(params.legacyDir)).some(
(entry) =>
entry.isDirectory() &&
entry.name.startsWith(`${path.basename(params.legacyDir)}.legacy-`) &&
(dirent) =>
dirent.isDirectory() &&
dirent.name.startsWith(`${path.basename(params.legacyDir)}.legacy-`) &&
fileExists(
path.join(path.dirname(params.legacyDir), entry.name, path.basename(legacySessionFile)),
path.join(path.dirname(params.legacyDir), dirent.name, path.basename(legacySessionFile)),
),
);
if (legacyBackupHasTranscript) {
@@ -2007,10 +2007,10 @@ function resolveStaleLegacySessionFile(params: {
}
const parsed = path.parse(path.basename(legacySessionFile));
const hasCollisionRename = safeReadDir(params.targetDir).some(
(entry) =>
entry.isFile() &&
entry.name.startsWith(`${parsed.name}.legacy-`) &&
entry.name.endsWith(parsed.ext),
(dirent) =>
dirent.isFile() &&
dirent.name.startsWith(`${parsed.name}.legacy-`) &&
dirent.name.endsWith(parsed.ext),
);
if (hasCollisionRename) {
return undefined;