feat: ditch triplit, move to postgresql + drizzle orm
This commit is contained in:
+28
-44
@@ -1,13 +1,9 @@
|
||||
<script setup lang="ts">
|
||||
import { assert } from '~~/utils/assert';
|
||||
import type { BaseMessage } from '~/composables/useChat';
|
||||
import type { Agent } from '~/composables/useAgents';
|
||||
|
||||
const triplit = useTriplitClient();
|
||||
|
||||
const { open: sidebarOpen, openSidebar } = useSidebar();
|
||||
const { agents, createAgent } = useAgents();
|
||||
const { providers, getFirstAvailableModel, allModels } = useModels();
|
||||
const { agents, createAgent, createTopic } = await useAgents();
|
||||
const { providers } = await useModels();
|
||||
|
||||
const inputValue = ref<BaseMessage>({ content: '', fileIds: [] });
|
||||
|
||||
@@ -80,60 +76,48 @@ const agent = computed(() => {
|
||||
return agents.value?.[0] ?? null;
|
||||
});
|
||||
|
||||
const { autoRename: autoRenameTopic } = useTopic();
|
||||
|
||||
const handleChatSubmit = async (message: BaseMessage, model: ModelWithProvider | null) => {
|
||||
console.log('Message submitted:', message, agents);
|
||||
let agent: Agent | null = agents.value?.[0] ?? null;
|
||||
if (!agent) {
|
||||
const triplit = useTriplitClient();
|
||||
assert('flush' in triplit);
|
||||
|
||||
agent = await createAgent();
|
||||
await triplit.flush();
|
||||
}
|
||||
|
||||
if (!agent) throw new Error('Failed to find agent');
|
||||
|
||||
if (!model) {
|
||||
if (agent.defaultModelId) {
|
||||
model = allModels.value.find(m => m.id === agent.defaultModelId) ?? null;
|
||||
} else {
|
||||
model = getFirstAvailableModel();
|
||||
}
|
||||
}
|
||||
|
||||
if (!model) {
|
||||
console.error('No model selected');
|
||||
return;
|
||||
}
|
||||
|
||||
const { createTopic, autoRename, sendMessage } = useChat(agent.id);
|
||||
if (!message.content) return;
|
||||
|
||||
const topic = await createTopic();
|
||||
if (!topic) throw new Error('Failed to create topic');
|
||||
let targetAgent = agents.value?.[0] ?? null;
|
||||
if (!targetAgent) {
|
||||
targetAgent = await createAgent(false);
|
||||
if (!targetAgent) {
|
||||
console.error('Failed to create agent');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
await navigateTo(`/agent/${agent.id}/topic/${topic.id}`);
|
||||
const topic = await createTopic(targetAgent.id);
|
||||
if (!topic) {
|
||||
console.error('Failed to create topic');
|
||||
return;
|
||||
}
|
||||
|
||||
autoRename(topic.id, message.content);
|
||||
const { sendMessage, startGeneration } = await useChat(topic.id, false);
|
||||
|
||||
return sendMessage(message, topic, [], agent, model.provider, model).then(async res => {
|
||||
await sendMessage(message).then(async res => {
|
||||
if (res.ok === false) {
|
||||
console.error('Failed to send message:', res.error);
|
||||
await navigateTo(`/agent/${agent.id}`);
|
||||
await triplit.delete('topics', topic.id);
|
||||
|
||||
// const chatInput = document.getElementById('chat') as HTMLInputElement;
|
||||
// if (chatInput) {
|
||||
// chatInput.value = message;
|
||||
// chatInput.dispatchEvent(new Event('input'));
|
||||
// nextTick(() => {
|
||||
// chatInput.focus();
|
||||
// });
|
||||
// }
|
||||
await navigateTo('/');
|
||||
nextTick(() => {
|
||||
inputValue.value = message;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
await navigateTo(`/agent/${targetAgent.id}/topic/${topic.id}`);
|
||||
|
||||
autoRenameTopic(topic.id);
|
||||
|
||||
return startGeneration(model);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
@@ -166,7 +150,7 @@ onUnmounted(() => {
|
||||
<div class="h-14 flex items-center justify-between px-4">
|
||||
<div class="flex items-center gap-2">
|
||||
<button v-if="!sidebarOpen" @click="openSidebar"
|
||||
class="flex p-2 rounded-lg text-[var(--text-primary)] bg-transparent hover:bg-[var(--color-hover)] transition-colors">
|
||||
class="flex p-2 rounded-lg text-[var(--text-primary)] bg-transparent @hover:bg-[var(--color-hover)] transition-colors">
|
||||
<span class="i-mynaui-panel-left-open text-5"></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user