feat: aggregate task progress updates
This commit is contained in:
@@ -116,6 +116,13 @@ const rendererContext = new TrustedDOMRendererContext(messages, presence, {
|
||||
loadDraft(callID) { return conversationStore.getToolDraft(callID); },
|
||||
saveDraft(callID, values) { conversationStore.saveToolDraft(callID, values); },
|
||||
clearDraft(callID) { conversationStore.clearToolDraft(callID); },
|
||||
}, {
|
||||
requestCancel(operationID) {
|
||||
const transition = interactionKernel.requestTaskCancel(operationID, new Date().toISOString());
|
||||
conversationStore.replaceTasks(interactionKernel.snapshot().tasks);
|
||||
return transition.disposition === "accepted";
|
||||
},
|
||||
read(operationID) { return interactionKernel.snapshot().tasks.find(task => task.operation_id === operationID); },
|
||||
});
|
||||
const rendererRegistry = new RendererRegistry<TrustedDOMRendererContext>();
|
||||
rendererRegistry.register("user-message", (item, context) => context.renderUserMessage(item));
|
||||
@@ -186,6 +193,9 @@ async function syncLoop(): Promise<void> {
|
||||
if (result.items.some(item => item.kind === "tool-call" || item.kind === "tool-result" || item.kind === "tool-cancel")) {
|
||||
conversationStore.replaceToolCalls(result.snapshot.tool_calls);
|
||||
}
|
||||
if (result.items.some(item => item.kind === "progress" && item.task)) {
|
||||
conversationStore.replaceTasks(result.snapshot.tasks);
|
||||
}
|
||||
for (const item of result.items) {
|
||||
if (conversationStore.recordIncoming(item, message.message_seq, new Date().toISOString())) renderIncoming(item);
|
||||
}
|
||||
@@ -233,7 +243,9 @@ $<HTMLFormElement>("#login-form").addEventListener("submit", async event => {
|
||||
session = { ...session, uid: body.uid, agentUID: body.agent_uid || session.agentUID, channelID: body.channel_id || session.channelID, channelType: body.channel_type || session.channelType, lastSeq: 0, active: true };
|
||||
const snapshot = conversationStore.open(currentConversationKey());
|
||||
interactionKernel.restoreToolCalls(snapshot.tool_calls, new Date().toISOString());
|
||||
interactionKernel.restoreTasks(snapshot.tasks);
|
||||
conversationStore.replaceToolCalls(interactionKernel.snapshot().tool_calls);
|
||||
conversationStore.replaceTasks(interactionKernel.snapshot().tasks);
|
||||
session.lastSeq = snapshot.cursor;
|
||||
messages.replaceChildren(); rendererContext.reset();
|
||||
loginView.hidden = true; chatView.hidden = false;
|
||||
|
||||
Reference in New Issue
Block a user