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

36
app/composables/chat.ts Normal file
View File

@@ -0,0 +1,36 @@
import type { Message } from 'ai'
export async function loadChat(slug: string): Promise<Message[]> {
const { blobs } = await $fetch('/api/files')
if (!blobs.find(item => item.pathname === `chats/${slug}.json`)) {
await createChat(slug)
}
const data = await $fetch<string>(`/api/chats/${slug}`)
const dataString = JSON.stringify(data)
if (dataString === '[]') return []
return JSON.parse(dataString)
}
async function createChat(slug: string) {
await $fetch('/api/chats', {
method: 'POST',
body: {
file: {
name: `${slug}.json`,
content: '[]'
}
}
})
}
export async function deleteChat(slug: string) {
await $fetch('/api/files', {
method: 'DELETE',
body: {
pathname: `chats/${slug}.json`
}
})
}