feat: custom tool renderers
This commit is contained in:
@@ -153,10 +153,12 @@ export const useChat = async (topicId: MaybeRef<string>, connect = true) => {
|
||||
case 'text-end': {
|
||||
const msg = data.value.messages.find(m => m.id === payload.messageId);
|
||||
const part = msg?.parts?.find(p => p.id === payload.partId);
|
||||
if (part) {
|
||||
if (part && part.type !== 'tool-call') {
|
||||
nextFlush(() => {
|
||||
part.content = payload.content;
|
||||
part.lastUpdatedAt = payload.lastUpdatedAt;
|
||||
if (payload.lastUpdatedAt) {
|
||||
part.lastUpdatedAt = payload.lastUpdatedAt;
|
||||
}
|
||||
part.finished = true;
|
||||
});
|
||||
}
|
||||
@@ -166,8 +168,14 @@ export const useChat = async (topicId: MaybeRef<string>, connect = true) => {
|
||||
case 'tool-call-start': {
|
||||
const msg = data.value.messages.find(m => m.id === payload.messageId);
|
||||
if (msg) {
|
||||
if (!msg.parts) msg.parts = [];
|
||||
msg.parts.push(payload.part);
|
||||
if (!msg.parts) {
|
||||
msg.parts = [];
|
||||
}
|
||||
const part = { ...payload.part };
|
||||
if (!part.createdAt) {
|
||||
part.createdAt = new Date().toISOString();
|
||||
}
|
||||
msg.parts.push(part);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -176,10 +184,22 @@ export const useChat = async (topicId: MaybeRef<string>, connect = true) => {
|
||||
const msg = data.value.messages.find(m => m.id === payload.messageId);
|
||||
const part = msg?.parts?.find(p => p.toolCallId === payload.toolCallId);
|
||||
if (part?.toolCall) {
|
||||
if (payload.input) part.toolCall.input = payload.input;
|
||||
if (payload.output) part.toolCall.output = payload.output;
|
||||
if (payload.error) part.toolCall.error = payload.error;
|
||||
if (payload.status) part.toolCall.status = payload.status;
|
||||
if (payload.input) {
|
||||
part.toolCall.input = payload.input;
|
||||
}
|
||||
if (payload.output) {
|
||||
part.toolCall.output = payload.output;
|
||||
}
|
||||
if (payload.error) {
|
||||
part.toolCall.error = payload.error;
|
||||
}
|
||||
if (payload.status) {
|
||||
part.toolCall.status = payload.status;
|
||||
if (payload.status === 'completed' || payload.status === 'failed') {
|
||||
part.lastUpdatedAt = payload.lastUpdatedAt || new Date().toISOString();
|
||||
part.finished = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user