@edvak99/voice-receptionist-widget 1.1.2 → 1.1.4

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 (132) hide show
  1. package/README.md +3 -0
  2. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-DT9UKvQO.mjs +307 -0
  3. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-DT9UKvQO.mjs.map +1 -0
  4. package/fesm2022/{edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs → edvak99-voice-receptionist-widget-ai-receptionist-api.service-48cifVPF.mjs} +1351 -579
  5. package/fesm2022/edvak99-voice-receptionist-widget-ai-receptionist-api.service-48cifVPF.mjs.map +1 -0
  6. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-C5inEHJw.mjs +278 -0
  7. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-C5inEHJw.mjs.map +1 -0
  8. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-sYhM20CE.mjs +418 -0
  9. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-sYhM20CE.mjs.map +1 -0
  10. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-DpwajEOE.mjs +194 -0
  11. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-DpwajEOE.mjs.map +1 -0
  12. package/fesm2022/{edvak99-voice-receptionist-widget-call-recording-player.component-AN6GcSDq.mjs → edvak99-voice-receptionist-widget-call-recording-player.component-CgkRcFOl.mjs} +5 -4
  13. package/fesm2022/{edvak99-voice-receptionist-widget-call-recording-player.component-AN6GcSDq.mjs.map → edvak99-voice-receptionist-widget-call-recording-player.component-CgkRcFOl.mjs.map} +1 -1
  14. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-Cy_Bf7AO.mjs → edvak99-voice-receptionist-widget-call-review.service-CIMcjGKX.mjs} +2 -2
  15. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-Cy_Bf7AO.mjs.map → edvak99-voice-receptionist-widget-call-review.service-CIMcjGKX.mjs.map} +1 -1
  16. package/fesm2022/edvak99-voice-receptionist-widget-call-review.util-Deh3jPgo.mjs +21 -0
  17. package/fesm2022/edvak99-voice-receptionist-widget-call-review.util-Deh3jPgo.mjs.map +1 -0
  18. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-CxbO0eDS.mjs +440 -0
  19. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-CxbO0eDS.mjs.map +1 -0
  20. package/fesm2022/{edvak99-voice-receptionist-widget-eds-elapsed.pipe-ouRlPpwT.mjs → edvak99-voice-receptionist-widget-dashboard-socket.service-BX91r74O.mjs} +5 -21
  21. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-socket.service-BX91r74O.mjs.map +1 -0
  22. package/fesm2022/edvak99-voice-receptionist-widget-eds-avatar.component-CWRiJGfv.mjs +38 -0
  23. package/fesm2022/edvak99-voice-receptionist-widget-eds-avatar.component-CWRiJGfv.mjs.map +1 -0
  24. package/fesm2022/edvak99-voice-receptionist-widget-eds-button.component-Bg5T5BN8.mjs +27 -0
  25. package/fesm2022/edvak99-voice-receptionist-widget-eds-button.component-Bg5T5BN8.mjs.map +1 -0
  26. package/fesm2022/edvak99-voice-receptionist-widget-eds-elapsed.pipe-BFCiJOT3.mjs +22 -0
  27. package/fesm2022/edvak99-voice-receptionist-widget-eds-elapsed.pipe-BFCiJOT3.mjs.map +1 -0
  28. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-list.service-CDtFRW8w.mjs → edvak99-voice-receptionist-widget-eds-pulse-dot.component-BPY6xN7C.mjs} +15 -5
  29. package/fesm2022/edvak99-voice-receptionist-widget-eds-pulse-dot.component-BPY6xN7C.mjs.map +1 -0
  30. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-BsBQIS_f.mjs +203 -0
  31. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-BsBQIS_f.mjs.map +1 -0
  32. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-CaSDMxpV.mjs +81 -0
  33. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-CaSDMxpV.mjs.map +1 -0
  34. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-Cy3ND-c-.mjs +1070 -0
  35. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-Cy3ND-c-.mjs.map +1 -0
  36. package/fesm2022/edvak99-voice-receptionist-widget-modal.component-COfi7biN.mjs +48 -0
  37. package/fesm2022/edvak99-voice-receptionist-widget-modal.component-COfi7biN.mjs.map +1 -0
  38. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purpose.util-Bdh4QfFe.mjs +127 -0
  39. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purpose.util-Bdh4QfFe.mjs.map +1 -0
  40. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-fHVzpiVk.mjs +268 -0
  41. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-fHVzpiVk.mjs.map +1 -0
  42. package/fesm2022/edvak99-voice-receptionist-widget-settings-page.component-Bok64X2q.mjs +968 -0
  43. package/fesm2022/edvak99-voice-receptionist-widget-settings-page.component-Bok64X2q.mjs.map +1 -0
  44. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-Bb9lPcYi.mjs +317 -0
  45. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-Bb9lPcYi.mjs.map +1 -0
  46. package/fesm2022/{edvak99-voice-receptionist-widget-wizard-page.component-CJLa5pia.mjs → edvak99-voice-receptionist-widget-wizard-page.component-BZVlWLWh.mjs} +6 -4
  47. package/fesm2022/{edvak99-voice-receptionist-widget-wizard-page.component-CJLa5pia.mjs.map → edvak99-voice-receptionist-widget-wizard-page.component-BZVlWLWh.mjs.map} +1 -1
  48. package/fesm2022/edvak99-voice-receptionist-widget.mjs +1 -1
  49. package/lib/components/call-conversation-panel/call-conversation-panel.component.d.ts +9 -6
  50. package/lib/components/call-tasks-panel/call-tasks-panel.component.d.ts +8 -8
  51. package/lib/components/knowledge-test-modal/knowledge-test-modal.component.d.ts +28 -0
  52. package/lib/components/live-transcript-panel/live-transcript-panel.component.d.ts +7 -4
  53. package/lib/components/outbound-dial-modal/outbound-dial-modal.component.d.ts +26 -0
  54. package/lib/layout/eds-module-nav.component.d.ts +0 -3
  55. package/lib/mocks/agent-activity.seed.d.ts +2 -0
  56. package/lib/models/agent-activity.types.d.ts +54 -0
  57. package/lib/models/ai-receptionist.types.d.ts +26 -0
  58. package/lib/models/api-dto.types.d.ts +18 -0
  59. package/lib/models/live-transcript.types.d.ts +2 -1
  60. package/lib/models/outbound-patient.types.d.ts +23 -0
  61. package/lib/models/outbound-purpose.types.d.ts +2 -0
  62. package/lib/models/pagination.d.ts +11 -0
  63. package/lib/models/staff-media.types.d.ts +36 -0
  64. package/lib/pages/activities-page/activities-page.component.d.ts +57 -0
  65. package/lib/pages/analytics-page/analytics-page.component.d.ts +38 -14
  66. package/lib/pages/call-history-detail-page/call-history-detail-page.component.d.ts +2 -3
  67. package/lib/pages/call-history-page/call-history-page.component.d.ts +16 -9
  68. package/lib/pages/dashboard-page/dashboard-page.component.d.ts +12 -8
  69. package/lib/pages/live-calls-page/live-calls-page.component.d.ts +14 -24
  70. package/lib/pages/live-monitor-page/live-monitor-page.component.d.ts +34 -1
  71. package/lib/pages/settings-page/settings-fields.config.d.ts +16 -0
  72. package/lib/pages/settings-page/settings-page.component.d.ts +48 -14
  73. package/lib/pages/tasks-page/tasks-page.component.d.ts +6 -0
  74. package/lib/services/ai-receptionist-api.mock.d.ts +44 -9
  75. package/lib/services/ai-receptionist-api.service.d.ts +65 -10
  76. package/lib/services/live-transcript.service.d.ts +1 -0
  77. package/lib/services/staff-media.service.d.ts +52 -0
  78. package/lib/ui/eds-avatar.component.d.ts +5 -2
  79. package/lib/ui/eds-button.component.d.ts +1 -1
  80. package/lib/utils/call-history-display.util.d.ts +21 -0
  81. package/lib/utils/outbound-purpose.util.d.ts +19 -0
  82. package/lib/utils/transcript-timing.util.d.ts +1 -1
  83. package/lib/utils/welcome-message.util.d.ts +1 -1
  84. package/package.json +2 -1
  85. package/styles/_index.scss +5 -40
  86. package/styles/chat-ui.scss +18 -18
  87. package/styles/eds.scss +188 -119
  88. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-CW5OKmik.mjs +0 -113
  89. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-CW5OKmik.mjs.map +0 -1
  90. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-DL1GfQyF.mjs +0 -35
  91. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-DL1GfQyF.mjs.map +0 -1
  92. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-CTwfUHUf.mjs +0 -316
  93. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-CTwfUHUf.mjs.map +0 -1
  94. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-Cj4wxd4e.mjs +0 -138
  95. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-Cj4wxd4e.mjs.map +0 -1
  96. package/fesm2022/edvak99-voice-receptionist-widget-call-review.util-DQLIw7xb.mjs +0 -70
  97. package/fesm2022/edvak99-voice-receptionist-widget-call-review.util-DQLIw7xb.mjs.map +0 -1
  98. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-DzdIt2A7.mjs +0 -248
  99. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-DzdIt2A7.mjs.map +0 -1
  100. package/fesm2022/edvak99-voice-receptionist-widget-eds-avatar.component-PCnIWeOA.mjs +0 -27
  101. package/fesm2022/edvak99-voice-receptionist-widget-eds-avatar.component-PCnIWeOA.mjs.map +0 -1
  102. package/fesm2022/edvak99-voice-receptionist-widget-eds-elapsed.pipe-ouRlPpwT.mjs.map +0 -1
  103. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs.map +0 -1
  104. package/fesm2022/edvak99-voice-receptionist-widget-knowledge-hub.page-cZqBuull.mjs +0 -575
  105. package/fesm2022/edvak99-voice-receptionist-widget-knowledge-hub.page-cZqBuull.mjs.map +0 -1
  106. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-list.service-CDtFRW8w.mjs.map +0 -1
  107. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-DrYzXJQW.mjs +0 -115
  108. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-DrYzXJQW.mjs.map +0 -1
  109. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-D7dlk0y2.mjs +0 -574
  110. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-D7dlk0y2.mjs.map +0 -1
  111. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purpose.util-BQECIuJu.mjs +0 -54
  112. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purpose.util-BQECIuJu.mjs.map +0 -1
  113. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-CJ8NEjcj.mjs +0 -265
  114. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-CJ8NEjcj.mjs.map +0 -1
  115. package/fesm2022/edvak99-voice-receptionist-widget-settings-page.component-Bo3XNK3b.mjs +0 -509
  116. package/fesm2022/edvak99-voice-receptionist-widget-settings-page.component-Bo3XNK3b.mjs.map +0 -1
  117. package/fesm2022/edvak99-voice-receptionist-widget-task.util-DdtI0CR3.mjs +0 -52
  118. package/fesm2022/edvak99-voice-receptionist-widget-task.util-DdtI0CR3.mjs.map +0 -1
  119. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-CBwl15NP.mjs +0 -237
  120. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-CBwl15NP.mjs.map +0 -1
  121. package/lib/knowledge/components/faq-empty-state/faq-empty-state.component.d.ts +0 -22
  122. package/lib/knowledge/components/faq-form/faq-form.component.d.ts +0 -27
  123. package/lib/knowledge/components/faq-search-tester/faq-search-tester.component.d.ts +0 -17
  124. package/lib/knowledge/mocks/practice-faq.seed.d.ts +0 -2
  125. package/lib/knowledge/models/practice-faq.model.d.ts +0 -47
  126. package/lib/knowledge/pages/knowledge-hub.page.d.ts +0 -47
  127. package/lib/knowledge/services/practice-faq-api.mock.d.ts +0 -16
  128. package/lib/knowledge/services/practice-faq-api.service.d.ts +0 -22
  129. package/lib/knowledge/utils/faq.util.d.ts +0 -3
  130. package/lib/layout/eds-topbar.component.d.ts +0 -29
  131. package/lib/pages/audit-page/audit-page.component.d.ts +0 -14
  132. package/lib/ui/eds-waveform.component.d.ts +0 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edvak99-voice-receptionist-widget-ai-receptionist-api.service-48cifVPF.mjs","sources":["../../../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/models/outbound-patient.types.ts","../../../projects/voice-receptionist-widget/src/lib/models/staff-media.types.ts","../../../projects/voice-receptionist-widget/src/lib/models/agent-activity.types.ts","../../../projects/voice-receptionist-widget/src/lib/models/pagination.ts","../../../projects/voice-receptionist-widget/src/lib/utils/welcome-message.util.ts","../../../projects/voice-receptionist-widget/src/lib/utils/call-history-display.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/mocks/agent-activity.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"],"sourcesContent":["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","/** Lightweight patient hit for outbound dialer typeahead. */\nexport interface OutboundPatientHit {\n patientId: string;\n firstName: string;\n lastName: string;\n fullName: string;\n phone: string | null;\n dob: string | null;\n}\n\n/** Upcoming appointment option for a selected patient. */\nexport interface OutboundAppointmentHit {\n appointmentId: string;\n startTime: string | null;\n endTime: string | null;\n providerName: string | null;\n locationName: string | null;\n status: string | null;\n visitType: string | null;\n}\n\nexport function mapOutboundPatientHit(raw: unknown): OutboundPatientHit | null {\n if (!raw || typeof raw !== 'object') return null;\n const r = raw as Record<string, unknown>;\n const patientId = String(r['patientId'] ?? r['patient_id'] ?? r['id'] ?? '').trim();\n if (!patientId) return null;\n const firstName = String(r['firstName'] ?? r['first_name'] ?? '').trim();\n const lastName = String(r['lastName'] ?? r['last_name'] ?? '').trim();\n const full =\n String(r['fullName'] ?? r['full_name'] ?? r['name'] ?? '').trim() ||\n [firstName, lastName].filter(Boolean).join(' ');\n const phone = String(r['mobilePhone'] ?? r['phone'] ?? r['mobile_phone'] ?? '').trim() || null;\n const dobRaw = String(r['dateOfBirth'] ?? r['dob'] ?? '').trim();\n return {\n patientId,\n firstName,\n lastName,\n fullName: full || 'Unknown patient',\n phone,\n dob: dobRaw ? dobRaw.slice(0, 10) : null,\n };\n}\n\nexport function mapOutboundAppointmentHit(raw: unknown): OutboundAppointmentHit | null {\n if (!raw || typeof raw !== 'object') return null;\n const r = raw as Record<string, unknown>;\n const appointmentId = String(\n r['appointmentId'] ?? r['appointment_id'] ?? r['id'] ?? '',\n ).trim();\n if (!appointmentId) return null;\n\n const providerObj =\n r['provider'] && typeof r['provider'] === 'object'\n ? (r['provider'] as Record<string, unknown>)\n : null;\n const locationObj =\n r['location'] && typeof r['location'] === 'object'\n ? (r['location'] as Record<string, unknown>)\n : null;\n const visitObj =\n r['visitType'] && typeof r['visitType'] === 'object'\n ? (r['visitType'] as Record<string, unknown>)\n : null;\n\n const providerName =\n String(\n r['providerName'] ??\n r['provider_name'] ??\n providerObj?.['fullName'] ??\n [providerObj?.['firstName'], providerObj?.['lastName']].filter(Boolean).join(' ') ??\n '',\n ).trim() || null;\n\n const locationName =\n String(\n r['locationName'] ?? r['location_name'] ?? locationObj?.['locationName'] ?? '',\n ).trim() || null;\n\n const visitTypeRaw = r['visitType'];\n const visitType =\n (typeof visitTypeRaw === 'string' ? visitTypeRaw.trim() : '') ||\n String(\n r['visitTypeName'] ??\n r['visit_type'] ??\n visitObj?.['visitTypeName'] ??\n visitObj?.['name'] ??\n '',\n ).trim() ||\n null;\n\n return {\n appointmentId,\n startTime: String(r['startTime'] ?? r['start_time'] ?? '').trim() || null,\n endTime: String(r['endTime'] ?? r['end_time'] ?? '').trim() || null,\n providerName,\n locationName,\n status: String(r['appointmentStatus'] ?? r['status'] ?? r['visitStatus'] ?? '').trim() || null,\n visitType,\n };\n}\n\n/** Best-effort E.164 for US/local numbers used in dialer. */\nexport function toE164Phone(raw: string | null | undefined): string {\n const digits = String(raw ?? '').replace(/\\D/g, '');\n if (!digits) return '';\n if (String(raw ?? '').trim().startsWith('+') && /^\\+[1-9]\\d{6,14}$/.test(String(raw).trim())) {\n return String(raw).trim();\n }\n if (digits.length === 10) return `+1${digits}`;\n if (digits.length === 11 && digits.startsWith('1')) return `+${digits}`;\n if (digits.length >= 8) return `+${digits}`;\n return String(raw ?? '').trim();\n}\n","import { CallControlMode } from './ai-receptionist.types';\n\n/** Staff softphone join modes. */\nexport type StaffMediaMode = 'listen' | 'takeover';\n\n/**\n * Response from POST /calls/:callId/media/join (also takeover / listen).\n * Staff join the existing LiveKit room `call-{callId}` — not Vonage Conversation.\n */\nexport interface StaffMediaJoinResult {\n ok: boolean;\n callId: string;\n mode: StaffMediaMode;\n provider: 'livekit' | string;\n /** LiveKit WebSocket URL for Room.connect */\n livekitUrl: string;\n /** Short-lived LiveKit access token — never a server secret */\n clientToken: string;\n tokenExpiresAt?: string | null;\n conversationId?: string | null;\n memberId?: string | null;\n roomName?: string | null;\n iceServers?: unknown[];\n controlMode?: CallControlMode | string | null;\n aiPaused?: boolean;\n /** True once staff took over — the AI left the call and cannot be resumed. */\n aiHandedOff?: boolean;\n assigned?: string | null;\n}\n\nexport interface CallControlChangedEvent {\n callId: string;\n controlMode?: CallControlMode | string | null;\n aiPaused?: boolean;\n aiHandedOff?: boolean;\n assigned?: string | null;\n status?: string | null;\n}\n\nexport function mapStaffMediaJoinResult(raw: unknown): StaffMediaJoinResult | null {\n if (!raw || typeof raw !== 'object') return null;\n const r = raw as Record<string, unknown>;\n const data =\n r['data'] && typeof r['data'] === 'object'\n ? (r['data'] as Record<string, unknown>)\n : r;\n\n const livekitUrl = String(\n data['livekitUrl'] ?? data['livekit_url'] ?? data['url'] ?? '',\n ).trim();\n const clientToken = String(\n data['clientToken'] ?? data['client_token'] ?? data['token'] ?? '',\n ).trim();\n const modeRaw = String(data['mode'] ?? 'takeover').toLowerCase();\n const mode: StaffMediaMode = modeRaw === 'listen' ? 'listen' : 'takeover';\n\n if (!livekitUrl || !clientToken) return null;\n\n return {\n ok: data['ok'] !== false,\n callId: String(data['callId'] ?? data['call_id'] ?? ''),\n mode,\n provider: String(data['provider'] ?? 'livekit'),\n livekitUrl,\n clientToken,\n tokenExpiresAt: strOrNull(data['tokenExpiresAt'] ?? data['token_expires_at']),\n conversationId: strOrNull(data['conversationId'] ?? data['conversation_id']),\n memberId: strOrNull(data['memberId'] ?? data['member_id']),\n roomName: strOrNull(data['roomName'] ?? data['room_name']),\n iceServers: Array.isArray(data['iceServers']) ? data['iceServers'] : undefined,\n controlMode: strOrNull(data['controlMode'] ?? data['control_mode']),\n aiPaused:\n typeof data['aiPaused'] === 'boolean'\n ? data['aiPaused']\n : typeof data['ai_paused'] === 'boolean'\n ? (data['ai_paused'] as boolean)\n : mode === 'takeover',\n aiHandedOff:\n typeof data['aiHandedOff'] === 'boolean'\n ? data['aiHandedOff']\n : mode === 'takeover',\n assigned: strOrNull(data['assigned']),\n };\n}\n\nfunction strOrNull(value: unknown): string | null {\n const s = String(value ?? '').trim();\n return s || null;\n}\n","/** Agent activity feed item (patients, appointments, tasks created by AI). */\nexport type AgentActivityType =\n | 'patient_created'\n | 'appointment_booked'\n | 'task_created'\n | string;\n\nexport type ActivitiesTab = 'task_created' | 'appointment_booked' | 'patient_created';\n\nexport interface AgentActivity {\n id: string;\n type: AgentActivityType;\n occurredAt: string;\n title: string;\n detail: string;\n patientId?: string | null;\n patientName?: string | null;\n appointmentId?: string | null;\n taskId?: string | null;\n callId?: string | null;\n /** Appointment window start (ISO or date string). */\n startAt?: string | null;\n /** Appointment window end (ISO). */\n endAt?: string | null;\n durationMinutes?: number | null;\n /** Visit / appointment category shown under the time. */\n visitType?: string | null;\n practiceName?: string | null;\n patientDob?: string | null;\n patientAge?: number | null;\n patientGender?: string | null;\n patientInitials?: string | null;\n /** Medical record number when known. */\n patientMrn?: string | null;\n /** True/false when the backend knows the coverage status; null when it never told us. */\n hasInsurance?: boolean | null;\n /** Payer / plan name, shown as the insurance tooltip when present. */\n insuranceName?: string | null;\n providerId?: string | null;\n providerName?: string | null;\n providerInitials?: string | null;\n providerSpecialty?: string | null;\n /** Task priority for task_created rows. */\n priority?: ActivityPriority | null;\n}\n\nexport type ActivityPriority = 'urgent' | 'high' | 'medium' | 'low' | 'normal';\n\nexport interface AgentActivityFilters {\n page?: number;\n limit?: number;\n /** Comma-separated or multi types filter. */\n types?: string;\n search?: string;\n from?: string;\n to?: string;\n /** Restrict to activities created during a specific call. */\n callId?: string;\n}\n\nexport function mapAgentActivity(raw: unknown, index = 0): AgentActivity {\n if (!raw || typeof raw !== 'object') {\n return {\n id: `activity-${index}`,\n type: 'unknown',\n occurredAt: new Date().toISOString(),\n title: 'Activity',\n detail: '',\n };\n }\n const r = raw as Record<string, unknown>;\n const nestedPatient = asRecord(r['patient']);\n const nestedProvider = asRecord(r['provider'] ?? r['practitioner'] ?? r['doctor']);\n\n const type = String(r['type'] ?? r['activityType'] ?? 'unknown');\n const patientName =\n strOrNull(r['patientName'] ?? r['patient_name']) ?? strOrNull(nestedPatient?.['name']);\n const providerName =\n strOrNull(\n r['providerName'] ??\n r['provider_name'] ??\n r['practitionerName'] ??\n r['practitioner_name'] ??\n r['doctorName'] ??\n r['doctor_name'],\n ) ?? strOrNull(nestedProvider?.['name']);\n\n const detail = String(r['detail'] ?? r['description'] ?? '').trim();\n const parsed = parseActivityDetail(detail);\n const insurance = resolveInsurance(r, nestedPatient);\n\n const visitType =\n strOrNull(r['visitType'] ?? r['visit_type'] ?? r['category'] ?? r['reason']) ??\n parsed.visitType;\n const startAt =\n strOrNull(r['startAt'] ?? r['start_at'] ?? r['appointmentStart'] ?? r['appointment_start']) ??\n parsed.startAt;\n const endAt = strOrNull(r['endAt'] ?? r['end_at'] ?? r['appointmentEnd'] ?? r['appointment_end']);\n const practiceName =\n strOrNull(r['practiceName'] ?? r['practice_name'] ?? r['location'] ?? r['clinic']) ??\n parsed.practiceName;\n\n return {\n id: String(r['id'] ?? r['activityId'] ?? `activity-${index}`),\n type,\n occurredAt: String(r['occurredAt'] ?? r['occurred_at'] ?? r['createdAt'] ?? ''),\n title: String(r['title'] ?? r['summary'] ?? '').trim() || activityTypeLabel(type),\n detail,\n patientId: strOrNull(r['patientId'] ?? r['patient_id'] ?? nestedPatient?.['id']),\n patientName,\n appointmentId: strOrNull(r['appointmentId'] ?? r['appointment_id']),\n taskId: strOrNull(r['taskId'] ?? r['task_id']),\n callId: strOrNull(r['callId'] ?? r['call_id']),\n startAt,\n endAt,\n durationMinutes: numOrNull(r['durationMinutes'] ?? r['duration_minutes'] ?? r['duration']),\n visitType,\n practiceName,\n patientDob: strOrNull(\n r['patientDob'] ?? r['patient_dob'] ?? r['dob'] ?? nestedPatient?.['dob'],\n ),\n patientAge: numOrNull(\n r['patientAge'] ?? r['patient_age'] ?? r['age'] ?? nestedPatient?.['age'],\n ),\n patientGender: normalizeGender(\n r['patientGender'] ?? r['patient_gender'] ?? r['gender'] ?? nestedPatient?.['gender'],\n ),\n patientInitials:\n strOrNull(\n r['patientInitials'] ??\n r['patient_initials'] ??\n r['initials'] ??\n nestedPatient?.['initials'],\n ) ?? initialsFromName(patientName),\n patientMrn: strOrNull(\n r['patientMrn'] ??\n r['patient_mrn'] ??\n r['mrn'] ??\n r['MRN'] ??\n nestedPatient?.['mrn'] ??\n nestedPatient?.['MRN'],\n ),\n hasInsurance: insurance.hasInsurance,\n insuranceName: insurance.name,\n providerId: strOrNull(\n r['providerId'] ?? r['provider_id'] ?? nestedProvider?.['id'],\n ),\n providerName,\n providerInitials:\n strOrNull(\n r['providerInitials'] ??\n r['provider_initials'] ??\n nestedProvider?.['initials'],\n ) ?? initialsFromName(providerName),\n providerSpecialty: strOrNull(\n r['providerSpecialty'] ??\n r['provider_specialty'] ??\n r['specialty'] ??\n nestedProvider?.['specialty'] ??\n nestedProvider?.['speciality'],\n ),\n priority: normalizePriority(r['priority'] ?? r['taskPriority'] ?? r['task_priority']),\n };\n}\n\nconst INSURED_WORDS = ['active', 'verified', 'covered', 'insured', 'yes', 'true', 'eligible'];\nconst UNINSURED_WORDS = [\n 'none',\n 'no',\n 'false',\n 'uninsured',\n 'self_pay',\n 'self-pay',\n 'selfpay',\n 'inactive',\n 'expired',\n 'missing',\n];\n\n/**\n * Coverage can arrive as a boolean, a status string, a payer name or a nested object.\n * Unknown stays null so the UI can distinguish \"no coverage\" from \"never told us\".\n */\nfunction resolveInsurance(\n r: Record<string, unknown>,\n patient: Record<string, unknown> | null,\n): { hasInsurance: boolean | null; name: string | null } {\n const nested = asRecord(r['insurance'] ?? patient?.['insurance']);\n\n const name =\n strOrNull(\n r['insuranceName'] ??\n r['insurance_name'] ??\n r['payerName'] ??\n r['payer_name'] ??\n r['payer'] ??\n patient?.['insuranceName'] ??\n patient?.['insurance_name'] ??\n nested?.['name'] ??\n nested?.['payer'] ??\n nested?.['planName'],\n ) ?? (typeof r['insurance'] === 'string' ? strOrNull(r['insurance']) : null);\n\n const flag =\n firstBoolean([\n r['hasInsurance'],\n r['has_insurance'],\n r['insured'],\n r['isInsured'],\n patient?.['hasInsurance'],\n patient?.['has_insurance'],\n patient?.['insured'],\n nested?.['active'],\n nested?.['isActive'],\n ]);\n if (flag !== null) return { hasInsurance: flag, name };\n\n const status = String(\n r['insuranceStatus'] ??\n r['insurance_status'] ??\n patient?.['insuranceStatus'] ??\n patient?.['insurance_status'] ??\n nested?.['status'] ??\n (typeof r['insurance'] === 'string' ? r['insurance'] : '') ??\n '',\n )\n .trim()\n .toLowerCase();\n if (status) {\n if (INSURED_WORDS.includes(status)) return { hasInsurance: true, name };\n if (UNINSURED_WORDS.includes(status)) return { hasInsurance: false, name };\n }\n\n // A payer name on its own implies coverage.\n return { hasInsurance: name ? true : null, name };\n}\n\nfunction firstBoolean(values: unknown[]): boolean | null {\n for (const value of values) {\n if (typeof value === 'boolean') return value;\n }\n return null;\n}\n\n/** Pull visit type / slot / practice out of a messy free-text detail blob. */\nfunction parseActivityDetail(detail: string): {\n visitType: string | null;\n startAt: string | null;\n practiceName: string | null;\n} {\n if (!detail) return { visitType: null, startAt: null, practiceName: null };\n\n const visitMatch = /\\(([^)]+)\\)\\s*$/.exec(detail);\n const visitType = visitMatch?.[1]?.trim() || null;\n\n const dateMatch =\n /\\bfor\\s+(\\d{4}-\\d{2}-\\d{2})(?:\\s+(\\d{1,2}:\\d{2}(?::\\d{2})?))?/i.exec(detail) ??\n /\\b(\\d{4}-\\d{2}-\\d{2})[ T](\\d{1,2}:\\d{2}(?::\\d{2})?)/.exec(detail);\n let startAt: string | null = null;\n if (dateMatch) {\n const date = dateMatch[1];\n const time = dateMatch[2] ? dateMatch[2].padStart(5, '0') : '00:00';\n startAt = `${date}T${time.length === 5 ? `${time}:00` : time}`;\n }\n\n const practiceMatch = /\\bAT\\s+([A-Z0-9][A-Z0-9 ,.'&-]{2,}?)(?:\\s*\\(|$)/.exec(detail);\n const practiceName = practiceMatch?.[1]?.trim().replace(/,\\s*$/, '') || null;\n\n return { visitType, startAt, practiceName };\n}\n\nexport function activityTypeLabel(type: string): string {\n switch (type) {\n case 'patient_created':\n return 'Patient created';\n case 'appointment_booked':\n return 'Appointment booked';\n case 'task_created':\n return 'Task created';\n default:\n return type.replace(/_/g, ' ') || 'Activity';\n }\n}\n\nexport function initialsFromName(name: string | null | undefined): string | null {\n if (!name?.trim()) return null;\n const cleaned = name.replace(/^dr\\.?\\s+/i, '').trim();\n const parts = cleaned.split(/\\s+/).filter(Boolean);\n if (!parts.length) return null;\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n return `${parts[0][0] ?? ''}${parts[parts.length - 1][0] ?? ''}`.toUpperCase();\n}\n\nfunction normalizeGender(value: unknown): string | null {\n const s = String(value ?? '').trim();\n if (!s) return null;\n const key = s.toLowerCase();\n if (key === 'm' || key === 'male') return 'M';\n if (key === 'f' || key === 'female') return 'F';\n if (key === 'o' || key === 'other' || key === 'non-binary' || key === 'nonbinary') return 'O';\n return s.length <= 3 ? s.toUpperCase() : s;\n}\n\nfunction normalizePriority(value: unknown): ActivityPriority | null {\n const key = String(value ?? '')\n .trim()\n .toLowerCase()\n .replace(/[\\s-]+/g, '_');\n if (!key) return null;\n if (key === 'urgent' || key === 'critical') return 'urgent';\n if (key === 'high') return 'high';\n if (key === 'medium' || key === 'med' || key === 'normal') return 'medium';\n if (key === 'low') return 'low';\n return null;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction strOrNull(value: unknown): string | null {\n const s = String(value ?? '').trim();\n return s || null;\n}\n\nfunction numOrNull(value: unknown): number | null {\n if (value == null || value === '') return null;\n const n = Number(value);\n return Number.isFinite(n) ? n : null;\n}\n","/** Standard list pagination envelope from AI Receptionist APIs. */\nexport interface PaginatedResult<T> {\n items: T[];\n total: number;\n page: number;\n limit: number;\n}\n\nexport const DEFAULT_PAGE_SIZE = 50;\n\n/** Parse `{ items, total, page, limit }` or a bare array (legacy). */\nexport function asPaginatedResult<T>(\n body: unknown,\n fallbackPage = 1,\n fallbackLimit = DEFAULT_PAGE_SIZE,\n): PaginatedResult<T> {\n if (Array.isArray(body)) {\n return {\n items: body as T[],\n total: body.length,\n page: fallbackPage,\n limit: fallbackLimit,\n };\n }\n if (!body || typeof body !== 'object') {\n return { items: [], total: 0, page: fallbackPage, limit: fallbackLimit };\n }\n const o = body as Record<string, unknown>;\n const rawItems = o['items'] ?? o['data'];\n const items = Array.isArray(rawItems) ? (rawItems as T[]) : [];\n const total = typeof o['total'] === 'number' ? o['total'] : items.length;\n const page = typeof o['page'] === 'number' ? o['page'] : fallbackPage;\n const limit = typeof o['limit'] === 'number' ? o['limit'] : fallbackLimit;\n return { items, total, page, limit };\n}\n\nexport function totalPages(total: number, pageSize: number): number {\n return Math.max(1, Math.ceil(total / pageSize));\n}\n","import { AgentSettings } from '../models/ai-receptionist.types';\n\nexport const WELCOME_MESSAGE_MAX = 1000;\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","/** Call history table helpers — resolution badges + result chips. */\n\nexport type HistoryResolution = 'resolved' | 'needs_attention';\n\nexport function historyResolution(input: {\n outcome?: string;\n risk?: 'urgent' | 'review' | null;\n}): HistoryResolution {\n if (input.risk === 'urgent' || input.risk === 'review') return 'needs_attention';\n const o = String(input.outcome ?? '').toLowerCase();\n if (\n o.includes('fail') ||\n o.includes('escalat') ||\n o.includes('abandon') ||\n o.includes('attention') ||\n o.includes('voicemail') ||\n o === 'transferred'\n ) {\n return 'needs_attention';\n }\n return 'resolved';\n}\n\nexport function historyResolutionLabel(resolution: HistoryResolution): string {\n return resolution === 'resolved' ? 'RESOLVED' : 'NEEDS ATTENTION';\n}\n\nexport function resultChipIcon(label: string): string {\n const key = label.toLowerCase();\n if (key.includes('appointment') || key.includes('book')) return 'calendar_month';\n if (key.includes('task')) return 'check_circle';\n if (key.includes('register') || key.includes('patient')) return 'person_add';\n if (key.includes('info')) return 'info';\n if (key.includes('transfer')) return 'phone_forwarded';\n if (key.includes('refill')) return 'medication';\n return 'label';\n}\n\nexport function callerMetaLine(input: {\n dob?: string | null;\n age?: number | null;\n gender?: string | null;\n phone?: string | null;\n name?: string | null;\n matched?: boolean;\n}): string {\n if (isUnknownCaller(input.name, input.matched)) {\n return String(input.phone ?? '').trim() || '—';\n }\n const age = input.age ?? ageFromDob(input.dob);\n if (!input.dob && age == null && !input.gender) {\n return String(input.phone ?? '').trim() || '—';\n }\n const parts: string[] = [];\n if (input.dob) {\n parts.push(`DOB: ${formatDobDisplay(input.dob)}`);\n }\n const ageGender: string[] = [];\n if (age != null) ageGender.push(`${age}Y`);\n if (input.gender) ageGender.push(String(input.gender).charAt(0).toUpperCase());\n if (ageGender.length) {\n parts.push(parts.length ? `• ${ageGender.join(' | ')}` : ageGender.join(' | '));\n }\n return parts.join(' ') || String(input.phone ?? '').trim() || '—';\n}\n\nfunction formatDobDisplay(dob: string): string {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(dob.trim());\n if (m) return `${m[2]}-${m[3]}-${m[1]}`;\n return dob;\n}\n\n/** Age in whole years from YYYY-MM-DD (or partial ISO). */\nexport function ageFromDob(dob: string | null | undefined, at = new Date()): number | null {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(String(dob ?? '').trim());\n if (!m) return null;\n const y = Number(m[1]);\n const mo = Number(m[2]);\n const d = Number(m[3]);\n if (!y || !mo || !d) return null;\n let age = at.getFullYear() - y;\n const hadBirthday =\n at.getMonth() + 1 > mo || (at.getMonth() + 1 === mo && at.getDate() >= d);\n if (!hadBirthday) age -= 1;\n return age >= 0 && age < 130 ? age : null;\n}\n\nexport function isUnknownCaller(name: string | null | undefined, matched?: boolean): boolean {\n if (matched === false) return true;\n const n = String(name ?? '').trim();\n return !n || /^unknown/i.test(n) || n === '?';\n}\n\n/** Derive result chips from explicit actions, else from outcome text. */\nexport function historyResultChips(results: string[] | undefined, outcome: string): string[] {\n if (results?.length) return results;\n const o = outcome.trim();\n if (!o) return [];\n const lower = o.toLowerCase();\n if (lower.includes('appointment') || lower.includes('book')) return ['Appointment Booked'];\n if (lower.includes('task')) return ['Task Created'];\n if (lower.includes('register')) return ['Patient Registered'];\n if (lower.includes('info') || lower.includes('hours') || lower.includes('direction')) {\n return ['Information Provided'];\n }\n if (lower === 'completed') return ['Information Provided'];\n return [o];\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 CallControlMode,\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 { ageFromDob } from '../utils/call-history-display.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 mapControlMode(\n raw: string | null | undefined,\n status: string | null | undefined,\n aiPaused?: boolean,\n): CallControlMode {\n const mode = String(raw ?? '').toLowerCase().replace(/_/g, '-');\n if (mode === 'ai' || mode === 'takeover' || mode === 'listen' || mode === 'paused') {\n return mode;\n }\n if (aiPaused === true) return 'paused';\n const st = String(status ?? '').toLowerCase().replace(/_/g, '-');\n if (st === 'takeover') return 'takeover';\n if (st === 'paused' || st === 'pause') return 'paused';\n if (st === 'listen' || st === 'listening') return 'listen';\n return '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 const dobRaw = String(dto.dob ?? dto.dateOfBirth ?? '').trim();\n const dob = dobRaw ? dobRaw.slice(0, 10) : undefined;\n const ageNum =\n typeof dto.age === 'number'\n ? dto.age\n : dto.age != null && String(dto.age).trim()\n ? Number(dto.age)\n : null;\n const age =\n ageNum != null && Number.isFinite(ageNum) ? ageNum : ageFromDob(dob);\n const gender = String(dto.gender ?? dto.sex ?? '').trim() || null;\n\n return {\n id: dto.id,\n name: dto.name,\n initials: dto.initials || (dto.matched ? '' : '?'),\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,\n age,\n gender,\n location: dto.location ?? '',\n provider: dto.provider,\n language: dto.language,\n matched: dto.matched,\n assigned: dto.assigned,\n controlMode: mapControlMode(dto.controlMode, dto.status, dto.aiPaused),\n tools: (dto.tools ?? []).map(mapToolEvent),\n transcript: (dto.transcript ?? []).map(mapTranscriptLine),\n aiPaused: dto.aiPaused === true || String(dto.controlMode ?? '').toLowerCase() === 'paused',\n aiHandedOff: dto.aiHandedOff === true,\n };\n}\n\nexport function mapHistoryCallDto(dto: HistoryCallDto): HistoryCall {\n const parsedStarted = Date.parse(dto.startedAt ?? dto.when);\n const dobRaw = String(dto.dob ?? dto.dateOfBirth ?? '').trim();\n const ageNum =\n typeof dto.age === 'number'\n ? dto.age\n : dto.age != null && String(dto.age).trim()\n ? Number(dto.age)\n : null;\n const gender = String(dto.gender ?? dto.sex ?? '').trim() || null;\n const handledRaw = String(dto.handledBy ?? dto.handler ?? '').trim().toLowerCase();\n let handledBy: HistoryCall['handledBy'];\n if (handledRaw === 'staff' || handledRaw === 'human' || handledRaw === 'user') {\n handledBy = 'staff';\n } else if (handledRaw === 'ai' || handledRaw === 'agent' || handledRaw === 'ava') {\n handledBy = 'ai';\n } else if (String(dto.outcome ?? '').toLowerCase().includes('transfer')) {\n handledBy = 'staff';\n } else {\n handledBy = 'ai';\n }\n\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 handledBy,\n dob: dobRaw ? dobRaw.slice(0, 10) : null,\n age: ageNum != null && Number.isFinite(ageNum) ? ageNum : null,\n gender,\n results: Array.isArray(dto.actions)\n ? dto.actions.map((a) => String(a).trim()).filter(Boolean)\n : [],\n risk: dto.risk ?? null,\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 inbound: p.inbound,\n outbound: p.outbound,\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: normalizeGeneralSection(section('general')),\n phone: normalizePhoneSection(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 knowledge: normalizeKnowledgeSection(section('knowledgeBase')),\n safety,\n transcripts: normalizeTranscriptsSection(section('transcriptsRecording')),\n advanced: section('advanced'),\n };\n\n mapped.effectiveWelcomeMessage =\n raw.effectiveWelcomeMessage ?? computeEffectiveWelcomeMessage(mapped);\n\n if (!mapped.knowledge) {\n mapped.knowledge = { whatToSay: '', whatNotToSay: '' };\n }\n\n return mapped;\n}\n\nfunction normalizeKnowledgeSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n return {\n ...raw,\n whatToSay: String(raw['whatToSay'] ?? raw['what_to_say'] ?? ''),\n whatNotToSay: String(raw['whatNotToSay'] ?? raw['what_not_to_say'] ?? ''),\n };\n}\n\nfunction normalizeGeneralSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n const language = String(raw['language'] ?? 'English');\n const languagesRaw = raw['languages'] ?? raw['languageList'] ?? language;\n const languages = Array.isArray(languagesRaw)\n ? languagesRaw.map(String).join(',')\n : String(languagesRaw || language);\n return {\n ...raw,\n languages,\n tone: String(raw['tone'] ?? 'professional'),\n };\n}\n\nfunction normalizePhoneSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n const locationIds = raw['locationIds'] ?? raw['location_ids'] ?? raw['locationsHandled'] ?? '';\n const locations =\n Array.isArray(locationIds) ? locationIds.map(String).join(',') : String(locationIds ?? '');\n const afterHoursBehavior = String(\n raw['afterHoursBehavior'] ??\n raw['after_hours_behavior'] ??\n (raw['afterHours'] === false ? 'voicemail' : 'ai_answers'),\n );\n return {\n ...raw,\n answerMode: String(raw['answerMode'] ?? raw['answer_mode'] ?? 'always_first'),\n transferNumber: String(raw['transferNumber'] ?? raw['transfer_number'] ?? ''),\n ringTimeout: Number(raw['ringTimeout'] ?? raw['ring_timeout'] ?? 20) || 20,\n createFollowUpTask: Boolean(\n raw['createFollowUpTask'] ?? raw['create_follow_up_task'] ?? false,\n ),\n locationIds: locations,\n maxCallDurationMin:\n Number(raw['maxCallDurationMin'] ?? raw['max_call_duration_min'] ?? 5) || 5,\n silenceTimeoutSec:\n Number(raw['silenceTimeoutSec'] ?? raw['silence_timeout_sec'] ?? 30) || 30,\n afterHoursBehavior,\n };\n}\n\nfunction normalizeTranscriptsSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n const legacyRetain = Number(raw['retainDays'] ?? raw['retain_days'] ?? 30) || 30;\n return {\n ...raw,\n recordingRetainDays:\n Number(raw['recordingRetainDays'] ?? raw['recording_retain_days'] ?? legacyRetain) ||\n legacyRetain,\n transcriptRetainDays:\n Number(raw['transcriptRetainDays'] ?? raw['transcript_retain_days'] ?? legacyRetain) ||\n legacyRetain,\n disclosureWarningEnabled: Boolean(\n raw['disclosureWarningEnabled'] ?? raw['disclosure_warning_enabled'] ?? true,\n ),\n disclosureWarningText: String(\n raw['disclosureWarningText'] ??\n raw['disclosure_warning_text'] ??\n 'This call may be handled by an automated assistant and could be recorded for quality and training. You can ask to speak with a staff member at any time.',\n ),\n };\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 knowledgeBase: settings.knowledge,\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 const list = body as { items?: AuditEventDto[] };\n return list?.items ?? [];\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 age: 41,\n gender: 'F',\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 dob: '1978-09-22',\n age: 47,\n gender: 'M',\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: 'Sooraj Jagadeesh',\n initials: 'SJ',\n phone: '+1 (512) 555-0211',\n direction: 'inbound',\n outcome: 'Appointment booked',\n reason: 'Appointment Refill',\n duration: 252,\n durationLabel: '4:12',\n started: Date.parse('2026-06-12T14:20:00'),\n location: 'Riverside Main',\n verification: 'verified',\n review: 'reviewed',\n handledBy: 'ai',\n dob: '2002-06-30',\n age: 23,\n gender: 'M',\n results: ['Appointment Booked'],\n },\n {\n id: 'HC-9002',\n name: 'Unknown Caller',\n initials: '?',\n phone: '+1 (555) 010-2299',\n direction: 'outbound',\n outcome: 'Task created',\n reason: 'Appointment',\n duration: 165,\n durationLabel: '2:45',\n started: Date.parse('2026-06-12T11:05:00'),\n location: 'North Clinic',\n verification: 'unknown',\n review: 'needs',\n handledBy: 'ai',\n results: ['Task Created'],\n risk: 'review',\n },\n {\n id: 'HC-9003',\n name: 'Dinesh Kumar',\n initials: 'DK',\n phone: '+1 (512) 555-0444',\n direction: 'inbound',\n outcome: 'Completed',\n reason: 'Appointment',\n duration: 372,\n durationLabel: '6:12',\n started: Date.parse('2026-06-11T16:45:00'),\n location: 'Riverside Main',\n verification: 'verified',\n review: 'reviewed',\n handledBy: 'staff',\n dob: '1988-03-14',\n age: 38,\n gender: 'M',\n results: ['Patient Registered', 'Appointment Booked'],\n },\n {\n id: 'HC-9004',\n name: 'Meera Banerjee',\n initials: 'MB',\n phone: '+1 (512) 555-0555',\n direction: 'inbound',\n outcome: 'Completed',\n reason: 'Information',\n duration: 93,\n durationLabel: '1:33',\n started: Date.parse('2026-06-11T09:12:00'),\n location: 'South Clinic',\n verification: 'partial',\n review: 'needs',\n handledBy: 'ai',\n dob: '1995-11-02',\n age: 30,\n gender: 'F',\n results: ['Information Provided'],\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 durationLabel: '1:29',\n started: Date.parse('2026-06-10T13:40:00'),\n location: 'North Clinic',\n verification: 'unknown',\n review: 'reviewed',\n handledBy: 'ai',\n results: ['Information Provided'],\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 {\n label: 'Estimated Impact This Month',\n value: '96 hours',\n delta: '',\n tone: 'pos',\n sub: 'of front-desk time handled by the AI ~2.4 full work weeks.',\n },\n {\n label: 'AI Autonomous Resolution',\n value: '89%',\n delta: '+12%',\n tone: 'pos',\n sub: 'without staff intervention',\n },\n {\n label: 'Appointments Booked',\n value: '34',\n delta: '-35%',\n tone: 'warn',\n sub: 'Created by AI',\n },\n {\n label: 'Tasks Created',\n value: '19',\n delta: '-35%',\n tone: 'warn',\n sub: 'Created by AI',\n },\n {\n label: 'Patients Registered',\n value: '75',\n delta: '-6%',\n tone: 'warn',\n sub: 'Created by AI',\n },\n {\n label: 'Calls Handled',\n value: '1,234',\n delta: '+25%',\n tone: 'pos',\n sub: 'Inbound 104 · Outbound 24',\n },\n ],\n volume: {\n timezone: 'America/Chicago',\n startDate: '2025-05-01',\n endDate: '2025-05-28',\n points: [\n { date: '2025-05-01', day: 'Week 1', label: 'Week 1', count: 210, inbound: 170, outbound: 40 },\n { date: '2025-05-08', day: 'Week 2', label: 'Week 2', count: 255, inbound: 200, outbound: 55 },\n { date: '2025-05-15', day: 'Week 3', label: 'Week 3', count: 180, inbound: 145, outbound: 35 },\n { date: '2025-05-22', day: 'Week 4', label: 'Week 4', count: 290, inbound: 230, outbound: 60 },\n ],\n },\n outcomes: [\n { label: 'AI handled', value: 78, color: '#8E51FF' },\n { label: 'Human Assisted', value: 18, color: '#3681F4' },\n { label: 'Needs Attention', value: 4, color: '#F472B6' },\n ],\n reasons: [\n { label: 'Appointments', value: 68 },\n { label: 'Medication/Refills', value: 24 },\n { label: 'Message', value: 20 },\n { label: 'Information', value: 23 },\n { label: 'Registration', value: 5 },\n { label: 'Tasks', value: 20 },\n { label: 'Others', value: 9 },\n ],\n transfers: [\n { label: 'Out of Scope', value: 68 },\n { label: 'Multiple Requests', value: 24 },\n { label: 'Identity Unresolved', value: 20 },\n { label: 'Others', value: 23 },\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:\n hour >= 8 && hour <= 20\n ? Math.round(30 + Math.sin((hour - 8) / 2.2) * 45 + (hour === 11 || hour === 16 ? 25 : 0))\n : 4 + (hour % 3),\n })),\n },\n kpis: {\n totalCalls: 1234,\n avgDuration: 186,\n bookingRate: 89,\n transferRate: 4,\n },\n};\n\nexport const SEED_SETTINGS: AgentSettings = {\n general: {\n practiceName: 'Riverside Family Medicine',\n timezone: 'America/Chicago',\n language: 'English',\n languages: 'English,Spanish,Chinese,Hindi',\n agentName: 'Robin',\n tone: 'professional',\n welcomeMessage:\n 'Thanks for calling {{practiceName}}! This is {{agentName}}, the practice’s virtual assistant. How can I help you today?',\n ttsVoiceId: '7EzWGsX10sAS4c9m9cPf',\n },\n phone: {\n answerMode: 'always_first',\n mainNumber: '+1 (234) 092-0129',\n transferNumber: '+1 (234) 092-0129',\n ringTimeout: 20,\n createFollowUpTask: true,\n locationIds: 'loc-1,loc-2,loc-3',\n maxCallDurationMin: 5,\n silenceTimeoutSec: 30,\n afterHoursBehavior: 'ai_answers',\n afterHours: true,\n },\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 knowledge: {\n whatToSay:\n 'Arrive 15 minutes early for new-patient visits. Bring a photo ID and insurance card. We accept most major plans and self-pay; ask front desk for current cash-pay rates. For medical emergencies, hang up and dial 911.',\n whatNotToSay:\n 'Do not give clinical advice, diagnose symptoms, or promise specific appointment times that are not available. Do not share other patients’ information. Do not quote prices that are not listed in practice guidance.',\n },\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: {\n recordingRetainDays: 30,\n transcriptRetainDays: 30,\n disclosureWarningEnabled: true,\n disclosureWarningText:\n 'This call may be handled by an automated assistant and could be recorded for quality and training. You can ask to speak with a staff member at any time.',\n retainDays: 30,\n redactPhi: true,\n },\n advanced: { modelVersion: 'edvak-v2', debugMode: false },\n effectiveWelcomeMessage:\n 'Thanks for calling Riverside Family Medicine! This is Robin, the practice’s virtual assistant. 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 { AgentActivity } from '../models/agent-activity.types';\n\nconst hour = 60 * 60 * 1000;\nconst now = Date.now();\n\nfunction todayAt(h: number, m = 0): string {\n const d = new Date();\n d.setHours(h, m, 0, 0);\n return d.toISOString();\n}\n\nexport const SEED_ACTIVITIES: AgentActivity[] = [\n {\n id: 'act-appt-1',\n type: 'appointment_booked',\n occurredAt: new Date(now - 0.4 * hour).toISOString(),\n title: 'Appointment booked',\n detail: '',\n patientId: 'pat-1001',\n patientName: 'Sooraj Jagadeesh',\n patientInitials: 'SJ',\n patientDob: '2002-06-30',\n patientAge: 23,\n patientGender: 'M',\n providerName: 'Dr. Anika Mehra',\n providerInitials: 'AM',\n providerSpecialty: 'Cardiologist',\n appointmentId: 'appt-9001',\n callId: 'LC-4801',\n startAt: todayAt(8, 0),\n endAt: todayAt(8, 15),\n durationMinutes: 15,\n visitType: 'Follow Up',\n hasInsurance: true,\n insuranceName: 'Aetna PPO',\n },\n {\n id: 'act-appt-1b',\n type: 'task_created',\n occurredAt: new Date(now - 0.35 * hour).toISOString(),\n title: 'Needs Scheduling Assistance',\n detail: '',\n patientId: 'pat-1001',\n patientName: 'Sooraj Jagadeesh',\n patientInitials: 'SJ',\n patientDob: '2002-06-30',\n patientAge: 23,\n patientGender: 'M',\n providerName: 'Front Desk',\n providerInitials: 'FD',\n providerSpecialty: 'Operations',\n taskId: 'task-4801',\n callId: 'LC-4801',\n startAt: todayAt(8, 5),\n visitType: 'Insurance verification',\n durationMinutes: 10,\n priority: 'medium',\n },\n {\n id: 'act-appt-2',\n type: 'appointment_booked',\n occurredAt: new Date(now - 1.1 * hour).toISOString(),\n title: 'Appointment booked',\n detail: '',\n patientId: 'pat-1005',\n patientName: 'Lisa Sullivan',\n patientInitials: 'LS',\n patientDob: '1998-03-12',\n patientAge: 28,\n patientGender: 'F',\n providerName: 'Dr. Marcus Webb',\n providerInitials: 'MW',\n providerSpecialty: 'Endocrinologist',\n appointmentId: 'appt-9003',\n callId: 'LC-4800',\n startAt: todayAt(8, 15),\n endAt: todayAt(8, 30),\n durationMinutes: 15,\n visitType: 'Lab Results Review',\n hasInsurance: false,\n },\n {\n id: 'act-appt-3',\n type: 'appointment_booked',\n occurredAt: new Date(now - 2.2 * hour).toISOString(),\n title: 'Appointment booked',\n detail: '',\n patientId: 'pat-1006',\n patientName: 'Aiden Rivera',\n patientInitials: 'AR',\n patientDob: '1995-11-04',\n patientAge: 30,\n patientGender: 'M',\n providerName: 'Dr. Priya Nair',\n providerInitials: 'PN',\n providerSpecialty: 'General Practitioner',\n appointmentId: 'appt-9004',\n callId: 'LC-4799',\n startAt: todayAt(8, 30),\n endAt: todayAt(8, 45),\n durationMinutes: 15,\n visitType: 'Routine Checkup',\n },\n {\n id: 'act-appt-4',\n type: 'appointment_booked',\n occurredAt: new Date(now - 8 * hour).toISOString(),\n title: 'Appointment booked',\n detail: '',\n patientId: 'pat-1003',\n patientName: 'Aisha Patel',\n patientInitials: 'AP',\n patientDob: '1988-01-19',\n patientAge: 38,\n patientGender: 'F',\n providerName: 'Dr. Jordan Lee',\n providerInitials: 'JL',\n providerSpecialty: 'Internal Medicine',\n appointmentId: 'appt-9002',\n callId: 'LC-4790',\n startAt: todayAt(14, 30),\n endAt: todayAt(15, 0),\n durationMinutes: 30,\n visitType: 'Annual Wellness',\n hasInsurance: true,\n insuranceName: 'BlueCross Blue Shield',\n },\n {\n id: 'act-1',\n type: 'patient_created',\n occurredAt: new Date(now - 0.5 * hour).toISOString(),\n title: 'Patient registered',\n detail: '',\n patientId: 'pat-1008',\n patientName: 'Maria Garcia',\n patientInitials: 'MG',\n patientDob: '1991-04-22',\n patientAge: 35,\n patientGender: 'F',\n callId: 'LC-4801',\n startAt: todayAt(9, 12),\n visitType: 'New registration',\n hasInsurance: true,\n insuranceName: 'UnitedHealthcare',\n },\n {\n id: 'act-5',\n type: 'patient_created',\n occurredAt: new Date(now - 26 * hour).toISOString(),\n title: 'Patient registered',\n detail: '',\n patientId: 'pat-1004',\n patientName: 'Sam Okonkwo',\n patientInitials: 'SO',\n patientDob: '1979-09-08',\n patientAge: 46,\n patientGender: 'M',\n callId: 'LC-4782',\n startAt: new Date(now - 26 * hour).toISOString(),\n visitType: 'Outbound registration',\n hasInsurance: false,\n },\n {\n id: 'act-3',\n type: 'task_created',\n occurredAt: new Date(now - 3 * hour).toISOString(),\n title: 'Needs Scheduling Assistance',\n detail: '',\n patientId: 'pat-1002',\n patientName: 'James Chen',\n patientInitials: 'JC',\n patientDob: '1985-12-01',\n patientAge: 40,\n patientGender: 'M',\n providerName: 'Front Desk',\n providerInitials: 'FD',\n providerSpecialty: 'Operations',\n taskId: 'task-301',\n callId: 'LC-4798',\n startAt: new Date(now - 3 * hour).toISOString(),\n visitType: 'Insurance verification',\n durationMinutes: 15,\n priority: 'medium',\n },\n {\n id: 'act-6',\n type: 'task_created',\n occurredAt: new Date(now - 5 * hour).toISOString(),\n title: 'Needs Scheduling Assistance',\n detail: '',\n patientId: 'pat-1007',\n patientName: 'Elena Foster',\n patientInitials: 'EF',\n patientDob: '1993-07-15',\n patientAge: 32,\n patientGender: 'F',\n providerName: 'Nurse Station',\n providerInitials: 'NS',\n providerSpecialty: 'Clinical support',\n taskId: 'task-302',\n callId: 'LC-4795',\n startAt: new Date(now - 5 * hour).toISOString(),\n visitType: 'Clinical callback',\n durationMinutes: 10,\n priority: 'medium',\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 { StaffMediaJoinResult, StaffMediaMode } from '../models/staff-media.types';\nimport { DEFAULT_PAGE_SIZE, type PaginatedResult } from '../models/pagination';\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';\nimport type {\n OutboundAppointmentHit,\n OutboundPatientHit,\n} from '../models/outbound-patient.types';\nimport type {\n AgentActivity,\n AgentActivityFilters,\n} from '../models/agent-activity.types';\nimport { SEED_ACTIVITIES } from '../mocks/agent-activity.seed';\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 private paginate<T>(\n rows: T[],\n page = 1,\n limit = DEFAULT_PAGE_SIZE,\n ): Observable<PaginatedResult<T>> {\n const safePage = Math.max(1, page);\n const safeLimit = Math.min(100, Math.max(1, limit));\n const start = (safePage - 1) * safeLimit;\n return of({\n items: rows.slice(start, start + safeLimit),\n total: rows.length,\n page: safePage,\n limit: safeLimit,\n }).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 page?: number;\n limit?: number;\n }): Observable<PaginatedResult<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.paginate(rows, filters?.page, filters?.limit);\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 return this.postMediaJoin(id, 'takeover').pipe(map(() => ({ data: { success: true } })));\n }\n\n postMediaJoin(\n id: string,\n mode: StaffMediaMode,\n ): Observable<{ data: StaffMediaJoinResult }> {\n this.patchLive(id, (c) => ({\n ...c,\n status: mode === 'takeover' ? 'takeover' : c.status,\n controlMode: mode,\n assigned: mode === 'takeover' ? 'You' : c.assigned,\n aiPaused: mode === 'takeover',\n }));\n // Mock tokens are placeholders — StaffMediaService is skipped when useMockApi is on.\n return this.mock({\n ok: true,\n callId: id,\n mode,\n provider: 'livekit',\n livekitUrl: 'wss://mock.livekit.local',\n clientToken: `mock-token-${mode}-${id}`,\n roomName: `call-${id}`,\n controlMode: mode,\n aiPaused: mode === 'takeover',\n assigned: mode === 'takeover' ? 'You' : null,\n });\n }\n\n postMediaLeave(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({\n ...c,\n status: 'ai',\n controlMode: 'ai',\n assigned: null,\n aiPaused: false,\n }));\n return this.mock({ success: true });\n }\n\n postResumeAi(id: string): Observable<{ data: { success: boolean } }> {\n return this.postMediaLeave(id);\n }\n\n postPause(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({ ...c, controlMode: 'paused', aiPaused: true }));\n return this.mock({ success: true });\n }\n\n postResume(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({\n ...c,\n controlMode: c.status === 'takeover' || c.assigned ? 'takeover' : 'ai',\n aiPaused: false,\n }));\n return this.mock({ success: true });\n }\n\n postListen(id: string): Observable<{ data: { success: boolean } }> {\n return this.postMediaJoin(id, 'listen').pipe(map(() => ({ data: { 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<PaginatedResult<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.paginate(rows, filters?.page, filters?.limit);\n }\n\n getCallTasks(callId: string): Observable<{ data: TaskItem[] }> {\n return this.getTasks({ callId, limit: 100 }).pipe(\n map((page) => ({ data: page.items })),\n );\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 testKnowledgeAnswer(params: {\n question: string;\n whatToSay: string;\n whatNotToSay: string;\n voiceId?: string;\n }): Observable<{ answer: string; voiceId: string; audioBlob: Blob }> {\n const answer =\n `Based on our guidance: for “${params.question.trim()}”, ` +\n `I'd share what's in our practice knowledge and avoid restricted topics.`;\n return this.previewVoice(params.voiceId ?? 'mock').pipe(\n map((audioBlob) => ({\n answer,\n voiceId: params.voiceId ?? 'mock',\n audioBlob,\n })),\n );\n }\n\n private withEffectiveWelcome(settings: AgentSettings): AgentSettings {\n return {\n ...settings,\n effectiveWelcomeMessage: computeEffectiveWelcomeMessage(settings),\n };\n }\n\n getAudit(\n q?: string,\n actor?: string,\n opts?: { page?: number; limit?: number },\n ): Observable<PaginatedResult<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.paginate(rows, opts?.page, opts?.limit);\n }\n\n getActivities(filters?: AgentActivityFilters): Observable<PaginatedResult<AgentActivity>> {\n let rows = structuredClone(SEED_ACTIVITIES);\n const types = (filters?.types ?? '')\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean);\n if (types.length) {\n rows = rows.filter((a) => types.includes(a.type));\n }\n if (filters?.callId?.trim()) {\n const callId = filters.callId.trim().toLowerCase();\n rows = rows.filter((a) => (a.callId || '').toLowerCase() === callId);\n }\n if (filters?.search?.trim()) {\n const needle = filters.search.trim().toLowerCase();\n rows = rows.filter((a) =>\n [a.title, a.detail, a.patientName, a.callId, a.type]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n .includes(needle),\n );\n }\n return this.paginate(rows, filters?.page, filters?.limit);\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 const idHint = body.appointmentId\n ? ` (appt ${body.appointmentId})`\n : body.patientId\n ? ` (patient ${body.patientId})`\n : '';\n return of({\n success: true,\n callId: `LC-${Math.floor(4800 + Math.random() * 100)}`,\n message: `Outbound call started to ${body.phone}${idHint}`,\n }).pipe(delay(MOCK_DELAY_MS));\n }\n\n searchPatientsForOutbound(q: string, limit = 10): Observable<OutboundPatientHit[]> {\n const needle = q.trim().toLowerCase();\n const digits = q.replace(/\\D/g, '');\n const hits: OutboundPatientHit[] = [\n {\n patientId: 'pat-1001',\n firstName: 'Maria',\n lastName: 'Garcia',\n fullName: 'Maria Garcia',\n phone: '+14155550100',\n dob: '1988-04-12',\n },\n {\n patientId: 'pat-1002',\n firstName: 'James',\n lastName: 'Chen',\n fullName: 'James Chen',\n phone: '+14155550122',\n dob: '1975-11-03',\n },\n {\n patientId: 'pat-1003',\n firstName: 'Aisha',\n lastName: 'Patel',\n fullName: 'Aisha Patel',\n phone: '+14155550987',\n dob: '1992-07-21',\n },\n ].filter((p) => {\n if (!needle) return false;\n const hay = `${p.fullName} ${p.phone} ${p.patientId}`.toLowerCase();\n return hay.includes(needle) || (!!digits && (p.phone ?? '').includes(digits));\n });\n return of(hits.slice(0, limit)).pipe(delay(MOCK_DELAY_MS));\n }\n\n listPatientAppointmentsForOutbound(\n patientId: string,\n limit = 20,\n ): Observable<OutboundAppointmentHit[]> {\n const now = Date.now();\n const day = 24 * 60 * 60 * 1000;\n const all: OutboundAppointmentHit[] = [\n {\n appointmentId: `appt-${patientId}-1`,\n startTime: new Date(now + 2 * day).toISOString(),\n endTime: new Date(now + 2 * day + 30 * 60 * 1000).toISOString(),\n providerName: 'Dr. Patel',\n locationName: 'Main Clinic',\n status: 'scheduled',\n visitType: 'Follow-up',\n },\n {\n appointmentId: `appt-${patientId}-2`,\n startTime: new Date(now + 9 * day).toISOString(),\n endTime: new Date(now + 9 * day + 45 * 60 * 1000).toISOString(),\n providerName: 'Dr. Nguyen',\n locationName: 'West Wing',\n status: 'confirmed',\n visitType: 'Annual wellness',\n },\n ];\n return of(all.slice(0, limit)).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 mapOutboundAppointmentHit,\n mapOutboundPatientHit,\n toE164Phone,\n type OutboundAppointmentHit,\n type OutboundPatientHit,\n} from '../models/outbound-patient.types';\nimport {\n mapStaffMediaJoinResult,\n type StaffMediaJoinResult,\n type StaffMediaMode,\n} from '../models/staff-media.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 mapAgentActivity,\n type AgentActivity,\n type AgentActivityFilters,\n} from '../models/agent-activity.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 asPaginatedResult,\n DEFAULT_PAGE_SIZE,\n type PaginatedResult,\n} from '../models/pagination';\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 page?: number;\n limit?: number;\n }): Observable<PaginatedResult<HistoryCall>> {\n if (this.useMock) return this.mock.getHistory(filters);\n const page = filters?.page ?? 1;\n const limit = filters?.limit ?? DEFAULT_PAGE_SIZE;\n let params = new HttpParams().set('page', String(page)).set('limit', String(limit));\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) => {\n const pageResult = asPaginatedResult<HistoryCallDto>(body, page, limit);\n return {\n ...pageResult,\n items: pageResult.items.map(mapHistoryCallDto),\n };\n }),\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 /**\n * Staff softphone join into LiveKit room `call-{callId}`.\n * POST /calls/:id/media/join { mode: listen|takeover }\n */\n postMediaJoin(\n id: string,\n mode: StaffMediaMode,\n ): Observable<{ data: StaffMediaJoinResult }> {\n if (this.useMock) return this.mock.postMediaJoin(id, mode);\n const enc = encodeURIComponent(id);\n return this.http\n .post<unknown>(`${this.arBase}/calls/${enc}/media/join`, { mode })\n .pipe(\n map((body) => {\n const data = mapStaffMediaJoinResult(body);\n if (!data) {\n throw new Error('media/join response missing livekitUrl or clientToken');\n }\n return { data: { ...data, callId: data.callId || id, mode } };\n }),\n catchError((err: HttpErrorResponse) =>\n throwError(() => new Error(this.apiErrorMessage(err, 'Failed to join call media'))),\n ),\n );\n }\n\n /** Drop staff WebRTC only; does not hang up the patient. */\n postMediaLeave(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postMediaLeave(id);\n const enc = encodeURIComponent(id);\n return this.http\n .post<unknown>(`${this.arBase}/calls/${enc}/media/leave`, {})\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n /**\n * Take over — same join payload as media/join { mode: takeover }.\n * Prefer this or postMediaJoin('takeover'); both are supported by BE.\n */\n postTakeover(id: string): Observable<{ data: StaffMediaJoinResult }> {\n if (this.useMock) return this.mock.postMediaJoin(id, 'takeover');\n const enc = encodeURIComponent(id);\n return this.http.post<unknown>(`${this.arBase}/calls/${enc}/takeover`, {}).pipe(\n map((body) => {\n const data = mapStaffMediaJoinResult(body);\n if (!data) {\n throw new Error('takeover response missing livekitUrl or clientToken');\n }\n const mode: StaffMediaMode = 'takeover';\n return { data: { ...data, callId: data.callId || id, mode } };\n }),\n catchError((err: HttpErrorResponse) =>\n throwError(() => new Error(this.apiErrorMessage(err, 'Failed to take over call'))),\n ),\n );\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 postResume(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postResume(id);\n return this.postCallAction(id, 'resume');\n }\n\n /** Listen — same join payload as media/join { mode: listen }. */\n postListen(id: string): Observable<{ data: StaffMediaJoinResult }> {\n if (this.useMock) return this.mock.postMediaJoin(id, 'listen');\n const enc = encodeURIComponent(id);\n return this.http.post<unknown>(`${this.arBase}/calls/${enc}/listen`, {}).pipe(\n map((body) => {\n const data = mapStaffMediaJoinResult(body);\n if (!data) {\n throw new Error('listen response missing livekitUrl or clientToken');\n }\n const mode: StaffMediaMode = 'listen';\n return { data: { ...data, callId: data.callId || id, mode } };\n }),\n catchError((err: HttpErrorResponse) =>\n throwError(() => new Error(this.apiErrorMessage(err, 'Failed to listen to call'))),\n ),\n );\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<PaginatedResult<TaskItem>> {\n if (this.useMock) return this.mock.getTasks(filters);\n const page = filters?.page ?? 1;\n const limit = filters?.limit ?? DEFAULT_PAGE_SIZE;\n let params = new HttpParams().set('page', String(page)).set('limit', String(limit));\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 return this.http.get<unknown>(`${this.arBase}/tasks`, { params }).pipe(\n map((body) => {\n const pageResult = asPaginatedResult<TaskDto>(body, page, limit);\n return {\n ...pageResult,\n items: pageResult.items.map(mapTaskDto),\n };\n }),\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(\n switchMap(() => this.getSettings()),\n catchError((err: HttpErrorResponse) =>\n throwError(() => new Error(this.apiErrorMessage(err, 'Failed to save agent settings'))),\n ),\n );\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 /**\n * Knowledge Base test: draft an answer from whatToSay / whatNotToSay and\n * return spoken audio in the practice (or selected) voice.\n */\n testKnowledgeAnswer(params: {\n question: string;\n whatToSay: string;\n whatNotToSay: string;\n voiceId?: string;\n }): Observable<{ answer: string; voiceId: string; audioBlob: Blob }> {\n if (this.useMock) {\n return this.mock.testKnowledgeAnswer(params);\n }\n return this.http\n .post<{\n answer?: string;\n voiceId?: string;\n audioBase64?: string;\n contentType?: string;\n }>(`${this.arBase}/settings/test-knowledge`, params)\n .pipe(\n map((body) => {\n const answer = String(body?.answer ?? '').trim();\n const b64 = String(body?.audioBase64 ?? '').trim();\n if (!answer || !b64) {\n throw new Error('Test response missing answer or audio');\n }\n const contentType = String(body?.contentType ?? 'audio/mpeg');\n const binary = atob(b64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return {\n answer,\n voiceId: String(body?.voiceId ?? params.voiceId ?? ''),\n audioBlob: new Blob([bytes], { type: contentType }),\n };\n }),\n catchError((err: HttpErrorResponse) =>\n throwError(\n () => new Error(this.apiErrorMessage(err, 'Could not generate a test answer.')),\n ),\n ),\n );\n }\n\n getAudit(\n q?: string,\n opts?: { page?: number; limit?: number },\n ): Observable<PaginatedResult<AuditEvent>> {\n if (this.useMock) return this.mock.getAudit(q, undefined, opts);\n const page = opts?.page ?? 1;\n const limit = opts?.limit ?? DEFAULT_PAGE_SIZE;\n let params = new HttpParams().set('page', String(page)).set('limit', String(limit));\n if (q) params = params.set('search', q);\n return this.http.get<unknown>(`${this.arBase}/audit`, { params }).pipe(\n map((body) => {\n const pageResult = asPaginatedResult(body, page, limit);\n return {\n ...pageResult,\n items: asAuditList(body).map((e, i) => mapAuditEventDto(e, i)),\n };\n }),\n );\n }\n\n /**\n * Agent activity feed: patients created, appointments booked, tasks from AI.\n * GET /api/ai-receptionist/activities\n */\n getActivities(\n filters?: AgentActivityFilters,\n ): Observable<PaginatedResult<AgentActivity>> {\n if (this.useMock) return this.mock.getActivities(filters);\n const page = filters?.page ?? 1;\n const limit = filters?.limit ?? DEFAULT_PAGE_SIZE;\n let params = new HttpParams().set('page', String(page)).set('limit', String(limit));\n if (filters?.search?.trim()) params = params.set('search', filters.search.trim());\n if (filters?.types?.trim()) params = params.set('types', filters.types.trim());\n if (filters?.from?.trim()) params = params.set('from', filters.from.trim());\n if (filters?.to?.trim()) params = params.set('to', filters.to.trim());\n if (filters?.callId?.trim()) params = params.set('callId', filters.callId.trim());\n\n return this.http.get<unknown>(`${this.arBase}/activities`, { params }).pipe(\n map((body) => {\n const pageResult = asPaginatedResult(body, page, limit);\n return {\n ...pageResult,\n items: pageResult.items.map((row, i) => mapAgentActivity(row, i)),\n };\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 /**\n * Patient typeahead for outbound dialer.\n * Tries `/api/v1/patients/search`, then `/api/v1/patients?q=`, then by-phone for digit queries.\n */\n searchPatientsForOutbound(q: string, limit = 10): Observable<OutboundPatientHit[]> {\n const query = q.trim();\n if (!query) return of([]);\n if (this.useMock) return this.mock.searchPatientsForOutbound(query, limit);\n\n const params = new HttpParams().set('q', query).set('limit', String(limit));\n const searchUrl = this.paths.v1Path('/patients/search');\n const listUrl = this.paths.v1Path('/patients');\n\n return this.http.get<unknown>(searchUrl, { params }).pipe(\n map((body) => this.mapPatientHits(body)),\n catchError(() =>\n this.http.get<unknown>(listUrl, { params }).pipe(\n map((body) => this.mapPatientHits(body)),\n catchError(() => of([] as OutboundPatientHit[])),\n ),\n ),\n switchMap((hits) => {\n if (hits.length > 0) return of(hits);\n const phone = toE164Phone(query);\n if (!phone && !/\\d{7,}/.test(query)) return of([]);\n return this.http\n .get<unknown>(this.paths.v1Path('/patients/by-phone'), {\n params: new HttpParams().set('phone', phone || query.replace(/\\D/g, '')),\n })\n .pipe(\n map((body) => this.mapPatientHits(body)),\n catchError(() => of([] as OutboundPatientHit[])),\n );\n }),\n );\n }\n\n /** Upcoming appointments for a patient (dialer picker). */\n listPatientAppointmentsForOutbound(\n patientId: string,\n limit = 20,\n ): Observable<OutboundAppointmentHit[]> {\n const id = patientId.trim();\n if (!id) return of([]);\n if (this.useMock) return this.mock.listPatientAppointmentsForOutbound(id, limit);\n\n const from = new Date();\n from.setHours(0, 0, 0, 0);\n const params = new HttpParams()\n .set('patientId', id)\n .set('patient_id', id)\n .set('from', from.toISOString())\n .set('limit', String(limit));\n\n const v1Url = this.paths.v1Path('/appointments');\n const apiUrl = this.paths.apiPath('/appointments');\n\n // Prefer /api/appointments (current host contract), then /api/v1/appointments.\n return this.http.get<unknown>(apiUrl, { params }).pipe(\n map((body) => this.mapAppointmentHits(body)),\n catchError(() =>\n this.http.get<unknown>(v1Url, { params }).pipe(\n map((body) => this.mapAppointmentHits(body)),\n catchError(() => of([] as OutboundAppointmentHit[])),\n ),\n ),\n );\n }\n\n private mapPatientHits(body: unknown): OutboundPatientHit[] {\n return extractApiRows(body)\n .map(mapOutboundPatientHit)\n .filter((p): p is OutboundPatientHit => !!p);\n }\n\n private mapAppointmentHits(body: unknown): OutboundAppointmentHit[] {\n return extractApiRows(body)\n .map(mapOutboundAppointmentHit)\n .filter((a): a is OutboundAppointmentHit => !!a)\n .sort((a, b) => String(a.startTime ?? '').localeCompare(String(b.startTime ?? '')));\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"],"names":["strOrNull","now"],"mappings":"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"}