@edvak99/voice-receptionist-widget 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +1 -0
  2. package/fesm2022/{edvak99-voice-receptionist-widget-analytics-page.component-CoVjr5Y3.mjs → edvak99-voice-receptionist-widget-analytics-page.component-CW5OKmik.mjs} +2 -2
  3. package/fesm2022/{edvak99-voice-receptionist-widget-analytics-page.component-CoVjr5Y3.mjs.map → edvak99-voice-receptionist-widget-analytics-page.component-CW5OKmik.mjs.map} +1 -1
  4. package/fesm2022/{edvak99-voice-receptionist-widget-audit-page.component-ou9oxnJp.mjs → edvak99-voice-receptionist-widget-audit-page.component-DL1GfQyF.mjs} +2 -2
  5. package/fesm2022/{edvak99-voice-receptionist-widget-audit-page.component-ou9oxnJp.mjs.map → edvak99-voice-receptionist-widget-audit-page.component-DL1GfQyF.mjs.map} +1 -1
  6. package/fesm2022/{edvak99-voice-receptionist-widget-call-history-detail-page.component-BV7KOhd9.mjs → edvak99-voice-receptionist-widget-call-history-detail-page.component-CTwfUHUf.mjs} +4 -4
  7. package/fesm2022/{edvak99-voice-receptionist-widget-call-history-detail-page.component-BV7KOhd9.mjs.map → edvak99-voice-receptionist-widget-call-history-detail-page.component-CTwfUHUf.mjs.map} +1 -1
  8. package/fesm2022/{edvak99-voice-receptionist-widget-call-history-page.component-CWWma-6r.mjs → edvak99-voice-receptionist-widget-call-history-page.component-Cj4wxd4e.mjs} +3 -3
  9. package/fesm2022/{edvak99-voice-receptionist-widget-call-history-page.component-CWWma-6r.mjs.map → edvak99-voice-receptionist-widget-call-history-page.component-Cj4wxd4e.mjs.map} +1 -1
  10. package/fesm2022/{edvak99-voice-receptionist-widget-call-recording-player.component-B2IuwsVH.mjs → edvak99-voice-receptionist-widget-call-recording-player.component-AN6GcSDq.mjs} +2 -2
  11. package/fesm2022/{edvak99-voice-receptionist-widget-call-recording-player.component-B2IuwsVH.mjs.map → edvak99-voice-receptionist-widget-call-recording-player.component-AN6GcSDq.mjs.map} +1 -1
  12. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-D-GutOar.mjs → edvak99-voice-receptionist-widget-call-review.service-Cy_Bf7AO.mjs} +2 -2
  13. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-D-GutOar.mjs.map → edvak99-voice-receptionist-widget-call-review.service-Cy_Bf7AO.mjs.map} +1 -1
  14. package/fesm2022/{edvak99-voice-receptionist-widget-dashboard-page.component-B93giErR.mjs → edvak99-voice-receptionist-widget-dashboard-page.component-DzdIt2A7.mjs} +4 -4
  15. package/fesm2022/{edvak99-voice-receptionist-widget-dashboard-page.component-B93giErR.mjs.map → edvak99-voice-receptionist-widget-dashboard-page.component-DzdIt2A7.mjs.map} +1 -1
  16. package/fesm2022/{edvak99-voice-receptionist-widget-eds-elapsed.pipe-BrMNsxB5.mjs → edvak99-voice-receptionist-widget-eds-elapsed.pipe-ouRlPpwT.mjs} +2 -2
  17. package/fesm2022/{edvak99-voice-receptionist-widget-eds-elapsed.pipe-BrMNsxB5.mjs.map → edvak99-voice-receptionist-widget-eds-elapsed.pipe-ouRlPpwT.mjs.map} +1 -1
  18. package/fesm2022/{edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-DClMfxeY.mjs → edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs} +35 -44
  19. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs.map +1 -0
  20. package/fesm2022/{edvak99-voice-receptionist-widget-knowledge-hub.page-BNsM-o3z.mjs → edvak99-voice-receptionist-widget-knowledge-hub.page-cZqBuull.mjs} +2 -2
  21. package/fesm2022/{edvak99-voice-receptionist-widget-knowledge-hub.page-BNsM-o3z.mjs.map → edvak99-voice-receptionist-widget-knowledge-hub.page-cZqBuull.mjs.map} +1 -1
  22. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-list.service-C2UZJ5wF.mjs → edvak99-voice-receptionist-widget-live-calls-list.service-CDtFRW8w.mjs} +3 -3
  23. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-list.service-C2UZJ5wF.mjs.map → edvak99-voice-receptionist-widget-live-calls-list.service-CDtFRW8w.mjs.map} +1 -1
  24. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-page.component-DQTVJjsP.mjs → edvak99-voice-receptionist-widget-live-calls-page.component-DrYzXJQW.mjs} +4 -4
  25. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-page.component-DQTVJjsP.mjs.map → edvak99-voice-receptionist-widget-live-calls-page.component-DrYzXJQW.mjs.map} +1 -1
  26. package/fesm2022/{edvak99-voice-receptionist-widget-live-monitor-page.component-C3iTtVdn.mjs → edvak99-voice-receptionist-widget-live-monitor-page.component-D7dlk0y2.mjs} +4 -4
  27. package/fesm2022/{edvak99-voice-receptionist-widget-live-monitor-page.component-C3iTtVdn.mjs.map → edvak99-voice-receptionist-widget-live-monitor-page.component-D7dlk0y2.mjs.map} +1 -1
  28. package/fesm2022/{edvak99-voice-receptionist-widget-outbound-purposes-page.component-C10N-x5g.mjs → edvak99-voice-receptionist-widget-outbound-purposes-page.component-CJ8NEjcj.mjs} +2 -2
  29. package/fesm2022/{edvak99-voice-receptionist-widget-outbound-purposes-page.component-C10N-x5g.mjs.map → edvak99-voice-receptionist-widget-outbound-purposes-page.component-CJ8NEjcj.mjs.map} +1 -1
  30. package/fesm2022/{edvak99-voice-receptionist-widget-settings-page.component-BBE_H2jb.mjs → edvak99-voice-receptionist-widget-settings-page.component-Bo3XNK3b.mjs} +2 -2
  31. package/fesm2022/{edvak99-voice-receptionist-widget-settings-page.component-BBE_H2jb.mjs.map → edvak99-voice-receptionist-widget-settings-page.component-Bo3XNK3b.mjs.map} +1 -1
  32. package/fesm2022/{edvak99-voice-receptionist-widget-tasks-page.component-COnYcaMT.mjs → edvak99-voice-receptionist-widget-tasks-page.component-CBwl15NP.mjs} +2 -2
  33. package/fesm2022/{edvak99-voice-receptionist-widget-tasks-page.component-COnYcaMT.mjs.map → edvak99-voice-receptionist-widget-tasks-page.component-CBwl15NP.mjs.map} +1 -1
  34. package/fesm2022/{edvak99-voice-receptionist-widget-wizard-page.component-Box7X-Cq.mjs → edvak99-voice-receptionist-widget-wizard-page.component-CJLa5pia.mjs} +2 -2
  35. package/fesm2022/{edvak99-voice-receptionist-widget-wizard-page.component-Box7X-Cq.mjs.map → edvak99-voice-receptionist-widget-wizard-page.component-CJLa5pia.mjs.map} +1 -1
  36. package/fesm2022/edvak99-voice-receptionist-widget.mjs +1 -1
  37. package/lib/config.d.ts +5 -0
  38. package/lib/layout/eds-app-shell.component.d.ts +2 -0
  39. package/package.json +1 -1
  40. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-DClMfxeY.mjs.map +0 -1
  41. package/lib/layout/eds-app-rail.component.d.ts +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs","sources":["../../../projects/voice-receptionist-widget/src/lib/config.ts","../../../projects/voice-receptionist-widget/src/lib/provide-voice-receptionist.ts","../../../projects/voice-receptionist-widget/src/lib/shared/toast.service.ts","../../../projects/voice-receptionist-widget/src/lib/shared/toast-container.component.ts","../../../projects/voice-receptionist-widget/src/lib/shared/toast-container.component.html","../../../projects/voice-receptionist-widget/src/lib/api-paths.ts","../../../projects/voice-receptionist-widget/src/lib/extract-api-rows.ts","../../../projects/voice-receptionist-widget/src/lib/utils/welcome-message.util.ts","../../../projects/voice-receptionist-widget/src/lib/utils/tool-labels.util.ts","../../../projects/voice-receptionist-widget/src/lib/services/ai-receptionist-api.mappers.ts","../../../projects/voice-receptionist-widget/src/lib/mocks/api-log.seed.ts","../../../projects/voice-receptionist-widget/src/lib/mocks/seed-data.ts","../../../projects/voice-receptionist-widget/src/lib/mocks/outbound-purpose.seed.ts","../../../projects/voice-receptionist-widget/src/lib/services/ai-receptionist-api.mock.ts","../../../projects/voice-receptionist-widget/src/lib/services/ai-receptionist-api.service.ts","../../../projects/voice-receptionist-widget/src/lib/services/agent-online.service.ts","../../../projects/voice-receptionist-widget/src/lib/ui/eds-icon.component.ts","../../../projects/voice-receptionist-widget/src/lib/ui/eds-pulse-dot.component.ts","../../../projects/voice-receptionist-widget/src/lib/layout/eds-module-nav.component.ts","../../../projects/voice-receptionist-widget/src/lib/layout/eds-module-nav.component.html","../../../projects/voice-receptionist-widget/src/lib/shared/modal.component.ts","../../../projects/voice-receptionist-widget/src/lib/shared/modal.component.html","../../../projects/voice-receptionist-widget/src/lib/ui/eds-button.component.ts","../../../projects/voice-receptionist-widget/src/lib/layout/eds-topbar.component.ts","../../../projects/voice-receptionist-widget/src/lib/layout/eds-topbar.component.html","../../../projects/voice-receptionist-widget/src/lib/layout/eds-app-shell.component.ts","../../../projects/voice-receptionist-widget/src/lib/layout/eds-app-shell.component.html","../../../projects/voice-receptionist-widget/src/lib/routes.ts","../../../projects/voice-receptionist-widget/src/lib/ui/eds-badge.component.ts","../../../projects/voice-receptionist-widget/src/public-api.ts","../../../projects/voice-receptionist-widget/src/edvak99-voice-receptionist-widget.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\n\n/** Host-provided session for topbar / admin-only nav. */\nexport interface VoiceReceptionistSession {\n /** Current user email for display. */\n readonly email: Signal<string | null>;\n isAdmin(): boolean;\n logout(): void;\n}\n\nexport interface VoiceReceptionistConfig {\n /** Backend base URL (no trailing slash), e.g. https://api.example.com */\n apiBaseUrl: string;\n /** Use in-memory mock API (local demos). Default false. */\n useMockApi?: boolean;\n callLogsLimit?: number;\n liveCallsPollIntervalMs?: number;\n /**\n * Show Practice nav links (patients / providers / appointments / admin).\n * Enable in the standalone Voice Hub host; leave false for EHR embed.\n */\n includePracticeNav?: boolean;\n /**\n * Show the AI Receptionist side nav (Dashboard, Live Calls, …).\n * Default false for EHR embed (host owns primary nav). Standalone Voice Hub should set true.\n */\n showModuleNav?: boolean;\n}\n\nexport const VOICE_RECEPTIONIST_CONFIG = new InjectionToken<VoiceReceptionistConfig>(\n 'VOICE_RECEPTIONIST_CONFIG',\n);\n\nexport const VOICE_RECEPTIONIST_SESSION = new InjectionToken<VoiceReceptionistSession | null>(\n 'VOICE_RECEPTIONIST_SESSION',\n { factory: () => null },\n);\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport {\n VOICE_RECEPTIONIST_CONFIG,\n VOICE_RECEPTIONIST_SESSION,\n VoiceReceptionistConfig,\n VoiceReceptionistSession,\n} from './config';\n\nexport interface ProvideVoiceReceptionistOptions extends VoiceReceptionistConfig {\n session?: VoiceReceptionistSession | null;\n}\n\nexport function provideVoiceReceptionist(\n options: ProvideVoiceReceptionistOptions,\n): EnvironmentProviders {\n const { session = null, ...config } = options;\n return makeEnvironmentProviders([\n { provide: VOICE_RECEPTIONIST_CONFIG, useValue: config },\n { provide: VOICE_RECEPTIONIST_SESSION, useValue: session },\n ]);\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface ToastMessage {\n id: number;\n text: string;\n variant: 'info' | 'success' | 'error';\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private nextId = 1;\n private timers = new Map<number, ReturnType<typeof setTimeout>>();\n\n private readonly _toasts = signal<ToastMessage[]>([]);\n readonly toasts = this._toasts.asReadonly();\n\n show(text: string, variant: ToastMessage['variant'] = 'info', durationMs = 3500): void {\n const id = this.nextId++;\n this._toasts.update((list) => [...list, { id, text, variant }]);\n const timer = setTimeout(() => this.dismiss(id), durationMs);\n this.timers.set(id, timer);\n }\n\n dismiss(id: number): void {\n const timer = this.timers.get(id);\n if (timer) {\n clearTimeout(timer);\n this.timers.delete(id);\n }\n this._toasts.update((list) => list.filter((t) => t.id !== id));\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { ToastService } from './toast.service';\n\n@Component({\n selector: 'app-toast-container',\n standalone: true,\n templateUrl: './toast-container.component.html',\n styleUrl: './toast-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastContainerComponent {\n protected readonly toastService = inject(ToastService);\n}\n","<div class=\"toast-stack\" aria-live=\"polite\" aria-atomic=\"false\">\n @for (toast of toastService.toasts(); track toast.id) {\n <div class=\"toast\" [class]=\"'toast-' + toast.variant\" role=\"status\">\n <span class=\"toast-icon\" aria-hidden=\"true\">\n @switch (toast.variant) {\n @case ('success') {\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n }\n @case ('error') {\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n </svg>\n }\n @default {\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n </svg>\n }\n }\n </span>\n <span class=\"toast-text\">{{ toast.text }}</span>\n <button\n type=\"button\"\n class=\"toast-dismiss\"\n (click)=\"toastService.dismiss(toast.id)\"\n aria-label=\"Dismiss notification\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n }\n</div>\n","import { VoiceReceptionistConfig } from './config';\n\nexport interface VoiceReceptionistPaths {\n apiRoot(): string;\n authPath(suffix?: string): string;\n v1Path(suffix?: string): string;\n apiPath(suffix?: string): string;\n aiReceptionistPath(suffix?: string): string;\n healthPath(suffix?: string): string;\n}\n\n/** Build URL helpers from a config (or raw base URL). Safe outside injection context. */\nexport function createVoiceReceptionistPaths(\n configOrBase: VoiceReceptionistConfig | string,\n): VoiceReceptionistPaths {\n const base =\n typeof configOrBase === 'string' ? configOrBase : configOrBase.apiBaseUrl;\n const root = base.replace(/\\/$/, '');\n\n return {\n apiRoot: () => root,\n authPath: (suffix = '') => `${root}/api/auth${suffix}`,\n v1Path: (suffix = '') => `${root}/api/v1${suffix}`,\n apiPath: (suffix = '') => `${root}/api${suffix}`,\n aiReceptionistPath: (suffix = '') => `${root}/api/ai-receptionist${suffix}`,\n healthPath: (suffix = '') => `${root}/health${suffix}`,\n };\n}\n","/** Normalize list/detail API payloads into a row array. */\nexport function extractApiRows(body: unknown): unknown[] {\n if (Array.isArray(body)) return body;\n if (!body || typeof body !== 'object') return [];\n const o = body as Record<string, unknown>;\n const list = o['items'] ?? o['patients'] ?? o['appointments'] ?? o['providers'] ?? o['data'];\n if (Array.isArray(list)) return list;\n if (o['patientId'] || o['patient_id'] || o['appointmentId'] || o['appointment_id']) {\n return [body];\n }\n return [];\n}\n","import { AgentSettings } from '../models/ai-receptionist.types';\n\nexport const WELCOME_MESSAGE_MAX = 500;\n\nexport function buildAutoWelcomeTemplate(practiceName: string, agentName: string): string {\n const practice = practiceName.trim() || 'our office';\n const agent = agentName.trim() || 'your AI receptionist';\n return `Hi, thanks for calling ${practice}. This is ${agent}. How can I help you today?`;\n}\n\nexport function resolveWelcomePreview(\n welcomeMessage: string | undefined,\n practiceName: string,\n agentName: string,\n): string {\n const custom = welcomeMessage?.trim();\n if (custom) return custom;\n return buildAutoWelcomeTemplate(practiceName, agentName);\n}\n\nexport function computeEffectiveWelcomeMessage(settings: Pick<AgentSettings, 'general'>): string {\n const general = settings.general;\n const custom = String(general['welcomeMessage'] ?? '').trim();\n if (custom) return custom;\n return buildAutoWelcomeTemplate(\n String(general['practiceName'] ?? ''),\n String(general['agentName'] ?? ''),\n );\n}\n","/** V3 agent tool labels — mirrors GET /api/agent-tools/catalog */\nexport const AGENT_TOOL_LABELS: Record<string, string> = {\n find_doctors: 'Found Doctors',\n check_doctor_availability: 'Checked Doctor Availability',\n list_visit_types: 'Listed Visit Types',\n search_patients: 'Searched Patients',\n search_practice_faq: 'Searched Practice FAQ',\n book_existing_appointment: 'Booked Appointment',\n register_and_book_appointment: 'Registered & Booked Appointment',\n submit_medication_refill: 'Submitted Medication Refill',\n};\n\nfunction looksLikeToolKey(value: string): boolean {\n return /^[a-z][a-z0-9_]*$/.test(value.trim());\n}\n\nfunction humanizeToolKey(key: string): string {\n return key\n .replace(/^tool_/, '')\n .split('_')\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n\n/** Prefer API `name`; fall back to catalog label or a readable key. */\nexport function resolveToolDisplayName(key: string | undefined, name: string): string {\n const trimmed = name?.trim() ?? '';\n if (trimmed && !looksLikeToolKey(trimmed)) return trimmed;\n\n const lookupKey = key?.trim() || (looksLikeToolKey(trimmed) ? trimmed : '');\n if (lookupKey && AGENT_TOOL_LABELS[lookupKey]) return AGENT_TOOL_LABELS[lookupKey];\n\n if (lookupKey) return humanizeToolKey(lookupKey);\n return trimmed || 'Tool activity';\n}\n\n/** Derive tool key from legacy `tech` values like `tool_check_doctor_availability`. */\nexport function inferToolKeyFromTech(tech: string): string | undefined {\n const trimmed = tech?.trim();\n if (!trimmed) return undefined;\n if (trimmed.startsWith('tool_')) return trimmed.slice(5);\n if (looksLikeToolKey(trimmed)) return trimmed;\n return undefined;\n}\n\nexport function resolveToolKey(\n key: string | undefined,\n name: string,\n tech: string,\n): string | undefined {\n const explicit = key?.trim();\n if (explicit) return explicit;\n if (looksLikeToolKey(name)) return name.trim();\n return inferToolKeyFromTech(tech);\n}\n\n/** Stable @for track key — avoid ?? in template track expressions (Angular compiler bug). */\nexport function toolEventTrackKey(\n tool: { key?: string; t: string; tech: string; name: string },\n index: number,\n): string {\n return `${tool.key ?? ''}|${tool.t}|${tool.tech}|${tool.name}|${index}`;\n}\n","import {\n AgentSettings,\n AiCreatedAppointment,\n AiReceptionistStatus,\n AnalyticsData,\n AnalyticsPeakSeries,\n AnalyticsVolumeSeries,\n AttentionItem,\n AuditEvent,\n CallStatus,\n DashboardData,\n HistoryCall,\n HistoryDetail,\n LiveCall,\n LocationOption,\n ProviderOption,\n Sentiment,\n SetupData,\n TaskItem,\n CreateTaskRequest,\n TaskFilters,\n ToolEvent,\n TranscriptLine,\n Verification,\n CallRecordingMeta,\n CallRecordingStatus,\n RegenerateSummaryResult,\n} from '../models/ai-receptionist.types';\nimport {\n AnalyticsDto,\n AiCreatedAppointmentDto,\n AnalyticsPeakSeriesDto,\n AnalyticsVolumeSeriesDto,\n AttentionItemDto,\n AuditEventDto,\n DashboardSummaryDto,\n HistoryCallDto,\n HistoryDetailDto,\n HistoryListDto,\n LiveCallDto,\n LiveTranscriptLineDto,\n SetupDto,\n TaskDto,\n CreateTaskDto,\n AiStatusDto,\n RecordingDto,\n RegenerateSummaryResponseDto,\n} from '../models/api-dto.types';\nimport { computeEffectiveWelcomeMessage } from '../utils/welcome-message.util';\nimport { resolveToolDisplayName, resolveToolKey } from '../utils/tool-labels.util';\n\nconst TONE_COLORS: Record<string, string> = {\n brand: '#3681F4',\n pos: '#0ABF52',\n notice: '#FFB900',\n neg: '#F03740',\n violet: '#8E51FF',\n gray: '#71717A',\n};\n\nconst DAY_LABELS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\nexport function parseDurToSeconds(dur: string): number {\n if (!dur) return 0;\n const parts = dur.split(':').map((p) => Number(p.trim()));\n if (parts.some((n) => !Number.isFinite(n))) return 0;\n if (parts.length === 2) return parts[0] * 60 + parts[1];\n if (parts.length === 3) return parts[0] * 3600 + parts[1] * 60 + parts[2];\n return 0;\n}\n\nexport function parsePercent(value: string): number {\n const n = Number(String(value).replace('%', '').trim());\n return Number.isFinite(n) ? n : 0;\n}\n\nfunction normalizeConfidence(value: number): number {\n if (value <= 1) return Math.round(value * 100);\n return Math.round(value);\n}\n\nfunction mapVerification(raw: string): Verification {\n const v = raw?.toLowerCase();\n if (v === 'verified' || v === 'partial' || v === 'failed' || v === 'unknown') return v;\n return 'unknown';\n}\n\nfunction mapCallStatus(raw: string): CallStatus {\n const s = String(raw ?? 'ai').toLowerCase().replace(/_/g, '-');\n const allowed: CallStatus[] = [\n 'ai',\n 'needs-help',\n 'human-requested',\n 'urgent',\n 'takeover',\n 'transferring',\n ];\n return allowed.includes(s as CallStatus) ? (s as CallStatus) : 'ai';\n}\n\nfunction mapSentiment(raw: string): Sentiment {\n const s = String(raw ?? 'neutral').toLowerCase();\n if (s === 'calm' || s === 'neutral' || s === 'frustrated' || s === 'urgent') return s;\n return 'neutral';\n}\n\nexport function mapTranscriptLine(\n line: LiveTranscriptLineDto & { at?: number; offsetSeconds?: number; startTime?: number },\n): TranscriptLine {\n return {\n who: line.who,\n text: line.text,\n flag: line.flag as TranscriptLine['flag'],\n at: line.at ?? line.offsetSeconds ?? line.startTime,\n };\n}\n\nexport function mapToolEvent(tool: {\n t: string;\n key?: string;\n name: string;\n tech: string;\n result: string;\n state: string;\n}): ToolEvent {\n const state = tool.state as ToolEvent['state'];\n const key = resolveToolKey(tool.key, tool.name, tool.tech);\n return {\n t: tool.t,\n key,\n name: resolveToolDisplayName(key, tool.name),\n tech: tool.tech,\n result: tool.result,\n state: ['ok', 'warn', 'error', 'active'].includes(state) ? state : 'ok',\n };\n}\n\nexport function normalizeRecordingStatus(\n status: string | undefined,\n url: string | null | undefined,\n): CallRecordingStatus {\n const known: CallRecordingStatus[] = ['ready', 'pending', 'unavailable', 'failed'];\n if (status && known.includes(status as CallRecordingStatus)) {\n return status as CallRecordingStatus;\n }\n return url ? 'ready' : 'unavailable';\n}\n\nexport function mapRecordingMeta(dto: RecordingDto): CallRecordingMeta {\n return {\n callId: dto.callId,\n status: normalizeRecordingStatus(dto.status, dto.url),\n url: dto.url ?? null,\n contentType: dto.contentType,\n durationSeconds: dto.durationSeconds,\n message: dto.message,\n };\n}\n\nexport function mapLiveCallDto(dto: LiveCallDto): LiveCall {\n return {\n id: dto.id,\n name: dto.name,\n initials: dto.initials,\n avatar: dto.avatar,\n phone: dto.phone,\n verification: mapVerification(dto.verification),\n direction: dto.direction,\n reason: dto.reason,\n status: mapCallStatus(dto.status),\n started: dto.started,\n sentiment: mapSentiment(dto.sentiment),\n confidence: normalizeConfidence(dto.confidence),\n goal: dto.goal,\n dob: dto.dob ?? undefined,\n location: dto.location ?? '',\n provider: dto.provider,\n language: dto.language,\n matched: dto.matched,\n assigned: dto.assigned,\n tools: (dto.tools ?? []).map(mapToolEvent),\n transcript: (dto.transcript ?? []).map(mapTranscriptLine),\n };\n}\n\nexport function mapHistoryCallDto(dto: HistoryCallDto): HistoryCall {\n const parsedStarted = Date.parse(dto.startedAt ?? dto.when);\n return {\n id: dto.id,\n name: dto.name,\n initials: dto.initials,\n phone: dto.phone,\n direction: dto.dir,\n outcome: dto.outcome,\n reason: dto.reason,\n duration: parseDurToSeconds(dto.dur),\n durationLabel: dto.dur,\n started: Number.isFinite(parsedStarted) ? parsedStarted : 0,\n whenLabel: Number.isFinite(parsedStarted) ? undefined : dto.when,\n location: dto.location,\n verification: mapVerification(dto.verify),\n review: dto.review === 'reviewed' ? 'reviewed' : 'needs',\n };\n}\n\nexport function mapHistoryDetailDto(\n call: HistoryCallDto,\n detail: HistoryDetailDto,\n recordingUrl?: string | null,\n): HistoryDetail {\n const base = mapHistoryCallDto(call);\n return {\n ...base,\n summary: detail.summary,\n transcript: (detail.transcript ?? []).map(mapTranscriptLine),\n tools: (detail.tools ?? []).map(mapToolEvent),\n recordingUrl: recordingUrl ?? undefined,\n };\n}\n\nexport function mapAttentionItemDto(dto: AttentionItemDto): AttentionItem {\n return {\n id: dto.id,\n callId: dto.id,\n title: dto.name,\n detail: dto.why || dto.reason,\n severity: dto.sev === 'urgent' ? 'urgent' : 'warn',\n time: Date.now(),\n timeLabel: dto.time,\n };\n}\n\nexport function mapDashboardSummaryDto(dto: DashboardSummaryDto): DashboardData['stats'] {\n return {\n activeCalls: dto.liveCalls,\n answeredToday: dto.callsToday,\n appointmentsBooked: dto.appointmentsBooked ?? 0,\n tasksCreated: dto.openTasks,\n completionRate: parsePercent(dto.aiHandledRate),\n };\n}\n\nexport function mapAiCreatedAppointmentDto(\n dto: AiCreatedAppointmentDto,\n): AiCreatedAppointment {\n return {\n id: dto.id,\n appointmentId: dto.appointmentId ?? dto.id,\n patientName: dto.patientName || 'Unknown patient',\n providerName: dto.providerName ?? null,\n startTime: Date.parse(dto.startTime) || 0,\n createdAt: Date.parse(dto.createdAt) || 0,\n callId: dto.callId ?? null,\n status: dto.status ?? null,\n };\n}\n\nexport function mapTaskDto(dto: TaskDto): TaskItem {\n let status: TaskItem['status'] = 'open';\n if (dto.status === 'done') status = 'done';\n else if (dto.status === 'in-progress') status = 'in_progress';\n\n return {\n id: dto.id,\n created: dto.created ? Date.parse(dto.created) || Date.now() : Date.now(),\n title: dto.title || dto.type || 'Task',\n type: dto.type || 'Other',\n description: dto.summary ?? '',\n patient: dto.patient || '—',\n priority: dto.priority ?? 'normal',\n status,\n source: dto.source ?? 'voice',\n assignee: dto.assignee || '—',\n callId: dto.call || undefined,\n edvakTaskId: dto.edvakTaskId,\n edvakStatus: dto.edvakStatus,\n medicationName: dto.medicationName,\n medicationId: dto.medicationId,\n };\n}\n\nexport function toApiTaskStatus(status: TaskItem['status']): TaskDto['status'] {\n if (status === 'done') return 'done';\n if (status === 'in_progress') return 'in-progress';\n return 'open';\n}\n\nexport function mapCreateTaskRequest(req: CreateTaskRequest): CreateTaskDto {\n return {\n title: req.title.trim(),\n type: req.type,\n call: req.callId,\n summary: req.description?.trim() || undefined,\n patient: req.patient?.trim() || undefined,\n priority: req.priority,\n assignee: req.assignee?.trim() || undefined,\n };\n}\n\nexport function mapRegenerateSummaryResponse(\n dto: RegenerateSummaryResponseDto,\n): RegenerateSummaryResult {\n return {\n callId: dto.callId,\n summary: dto.summary,\n summaryModel: dto.summaryModel,\n summaryGeneratedAt: dto.summaryGeneratedAt,\n transcriptTurnCount: dto.transcriptTurnCount,\n };\n}\n\nexport function mapAuditEventDto(dto: AuditEventDto, index: number): AuditEvent {\n return {\n id: `${dto.ts}-${index}`,\n actor: dto.actorName || dto.actor,\n action: dto.event,\n target: dto.call || dto.patient || dto.cat,\n detail: dto.detail,\n at: dto.ts ? Date.parse(dto.ts) || Date.now() : Date.now(),\n };\n}\n\nexport function mapAnalyticsDto(dto: AnalyticsDto, range: string): AnalyticsData {\n const volume = mapVolumeSeries(dto.volume);\n const peakHours = mapPeakSeries(dto.peak);\n\n const outcomes = (dto.outcomes ?? []).map((o) => ({\n label: o.label,\n value: o.v,\n color: TONE_COLORS[o.tone] ?? TONE_COLORS['brand'],\n }));\n\n const reasons = (dto.reasons ?? []).map((r) => ({ label: r.label, value: r.v }));\n const transfers = (dto.transfers ?? []).map((t) => ({ label: t.label, value: t.v }));\n\n const kpiCards: AnalyticsData['kpiCards'] = (dto.kpis ?? []).map((k) => ({\n label: k.label,\n value: k.value,\n delta: k.delta,\n tone: k.tone,\n sub: k.sub,\n }));\n\n const kpiMap: Record<string, number> = {};\n for (const k of dto.kpis ?? []) {\n const key = k.label.toLowerCase();\n const num = parseAnalyticsNumber(k.value);\n if (key.includes('handled') || key.includes('total call') || key === 'calls') {\n kpiMap['totalCalls'] = num;\n } else if (key.includes('handle time') || key.includes('avg duration') || key.includes('duration')) {\n kpiMap['avgDuration'] = parseDurationSeconds(k.value);\n } else if (key.includes('resolution') || key.includes('booking')) {\n kpiMap['bookingRate'] = num;\n } else if (key.includes('transfer')) {\n kpiMap['transferRate'] = num;\n }\n }\n\n return {\n range,\n kpiCards,\n volume,\n outcomes,\n reasons,\n transfers,\n peakHours,\n kpis: {\n totalCalls: kpiMap['totalCalls'] ?? 0,\n avgDuration: kpiMap['avgDuration'] ?? 0,\n bookingRate: kpiMap['bookingRate'] ?? 0,\n transferRate: kpiMap['transferRate'] ?? 0,\n },\n };\n}\n\nfunction parseAnalyticsNumber(value: string): number {\n const cleaned = String(value).replace(/[^\\d.]/g, '');\n const num = Number(cleaned);\n return Number.isFinite(num) ? num : 0;\n}\n\nfunction parseDurationSeconds(value: string): number {\n const trimmed = value.trim();\n const clock = /^(\\d+):(\\d{2})$/.exec(trimmed);\n if (clock) {\n return Number(clock[1]) * 60 + Number(clock[2]);\n }\n return parseAnalyticsNumber(trimmed);\n}\n\nfunction isVolumeSeriesDto(raw: AnalyticsDto['volume']): raw is AnalyticsVolumeSeriesDto {\n return !!raw && typeof raw === 'object' && !Array.isArray(raw) && 'points' in raw;\n}\n\nfunction isPeakSeriesDto(raw: AnalyticsDto['peak']): raw is AnalyticsPeakSeriesDto {\n return !!raw && typeof raw === 'object' && !Array.isArray(raw) && 'points' in raw;\n}\n\nfunction formatLegacyHourLabel(hour: number): string {\n if (hour === 0) return '12 AM';\n if (hour < 12) return `${hour} AM`;\n if (hour === 12) return '12 PM';\n return `${hour - 12} PM`;\n}\n\nfunction mapVolumeSeries(raw: AnalyticsDto['volume']): AnalyticsVolumeSeries {\n if (isVolumeSeriesDto(raw)) {\n return {\n timezone: raw.timezone ?? 'UTC',\n startDate: raw.startDate ?? '',\n endDate: raw.endDate ?? '',\n points: (raw.points ?? []).map((p) => ({\n date: p.date,\n day: p.day,\n label: p.label,\n count: p.count,\n })),\n };\n }\n\n const values = Array.isArray(raw) ? raw : [];\n return {\n timezone: 'UTC',\n startDate: '',\n endDate: '',\n points: values.map((count, i) => ({\n date: '',\n day: DAY_LABELS[i % DAY_LABELS.length] ?? `D${i + 1}`,\n label: DAY_LABELS[i % DAY_LABELS.length] ?? `Day ${i + 1}`,\n count,\n })),\n };\n}\n\nfunction mapPeakSeries(raw: AnalyticsDto['peak']): AnalyticsPeakSeries {\n if (isPeakSeriesDto(raw)) {\n return {\n timezone: raw.timezone ?? 'UTC',\n points: (raw.points ?? []).map((p) => ({\n hour: p.hour,\n label: p.label,\n count: p.count,\n })),\n };\n }\n\n const values = Array.isArray(raw) ? raw : [];\n return {\n timezone: 'UTC',\n points: values.map((count, hour) => ({\n hour,\n label: formatLegacyHourLabel(hour),\n count,\n })),\n };\n}\n\nexport function mapStatusDto(dto: AiStatusDto): AiReceptionistStatus {\n const online = dto.agentOnline ?? dto.activated ?? false;\n const step = dto.setupStep ?? (dto.activated ? 11 : 0);\n return {\n agentOn: online,\n mode: 'live',\n readiness: Math.min(100, Math.round((step / 11) * 100)),\n };\n}\n\nexport function mapSetupDto(dto: SetupDto): SetupData {\n const stepCount = 11;\n const steps = Array.from({ length: stepCount }, (_, i) => ({\n id: i + 1,\n title: `Setup step ${i + 1}`,\n description: dto.activated ? 'Complete' : i + 1 < dto.step ? 'Complete' : 'Pending',\n complete: dto.activated || i + 1 < dto.step,\n }));\n\n return {\n readiness: Math.min(100, Math.round((dto.step / stepCount) * 100)),\n steps,\n testTranscript: [],\n };\n}\n\nexport function mapSettingsResponse(body: unknown, safetyBody: unknown): AgentSettings {\n const raw = body as {\n settings?: Record<string, unknown>;\n effectiveWelcomeMessage?: string;\n };\n const settings = raw?.settings ?? (body as Record<string, unknown>) ?? {};\n\n const section = (key: string): Record<string, string | boolean | number> => {\n const val = settings[key];\n if (val && typeof val === 'object' && !Array.isArray(val)) {\n return val as Record<string, string | boolean | number>;\n }\n return {};\n };\n\n const safetyRaw = safetyBody as {\n checks?: Array<{ id: string; ok: boolean; label?: string }>;\n };\n const safety = (safetyRaw?.checks ?? []).map((c) => ({\n id: c.id,\n label: c.label ?? humanizeSettingsKey(c.id),\n status: c.ok ? ('ok' as const) : ('warn' as const),\n }));\n\n const mapped: AgentSettings = {\n general: section('general'),\n phone: section('phoneAvailability'),\n tasks: section('allowedTasks'),\n scheduling: section('schedulingRules'),\n refill: section('refillRules'),\n verify: section('patientVerification'),\n escalation: section('humanEscalation'),\n outbound: section('outboundCalling'),\n safety,\n transcripts: section('transcriptsRecording'),\n advanced: section('advanced'),\n };\n\n mapped.effectiveWelcomeMessage =\n raw.effectiveWelcomeMessage ?? computeEffectiveWelcomeMessage(mapped);\n\n return mapped;\n}\n\nfunction humanizeSettingsKey(key: string): string {\n return key\n .replace(/([A-Z])/g, ' $1')\n .replace(/_/g, ' ')\n .trim()\n .replace(/^\\w/, (c) => c.toUpperCase());\n}\n\n/** Map frontend AgentSettings → backend PUT body section keys. */\nexport function mapSettingsToRequest(settings: AgentSettings): Record<string, unknown> {\n return {\n general: settings.general,\n phoneAvailability: settings.phone,\n allowedTasks: settings.tasks,\n schedulingRules: settings.scheduling,\n refillRules: settings.refill,\n patientVerification: settings.verify,\n humanEscalation: settings.escalation,\n outboundCalling: settings.outbound,\n transcriptsRecording: settings.transcripts,\n advanced: settings.advanced,\n };\n}\n\nexport function mapLocationDto(raw: unknown): LocationOption {\n const r = raw as { locationId?: string; locationName?: string; id?: string; name?: string };\n return {\n id: r.locationId ?? r.id ?? '',\n name: r.locationName ?? r.name ?? '',\n };\n}\n\nexport function mapProviderDto(raw: unknown): ProviderOption {\n const r = raw as { providerId?: string; fullName?: string; id?: string; name?: string };\n return {\n id: r.providerId ?? r.id ?? '',\n name: r.fullName ?? r.name ?? '',\n };\n}\n\nexport function asTranscriptList(body: unknown): LiveTranscriptLineDto[] {\n if (Array.isArray(body)) return body as LiveTranscriptLineDto[];\n if (!body || typeof body !== 'object') return [];\n const o = body as Record<string, unknown>;\n const list = o['lines'] ?? o['transcript'] ?? o['items'] ?? o['data'];\n return Array.isArray(list) ? (list as LiveTranscriptLineDto[]) : [];\n}\n\nexport function isHistoryCallDto(raw: unknown): raw is HistoryCallDto {\n return !!raw && typeof raw === 'object' && 'dir' in (raw as object);\n}\n\nexport function asHistoryList(body: unknown): HistoryCallDto[] {\n if (Array.isArray(body)) return body as HistoryCallDto[];\n const list = body as HistoryListDto;\n return list?.items ?? [];\n}\n\nexport function asLiveCallList(body: unknown): LiveCallDto[] {\n if (Array.isArray(body)) return body as LiveCallDto[];\n return [];\n}\n\nexport function asTaskList(body: unknown): TaskDto[] {\n if (Array.isArray(body)) return body as TaskDto[];\n const list = body as { items?: TaskDto[] };\n return list?.items ?? [];\n}\n\nexport function asAuditList(body: unknown): AuditEventDto[] {\n if (Array.isArray(body)) return body as AuditEventDto[];\n return [];\n}\n\nexport function asAttentionList(body: unknown): AttentionItemDto[] {\n if (Array.isArray(body)) return body as AttentionItemDto[];\n return [];\n}\n","import { ApiLogDetail, ApiLogListItem, ApiLogStats } from '../models/api-log.types';\n\nconst now = Date.now();\n\nfunction item(\n partial: Partial<ApiLogListItem> & Pick<ApiLogListItem, 'id' | 'provider' | 'operation'>,\n): ApiLogListItem {\n return {\n callId: 'LC-4821',\n method: 'POST',\n urlPath: '/api/v1/patients/search',\n statusCode: 200,\n success: true,\n durationMs: 340,\n toolName: null,\n errorMessage: null,\n startedAt: new Date(now - 120_000).toISOString(),\n requestPreview: '{\"phone\":\"+15551234567\"}',\n responsePreview: '{\"items\":[{\"id\":\"p1\"}]}',\n ...partial,\n };\n}\n\nexport const SEED_CALL_API_LOGS: Record<string, ApiLogListItem[]> = {\n 'LC-4821': [\n item({\n id: 'log-1',\n provider: 'vonage',\n operation: 'answer_call',\n method: 'POST',\n urlPath: '/vonage/answer',\n statusCode: 200,\n durationMs: 120,\n startedAt: new Date(now - 300_000).toISOString(),\n requestPreview: '{\"callId\":\"...\"}',\n responsePreview: '{\"status\":\"connected\"}',\n }),\n item({\n id: 'log-2',\n provider: 'edvak',\n operation: 'search_patient',\n toolName: 'search_patient',\n method: 'GET',\n urlPath: '/api/v1/patients',\n statusCode: 200,\n durationMs: 420,\n startedAt: new Date(now - 240_000).toISOString(),\n }),\n item({\n id: 'log-3',\n provider: 'openai',\n operation: 'chat_completion',\n method: 'POST',\n urlPath: '/v1/chat/completions',\n statusCode: 200,\n durationMs: 890,\n startedAt: new Date(now - 180_000).toISOString(),\n requestPreview: '{\"model\":\"gpt-4o-mini\"}',\n responsePreview: '{\"choices\":[...]}',\n }),\n item({\n id: 'log-4',\n provider: 'edvak',\n operation: 'create_appointment',\n toolName: 'create_appointment',\n method: 'POST',\n urlPath: '/api/appointments',\n statusCode: 201,\n durationMs: 560,\n startedAt: new Date(now - 60_000).toISOString(),\n }),\n ],\n 'HC-9001': [\n item({\n id: 'log-f1',\n callId: 'HC-9001',\n provider: 'edvak',\n operation: 'search_patient',\n toolName: 'search_patient',\n statusCode: 500,\n success: false,\n durationMs: 2100,\n errorMessage: 'Internal Server Error',\n startedAt: new Date(now - 86_400_000).toISOString(),\n }),\n ],\n};\n\nexport const SEED_API_LOG_DETAILS: Record<string, ApiLogDetail> = {\n 'log-4': {\n ...SEED_CALL_API_LOGS['LC-4821'][3],\n traceId: 'trace-abc-123',\n requestBody: { patientId: 'p1', slotId: 'slot-9', reason: 'Annual checkup' },\n responseBody: { appointmentId: 'apt-42', status: 'confirmed' },\n metadata: { practiceId: 'prac-1', locationId: 'loc-1' },\n completedAt: new Date(now - 59_500).toISOString(),\n },\n 'log-f1': {\n ...SEED_CALL_API_LOGS['HC-9001'][0],\n traceId: 'trace-err-999',\n requestBody: { phone: '+15559876543' },\n responseBody: { error: 'Internal Server Error', message: 'Database timeout' },\n metadata: { retryCount: 1 },\n completedAt: new Date(now - 86_398_000).toISOString(),\n },\n};\n\nexport function allSeedLogs(): ApiLogListItem[] {\n return Object.values(SEED_CALL_API_LOGS).flat();\n}\n\nexport const SEED_API_LOG_STATS: ApiLogStats = {\n last24h: { total: 128, failed: 4, avgDurationMs: 680 },\n byProvider: [\n { provider: 'edvak', total: 52, failed: 3 },\n { provider: 'openai', total: 38, failed: 0 },\n { provider: 'vonage', total: 24, failed: 1 },\n { provider: 'livekit', total: 14, failed: 0 },\n ],\n recentFailures: [\n item({\n id: 'log-fail-1',\n callId: 'HC-9001',\n provider: 'edvak',\n operation: 'search_patient',\n statusCode: 500,\n success: false,\n durationMs: 2100,\n errorMessage: 'Internal Server Error',\n startedAt: new Date(now - 3_600_000).toISOString(),\n }),\n item({\n id: 'log-fail-2',\n callId: 'LC-4819',\n provider: 'vonage',\n operation: 'transfer',\n statusCode: 503,\n success: false,\n durationMs: 1500,\n errorMessage: 'Service unavailable',\n startedAt: new Date(now - 7_200_000).toISOString(),\n }),\n item({\n id: 'log-fail-3',\n callId: null,\n provider: 'edvak',\n operation: 'list_providers',\n statusCode: 500,\n success: false,\n durationMs: 980,\n errorMessage: 'Gateway timeout',\n startedAt: new Date(now - 10_800_000).toISOString(),\n }),\n ],\n};\n","import {\n AgentSettings,\n AnalyticsData,\n AuditEvent,\n DashboardData,\n HistoryCall,\n HistoryDetail,\n LiveCall,\n LocationOption,\n ProviderOption,\n SetupData,\n TaskItem,\n TranscriptLine,\n} from '../models/ai-receptionist.types';\n\nconst now = Date.now();\nconst min = (m: number) => now - m * 60_000;\n\nconst baseTranscript: TranscriptLine[] = [\n { who: 'system', text: 'Call connected · inbound PSTN' },\n {\n who: 'ai',\n text: 'Good afternoon, thank you for calling Riverside Family Medicine. How can I help you today?',\n },\n { who: 'patient', text: \"Hi, I'd like to reschedule my appointment for next Tuesday.\" },\n {\n who: 'ai',\n text: 'I can help with that. May I verify your date of birth and the name on the account?',\n flag: 'verify',\n },\n { who: 'patient', text: 'March 14, 1985 — Maria Santos.' },\n { who: 'ai', text: 'Thank you, Maria. I found your chart. You have a visit with Dr. Chen on Tuesday at 2:30 PM.' },\n { who: 'patient', text: 'Can we move it to Thursday morning instead?' },\n { who: 'ai', text: 'Checking availability with scheduling…' },\n];\n\nconst streamingLines: TranscriptLine[] = [\n { who: 'ai', text: 'I have Thursday at 9:15 AM or 10:40 AM with Dr. Chen. Which works better?' },\n { who: 'patient', text: '9:15 is perfect.' },\n { who: 'ai', text: 'Great — I’ve moved your appointment to Thursday at 9:15 AM. You’ll receive a confirmation text shortly.' },\n];\n\nexport const SEED_LIVE_CALLS: LiveCall[] = [\n {\n id: 'LC-4821',\n name: 'Maria Santos',\n initials: 'MS',\n avatar: null,\n phone: '+1 (512) 555-0142',\n verification: 'verified',\n direction: 'inbound',\n reason: 'Reschedule appointment',\n status: 'ai',\n started: min(4),\n sentiment: 'calm',\n confidence: 92,\n goal: 'Reschedule visit with Dr. Chen',\n dob: '1985-03-14',\n location: 'Riverside Main',\n provider: 'Dr. Elena Chen',\n language: 'English',\n matched: true,\n assigned: null,\n tools: [\n {\n t: '0:42',\n key: 'search_patients',\n name: 'Searched Patients',\n tech: 'tool_search_patients',\n result: 'Matched DOB + name',\n state: 'ok',\n },\n {\n t: '1:18',\n key: 'check_doctor_availability',\n name: 'Checked Doctor Availability',\n tech: 'tool_check_doctor_availability',\n result: '1 upcoming visit',\n state: 'ok',\n },\n {\n t: '2:05',\n key: 'check_doctor_availability',\n name: 'Checked Doctor Availability',\n tech: 'tool_check_doctor_availability',\n result: '2 slots found',\n state: 'active',\n },\n ],\n transcript: [...baseTranscript],\n },\n {\n id: 'LC-4819',\n name: 'James Okonkwo',\n initials: 'JO',\n avatar: null,\n phone: '+1 (737) 555-0198',\n verification: 'partial',\n direction: 'inbound',\n reason: 'Medication refill — urgent',\n status: 'needs-help',\n started: min(7),\n sentiment: 'frustrated',\n confidence: 71,\n goal: 'Refill lisinopril 10mg',\n location: 'North Clinic',\n provider: 'Dr. Patel',\n language: 'English',\n matched: true,\n assigned: 'Front desk queue',\n tools: [\n {\n t: '0:55',\n key: 'search_patients',\n name: 'Searched Patients',\n tech: 'tool_search_patients',\n result: 'Partial match',\n state: 'warn',\n },\n {\n t: '1:40',\n key: 'submit_medication_refill',\n name: 'Submitted Medication Refill',\n tech: 'tool_submit_medication_refill',\n result: 'Requires staff review',\n state: 'warn',\n },\n ],\n transcript: [\n { who: 'ai', text: 'Thank you for calling North Clinic. How may I assist you?' },\n { who: 'patient', text: 'I need my blood pressure medication refilled today — I’m out of pills.' },\n { who: 'ai', text: 'I understand. Let me pull up your chart and check refill eligibility.', flag: 'verify' },\n { who: 'patient', text: \"I've been a patient for years, this shouldn't be so hard.\" },\n { who: 'system', text: 'Escalation suggested — sentiment frustrated', flag: 'escalate' },\n ],\n },\n {\n id: 'LC-4815',\n name: 'Unknown caller',\n initials: '?',\n avatar: null,\n phone: '+1 (512) 555-0881',\n verification: 'unknown',\n direction: 'inbound',\n reason: 'Billing question',\n status: 'human-requested',\n started: min(2),\n sentiment: 'neutral',\n confidence: 58,\n goal: 'Speak with billing',\n location: 'Riverside Main',\n provider: null,\n language: 'English',\n matched: false,\n assigned: null,\n tools: [\n {\n t: '0:30',\n key: 'search_practice_faq',\n name: 'Searched Practice FAQ',\n tech: 'tool_search_practice_faq',\n result: 'Billing / human handoff',\n state: 'ok',\n },\n ],\n transcript: [\n { who: 'ai', text: 'Good afternoon. How can I help you today?' },\n { who: 'patient', text: 'I need to talk to someone in billing about my statement.' },\n { who: 'ai', text: 'I can connect you with our billing team. One moment while I transfer you.' },\n ],\n },\n];\n\nexport const SEED_ATTENTION = [\n {\n id: 'ATT-1',\n callId: 'LC-4819',\n title: 'Refill needs staff approval',\n detail: 'Patient out of medication — partial verification',\n severity: 'urgent' as const,\n time: min(1),\n },\n {\n id: 'ATT-2',\n callId: 'LC-4815',\n title: 'Human requested',\n detail: 'Billing transfer pending',\n severity: 'warn' as const,\n time: min(0.5),\n },\n {\n id: 'ATT-3',\n callId: 'LC-4821',\n title: 'Scheduling in progress',\n detail: 'AI handling — monitor recommended',\n severity: 'info' as const,\n time: min(3),\n },\n];\n\nexport const SEED_HISTORY: HistoryCall[] = [\n {\n id: 'HC-9001',\n name: 'Linda Nguyen',\n initials: 'LN',\n phone: '+1 (512) 555-0211',\n direction: 'inbound',\n outcome: 'Appointment booked',\n reason: 'New patient intake',\n duration: 342,\n started: min(45),\n location: 'Riverside Main',\n verification: 'verified',\n review: 'reviewed',\n },\n {\n id: 'HC-9002',\n name: 'Robert Kim',\n initials: 'RK',\n phone: '+1 (737) 555-0333',\n direction: 'outbound',\n outcome: 'Voicemail',\n reason: 'Follow-up reminder',\n duration: 28,\n started: min(90),\n location: 'North Clinic',\n verification: 'verified',\n review: 'needs',\n },\n {\n id: 'HC-9003',\n name: 'Sarah Williams',\n initials: 'SW',\n phone: '+1 (512) 555-0444',\n direction: 'inbound',\n outcome: 'Transferred',\n reason: 'Insurance prior auth',\n duration: 198,\n started: min(120),\n location: 'Riverside Main',\n verification: 'verified',\n review: 'needs',\n },\n {\n id: 'HC-9004',\n name: 'Carlos Mendez',\n initials: 'CM',\n phone: '+1 (512) 555-0555',\n direction: 'inbound',\n outcome: 'Task created',\n reason: 'Lab results question',\n duration: 156,\n started: min(180),\n location: 'South Clinic',\n verification: 'partial',\n review: 'reviewed',\n },\n {\n id: 'HC-9005',\n name: 'Emily Foster',\n initials: 'EF',\n phone: '+1 (737) 555-0666',\n direction: 'inbound',\n outcome: 'Completed',\n reason: 'Hours & directions',\n duration: 89,\n started: min(240),\n location: 'North Clinic',\n verification: 'unknown',\n review: 'reviewed',\n },\n];\n\nexport const SEED_HISTORY_DETAILS: Record<string, HistoryDetail> = {\n 'HC-9001': {\n ...SEED_HISTORY[0],\n summary:\n 'New patient intake completed. AI collected demographics, verified insurance, and booked initial visit with Dr. Chen for next Monday at 10:00 AM.',\n transcript: [\n { who: 'ai', text: 'Welcome to Riverside Family Medicine. Are you a new patient?', at: 8 },\n { who: 'patient', text: 'Yes, I need to establish care.', at: 22 },\n { who: 'ai', text: 'I can help schedule your first visit. May I collect a few details?', at: 38 },\n { who: 'patient', text: 'Sure.', at: 62 },\n { who: 'ai', text: 'Booked: Mon 10:00 AM with Dr. Chen. Confirmation sent via SMS.', at: 285 },\n ],\n tools: [\n {\n t: '1:02',\n key: 'register_and_book_appointment',\n name: 'Registered & Booked Appointment',\n tech: 'tool_register_and_book_appointment',\n result: 'Chart created',\n state: 'ok',\n },\n {\n t: '3:45',\n key: 'book_existing_appointment',\n name: 'Booked Appointment',\n tech: 'tool_book_existing_appointment',\n result: 'Slot reserved',\n state: 'ok',\n },\n ],\n recordingUrl: '#mock-recording',\n },\n};\n\nexport const SEED_TASKS: TaskItem[] = [\n {\n id: 'TK-101',\n created: min(180),\n title: 'Refill: Lisinopril 10mg',\n type: 'Refill request',\n description: 'Patient requested refill for lisinopril 10mg. Last filled 28 days ago.',\n patient: 'James Okonkwo',\n priority: 'urgent',\n status: 'open',\n source: 'voice',\n assignee: 'Clinical staff',\n callId: 'HC-9001',\n edvakTaskId: 'EDV-8821',\n edvakStatus: 'Pending review',\n medicationName: 'Lisinopril 10mg',\n medicationId: 'RX-4492',\n },\n {\n id: 'TK-102',\n created: min(240),\n title: 'Billing follow-up',\n type: 'Billing',\n description: 'Caller disputed a statement charge from March visit. Needs billing review.',\n patient: 'Unknown caller',\n priority: 'normal',\n status: 'open',\n source: 'voice',\n assignee: 'Billing',\n callId: 'LC-4815',\n },\n {\n id: 'TK-103',\n created: min(300),\n title: 'Callback requested',\n type: 'Callback',\n description: 'Sarah Williams asked for a nurse callback regarding prior auth status.',\n patient: 'Sarah Williams',\n priority: 'normal',\n status: 'in_progress',\n source: 'voice',\n assignee: 'Front desk',\n callId: 'HC-9003',\n },\n {\n id: 'TK-104',\n created: min(360),\n title: 'Callback — lab results',\n type: 'Callback',\n description: 'Carlos Mendez requested nurse callback about recent lab results.',\n patient: 'Carlos Mendez',\n priority: 'normal',\n status: 'done',\n source: 'sync',\n assignee: 'Nurse line',\n callId: 'HC-9004',\n },\n {\n id: 'TK-105',\n created: min(90),\n title: 'Schedule follow-up visit',\n type: 'Scheduling',\n description: 'Patient needs a 2-week follow-up after ER visit.',\n patient: 'Maria Chen',\n priority: 'normal',\n status: 'open',\n source: 'manual',\n assignee: 'Scheduling',\n },\n];\n\nexport const SEED_AUDIT: AuditEvent[] = [\n {\n id: 'AU-1',\n actor: 'admin@riverside.fm',\n action: 'Updated welcome message',\n target: 'Agent Settings',\n detail: 'Changed inbound greeting',\n at: min(30),\n },\n {\n id: 'AU-2',\n actor: 'system',\n action: 'Agent activated',\n target: 'AI Receptionist',\n detail: 'After-hours mode enabled',\n at: min(120),\n },\n {\n id: 'AU-3',\n actor: 'staff@riverside.fm',\n action: 'Takeover',\n target: 'LC-4780',\n detail: 'Staff joined live call',\n at: min(300),\n },\n];\n\nexport const SEED_ANALYTICS: AnalyticsData = {\n range: '30d',\n kpiCards: [\n { label: 'Calls handled', value: '1,247', delta: '+12%', tone: 'pos', sub: 'last 30 days' },\n { label: 'AI resolution rate', value: '62%', delta: '+4%', tone: 'pos', sub: 'without transfer' },\n { label: 'Avg handle time', value: '3:06', delta: '−8s', tone: 'pos', sub: 'vs prior period' },\n { label: 'Transfers', value: '14%', delta: '−2%', tone: 'neutral', sub: 'patient requested human' },\n ],\n volume: {\n timezone: 'America/Chicago',\n startDate: '2025-05-22',\n endDate: '2025-05-28',\n points: [\n { date: '2025-05-22', day: 'Mon', label: 'Mon May 22', count: 42 },\n { date: '2025-05-23', day: 'Tue', label: 'Tue May 23', count: 58 },\n { date: '2025-05-24', day: 'Wed', label: 'Wed May 24', count: 51 },\n { date: '2025-05-25', day: 'Thu', label: 'Thu May 25', count: 63 },\n { date: '2025-05-26', day: 'Fri', label: 'Fri May 26', count: 47 },\n { date: '2025-05-27', day: 'Sat', label: 'Sat May 27', count: 22 },\n { date: '2025-05-28', day: 'Sun', label: 'Sun May 28', count: 18 },\n ],\n },\n outcomes: [\n { label: 'Completed by AI', value: 62, color: '#3681F4' },\n { label: 'Transferred', value: 18, color: '#8E51FF' },\n { label: 'Voicemail', value: 8, color: '#71717A' },\n { label: 'Abandoned', value: 12, color: '#F03740' },\n ],\n reasons: [\n { label: 'Scheduling', value: 38 },\n { label: 'Refills', value: 22 },\n { label: 'Billing', value: 15 },\n { label: 'Directions', value: 10 },\n { label: 'Other', value: 15 },\n ],\n transfers: [\n { label: 'Billing', value: 34 },\n { label: 'Clinical', value: 28 },\n { label: 'Insurance', value: 18 },\n { label: 'Emergency', value: 5 },\n ],\n peakHours: {\n timezone: 'America/Chicago',\n points: Array.from({ length: 24 }, (_, hour) => ({\n hour,\n label: hour === 0 ? '12 AM' : hour < 12 ? `${hour} AM` : hour === 12 ? '12 PM' : `${hour - 12} PM`,\n count: hour >= 8 && hour <= 17 ? 20 + Math.round(Math.sin((hour - 8) / 4) * 15) : 3 + (hour % 5),\n })),\n },\n kpis: {\n totalCalls: 1247,\n avgDuration: 186,\n bookingRate: 34,\n transferRate: 14,\n },\n};\n\nexport const SEED_SETTINGS: AgentSettings = {\n general: {\n practiceName: 'Riverside Family Medicine',\n timezone: 'America/Chicago',\n language: 'English',\n agentName: 'Edvak AI',\n welcomeMessage:\n 'Thank you for calling Riverside Family Medicine. This call may be recorded. How can I help you today?',\n ttsVoiceId: '7EzWGsX10sAS4c9m9cPf',\n },\n phone: { mainNumber: '+1 (512) 555-0100', afterHours: true, ringTimeout: 30 },\n tasks: { autoCreate: true, defaultAssignee: 'Front desk' },\n scheduling: { leadTimeHours: 4, allowSameDay: true },\n refill: { autoApproveDays: 7, requireStaffReview: true },\n verify: { requireDob: true, requireName: true, maxAttempts: 3 },\n escalation: { sentimentThreshold: 'frustrated', urgentKeywords: 'emergency, chest pain' },\n outbound: { enabled: true, callerId: '+1 (512) 555-0100' },\n safety: [\n { id: 's1', label: 'HIPAA logging enabled', status: 'ok' },\n { id: 's2', label: 'Recording consent script', status: 'ok' },\n { id: 's3', label: 'Emergency routing tested', status: 'warn' },\n { id: 's4', label: 'PHI redaction in transcripts', status: 'ok' },\n ],\n transcripts: { retainDays: 90, redactPhi: true },\n advanced: { modelVersion: 'edvak-v2', debugMode: false },\n effectiveWelcomeMessage:\n 'Thank you for calling Riverside Family Medicine. This call may be recorded. How can I help you today?',\n};\n\nexport const SEED_SETUP: SetupData = {\n readiness: 92,\n steps: [\n { id: 1, title: 'Practice profile', description: 'Name, locations, hours', complete: true },\n { id: 2, title: 'Phone routing', description: 'Connect Vonage numbers', complete: true },\n { id: 3, title: 'EHR integration', description: 'FHIR scheduling & charts', complete: true },\n { id: 4, title: 'Welcome message', description: 'Inbound call greeting', complete: true },\n { id: 5, title: 'Verification rules', description: 'Identity checks', complete: true },\n { id: 6, title: 'Task routing', description: 'Assignees & SLAs', complete: true },\n { id: 7, title: 'Escalation paths', description: 'Human handoff rules', complete: true },\n { id: 8, title: 'Safety checklist', description: 'Compliance review', complete: false },\n { id: 9, title: 'Test call', description: 'Simulated inbound call', complete: false },\n { id: 10, title: 'Staff training', description: 'Takeover & monitoring', complete: true },\n { id: 11, title: 'Go live', description: 'Activate AI receptionist', complete: false },\n ],\n testTranscript: [\n { who: 'ai', text: 'Test call started — simulating inbound patient.' },\n { who: 'patient', text: 'I would like to book an appointment.' },\n { who: 'ai', text: 'Happy to help. May I verify your date of birth?' },\n ],\n};\n\nexport const SEED_LOCATIONS: LocationOption[] = [\n { id: 'loc-1', name: 'Riverside Main' },\n { id: 'loc-2', name: 'North Clinic' },\n { id: 'loc-3', name: 'South Clinic' },\n];\n\nexport const SEED_PROVIDERS: ProviderOption[] = [\n { id: 'prov-1', name: 'Dr. Elena Chen' },\n { id: 'prov-2', name: 'Dr. Raj Patel' },\n { id: 'prov-3', name: 'Dr. Amy Foster' },\n];\n\nexport function buildDashboard(): DashboardData {\n return {\n stats: {\n activeCalls: SEED_LIVE_CALLS.length,\n answeredToday: 47,\n appointmentsBooked: 6,\n tasksCreated: 8,\n completionRate: 86,\n },\n liveCalls: SEED_LIVE_CALLS,\n latestTasks: SEED_TASKS.slice(0, 5),\n latestAppointments: [\n {\n id: 'appt-ai-1',\n appointmentId: 'appt-ai-1',\n patientName: 'Maria Garcia',\n providerName: 'Dr. Elena Chen',\n startTime: Date.now() + 86_400_000,\n createdAt: min(25),\n callId: 'HC-9001',\n status: 'booked',\n },\n ],\n recentHistory: SEED_HISTORY.slice(0, 5),\n };\n}\n\nexport function getStreamingLines(): TranscriptLine[] {\n return streamingLines;\n}\n\nexport function cloneLiveCalls(): LiveCall[] {\n return SEED_LIVE_CALLS.map((c) => ({\n ...c,\n tools: c.tools.map((t) => ({ ...t })),\n transcript: c.transcript.map((l) => ({ ...l })),\n }));\n}\n\nexport function cloneHistory(): HistoryCall[] {\n return SEED_HISTORY.map((h) => ({ ...h }));\n}\n\nexport function cloneTasks(): TaskItem[] {\n return SEED_TASKS.map((t) => ({ ...t }));\n}\n","import {\n OutboundPurpose,\n OutboundPurposePlaceholder,\n} from '../models/outbound-purpose.types';\n\nexport const DEFAULT_PLACEHOLDERS: OutboundPurposePlaceholder[] = [\n { token: '{{patientName}}', label: 'Patient name', sampleValue: 'Maria Garcia' },\n { token: '{{appointmentDate}}', label: 'Appointment date', sampleValue: 'March 15' },\n { token: '{{appointmentTime}}', label: 'Appointment time', sampleValue: '2:30 PM' },\n { token: '{{providerName}}', label: 'Provider name', sampleValue: 'Dr. Patel' },\n { token: '{{practiceName}}', label: 'Practice name', sampleValue: 'Edvak Family Medicine' },\n];\n\nexport const SEED_OUTBOUND_PURPOSES: OutboundPurpose[] = [\n {\n purposeId: 'purpose-confirm-appt',\n label: 'Confirm appointment',\n description: 'Remind patient of upcoming visit and confirm attendance.',\n sampleOpening:\n 'Hi {{patientName}}, this is {{practiceName}} calling to confirm your appointment on {{appointmentDate}} at {{appointmentTime}} with {{providerName}}.',\n openingTemplate:\n 'Hi {{patientName}}, this is {{practiceName}} calling to confirm your appointment on {{appointmentDate}} at {{appointmentTime}} with {{providerName}}.',\n agentContextHint: 'Confirm attendance; offer reschedule if patient cannot make it.',\n requiredFields: ['appointmentDate', 'appointmentTime', 'providerName'],\n allowsCustomScript: false,\n isSystem: true,\n isActive: true,\n sortOrder: 1,\n placeholders: DEFAULT_PLACEHOLDERS,\n },\n {\n purposeId: 'purpose-recall',\n label: 'Recall / follow-up',\n description: 'Invite patient to schedule a follow-up visit.',\n sampleOpening:\n 'Hello {{patientName}}, {{practiceName}} here. We would like to help you schedule a follow-up with {{providerName}}.',\n openingTemplate:\n 'Hello {{patientName}}, {{practiceName}} here. We would like to help you schedule a follow-up with {{providerName}}.',\n agentContextHint: null,\n requiredFields: ['providerName'],\n allowsCustomScript: true,\n isSystem: true,\n isActive: true,\n sortOrder: 2,\n placeholders: DEFAULT_PLACEHOLDERS,\n },\n {\n purposeId: 'purpose-custom',\n label: 'Custom outreach',\n description: 'Staff-defined script for one-off calls.',\n sampleOpening: '',\n openingTemplate: 'Hi {{patientName}}, this is {{practiceName}}.',\n agentContextHint: 'Follow the custom script closely.',\n requiredFields: ['customScript'],\n allowsCustomScript: true,\n isSystem: false,\n isActive: false,\n sortOrder: 99,\n placeholders: DEFAULT_PLACEHOLDERS,\n },\n];\n","import { Injectable, signal } from '@angular/core';\nimport { delay, map, Observable, of, throwError } from 'rxjs';\n\nimport {\n AgentSettings,\n AiReceptionistStatus,\n AnalyticsData,\n AuditEvent,\n DashboardData,\n CallRecordingMeta,\n HistoryCall,\n HistoryDetail,\n LiveCall,\n LocationOption,\n ProviderOption,\n SetupData,\n TaskItem,\n CreateTaskRequest,\n TaskFilters,\n RegenerateSummaryResult,\n ToolEvent,\n TranscriptLine,\n} from '../models/ai-receptionist.types';\nimport { computeEffectiveWelcomeMessage } from '../utils/welcome-message.util';\nimport {\n allSeedLogs,\n SEED_API_LOG_DETAILS,\n SEED_API_LOG_STATS,\n SEED_CALL_API_LOGS,\n} from '../mocks/api-log.seed';\nimport {\n ApiLogDetail,\n ApiLogFilters,\n ApiLogListResponse,\n ApiLogStats,\n} from '../models/api-log.types';\nimport {\n buildDashboard,\n cloneHistory,\n cloneLiveCalls,\n cloneTasks,\n getStreamingLines,\n SEED_ANALYTICS,\n SEED_AUDIT,\n SEED_HISTORY_DETAILS,\n SEED_SETTINGS,\n SEED_SETUP,\n SEED_LOCATIONS,\n SEED_PROVIDERS,\n} from '../mocks/seed-data';\nimport {\n DEFAULT_PLACEHOLDERS,\n SEED_OUTBOUND_PURPOSES,\n} from '../mocks/outbound-purpose.seed';\nimport {\n CreateOutboundPurposeRequest,\n OutboundPurpose,\n OutboundPurposesResponse,\n PlaceOutboundCallRequest,\n PlaceOutboundCallResponse,\n UpdateOutboundPurposeRequest,\n} from '../models/outbound-purpose.types';\n\nconst MOCK_DELAY_MS = 200;\n\n@Injectable({ providedIn: 'root' })\nexport class AiReceptionistApiMockService {\n private readonly liveCalls = signal(cloneLiveCalls());\n private readonly tasks = signal(cloneTasks());\n private readonly history = signal(cloneHistory());\n private readonly settings = signal<AgentSettings>(structuredClone(SEED_SETTINGS));\n private readonly status = signal<AiReceptionistStatus>({\n agentOn: true,\n mode: 'after-hours',\n readiness: SEED_SETUP.readiness,\n });\n private readonly outboundPurposes = signal<OutboundPurpose[]>(\n structuredClone(SEED_OUTBOUND_PURPOSES),\n );\n\n private mock<T>(data: T): Observable<{ data: T }> {\n return of({ data }).pipe(delay(MOCK_DELAY_MS));\n }\n\n getStatus(): Observable<{ data: AiReceptionistStatus }> {\n return this.mock(this.status());\n }\n\n setAgentOn(on: boolean): void {\n this.status.update((s) => ({ ...s, agentOn: on }));\n }\n\n getDashboard(): Observable<{ data: DashboardData }> {\n const dash = buildDashboard();\n dash.liveCalls = [];\n return this.mock(dash);\n }\n\n getLiveCalls(): Observable<{ data: LiveCall[] }> {\n return this.mock(this.liveCalls());\n }\n\n getLiveCall(id: string): Observable<{ data: LiveCall | null }> {\n const call = this.liveCalls().find((c) => c.id === id) ?? null;\n return this.mock(call ? structuredClone(call) : null);\n }\n\n getCallTranscript(id: string): Observable<{ data: TranscriptLine[] }> {\n const call = this.liveCalls().find((c) => c.id === id);\n return this.mock(call ? call.transcript.map((l) => ({ ...l })) : []);\n }\n\n getCallSummary(id: string): Observable<{\n data: { summary: string; transcript: TranscriptLine[]; tools: ToolEvent[] } | null;\n }> {\n const detail = SEED_HISTORY_DETAILS[id];\n if (detail) {\n return this.mock({\n summary: detail.summary,\n transcript: detail.transcript.map((l) => ({ ...l })),\n tools: detail.tools.map((t) => ({ ...t })),\n });\n }\n const call = this.liveCalls().find((c) => c.id === id);\n if (call) {\n return this.mock({\n summary: 'Call summary will appear here after processing.',\n transcript: call.transcript.map((l) => ({ ...l })),\n tools: call.tools.map((t) => ({ ...t })),\n });\n }\n return this.mock(null);\n }\n\n getCallRecording(callId: string): Observable<CallRecordingMeta> {\n const detail = SEED_HISTORY_DETAILS[callId];\n if (detail?.recordingUrl) {\n const meta: CallRecordingMeta = {\n callId,\n status: 'ready',\n url: `/api/ai-receptionist/calls/${callId}/recording/audio`,\n contentType: 'audio/ogg',\n durationSeconds: detail.duration || 120,\n };\n return of<CallRecordingMeta>(meta).pipe(delay(MOCK_DELAY_MS));\n }\n const unavailable: CallRecordingMeta = {\n callId,\n status: 'unavailable',\n url: null,\n message: 'No recording available for this call',\n };\n return of<CallRecordingMeta>(unavailable).pipe(delay(MOCK_DELAY_MS));\n }\n\n getCallRecordingBlob(): Observable<Blob> {\n return of(new Blob([], { type: 'audio/ogg' })).pipe(delay(MOCK_DELAY_MS));\n }\n\n getHistory(filters?: {\n q?: string;\n dir?: string;\n outcome?: string;\n location?: string;\n review?: 'needs' | 'reviewed';\n }): Observable<{ data: HistoryCall[] }> {\n let rows = this.history();\n const q = filters?.q?.toLowerCase().trim();\n if (q) {\n rows = rows.filter(\n (h) =>\n h.name.toLowerCase().includes(q) ||\n h.phone.includes(q) ||\n h.reason.toLowerCase().includes(q) ||\n h.id.toLowerCase().includes(q),\n );\n }\n if (filters?.dir) rows = rows.filter((h) => h.direction === filters.dir);\n if (filters?.outcome) {\n rows = rows.filter((h) => h.outcome.toLowerCase().includes(filters.outcome!.toLowerCase()));\n }\n if (filters?.location) rows = rows.filter((h) => h.location === filters.location);\n if (filters?.review) rows = rows.filter((h) => h.review === filters.review);\n return this.mock(rows);\n }\n\n getCallDetail(id: string): Observable<{ data: HistoryDetail | null }> {\n const detail = SEED_HISTORY_DETAILS[id] ?? null;\n return this.mock(detail ? structuredClone(detail) : null);\n }\n\n regenerateCallSummary(callId: string): Observable<{ data: RegenerateSummaryResult }> {\n const detail = SEED_HISTORY_DETAILS[callId];\n if (!detail) {\n return throwError(() => ({ message: 'Call not found.', status: 404 }));\n }\n if (!detail.transcript.length) {\n return throwError(() => ({ message: 'No transcript on this call.', status: 400 }));\n }\n\n const turnCount = detail.transcript.filter((line) => line.who !== 'system').length;\n const summary = `Regenerated summary (${new Date().toLocaleString()}): ${detail.summary}`;\n detail.summary = summary;\n SEED_HISTORY_DETAILS[callId] = detail;\n\n return this.mock({\n callId,\n summary,\n summaryModel: 'gpt-4o-mini',\n summaryGeneratedAt: new Date().toISOString(),\n transcriptTurnCount: turnCount,\n });\n }\n\n postTakeover(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({ ...c, status: 'takeover', assigned: 'You' }));\n return this.mock({ success: true });\n }\n\n postResumeAi(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({ ...c, status: 'ai', assigned: null, aiPaused: false }));\n return this.mock({ success: true });\n }\n\n postPause(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({ ...c, aiPaused: true }));\n return this.mock({ success: true });\n }\n\n postTransfer(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({ ...c, status: 'transferring' }));\n return this.mock({ success: true });\n }\n\n postEnd(id: string): Observable<{ data: { success: boolean } }> {\n this.liveCalls.update((calls) => calls.filter((c) => c.id !== id));\n return this.mock({ success: true });\n }\n\n postMessage(id: string, text: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({\n ...c,\n transcript: [...c.transcript, { who: 'staff' as const, text, at: Date.now() }],\n }));\n return this.mock({ success: true });\n }\n\n postReview(id: string): Observable<{ data: { review: string } }> {\n this.history.update((rows) =>\n rows.map((h) => (h.id === id ? { ...h, review: 'reviewed' as const } : h)),\n );\n const detail = SEED_HISTORY_DETAILS[id];\n if (detail) {\n detail.review = 'reviewed';\n }\n return this.mock({ review: 'reviewed' });\n }\n\n getTasks(filters?: TaskFilters): Observable<{ data: TaskItem[] }> {\n let rows = this.tasks();\n if (filters?.status) rows = rows.filter((t) => t.status === filters.status);\n if (filters?.type) rows = rows.filter((t) => t.type === filters.type);\n if (filters?.source) rows = rows.filter((t) => t.source === filters.source);\n if (filters?.callId) rows = rows.filter((t) => t.callId === filters.callId);\n return this.mock(rows);\n }\n\n getCallTasks(callId: string): Observable<{ data: TaskItem[] }> {\n return this.getTasks({ callId });\n }\n\n createTask(req: CreateTaskRequest): Observable<{ data: TaskItem }> {\n let description = req.description?.trim() ?? '';\n if (!description && req.callId) {\n description = SEED_HISTORY_DETAILS[req.callId]?.summary ?? '';\n }\n\n const task: TaskItem = {\n id: `TK-${Date.now()}`,\n created: Date.now(),\n title: req.title.trim(),\n type: req.type,\n description,\n patient: req.patient?.trim() || '—',\n priority: req.priority ?? 'normal',\n status: 'open',\n source: 'manual',\n assignee: req.assignee?.trim() || 'Front desk',\n callId: req.callId,\n };\n\n this.tasks.update((rows) => [task, ...rows]);\n return this.mock(task);\n }\n\n patchTask(id: string, status: TaskItem['status']): Observable<{ data: TaskItem | null }> {\n let updated: TaskItem | null = null;\n this.tasks.update((rows) =>\n rows.map((t) => {\n if (t.id !== id) return t;\n updated = { ...t, status };\n return updated;\n }),\n );\n return this.mock(updated);\n }\n\n getAnalytics(range: string): Observable<{ data: AnalyticsData }> {\n return this.mock({ ...SEED_ANALYTICS, range });\n }\n\n getSettings(): Observable<{ data: AgentSettings }> {\n const data = this.withEffectiveWelcome(this.settings());\n return this.mock(data);\n }\n\n putSettings(next: AgentSettings): Observable<{ data: AgentSettings }> {\n const saved = this.withEffectiveWelcome(structuredClone(next));\n this.settings.set(saved);\n return this.mock(saved);\n }\n\n previewVoice(_voiceId: string): Observable<Blob> {\n // Silent tiny wav so mock mode does not break the Play button.\n const silent = new Uint8Array([\n 0x52, 0x49, 0x46, 0x46, 0x24, 0x00, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6d, 0x74,\n 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x40, 0x1f, 0x00, 0x00, 0x80, 0x3e,\n 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00,\n ]);\n return of(new Blob([silent], { type: 'audio/wav' })).pipe(delay(MOCK_DELAY_MS));\n }\n\n private withEffectiveWelcome(settings: AgentSettings): AgentSettings {\n return {\n ...settings,\n effectiveWelcomeMessage: computeEffectiveWelcomeMessage(settings),\n };\n }\n\n getAudit(q?: string, actor?: string): Observable<{ data: AuditEvent[] }> {\n let rows = SEED_AUDIT;\n if (q) {\n const needle = q.toLowerCase();\n rows = rows.filter(\n (e) =>\n e.action.toLowerCase().includes(needle) ||\n e.detail.toLowerCase().includes(needle) ||\n e.target.toLowerCase().includes(needle),\n );\n }\n if (actor) rows = rows.filter((e) => e.actor.toLowerCase().includes(actor.toLowerCase()));\n return this.mock(rows);\n }\n\n getSetup(): Observable<{ data: SetupData }> {\n return this.mock(SEED_SETUP);\n }\n\n activateSetup(): Observable<{ data: { success: boolean } }> {\n return this.mock({ success: true });\n }\n\n getLocations(): Observable<{ data: LocationOption[] }> {\n return this.mock(SEED_LOCATIONS);\n }\n\n getProviders(): Observable<{ data: ProviderOption[] }> {\n return this.mock(SEED_PROVIDERS);\n }\n\n getStreamLines(): TranscriptLine[] {\n return getStreamingLines();\n }\n\n appendStreamLine(callId: string, line: TranscriptLine): void {\n this.patchLive(callId, (c) => ({\n ...c,\n transcript: [...c.transcript, line],\n }));\n }\n\n usesMockStreaming(): boolean {\n return true;\n }\n\n getCallApiLogs(callId: string): Observable<ApiLogListResponse> {\n const template = SEED_CALL_API_LOGS[callId] ?? SEED_CALL_API_LOGS['LC-4821'] ?? [];\n const items = template.map((row) => ({ ...row, callId }));\n return of({ items: structuredClone(items), total: items.length }).pipe(delay(MOCK_DELAY_MS));\n }\n\n getApiLogs(filters: ApiLogFilters = {}): Observable<ApiLogListResponse> {\n let rows = allSeedLogs();\n if (filters.callId) {\n rows = rows.filter((r) => r.callId === filters.callId);\n }\n if (filters.provider) {\n const providers = filters.provider.split(',').filter(Boolean);\n rows = rows.filter((r) => providers.includes(r.provider));\n }\n if (filters.success !== undefined) {\n rows = rows.filter((r) => r.success === filters.success);\n }\n if (filters.statusCode != null) {\n rows = rows.filter((r) => r.statusCode === filters.statusCode);\n }\n if (filters.operation) {\n const op = filters.operation.toLowerCase();\n rows = rows.filter((r) => r.operation.toLowerCase().includes(op));\n }\n if (filters.search) {\n const q = filters.search.toLowerCase();\n rows = rows.filter(\n (r) =>\n r.operation.toLowerCase().includes(q) ||\n r.urlPath.toLowerCase().includes(q) ||\n (r.errorMessage?.toLowerCase().includes(q) ?? false) ||\n (r.toolName?.toLowerCase().includes(q) ?? false),\n );\n }\n if (filters.from) {\n const from = Date.parse(filters.from);\n rows = rows.filter((r) => Date.parse(r.startedAt) >= from);\n }\n if (filters.to) {\n const to = Date.parse(filters.to);\n rows = rows.filter((r) => Date.parse(r.startedAt) <= to);\n }\n rows = [...rows].sort((a, b) => Date.parse(a.startedAt) - Date.parse(b.startedAt));\n const page = filters.page ?? 1;\n const limit = filters.limit ?? 50;\n const start = (page - 1) * limit;\n const items = rows.slice(start, start + limit);\n return of({ items, total: rows.length }).pipe(delay(MOCK_DELAY_MS));\n }\n\n getApiLogDetail(logId: string): Observable<{ data: ApiLogDetail | null }> {\n const detail = SEED_API_LOG_DETAILS[logId];\n if (detail) {\n return this.mock(structuredClone(detail));\n }\n const listItem = allSeedLogs().find((r) => r.id === logId);\n if (!listItem) {\n return of({ data: null }).pipe(delay(MOCK_DELAY_MS));\n }\n const fallback: ApiLogDetail = {\n ...listItem,\n traceId: null,\n requestBody: listItem.requestPreview ? { preview: listItem.requestPreview } : null,\n responseBody: listItem.responsePreview ? { preview: listItem.responsePreview } : null,\n metadata: null,\n completedAt: listItem.startedAt,\n };\n return this.mock(fallback);\n }\n\n getApiLogStats(): Observable<{ data: ApiLogStats }> {\n return this.mock(structuredClone(SEED_API_LOG_STATS));\n }\n\n getOutboundPurposes(includeInactive = false): Observable<OutboundPurposesResponse> {\n let rows = [...this.outboundPurposes()].sort((a, b) => a.sortOrder - b.sortOrder);\n if (!includeInactive) {\n rows = rows.filter((p) => p.isActive);\n }\n return of({ purposes: structuredClone(rows) }).pipe(delay(MOCK_DELAY_MS));\n }\n\n createOutboundPurpose(body: CreateOutboundPurposeRequest): Observable<OutboundPurpose> {\n const purpose: OutboundPurpose = {\n purposeId: `purpose-${Date.now()}`,\n label: body.label,\n description: body.description ?? '',\n sampleOpening: body.sampleOpening ?? '',\n openingTemplate: body.openingTemplate,\n agentContextHint: body.agentContextHint ?? null,\n requiredFields: body.requiredFields,\n allowsCustomScript: body.allowsCustomScript ?? false,\n isSystem: false,\n isActive: true,\n sortOrder: body.sortOrder ?? this.outboundPurposes().length + 1,\n placeholders: structuredClone(DEFAULT_PLACEHOLDERS),\n };\n this.outboundPurposes.update((list) => [...list, purpose]);\n return of(structuredClone(purpose)).pipe(delay(MOCK_DELAY_MS));\n }\n\n updateOutboundPurpose(\n purposeId: string,\n body: UpdateOutboundPurposeRequest,\n ): Observable<OutboundPurpose> {\n let updated: OutboundPurpose | null = null;\n this.outboundPurposes.update((list) =>\n list.map((p) => {\n if (p.purposeId !== purposeId) return p;\n updated = {\n ...p,\n ...body,\n label: body.label ?? p.label,\n description: body.description ?? p.description,\n sampleOpening: body.sampleOpening ?? p.sampleOpening,\n openingTemplate: body.openingTemplate ?? p.openingTemplate,\n agentContextHint:\n body.agentContextHint !== undefined ? body.agentContextHint : p.agentContextHint,\n requiredFields: body.requiredFields ?? p.requiredFields,\n allowsCustomScript: body.allowsCustomScript ?? p.allowsCustomScript,\n isActive: body.isActive ?? p.isActive,\n sortOrder: body.sortOrder ?? p.sortOrder,\n };\n return updated;\n }),\n );\n if (!updated) {\n return throwError(() => new Error('Purpose not found'));\n }\n const saved: OutboundPurpose = updated;\n return of(structuredClone(saved)).pipe(delay(MOCK_DELAY_MS));\n }\n\n deleteOutboundPurpose(purposeId: string): Observable<{ success: boolean }> {\n const target = this.outboundPurposes().find((p) => p.purposeId === purposeId);\n if (!target) {\n return of({ success: false }).pipe(delay(MOCK_DELAY_MS));\n }\n if (target.isSystem) {\n return of({ success: false }).pipe(delay(MOCK_DELAY_MS));\n }\n this.outboundPurposes.update((list) => list.filter((p) => p.purposeId !== purposeId));\n return of({ success: true }).pipe(delay(MOCK_DELAY_MS));\n }\n\n placeOutboundCall(body: PlaceOutboundCallRequest): Observable<PlaceOutboundCallResponse> {\n return of({\n success: true,\n callId: `LC-${Math.floor(4800 + Math.random() * 100)}`,\n message: `Outbound call started to ${body.phone}`,\n }).pipe(delay(MOCK_DELAY_MS));\n }\n\n private patchLive(id: string, fn: (call: LiveCall) => LiveCall): void {\n this.liveCalls.update((calls) =>\n calls.map((c) => (c.id === id ? fn(structuredClone(c)) : c)),\n );\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, catchError, forkJoin, map, of, switchMap, throwError } from 'rxjs';\n\nimport { createVoiceReceptionistPaths } from '../api-paths';\nimport { VOICE_RECEPTIONIST_CONFIG } from '../config';\nimport { extractApiRows } from '../extract-api-rows';\nimport {\n ApiLogDetail,\n ApiLogFilters,\n ApiLogListResponse,\n ApiLogStats,\n} from '../models/api-log.types';\nimport {\n CreateOutboundPurposeRequest,\n OutboundPurpose,\n OutboundPurposesResponse,\n PlaceOutboundCallRequest,\n PlaceOutboundCallResponse,\n UpdateOutboundPurposeRequest,\n} from '../models/outbound-purpose.types';\nimport {\n AgentSettings,\n AiReceptionistStatus,\n AnalyticsData,\n AuditEvent,\n DashboardData,\n HistoryCall,\n HistoryDetail,\n LiveCall,\n RegenerateSummaryResult,\n LocationOption,\n ProviderOption,\n SetupData,\n TaskItem,\n CreateTaskRequest,\n TaskFilters,\n ToolEvent,\n TranscriptLine,\n CallRecordingMeta,\n} from '../models/ai-receptionist.types';\nimport {\n AnalyticsDto,\n AiCreatedAppointmentDto,\n DashboardSummaryDto,\n HistoryCallDto,\n HistoryDetailDto,\n LiveCallDto,\n AiStatusDto,\n SetupDto,\n RecordingDto,\n RegenerateSummaryResponseDto,\n TaskDto,\n} from '../models/api-dto.types';\nimport {\n asAuditList,\n asHistoryList,\n asLiveCallList,\n asTaskList,\n asTranscriptList,\n isHistoryCallDto,\n mapAnalyticsDto,\n mapAiCreatedAppointmentDto,\n mapAuditEventDto,\n mapDashboardSummaryDto,\n mapHistoryCallDto,\n mapHistoryDetailDto,\n mapLiveCallDto,\n mapLocationDto,\n mapProviderDto,\n mapRecordingMeta,\n mapRegenerateSummaryResponse,\n mapCreateTaskRequest,\n mapSettingsResponse,\n mapSettingsToRequest,\n mapSetupDto,\n mapStatusDto,\n mapTaskDto,\n mapToolEvent,\n mapTranscriptLine,\n toApiTaskStatus,\n} from './ai-receptionist-api.mappers';\nimport { AiReceptionistApiMockService } from './ai-receptionist-api.mock';\n\n@Injectable({ providedIn: 'root' })\nexport class AiReceptionistApiService {\n private readonly http = inject(HttpClient);\n private readonly mock = inject(AiReceptionistApiMockService);\n private readonly config = inject(VOICE_RECEPTIONIST_CONFIG);\n private readonly paths = createVoiceReceptionistPaths(this.config);\n private readonly arBase = this.paths.aiReceptionistPath();\n\n private get useMock(): boolean {\n return !!this.config.useMockApi;\n }\n\n getStatus(): Observable<{ data: AiReceptionistStatus }> {\n if (this.useMock) return this.mock.getStatus();\n return this.http.get<AiStatusDto>(`${this.arBase}/status`).pipe(\n map((body) => ({ data: mapStatusDto(body) })),\n catchError((err: HttpErrorResponse) =>\n throwError(() => ({\n message: this.apiErrorMessage(err, 'Failed to load agent status.'),\n status: err.status,\n })),\n ),\n );\n }\n\n /** Prefer this for the dashboard On/Off switch — PUT { enabled }. */\n setAgentOnline(enabled: boolean): Observable<{ data: AiReceptionistStatus }> {\n if (this.useMock) {\n this.mock.setAgentOn(enabled);\n return this.mock.getStatus();\n }\n return this.http\n .put<AiStatusDto>(`${this.arBase}/agent-online`, { enabled })\n .pipe(\n map((body) => ({ data: mapStatusDto(body) })),\n catchError((err: HttpErrorResponse) =>\n throwError(() => ({\n message: this.apiErrorMessage(err, 'Failed to update agent online status.'),\n status: err.status,\n })),\n ),\n );\n }\n\n /** @deprecated Prefer setAgentOnline — kept for setup wizard activate flow. */\n setAgentOn(on: boolean): void {\n if (this.useMock) {\n this.mock.setAgentOn(on);\n return;\n }\n const path = on ? 'activate' : 'deactivate';\n this.http.post(`${this.arBase}/${path}`, {}).subscribe();\n }\n\n getDashboard(): Observable<{ data: DashboardData }> {\n if (this.useMock) return this.mock.getDashboard();\n return forkJoin({\n summary: this.http.get<DashboardSummaryDto>(`${this.arBase}/dashboard/summary`),\n history: this.http.get<unknown>(`${this.arBase}/calls/history`, {\n params: new HttpParams().set('page', '1').set('limit', '5'),\n }),\n tasks: this.http\n .get<unknown>(`${this.arBase}/tasks`, {\n params: new HttpParams().set('source', 'voice').set('limit', '5'),\n })\n .pipe(catchError(() => of([]))),\n appointments: this.http\n .get<AiCreatedAppointmentDto[] | { items: AiCreatedAppointmentDto[] }>(\n `${this.arBase}/dashboard/appointments`,\n { params: new HttpParams().set('limit', '5') },\n )\n .pipe(catchError(() => of([] as AiCreatedAppointmentDto[]))),\n }).pipe(\n map(({ summary, history, tasks, appointments }) => ({\n data: {\n stats: mapDashboardSummaryDto(summary),\n liveCalls: [],\n latestTasks: asTaskList(tasks)\n .map(mapTaskDto)\n .sort((a, b) => b.created - a.created)\n .slice(0, 5),\n latestAppointments: (Array.isArray(appointments)\n ? appointments\n : appointments.items ?? []\n ).map(mapAiCreatedAppointmentDto),\n recentHistory: asHistoryList(history).map(mapHistoryCallDto),\n },\n })),\n );\n }\n\n getLiveCalls(): Observable<{ data: LiveCall[] }> {\n if (this.useMock) return this.mock.getLiveCalls();\n return this.http.get<unknown>(`${this.arBase}/calls/live`).pipe(\n map((body) => ({ data: asLiveCallList(body).map(mapLiveCallDto) })),\n );\n }\n\n getLiveCall(id: string): Observable<{ data: LiveCall | null }> {\n if (this.useMock) return this.mock.getLiveCall(id);\n const enc = encodeURIComponent(id);\n return this.http.get<LiveCallDto>(`${this.arBase}/calls/${enc}`).pipe(\n map((dto) => ({ data: dto?.id ? mapLiveCallDto(dto) : null })),\n catchError(() => of({ data: null })),\n );\n }\n\n getCallTranscript(id: string): Observable<{ data: TranscriptLine[] }> {\n if (this.useMock) return this.mock.getCallTranscript(id);\n const enc = encodeURIComponent(id);\n return this.http.get<unknown>(`${this.arBase}/calls/${enc}/transcript`).pipe(\n map((body) => ({ data: asTranscriptList(body).map(mapTranscriptLine) })),\n catchError(() => of({ data: [] })),\n );\n }\n\n getCallSummary(id: string): Observable<{\n data: { summary: string; transcript: TranscriptLine[]; tools: ToolEvent[] } | null;\n }> {\n if (this.useMock) return this.mock.getCallSummary(id);\n const enc = encodeURIComponent(id);\n return this.http.get<HistoryDetailDto>(`${this.arBase}/calls/${enc}/summary`).pipe(\n map((dto) => ({\n data: dto\n ? {\n summary: dto.summary ?? '',\n transcript: (dto.transcript ?? []).map(mapTranscriptLine),\n tools: (dto.tools ?? []).map(mapToolEvent),\n }\n : null,\n })),\n catchError(() => of({ data: null })),\n );\n }\n\n getCallRecording(callId: string): Observable<CallRecordingMeta> {\n if (this.useMock) return this.mock.getCallRecording(callId);\n const enc = encodeURIComponent(callId);\n return this.http.get<RecordingDto>(`${this.arBase}/calls/${enc}/recording`).pipe(\n map((dto) => mapRecordingMeta(dto)),\n catchError(() =>\n of<CallRecordingMeta>({\n callId,\n status: 'unavailable',\n url: null,\n message: 'No recording available for this call',\n }),\n ),\n );\n }\n\n /** Fetch audio bytes with JWT (interceptor). Pass relative path from metadata.url. */\n getCallRecordingBlob(audioPath: string): Observable<Blob> {\n if (this.useMock) return this.mock.getCallRecordingBlob();\n const url = audioPath.startsWith('http') ? audioPath : `${this.paths.apiRoot()}${audioPath}`;\n return this.http.get(url, { responseType: 'blob' });\n }\n\n getHistory(filters?: {\n q?: string;\n dir?: string;\n outcome?: string;\n location?: string;\n review?: 'needs' | 'reviewed';\n }): Observable<{ data: HistoryCall[] }> {\n if (this.useMock) return this.mock.getHistory(filters);\n let params = new HttpParams().set('page', '1').set('limit', '100');\n if (filters?.q) params = params.set('search', filters.q);\n if (filters?.dir) params = params.set('direction', filters.dir);\n if (filters?.outcome) params = params.set('outcome', filters.outcome);\n if (filters?.location) params = params.set('location', filters.location);\n if (filters?.review) params = params.set('review', filters.review);\n return this.http.get<unknown>(`${this.arBase}/calls/history`, { params }).pipe(\n map((body) => ({ data: asHistoryList(body).map(mapHistoryCallDto) })),\n );\n }\n\n getCallDetail(id: string): Observable<{ data: HistoryDetail | null }> {\n if (this.useMock) return this.mock.getCallDetail(id);\n const enc = encodeURIComponent(id);\n return forkJoin({\n call: this.http.get<HistoryCallDto | LiveCallDto>(`${this.arBase}/calls/${enc}`),\n summary: this.http.get<HistoryDetailDto>(`${this.arBase}/calls/${enc}/summary`),\n recording: this.http\n .get<RecordingDto>(`${this.arBase}/calls/${enc}/recording`)\n .pipe(catchError(() => of({ callId: id, url: null, message: '' }))),\n }).pipe(\n map(({ call, summary, recording }) => {\n if (!isHistoryCallDto(call)) return { data: null };\n return {\n data: mapHistoryDetailDto(call, summary, recording?.url),\n };\n }),\n catchError(() => of({ data: null })),\n );\n }\n\n regenerateCallSummary(callId: string): Observable<{ data: RegenerateSummaryResult }> {\n if (this.useMock) return this.mock.regenerateCallSummary(callId);\n const enc = encodeURIComponent(callId);\n return this.http\n .post<RegenerateSummaryResponseDto>(`${this.arBase}/calls/${enc}/summary/regenerate`, {})\n .pipe(\n map((body) => ({ data: mapRegenerateSummaryResponse(body) })),\n catchError((err: HttpErrorResponse) =>\n throwError(() => ({\n message: this.apiErrorMessage(err, 'Failed to regenerate summary.'),\n status: err.status,\n })),\n ),\n );\n }\n\n postTakeover(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postTakeover(id);\n return this.postCallAction(id, 'takeover');\n }\n\n postResumeAi(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postResumeAi(id);\n return this.postCallAction(id, 'resume-ai');\n }\n\n postPause(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postPause(id);\n return this.postCallAction(id, 'pause');\n }\n\n postTransfer(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postTransfer(id);\n return this.postCallAction(id, 'transfer');\n }\n\n postEnd(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postEnd(id);\n const enc = encodeURIComponent(id);\n return this.http\n .post<{ ok: boolean }>(`${this.arBase}/calls/${enc}/end`, {})\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n postMessage(id: string, text: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postMessage(id, text);\n const enc = encodeURIComponent(id);\n return this.http\n .post<{ ok: boolean }>(`${this.arBase}/calls/${enc}/messages`, { text })\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n postReview(id: string): Observable<{ data: { review: string } }> {\n if (this.useMock) return this.mock.postReview(id);\n const enc = encodeURIComponent(id);\n return this.http\n .post<{ ok: boolean }>(`${this.arBase}/calls/${enc}/review`, {})\n .pipe(map(() => ({ data: { review: 'reviewed' } })));\n }\n\n getTasks(filters?: TaskFilters): Observable<{ data: TaskItem[] }> {\n if (this.useMock) return this.mock.getTasks(filters);\n let params = new HttpParams();\n if (filters?.status) {\n const apiStatus = filters.status === 'in_progress' ? 'in-progress' : filters.status;\n params = params.set('status', apiStatus);\n }\n if (filters?.type) params = params.set('type', filters.type);\n if (filters?.source) params = params.set('source', filters.source);\n if (filters?.callId) params = params.set('callId', filters.callId);\n if (filters?.limit != null) params = params.set('limit', String(filters.limit));\n return this.http.get<unknown>(`${this.arBase}/tasks`, { params }).pipe(\n map((body) => ({ data: asTaskList(body).map(mapTaskDto) })),\n );\n }\n\n getCallTasks(callId: string): Observable<{ data: TaskItem[] }> {\n if (this.useMock) return this.mock.getCallTasks(callId);\n const enc = encodeURIComponent(callId);\n return this.http.get<unknown>(`${this.arBase}/calls/${enc}/tasks`).pipe(\n map((body) => ({ data: asTaskList(body).map(mapTaskDto) })),\n );\n }\n\n createTask(req: CreateTaskRequest): Observable<{ data: TaskItem }> {\n if (this.useMock) return this.mock.createTask(req);\n return this.http\n .post<unknown>(`${this.arBase}/tasks`, mapCreateTaskRequest(req))\n .pipe(map((body) => ({ data: mapTaskDto(body as TaskDto) })));\n }\n\n patchTask(id: string, status: TaskItem['status']): Observable<{ data: TaskItem | null }> {\n if (this.useMock) return this.mock.patchTask(id, status);\n const enc = encodeURIComponent(id);\n return this.http\n .patch<unknown>(`${this.arBase}/tasks/${enc}`, { status: toApiTaskStatus(status) })\n .pipe(map((body) => ({ data: mapTaskDto(body as TaskDto) })));\n }\n\n getAnalytics(range: string): Observable<{ data: AnalyticsData }> {\n if (this.useMock) return this.mock.getAnalytics(range);\n const params = new HttpParams().set('range', range);\n return this.http.get<AnalyticsDto>(`${this.arBase}/analytics/summary`, { params }).pipe(\n map((body) => ({ data: mapAnalyticsDto(body, range) })),\n );\n }\n\n getSettings(): Observable<{ data: AgentSettings }> {\n if (this.useMock) return this.mock.getSettings();\n return forkJoin({\n settings: this.http.get<unknown>(`${this.arBase}/settings`),\n safety: this.http.get<unknown>(`${this.arBase}/settings/safety-checks`),\n }).pipe(\n map(({ settings, safety }) => ({\n data: mapSettingsResponse(settings, safety),\n })),\n );\n }\n\n putSettings(next: AgentSettings): Observable<{ data: AgentSettings }> {\n if (this.useMock) return this.mock.putSettings(next);\n return this.http\n .put<unknown>(`${this.arBase}/settings`, { settings: mapSettingsToRequest(next) })\n .pipe(switchMap(() => this.getSettings()));\n }\n\n /** ElevenLabs spoken sample for Agent Settings voice picker. */\n previewVoice(voiceId: string): Observable<Blob> {\n if (this.useMock) return this.mock.previewVoice(voiceId);\n return this.http.post(`${this.arBase}/settings/preview-voice`, { voiceId }, {\n responseType: 'blob',\n });\n }\n\n getAudit(q?: string): Observable<{ data: AuditEvent[] }> {\n if (this.useMock) return this.mock.getAudit(q);\n let params = new HttpParams();\n if (q) params = params.set('search', q);\n return this.http.get<unknown>(`${this.arBase}/audit`, { params }).pipe(\n map((body) => ({\n data: asAuditList(body).map((e, i) => mapAuditEventDto(e, i)),\n })),\n );\n }\n\n getSetup(): Observable<{ data: SetupData }> {\n if (this.useMock) return this.mock.getSetup();\n return this.http.get<SetupDto>(`${this.arBase}/setup`).pipe(\n map((body) => ({ data: mapSetupDto(body) })),\n );\n }\n\n activateSetup(): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.activateSetup();\n return this.http\n .post<{ activated: boolean }>(`${this.arBase}/setup/activate`, {})\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n getLocations(): Observable<{ data: LocationOption[] }> {\n if (this.useMock) return this.mock.getLocations();\n return this.http.get<unknown>(this.paths.apiPath('/locations')).pipe(\n map((body) => ({ data: extractApiRows(body).map(mapLocationDto) })),\n );\n }\n\n getProviders(): Observable<{ data: ProviderOption[] }> {\n if (this.useMock) return this.mock.getProviders();\n return this.http.get<unknown>(this.paths.v1Path('/providers')).pipe(\n map((body) => ({ data: extractApiRows(body).map(mapProviderDto) })),\n );\n }\n\n getStreamLines(): TranscriptLine[] {\n return this.mock.getStreamLines();\n }\n\n appendStreamLine(callId: string, line: TranscriptLine): void {\n this.mock.appendStreamLine(callId, line);\n }\n\n usesMockStreaming(): boolean {\n return this.useMock;\n }\n\n getCallApiLogs(callId: string): Observable<ApiLogListResponse> {\n if (this.useMock) return this.mock.getCallApiLogs(callId);\n const enc = encodeURIComponent(callId);\n return this.http.get<ApiLogListResponse>(`${this.arBase}/calls/${enc}/api-logs`).pipe(\n map((body) => ({\n items: [...(body.items ?? [])].sort(\n (a, b) => Date.parse(a.startedAt) - Date.parse(b.startedAt),\n ),\n total: body.total ?? body.items?.length ?? 0,\n })),\n );\n }\n\n getApiLogs(filters: ApiLogFilters = {}): Observable<ApiLogListResponse> {\n if (this.useMock) return this.mock.getApiLogs(filters);\n let params = new HttpParams();\n if (filters.provider) params = params.set('provider', filters.provider);\n if (filters.success !== undefined) params = params.set('success', String(filters.success));\n if (filters.statusCode != null) params = params.set('statusCode', String(filters.statusCode));\n if (filters.operation) params = params.set('operation', filters.operation);\n if (filters.callId) params = params.set('callId', filters.callId);\n if (filters.from) params = params.set('from', filters.from);\n if (filters.to) params = params.set('to', filters.to);\n if (filters.search) params = params.set('search', filters.search);\n if (filters.page != null) params = params.set('page', String(filters.page));\n if (filters.limit != null) params = params.set('limit', String(filters.limit));\n return this.http.get<ApiLogListResponse>(`${this.arBase}/api-logs`, { params });\n }\n\n getApiLogDetail(logId: string): Observable<{ data: ApiLogDetail | null }> {\n if (this.useMock) return this.mock.getApiLogDetail(logId);\n const enc = encodeURIComponent(logId);\n return this.http\n .get<ApiLogDetail>(`${this.arBase}/api-logs/${enc}`)\n .pipe(map((data) => ({ data })));\n }\n\n getApiLogStats(): Observable<{ data: ApiLogStats }> {\n if (this.useMock) return this.mock.getApiLogStats();\n return this.http\n .get<ApiLogStats>(`${this.arBase}/api-logs/stats`)\n .pipe(map((data) => ({ data })));\n }\n\n getOutboundPurposes(includeInactive = false): Observable<OutboundPurposesResponse> {\n if (this.useMock) return this.mock.getOutboundPurposes(includeInactive);\n const params = includeInactive ? new HttpParams().set('includeInactive', 'true') : undefined;\n return this.http.get<OutboundPurposesResponse>(`${this.arBase}/calls/outbound/purposes`, {\n params,\n });\n }\n\n createOutboundPurpose(body: CreateOutboundPurposeRequest): Observable<OutboundPurpose> {\n if (this.useMock) return this.mock.createOutboundPurpose(body);\n return this.http.post<OutboundPurpose>(`${this.arBase}/calls/outbound/purposes`, body);\n }\n\n updateOutboundPurpose(\n purposeId: string,\n body: UpdateOutboundPurposeRequest,\n ): Observable<OutboundPurpose> {\n if (this.useMock) return this.mock.updateOutboundPurpose(purposeId, body);\n const enc = encodeURIComponent(purposeId);\n return this.http.patch<OutboundPurpose>(`${this.arBase}/calls/outbound/purposes/${enc}`, body);\n }\n\n deleteOutboundPurpose(purposeId: string): Observable<{ success: boolean }> {\n if (this.useMock) return this.mock.deleteOutboundPurpose(purposeId);\n const enc = encodeURIComponent(purposeId);\n return this.http.delete<{ success: boolean }>(\n `${this.arBase}/calls/outbound/purposes/${enc}`,\n );\n }\n\n placeOutboundCall(body: PlaceOutboundCallRequest): Observable<PlaceOutboundCallResponse> {\n if (this.useMock) return this.mock.placeOutboundCall(body);\n return this.http.post<PlaceOutboundCallResponse>(`${this.arBase}/calls/outbound`, body).pipe(\n catchError((err: HttpErrorResponse) => {\n const detail =\n typeof err.error === 'object' && err.error && 'message' in err.error\n ? String((err.error as { message: unknown }).message)\n : err.message;\n return throwError(() => ({ message: detail || 'Failed to place outbound call.' }));\n }),\n );\n }\n\n private postCallAction(id: string, action: string): Observable<{ data: { success: boolean } }> {\n const enc = encodeURIComponent(id);\n return this.http\n .post<unknown>(`${this.arBase}/calls/${enc}/${action}`, {})\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n private apiErrorMessage(err: HttpErrorResponse, fallback: string): string {\n const body = err.error;\n if (typeof body === 'object' && body && 'message' in body) {\n return String((body as { message: unknown }).message);\n }\n if (typeof body === 'string' && body.trim()) return body;\n return fallback;\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { catchError, finalize, of, switchMap, tap, throwError } from 'rxjs';\n\nimport { AiReceptionistApiService } from './ai-receptionist-api.service';\n\nexport type AgentOnlineKnownState = boolean | null;\n\n/**\n * Shared source of truth for Ava online/offline across topbar + module nav.\n * Always re-fetches GET /status after mutations.\n */\n@Injectable({ providedIn: 'root' })\nexport class AgentOnlineService {\n private readonly api = inject(AiReceptionistApiService);\n\n /** true = online, false = offline, null = unknown / not loaded */\n private readonly _online = signal<AgentOnlineKnownState>(null);\n private readonly _loading = signal(false);\n private readonly _toggling = signal(false);\n private readonly _error = signal<string | null>(null);\n private readonly _readiness = signal<number | null>(null);\n\n readonly online = this._online.asReadonly();\n readonly loading = this._loading.asReadonly();\n readonly toggling = this._toggling.asReadonly();\n readonly error = this._error.asReadonly();\n readonly readiness = this._readiness.asReadonly();\n\n refresh(): void {\n this._loading.set(true);\n this._error.set(null);\n this.api.getStatus().subscribe({\n next: ({ data }) => {\n this._online.set(data.agentOn);\n this._readiness.set(data.readiness);\n this._loading.set(false);\n },\n error: (err: { message?: string }) => {\n this._online.set(null);\n this._error.set(err.message ?? 'Could not load agent status.');\n this._loading.set(false);\n },\n });\n }\n\n /**\n * PUT /agent-online then re-fetch GET /status.\n */\n setOnline(enabled: boolean) {\n this._toggling.set(true);\n this._error.set(null);\n\n return this.api.setAgentOnline(enabled).pipe(\n switchMap(() =>\n this.api.getStatus().pipe(\n catchError((err: { message?: string }) => {\n this._error.set(err.message ?? 'Status refresh failed after toggle.');\n return of(null);\n }),\n ),\n ),\n tap((result) => {\n if (result) {\n this._online.set(result.data.agentOn);\n this._readiness.set(result.data.readiness);\n } else {\n // Toggle likely succeeded; use requested value until refresh works.\n this._online.set(enabled);\n }\n }),\n catchError((err: { message?: string }) => {\n this._error.set(err.message ?? 'Failed to update agent online status.');\n return throwError(() => err);\n }),\n finalize(() => this._toggling.set(false)),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'eds-icon',\n standalone: true,\n template: `<span class=\"eds-icon\" [style.font-size.px]=\"size()\" [style.font-variation-settings]=\"variation()\">{{ name() }}</span>`,\n styles: `:host { display: inline-flex; line-height: 0; }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsIconComponent {\n readonly name = input.required<string>();\n readonly size = input(20);\n readonly fill = input(0);\n readonly weight = input(400);\n\n protected readonly variation = computed(\n () => `'FILL' ${this.fill()}, 'wght' ${this.weight()}, 'GRAD' 0, 'opsz' ${this.size()}`,\n );\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'eds-pulse-dot',\n standalone: true,\n template: `<span class=\"eds-pulse-dot\"><span class=\"eds-pulse-dot__core\"></span></span>`,\n styleUrl: './eds-pulse-dot.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsPulseDotComponent {}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nimport {\n VOICE_RECEPTIONIST_CONFIG,\n VOICE_RECEPTIONIST_SESSION,\n} from '../config';\nimport { AgentOnlineService } from '../services/agent-online.service';\nimport { EdsIconComponent } from '../ui/eds-icon.component';\nimport { EdsPulseDotComponent } from '../ui/eds-pulse-dot.component';\n\ninterface NavItem {\n id: string;\n label: string;\n icon: string;\n route: string;\n badge?: number;\n pulse?: boolean;\n adminOnly?: boolean;\n}\n\n@Component({\n selector: 'eds-module-nav',\n imports: [RouterLink, RouterLinkActive, EdsIconComponent, EdsPulseDotComponent],\n templateUrl: './eds-module-nav.component.html',\n styleUrl: './eds-module-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsModuleNavComponent {\n private readonly config = inject(VOICE_RECEPTIONIST_CONFIG);\n private readonly session = inject(VOICE_RECEPTIONIST_SESSION);\n private readonly agentOnline = inject(AgentOnlineService);\n\n protected readonly agentOn = this.agentOnline.online;\n protected readonly includePracticeNav = !!this.config.includePracticeNav;\n\n protected readonly receptionistNav: NavItem[] = [\n { id: 'dashboard', label: 'Dashboard', icon: 'space_dashboard', route: 'dashboard' },\n { id: 'live', label: 'Live Calls', icon: 'graphic_eq', route: 'live', pulse: true },\n { id: 'history', label: 'Call History', icon: 'history', route: 'history' },\n { id: 'analytics', label: 'Analytics', icon: 'monitoring', route: 'analytics' },\n { id: 'knowledge', label: 'Knowledge Base', icon: 'menu_book', route: 'knowledge' },\n { id: 'settings', label: 'Agent Settings', icon: 'tune', route: 'settings' },\n { id: 'audit', label: 'Audit Log', icon: 'verified', route: 'audit' },\n ];\n\n protected readonly practiceNav: NavItem[] = [\n { id: 'patients', label: 'Patients', icon: 'groups', route: 'patients' },\n { id: 'providers', label: 'Providers', icon: 'medical_services', route: 'providers' },\n { id: 'appointments', label: 'Appointments', icon: 'calendar_month', route: 'appointments' },\n { id: 'admin', label: 'Admin', icon: 'admin_panel_settings', route: 'admin', adminOnly: true },\n ];\n\n constructor() {\n if (this.agentOnline.online() === null && !this.agentOnline.loading()) {\n this.agentOnline.refresh();\n }\n }\n\n protected showNavItem(item: NavItem): boolean {\n return !item.adminOnly || !!this.session?.isAdmin();\n }\n}\n","<nav class=\"eds-modnav\" aria-label=\"AI Receptionist\">\n <div class=\"eds-modnav-header\">\n <span class=\"eds-modnav-icon eds-gradient-brand\">\n <eds-icon name=\"graphic_eq\" [size]=\"18\" [fill]=\"1\" />\n </span>\n <div class=\"eds-modnav-titles\">\n <span class=\"eds-modnav-name\">AI Receptionist</span>\n <span class=\"eds-modnav-status\">\n @if (agentOn() === true) {\n <eds-pulse-dot />\n Answering calls\n } @else if (agentOn() === false) {\n Offline — front desk\n } @else {\n Status unknown\n }\n </span>\n </div>\n </div>\n\n <div class=\"eds-modnav-links\">\n @for (item of receptionistNav; track item.id) {\n <a\n [routerLink]=\"item.route\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: item.route === 'dashboard' }\"\n >\n <eds-icon [name]=\"item.icon\" [size]=\"18\" />\n <span class=\"eds-modnav-label\">{{ item.label }}</span>\n @if (item.pulse) {\n <eds-pulse-dot class=\"eds-modnav-pulse\" />\n }\n @if (item.badge) {\n <span class=\"eds-modnav-badge\">{{ item.badge }}</span>\n }\n </a>\n }\n </div>\n\n @if (includePracticeNav) {\n <p class=\"eds-modnav-section\">Practice</p>\n <div class=\"eds-modnav-links eds-modnav-links--practice\">\n @for (item of practiceNav; track item.id) {\n @if (showNavItem(item)) {\n <a [routerLink]=\"item.route\" routerLinkActive=\"active\">\n <eds-icon [name]=\"item.icon\" [size]=\"18\" />\n <span class=\"eds-modnav-label\">{{ item.label }}</span>\n </a>\n }\n }\n </div>\n }\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\n\n/**\n * Lightweight, reusable modal shell.\n *\n * Renders a centered card on top of a dimmed backdrop. Closes on backdrop\n * click, ESC key, or via the close button. Slot the modal body using\n * <ng-content>.\n */\n@Component({\n selector: 'app-modal',\n standalone: true,\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalComponent {\n @Input({ required: true }) title!: string;\n @Input() subtitle?: string;\n @Input() maxWidth = '640px';\n @Output() readonly closed = new EventEmitter<void>();\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n this.closed.emit();\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.closed.emit();\n }\n }\n\n close(): void {\n this.closed.emit();\n }\n}\n","<div class=\"modal-backdrop\" (click)=\"onBackdropClick($event)\" role=\"presentation\">\n <div\n class=\"modal-card\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"title\"\n [style.max-width]=\"maxWidth\"\n >\n <header class=\"modal-header\">\n <div class=\"modal-titles\">\n <h2 class=\"modal-title\">{{ title }}</h2>\n @if (subtitle) {\n <p class=\"modal-subtitle\">{{ subtitle }}</p>\n }\n </div>\n <button type=\"button\" class=\"modal-close\" (click)=\"close()\" aria-label=\"Close dialog\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </header>\n\n <div class=\"modal-body\">\n <ng-content />\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'positive';\n\n@Component({\n selector: 'eds-button',\n standalone: true,\n template: `\n <button [type]=\"type()\" [disabled]=\"disabled()\" [attr.data-variant]=\"variant()\" class=\"eds-btn\">\n <ng-content />\n </button>\n `,\n styleUrl: './eds-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsButtonComponent {\n readonly variant = input<ButtonVariant>('secondary');\n readonly type = input<'button' | 'submit'>('button');\n readonly disabled = input(false);\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\nimport { VOICE_RECEPTIONIST_SESSION } from '../config';\nimport { ToastService } from '../shared/toast.service';\nimport { ModalComponent } from '../shared/modal.component';\nimport { AgentOnlineService } from '../services/agent-online.service';\nimport { EdsButtonComponent } from '../ui/eds-button.component';\nimport { EdsIconComponent } from '../ui/eds-icon.component';\n\nconst PAGE_TITLES: Record<string, string> = {\n dashboard: 'Dashboard',\n live: 'Live Calls',\n history: 'Call History',\n tasks: 'Tasks & Follow-ups',\n analytics: 'Analytics',\n settings: 'Agent Settings',\n knowledge: 'Knowledge Base',\n audit: 'Audit Log',\n wizard: 'Setup Wizard',\n patients: 'Patients',\n providers: 'Providers',\n appointments: 'Appointments',\n admin: 'Admin',\n};\n\n@Component({\n selector: 'eds-topbar',\n imports: [EdsIconComponent, EdsButtonComponent, ModalComponent],\n templateUrl: './eds-topbar.component.html',\n styleUrl: './eds-topbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsTopbarComponent {\n private readonly router = inject(Router);\n private readonly sessionAdapter = inject(VOICE_RECEPTIONIST_SESSION);\n private readonly toast = inject(ToastService);\n protected readonly agentOnline = inject(AgentOnlineService);\n\n protected readonly pageTitle = signal('Dashboard');\n protected readonly confirmOffOpen = signal(false);\n\n protected readonly online = this.agentOnline.online;\n protected readonly loading = this.agentOnline.loading;\n protected readonly toggling = this.agentOnline.toggling;\n protected readonly statusError = this.agentOnline.error;\n\n protected readonly userEmail = computed(() => this.sessionAdapter?.email() ?? null);\n protected readonly showUser = computed(() => !!this.userEmail());\n protected readonly showLogout = computed(() => !!this.sessionAdapter);\n\n protected readonly userInitials = computed(() => {\n const email = this.userEmail()?.trim() ?? '';\n if (!email) return '?';\n const local = email.split('@')[0] ?? '';\n const parts = local.split(/[._-]+/).filter(Boolean);\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase();\n }\n return local.slice(0, 2).toUpperCase() || '?';\n });\n\n protected readonly statusLabel = computed(() => {\n if (this.loading() && this.online() === null) return 'Checking status…';\n if (this.online() === null) return 'Status unknown';\n return this.online()\n ? 'AI receptionist is answering calls'\n : 'AI is offline — calls go to front desk';\n });\n\n protected readonly switchDisabled = computed(\n () => this.loading() || this.toggling() || this.online() === null,\n );\n\n constructor() {\n this.agentOnline.refresh();\n this.updateTitle(this.router.url);\n this.router.events\n .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n .subscribe((e) => this.updateTitle(e.urlAfterRedirects));\n }\n\n protected onToggleClick(): void {\n if (this.switchDisabled()) return;\n\n if (this.online()) {\n this.confirmOffOpen.set(true);\n return;\n }\n\n this.applyOnline(true);\n }\n\n protected cancelConfirmOff(): void {\n this.confirmOffOpen.set(false);\n }\n\n protected confirmTurnOff(): void {\n this.confirmOffOpen.set(false);\n this.applyOnline(false);\n }\n\n private applyOnline(enabled: boolean): void {\n this.agentOnline.setOnline(enabled).subscribe({\n next: () => {\n this.toast.show(\n enabled\n ? 'AI receptionist is online — Ava will answer inbound calls.'\n : 'AI receptionist is offline — calls go to the front desk.',\n 'success',\n );\n },\n error: (err: { message?: string }) => {\n this.toast.show(err.message ?? 'Failed to update agent status.', 'error');\n this.agentOnline.refresh();\n },\n });\n }\n\n protected logout(): void {\n this.sessionAdapter?.logout();\n }\n\n private updateTitle(url: string): void {\n const base = url.split('?')[0].split(';')[0];\n const segments = base.split('/').filter(Boolean);\n const last = segments[segments.length - 1] ?? '';\n const prev = segments[segments.length - 2] ?? '';\n\n if (prev === 'live' && last && last !== 'live') {\n this.pageTitle.set('Live Monitor');\n return;\n }\n if (prev === 'history' && last && last !== 'history') {\n this.pageTitle.set('Call Detail');\n return;\n }\n if (prev === 'settings' && last === 'outbound-purposes') {\n this.pageTitle.set('Outbound Purposes');\n return;\n }\n this.pageTitle.set(PAGE_TITLES[last] ?? 'AI Receptionist');\n }\n}\n","<header class=\"eds-topbar\">\n <div class=\"eds-topbar-left\">\n <nav class=\"eds-breadcrumb eds-body-sm\" aria-label=\"Breadcrumb\">\n <span>AI Receptionist</span>\n <eds-icon name=\"chevron_right\" [size]=\"16\" />\n <span class=\"eds-breadcrumb-current\">{{ pageTitle() }}</span>\n </nav>\n </div>\n\n <div class=\"eds-topbar-right\">\n <div class=\"eds-agent-online\" [attr.data-state]=\"online() === null ? 'unknown' : online() ? 'on' : 'off'\">\n <button\n type=\"button\"\n class=\"eds-agent-toggle\"\n [disabled]=\"switchDisabled()\"\n [attr.aria-pressed]=\"online() === true\"\n [attr.aria-busy]=\"toggling()\"\n [title]=\"statusLabel()\"\n (click)=\"onToggleClick()\"\n >\n <span\n class=\"eds-agent-toggle__track\"\n [class.on]=\"online() === true\"\n [class.unknown]=\"online() === null\"\n >\n <span class=\"eds-agent-toggle__thumb\"></span>\n </span>\n <span class=\"eds-agent-toggle__copy\">\n <span class=\"eds-body-sm eds-agent-toggle__label\">\n @if (toggling()) {\n Updating…\n } @else if (online() === true) {\n Agent online\n } @else if (online() === false) {\n Agent offline\n } @else {\n Status unknown\n }\n </span>\n <span class=\"eds-agent-toggle__hint\">{{ statusLabel() }}</span>\n </span>\n </button>\n @if (statusError() && online() === null) {\n <button type=\"button\" class=\"eds-agent-retry eds-body-sm\" (click)=\"agentOnline.refresh()\">\n Retry\n </button>\n }\n </div>\n\n @if (showUser()) {\n <div class=\"eds-topbar-user\" [title]=\"userEmail()!\">\n <span class=\"eds-topbar-user__avatar\">{{ userInitials() }}</span>\n <span class=\"eds-topbar-user__email eds-body-sm\">{{ userEmail() }}</span>\n </div>\n }\n\n @if (showLogout()) {\n <button type=\"button\" class=\"eds-topbar-logout\" (click)=\"logout()\" aria-label=\"Sign out\" title=\"Sign out\">\n <eds-icon name=\"logout\" [size]=\"18\" />\n <span class=\"eds-body-sm\">Log out</span>\n </button>\n }\n </div>\n</header>\n\n@if (confirmOffOpen()) {\n <app-modal\n title=\"Turn off AI receptionist?\"\n subtitle=\"Inbound callers will be transferred to the front desk instead of Ava.\"\n maxWidth=\"480px\"\n (closed)=\"cancelConfirmOff()\"\n >\n <p class=\"eds-agent-confirm__body\">\n While offline, Ava will not answer calls. Callers are routed to the human receptionist\n at the front desk.\n </p>\n <div class=\"eds-agent-confirm__actions\">\n <eds-button variant=\"secondary\" type=\"button\" (click)=\"cancelConfirmOff()\">Cancel</eds-button>\n <eds-button variant=\"danger\" type=\"button\" [disabled]=\"toggling()\" (click)=\"confirmTurnOff()\">\n Turn off\n </eds-button>\n </div>\n </app-modal>\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\nimport { VOICE_RECEPTIONIST_CONFIG } from '../config';\nimport { ToastContainerComponent } from '../shared/toast-container.component';\nimport { EdsModuleNavComponent } from './eds-module-nav.component';\nimport { EdsTopbarComponent } from './eds-topbar.component';\n\n@Component({\n selector: 'eds-app-shell',\n imports: [\n RouterOutlet,\n EdsModuleNavComponent,\n EdsTopbarComponent,\n ToastContainerComponent,\n ],\n templateUrl: './eds-app-shell.component.html',\n styleUrl: './eds-app-shell.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsAppShellComponent {\n /** EHR embed: false (default). Standalone Voice Hub: set showModuleNav: true. */\n protected readonly showModuleNav = !!inject(VOICE_RECEPTIONIST_CONFIG).showModuleNav;\n}\n","<div class=\"eds-layout\">\n @if (showModuleNav) {\n <eds-module-nav />\n }\n <div class=\"eds-main\">\n <eds-topbar />\n <div class=\"eds-content\">\n <router-outlet />\n </div>\n </div>\n</div>\n<app-toast-container />\n","import { Routes } from '@angular/router';\n\nimport { EdsAppShellComponent } from './layout/eds-app-shell.component';\n\n/** Feature child routes (under the embed shell). */\nexport const VOICE_RECEPTIONIST_FEATURE_ROUTES: Routes = [\n { path: '', pathMatch: 'full', redirectTo: 'dashboard' },\n {\n path: 'dashboard',\n loadComponent: () =>\n import('./pages/dashboard-page/dashboard-page.component').then(\n (m) => m.DashboardPageComponent,\n ),\n },\n {\n path: 'live',\n loadComponent: () =>\n import('./pages/live-calls-page/live-calls-page.component').then(\n (m) => m.LiveCallsPageComponent,\n ),\n },\n {\n path: 'live/:id',\n loadComponent: () =>\n import('./pages/live-monitor-page/live-monitor-page.component').then(\n (m) => m.LiveMonitorPageComponent,\n ),\n },\n {\n path: 'history',\n loadComponent: () =>\n import('./pages/call-history-page/call-history-page.component').then(\n (m) => m.CallHistoryPageComponent,\n ),\n },\n {\n path: 'history/:id',\n loadComponent: () =>\n import('./pages/call-history-detail-page/call-history-detail-page.component').then(\n (m) => m.CallHistoryDetailPageComponent,\n ),\n },\n {\n path: 'tasks',\n loadComponent: () =>\n import('./pages/tasks-page/tasks-page.component').then((m) => m.TasksPageComponent),\n },\n {\n path: 'analytics',\n loadComponent: () =>\n import('./pages/analytics-page/analytics-page.component').then(\n (m) => m.AnalyticsPageComponent,\n ),\n },\n {\n path: 'settings',\n loadComponent: () =>\n import('./pages/settings-page/settings-page.component').then(\n (m) => m.SettingsPageComponent,\n ),\n },\n {\n path: 'settings/outbound-purposes',\n loadComponent: () =>\n import('./pages/outbound-purposes-page/outbound-purposes-page.component').then(\n (m) => m.OutboundPurposesPageComponent,\n ),\n },\n {\n path: 'knowledge',\n loadComponent: () =>\n import('./knowledge/pages/knowledge-hub.page').then((m) => m.KnowledgeHubPageComponent),\n },\n {\n path: 'audit',\n loadComponent: () =>\n import('./pages/audit-page/audit-page.component').then((m) => m.AuditPageComponent),\n },\n {\n path: 'wizard',\n loadComponent: () =>\n import('./pages/wizard-page/wizard-page.component').then((m) => m.WizardPageComponent),\n },\n];\n\n/**\n * Lazy-loadable routes for EHR (and standalone hosts).\n * Mount under a host path, e.g. `{ path: 'ai-receptionist', children: VOICE_RECEPTIONIST_ROUTES }`.\n */\nexport const VOICE_RECEPTIONIST_ROUTES: Routes = [\n {\n path: '',\n component: EdsAppShellComponent,\n children: VOICE_RECEPTIONIST_FEATURE_ROUTES,\n },\n];\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type BadgeTone = 'brand' | 'pos' | 'notice' | 'neg' | 'violet' | 'gray';\n\n@Component({\n selector: 'eds-badge',\n standalone: true,\n template: `<span class=\"eds-badge\" [attr.data-tone]=\"tone()\"><ng-content /></span>`,\n styleUrl: './eds-badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsBadgeComponent {\n readonly tone = input<BadgeTone>('gray');\n}\n","/*\n * Public API Surface of @edvak99/voice-receptionist-widget\n */\n\nexport {\n VOICE_RECEPTIONIST_CONFIG,\n VOICE_RECEPTIONIST_SESSION,\n type VoiceReceptionistConfig,\n type VoiceReceptionistSession,\n} from './lib/config';\nexport {\n provideVoiceReceptionist,\n type ProvideVoiceReceptionistOptions,\n} from './lib/provide-voice-receptionist';\nexport {\n VOICE_RECEPTIONIST_ROUTES,\n VOICE_RECEPTIONIST_FEATURE_ROUTES,\n} from './lib/routes';\nexport { EdsAppShellComponent } from './lib/layout/eds-app-shell.component';\nexport { ToastService, type ToastMessage } from './lib/shared/toast.service';\nexport { EdsBadgeComponent, type BadgeTone } from './lib/ui/eds-badge.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["now"],"mappings":"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"}
@@ -5,7 +5,7 @@ import * as i1 from '@angular/forms';
5
5
  import { FormsModule } from '@angular/forms';
6
6
  import { HttpClient, HttpParams } from '@angular/common/http';
7
7
  import { of, delay, map } from 'rxjs';
8
- import { V as VOICE_RECEPTIONIST_CONFIG, e as createVoiceReceptionistPaths, E as EdsButtonComponent, M as ModalComponent, T as ToastService, b as EdsIconComponent } from './edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-DClMfxeY.mjs';
8
+ import { V as VOICE_RECEPTIONIST_CONFIG, e as createVoiceReceptionistPaths, E as EdsButtonComponent, M as ModalComponent, T as ToastService, b as EdsIconComponent } from './edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs';
9
9
 
10
10
  const FAQ_CATEGORY_PRESETS = [
11
11
  'hours',
@@ -572,4 +572,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
572
572
  }] });
573
573
 
574
574
  export { KnowledgeHubPageComponent };
575
- //# sourceMappingURL=edvak99-voice-receptionist-widget-knowledge-hub.page-BNsM-o3z.mjs.map
575
+ //# sourceMappingURL=edvak99-voice-receptionist-widget-knowledge-hub.page-cZqBuull.mjs.map