fix(mindspace): edit_file 落盘、Finish 聊天 merge 与回归守卫
- finish-sync 支持 edit_file 覆盖 public HTML - Finish 同步 merge 本地流式消息,剥离 agent 内部前缀 - 新增 verify:mindspace-publish-guards 与 AGENTS.md 跨工具说明 - 发版脚本接入回归门禁;103 runtime 发布含备份回退 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import {
|
||||
mergeConversationSnapshot,
|
||||
mergeSessionMessagesAfterFinish,
|
||||
} from './chat-finish-sync.mjs';
|
||||
|
||||
const msg = (id, role, text) => ({
|
||||
id,
|
||||
role,
|
||||
metadata: { userVisible: true },
|
||||
content: [{ type: 'text', text }],
|
||||
});
|
||||
|
||||
test('mergeConversationSnapshot keeps local-only messages when server snapshot is shorter', () => {
|
||||
const local = [
|
||||
msg('u1', 'user', '生成一个页面'),
|
||||
msg('a1', 'assistant', '正在写入 public/demo.html…'),
|
||||
msg('a2', 'assistant', '页面已生成'),
|
||||
];
|
||||
const server = [msg('u1', 'user', '生成一个页面')];
|
||||
const merged = mergeConversationSnapshot(local, server);
|
||||
assert.equal(merged.length, 3);
|
||||
assert.deepEqual(
|
||||
merged.map((message) => message.id),
|
||||
['u1', 'a1', 'a2'],
|
||||
);
|
||||
});
|
||||
|
||||
test('mergeConversationSnapshot prefers server content for shared message ids', () => {
|
||||
const local = [msg('u1', 'user', '旧文案')];
|
||||
const server = [msg('u1', 'user', '新文案')];
|
||||
const merged = mergeConversationSnapshot(local, server);
|
||||
assert.equal(merged.length, 1);
|
||||
assert.equal(merged[0].content[0].text, '新文案');
|
||||
});
|
||||
|
||||
test('mergeConversationSnapshot returns current when incoming is empty', () => {
|
||||
const local = [msg('u1', 'user', 'hello')];
|
||||
assert.deepEqual(mergeConversationSnapshot(local, []), local);
|
||||
});
|
||||
|
||||
test('mergeSessionMessagesAfterFinish matches Finish sync merge semantics', () => {
|
||||
const local = [
|
||||
msg('u1', 'user', '根据图片做主题页'),
|
||||
msg('a1', 'assistant', '已完成'),
|
||||
];
|
||||
const server = [msg('u1', 'user', '根据图片做主题页')];
|
||||
assert.deepEqual(
|
||||
mergeSessionMessagesAfterFinish(local, server).map((message) => message.id),
|
||||
['u1', 'a1'],
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user