@follow-app/client-sdk
Version:
TypeScript client SDK for Follow RSS Server API
85 lines (68 loc) • 2.15 kB
text/typescript
import type { UIMessageParts } from "@folo-services/drizzle"
import type { StructuredSuccessResponse } from "../../types"
import type { DateISOString } from "../../types/date-serialization"
// Base request types
export interface ChatIdRequest {
chatId: string
}
// Base types from Drizzle schema
export interface AIChatSession {
chatId: string
userId: string
title: string
createdAt: DateISOString
updatedAt: DateISOString
lastSeenAt: DateISOString
}
export interface AIChatMessage {
id: string
chatId: string
role: "user" | "assistant" | "system"
messageParts: UIMessageParts
metadata?: unknown
status: "pending" | "completed" | "error"
createdAt: DateISOString
finishedAt: DateISOString | null
}
export interface ChatMetadata {
tokenUsage?: {
promptTokens: number
completionTokens: number
totalTokens: number
}
finishReason?: string
model?: string
[key: string]: any
}
// Request types
export interface GetSessionRequest extends ChatIdRequest {}
export interface ListSessionsQuery {
limit?: number // 1-100, default 20
before?: DateISOString // Optional cursor for pagination
}
export interface UpdateSessionRequest extends ChatIdRequest {
title: string // 1-100 chars, required
}
export interface DeleteSessionRequest extends ChatIdRequest {}
export interface GetMessagesQuery extends ChatIdRequest {
limit?: number
before?: DateISOString // Optional cursor for pagination
}
export interface MarkSeenRequest extends ChatIdRequest {
lastSeenAt?: DateISOString // Optional timestamp (defaults to now)
}
export interface GetUnreadQuery {
limit?: number
}
// Response types
export type SessionResponse = StructuredSuccessResponse<AIChatSession>
export type ListSessionsResponse = StructuredSuccessResponse<AIChatSession[]> & {
total: number
nextBefore?: DateISOString // Cursor for next page
}
export type GetMessagesResponse = StructuredSuccessResponse<{
chatSession: AIChatSession | null
messages: AIChatMessage[]
nextBefore?: DateISOString // Cursor for next page
}>
export type GetUnreadResponse = StructuredSuccessResponse<string[]> // Array of chatIds