feat: chat uploads, vision turn isolation, and MindSpace agent improvements
Add chat file/image upload UX, attachment proxying, vision thumbnails, and per-turn image scoping so agents only use the current upload. Extend MindSpace asset context, billing token state, OA/scenario verify scripts, and related runtime config. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -41,6 +41,23 @@ test('extractImageUrlsFromMessage deduplicates image urls', () => {
|
||||
assert.deepEqual(urls, [url]);
|
||||
});
|
||||
|
||||
test('extractImageUrlsFromMessage ignores content aliases when metadata is present', () => {
|
||||
const urls = extractImageUrlsFromMessage({
|
||||
metadata: {
|
||||
imageUrls: ['/api/mindspace/v1/assets/asset-4/download?inline=1'],
|
||||
},
|
||||
content: [
|
||||
{
|
||||
type: 'text',
|
||||
text:
|
||||
'[图片1]: https://m.tkmind.cn/MindSpace/user/public/images/2026-07-10/asset-4.jpg',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
assert.deepEqual(urls, ['/api/mindspace/v1/assets/asset-4/download?inline=1']);
|
||||
});
|
||||
|
||||
test('buildVisionPayload marks one billable image analysis when vision succeeds', async () => {
|
||||
const result = await buildVisionPayload({
|
||||
userId: 'user-1',
|
||||
@@ -59,6 +76,7 @@ test('buildVisionPayload marks one billable image analysis when vision succeeds'
|
||||
|
||||
assert.equal(result?.billableImageCount, 1);
|
||||
assert.match(result?.userMessage?.content?.[0]?.text ?? '', /Qwen VL 图片描述/);
|
||||
assert.match(result?.userMessage?.content?.[0]?.text ?? '', /本轮图片主题/);
|
||||
assert.equal(
|
||||
result?.userMessage?.metadata?.displayText,
|
||||
'根据图片生成页面\n\n[图片1]: /api/mindspace/v1/assets/asset-1/download?inline=1',
|
||||
|
||||
Reference in New Issue
Block a user