- 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
67 lines
1.4 KiB
TypeScript
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;
|
|
};
|
|
}
|