feat(agent): 补齐会话消息与工作台链路
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import {
|
||||
appendAgentMessage,
|
||||
chatWithAgent,
|
||||
createAgentSession,
|
||||
deleteAgent,
|
||||
getAgentById,
|
||||
getAgentSessionById,
|
||||
getAgentWorkspace,
|
||||
listAgentMessages,
|
||||
listAgents,
|
||||
queryAgents,
|
||||
saveAgent,
|
||||
@@ -27,6 +32,11 @@ describe('agent api', () => {
|
||||
saveAgent({ agentCode: 'agent_1', agentName: 'Agent 1', storeId: '2001', status: 'ENABLED' });
|
||||
deleteAgent('1001');
|
||||
chatWithAgent('1001', { messages: [{ role: 'user', content: '你好' }] });
|
||||
createAgentSession({ agentId: '1001', sessionCode: 'session_001' });
|
||||
getAgentSessionById('session-id');
|
||||
listAgentMessages('session-id');
|
||||
appendAgentMessage('session-id', { role: 'assistant', content: '收到' });
|
||||
getAgentWorkspace('1001', 'session-id');
|
||||
|
||||
expect(post).toHaveBeenCalledWith('/agents/list');
|
||||
expect(post).toHaveBeenCalledWith('/agents/query', { agentCode: 'demo' });
|
||||
@@ -39,5 +49,10 @@ describe('agent api', () => {
|
||||
});
|
||||
expect(post).toHaveBeenCalledWith('/agents/delete', undefined, { params: { id: '1001' } });
|
||||
expect(post).toHaveBeenCalledWith('/agents/1001/chat', { messages: [{ role: 'user', content: '你好' }] });
|
||||
expect(post).toHaveBeenCalledWith('/agent-sessions/create', { agentId: '1001', sessionCode: 'session_001' });
|
||||
expect(get).toHaveBeenCalledWith('/agent-sessions/detail', { params: { id: 'session-id' } });
|
||||
expect(get).toHaveBeenCalledWith('/agent-sessions/session-id/messages');
|
||||
expect(post).toHaveBeenCalledWith('/agent-sessions/session-id/messages', { role: 'assistant', content: '收到' });
|
||||
expect(get).toHaveBeenCalledWith('/agent-sessions/workspace', { params: { agentId: '1001', sessionId: 'session-id' } });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -40,11 +40,53 @@ export interface AgentChatResponse {
|
||||
agentName: string;
|
||||
storeId: string;
|
||||
storeName?: string;
|
||||
sessionId?: string;
|
||||
sessionCode?: string;
|
||||
answer: string;
|
||||
modelRequestId: string;
|
||||
references: AgentReferenceChunk[];
|
||||
}
|
||||
|
||||
export interface AgentSession {
|
||||
id?: string;
|
||||
agentId: string;
|
||||
sessionCode: string;
|
||||
workflowRunId?: string;
|
||||
title?: string;
|
||||
status?: string;
|
||||
metadataJson?: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface AgentMessageRecord {
|
||||
id?: string;
|
||||
sessionId: string;
|
||||
role: 'system' | 'user' | 'assistant';
|
||||
content: string;
|
||||
citationJson?: string;
|
||||
tokenCount?: number;
|
||||
requestId?: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface AgentWorkspace {
|
||||
agentId: string;
|
||||
agentCode: string;
|
||||
agentName: string;
|
||||
storeId: string;
|
||||
status: string;
|
||||
sessionId?: string;
|
||||
sessionCode?: string;
|
||||
sessionTitle?: string;
|
||||
sessionStatus?: string;
|
||||
workflowRunId?: string;
|
||||
totalTokens?: number;
|
||||
citationCount?: number;
|
||||
latestRequestId?: string;
|
||||
sessions: AgentSession[];
|
||||
messages: AgentMessageRecord[];
|
||||
}
|
||||
|
||||
export function listAgents() {
|
||||
return post<AgentDefinition[]>('/agents/list');
|
||||
}
|
||||
@@ -68,3 +110,28 @@ export function deleteAgent(id: string) {
|
||||
export function chatWithAgent(agentId: string, data: AgentChatRequest) {
|
||||
return post<AgentChatResponse, AgentChatRequest>(`/agents/${agentId}/chat`, data);
|
||||
}
|
||||
|
||||
export function createAgentSession(data: AgentSession) {
|
||||
return post<boolean, AgentSession>('/agent-sessions/create', data);
|
||||
}
|
||||
|
||||
export function getAgentSessionById(id: string) {
|
||||
return get<AgentSession>('/agent-sessions/detail', { params: { id } });
|
||||
}
|
||||
|
||||
export function listAgentMessages(sessionId: string) {
|
||||
return get<AgentMessageRecord[]>(`/agent-sessions/${sessionId}/messages`);
|
||||
}
|
||||
|
||||
export function appendAgentMessage(sessionId: string, data: Omit<AgentMessageRecord, 'sessionId'>) {
|
||||
return post<boolean, Omit<AgentMessageRecord, 'sessionId'>>(`/agent-sessions/${sessionId}/messages`, data);
|
||||
}
|
||||
|
||||
export function getAgentWorkspace(agentId: string, sessionId?: string) {
|
||||
return get<AgentWorkspace>('/agent-sessions/workspace', {
|
||||
params: {
|
||||
agentId,
|
||||
sessionId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user