UNPKG

@follow-app/client-sdk

Version:

TypeScript client SDK for Follow RSS Server API

87 lines (76 loc) 2.22 kB
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"