添加了 `revise_task` 路由动作类型,允许用户修改、纠正或重新执行最新活动任务结果。 实现了工具失败指导原则,防止相同类别工具重复失败。 为任务规划器添加了超时处理机制,避免长时间等待。 BREAKING CHANGE: 任务路由逻辑已更新,新增 `revise_task` 动作类型。 fix(api): 修复任务详情API返回完整流程投影 修复了任务详情API端点,现在会包含过滤后的流程运行、事件和工件信息, 并确保时间戳字段正确序列化。 refactor(engine): 优化任务技能解析器摘要节点处理 改进了任务技能解析器对摘要节点的处理逻辑,对于仅依赖文本生成功能的摘要节 点不再分配具体技能,直接使用依赖项输出进行汇总。 test: 增加任务修订和超时处理测试用例 添加了测试用例验证任务修订输入记录反馈、超时回退到单模式以及 摘要节点技能解析等新功能。
75 lines
2.0 KiB
TypeScript
75 lines
2.0 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { getTaskCardMessageIndexes, mergeServerWithPendingUsers } from '@/lib/chat-messages';
|
|
import type { ChatMessage } from '@/types';
|
|
|
|
describe('chat message helpers', () => {
|
|
it('keeps pending local user messages after server refreshes', () => {
|
|
const serverMessages: ChatMessage[] = [
|
|
{
|
|
role: 'assistant',
|
|
content: 'Earlier answer',
|
|
timestamp: '2026-05-21T08:00:00.000Z',
|
|
},
|
|
];
|
|
const localMessages: ChatMessage[] = [
|
|
...serverMessages,
|
|
{
|
|
role: 'user',
|
|
content: 'Please continue',
|
|
timestamp: '2026-05-21T08:01:00.000Z',
|
|
},
|
|
];
|
|
|
|
expect(mergeServerWithPendingUsers(serverMessages, localMessages)).toEqual([
|
|
...serverMessages,
|
|
localMessages[1],
|
|
]);
|
|
});
|
|
|
|
it('does not duplicate local user messages already persisted by the server', () => {
|
|
const serverMessages: ChatMessage[] = [
|
|
{
|
|
role: 'user',
|
|
content: 'Please continue',
|
|
timestamp: '2026-05-21T08:01:00.000Z',
|
|
},
|
|
];
|
|
const localMessages: ChatMessage[] = [
|
|
{
|
|
role: 'user',
|
|
content: 'Please continue',
|
|
timestamp: '2026-05-21T08:01:01.000Z',
|
|
},
|
|
];
|
|
|
|
expect(mergeServerWithPendingUsers(serverMessages, localMessages)).toEqual(serverMessages);
|
|
});
|
|
|
|
it('shows a task card only on the latest assistant message for the same task', () => {
|
|
const messages: ChatMessage[] = [
|
|
{
|
|
role: 'assistant',
|
|
content: 'I will start.',
|
|
run_id: 'run-1',
|
|
task_id: 'task-1',
|
|
},
|
|
{
|
|
role: 'assistant',
|
|
content: 'I found data.',
|
|
run_id: 'run-1',
|
|
task_id: 'task-1',
|
|
},
|
|
{
|
|
role: 'assistant',
|
|
content: 'Final answer.',
|
|
run_id: 'run-1',
|
|
task_id: 'task-1',
|
|
task_status: 'awaiting_feedback',
|
|
},
|
|
];
|
|
|
|
expect(Array.from(getTaskCardMessageIndexes(messages))).toEqual([2]);
|
|
});
|
|
});
|