@talkpilot/core-db 1.3.5 → 1.3.7

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 (234) hide show
  1. package/.cursor/rules/development.mdc +65 -65
  2. package/DEVELOPMENT.md +141 -126
  3. package/README.md +190 -190
  4. package/README_OLD.md +160 -160
  5. package/dist/talkpilot/calls/calls.types.d.ts +5 -0
  6. package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
  7. package/dist/talkpilot/contextNotes/contextNotes.getters.d.ts +19 -0
  8. package/dist/talkpilot/contextNotes/contextNotes.getters.d.ts.map +1 -0
  9. package/dist/talkpilot/contextNotes/contextNotes.getters.js +57 -0
  10. package/dist/talkpilot/contextNotes/contextNotes.getters.js.map +1 -0
  11. package/dist/talkpilot/contextNotes/contextNotes.types.d.ts +19 -0
  12. package/dist/talkpilot/contextNotes/contextNotes.types.d.ts.map +1 -0
  13. package/dist/talkpilot/contextNotes/contextNotes.types.js +3 -0
  14. package/dist/talkpilot/contextNotes/contextNotes.types.js.map +1 -0
  15. package/dist/talkpilot/contextNotes/index.d.ts +3 -0
  16. package/dist/talkpilot/contextNotes/index.d.ts.map +1 -0
  17. package/dist/talkpilot/contextNotes/index.js +19 -0
  18. package/dist/talkpilot/contextNotes/index.js.map +1 -0
  19. package/dist/talkpilot/flows/flows.schema.d.ts +3 -0
  20. package/dist/talkpilot/flows/flows.schema.d.ts.map +1 -1
  21. package/dist/talkpilot/flows/flows.schema.js +1 -0
  22. package/dist/talkpilot/flows/flows.schema.js.map +1 -1
  23. package/dist/talkpilot/flows/flows.types.d.ts +2 -0
  24. package/dist/talkpilot/flows/flows.types.d.ts.map +1 -1
  25. package/dist/talkpilot/index.d.ts +2 -0
  26. package/dist/talkpilot/index.d.ts.map +1 -1
  27. package/dist/talkpilot/index.js +2 -0
  28. package/dist/talkpilot/index.js.map +1 -1
  29. package/dist/talkpilot/products/index.d.ts +3 -0
  30. package/dist/talkpilot/products/index.d.ts.map +1 -0
  31. package/dist/talkpilot/products/index.js +19 -0
  32. package/dist/talkpilot/products/index.js.map +1 -0
  33. package/dist/talkpilot/products/products.getters.d.ts +6 -0
  34. package/dist/talkpilot/products/products.getters.d.ts.map +1 -0
  35. package/dist/talkpilot/products/products.getters.js +14 -0
  36. package/dist/talkpilot/products/products.getters.js.map +1 -0
  37. package/dist/talkpilot/products/products.types.d.ts +9 -0
  38. package/dist/talkpilot/products/products.types.d.ts.map +1 -0
  39. package/dist/talkpilot/products/products.types.js +3 -0
  40. package/dist/talkpilot/products/products.types.js.map +1 -0
  41. package/dist/test-utils/factories/index.d.ts +1 -0
  42. package/dist/test-utils/factories/index.d.ts.map +1 -1
  43. package/dist/test-utils/factories/index.js +1 -0
  44. package/dist/test-utils/factories/index.js.map +1 -1
  45. package/dist/test-utils/factories/talkpilot/contextNotes.d.ts +16 -0
  46. package/dist/test-utils/factories/talkpilot/contextNotes.d.ts.map +1 -0
  47. package/dist/test-utils/factories/talkpilot/contextNotes.js +30 -0
  48. package/dist/test-utils/factories/talkpilot/contextNotes.js.map +1 -0
  49. package/jest.config.js +20 -19
  50. package/package.json +46 -46
  51. package/src/__tests__/setup.ts +20 -20
  52. package/src/connection.ts +54 -54
  53. package/src/index.ts +26 -26
  54. package/src/municipal/__tests__/validation.spec.ts +62 -62
  55. package/src/municipal/cities/cities.getters.ts +50 -50
  56. package/src/municipal/cities/cities.types.ts +11 -11
  57. package/src/municipal/cities/index.ts +2 -2
  58. package/src/municipal/departmentsSubjects/departmentsSubjects.getters.ts +282 -282
  59. package/src/municipal/departmentsSubjects/departmentsSubjects.types.ts +72 -72
  60. package/src/municipal/departmentsSubjects/index.ts +9 -9
  61. package/src/municipal/index.ts +22 -22
  62. package/src/municipal/mongodb-client.ts +61 -61
  63. package/src/municipal/muniIssues/__tests__/muniIssues.setters.spec.ts +92 -92
  64. package/src/municipal/muniIssues/__tests__/muniIssues.setup.spec.ts +92 -92
  65. package/src/municipal/muniIssues/index.ts +17 -17
  66. package/src/municipal/muniIssues/muniIssues.constants.ts +18 -18
  67. package/src/municipal/muniIssues/muniIssues.getters.ts +24 -24
  68. package/src/municipal/muniIssues/muniIssues.schema.ts +66 -66
  69. package/src/municipal/muniIssues/muniIssues.setters.ts +24 -24
  70. package/src/municipal/muniIssues/muniIssues.setup.ts +65 -65
  71. package/src/municipal/muniIssues/muniIssues.types.ts +37 -37
  72. package/src/municipal/streets/index.ts +2 -2
  73. package/src/municipal/streets/streets.getters.ts +125 -125
  74. package/src/municipal/streets/streets.types.ts +18 -18
  75. package/src/municipal/systemInstructions/__tests__/getters.spec.ts +113 -113
  76. package/src/municipal/systemInstructions/__tests__/setters.spec.ts +274 -274
  77. package/src/municipal/systemInstructions/index.ts +7 -7
  78. package/src/municipal/systemInstructions/instructions.getters.ts +57 -57
  79. package/src/municipal/systemInstructions/instructions.setters.ts +119 -119
  80. package/src/municipal/systemInstructions/instructions.types.ts +30 -30
  81. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +30 -30
  82. package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +51 -51
  83. package/src/municipal/tickets/index.ts +3 -3
  84. package/src/municipal/tickets/tickets.constants.ts +8 -8
  85. package/src/municipal/tickets/tickets.getters.ts +121 -121
  86. package/src/municipal/tickets/tickets.statistics.aggregation.ts +96 -96
  87. package/src/municipal/tickets/tickets.statistics.getters.ts +71 -71
  88. package/src/municipal/tickets/tickets.types.ts +53 -53
  89. package/src/municipal/utils/types.ts +11 -11
  90. package/src/talkpilot/__tests__/db.spec.ts +38 -38
  91. package/src/talkpilot/__tests__/mongodb-client.spec.ts +18 -18
  92. package/src/talkpilot/__tests__/validation.spec.ts +68 -68
  93. package/src/talkpilot/agents/__tests__/agents.getters.spec.ts +29 -29
  94. package/src/talkpilot/agents/agents.getters.ts +34 -34
  95. package/src/talkpilot/agents/agents.types.ts +14 -14
  96. package/src/talkpilot/agents/index.ts +2 -2
  97. package/src/talkpilot/backgroundToolResults/__tests__/backgroundToolResults.getters.spec.ts +147 -147
  98. package/src/talkpilot/backgroundToolResults/backgroundToolResults.getters.ts +65 -65
  99. package/src/talkpilot/backgroundToolResults/backgroundToolResults.types.ts +23 -23
  100. package/src/talkpilot/backgroundToolResults/index.ts +2 -2
  101. package/src/talkpilot/calls/__tests__/callStats.utils.spec.ts +128 -128
  102. package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +149 -149
  103. package/src/talkpilot/calls/__tests__/calls.spec.ts +270 -270
  104. package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +344 -344
  105. package/src/talkpilot/calls/calls.constants.ts +20 -20
  106. package/src/talkpilot/calls/calls.getters.ts +248 -248
  107. package/src/talkpilot/calls/calls.statistics.getters.ts +587 -587
  108. package/src/talkpilot/calls/calls.statistics.types.ts +44 -44
  109. package/src/talkpilot/calls/calls.types.ts +119 -116
  110. package/src/talkpilot/calls/dashboard/calls.dashboard.ts +292 -292
  111. package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +57 -57
  112. package/src/talkpilot/calls/index.ts +6 -6
  113. package/src/talkpilot/clientAudioBuffers/__tests__/clientAudioBuffer.getters.spec.ts +160 -160
  114. package/src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts +117 -117
  115. package/src/talkpilot/clientAudioBuffers/clientsAudioBuffers.types.ts +25 -25
  116. package/src/talkpilot/clientAudioBuffers/index.ts +2 -2
  117. package/src/talkpilot/clients/clients.getters.ts +16 -16
  118. package/src/talkpilot/clients/clients.types.ts +14 -14
  119. package/src/talkpilot/clients/index.ts +2 -2
  120. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.getters.spec.ts +53 -53
  121. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +190 -190
  122. package/src/talkpilot/clientsConfig/clientsConfig.getters.ts +55 -55
  123. package/src/talkpilot/clientsConfig/clientsConfig.types.ts +127 -127
  124. package/src/talkpilot/clientsConfig/index.ts +2 -2
  125. package/src/talkpilot/contextNotes/__tests__/contextNotes.getters.spec.ts +176 -0
  126. package/src/talkpilot/contextNotes/contextNotes.getters.ts +86 -0
  127. package/src/talkpilot/contextNotes/contextNotes.types.ts +20 -0
  128. package/src/talkpilot/contextNotes/index.ts +2 -0
  129. package/src/talkpilot/flows/__tests__/flows.schema.spec.ts +96 -71
  130. package/src/talkpilot/flows/flows.getter.ts +14 -14
  131. package/src/talkpilot/flows/flows.schema.ts +154 -153
  132. package/src/talkpilot/flows/flows.types.ts +187 -184
  133. package/src/talkpilot/flows/index.ts +2 -2
  134. package/src/talkpilot/groups/__tests__/groups.spec.ts +90 -90
  135. package/src/talkpilot/groups/__tests__/phone.utils.spec.ts +32 -32
  136. package/src/talkpilot/groups/groups.getters.ts +30 -30
  137. package/src/talkpilot/groups/groups.types.ts +29 -29
  138. package/src/talkpilot/groups/index.ts +3 -3
  139. package/src/talkpilot/groups/phone.utils.ts +46 -46
  140. package/src/talkpilot/index.ts +31 -29
  141. package/src/talkpilot/leads/index.ts +2 -2
  142. package/src/talkpilot/leads/leads.getter.ts +6 -6
  143. package/src/talkpilot/leads/leads.schema.ts +33 -33
  144. package/src/talkpilot/leads/leads.types.ts +20 -20
  145. package/src/talkpilot/mongodb-client.ts +78 -78
  146. package/src/talkpilot/phone_numbers/__tests__/phone_numbers.spec.ts +252 -252
  147. package/src/talkpilot/phone_numbers/index.ts +2 -2
  148. package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +158 -158
  149. package/src/talkpilot/phone_numbers/phone_numbers.schema.ts +17 -17
  150. package/src/talkpilot/phone_numbers/phone_numbers.types.ts +30 -30
  151. package/src/talkpilot/plans/__tests__/plans.spec.ts +70 -70
  152. package/src/talkpilot/plans/index.ts +2 -2
  153. package/src/talkpilot/plans/plans.getters.ts +132 -132
  154. package/src/talkpilot/plans/plans.types.ts +89 -89
  155. package/src/talkpilot/products/__tests__/products.getters.spec.ts +45 -0
  156. package/src/talkpilot/products/index.ts +2 -0
  157. package/src/talkpilot/products/products.getters.ts +12 -0
  158. package/src/talkpilot/products/products.types.ts +9 -0
  159. package/src/talkpilot/results/index.ts +7 -7
  160. package/src/talkpilot/results/results.getter.ts +39 -39
  161. package/src/talkpilot/results/results.schema.ts +25 -25
  162. package/src/talkpilot/results/results.types.ts +34 -34
  163. package/src/talkpilot/retry_analyze/__tests__/retryAnalyze.getters.spec.ts +156 -156
  164. package/src/talkpilot/retry_analyze/index.ts +2 -2
  165. package/src/talkpilot/retry_analyze/retryAnalyze.getters.ts +84 -84
  166. package/src/talkpilot/retry_analyze/retryAnalyze.types.ts +13 -13
  167. package/src/talkpilot/sessions/__tests__/sessions.spec.ts +147 -147
  168. package/src/talkpilot/sessions/index.ts +2 -2
  169. package/src/talkpilot/sessions/sessions.getter.ts +92 -92
  170. package/src/talkpilot/sessions/sessions.schema.ts +34 -34
  171. package/src/talkpilot/sessions/sessions.types.ts +30 -30
  172. package/src/talkpilot/subscriptions/__tests__/subscriptions.getters.utils.spec.ts +45 -45
  173. package/src/talkpilot/subscriptions/index.ts +3 -3
  174. package/src/talkpilot/subscriptions/subscriptions.getters.ts +146 -146
  175. package/src/talkpilot/subscriptions/subscriptions.getters.utils.ts +33 -33
  176. package/src/talkpilot/subscriptions/subscriptions.types.ts +66 -66
  177. package/src/talkpilot/utils/__tests__/query.utils.spec.ts +49 -49
  178. package/src/talkpilot/utils/query.utils.ts +21 -21
  179. package/src/test-utils/db-utils.ts +26 -26
  180. package/src/test-utils/factories/index.ts +15 -14
  181. package/src/test-utils/factories/municipal/cities.ts +16 -16
  182. package/src/test-utils/factories/municipal/departmentsSubjects.ts +37 -37
  183. package/src/test-utils/factories/municipal/muniIssues.ts +32 -32
  184. package/src/test-utils/factories/municipal/streets.ts +22 -22
  185. package/src/test-utils/factories/municipal/tickets.ts +39 -39
  186. package/src/test-utils/factories/talkpilot/agents.ts +19 -19
  187. package/src/test-utils/factories/talkpilot/calls.ts +37 -37
  188. package/src/test-utils/factories/talkpilot/clientAudioBuffers.ts +20 -20
  189. package/src/test-utils/factories/talkpilot/clientsConfig.ts +18 -18
  190. package/src/test-utils/factories/talkpilot/contextNotes.ts +33 -0
  191. package/src/test-utils/factories/talkpilot/flows.ts +33 -33
  192. package/src/test-utils/factories/talkpilot/groups.ts +33 -33
  193. package/src/test-utils/factories/talkpilot/phone_numbers.ts +22 -22
  194. package/src/test-utils/factories/talkpilot/sessions.ts +35 -35
  195. package/src/test-utils/factories/websitalk/scans.ts +23 -23
  196. package/src/utils/date.utils.ts +116 -116
  197. package/src/utils/shared.types.ts +4 -4
  198. package/src/utils/validation.ts +23 -23
  199. package/src/websitalk/index.ts +15 -15
  200. package/src/websitalk/mongodb-client.ts +61 -61
  201. package/src/websitalk/scans/__tests__/scans.spec.ts +218 -218
  202. package/src/websitalk/scans/index.ts +2 -2
  203. package/src/websitalk/scans/scans.getters.ts +113 -113
  204. package/src/websitalk/scans/scans.types.ts +53 -53
  205. package/tsconfig.json +23 -23
  206. package/.claude/settings.local.json +0 -11
  207. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts +0 -12
  208. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts.map +0 -1
  209. package/dist/municipal/tickets/tickets.deprecated.getters.js +0 -131
  210. package/dist/municipal/tickets/tickets.deprecated.getters.js.map +0 -1
  211. package/dist/municipal/tickets/tickets.statistics.dates.d.ts +0 -7
  212. package/dist/municipal/tickets/tickets.statistics.dates.d.ts.map +0 -1
  213. package/dist/municipal/tickets/tickets.statistics.dates.js +0 -40
  214. package/dist/municipal/tickets/tickets.statistics.dates.js.map +0 -1
  215. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts +0 -53
  216. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts.map +0 -1
  217. package/dist/municipal/tickets/tickets.statistics.pipeline.js +0 -112
  218. package/dist/municipal/tickets/tickets.statistics.pipeline.js.map +0 -1
  219. package/dist/municipal/tickets/tickets.statistics.utils.d.ts +0 -7
  220. package/dist/municipal/tickets/tickets.statistics.utils.d.ts.map +0 -1
  221. package/dist/municipal/tickets/tickets.statistics.utils.js +0 -40
  222. package/dist/municipal/tickets/tickets.statistics.utils.js.map +0 -1
  223. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts +0 -12
  224. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts.map +0 -1
  225. package/dist/talkpilot/calls/calls.statistics.ticketScope.js +0 -37
  226. package/dist/talkpilot/calls/calls.statistics.ticketScope.js.map +0 -1
  227. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts +0 -17
  228. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts.map +0 -1
  229. package/dist/talkpilot/calls/calls.statistics.tickets.js +0 -33
  230. package/dist/talkpilot/calls/calls.statistics.tickets.js.map +0 -1
  231. package/dist/utils/statistics.aggregation.d.ts +0 -20
  232. package/dist/utils/statistics.aggregation.d.ts.map +0 -1
  233. package/dist/utils/statistics.aggregation.js +0 -43
  234. package/dist/utils/statistics.aggregation.js.map +0 -1
@@ -1,44 +1,44 @@
1
- export type ResolvedTimeBucket = "day" | "week" | "month";
2
-
3
- export type TicketStatusFilter = "opened" | "not_opened";
4
- export type CallRoutingFilter = "ai_only" | "transferred" | "hijacked";
5
-
6
- export type CallsStatsFilter = {
7
- clientId: string;
8
- startStr: string;
9
- endStr: string;
10
- timezone: string;
11
- hourFrom?: string; // HH:mm
12
- hourTo?: string; // HH:mm
13
- callRouting?: CallRoutingFilter[];
14
- callSidsWithTickets?: string[];
15
- /** Call SIDs whose municipal ticket matches the draft-ticket definition (see tickets statistics getters). */
16
- callSidsWithDraftTickets?: string[];
17
- ticketStatusFilters?: TicketStatusFilter[];
18
- };
19
-
20
- export type CallsSummaryAggregation = {
21
- totalCalls: number;
22
- avgDurationSeconds: number;
23
- openTickets: number;
24
- draftTickets: number;
25
- };
26
-
27
- export type CallsTrendBucket = {
28
- /** Day: YYYY-MM-DD; week: YYYY-MM-DD/YYYY-MM-DD (inclusive, clipped to filter); month: YYYY-MM-01 */
29
- bucket: string;
30
- totalCalls: number;
31
- openTickets: number;
32
- };
33
-
34
- export type CallsHourlyBucket = {
35
- hour: number;
36
- totalCalls: number;
37
- avgCalls: number;
38
- };
39
-
40
- export type CallsRoutingAggregation = {
41
- aiHandled: number;
42
- transferred: number;
43
- hijacked: number;
44
- };
1
+ export type ResolvedTimeBucket = "day" | "week" | "month";
2
+
3
+ export type TicketStatusFilter = "opened" | "not_opened";
4
+ export type CallRoutingFilter = "ai_only" | "transferred" | "hijacked";
5
+
6
+ export type CallsStatsFilter = {
7
+ clientId: string;
8
+ startStr: string;
9
+ endStr: string;
10
+ timezone: string;
11
+ hourFrom?: string; // HH:mm
12
+ hourTo?: string; // HH:mm
13
+ callRouting?: CallRoutingFilter[];
14
+ callSidsWithTickets?: string[];
15
+ /** Call SIDs whose municipal ticket matches the draft-ticket definition (see tickets statistics getters). */
16
+ callSidsWithDraftTickets?: string[];
17
+ ticketStatusFilters?: TicketStatusFilter[];
18
+ };
19
+
20
+ export type CallsSummaryAggregation = {
21
+ totalCalls: number;
22
+ avgDurationSeconds: number;
23
+ openTickets: number;
24
+ draftTickets: number;
25
+ };
26
+
27
+ export type CallsTrendBucket = {
28
+ /** Day: YYYY-MM-DD; week: YYYY-MM-DD/YYYY-MM-DD (inclusive, clipped to filter); month: YYYY-MM-01 */
29
+ bucket: string;
30
+ totalCalls: number;
31
+ openTickets: number;
32
+ };
33
+
34
+ export type CallsHourlyBucket = {
35
+ hour: number;
36
+ totalCalls: number;
37
+ avgCalls: number;
38
+ };
39
+
40
+ export type CallsRoutingAggregation = {
41
+ aiHandled: number;
42
+ transferred: number;
43
+ hijacked: number;
44
+ };
@@ -1,116 +1,119 @@
1
- import { ObjectId, Sort, WithId } from "mongodb";
2
- import { TranscriptionSegment } from "../results";
3
- import { LeadProperty } from "../leads";
4
-
5
- import {
6
- CONFERENCE_ROLE_CUSTOMER,
7
- CONFERENCE_ROLE_SUPERVISOR,
8
- } from "./calls.constants";
9
-
10
- export type ConferenceRole =
11
- | typeof CONFERENCE_ROLE_CUSTOMER
12
- | typeof CONFERENCE_ROLE_SUPERVISOR
13
- | null;
14
-
15
- export type Call = {
16
- callSid: string;
17
- flowId: ObjectId;
18
- clientId: string;
19
- sessionId: ObjectId | null;
20
- runId?: string;
21
- resultId: ObjectId;
22
- customerPhoneNumber: string;
23
- agentPhoneNumber: string;
24
- isIncomingCall: boolean;
25
- isOutgoingCall: boolean;
26
- callLength: number;
27
- transcription?: TranscriptionSegment[];
28
- status?: string;
29
- leads?: LeadProperty[];
30
- summary?: string;
31
- recordingUrl?: string;
32
- env: string;
33
- updatedAt: Date;
34
- createdAt: Date;
35
- isAnsweredByAnsweringMachine?: boolean;
36
- agentHungUp?: boolean;
37
- endReason?: string;
38
- conferenceName?: string | null;
39
- conferenceSid?: string | null;
40
- conferenceParticipantSid?: string | null;
41
- isConferenceCall?: boolean;
42
- conferenceRole?: ConferenceRole;
43
- redirectedCall?: boolean;
44
- toolExecutions?: ToolExecution[];
45
- };
46
-
47
- export type ToolExecution = {
48
- toolName: string;
49
- executedAt: Date;
50
- durationMs: number;
51
- args: Record<string, unknown> | { _redacted: true };
52
- meta: ToolExecutionMeta;
53
- status: "success" | "error";
54
- httpStatus?: number;
55
- response?: Record<string, unknown>;
56
- };
57
-
58
- export type ToolExecutionMeta =
59
- | {
60
- kind: "http";
61
- url: string;
62
- method: string;
63
- flowToolId?: string;
64
- runInBackground?: boolean;
65
- sensitive?: boolean;
66
- }
67
- | { kind: "internal" };
68
-
69
- export type CallQueryOptions = {
70
- sort?: Sort;
71
- skip?: number;
72
- limit?: number;
73
- };
74
-
75
- export type CallsFilterParams = {
76
- clientId: string;
77
- callSid?: string;
78
- startDate?: Date;
79
- endDate?: Date;
80
- status?: string;
81
- customerPhoneNumber?: string;
82
- agentPhoneNumber?: string;
83
- flowId?: string;
84
- runId?: string;
85
- sessionId?: string;
86
- isIncoming?: boolean;
87
- search?: string;
88
- };
89
-
90
- export type ImmutableCallFields =
91
- | "customerPhoneNumber"
92
- | "agentPhoneNumber"
93
- | "isIncomingCall"
94
- | "isOutgoingCall"
95
- | "sessionId"
96
- | "callSid"
97
- | "flowId"
98
- | "clientId"
99
- | "runId"
100
- | "resultId"
101
- | "env"
102
- | "createdAt";
103
-
104
- export type CallUpdateParams = Partial<Omit<Call, ImmutableCallFields>>;
105
-
106
- export type CallDoc = WithId<Call>;
107
-
108
- export type CountOpts = {
109
- isOutgoingCall?: boolean;
110
- isIncomingCall?: boolean;
111
- };
112
-
113
- export type DateRange = {
114
- since?: Date;
115
- until?: Date;
116
- };
1
+ import { ObjectId, Sort, WithId } from "mongodb";
2
+ import { TranscriptionSegment } from "../results";
3
+ import { LeadProperty } from "../leads";
4
+
5
+ import {
6
+ CONFERENCE_ROLE_CUSTOMER,
7
+ CONFERENCE_ROLE_SUPERVISOR,
8
+ } from "./calls.constants";
9
+
10
+ export type ConferenceRole =
11
+ | typeof CONFERENCE_ROLE_CUSTOMER
12
+ | typeof CONFERENCE_ROLE_SUPERVISOR
13
+ | null;
14
+
15
+ export type Call = {
16
+ callSid: string;
17
+ flowId: ObjectId;
18
+ clientId: string;
19
+ sessionId: ObjectId | null;
20
+ runId?: string;
21
+ resultId: ObjectId;
22
+ customerPhoneNumber: string;
23
+ agentPhoneNumber: string;
24
+ isIncomingCall: boolean;
25
+ isOutgoingCall: boolean;
26
+ callLength: number;
27
+ transcription?: TranscriptionSegment[];
28
+ status?: string;
29
+ leads?: LeadProperty[];
30
+ summary?: string;
31
+ recordingUrl?: string;
32
+ env: string;
33
+ updatedAt: Date;
34
+ createdAt: Date;
35
+ isAnsweredByAnsweringMachine?: boolean;
36
+ agentHungUp?: boolean;
37
+ endReason?: string;
38
+ conferenceName?: string | null;
39
+ conferenceSid?: string | null;
40
+ conferenceParticipantSid?: string | null;
41
+ isConferenceCall?: boolean;
42
+ conferenceRole?: ConferenceRole;
43
+ redirectedCall?: boolean;
44
+ toolExecutions?: ToolExecution[];
45
+ };
46
+
47
+ export type ToolExecution = {
48
+ toolName: string;
49
+ executedAt: Date;
50
+ durationMs: number;
51
+ args: Record<string, unknown> | { _redacted: true };
52
+ meta: ToolExecutionMeta;
53
+ status: "success" | "error";
54
+ httpStatus?: number;
55
+ response?: Record<string, unknown>;
56
+ };
57
+
58
+ export type ToolExecutionMeta =
59
+ | {
60
+ kind: "http";
61
+ url: string;
62
+ method: string;
63
+ flowToolId?: string;
64
+ runInBackground?: boolean;
65
+ sensitive?: boolean;
66
+ }
67
+ | { kind: "internal" };
68
+
69
+ export type CallQueryOptions = {
70
+ sort?: Sort;
71
+ skip?: number;
72
+ limit?: number;
73
+ };
74
+
75
+ export type CallsFilterParams = {
76
+ clientId: string;
77
+ callSid?: string;
78
+ startDate?: Date;
79
+ endDate?: Date;
80
+ status?: string;
81
+ customerPhoneNumber?: string;
82
+ agentPhoneNumber?: string;
83
+ flowId?: string;
84
+ runId?: string;
85
+ sessionId?: string;
86
+ isIncoming?: boolean;
87
+ search?: string;
88
+ };
89
+
90
+ export type ImmutableCallFields =
91
+ | "customerPhoneNumber"
92
+ | "agentPhoneNumber"
93
+ | "isIncomingCall"
94
+ | "isOutgoingCall"
95
+ | "sessionId"
96
+ | "callSid"
97
+ | "flowId"
98
+ | "clientId"
99
+ | "runId"
100
+ | "resultId"
101
+ | "env"
102
+ | "createdAt";
103
+
104
+ export type CallUpdateParams = Partial<Omit<Call, ImmutableCallFields>>;
105
+
106
+ export type CallDoc = WithId<Call>;
107
+
108
+ /** @deprecated use DashboardHeatmapMetric instead */
109
+ export type CallsByHour = { hour: number; calls: number };
110
+
111
+ export type CountOpts = {
112
+ isOutgoingCall?: boolean;
113
+ isIncomingCall?: boolean;
114
+ };
115
+
116
+ export type DateRange = {
117
+ since?: Date;
118
+ until?: Date;
119
+ };