77 lines
1.9 KiB
TypeScript
77 lines
1.9 KiB
TypeScript
import { Database } from 'bun:sqlite';
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
import { applyBaseSchema } from './db/base-schema.js';
|
|
import {
|
|
getPairedTurnOutputsFromDatabase,
|
|
insertPairedTurnOutputInDatabase,
|
|
} from './db/paired-turn-outputs.js';
|
|
|
|
describe('paired turn output attachments', () => {
|
|
it('marks truncated output text so reviewers know evidence was clipped', () => {
|
|
const database = new Database(':memory:');
|
|
try {
|
|
applyBaseSchema(database);
|
|
|
|
insertPairedTurnOutputInDatabase(
|
|
database,
|
|
'paired-task-turn-output-truncated',
|
|
1,
|
|
'owner',
|
|
'x'.repeat(60_000),
|
|
);
|
|
|
|
const [output] = getPairedTurnOutputsFromDatabase(
|
|
database,
|
|
'paired-task-turn-output-truncated',
|
|
);
|
|
|
|
expect(output.output_text).toHaveLength(50_000);
|
|
expect(output.output_text).toMatch(
|
|
/\[Output truncated: 60000 > 50000 chars\]/,
|
|
);
|
|
} finally {
|
|
database.close();
|
|
}
|
|
});
|
|
|
|
it('preserves attachments for reviewer evidence prompts', () => {
|
|
const database = new Database(':memory:');
|
|
try {
|
|
applyBaseSchema(database);
|
|
|
|
insertPairedTurnOutputInDatabase(
|
|
database,
|
|
'paired-task-turn-output-attachments',
|
|
1,
|
|
'owner',
|
|
'TASK_DONE\n새 스크린샷 첨부',
|
|
{
|
|
attachments: [
|
|
{
|
|
path: '/tmp/settings-v0.1.92-deployed-390.png',
|
|
name: 'settings-v0.1.92-deployed-390.png',
|
|
mime: 'image/png',
|
|
},
|
|
],
|
|
},
|
|
);
|
|
|
|
const outputs = getPairedTurnOutputsFromDatabase(
|
|
database,
|
|
'paired-task-turn-output-attachments',
|
|
);
|
|
|
|
expect(outputs[0].attachments).toEqual([
|
|
{
|
|
path: '/tmp/settings-v0.1.92-deployed-390.png',
|
|
name: 'settings-v0.1.92-deployed-390.png',
|
|
mime: 'image/png',
|
|
},
|
|
]);
|
|
} finally {
|
|
database.close();
|
|
}
|
|
});
|
|
});
|