@algosuite/vo-mcp 0.2.0-beta.45 → 0.2.0-beta.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runner-cli.js +25 -9
- package/dist/runner-cli.js.map +3 -3
- package/package.json +1 -1
package/dist/runner-cli.js
CHANGED
|
@@ -7011,6 +7011,7 @@ async function openCodeTaskPrAsync(worktreeDir, files, {
|
|
|
7011
7011
|
if (!Array.isArray(files) || files.length === 0) throw new Error("openCodeTaskPrAsync: no files to commit");
|
|
7012
7012
|
let branch;
|
|
7013
7013
|
let truncated = false;
|
|
7014
|
+
let newCommit = null;
|
|
7014
7015
|
if (alreadyCommitted) {
|
|
7015
7016
|
branch = await resolveOrCreateBranchAsync(worktreeDir, branchPrefix, runCommand);
|
|
7016
7017
|
} else {
|
|
@@ -7023,6 +7024,7 @@ async function openCodeTaskPrAsync(worktreeDir, files, {
|
|
|
7023
7024
|
});
|
|
7024
7025
|
branch = committed.branch;
|
|
7025
7026
|
truncated = committed.truncated;
|
|
7027
|
+
newCommit = committed.committed;
|
|
7026
7028
|
}
|
|
7027
7029
|
const prBranch = String(targetBranch || branch).trim() || branch;
|
|
7028
7030
|
const overlap = await runOverlapGate(worktreeDir, files.filter((file) => !isAgentScratch(file)), {
|
|
@@ -7077,6 +7079,7 @@ async function openCodeTaskPrAsync(worktreeDir, files, {
|
|
|
7077
7079
|
prNumber: existing.number,
|
|
7078
7080
|
branch: prBranch,
|
|
7079
7081
|
truncated,
|
|
7082
|
+
newCommit,
|
|
7080
7083
|
resumed: true,
|
|
7081
7084
|
markedReady,
|
|
7082
7085
|
overlapDraft,
|
|
@@ -7115,7 +7118,7 @@ async function openCodeTaskPrAsync(worktreeDir, files, {
|
|
|
7115
7118
|
runCommand,
|
|
7116
7119
|
onCleanupWarning
|
|
7117
7120
|
});
|
|
7118
|
-
return { prUrl, prNumber, branch: prBranch, truncated, overlapDraft, overlapBlockedBy, ...autoMerge, ...superseded };
|
|
7121
|
+
return { prUrl, prNumber, branch: prBranch, truncated, newCommit, overlapDraft, overlapBlockedBy, ...autoMerge, ...superseded };
|
|
7119
7122
|
}
|
|
7120
7123
|
var sleep;
|
|
7121
7124
|
var init_publish_async = __esm({
|
|
@@ -12866,7 +12869,7 @@ async function finalizePublishedPr({
|
|
|
12866
12869
|
log: log2,
|
|
12867
12870
|
patch: {
|
|
12868
12871
|
status: "pr_opened",
|
|
12869
|
-
message: `opened ${pr.prUrl}${overlapNote}`,
|
|
12872
|
+
message: `opened ${pr.prUrl}${overlapNote}${pr.newCommit === false ? " (no new commits \u2014 the branch already held every change)" : ""}`,
|
|
12870
12873
|
pr_url: pr.prUrl,
|
|
12871
12874
|
pr_number: pr.prNumber,
|
|
12872
12875
|
pr_branch: pr.branch,
|
|
@@ -13096,7 +13099,9 @@ async function findPreservedRecovery(task, {
|
|
|
13096
13099
|
clonesRoot: clonesRoot2 = process.env.VO_CODE_RUNNER_CLONES_ROOT || "",
|
|
13097
13100
|
readFile: readFile5 = fsp13.readFile,
|
|
13098
13101
|
exists = fs13.existsSync,
|
|
13099
|
-
alreadyPublished = preservedHeadAlreadyOnBranch
|
|
13102
|
+
alreadyPublished = preservedHeadAlreadyOnBranch,
|
|
13103
|
+
log: log2 = () => {
|
|
13104
|
+
}
|
|
13100
13105
|
} = {}) {
|
|
13101
13106
|
const resumedFrom = /^[0-9a-f-]{36}$/iu.test(String(task.resumed_from || "")) ? String(task.resumed_from).toLowerCase() : null;
|
|
13102
13107
|
const originalTaskId = recoveryTaskId(task.prompt) ?? resumedFrom;
|
|
@@ -13107,7 +13112,10 @@ async function findPreservedRecovery(task, {
|
|
|
13107
13112
|
const resolved = entries.some((entry) => RESOLVED_RECOVERY_TYPES.has(entry.type) && entry.taskId === originalTaskId);
|
|
13108
13113
|
const preserved = [...entries].reverse().find((entry) => entry.taskId === originalTaskId && entry.worktreeDir);
|
|
13109
13114
|
if (!resolved && preserved && exists(preserved.worktreeDir)) {
|
|
13110
|
-
if (task.pr_branch && await alreadyPublished(preserved.worktreeDir, task.pr_branch))
|
|
13115
|
+
if (task.pr_branch && await alreadyPublished(preserved.worktreeDir, task.pr_branch)) {
|
|
13116
|
+
log2(`recovery: preserved worktree of ${originalTaskId} is already on ${task.pr_branch}; running the agent instead`);
|
|
13117
|
+
return null;
|
|
13118
|
+
}
|
|
13111
13119
|
return { originalTaskId, ledgerPath, preserved };
|
|
13112
13120
|
}
|
|
13113
13121
|
}
|
|
@@ -13115,11 +13123,19 @@ async function findPreservedRecovery(task, {
|
|
|
13115
13123
|
}
|
|
13116
13124
|
async function preservedHeadAlreadyOnBranch(worktreeDir, prBranch, { runGit = defaultRunGit } = {}) {
|
|
13117
13125
|
try {
|
|
13126
|
+
const dirty = (await runGit(["status", "--porcelain"], worktreeDir)).trim();
|
|
13127
|
+
if (dirty.length > 0) return false;
|
|
13118
13128
|
const head = (await runGit(["rev-parse", "HEAD"], worktreeDir)).trim();
|
|
13119
|
-
|
|
13120
|
-
|
|
13121
|
-
|
|
13122
|
-
|
|
13129
|
+
if (!/^[0-9a-f]{40}$/u.test(head)) return false;
|
|
13130
|
+
let tip = "";
|
|
13131
|
+
try {
|
|
13132
|
+
tip = (await runGit(["rev-parse", `refs/remotes/origin/${prBranch}`], worktreeDir)).trim();
|
|
13133
|
+
} catch {
|
|
13134
|
+
tip = (await runGit(["ls-remote", "origin", `refs/heads/${prBranch}`], worktreeDir)).trim().split(/\s+/u)[0] || "";
|
|
13135
|
+
}
|
|
13136
|
+
if (!/^[0-9a-f]{40}$/u.test(tip)) return false;
|
|
13137
|
+
if (head === tip) return true;
|
|
13138
|
+
await runGit(["merge-base", "--is-ancestor", head, tip], worktreeDir);
|
|
13123
13139
|
return true;
|
|
13124
13140
|
} catch {
|
|
13125
13141
|
return false;
|
|
@@ -13143,7 +13159,7 @@ async function recoverPreservedCodeTask({
|
|
|
13143
13159
|
finalizePublished = finalizePublishedPr,
|
|
13144
13160
|
track
|
|
13145
13161
|
} = {}) {
|
|
13146
|
-
const recovery = await find(task);
|
|
13162
|
+
const recovery = await find(task, { log: log2 });
|
|
13147
13163
|
if (!recovery) return null;
|
|
13148
13164
|
const cwd = recovery.preserved.worktreeDir;
|
|
13149
13165
|
const { files, alreadyCommitted } = await prepareScope(cwd);
|