feat: add guarded image generation controls
This commit is contained in:
@@ -33,3 +33,45 @@ test('consumeSessionEventsUntilFinish resolves on Finish', async () => {
|
||||
assert.equal(result.finishEvent.type, 'Finish');
|
||||
assert.equal(result.tokenState.totalTokens, 12);
|
||||
});
|
||||
|
||||
test('consumeSessionEventsUntilFinish records a successful raster generate_image result', async () => {
|
||||
const toolResult = JSON.stringify({
|
||||
ok: true,
|
||||
jobId: 'job-1',
|
||||
source: { mimeType: 'image/webp' },
|
||||
asset: {
|
||||
id: 'asset-1',
|
||||
publicUrl: '/MindSpace/user/public/images/hero.webp',
|
||||
workspaceRelativePath: 'public/images/hero.webp',
|
||||
},
|
||||
});
|
||||
const frames = [
|
||||
`data: ${JSON.stringify({
|
||||
type: 'Message', request_id: 'req-1', message: {
|
||||
content: [{
|
||||
type: 'toolRequest', id: 'call-1',
|
||||
toolCall: { value: { name: 'sandbox-fs__generate_image', arguments: { purpose: 'hero' } } },
|
||||
}],
|
||||
},
|
||||
})}\n\n`,
|
||||
`data: ${JSON.stringify({
|
||||
type: 'Message', request_id: 'req-1', message: {
|
||||
content: [{
|
||||
type: 'toolResponse', id: 'call-1',
|
||||
toolResult: { status: 'success', value: { content: [{ type: 'text', text: toolResult }], isError: false } },
|
||||
}],
|
||||
},
|
||||
})}\n\n`,
|
||||
'data: {"type":"Finish","request_id":"req-1"}\n\n',
|
||||
];
|
||||
const stream = new ReadableStream({
|
||||
start(controller) {
|
||||
for (const frame of frames) controller.enqueue(new TextEncoder().encode(frame));
|
||||
controller.close();
|
||||
},
|
||||
});
|
||||
const result = await consumeSessionEventsUntilFinish(stream, { requestId: 'req-1', timeoutMs: 5000 });
|
||||
assert.equal(result.toolEvidence.generateImage.called, true);
|
||||
assert.equal(result.toolEvidence.generateImage.succeeded, true);
|
||||
assert.equal(result.toolEvidence.generateImage.jobId, 'job-1');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user