Files
clarity-helper/types.ts
T
jpremill 1feea40684 feat(ui): redesign voice cockpit with clinical companion drawer, Svelte 5 migration, and Gemini 3.8 voice
- Re-architect VoiceSession into full-bleed studio cockpit with overlay slide-over companion drawer
- Eliminate width squishing defect on LiveInsightPanel and add native dark/light theme support
- Integrate authentic Google Gemini 3.8 Flash TTS with Fenrir persona and fallback audio pipeline
- Implement comprehensive Playwright E2E visual regression suite across Desktop, iPad, and iPhone (21 tests, 45 snapshots)
- Migrate core application to Svelte 5 runes (, , ) with reactive stores
- Maintain .NET 8 Azure Functions serverless endpoints and clean build hygiene
2026-09-29 23:35:05 -04:00

67 lines
1.4 KiB
TypeScript

export interface Scenario {
id: string;
title: string;
description: string;
category: 'Social Anxiety' | 'Workplace' | 'Relationships' | 'Self-Talk';
difficulty: 'Beginner' | 'Intermediate' | 'Advanced';
systemInstruction: string;
initialMessage: string;
cbtFocus: string[];
characterName: string;
}
export interface UserSettings {
voiceName: 'Puck' | 'Charon' | 'Kore' | 'Fenrir' | 'Zephyr';
vocalStyle: string;
genderPreference: 'Male' | 'Female' | 'Neutral';
preferredAudioDeviceId?: string;
openRouterApiKey?: string;
geminiApiKey?: string;
voiceEngine?: 'gemini' | 'openrouter';
roleplayModel?: string;
supervisorModel?: string;
}
export interface SavedSession {
id: string;
scenarioId: string;
scenarioTitle: string;
category: Scenario['category'];
difficulty: Scenario['difficulty'];
timestamp: string;
mode: SessionMode;
messages: Message[];
finalReport?: AnalysisResult;
}
export interface Message {
id: string;
role: 'user' | 'model' | 'system';
text: string;
timestamp: Date;
isAnalysis?: boolean;
}
export type SessionMode = 'text' | 'voice';
export interface AudioConfig {
sampleRate: number;
}
export interface AnalysisResult {
analysis: {
distortions: string[];
isAdaptive: boolean;
evidence: string;
};
rating: {
score: number;
reason: string;
};
suggestions: {
alternativeThought: string;
behavioralStep: string;
};
}