chore: formatter cleanup and test updates from bot cherry-pick

This commit is contained in:
Eyejoker
2026-03-30 00:57:03 +09:00
parent 5865dea558
commit a215b2471a
3 changed files with 33 additions and 23 deletions

View File

@@ -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 */
} }

View File

@@ -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);

View File

@@ -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({