mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-24 10:58:37 +00:00
perf(codex): index rollout transcript ids
This commit is contained in:
@@ -91,6 +91,9 @@ const DEFAULT_COMPLETION_DELIVERY_RETRY_DELAYS_MS = [
|
|||||||
];
|
];
|
||||||
const DEFAULT_TASK_ROW_RECONCILE_INTERVAL_MS = 10_000;
|
const DEFAULT_TASK_ROW_RECONCILE_INTERVAL_MS = 10_000;
|
||||||
const RECENT_TERMINAL_TASK_RECONCILE_GRACE_MS = 60_000;
|
const RECENT_TERMINAL_TASK_RECONCILE_GRACE_MS = 60_000;
|
||||||
|
// Codex's recorder uses this filename contract; non-canonical names keep the
|
||||||
|
// legacy substring fallback for older or test-created transcript files.
|
||||||
|
const CODEX_ROLLOUT_FILENAME_RE = /^rollout-\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-(.+)\.jsonl$/u;
|
||||||
|
|
||||||
const defaultRuntime: NativeSubagentMonitorRuntime = {
|
const defaultRuntime: NativeSubagentMonitorRuntime = {
|
||||||
createAgentHarnessTaskRuntime,
|
createAgentHarnessTaskRuntime,
|
||||||
@@ -1188,8 +1191,9 @@ async function findTranscriptPaths(params: {
|
|||||||
}): Promise<Map<string, string>> {
|
}): Promise<Map<string, string>> {
|
||||||
const sessionsDir = path.join(params.codexHome, "sessions");
|
const sessionsDir = path.join(params.codexHome, "sessions");
|
||||||
const found = new Map<string, string>();
|
const found = new Map<string, string>();
|
||||||
|
const remaining = new Set(params.childThreadIds);
|
||||||
const stack = [sessionsDir];
|
const stack = [sessionsDir];
|
||||||
while (stack.length > 0 && found.size < params.childThreadIds.size) {
|
while (stack.length > 0 && remaining.size > 0) {
|
||||||
const dir = stack.pop()!;
|
const dir = stack.pop()!;
|
||||||
let entries: Array<{ name: string; isDirectory(): boolean; isFile(): boolean }>;
|
let entries: Array<{ name: string; isDirectory(): boolean; isFile(): boolean }>;
|
||||||
try {
|
try {
|
||||||
@@ -1206,10 +1210,20 @@ async function findTranscriptPaths(params: {
|
|||||||
if (!entry.isFile() || !entry.name.endsWith(".jsonl")) {
|
if (!entry.isFile() || !entry.name.endsWith(".jsonl")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (const childThreadId of params.childThreadIds) {
|
const rolloutMatch = entry.name.match(CODEX_ROLLOUT_FILENAME_RE);
|
||||||
if (!found.has(childThreadId) && entry.name.includes(childThreadId)) {
|
if (rolloutMatch) {
|
||||||
|
const childThreadId = rolloutMatch[1];
|
||||||
|
if (remaining.delete(childThreadId)) {
|
||||||
found.set(childThreadId, entryPath);
|
found.set(childThreadId, entryPath);
|
||||||
}
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (const childThreadId of remaining) {
|
||||||
|
if (entry.name.includes(childThreadId)) {
|
||||||
|
found.set(childThreadId, entryPath);
|
||||||
|
remaining.delete(childThreadId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1236,10 +1250,13 @@ async function findTranscriptPath(params: {
|
|||||||
stack.push(entryPath);
|
stack.push(entryPath);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
const rolloutMatch = entry.name.match(CODEX_ROLLOUT_FILENAME_RE);
|
||||||
if (
|
if (
|
||||||
entry.isFile() &&
|
entry.isFile() &&
|
||||||
entry.name.endsWith(".jsonl") &&
|
entry.name.endsWith(".jsonl") &&
|
||||||
entry.name.includes(params.childThreadId)
|
(rolloutMatch
|
||||||
|
? rolloutMatch[1] === params.childThreadId
|
||||||
|
: entry.name.includes(params.childThreadId))
|
||||||
) {
|
) {
|
||||||
return entryPath;
|
return entryPath;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user