2025-07-03 02:26:34 -07:00
|
|
|
import { z } from 'zod';
|
|
|
|
|
import type { getWeather } from './ai/tools/get-weather';
|
|
|
|
|
import type { createDocument } from './ai/tools/create-document';
|
|
|
|
|
import type { updateDocument } from './ai/tools/update-document';
|
|
|
|
|
import type { requestSuggestions } from './ai/tools/request-suggestions';
|
2025-09-08 16:56:10 +02:00
|
|
|
import type { InferUITool, LanguageModelUsage, UIMessage } from 'ai';
|
2025-07-03 02:26:34 -07:00
|
|
|
|
|
|
|
|
import type { ArtifactKind } from '@/components/artifact';
|
|
|
|
|
import type { Suggestion } from './db/schema';
|
|
|
|
|
|
2025-05-07 16:02:53 -07:00
|
|
|
export type DataPart = { type: 'append-message'; message: string };
|
2025-07-03 02:26:34 -07:00
|
|
|
|
|
|
|
|
export const messageMetadataSchema = z.object({
|
|
|
|
|
createdAt: z.string(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export type MessageMetadata = z.infer<typeof messageMetadataSchema>;
|
|
|
|
|
|
|
|
|
|
type weatherTool = InferUITool<typeof getWeather>;
|
|
|
|
|
type createDocumentTool = InferUITool<ReturnType<typeof createDocument>>;
|
|
|
|
|
type updateDocumentTool = InferUITool<ReturnType<typeof updateDocument>>;
|
|
|
|
|
type requestSuggestionsTool = InferUITool<
|
|
|
|
|
ReturnType<typeof requestSuggestions>
|
|
|
|
|
>;
|
|
|
|
|
|
|
|
|
|
export type ChatTools = {
|
|
|
|
|
getWeather: weatherTool;
|
|
|
|
|
createDocument: createDocumentTool;
|
|
|
|
|
updateDocument: updateDocumentTool;
|
|
|
|
|
requestSuggestions: requestSuggestionsTool;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type CustomUIDataTypes = {
|
|
|
|
|
textDelta: string;
|
|
|
|
|
imageDelta: string;
|
|
|
|
|
sheetDelta: string;
|
|
|
|
|
codeDelta: string;
|
|
|
|
|
suggestion: Suggestion;
|
|
|
|
|
appendMessage: string;
|
|
|
|
|
id: string;
|
|
|
|
|
title: string;
|
|
|
|
|
kind: ArtifactKind;
|
|
|
|
|
clear: null;
|
|
|
|
|
finish: null;
|
2025-09-08 16:56:10 +02:00
|
|
|
usage: LanguageModelUsage;
|
2025-07-03 02:26:34 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type ChatMessage = UIMessage<
|
|
|
|
|
MessageMetadata,
|
|
|
|
|
CustomUIDataTypes,
|
|
|
|
|
ChatTools
|
|
|
|
|
>;
|
|
|
|
|
|
|
|
|
|
export interface Attachment {
|
|
|
|
|
name: string;
|
|
|
|
|
url: string;
|
|
|
|
|
contentType: string;
|
|
|
|
|
}
|