@talkpilot/core-db 1.3.23 → 1.3.25

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