feat: add chat and file management APIs, implement chat loading and saving functionality

- Introduced new API endpoints for chat management including posting and retrieving chat messages.
- Implemented file upload and deletion functionalities for chat and other files.
- Added utility functions for streaming text and loading chat data.
- Created TypeScript types for models and agents used in the application.
- Configured TypeScript settings for server and project.
- Added favicon and workspace configuration for pnpm.
This commit is contained in:
2025-04-14 12:19:30 +02:00
commit c0b5539f12
29 changed files with 12941 additions and 0 deletions

68
app/pages/index.vue Normal file
View File

@@ -0,0 +1,68 @@
<script setup lang="ts">
import { AGENTS, MODELS } from '~~/types'
</script>
<template>
<main class="flex flex-col gap-16">
<div class="flex flex-col gap-4">
<h1 class="text-2xl font-bold">
Choose an agent
</h1>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div
v-for="agent in AGENTS"
:key="agent.slug"
>
<NuxtLink
:to="`/${agent.slug}`"
class="flex items-start gap-2 hover:bg-neutral-100 dark:hover:bg-neutral-800 rounded-lg p-4 duration-300"
>
<div class="flex items-center justify-center bg-neutral-300 dark:bg-neutral-800 rounded-full p-2">
<UIcon
:name="agent.icon"
size="24"
/>
</div>
<div class="flex flex-col">
<h2 class="text-lg font-bold">
{{ agent.name }}
</h2>
<p>
{{ agent.description }}
</p>
<p>
{{ agent.defaultModel }}
</p>
<p>
{{ agent.prompt }}
</p>
</div>
</NuxtLink>
</div>
</div>
</div>
<div class="flex flex-col gap-4">
<h1 class="text-2xl font-bold">
Available models
</h1>
<div class="grid grid-cols-2 md:grid-cols-4 gap-8">
<div
v-for="model in MODELS"
:key="model.name"
>
<div class="flex gap-4 items-center">
<div class="flex items-center justify-center bg-neutral-300 dark:bg-neutral-800 rounded-full p-2">
<UIcon
:name="model.icon"
size="24"
/>
</div>
<p>
{{ model.name }}
</p>
</div>
</div>
</div>
</div>
</main>
</template>