- Single-screen chat interface with Timmy's sovereign AI personality - Text messaging with real-time AI responses via server chat API - Voice recording and playback with waveform visualization - Image sharing (camera + photo library) with full-screen viewer - File attachments via document picker - Dark arcane theme matching the Timmy Time dashboard - Custom app icon with glowing T circuit design - Timmy system prompt ported from dashboard prompts.py - Unit tests for chat utilities and message types
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
/**
|
|
* Unified type exports
|
|
* Import shared types from this single entry point.
|
|
*/
|
|
|
|
export type * from "../drizzle/schema";
|
|
export * from "./_core/errors";
|
|
|
|
// ── Chat Message Types ──────────────────────────────────────────────────────
|
|
|
|
export type MessageRole = "user" | "assistant";
|
|
|
|
export type MessageContentType = "text" | "image" | "file" | "voice";
|
|
|
|
export interface ChatMessage {
|
|
id: string;
|
|
role: MessageRole;
|
|
contentType: MessageContentType;
|
|
text?: string;
|
|
/** URI for image, file, or voice attachment */
|
|
uri?: string;
|
|
/** Original filename for files */
|
|
fileName?: string;
|
|
/** File size in bytes */
|
|
fileSize?: number;
|
|
/** MIME type for attachments */
|
|
mimeType?: string;
|
|
/** Duration in seconds for voice messages */
|
|
duration?: number;
|
|
/** Remote URL after upload (for images/files/voice sent to server) */
|
|
remoteUrl?: string;
|
|
timestamp: number;
|
|
/** Whether the message is still being generated */
|
|
pending?: boolean;
|
|
}
|