@follow-app/client-sdk
Version:
TypeScript client SDK for Follow RSS Server API
87 lines (76 loc) • 2.22 kB
text/typescript
import { defineModule, defineRoute } from "../../shared/define-module"
import type {
AIMemoryCreateRequest,
AIMemoryListQuery,
AIMemoryListResponse,
AIMemoryRecord,
AIMemoryUpdateRequest,
ChatRequest,
ChatResponse,
ConfigResponse,
DailyRequest,
DailyResponse,
SummaryRequest,
SummaryResponse,
TextToSpeechRequest,
TextToSpeechResponse,
TitleRequest,
TitleResponse,
TranslationBatchRequest,
TranslationBatchResponse,
TranslationRequest,
TranslationResponse,
} from "./types"
/**
* AI module definition with nested AI-powered features
*/
export const aiModule = defineModule({
name: "ai",
prefix: "/ai",
routes: {
// AI chat interface - streaming response
chat: defineRoute<ChatRequest, ChatResponse>("POST", "/chat"),
// Content summarization
summary: defineRoute<SummaryRequest, SummaryResponse>("GET", "/summary"),
// Content translation
translation: defineRoute<TranslationRequest, TranslationResponse>(
"GET",
"/translation",
),
translationBatch: defineRoute<
TranslationBatchRequest,
TranslationBatchResponse
>("POST", "/translation/batch", {
asRaw: true,
}),
// Text-to-speech streaming audio
tts: defineRoute<TextToSpeechRequest, TextToSpeechResponse>(
"POST",
"/tts",
{
asRaw: true,
},
),
// Title generation for chat/content
summaryTitle: defineRoute<TitleRequest, TitleResponse>(
"POST",
"/summary-title",
),
// Daily summaries
daily: defineRoute<DailyRequest, DailyResponse>("GET", "/daily"),
// AI chat configuration
config: defineRoute<never, ConfigResponse>("GET", "/chat/config"),
memory: {
list: defineRoute<AIMemoryListQuery, AIMemoryListResponse>("GET", "/memory"),
create: defineRoute<AIMemoryCreateRequest, AIMemoryRecord>("POST", "/memory"),
update: defineRoute<AIMemoryUpdateRequest, AIMemoryRecord>("PATCH", "/memory/{memoryId}"),
delete: defineRoute<{ memoryId: string }, { success: boolean }>(
"DELETE",
"/memory/{memoryId}",
),
},
},
})
// Export the API type
export type AIAPI = typeof aiModule.api
export type * from "./types"