feat: add timestamp and forking

This commit is contained in:
Zoe
2026-07-15 15:49:38 -05:00
parent 8ccaa824dd
commit 886f385835
7 changed files with 308 additions and 79 deletions
+16 -2
View File
@@ -8,7 +8,7 @@ const rootStart = Date.now();
const chatPaneWrapper = ref<HTMLElement | null>(null);
const inputValue = ref<BaseMessage>({ content: '', fileIds: [] });
const route = useRoute();
const { getAgent, deleteTopic } = await useAgents();
const { getAgent, deleteTopic, forkTopic } = await useAgents();
const { open: sidebarOpen, openSidebar } = useSidebar();
const { providers, allModels } = await useModels();
const { addShortcut } = useKeyboardShortcuts();
@@ -114,6 +114,19 @@ const flatMessages = computed(() => {
return messages;
});
const handleFork = async (message: Message) => {
const messageId = message.activeChildId && message.children.length > 0
? message.activeChildId
: message.id;
const newTopicId = await forkTopic(topicId.value, messageId);
if (newTopicId) {
await navigateTo(`/agent/${route.params.id}/topic/${newTopicId}`);
} else {
console.error('Failed to fork topic');
}
};
const handleDelete = async (rootMessage: Message) => {
let messageId: string;
if (rootMessage.activeChildId && rootMessage.children.length > 0) {
@@ -306,7 +319,8 @@ console.log("full page render took", Date.now() - rootStart);
<Message v-for="message in topic.messages" :key="message.id" :message="message"
@edit="(value) => patchMessageLocally(message.id, { content: value })"
@patch="(updates) => patchMessageLocally(message.id, updates)"
@delete="handleDelete(message)" @regenerate="handleRegenerate(message)" />
@delete="handleDelete(message)" @regenerate="handleRegenerate(message)"
@fork="handleFork(message)" />
</template>
</Suspense>
</div>