chore: formatter cleanup and test updates from bot cherry-pick
This commit is contained in:
@@ -72,10 +72,7 @@ function detectPnpmStorePath(workspaceDir: string): string | null {
|
|||||||
if (!fs.existsSync(path.join(workspaceDir, 'pnpm-lock.yaml'))) {
|
if (!fs.existsSync(path.join(workspaceDir, 'pnpm-lock.yaml'))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (
|
if (process.env.PNPM_STORE_DIR && fs.existsSync(process.env.PNPM_STORE_DIR)) {
|
||||||
process.env.PNPM_STORE_DIR &&
|
|
||||||
fs.existsSync(process.env.PNPM_STORE_DIR)
|
|
||||||
) {
|
|
||||||
return process.env.PNPM_STORE_DIR;
|
return process.env.PNPM_STORE_DIR;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@@ -108,11 +105,10 @@ function ensureContainerReady(): void {
|
|||||||
if (containerRuntimeChecked) return;
|
if (containerRuntimeChecked) return;
|
||||||
ensureContainerRuntimeRunning();
|
ensureContainerRuntimeRunning();
|
||||||
try {
|
try {
|
||||||
execFileSync(
|
execFileSync(CONTAINER_RUNTIME_BIN, ['image', 'inspect', CONTAINER_IMAGE], {
|
||||||
CONTAINER_RUNTIME_BIN,
|
stdio: 'pipe',
|
||||||
['image', 'inspect', CONTAINER_IMAGE],
|
timeout: 10000,
|
||||||
{ stdio: 'pipe', timeout: 10000 },
|
});
|
||||||
);
|
|
||||||
} catch {
|
} catch {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Container image '${CONTAINER_IMAGE}' not found. Build it with: ./container/build.sh`,
|
`Container image '${CONTAINER_IMAGE}' not found. Build it with: ./container/build.sh`,
|
||||||
@@ -191,7 +187,10 @@ export function stopReviewerContainer(groupFolder: string): void {
|
|||||||
stdio: 'pipe',
|
stdio: 'pipe',
|
||||||
timeout: 10000,
|
timeout: 10000,
|
||||||
});
|
});
|
||||||
logger.info({ containerName: name }, 'Stopped persistent reviewer container');
|
logger.info(
|
||||||
|
{ containerName: name },
|
||||||
|
'Stopped persistent reviewer container',
|
||||||
|
);
|
||||||
} catch {
|
} catch {
|
||||||
/* already gone */
|
/* already gone */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -267,8 +267,7 @@ export class MessageTurnController {
|
|||||||
// If the progress message already shows the same text as the final
|
// If the progress message already shows the same text as the final
|
||||||
// result, finalize it in-place instead of sending a duplicate message.
|
// result, finalize it in-place instead of sending a duplicate message.
|
||||||
const alreadyVisible =
|
const alreadyVisible =
|
||||||
this.progressMessageId &&
|
this.progressMessageId && this.latestProgressText === text;
|
||||||
this.latestProgressText === text;
|
|
||||||
if (alreadyVisible) {
|
if (alreadyVisible) {
|
||||||
await this.finalizeProgressMessage();
|
await this.finalizeProgressMessage();
|
||||||
this.visiblePhase = toVisiblePhase(phase);
|
this.visiblePhase = toVisiblePhase(phase);
|
||||||
|
|||||||
@@ -126,10 +126,12 @@ function buildWorkspace(
|
|||||||
task_id: 'task-1',
|
task_id: 'task-1',
|
||||||
role,
|
role,
|
||||||
workspace_dir: workspaceDir,
|
workspace_dir: workspaceDir,
|
||||||
snapshot_source_dir: role === 'reviewer' ? '/tmp/paired/task-1/owner' : null,
|
snapshot_source_dir:
|
||||||
|
role === 'reviewer' ? '/tmp/paired/task-1/owner' : null,
|
||||||
snapshot_ref: role === 'reviewer' ? 'fingerprint-1' : null,
|
snapshot_ref: role === 'reviewer' ? 'fingerprint-1' : null,
|
||||||
status: 'ready',
|
status: 'ready',
|
||||||
snapshot_refreshed_at: role === 'reviewer' ? '2026-03-28T00:00:00.000Z' : null,
|
snapshot_refreshed_at:
|
||||||
|
role === 'reviewer' ? '2026-03-28T00:00:00.000Z' : null,
|
||||||
created_at: '2026-03-28T00:00:00.000Z',
|
created_at: '2026-03-28T00:00:00.000Z',
|
||||||
updated_at: '2026-03-28T00:00:00.000Z',
|
updated_at: '2026-03-28T00:00:00.000Z',
|
||||||
};
|
};
|
||||||
@@ -442,14 +444,19 @@ describe('paired execution context', () => {
|
|||||||
'task-1',
|
'task-1',
|
||||||
expect.objectContaining({ status: 'completed' }),
|
expect.objectContaining({ status: 'completed' }),
|
||||||
);
|
);
|
||||||
expect(pairedWorkspaceManager.markPairedTaskReviewReady).not.toHaveBeenCalled();
|
expect(
|
||||||
|
pairedWorkspaceManager.markPairedTaskReviewReady,
|
||||||
|
).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('re-triggers review when owner changed code after approval', () => {
|
it('re-triggers review when owner changed code after approval', () => {
|
||||||
const repoDir = createCanonicalRepoWithCommit('reviewed');
|
const repoDir = createCanonicalRepoWithCommit('reviewed');
|
||||||
const approvedSourceRef = resolveTreeRef(repoDir);
|
const approvedSourceRef = resolveTreeRef(repoDir);
|
||||||
fs.writeFileSync(path.join(repoDir, 'README.md'), 'changed\n');
|
fs.writeFileSync(path.join(repoDir, 'README.md'), 'changed\n');
|
||||||
execFileSync('git', ['add', 'README.md'], { cwd: repoDir, stdio: 'ignore' });
|
execFileSync('git', ['add', 'README.md'], {
|
||||||
|
cwd: repoDir,
|
||||||
|
stdio: 'ignore',
|
||||||
|
});
|
||||||
execFileSync('git', ['commit', '-m', 'code change'], {
|
execFileSync('git', ['commit', '-m', 'code change'], {
|
||||||
cwd: repoDir,
|
cwd: repoDir,
|
||||||
stdio: 'ignore',
|
stdio: 'ignore',
|
||||||
@@ -465,10 +472,15 @@ describe('paired execution context', () => {
|
|||||||
vi.mocked(db.getPairedWorkspace).mockImplementation((_taskId, role) =>
|
vi.mocked(db.getPairedWorkspace).mockImplementation((_taskId, role) =>
|
||||||
role === 'owner' ? buildWorkspace('owner', repoDir) : undefined,
|
role === 'owner' ? buildWorkspace('owner', repoDir) : undefined,
|
||||||
);
|
);
|
||||||
vi.mocked(pairedWorkspaceManager.markPairedTaskReviewReady).mockReturnValue({
|
vi.mocked(pairedWorkspaceManager.markPairedTaskReviewReady).mockReturnValue(
|
||||||
ownerWorkspace: buildWorkspace('owner', repoDir),
|
{
|
||||||
reviewerWorkspace: buildWorkspace('reviewer', '/tmp/paired/task-1/reviewer'),
|
ownerWorkspace: buildWorkspace('owner', repoDir),
|
||||||
});
|
reviewerWorkspace: buildWorkspace(
|
||||||
|
'reviewer',
|
||||||
|
'/tmp/paired/task-1/reviewer',
|
||||||
|
),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
completePairedExecutionContext({
|
completePairedExecutionContext({
|
||||||
taskId: 'task-1',
|
taskId: 'task-1',
|
||||||
@@ -477,9 +489,9 @@ describe('paired execution context', () => {
|
|||||||
summary: 'DONE',
|
summary: 'DONE',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(pairedWorkspaceManager.markPairedTaskReviewReady).toHaveBeenCalledWith(
|
expect(
|
||||||
'task-1',
|
pairedWorkspaceManager.markPairedTaskReviewReady,
|
||||||
);
|
).toHaveBeenCalledWith('task-1');
|
||||||
expect(db.updatePairedTask).toHaveBeenCalledWith(
|
expect(db.updatePairedTask).toHaveBeenCalledWith(
|
||||||
'task-1',
|
'task-1',
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
|
|||||||
Reference in New Issue
Block a user