# ----------------------------------------------------------------------------
#
#  Welcome to Baml! To use this generated code, please run the following:
#
#  $ pip install baml
#
# ----------------------------------------------------------------------------

# This file was generated by BAML: please do not edit it. Instead, edit the
# BAML files and re-generate this code using: baml-cli generate
# baml-cli is available with the baml package.

_file_map = {

    "clients.baml": "// =============================================================================\n// BAML Client Definitions\n// =============================================================================\n// Defines LLM client configurations used by BAML functions.\n// These clients are used for AI-powered features like voice learning.\n// =============================================================================\n\n// Claude client for voice learning and style analysis functions\nclient<llm> Claude {\n  provider anthropic\n  options {\n    model \"claude-sonnet-4-20250514\"\n    api_key env.ANTHROPIC_API_KEY\n  }\n}\n",
    "generators.baml": "// =============================================================================\n// BAML Generators Configuration\n// =============================================================================\n// This file configures code generation for Python and TypeScript clients.\n// Generated code is written directly into package source trees.\n//\n// IMPORTANT: Generated code is never hand-edited.\n// =============================================================================\n\n// Python/Pydantic generator for backend consumption\ngenerator python {\n  output_type \"python/pydantic\"\n  output_dir \"../packages/python/src/coach_app_baml_client\"\n  version \"0.217.0\"\n}\n\n// TypeScript generator for frontend consumption\ngenerator typescript {\n  output_type \"typescript\"\n  output_dir \"../packages/typescript/src\"\n  version \"0.217.0\"\n}\n",
    "types/client-goals.baml": "// =============================================================================\n// Client Goals Types\n// =============================================================================\n// Types for managing client goals, including creation, updates, and tracking.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Goal Model\n// -----------------------------------------------------------------------------\n\n/// A client goal\nclass ClientGoal {\n  id string\n  clientId int\n  title string\n  description string?\n  category GoalCategory\n  status GoalStatus\n  progress int  // 0-100 percentage\n  targetDate string?  // ISO 8601\n  completedAt string?  // ISO 8601\n  createdAt string  // ISO 8601\n  updatedAt string  // ISO 8601\n}\n\n/// Category of goal\nenum GoalCategory {\n  CAREER @alias(\"career\")\n  LEADERSHIP @alias(\"leadership\")\n  RELATIONSHIPS @alias(\"relationships\")\n  PERSONAL @alias(\"personal\")\n  HEALTH @alias(\"health\")\n  OTHER @alias(\"other\")\n}\n\n/// Status of goal\nenum GoalStatus {\n  ACTIVE @alias(\"active\")\n  COMPLETED @alias(\"completed\")\n  PAUSED @alias(\"paused\")\n  ARCHIVED @alias(\"archived\")\n}\n\n// -----------------------------------------------------------------------------\n// Request Types\n// -----------------------------------------------------------------------------\n\n/// Request to create a new goal\nclass CreateGoalRequest {\n  title string\n  description string?\n  category GoalCategory\n  targetDate string?  // ISO 8601\n}\n\n/// Request to update an existing goal\nclass UpdateGoalRequest {\n  title string?\n  description string?\n  category GoalCategory?\n  status GoalStatus?\n  progress int?\n  targetDate string?  // ISO 8601\n}\n\n// -----------------------------------------------------------------------------\n// Response Types\n// -----------------------------------------------------------------------------\n\n/// Response containing goal data\nclass GoalResponse {\n  success bool\n  goal ClientGoal?\n  error string?\n}\n\n/// List of goals with pagination\nclass GoalList {\n  items ClientGoal[]\n  total int\n  page int\n  pageSize int\n}\n\n/// Filter options for goals list\nclass GoalFilter {\n  clientId int?\n  category GoalCategory?\n  status GoalStatus?\n  searchQuery string?\n}\n\n// -----------------------------------------------------------------------------\n// Goal Progress\n// -----------------------------------------------------------------------------\n\n/// Goal progress update\nclass GoalProgressUpdate {\n  goalId string\n  progress int  // 0-100\n  note string?\n  updatedAt string  // ISO 8601\n}\n\n/// Goal milestone\nclass GoalMilestone {\n  id string\n  goalId string\n  title string\n  description string?\n  targetDate string?  // ISO 8601\n  completed bool\n  completedAt string?  // ISO 8601\n}\n",
    "types/client-profile.baml": "// =============================================================================\n// Client Profile Types\n// =============================================================================\n// Types for client profile information including personal details,\n// coaching context, and aggregated statistics.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Client Profile\n// -----------------------------------------------------------------------------\n\n/// Full client profile\nclass ClientProfile {\n  id int\n  name string\n  email string\n  phone string?\n  company string?\n  title string?\n  bio string?\n\n  // North Star elements\n  values string[]\n  vision string?\n  overarchingGoals string[]\n\n  // Statistics\n  totalSessions int\n  completedGoals int\n  activeGoals int\n  pendingActions int\n\n  // Dates\n  lastSessionDate string?  // ISO 8601\n  nextSessionDate string?  // ISO 8601\n  coachingStartDate string  // ISO 8601\n}\n\n/// Lightweight client summary for list views\nclass ClientSummary {\n  id int\n  name string\n  email string\n  company string?\n  totalSessions int\n  lastSessionDate string?  // ISO 8601\n  nextSessionDate string?  // ISO 8601\n}\n\n/// List of clients with pagination\nclass ClientList {\n  items ClientSummary[]\n  total int\n  page int\n  pageSize int\n}\n\n// -----------------------------------------------------------------------------\n// Profile Updates\n// -----------------------------------------------------------------------------\n\n/// Request to update client profile\nclass UpdateClientProfileRequest {\n  name string?\n  email string?\n  phone string?\n  company string?\n  title string?\n  bio string?\n  values string[]?\n  vision string?\n  overarchingGoals string[]?\n}\n\n/// Response from profile update\nclass UpdateClientProfileResponse {\n  success bool\n  profile ClientProfile?\n  error string?\n}\n\n// -----------------------------------------------------------------------------\n// Client Notes\n// -----------------------------------------------------------------------------\n\n/// Private coach notes about a client\nclass ClientNote {\n  id string\n  clientId int\n  content string\n  createdAt string  // ISO 8601\n  updatedAt string  // ISO 8601\n}\n\n/// List of client notes\nclass ClientNoteList {\n  items ClientNote[]\n  total int\n}\n\n// -----------------------------------------------------------------------------\n// Client Statistics\n// -----------------------------------------------------------------------------\n\n/// Client engagement statistics\nclass ClientStats {\n  clientId int\n  totalSessions int\n  averageSessionDuration int  // minutes\n  completedGoals int\n  activeGoals int\n  completedActions int\n  pendingActions int\n  averageMoodRating float?  // 1-10\n  sessionFrequency float  // sessions per month\n  coachingDurationMonths int\n}\n",
    "types/core.baml": "// =============================================================================\n// Core Types - Boundary DTOs for Frontend/Backend Communication\n// =============================================================================\n// These types represent the foundational contracts shared between\n// coach-app-frontend and coach-app-backend.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Message Role Enum\n// -----------------------------------------------------------------------------\n\nenum MessageRole {\n  USER\n  ASSISTANT\n  SYSTEM\n}\n\n// -----------------------------------------------------------------------------\n// Tool Enums\n// -----------------------------------------------------------------------------\n\n/// Backend tool names for action execution\nenum ToolName {\n  DRAFT_T15\n  DRAFT_SESSION_NOTES\n  SEND_FOLLOW_UP_EMAIL\n  UPDATE_SESSION_STATUS\n  SUMMARIZE_TRANSCRIPT\n  ADD_CLIENT_NOTE\n  SCHEDULE_SESSION\n  LOOKUP_CLIENT\n}\n\n/// Frontend tool names - execute on frontend, not backend\nenum FrontendToolName {\n  NAVIGATE_TO\n  CLICK_ELEMENT\n  EXPAND_SECTION\n  SET_FORM_FIELD\n  SUBMIT_FORM\n  OPEN_MODAL\n  CLOSE_MODAL\n}\n\n/// Frontend action status lifecycle\nenum FrontendActionStatus {\n  PENDING @alias(\"pending\")\n  EXECUTING @alias(\"executing\")\n  COMPLETED @alias(\"completed\")\n  FAILED @alias(\"failed\")\n  EXPIRED @alias(\"expired\")\n}\n\n// -----------------------------------------------------------------------------\n// Page Context Types\n// -----------------------------------------------------------------------------\n\n/// Page context from extension content script\nclass PageContext {\n  url string\n  route string?\n  clientId int?\n  sessionId string?  // UUID format (was int, changed for UUID compatibility)\n  pageTitle string?\n  pageData map<string, string>  // Additional extracted data\n}\n\n/// Resolved context (what the system understood from PageContext)\nclass ResolvedContext {\n  clientId int?\n  clientName string?\n  sessionId string?  // UUID format (was int, changed for UUID compatibility)\n  sessionDate string?\n  confidence float  // 0-1, confidence in resolution\n}\n\n// -----------------------------------------------------------------------------\n// Chat Message Types\n// -----------------------------------------------------------------------------\n\n/// Single chat message\nclass ChatMessage {\n  role MessageRole\n  content string\n  timestamp string  // ISO 8601\n}\n\n/// Chat request from extension to backend\nclass ChatRequest {\n  message string\n  context PageContext?\n  conversationHistory ChatMessage[]?  // Optional - backend can retrieve from DB if not provided\n  conversationId string?\n}\n\n/// Suggested action (Phase 2+)\nclass SuggestedAction {\n  tool ToolName\n  label string\n  description string\n  parameters map<string, string>\n  requiresConfirmation bool\n}\n\n/// Chat response from backend to extension\nclass ChatResponse {\n  message string\n  conversationId string\n  suggestedActions SuggestedAction[]\n  context ResolvedContext?\n  frontendCommands FrontendCommand[]?  // Commands for frontend to execute (Phase 2.5+)\n}\n\n// -----------------------------------------------------------------------------\n// Auth Types\n// -----------------------------------------------------------------------------\n\nclass AuthVerifyResponse {\n  authenticated bool\n  userId int?\n  username string?\n  email string?\n  firstName string?\n  lastName string?\n  organizationId int?\n  permissions string[]\n}\n\n// -----------------------------------------------------------------------------\n// Error Types\n// -----------------------------------------------------------------------------\n\nclass ActionError {\n  code string\n  message string\n  retryable bool\n  details map<string, string>\n}\n\n// -----------------------------------------------------------------------------\n// Tool Parameter Types\n// -----------------------------------------------------------------------------\n\nclass ToolParameter {\n  name string\n  type string  // \"string\" | \"int\" | \"bool\" | \"date\" | \"text\"\n  description string\n  required bool\n  default string?\n}\n\nclass ToolDefinition {\n  name ToolName\n  description string\n  parameters ToolParameter[]\n  requiresConfirmation bool\n  outputType string  // \"text\" | \"structured\" | \"void\"\n}\n\n// -----------------------------------------------------------------------------\n// Action Request/Response Types\n// -----------------------------------------------------------------------------\n\nclass ActionOutput {\n  type string  // \"text\" | \"structured\"\n  text string?\n  structured map<string, string>\n  preview string?\n}\n\nclass ActionRequest {\n  conversationId string\n  tool ToolName\n  parameters map<string, string>\n  context PageContext\n  confirmed bool\n}\n\nclass ActionResponse {\n  success bool\n  actionId string?  // UUID of the action log entry (for tracking)\n  tool ToolName\n  output ActionOutput?\n  error ActionError?\n  appliedChanges string[]\n  followUpMessage string?\n  suggestedNextActions SuggestedAction[]\n}\n\n// -----------------------------------------------------------------------------\n// Context Types (for enriched context)\n// -----------------------------------------------------------------------------\n\nclass ClientContext {\n  id int\n  name string\n  email string?\n  phone string?\n  goals string[]\n  recentNotes string?\n  lastSessionDate string?\n  nextSessionDate string?\n  totalSessions int\n}\n\nclass SessionContext {\n  id string  // UUID format (was int, changed for UUID compatibility)\n  clientId int\n  clientName string\n  scheduledAt string\n  status string\n  t15Summary string?\n  notes string?\n  transcript string?\n  runningNotes string?\n}\n\n// -----------------------------------------------------------------------------\n// Frontend Command Types (Bidirectional Command Execution)\n// -----------------------------------------------------------------------------\n\n/// Command sent to frontend via WebSocket\nclass FrontendCommand {\n  actionId string\n  tool FrontendToolName\n  parameters map<string, string>\n  timeout int  // milliseconds\n  requiresConfirmation bool\n}\n\n/// Result reported back by frontend\nclass FrontendActionResult {\n  actionId string\n  status FrontendActionStatus\n  success bool\n  message string?\n  error ActionError?\n  executedAt string  // ISO 8601\n}\n\n/// Tool configuration for admin panel\nclass FrontendToolConfig {\n  tool FrontendToolName\n  requiresConfirmation bool\n  defaultTimeout int\n}\n",
    "types/dashboard.baml": "// =============================================================================\n// Dashboard Types\n// =============================================================================\n// Types for the coach dashboard including session prep status,\n// recent clients, and dashboard section configuration.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Session Prep Status\n// -----------------------------------------------------------------------------\n\n/// Status of session preparation for dashboard display\nclass SessionPrepStatus {\n  sessionId string\n  clientId int\n  clientName string\n  sessionDateTime string  // ISO 8601\n  sessionTitle string?\n  prepStatus PrepStatusValue\n  timeUntilSession int  // minutes\n  needsAttention bool\n  clientAvatarUrl string?\n  meetLink string?\n}\n\n/// Prep status values\nenum PrepStatusValue {\n  NOT_STARTED @alias(\"not_started\")\n  GENERATING @alias(\"generating\")\n  READY @alias(\"ready\")\n  VIEWED @alias(\"viewed\")\n}\n\n// -----------------------------------------------------------------------------\n// Recent Clients\n// -----------------------------------------------------------------------------\n\n/// Recent client for dashboard display\nclass RecentClient {\n  id int\n  name string\n  firstName string?\n  lastName string?\n  avatarUrl string?\n  lastSessionDate string?  // ISO 8601\n  nextSessionDate string?  // ISO 8601\n  recentActivity string?\n  hasPendingPrep bool\n  pendingActionsCount int\n  pendingMessages int?\n}\n\n// -----------------------------------------------------------------------------\n// Dashboard Configuration\n// -----------------------------------------------------------------------------\n\n/// Dashboard section configuration\nclass DashboardSection {\n  id string\n  title string\n  priority int  // Lower = higher priority\n  visible bool\n  collapsed bool\n}\n\n/// Dashboard layout preferences\nclass DashboardPreferences {\n  coachId int\n  sections DashboardSection[]\n  defaultView DashboardView\n  refreshInterval int  // seconds\n}\n\n/// Dashboard view options\nenum DashboardView {\n  OVERVIEW @alias(\"overview\")\n  SESSIONS @alias(\"sessions\")\n  CLIENTS @alias(\"clients\")\n  ACTIONS @alias(\"actions\")\n}\n\n// -----------------------------------------------------------------------------\n// Dashboard Data\n// -----------------------------------------------------------------------------\n\n/// Full dashboard data response\nclass DashboardData {\n  upcomingSessions SessionPrepStatus[]\n  recentClients RecentClient[]\n  pendingActionsCount int\n  todaySessionsCount int\n  weekSessionsCount int\n  lastUpdated string  // ISO 8601\n}\n",
    "types/events.baml": "// =============================================================================\n// Event Types - WebSocket Event Envelope Contracts\n// =============================================================================\n// These types define the event envelope structure for all real-time\n// WebSocket messages. All broadcasts MUST use EventEnvelope wrapper.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Event Type Enum\n// -----------------------------------------------------------------------------\n\n/// All WebSocket event types (stable enum, not free-form strings)\nenum EventType {\n  // State events\n  CONTEXT_CHANGED @alias(\"context_changed\")\n  STATE_UPDATED @alias(\"state_updated\")\n\n  // Chat/Conversation events\n  MESSAGE_RECEIVED @alias(\"message_received\")\n  MESSAGE_SENT @alias(\"message_sent\")\n  CONVERSATION_STARTED @alias(\"conversation_started\")\n  CONVERSATION_ENDED @alias(\"conversation_ended\")\n\n  // Action events\n  ACTION_PENDING @alias(\"action_pending\")\n  ACTION_EXECUTING @alias(\"action_executing\")\n  ACTION_COMPLETED @alias(\"action_completed\")\n  ACTION_FAILED @alias(\"action_failed\")\n  ACTION_CANCELLED @alias(\"action_cancelled\")\n\n  // Frontend command events\n  FRONTEND_COMMAND @alias(\"frontend_command\")\n  FRONTEND_COMMAND_RESULT @alias(\"frontend_command_result\")\n\n  // Scheduled message events\n  SCHEDULED_MESSAGE_CREATED @alias(\"scheduled_message_created\")\n  SCHEDULED_MESSAGE_UPDATED @alias(\"scheduled_message_updated\")\n  SCHEDULED_MESSAGE_APPROVED @alias(\"scheduled_message_approved\")\n  SCHEDULED_MESSAGE_SENT @alias(\"scheduled_message_sent\")\n  SCHEDULED_MESSAGE_CANCELLED @alias(\"scheduled_message_cancelled\")\n  SCHEDULED_MESSAGE_FAILED @alias(\"scheduled_message_failed\")\n  SCHEDULED_MESSAGE_REVIEW_DUE @alias(\"scheduled_message_review_due\")\n\n  // Command center events\n  COMMAND_CENTER_UPDATED @alias(\"command_center_updated\")\n  PRIORITY_ITEM_ADDED @alias(\"priority_item_added\")\n  PRIORITY_ITEM_COMPLETED @alias(\"priority_item_completed\")\n\n  // Voice learning events\n  VOICE_CORRECTION_SUBMITTED @alias(\"voice_correction_submitted\")\n  VOICE_PROFILE_UPDATED @alias(\"voice_profile_updated\")\n\n  // Private intelligence events\n  OBSERVATION_DETECTED @alias(\"observation_detected\")\n  CURRENT_READ_UPDATED @alias(\"current_read_updated\")\n\n  // Resource events\n  RESOURCE_CREATED @alias(\"resource_created\")\n  RESOURCE_UPDATED @alias(\"resource_updated\")\n  RESOURCE_DELETED @alias(\"resource_deleted\")\n\n  // Session events\n  SESSION_STARTED @alias(\"session_started\")\n  SESSION_UPDATED @alias(\"session_updated\")\n  SESSION_ENDED @alias(\"session_ended\")\n\n  // Connection events\n  CONNECTION_ESTABLISHED @alias(\"connection_established\")\n  CONNECTION_ERROR @alias(\"connection_error\")\n  HEARTBEAT @alias(\"heartbeat\")\n\n  // Error events\n  ERROR @alias(\"error\")\n\n  // Onboarding events (v1.1.0)\n  ONBOARDING_STEP_COMPLETED @alias(\"onboarding_step_completed\")\n  ONBOARDING_PHASE_STARTED @alias(\"onboarding_phase_started\")\n  VOICE_SAMPLES_SUBMITTED @alias(\"voice_samples_submitted\")\n\n  // T-15 Prep events (v1.1.0)\n  T15_PREP_GENERATED @alias(\"t15_prep_generated\")\n  T15_PREP_UPDATED @alias(\"t15_prep_updated\")\n  T15_PREP_VIEWED @alias(\"t15_prep_viewed\")\n\n  // Prep notification events (v2.0.0)\n  PREP_NOTIFICATION @alias(\"prep_notification\")\n  PREP_READY @alias(\"prep_ready\")\n  PREP_VIEWED @alias(\"prep_viewed\")\n\n  // Session Notes events (v1.1.0)\n  SESSION_NOTES_GENERATED @alias(\"session_notes_generated\")\n  SESSION_NOTES_UPDATED @alias(\"session_notes_updated\")\n  SESSION_NOTES_FINALIZED @alias(\"session_notes_finalized\")\n  SESSION_NOTES_SHARED @alias(\"session_notes_shared\")\n}\n\n// -----------------------------------------------------------------------------\n// Event Metadata\n// -----------------------------------------------------------------------------\n\n/// Metadata for every event (required for debugging/replay)\nclass EventMeta {\n  timestamp string  // ISO 8601\n  correlationId string?  // Links related events\n  contractsVersion string  // Version of contracts package\n  actorId int?  // User who triggered event (if applicable)\n  requestId string?  // Original HTTP request ID (if applicable)\n}\n\n// -----------------------------------------------------------------------------\n// Event Envelope (REQUIRED wrapper for all WebSocket messages)\n// -----------------------------------------------------------------------------\n\n/// Event envelope - all WebSocket messages MUST be wrapped in this\nclass EventEnvelope {\n  type EventType\n  meta EventMeta\n  payload map<string, string>  // Flexible payload, validated by type\n}\n\n// -----------------------------------------------------------------------------\n// Typed Payload Classes\n// -----------------------------------------------------------------------------\n\n/// Payload for CONTEXT_CHANGED and STATE_UPDATED events\nclass ContextChangedPayload {\n  page string\n  clientId int?\n  clientName string?\n  sessionId string?\n  sessionDate string?\n  availableActions string[]\n  source string?\n}\n\n/// Payload for MESSAGE_RECEIVED and MESSAGE_SENT events\nclass MessagePayload {\n  conversationId string\n  role string\n  content string\n  timestamp string\n}\n\n/// Payload for ACTION_* events\nclass ActionEventPayload {\n  actionId string\n  tool string\n  status string\n  parameters map<string, string>\n  result map<string, string>?\n  error map<string, string>?\n}\n\n/// Payload for FRONTEND_COMMAND event\nclass FrontendCommandPayload {\n  actionId string\n  tool string\n  parameters map<string, string>\n  timeout int\n  requiresConfirmation bool\n}\n\n/// Payload for SCHEDULED_MESSAGE_* events\nclass ScheduledMessageEventPayload {\n  messageId string\n  clientId int\n  clientName string?\n  channel string\n  subject string?\n  scheduledFor string\n  status string\n  previousStatus string?\n}\n\n/// Payload for COMMAND_CENTER_UPDATED event\nclass CommandCenterEventPayload {\n  focusNowCount int\n  soonCount int\n  laterCount int\n  lastUpdated string\n}\n\n/// Payload for PRIORITY_ITEM_* events\nclass PriorityItemPayload {\n  itemId string\n  type string\n  clientId int\n  clientName string?\n  priority string\n  action string\n}\n\n/// Payload for VOICE_* events\nclass VoiceEventPayload {\n  correctionId string?\n  voiceConfidence float?\n  contentType string?\n}\n\n/// Payload for OBSERVATION_DETECTED event\nclass ObservationPayload {\n  observationId string\n  clientId int\n  type string\n  description string\n  confidence float\n}\n\n/// Payload for RESOURCE_* events\nclass ResourceEventPayload {\n  resourceId string\n  clientId int\n  type string\n  title string\n  action string  // created, updated, deleted\n}\n\n/// Payload for SESSION_* events\nclass SessionEventPayload {\n  sessionId string\n  clientId int\n  clientName string?\n  status string\n  scheduledAt string?\n}\n\n/// Payload for ERROR event\nclass ErrorPayload {\n  code string\n  message string\n  details map<string, string>\n  retryable bool\n}\n\n/// Payload for CONNECTION_ESTABLISHED event\nclass ConnectionPayload {\n  connectionId string\n  userId int\n  capabilities string[]\n}\n\n/// Payload for HEARTBEAT event\nclass HeartbeatPayload {\n  serverTime string\n  connectionAge int  // seconds\n}\n\n// -----------------------------------------------------------------------------\n// v1.1.0 Typed Payload Classes\n// -----------------------------------------------------------------------------\n\n/// Payload for ONBOARDING_* events\nclass OnboardingEventPayload {\n  coachId int\n  phase string  // OnboardingPhase value\n  previousPhase string?\n  overallProgress float  // 0-1\n  action string  // started, completed, skipped\n  timestamp string  // ISO 8601\n}\n\n/// Payload for VOICE_SAMPLES_SUBMITTED event\nclass VoiceSamplesPayload {\n  coachId int\n  sampleCount int\n  totalSamples int\n  sampleTypes string[]  // VoiceSampleType values\n  voiceProfileStatus string  // needs_more_samples, ready, training, etc.\n}\n\n/// Payload for T15_PREP_* events\nclass T15PrepEventPayload {\n  prepId string\n  sessionId string  // UUID format\n  clientId int\n  clientName string?\n  scheduledAt string  // ISO 8601 - session time\n  action string  // generated, updated, viewed\n  sectionsCompleted int\n  totalSections int\n  overallReadiness string?\n}\n\n/// Payload for SESSION_NOTES_* events\nclass SessionNotesEventPayload {\n  notesId string\n  sessionId string  // UUID format\n  clientId int\n  clientName string?\n  sessionDate string  // ISO 8601\n  action string  // generated, updated, finalized, shared\n  status string  // SessionNotesStatus value\n  previousStatus string?\n  sectionsCompleted int\n  totalSections int\n}\n\n// -----------------------------------------------------------------------------\n// v2.0.0 Typed Payload Classes\n// -----------------------------------------------------------------------------\n\n/// Payload for PREP_NOTIFICATION, PREP_READY, PREP_VIEWED events\nclass PrepNotificationPayload {\n  sessionId string\n  clientName string\n  sessionDateTime string  // ISO 8601\n  prepStatus string  // PrepStatusValue\n  minutesUntilSession int\n}\n",
    "types/features.baml": "// =============================================================================\n// Feature Types - AI-Powered Coaching Capabilities\n// =============================================================================\n// These types support Voice Learning, Command Center, Resource Library,\n// AI Command Bar, Communication Transparency, and Private Intelligence features.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Voice Learning Types\n// -----------------------------------------------------------------------------\n\nenum EditType {\n  MINOR_TWEAK @alias(\"minor_tweak\")\n  SIGNIFICANT_CHANGE @alias(\"significant_change\")\n  COMPLETE_REWRITE @alias(\"complete_rewrite\")\n}\n\nenum CoachFeedback {\n  OFF_VOICE @alias(\"off_voice\")\n  PERFECT @alias(\"perfect\")\n}\n\nenum VoiceContentType {\n  SESSION_NOTES @alias(\"session_notes\")\n  EMAIL @alias(\"email\")\n  MESSAGE @alias(\"message\")\n}\n\n/// A single voice correction record\nclass VoiceCorrection {\n  id string\n  originalContent string\n  editedContent string\n  editType EditType\n  coachFeedback CoachFeedback?\n  contentType VoiceContentType\n  sessionId string?\n  timestamp string  // ISO 8601\n}\n\n/// Request to submit a voice correction\nclass VoiceCorrectionRequest {\n  sessionId string?\n  originalContent string\n  editedContent string\n  editType EditType\n  coachFeedback CoachFeedback?\n  contentType VoiceContentType?\n}\n\n/// Response from submitting a voice correction\nclass VoiceCorrectionResponse {\n  success bool\n  voiceConfidenceAfter float  // 0-1\n  improvementNote string?\n  correctionId string?\n}\n\n/// Tone preference configuration\nclass TonePreference {\n  tone string  // e.g., \"warm\", \"professional\", \"direct\"\n  weight float  // 0-1\n}\n\n/// Coach's voice profile\nclass VoiceProfile {\n  coachId int\n  voiceConfidence float  // 0-1\n  totalCorrections int\n  vocabularyPatterns string[]\n  avoidPatterns string[]\n  tonePreferences TonePreference[]\n  recentEdits VoiceCorrection[]\n  lastTrainedAt string?\n}\n\n/// Voice profile configuration (for onboarding setup)\nclass VoiceProfileConfig {\n  coachId int\n  minSamplesRequired int  // Minimum writing samples needed\n  currentSampleCount int  // Current submitted samples\n  sampleTypes VoiceContentType[]  // Types of samples submitted\n  trainingStatus VoiceTrainingStatus\n  estimatedConfidence float?  // Estimated voice confidence after training\n  canStartTraining bool  // Whether enough data to begin training\n  lastUpdated string  // ISO 8601\n}\n\n/// Status of voice profile training\nenum VoiceTrainingStatus {\n  NEEDS_SAMPLES @alias(\"needs_samples\")   // Not enough samples yet\n  READY @alias(\"ready\")                   // Ready to train\n  TRAINING @alias(\"training\")             // Training in progress\n  TRAINED @alias(\"trained\")               // Training complete\n  RETRAINING @alias(\"retraining\")         // Retraining with new data\n}\n\n// Voice Learning v1 Reference\n// LLM-based semantic style analysis types are defined in:\n// baml_src/types/voice-learning-v1.baml\n//\n// v1 extends v0 with:\n// - ToneVector: 5-dimensional tone profile\n// - StyleAnalysis: LLM-computed style characteristics\n// - StyleInsight: Human-readable insights for dashboard\n// - VoiceProfileV1: Extended profile with style analysis\n// - VoiceMatchResult: Detailed scoring results\n// - StyleTuning: Manual coach adjustments\n// - AnalyzeStyleFromCorrections: BAML function for batch analysis\n\n// -----------------------------------------------------------------------------\n// Command Center Types\n// -----------------------------------------------------------------------------\n\nenum CommandItemType {\n  CLIENT_ACTION @alias(\"client_action\")\n  SESSION_PREP @alias(\"session_prep\")\n  FOLLOW_UP @alias(\"follow_up\")\n  PATTERN_ALERT @alias(\"pattern_alert\")\n}\n\nenum Priority {\n  FOCUS_NOW @alias(\"focus_now\")\n  SOON @alias(\"soon\")\n  LATER @alias(\"later\")\n}\n\n/// A single command center item\nclass CommandCenterItem {\n  id string\n  type CommandItemType\n  clientId int\n  clientName string?\n  priority Priority\n  priorityReason string  // AI explains why this is prioritized\n  action string  // What to do\n  dueDate string?  // ISO 8601\n  crossDomainContext string?  // Links to coach's personal goals\n  sessionId string?\n  createdAt string  // ISO 8601\n}\n\n/// Grouped command center response\nclass CommandCenterData {\n  focusNow CommandCenterItem[]\n  soon CommandCenterItem[]\n  later CommandCenterItem[]\n  lastUpdated string  // ISO 8601\n}\n\n// -----------------------------------------------------------------------------\n// Resource Library Types\n// -----------------------------------------------------------------------------\n\nenum ResourceType {\n  DOCUMENT @alias(\"document\")\n  LINK @alias(\"link\")\n  FRAMEWORK @alias(\"framework\")\n  TEMPLATE @alias(\"template\")\n}\n\n/// Metadata for a resource item\nclass ResourceMetadata {\n  fileSize int?\n  mimeType string?\n  originalName string?\n  linkTitle string?\n  linkDescription string?\n  linkImage string?\n}\n\n/// A single resource item\nclass ResourceItem {\n  id string\n  clientId int\n  coachId int\n  type ResourceType\n  title string\n  description string?\n  fileUrl string?  // For documents (presigned S3 URL)\n  externalUrl string?  // For links\n  thumbnailUrl string?\n  tags string[]\n  metadata ResourceMetadata\n  createdAt string  // ISO 8601\n  updatedAt string  // ISO 8601\n}\n\n/// Request to create a new resource\nclass CreateResourceRequest {\n  type ResourceType\n  title string\n  description string?\n  externalUrl string?  // For links\n  tags string[]\n}\n\n/// Request to update an existing resource\nclass UpdateResourceRequest {\n  title string?\n  description string?\n  tags string[]\n  externalUrl string?\n}\n\n/// Paginated resource list\nclass ResourceListData {\n  items ResourceItem[]\n  total int\n  page int\n  pageSize int\n  nextPage int?\n}\n\n// -----------------------------------------------------------------------------\n// AI Command Bar Types\n// -----------------------------------------------------------------------------\n\nenum AICommandType {\n  TONE_ADJUSTMENT @alias(\"tone_adjustment\")\n  CONTENT_ADDITION @alias(\"content_addition\")\n  CONTENT_REMOVAL @alias(\"content_removal\")\n  SECTION_MODIFICATION @alias(\"section_modification\")\n  VOICE_CORRECTION @alias(\"voice_correction\")\n  SPECIFIC_EDIT @alias(\"specific_edit\")\n}\n\n/// Request to execute an AI command\nclass AICommandRequest {\n  contentId string  // Session UUID or content identifier\n  section string?  // Specific section to modify\n  command string  // Natural language command\n  currentContent string  // The content to modify\n  commandType AICommandType?  // Optional hint\n}\n\n/// Response from executing an AI command\nclass AICommandResult {\n  editedContent string\n  explanation string?\n  appliedChange string?  // Summary of what changed\n  commandId string?  // For undo/tracking\n}\n\n/// A single AI command history entry\nclass AICommandHistoryItem {\n  id string\n  command string\n  commandType AICommandType?\n  originalContent string\n  editedContent string\n  section string?\n  applied bool\n  explanation string?\n  createdAt string  // ISO 8601\n}\n\n// -----------------------------------------------------------------------------\n// Communication Transparency Types\n// -----------------------------------------------------------------------------\n\nenum TransparencyIndicator {\n  COACH_DIRECT @alias(\"coach_direct\")              // Coach wrote directly\n  AI_DRAFTED_APPROVED @alias(\"ai_drafted_approved\") // AI draft, coach approved\n  AI_AUTONOMOUS @alias(\"ai_autonomous\")             // AI only (pre-approved types)\n}\n\n/// Message with transparency metadata\nclass TransparentMessage {\n  content string\n  indicator TransparencyIndicator\n  coachName string?\n  approvedAt string?  // ISO 8601\n}\n\n// -----------------------------------------------------------------------------\n// Private Intelligence Layer Types\n// -----------------------------------------------------------------------------\n\nenum ObservationType {\n  PATTERN @alias(\"pattern\")\n  CHANGE @alias(\"change\")\n  BREAKTHROUGH @alias(\"breakthrough\")\n}\n\n/// AI's current read/assessment of client\nclass CurrentRead {\n  assessment string\n  confidence float  // 0-1\n  lastUpdated string  // ISO 8601\n}\n\n/// A single observation entry\nclass ObservationEntry {\n  id string\n  type ObservationType\n  description string\n  evidence string[]  // Quote excerpts\n  confidence float  // 0-1\n  detectedAt string  // ISO 8601\n  dismissed bool\n  dismissedBy string?\n  dismissedAt string?\n}\n\n/// Complete private intelligence for a client\nclass PrivateIntelligence {\n  clientId int\n  currentRead CurrentRead?\n  observations ObservationEntry[]\n  coachPrivateNotes string?\n  lastUpdated string  // ISO 8601\n}\n",
    "types/messaging.baml": "// =============================================================================\n// Messaging Types - Scheduled Message Delivery Contracts\n// =============================================================================\n// These types define the API contracts for scheduled messaging features,\n// including message creation, updates, delivery status, and preferences.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Channel and Status Enums\n// -----------------------------------------------------------------------------\n\n/// Channel choices for message delivery\nenum MessageChannel {\n  EMAIL @alias(\"email\")\n  SMS @alias(\"sms\")\n  WHATSAPP @alias(\"whatsapp\")\n}\n\n/// Status choices for scheduled messages\nenum MessageStatus {\n  DRAFT @alias(\"draft\")\n  APPROVED @alias(\"approved\")\n  PENDING_REVIEW @alias(\"pending_review\")\n  SENT @alias(\"sent\")\n  CANCELLED @alias(\"cancelled\")\n  FAILED @alias(\"failed\")\n}\n\n// -----------------------------------------------------------------------------\n// Scheduled Message Types\n// -----------------------------------------------------------------------------\n\n/// Full representation of a scheduled message (API response)\nclass ScheduledMessage {\n  id string\n  coachId int\n  coachName string\n  clientId int\n  clientName string\n  clientEmail string\n  sessionId string?\n  sessionDate string?  // ISO 8601\n  templateUsed string?\n  channel MessageChannel\n  subject string?\n  body string\n  scheduledFor string  // ISO 8601\n  aiSuggestedTime string?  // ISO 8601\n  aiSuggestionReason string?\n  status MessageStatus\n  approvedAt string?  // ISO 8601\n  reviewedAt string?  // ISO 8601\n  sentAt string?  // ISO 8601\n  cancelledAt string?  // ISO 8601\n  cancellationReason string?\n  deliveryAttempts int\n  lastDeliveryError string?\n  externalMessageId string?\n  transparencyIndicator string\n  transparencyDisplayName string?\n  canEdit bool\n  canCancel bool\n  canSend bool\n  createdAt string  // ISO 8601\n  updatedAt string  // ISO 8601\n}\n\n/// Request to create a scheduled message\nclass CreateScheduledMessageRequest {\n  clientId int\n  sessionId string?\n  templateId string?\n  channel MessageChannel\n  subject string?  // Required for email\n  body string\n  scheduledFor string  // ISO 8601, must be in future\n  useAiSuggestion bool\n  autoApprove bool\n  transparencyIndicator string?\n  transparencyDisplayName string?\n}\n\n/// Request to update a scheduled message\nclass UpdateScheduledMessageRequest {\n  subject string?\n  body string?\n  scheduledFor string?  // ISO 8601\n  channel MessageChannel?\n}\n\n// -----------------------------------------------------------------------------\n// Preferences Types\n// -----------------------------------------------------------------------------\n\n/// User preferences for scheduled message handling\nclass ScheduledMessagePreferences {\n  preSendReviewEnabled bool\n  preSendReviewMinutes int  // 1-1440 (24 hours max)\n  autoCancelIfClientResponds bool\n  defaultChannel MessageChannel\n  createdAt string  // ISO 8601\n  updatedAt string  // ISO 8601\n}\n\n/// Request to update preferences\nclass UpdatePreferencesRequest {\n  preSendReviewEnabled bool?\n  preSendReviewMinutes int?\n  autoCancelIfClientResponds bool?\n  defaultChannel MessageChannel?\n}\n\n// -----------------------------------------------------------------------------\n// AI Timing Suggestion Types\n// -----------------------------------------------------------------------------\n\n/// Response from AI timing suggestion\nclass AiTimingSuggestion {\n  suggestedTime string  // ISO 8601\n  reason string\n  confidence float  // 0-1\n  alternativeTimes string[]  // ISO 8601 array\n}\n\n/// Request for AI timing suggestion\nclass AiTimingSuggestionRequest {\n  clientId int\n  messageType string\n  preferredTimeRange string?  // e.g., \"morning\", \"afternoon\", \"evening\"\n}\n\n// -----------------------------------------------------------------------------\n// Audit Log Types\n// -----------------------------------------------------------------------------\n\n/// Audit log entry for message state changes\nclass ScheduledMessageAuditEntry {\n  id string\n  messageId string\n  action string\n  actorId int?\n  actorName string?\n  details map<string, string>\n  createdAt string  // ISO 8601\n}\n\n// -----------------------------------------------------------------------------\n// List/Pagination Types\n// -----------------------------------------------------------------------------\n\n/// Paginated list of scheduled messages\nclass ScheduledMessageList {\n  items ScheduledMessage[]\n  total int\n  page int\n  pageSize int\n  hasNext bool\n}\n\n/// Filter parameters for listing messages\nclass ScheduledMessageFilter {\n  status MessageStatus?\n  channel MessageChannel?\n  clientId int?\n  sessionId string?\n  fromDate string?  // ISO 8601\n  toDate string?  // ISO 8601\n}\n",
    "types/onboarding.baml": "// =============================================================================\n// Onboarding Types - Coach Onboarding Workflow\n// =============================================================================\n// These types support the coach onboarding process, including profile setup,\n// voice sample collection, integration configuration, and progress tracking.\n// The onboarding consists of 8 phases that coaches complete sequentially.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Onboarding Phase Enum\n// -----------------------------------------------------------------------------\n\n/// The 8 phases of coach onboarding\nenum OnboardingPhase {\n  ACCOUNT_CREATED @alias(\"account_created\")       // Initial account setup\n  PROFILE_SETUP @alias(\"profile_setup\")           // Basic profile information\n  VOICE_SAMPLES @alias(\"voice_samples\")           // Writing sample collection\n  COACHING_STYLE @alias(\"coaching_style\")         // Methodology preferences\n  INTEGRATIONS @alias(\"integrations\")             // Calendar/CRM connections\n  CLIENT_IMPORT @alias(\"client_import\")           // Import existing clients\n  TUTORIAL @alias(\"tutorial\")                     // Platform walkthrough\n  COMPLETED @alias(\"completed\")                   // Onboarding finished\n}\n\n// -----------------------------------------------------------------------------\n// Onboarding Progress Types\n// -----------------------------------------------------------------------------\n\n/// Progress for a single onboarding phase\nclass OnboardingPhaseProgress {\n  phase OnboardingPhase\n  status PhaseStatus\n  startedAt string?  // ISO 8601\n  completedAt string?  // ISO 8601\n  skipped bool\n  skipReason string?\n  data map<string, string>  // Phase-specific collected data\n}\n\n/// Status of an onboarding phase\nenum PhaseStatus {\n  NOT_STARTED @alias(\"not_started\")\n  IN_PROGRESS @alias(\"in_progress\")\n  COMPLETED @alias(\"completed\")\n  SKIPPED @alias(\"skipped\")\n}\n\n/// Overall onboarding progress\nclass OnboardingProgress {\n  coachId int\n  currentPhase OnboardingPhase\n  phases OnboardingPhaseProgress[]\n  overallProgress float  // 0-1, percentage complete\n  startedAt string  // ISO 8601\n  completedAt string?  // ISO 8601\n  estimatedTimeRemaining int?  // minutes\n  canSkipCurrent bool  // Whether current phase can be skipped\n}\n\n// -----------------------------------------------------------------------------\n// Voice Sample Types\n// -----------------------------------------------------------------------------\n\n/// Type of voice sample for AI learning\nenum VoiceSampleType {\n  EMAIL @alias(\"email\")                   // Email communication sample\n  SESSION_NOTES @alias(\"session_notes\")   // Session notes sample\n  FOLLOW_UP @alias(\"follow_up\")           // Follow-up message sample\n  FEEDBACK @alias(\"feedback\")             // Client feedback sample\n  GENERAL @alias(\"general\")               // General writing sample\n}\n\n/// A single voice sample for training\nclass VoiceSample {\n  id string\n  coachId int\n  type VoiceSampleType\n  content string  // The actual writing sample\n  context string?  // Context about when/why this was written\n  isPreferred bool  // Coach marks as particularly representative\n  submittedAt string  // ISO 8601\n  processedAt string?  // ISO 8601 - when AI processed it\n  processingStatus VoiceSampleStatus\n}\n\n/// Processing status for voice sample\nenum VoiceSampleStatus {\n  PENDING @alias(\"pending\")       // Submitted, awaiting processing\n  PROCESSING @alias(\"processing\") // AI is analyzing\n  PROCESSED @alias(\"processed\")   // Successfully analyzed\n  FAILED @alias(\"failed\")         // Processing failed\n}\n\n/// Request to submit voice samples\nclass VoiceSampleSubmitRequest {\n  samples VoiceSampleInput[]\n}\n\n/// Input for a single voice sample\nclass VoiceSampleInput {\n  type VoiceSampleType\n  content string\n  context string?\n  isPreferred bool\n}\n\n/// Response from voice sample submission\nclass VoiceSampleSubmitResponse {\n  success bool\n  submittedCount int\n  sampleIds string[]\n  voiceProfileStatus string  // e.g., \"needs_more_samples\", \"ready_for_training\"\n  minimumSamplesRequired int\n  currentSampleCount int\n  error string?\n}\n\n// -----------------------------------------------------------------------------\n// Integration Types\n// -----------------------------------------------------------------------------\n\n/// Types of integrations supported\nenum IntegrationType {\n  GOOGLE_CALENDAR @alias(\"google_calendar\")\n  OUTLOOK_CALENDAR @alias(\"outlook_calendar\")\n  ZOOM @alias(\"zoom\")\n  GOOGLE_MEET @alias(\"google_meet\")\n  TEAMS @alias(\"teams\")\n  SALESFORCE @alias(\"salesforce\")\n  HUBSPOT @alias(\"hubspot\")\n  PRACTICE @alias(\"practice\")  // Practice management software\n}\n\n/// Status of an integration\nenum IntegrationStatus {\n  NOT_CONNECTED @alias(\"not_connected\")\n  PENDING @alias(\"pending\")           // OAuth in progress\n  CONNECTED @alias(\"connected\")\n  EXPIRED @alias(\"expired\")           // Token expired\n  ERROR @alias(\"error\")\n}\n\n/// Configuration for a single integration\nclass IntegrationConfig {\n  id string\n  coachId int\n  type IntegrationType\n  status IntegrationStatus\n  displayName string  // e.g., \"John's Google Calendar\"\n  accountEmail string?  // Connected account email\n  connectedAt string?  // ISO 8601\n  lastSyncAt string?  // ISO 8601\n  settings map<string, string>  // Integration-specific settings\n  error string?  // Error message if status is ERROR\n}\n\n/// Request to initiate an integration connection\nclass IntegrationConnectRequest {\n  type IntegrationType\n  redirectUrl string  // Where to redirect after OAuth\n}\n\n/// Response with OAuth URL\nclass IntegrationConnectResponse {\n  success bool\n  authUrl string?  // URL to redirect user to for OAuth\n  error string?\n}\n\n/// Request to disconnect an integration\nclass IntegrationDisconnectRequest {\n  integrationId string\n}\n\n/// List of coach's integrations\nclass IntegrationList {\n  integrations IntegrationConfig[]\n  availableTypes IntegrationType[]  // Types that can still be connected\n}\n\n// -----------------------------------------------------------------------------\n// Profile Scraping Types\n// -----------------------------------------------------------------------------\n\n/// Scraped coach profile from external sources\nclass ScrapedCoachProfile {\n  source string  // e.g., \"linkedin\", \"website\", \"icf\"\n  sourceUrl string\n  name string?\n  title string?\n  bio string?\n  certifications string[]\n  specialties string[]\n  yearsExperience int?\n  photoUrl string?\n  contactEmail string?\n  scrapedAt string  // ISO 8601\n  confidence float  // 0-1, confidence in scraped data accuracy\n}\n\n/// Request to scrape coach profile\nclass ProfileScrapeRequest {\n  urls string[]  // URLs to scrape\n  linkedInUrl string?\n  websiteUrl string?\n}\n\n/// Response from profile scraping\nclass ProfileScrapeResponse {\n  success bool\n  profiles ScrapedCoachProfile[]\n  mergedProfile ScrapedCoachProfile?  // AI-merged best data\n  error string?\n}\n\n// -----------------------------------------------------------------------------\n// Onboarding API Types\n// -----------------------------------------------------------------------------\n\n/// Request to update onboarding progress\nclass OnboardingUpdateRequest {\n  phase OnboardingPhase\n  action OnboardingAction\n  data map<string, string>  // Phase-specific data\n}\n\n/// Onboarding action type\nenum OnboardingAction {\n  START @alias(\"start\")\n  COMPLETE @alias(\"complete\")\n  SKIP @alias(\"skip\")\n  SAVE_PROGRESS @alias(\"save_progress\")\n}\n\n/// Response from onboarding update\nclass OnboardingUpdateResponse {\n  success bool\n  progress OnboardingProgress\n  nextPhase OnboardingPhase?\n  error string?\n}\n",
    "types/session-notes.baml": "// =============================================================================\n// 6-Section Session Notes Types (Typed Structure)\n// =============================================================================\n// Post-session documentation with typed sections following ROIIRN methodology.\n// Breaking change in v2.0.0: Replaced generic SessionSectionContent[] with\n// explicitly typed section fields as required by backend spec.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Section Identifiers\n// -----------------------------------------------------------------------------\n\n/// The 6 sections of session notes\nenum SessionNoteSectionId {\n  RECAP @alias(\"recap\")\n  OBSERVATIONS @alias(\"observations\")\n  INQUIRIES @alias(\"inquiries\")\n  INVITATIONS @alias(\"invitations\")\n  RESOURCES @alias(\"resources\")\n  NEXT @alias(\"next\")\n}\n\n// -----------------------------------------------------------------------------\n// SessionNotes - Main Document Structure\n// -----------------------------------------------------------------------------\n\n/// Full session notes document with typed sections\nclass SessionNotes {\n  sessionId string\n  recap SessionNoteSection\n  observations SessionNoteSection\n  inquiries InquiriesSection\n  invitations InvitationsSection\n  resources ResourcesSection\n  next NextSection\n  voiceConfidence float  // 0-1, AI voice matching confidence\n  generatedAt string  // ISO 8601\n  lastEditedAt string?  // ISO 8601\n  status SessionNotesStatus\n}\n\n/// Status of session notes\nenum SessionNotesStatus {\n  DRAFT @alias(\"draft\")\n  SENT @alias(\"sent\")\n  ARCHIVED @alias(\"archived\")\n}\n\n// -----------------------------------------------------------------------------\n// Base Section Types\n// -----------------------------------------------------------------------------\n\n/// Base structure for simple sections (recap, observations)\nclass SessionNoteSection {\n  id string\n  summary string\n  keyPoints KeyPoint[]\n  expanded bool?\n}\n\n/// A key point within a section\nclass KeyPoint {\n  id string\n  text string\n  detail string?\n  quote Quote?\n}\n\n/// A quote from the session\nclass Quote {\n  text string\n  timestamp string?  // Position in session recording\n  videoLink string?\n}\n\n// -----------------------------------------------------------------------------\n// Specialized Section Types\n// -----------------------------------------------------------------------------\n\n/// Inquiries section with questions\nclass InquiriesSection {\n  id string\n  summary string\n  keyPoints KeyPoint[]\n  expanded bool?\n  questions InquiryQuestion[]\n}\n\n/// A powerful question explored in the session\nclass InquiryQuestion {\n  id string\n  question string\n  category InquiryCategory\n  answered bool?\n}\n\n/// Category of inquiry question\nenum InquiryCategory {\n  GROWTH @alias(\"growth\")\n  REFLECTION @alias(\"reflection\")\n  CHALLENGE @alias(\"challenge\")\n  EXPLORATION @alias(\"exploration\")\n}\n\n/// Invitations section with action items\nclass InvitationsSection {\n  id string\n  summary string\n  keyPoints KeyPoint[]\n  expanded bool?\n  actionItems ActionItem[]\n}\n\n/// An action item or invitation given to client\nclass ActionItem {\n  id string\n  action string\n  specificity ActionSpecificity\n  details string\n  dueDate string?  // ISO 8601\n  completed bool?\n}\n\n/// Level of specificity for action items\nenum ActionSpecificity {\n  WHEN @alias(\"when\")\n  WHAT @alias(\"what\")\n  HOW @alias(\"how\")\n  WHO @alias(\"who\")\n}\n\n/// Resources section with links\nclass ResourcesSection {\n  id string\n  summary string\n  keyPoints KeyPoint[]\n  expanded bool?\n  links ResourceLink[]\n}\n\n/// A resource link shared in the session\nclass ResourceLink {\n  id string\n  title string\n  url string\n  type ResourceLinkType\n  description string?\n}\n\n/// Type of resource link\nenum ResourceLinkType {\n  DOCUMENT @alias(\"document\")\n  LINK @alias(\"link\")\n  FRAMEWORK @alias(\"framework\")\n}\n\n/// Next section with focus areas\nclass NextSection {\n  id string\n  summary string\n  keyPoints KeyPoint[]\n  expanded bool?\n  focusAreas string[]\n  nextSessionDate string?  // ISO 8601\n}\n\n// -----------------------------------------------------------------------------\n// Request/Response Types\n// -----------------------------------------------------------------------------\n\n/// Request to generate session notes\nclass GenerateNotesRequest {\n  sessionId string\n  regenerate bool\n}\n\n/// Request to update a specific section\nclass UpdateSectionRequest {\n  sectionId SessionNoteSectionId\n  summary string?\n  keyPoints KeyPoint[]?\n}\n\n/// Response containing generated notes\nclass SessionNotesResponse {\n  success bool\n  notes SessionNotes?\n  error string?\n  warnings string[]\n  generationTimeMs int\n}\n\n/// Request to finalize/send session notes\nclass FinalizeNotesRequest {\n  notesId string\n  sendToClient bool\n  personalizedMessage string?\n}\n\n/// Response from finalizing notes\nclass FinalizeNotesResponse {\n  success bool\n  status SessionNotesStatus\n  sentAt string?  // ISO 8601, if sent\n  error string?\n}\n\n// -----------------------------------------------------------------------------\n// Summary Types\n// -----------------------------------------------------------------------------\n\n/// Lightweight summary for list views\nclass SessionNotesSummary {\n  id string\n  sessionId string\n  clientId int\n  clientName string\n  sessionDate string  // ISO 8601\n  status SessionNotesStatus\n  summary string\n  generatedAt string  // ISO 8601\n}\n\n/// List of session notes with pagination\nclass SessionNotesList {\n  items SessionNotesSummary[]\n  total int\n  page int\n  pageSize int\n}\n\n/// Filter options for session notes list\nclass SessionNotesFilter {\n  clientId int?\n  status SessionNotesStatus?\n  fromDate string?  // ISO 8601\n  toDate string?  // ISO 8601\n  searchQuery string?\n}\n",
    "types/state.baml": "// =============================================================================\n// State Types - User Active State Management Contracts\n// =============================================================================\n// These types define the API contracts for tracking user state across\n// frontend and extension, enabling context-aware AI assistance.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Navigation Types\n// -----------------------------------------------------------------------------\n\n/// Navigation option for available routes/actions\nclass NavigationOption {\n  label string\n  route string\n  icon string?\n}\n\n// -----------------------------------------------------------------------------\n// State Update Types\n// -----------------------------------------------------------------------------\n\n/// Source of state update\nenum StateSource {\n  FRONTEND @alias(\"frontend\")\n  EXTENSION @alias(\"extension\")\n}\n\n/// Request to update user's active state\nclass StateUpdateRequest {\n  page string\n  clientId int?\n  sessionId string?\n  availableActions string[]\n  navigationOptions NavigationOption[]\n  source StateSource\n}\n\n/// Response from state update\nclass StateUpdateResponse {\n  success bool\n  stateId string\n}\n\n// -----------------------------------------------------------------------------\n// State Response Types\n// -----------------------------------------------------------------------------\n\n/// Current user state (broadcast via WebSocket)\nclass UserActiveState {\n  page string\n  clientId int?\n  clientName string?\n  sessionId string?\n  sessionDate string?  // ISO 8601\n  availableActions string[]\n  navigationOptions NavigationOption[]\n  source StateSource?\n  lastUpdated string?  // ISO 8601\n}\n\n// -----------------------------------------------------------------------------\n// State History Types (for debugging/audit)\n// -----------------------------------------------------------------------------\n\n/// Historical state entry\nclass StateHistoryEntry {\n  id string\n  userId int\n  page string\n  clientId int?\n  sessionId string?\n  source StateSource\n  createdAt string  // ISO 8601\n}\n\n/// Request to query state history\nclass StateHistoryQuery {\n  userId int?\n  fromDate string?  // ISO 8601\n  toDate string?  // ISO 8601\n  limit int?\n}\n",
    "types/t15prep.baml": "// =============================================================================\n// T-15 Prep Document Types (Typed Structure)\n// =============================================================================\n// Pre-session preparation document with 9 typed sections.\n// Breaking change in v2.0.0: Replaced generic T15SectionContent[] with\n// explicitly typed section fields as required by backend spec.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// PrepDocument - Main Document Structure\n// -----------------------------------------------------------------------------\n\n/// Full T-15 prep document with typed sections\nclass PrepDocument {\n  id string\n  sessionId string\n  clientId int\n  clientName string\n  sessionTitle string\n  sessionDateTime string  // ISO 8601\n\n  // 9 Typed Sections\n  northStarReminder NorthStarReminder\n  lastSessionRecap LastSessionRecap\n  commitments Commitment[]\n  lifeContext LifeContextItem[]\n  patternIntelligence PatternIntelligence[]\n  suggestedOpeners SuggestedOpener[]\n  privateCoachNotes string\n  betweenSessionIntelligence BetweenSessionEvent[]\n  coacheePreSessionInput CoacheePreSessionInput\n\n  generatedAt string  // ISO 8601\n  status PrepStatus\n}\n\n/// Status of prep document\nenum PrepStatus {\n  DRAFT @alias(\"draft\")\n  READY @alias(\"ready\")\n  VIEWED @alias(\"viewed\")\n}\n\n// -----------------------------------------------------------------------------\n// Section Types\n// -----------------------------------------------------------------------------\n\n/// Client's articulated purpose and direction\nclass NorthStarReminder {\n  values string[]\n  vision string\n  overarchingGoals string[]\n}\n\n/// Recap of previous session\nclass LastSessionRecap {\n  themes string[]\n  breakthroughs string[]\n  emotionalMoments string[]\n  summary string\n  sessionDate string  // ISO 8601\n}\n\n/// A commitment from a previous session\nclass Commitment {\n  id string\n  description string\n  status CommitmentStatus\n  source CommitmentSource\n  sessionId string?\n  createdAt string  // ISO 8601\n}\n\n/// Status of a commitment\nenum CommitmentStatus {\n  COMPLETED @alias(\"completed\")\n  PENDING @alias(\"pending\")\n  PARTIAL @alias(\"partial\")\n  UNKNOWN @alias(\"unknown\")\n}\n\n/// Source of a commitment\nenum CommitmentSource {\n  SESSION @alias(\"session\")\n  BETWEEN_SESSION @alias(\"between_session\")\n}\n\n/// Recent life context item\nclass LifeContextItem {\n  area LifeContextArea\n  summary string\n  source string\n  updatedAt string  // ISO 8601\n}\n\n/// Area of life context\nenum LifeContextArea {\n  WORK @alias(\"work\")\n  RELATIONSHIPS @alias(\"relationships\")\n  HEALTH @alias(\"health\")\n  PERSONAL @alias(\"personal\")\n  OTHER @alias(\"other\")\n}\n\n/// Detected pattern or theme\nclass PatternIntelligence {\n  id string\n  pattern string\n  frequency int\n  trend PatternTrend\n  evidence PatternEvidence[]\n  lastOccurrence string  // ISO 8601\n}\n\n/// Trend direction for patterns\nenum PatternTrend {\n  INCREASING @alias(\"increasing\")\n  STABLE @alias(\"stable\")\n  DECREASING @alias(\"decreasing\")\n}\n\n/// Evidence supporting a pattern\nclass PatternEvidence {\n  sessionId string\n  sessionDate string  // ISO 8601\n  quote string\n  timestamp string?  // Optional timestamp within session\n}\n\n/// AI-generated conversation starter\nclass SuggestedOpener {\n  question string\n  rationale string\n  category OpenerCategory\n}\n\n/// Category of opener question\nenum OpenerCategory {\n  COMMITMENT @alias(\"commitment\")\n  PATTERN @alias(\"pattern\")\n  CONTEXT @alias(\"context\")\n  EXPLORATION @alias(\"exploration\")\n}\n\n/// Event from between sessions\nclass BetweenSessionEvent {\n  id string\n  type BetweenSessionEventType\n  summary string\n  sentiment Sentiment?\n  timestamp string  // ISO 8601\n}\n\n/// Type of between-session event\nenum BetweenSessionEventType {\n  CHECK_IN @alias(\"check_in\")\n  JOURNAL @alias(\"journal\")\n  COMPLETION @alias(\"completion\")\n  CONVERSATION @alias(\"conversation\")\n}\n\n/// Sentiment indicator\nenum Sentiment {\n  POSITIVE @alias(\"positive\")\n  NEUTRAL @alias(\"neutral\")\n  NEGATIVE @alias(\"negative\")\n}\n\n/// Coachee's pre-session input\nclass CoacheePreSessionInput {\n  submitted bool\n  submittedAt string?  // ISO 8601\n  topics string[]?\n  updates string?\n  questions string[]?\n  moodRating int?  // 1-10 scale\n}\n\n// -----------------------------------------------------------------------------\n// PrepTemplate and Section Configuration\n// -----------------------------------------------------------------------------\n\n/// Identifiers for prep sections\nenum PrepSectionId {\n  NORTH_STAR @alias(\"north_star\")\n  LAST_SESSION @alias(\"last_session\")\n  COMMITMENTS @alias(\"commitments\")\n  LIFE_CONTEXT @alias(\"life_context\")\n  PATTERNS @alias(\"patterns\")\n  OPENERS @alias(\"openers\")\n  PRIVATE_NOTES @alias(\"private_notes\")\n  BETWEEN_SESSION @alias(\"between_session\")\n  COACHEE_INPUT @alias(\"coachee_input\")\n}\n\n/// Template for coach's prep preferences\nclass PrepTemplate {\n  id string\n  coachId int\n  name string\n  sectionsEnabled PrepSectionId[]\n  defaultExpanded PrepSectionId[]\n}\n\n// -----------------------------------------------------------------------------\n// Request/Response Types\n// -----------------------------------------------------------------------------\n\n/// Request to generate a prep document\nclass GeneratePrepRequest {\n  sessionId string\n  regenerate bool\n}\n\n/// Request to update private notes\nclass UpdatePrepNotesRequest {\n  privateCoachNotes string\n}\n\n/// Response containing generated prep\nclass PrepResponse {\n  success bool\n  document PrepDocument?\n  error string?\n  warnings string[]\n  generationTimeMs int\n}\n\n/// Lightweight summary for list views\nclass PrepSummary {\n  id string\n  sessionId string\n  clientId int\n  clientName string\n  sessionDateTime string  // ISO 8601\n  status PrepStatus\n  generatedAt string  // ISO 8601\n}\n\n/// List of preps with pagination\nclass PrepList {\n  items PrepSummary[]\n  total int\n  page int\n  pageSize int\n}\n",
    "types/ui-patterns.baml": "// =============================================================================\n// UI Pattern Types\n// =============================================================================\n// Shared types for UI patterns used across the application,\n// including accordion sections and disclosure levels.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Accordion Section\n// -----------------------------------------------------------------------------\n\n/// Accordion section for expandable UI components\nclass AccordionSection {\n  id string\n  title string\n  summary string?\n  level int  // Nesting level (0 = top level)\n  expanded bool\n  children AccordionSection[]?\n}\n\n/// Accordion group configuration\nclass AccordionGroup {\n  id string\n  sections AccordionSection[]\n  allowMultipleExpanded bool\n  defaultExpandedIds string[]\n}\n\n// -----------------------------------------------------------------------------\n// Disclosure Levels\n// -----------------------------------------------------------------------------\n\n/// Level of detail to disclose in UI\nenum DisclosureLevel {\n  SUMMARY @alias(\"summary\")          // Brief overview only\n  HEADINGS @alias(\"headings\")        // Section headers\n  KEY_POINTS @alias(\"key_points\")    // Key points without details\n  FULL_DETAIL @alias(\"full_detail\")  // All content\n  EXACT_QUOTE @alias(\"exact_quote\")  // Include exact quotes\n  TIMESTAMP @alias(\"timestamp\")       // Include timestamps\n}\n\n/// Disclosure configuration\nclass DisclosureConfig {\n  defaultLevel DisclosureLevel\n  allowToggle bool\n  expandByDefault bool\n}\n\n// -----------------------------------------------------------------------------\n// Card Patterns\n// -----------------------------------------------------------------------------\n\n/// Card component data\nclass CardData {\n  id string\n  title string\n  subtitle string?\n  description string?\n  icon string?\n  badge string?\n  badgeVariant BadgeVariant?\n  actions CardAction[]?\n}\n\n/// Card action button\nclass CardAction {\n  id string\n  label string\n  icon string?\n  variant ActionVariant\n  disabled bool?\n}\n\n/// Badge style variants\nenum BadgeVariant {\n  DEFAULT @alias(\"default\")\n  PRIMARY @alias(\"primary\")\n  SECONDARY @alias(\"secondary\")\n  SUCCESS @alias(\"success\")\n  WARNING @alias(\"warning\")\n  DANGER @alias(\"danger\")\n  INFO @alias(\"info\")\n}\n\n/// Action button variants\nenum ActionVariant {\n  PRIMARY @alias(\"primary\")\n  SECONDARY @alias(\"secondary\")\n  GHOST @alias(\"ghost\")\n  LINK @alias(\"link\")\n  DANGER @alias(\"danger\")\n}\n\n// -----------------------------------------------------------------------------\n// List Patterns\n// -----------------------------------------------------------------------------\n\n/// List item data\nclass ListItem {\n  id string\n  primary string\n  secondary string?\n  meta string?\n  avatar string?\n  selected bool?\n  disabled bool?\n}\n\n/// Grouped list data\nclass GroupedList {\n  id string\n  groups ListGroup[]\n}\n\n/// A group within a list\nclass ListGroup {\n  id string\n  title string\n  items ListItem[]\n  collapsible bool?\n  collapsed bool?\n}\n\n// -----------------------------------------------------------------------------\n// Empty State\n// -----------------------------------------------------------------------------\n\n/// Empty state configuration\nclass EmptyState {\n  icon string?\n  title string\n  description string?\n  actionLabel string?\n  actionHref string?\n}\n\n// -----------------------------------------------------------------------------\n// Loading State\n// -----------------------------------------------------------------------------\n\n/// Loading state configuration\nclass LoadingState {\n  message string?\n  showProgress bool?\n  progress int?  // 0-100\n}\n",
    "types/voice-learning-v1.baml": "// =============================================================================\n// Voice Learning v1 Types - LLM-Based Semantic Style Analysis\n// =============================================================================\n// These types support the enhanced Voice Learning system that uses LLM-based\n// semantic analysis to understand coach communication style beyond word-level\n// diff patterns. v1 adds ToneVector computation, StyleAnalysis, and human-readable\n// insights for the style dashboard.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Core v1 Types\n// -----------------------------------------------------------------------------\n\n/// 5-dimensional tone profile for measuring communication style\n/// Each dimension is computed from analyzing correction patterns\nclass ToneVector {\n  warmth float       // -1 (cold/clinical) to 1 (warm/friendly)\n  formality float    // -1 (casual) to 1 (formal)\n  directness float   // -1 (indirect/diplomatic) to 1 (direct/blunt)\n  empathy float      // 0 (low) to 1 (high empathy expression)\n  energy float       // -1 (calm/measured) to 1 (energetic/enthusiastic)\n}\n\n/// LLM-computed style profile aggregated from correction analysis\nclass StyleAnalysis {\n  toneProfile ToneVector\n  sentencePatterns string[]       // Preferred sentence structures (e.g., \"short declarative\", \"question-then-insight\")\n  transitionPhrases string[]      // Connecting language (e.g., \"That said,\", \"Building on that,\")\n  emotionalRegister string        // Overall tone descriptor (e.g., \"warm and encouraging\", \"professionally supportive\")\n  rhetoricalPatterns string[]     // Patterns like questions, affirmations, challenges, reflections\n  confidence float                // 0-1, improves with more correction data\n  sampleCount int                 // Number of corrections analyzed\n  lastUpdated string              // ISO 8601 timestamp\n}\n\n/// Human-readable insight derived from style analysis for dashboard display\nclass StyleInsight {\n  category string                 // tone, structure, vocabulary, rhetoric\n  insight string                  // Human-readable observation (e.g., \"You prefer warmer greetings\")\n  evidence string[]               // Example phrases/corrections supporting this insight\n  confidence float                // 0-1, confidence in this specific insight\n}\n\n// -----------------------------------------------------------------------------\n// Request/Response Types for Style Analysis\n// -----------------------------------------------------------------------------\n\n/// Correction pair for batch analysis\nclass CorrectionPair {\n  originalContent string          // AI-generated content before coach edit\n  editedContent string            // Coach's edited version\n  editType EditType               // Severity of edit\n  coachFeedback CoachFeedback?    // Explicit feedback if provided\n  contentType VoiceContentType?   // Type of content being edited\n  timestamp string                // ISO 8601 timestamp of correction\n}\n\n/// Request for batch style analysis\nclass StyleAnalysisRequest {\n  coachId int\n  correctionPairs CorrectionPair[]\n  existingProfile StyleAnalysis?  // Previous profile to refine\n  includeInsights bool            // Whether to generate human-readable insights\n}\n\n/// Response from style analysis\nclass StyleAnalysisResponse {\n  styleProfile StyleAnalysis\n  insights StyleInsight[]?        // Human-readable insights if requested\n  voiceMatchConfidence float      // Estimated content match rate after this analysis\n  improvementSuggestions string[] // Suggestions for better voice matching\n}\n\n// -----------------------------------------------------------------------------\n// Extended Voice Profile (v1)\n// -----------------------------------------------------------------------------\n\n/// Extended voice profile with v1 style analysis\n/// Extends the base VoiceProfile with LLM-computed style data\nclass VoiceProfileV1 {\n  coachId int\n  voiceConfidence float           // Overall voice matching confidence 0-1\n  totalCorrections int\n  vocabularyPatterns string[]     // v0: word-level patterns\n  avoidPatterns string[]          // v0: words/phrases to avoid\n  tonePreferences TonePreference[] // v0: explicit tone preferences\n  recentEdits VoiceCorrection[]   // Recent corrections for context\n  lastTrainedAt string?           // When v0 patterns were last updated\n\n  // v1 additions\n  styleAnalysis StyleAnalysis?    // LLM-computed style profile\n  styleInsights StyleInsight[]?   // Human-readable insights\n  analysisVersion string          // Version of analysis algorithm (e.g., \"v1.0\")\n  lastAnalyzedAt string?          // When style analysis was last run\n}\n\n// -----------------------------------------------------------------------------\n// Voice Matching Types\n// -----------------------------------------------------------------------------\n\n/// Result of scoring content against voice profile\nclass VoiceMatchResult {\n  overallScore float              // 0-1 composite score\n  toneScore float                 // How well tone matches profile\n  structureScore float            // How well sentence structure matches\n  vocabularyScore float           // How well vocabulary matches\n  breakdown map<string, float>    // Detailed dimension scores\n  suggestions string[]            // Specific suggestions for improvement\n}\n\n/// Coach's manual style tuning adjustments\nclass StyleTuning {\n  toneAdjustments ToneVector?     // Manual tone preference adjustments\n  addPhrases string[]             // Phrases coach wants system to use more\n  removePhrases string[]          // Phrases coach wants system to avoid\n  notes string?                   // Coach's notes on their style preferences\n}\n\n// -----------------------------------------------------------------------------\n// Dashboard Data Types\n// -----------------------------------------------------------------------------\n\n/// Data for the style analysis dashboard\nclass StyleDashboardData {\n  profile VoiceProfileV1\n  trendData StyleTrendPoint[]     // Historical confidence/correction data\n  topInsights StyleInsight[]      // Most significant insights (top 5)\n  recentCorrections VoiceCorrection[] // Recent corrections for review\n  improvementAreas string[]       // Areas where voice matching can improve\n}\n\n/// Single data point for style trend chart\nclass StyleTrendPoint {\n  date string                     // ISO 8601 date\n  voiceConfidence float           // Confidence at this point\n  correctionsCount int            // Corrections submitted that day\n  avgMatchScore float?            // Average voice match score if available\n}\n\n// -----------------------------------------------------------------------------\n// BAML Function Definitions\n// -----------------------------------------------------------------------------\n\n/// Analyze correction pairs to compute style profile\nfunction AnalyzeStyleFromCorrections(request: StyleAnalysisRequest) -> StyleAnalysisResponse {\n  client Claude\n  prompt #\"\n    Analyze these writing corrections to understand the coach's unique communication style.\n\n    For each correction pair, identify:\n    1. Tone adjustments (warmer/cooler, formal/casual, direct/indirect)\n    2. Sentence structure preferences (length, complexity, rhythm)\n    3. Rhetorical patterns (questions, affirmations, challenges, reflections)\n    4. Emotional register (empathy level, energy level)\n    5. Specific phrases added/removed and the underlying preference\n\n    {{ _.role(\"user\") }}\n    Correction pairs to analyze:\n    {% for pair in request.correctionPairs %}\n    ---\n    Original: {{ pair.originalContent }}\n    Edited: {{ pair.editedContent }}\n    Edit type: {{ pair.editType }}\n    {% if pair.coachFeedback %}Feedback: {{ pair.coachFeedback }}{% endif %}\n    ---\n    {% endfor %}\n\n    {% if request.existingProfile %}\n    Previous style profile to refine:\n    {{ request.existingProfile }}\n    {% endif %}\n\n    Return a comprehensive StyleAnalysisResponse with:\n    - Updated tone profile with 5 dimensions (-1 to 1 or 0 to 1)\n    - Common sentence patterns observed\n    - Transition phrases the coach prefers\n    - Overall emotional register description\n    - Rhetorical patterns used\n    - Confidence level based on sample size\n    {% if request.includeInsights %}- Human-readable insights with evidence{% endif %}\n  \"#\n}\n\n/// Score content against voice profile\nfunction ScoreVoiceMatch(content: string, profile: VoiceProfileV1) -> VoiceMatchResult {\n  client Claude\n  prompt #\"\n    Score how well this content matches the coach's voice profile.\n\n    {{ _.role(\"user\") }}\n    Content to score:\n    {{ content }}\n\n    Voice profile:\n    - Tone: {{ profile.styleAnalysis.toneProfile }}\n    - Sentence patterns: {{ profile.styleAnalysis.sentencePatterns }}\n    - Transition phrases: {{ profile.styleAnalysis.transitionPhrases }}\n    - Emotional register: {{ profile.styleAnalysis.emotionalRegister }}\n    - Vocabulary to use: {{ profile.vocabularyPatterns }}\n    - Vocabulary to avoid: {{ profile.avoidPatterns }}\n\n    Provide:\n    1. Overall score 0-1\n    2. Tone match score\n    3. Structure match score\n    4. Vocabulary match score\n    5. Detailed breakdown\n    6. Specific suggestions for improvement\n  \"#\n}\n\n/// Generate style insights from profile for dashboard\nfunction GenerateStyleInsights(profile: VoiceProfileV1) -> StyleInsight[] {\n  client Claude\n  prompt #\"\n    Generate human-readable insights about this coach's writing style.\n\n    {{ _.role(\"user\") }}\n    Voice profile data:\n    - Tone profile: {{ profile.styleAnalysis.toneProfile }}\n    - Sentence patterns: {{ profile.styleAnalysis.sentencePatterns }}\n    - Rhetorical patterns: {{ profile.styleAnalysis.rhetoricalPatterns }}\n    - Vocabulary preferences: {{ profile.vocabularyPatterns }}\n    - Avoid patterns: {{ profile.avoidPatterns }}\n    - Total corrections: {{ profile.totalCorrections }}\n\n    Generate 3-5 actionable insights that help the coach understand what the system\n    has learned about their style. Each insight should:\n    - Be clear and specific\n    - Include evidence from the data\n    - Have a confidence level\n    - Be categorized (tone, structure, vocabulary, rhetoric)\n  \"#\n}\n",
}

def get_baml_files():
    return _file_map