fix: add aipod imageRef work-ready runner reuse

This commit is contained in:
AgentRun Codex
2026-06-11 01:21:56 +08:00
parent 59272f8edb
commit 5a6e5a4bbd
22 changed files with 598 additions and 32 deletions
+9
View File
@@ -49,6 +49,8 @@ export async function dispatchQueueTask(options: DispatchQueueTaskOptions): Prom
run,
command,
runnerJob,
envImage: jsonRecordOrNull(runnerJob.envImage),
workReady: jsonRecordOrNull(runnerJob.workReady),
latestAttempt,
pollCommands: {
queue: `./scripts/agentrun queue show ${task.id}`,
@@ -127,6 +129,8 @@ function buildRunnerJobInput(task: QueueTaskRecord, commandId: string, input: Js
copyString("runnerId", "runnerId");
copyString("sourceCommit", "sourceCommit");
copyString("serviceAccountName", "serviceAccountName");
const imageRef = jsonRecordOrNull(input.imageRef) ?? jsonRecordOrNull(task.metadata.aipodImageRef);
if (imageRef) jobInput.imageRef = imageRef;
if (input.transientEnv !== undefined) {
if (!Array.isArray(input.transientEnv)) throw new AgentRunError("schema-invalid", "transientEnv must be an array", { httpStatus: 400 });
jobInput.transientEnv = input.transientEnv.map((item, index) => asRecord(item, `transientEnv[${index}]`));
@@ -140,6 +144,11 @@ function stringFrom(record: JsonRecord, key: string): string {
return value;
}
function jsonRecordOrNull(value: unknown): JsonRecord | null {
if (!value || typeof value !== "object" || Array.isArray(value)) return null;
return value as JsonRecord;
}
function optionalString(value: unknown): string | undefined {
return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
}