# ----------------------------------------------------------------------------
#
#  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 = {

    "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/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 int?\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 int?\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[]\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}\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  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 int\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/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  // 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 int\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 int\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",
    "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// -----------------------------------------------------------------------------\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// Session Notes Types - Post-Session Documentation\n// =============================================================================\n// These types define the session notes structure generated after coaching\n// sessions. The document is organized into 6 sections following the coaching\n// methodology: Recap, Observations, Inquiries, Invitations, Resources, Next.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Session Note Section Enum\n// -----------------------------------------------------------------------------\n\n/// The 6 sections of session notes following ROIIRN methodology\nenum SessionNoteSection {\n  RECAP @alias(\"recap\")              // What happened in the session\n  OBSERVATIONS @alias(\"observations\") // Coach's observations about the client\n  INQUIRIES @alias(\"inquiries\")       // Powerful questions explored\n  INVITATIONS @alias(\"invitations\")   // Invitations/challenges given to client\n  RESOURCES @alias(\"resources\")       // Resources shared or referenced\n  NEXT @alias(\"next\")                 // Next steps and action items\n}\n\n// -----------------------------------------------------------------------------\n// Session Note Content Types\n// -----------------------------------------------------------------------------\n\n/// Content for a single session note section\nclass SessionSectionContent {\n  section SessionNoteSection\n  title string\n  content string  // Rich text / markdown content\n  bulletPoints string[]  // Key points as list\n  aiGenerated bool  // Whether AI generated or coach wrote\n  coachEdited bool  // Whether coach modified AI content\n  lastEditedAt string?  // ISO 8601\n}\n\n/// Full session notes document\nclass SessionNotesDocument {\n  id string\n  sessionId int\n  clientId int\n  clientName string\n  sessionDate string  // ISO 8601 - when session occurred\n  sessionDuration int  // minutes\n  sections SessionSectionContent[]\n  summary string  // Brief overall session summary\n  keyInsights string[]  // Top insights from the session\n  followUpDate string?  // ISO 8601 - suggested follow-up date\n  generatedAt string  // ISO 8601\n  lastUpdatedAt string  // ISO 8601\n  status SessionNotesStatus\n  version int  // Document version for tracking edits\n}\n\n/// Status of session notes document\nenum SessionNotesStatus {\n  DRAFT @alias(\"draft\")           // AI generated, not reviewed\n  IN_REVIEW @alias(\"in_review\")   // Coach is reviewing/editing\n  FINALIZED @alias(\"finalized\")   // Coach has approved\n  SHARED @alias(\"shared\")         // Shared with coachee (if applicable)\n}\n\n// -----------------------------------------------------------------------------\n// Session Notes Request/Response Types\n// -----------------------------------------------------------------------------\n\n/// Request to generate session notes\nclass SessionNotesRequest {\n  sessionId int\n  clientId int\n  transcript string?  // Optional transcript if available\n  coachRunningNotes string?  // Coach's in-session notes\n  includeSections SessionNoteSection[]  // Empty = all sections\n  regenerate bool  // Force regeneration even if exists\n}\n\n/// Response containing generated session notes\nclass SessionNotesResponse {\n  success bool\n  document SessionNotesDocument?\n  error string?\n  warnings string[]  // e.g., \"Transcript quality was low\"\n  generationTimeMs int\n}\n\n/// Request to update a specific section\nclass SessionSectionUpdateRequest {\n  notesId string\n  section SessionNoteSection\n  content string?\n  bulletPoints string[]\n  markAsEdited bool  // Should mark this section as coach-edited\n}\n\n/// Response from section update\nclass SessionSectionUpdateResponse {\n  success bool\n  updatedSection SessionSectionContent?\n  error string?\n}\n\n/// Request to finalize/approve session notes\nclass SessionNotesFinalizeRequest {\n  notesId string\n  shareWithCoachee bool  // Whether to share with the client\n  personalizedMessage string?  // Optional message when sharing\n}\n\n/// Response from finalizing notes\nclass SessionNotesFinalizeResponse {\n  success bool\n  status SessionNotesStatus\n  sharedAt string?  // ISO 8601, if shared\n  error string?\n}\n\n// -----------------------------------------------------------------------------\n// Session Notes Summary Types\n// -----------------------------------------------------------------------------\n\n/// Lightweight summary for list views\nclass SessionNotesSummary {\n  id string\n  sessionId int\n  clientId int\n  clientName string\n  sessionDate string  // ISO 8601\n  status SessionNotesStatus\n  completedSections int\n  totalSections int\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 Types - Pre-Session Preparation Document\n// =============================================================================\n// These types define the T-15 (15 minutes before session) prep document\n// structure that helps coaches prepare for upcoming coaching sessions.\n// The document is organized into 9 sections for comprehensive preparation.\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// T-15 Prep Section Enum\n// -----------------------------------------------------------------------------\n\n/// The 9 sections of a T-15 prep document (matches backend spec)\nenum T15PrepSection {\n  NORTH_STAR_REMINDER @alias(\"north_star_reminder\")         // Client's articulated purpose\n  LAST_SESSION_RECAP @alias(\"last_session_recap\")           // Recap of previous session\n  COMMITMENTS_TO_CHECK @alias(\"commitments_to_check\")       // Commitments from last session\n  LIFE_CONTEXT @alias(\"life_context\")                       // Recent life events, updates\n  PATTERN_INTELLIGENCE @alias(\"pattern_intelligence\")       // Detected patterns and themes\n  SUGGESTED_OPENERS @alias(\"suggested_openers\")             // AI-generated conversation starters\n  PRIVATE_COACH_NOTES @alias(\"private_coach_notes\")         // Coach's private notes (manual)\n  BETWEEN_SESSION_INTELLIGENCE @alias(\"between_session_intelligence\")  // Summary of coachee-AI convos\n  COACHEE_PRE_SESSION_INPUT @alias(\"coachee_pre_session_input\")       // Coachee's pre-session input\n}\n\n// -----------------------------------------------------------------------------\n// T-15 Prep Content Types\n// -----------------------------------------------------------------------------\n\n/// Content for a single T-15 section\nclass T15SectionContent {\n  section T15PrepSection\n  title string\n  content string  // Rich text / markdown content\n  bulletPoints string[]  // Key points as list\n  priority int  // 1-5, higher = more important\n  aiConfidence float  // 0-1, AI's confidence in this section\n}\n\n/// Full T-15 prep document\nclass T15PrepDocument {\n  id string\n  sessionId int\n  clientId int\n  clientName string\n  scheduledAt string  // ISO 8601 - session start time\n  sections T15SectionContent[]\n  overallReadiness string  // AI assessment of session readiness\n  generatedAt string  // ISO 8601\n  lastUpdatedAt string  // ISO 8601\n  version int  // Document version for regeneration tracking\n}\n\n// -----------------------------------------------------------------------------\n// T-15 Prep Request/Response Types\n// -----------------------------------------------------------------------------\n\n/// Request to generate a T-15 prep document\nclass T15PrepRequest {\n  sessionId int\n  clientId int\n  includeSections T15PrepSection[]  // Empty = all sections\n  regenerate bool  // Force regeneration even if exists\n  focusAreas string[]  // Optional coach-specified focus areas\n}\n\n/// Response containing generated T-15 prep\nclass T15PrepResponse {\n  success bool\n  document T15PrepDocument?\n  error string?\n  warnings string[]  // e.g., \"Limited data for observations section\"\n  generationTimeMs int\n}\n\n/// Request to update a specific section\nclass T15SectionUpdateRequest {\n  prepId string\n  section T15PrepSection\n  content string?\n  bulletPoints string[]\n  coachNotes string?  // Coach's additions/modifications\n}\n\n/// Response from section update\nclass T15SectionUpdateResponse {\n  success bool\n  updatedSection T15SectionContent?\n  error string?\n}\n\n// -----------------------------------------------------------------------------\n// T-15 Prep Summary Types\n// -----------------------------------------------------------------------------\n\n/// Lightweight summary for list views\nclass T15PrepSummary {\n  id string\n  sessionId int\n  clientId int\n  clientName string\n  scheduledAt string  // ISO 8601\n  generatedAt string  // ISO 8601\n  completedSections int\n  totalSections int\n  overallReadiness string\n}\n\n/// List of T-15 preps with pagination\nclass T15PrepList {\n  items T15PrepSummary[]\n  total int\n  page int\n  pageSize int\n}\n",
}

def get_baml_files():
    return _file_map