@talkpilot/core-db 1.3.64 → 1.3.65

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 (237) hide show
  1. package/.cursor/rules/development.mdc +65 -65
  2. package/AGENTS.md +49 -49
  3. package/DEVELOPMENT.md +141 -141
  4. package/README.md +815 -816
  5. package/dist/talkpilot/flows/flows.schema.d.ts +6 -0
  6. package/dist/talkpilot/flows/flows.schema.d.ts.map +1 -1
  7. package/dist/talkpilot/flows/flows.schema.js +2 -0
  8. package/dist/talkpilot/flows/flows.schema.js.map +1 -1
  9. package/dist/talkpilot/flows/flows.types.d.ts +1 -0
  10. package/dist/talkpilot/flows/flows.types.d.ts.map +1 -1
  11. package/dist/talkpilot/index.d.ts +0 -1
  12. package/dist/talkpilot/index.d.ts.map +1 -1
  13. package/dist/talkpilot/index.js +0 -1
  14. package/dist/talkpilot/index.js.map +1 -1
  15. package/dist/talkpilot/subscriptions/subscriptions.utils.d.ts +4 -0
  16. package/dist/talkpilot/subscriptions/subscriptions.utils.d.ts.map +1 -0
  17. package/dist/talkpilot/subscriptions/subscriptions.utils.js +20 -0
  18. package/dist/talkpilot/subscriptions/subscriptions.utils.js.map +1 -0
  19. package/jest.config.js +20 -20
  20. package/package.json +46 -46
  21. package/src/__tests__/setup.ts +20 -20
  22. package/src/bulkWrite/__tests__/bulkWrite.spec.ts +65 -65
  23. package/src/bulkWrite/bulkWrite.ops.ts +45 -45
  24. package/src/bulkWrite/bulkWrite.types.ts +4 -4
  25. package/src/bulkWrite/index.ts +2 -2
  26. package/src/config.ts +9 -9
  27. package/src/configuration/index.ts +17 -17
  28. package/src/configuration/internalModels/index.ts +3 -3
  29. package/src/configuration/internalModels/internalModels.constants.ts +1 -1
  30. package/src/configuration/internalModels/internalModels.getters.ts +33 -33
  31. package/src/configuration/internalModels/internalModels.types.ts +12 -12
  32. package/src/configuration/models/__tests__/models.getters.spec.ts +67 -67
  33. package/src/configuration/models/index.ts +27 -27
  34. package/src/configuration/models/models.constants.ts +15 -15
  35. package/src/configuration/models/models.getters.ts +71 -71
  36. package/src/configuration/models/models.types.ts +80 -80
  37. package/src/configuration/mongodb-client.ts +62 -62
  38. package/src/configuration/prompts/index.ts +2 -2
  39. package/src/configuration/prompts/prompts.getters.ts +49 -49
  40. package/src/configuration/prompts/prompts.types.ts +11 -11
  41. package/src/connection.ts +81 -81
  42. package/src/index.ts +47 -47
  43. package/src/municipal/__tests__/validation.spec.ts +62 -62
  44. package/src/municipal/cities/cities.getters.ts +50 -50
  45. package/src/municipal/cities/cities.types.ts +11 -11
  46. package/src/municipal/cities/index.ts +2 -2
  47. package/src/municipal/departmentsSubjects/__tests__/departmentsSubjects.spec.ts +272 -272
  48. package/src/municipal/departmentsSubjects/departmentsSubjects.getters.ts +317 -317
  49. package/src/municipal/departmentsSubjects/departmentsSubjects.types.ts +73 -73
  50. package/src/municipal/departmentsSubjects/index.ts +9 -9
  51. package/src/municipal/index.ts +22 -22
  52. package/src/municipal/mongodb-client.ts +61 -61
  53. package/src/municipal/muniIssues/__tests__/muniIssues.setters.spec.ts +94 -94
  54. package/src/municipal/muniIssues/__tests__/muniIssues.setup.spec.ts +92 -92
  55. package/src/municipal/muniIssues/index.ts +17 -17
  56. package/src/municipal/muniIssues/muniIssues.constants.ts +18 -18
  57. package/src/municipal/muniIssues/muniIssues.getters.ts +24 -24
  58. package/src/municipal/muniIssues/muniIssues.schema.ts +66 -66
  59. package/src/municipal/muniIssues/muniIssues.setters.ts +24 -24
  60. package/src/municipal/muniIssues/muniIssues.setup.ts +65 -65
  61. package/src/municipal/muniIssues/muniIssues.types.ts +37 -37
  62. package/src/municipal/streets/__tests__/streets.spec.ts +253 -253
  63. package/src/municipal/streets/index.ts +2 -2
  64. package/src/municipal/streets/streets.getters.ts +140 -140
  65. package/src/municipal/streets/streets.types.ts +19 -19
  66. package/src/municipal/systemInstructions/__tests__/getters.spec.ts +113 -113
  67. package/src/municipal/systemInstructions/__tests__/setters.spec.ts +274 -274
  68. package/src/municipal/systemInstructions/index.ts +7 -7
  69. package/src/municipal/systemInstructions/instructions.getters.ts +57 -57
  70. package/src/municipal/systemInstructions/instructions.setters.ts +119 -119
  71. package/src/municipal/systemInstructions/instructions.types.ts +30 -30
  72. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +30 -30
  73. package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +99 -99
  74. package/src/municipal/tickets/index.ts +9 -9
  75. package/src/municipal/tickets/tickets.constants.ts +8 -8
  76. package/src/municipal/tickets/tickets.getters.ts +121 -121
  77. package/src/municipal/tickets/tickets.statistics.aggregation.ts +110 -110
  78. package/src/municipal/tickets/tickets.statistics.getters.ts +145 -145
  79. package/src/municipal/tickets/tickets.types.ts +54 -54
  80. package/src/municipal/utils/types.ts +11 -11
  81. package/src/talkpilot/__tests__/db.spec.ts +38 -38
  82. package/src/talkpilot/__tests__/mongodb-client.spec.ts +18 -18
  83. package/src/talkpilot/__tests__/validation.spec.ts +68 -68
  84. package/src/talkpilot/agents/__tests__/agents.getters.spec.ts +29 -29
  85. package/src/talkpilot/agents/agents.getters.ts +34 -34
  86. package/src/talkpilot/agents/agents.types.ts +14 -14
  87. package/src/talkpilot/agents/index.ts +2 -2
  88. package/src/talkpilot/backgroundToolResults/__tests__/backgroundToolResults.getters.spec.ts +147 -147
  89. package/src/talkpilot/backgroundToolResults/backgroundToolResults.getters.ts +65 -65
  90. package/src/talkpilot/backgroundToolResults/backgroundToolResults.types.ts +23 -23
  91. package/src/talkpilot/backgroundToolResults/index.ts +2 -2
  92. package/src/talkpilot/calls/__tests__/callStats.utils.spec.ts +128 -128
  93. package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +229 -229
  94. package/src/talkpilot/calls/__tests__/calls.spec.ts +471 -471
  95. package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +483 -483
  96. package/src/talkpilot/calls/calls.constants.ts +49 -49
  97. package/src/talkpilot/calls/calls.getters.ts +277 -277
  98. package/src/talkpilot/calls/calls.statistics.getters.ts +668 -668
  99. package/src/talkpilot/calls/calls.statistics.types.ts +48 -48
  100. package/src/talkpilot/calls/calls.types.ts +149 -149
  101. package/src/talkpilot/calls/dashboard/calls.dashboard.ts +295 -295
  102. package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +57 -57
  103. package/src/talkpilot/calls/index.ts +6 -6
  104. package/src/talkpilot/clientAudioBuffers/__tests__/clientAudioBuffer.getters.spec.ts +160 -160
  105. package/src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts +117 -117
  106. package/src/talkpilot/clientAudioBuffers/clientsAudioBuffers.types.ts +25 -25
  107. package/src/talkpilot/clientAudioBuffers/index.ts +2 -2
  108. package/src/talkpilot/clients/__tests__/clients.quota.spec.ts +123 -123
  109. package/src/talkpilot/clients/clients.getters.ts +19 -19
  110. package/src/talkpilot/clients/clients.quota.getters.ts +119 -119
  111. package/src/talkpilot/clients/clients.quota.types.ts +27 -27
  112. package/src/talkpilot/clients/clients.types.ts +18 -18
  113. package/src/talkpilot/clients/index.ts +4 -4
  114. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.getters.spec.ts +423 -423
  115. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +212 -212
  116. package/src/talkpilot/clientsConfig/clientsConfig.constants.ts +2 -2
  117. package/src/talkpilot/clientsConfig/clientsConfig.getters.ts +247 -247
  118. package/src/talkpilot/clientsConfig/clientsConfig.types.ts +137 -137
  119. package/src/talkpilot/clientsConfig/index.ts +3 -3
  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 +142 -124
  125. package/src/talkpilot/flows/flows.getter.ts +34 -34
  126. package/src/talkpilot/flows/flows.schema.ts +182 -180
  127. package/src/talkpilot/flows/flows.types.ts +212 -211
  128. package/src/talkpilot/flows/index.ts +7 -7
  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 -32
  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 +530 -530
  142. package/src/talkpilot/phone_numbers/index.ts +2 -2
  143. package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +240 -240
  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/phone_numbers/phone_numbers.utils.ts +9 -9
  147. package/src/talkpilot/plans/__tests__/plans.spec.ts +70 -70
  148. package/src/talkpilot/plans/index.ts +2 -2
  149. package/src/talkpilot/plans/plans.getters.ts +132 -132
  150. package/src/talkpilot/plans/plans.types.ts +89 -89
  151. package/src/talkpilot/products/__tests__/products.getters.spec.ts +44 -44
  152. package/src/talkpilot/products/index.ts +2 -2
  153. package/src/talkpilot/products/products.getters.ts +12 -12
  154. package/src/talkpilot/products/products.types.ts +9 -9
  155. package/src/talkpilot/results/index.ts +7 -7
  156. package/src/talkpilot/results/results.getter.ts +39 -39
  157. package/src/talkpilot/results/results.schema.ts +25 -25
  158. package/src/talkpilot/results/results.types.ts +34 -34
  159. package/src/talkpilot/retry_analyze/__tests__/retryAnalyze.getters.spec.ts +156 -156
  160. package/src/talkpilot/retry_analyze/index.ts +2 -2
  161. package/src/talkpilot/retry_analyze/retryAnalyze.getters.ts +84 -84
  162. package/src/talkpilot/retry_analyze/retryAnalyze.types.ts +13 -13
  163. package/src/talkpilot/sessions/__tests__/sessions.spec.ts +147 -147
  164. package/src/talkpilot/sessions/index.ts +2 -2
  165. package/src/talkpilot/sessions/sessions.getter.ts +92 -92
  166. package/src/talkpilot/sessions/sessions.schema.ts +34 -34
  167. package/src/talkpilot/sessions/sessions.types.ts +30 -30
  168. package/src/talkpilot/subscriptions/__tests__/subscriptions.getters.utils.spec.ts +45 -45
  169. package/src/talkpilot/subscriptions/index.ts +3 -3
  170. package/src/talkpilot/subscriptions/subscriptions.getters.ts +146 -146
  171. package/src/talkpilot/subscriptions/subscriptions.getters.utils.ts +33 -33
  172. package/src/talkpilot/subscriptions/subscriptions.types.ts +66 -66
  173. package/src/talkpilot/utils/__tests__/query.utils.spec.ts +49 -49
  174. package/src/talkpilot/utils/query.utils.ts +21 -21
  175. package/src/test-utils/db-utils.ts +33 -33
  176. package/src/test-utils/factories/index.ts +18 -18
  177. package/src/test-utils/factories/municipal/cities.ts +16 -16
  178. package/src/test-utils/factories/municipal/departmentsSubjects.ts +37 -37
  179. package/src/test-utils/factories/municipal/muniIssues.ts +32 -32
  180. package/src/test-utils/factories/municipal/streets.ts +22 -22
  181. package/src/test-utils/factories/municipal/tickets.ts +39 -39
  182. package/src/test-utils/factories/talkpilot/agents.ts +19 -19
  183. package/src/test-utils/factories/talkpilot/calls.ts +37 -37
  184. package/src/test-utils/factories/talkpilot/clientAudioBuffers.ts +20 -20
  185. package/src/test-utils/factories/talkpilot/clientsConfig.ts +18 -18
  186. package/src/test-utils/factories/talkpilot/contextNotes.ts +40 -40
  187. package/src/test-utils/factories/talkpilot/flows.ts +33 -33
  188. package/src/test-utils/factories/talkpilot/groups.ts +33 -33
  189. package/src/test-utils/factories/talkpilot/phone_numbers.ts +22 -22
  190. package/src/test-utils/factories/talkpilot/sessions.ts +35 -35
  191. package/src/test-utils/factories/websitalk/knowledgeDocuments.ts +29 -29
  192. package/src/test-utils/factories/websitalk/scanResources.ts +26 -26
  193. package/src/test-utils/factories/websitalk/scans.ts +30 -30
  194. package/src/test-utils/factories/websitalk/websiteUrls.ts +17 -17
  195. package/src/utils/date.utils.ts +126 -126
  196. package/src/utils/shared.types.ts +4 -4
  197. package/src/utils/validation.ts +23 -23
  198. package/src/websitalk/index.ts +18 -18
  199. package/src/websitalk/knowledgeDocuments/__tests__/knowledgeDocuments.spec.ts +238 -238
  200. package/src/websitalk/knowledgeDocuments/index.ts +3 -3
  201. package/src/websitalk/knowledgeDocuments/knowledgeDocuments.constants.ts +26 -26
  202. package/src/websitalk/knowledgeDocuments/knowledgeDocuments.getters.ts +95 -95
  203. package/src/websitalk/knowledgeDocuments/knowledgeDocuments.types.ts +75 -75
  204. package/src/websitalk/mongodb-client.ts +61 -61
  205. package/src/websitalk/scanResources/__tests__/scanResources.spec.ts +267 -267
  206. package/src/websitalk/scanResources/index.ts +4 -4
  207. package/src/websitalk/scanResources/scanResources.constants.ts +60 -60
  208. package/src/websitalk/scanResources/scanResources.getters.ts +128 -128
  209. package/src/websitalk/scanResources/scanResources.types.ts +105 -105
  210. package/src/websitalk/scanResources/scanResources.utils.ts +31 -31
  211. package/src/websitalk/scans/__tests__/scans.spec.ts +362 -362
  212. package/src/websitalk/scans/index.ts +4 -4
  213. package/src/websitalk/scans/scans.constants.ts +18 -18
  214. package/src/websitalk/scans/scans.getters.ts +172 -172
  215. package/src/websitalk/scans/scans.types.ts +58 -58
  216. package/src/websitalk/scans/scans.utils.ts +5 -5
  217. package/src/websitalk/websiteUrls/__tests__/websiteUrls.spec.ts +77 -77
  218. package/src/websitalk/websiteUrls/index.ts +2 -2
  219. package/src/websitalk/websiteUrls/websiteUrls.getters.ts +65 -65
  220. package/src/websitalk/websiteUrls/websiteUrls.types.ts +13 -13
  221. package/tsconfig.json +23 -23
  222. package/dist/talkpilot/callTokenUsage/callTokenUsage.getters.d.ts +0 -4
  223. package/dist/talkpilot/callTokenUsage/callTokenUsage.getters.d.ts.map +0 -1
  224. package/dist/talkpilot/callTokenUsage/callTokenUsage.getters.js +0 -30
  225. package/dist/talkpilot/callTokenUsage/callTokenUsage.getters.js.map +0 -1
  226. package/dist/talkpilot/callTokenUsage/callTokenUsage.types.d.ts +0 -28
  227. package/dist/talkpilot/callTokenUsage/callTokenUsage.types.d.ts.map +0 -1
  228. package/dist/talkpilot/callTokenUsage/callTokenUsage.types.js +0 -3
  229. package/dist/talkpilot/callTokenUsage/callTokenUsage.types.js.map +0 -1
  230. package/dist/talkpilot/callTokenUsage/index.d.ts +0 -3
  231. package/dist/talkpilot/callTokenUsage/index.d.ts.map +0 -1
  232. package/dist/talkpilot/callTokenUsage/index.js +0 -18
  233. package/dist/talkpilot/callTokenUsage/index.js.map +0 -1
  234. package/src/talkpilot/callTokenUsage/__tests__/callTokenUsage.getters.spec.ts +0 -57
  235. package/src/talkpilot/callTokenUsage/callTokenUsage.getters.ts +0 -42
  236. package/src/talkpilot/callTokenUsage/callTokenUsage.types.ts +0 -28
  237. package/src/talkpilot/callTokenUsage/index.ts +0 -2
@@ -1,2 +1,2 @@
1
- export * from "./websiteUrls.types";
2
- export * from "./websiteUrls.getters";
1
+ export * from "./websiteUrls.types";
2
+ export * from "./websiteUrls.getters";
@@ -1,65 +1,65 @@
1
- import { Collection, Filter, ObjectId as MongoObjectId } from "mongodb";
2
- import { getDb, ObjectId } from "../index";
3
- import type {
4
- CreateWebsiteUrlInput,
5
- WebsiteUrl,
6
- WebsiteUrlDoc,
7
- } from "./websiteUrls.types";
8
-
9
- export const getWebsiteUrlsCollection = (): Collection<WebsiteUrl> => {
10
- return getDb().collection<WebsiteUrl>("websiteUrls");
11
- };
12
-
13
- export const getWebsiteUrlsByClient = async (
14
- clientId: string,
15
- ): Promise<WebsiteUrlDoc[]> => {
16
- return getWebsiteUrlsCollection()
17
- .find({ clientId })
18
- .sort({ createdAt: 1 })
19
- .toArray();
20
- };
21
-
22
- export const getWebsiteUrlById = async (
23
- id: string,
24
- ): Promise<WebsiteUrlDoc | null> => {
25
- return getWebsiteUrlsCollection().findOne({ _id: new ObjectId(id) });
26
- };
27
-
28
- export const findWebsiteUrls = async (
29
- filter: Filter<WebsiteUrl> = {},
30
- ): Promise<WebsiteUrlDoc[]> => {
31
- return getWebsiteUrlsCollection().find(filter).toArray();
32
- };
33
-
34
- export const createWebsiteUrl = async (
35
- input: CreateWebsiteUrlInput,
36
- ): Promise<MongoObjectId> => {
37
- const now = new Date();
38
- const { insertedId } = await getWebsiteUrlsCollection().insertOne({
39
- clientId: input.clientId,
40
- name: input.name,
41
- baseUrl: input.baseUrl,
42
- createdAt: now,
43
- updatedAt: now,
44
- });
45
-
46
- return insertedId;
47
- };
48
-
49
- export const updateWebsiteUrl = async (
50
- id: string,
51
- updates: Partial<Pick<WebsiteUrl, "name" | "baseUrl">>,
52
- ): Promise<WebsiteUrlDoc | null> => {
53
- return getWebsiteUrlsCollection().findOneAndUpdate(
54
- { _id: new ObjectId(id) },
55
- { $set: { ...updates, updatedAt: new Date() } },
56
- { returnDocument: "after" },
57
- );
58
- };
59
-
60
- export const deleteWebsiteUrl = async (id: string): Promise<boolean> => {
61
- const result = await getWebsiteUrlsCollection().deleteOne({
62
- _id: new ObjectId(id),
63
- });
64
- return result.deletedCount === 1;
65
- };
1
+ import { Collection, Filter, ObjectId as MongoObjectId } from "mongodb";
2
+ import { getDb, ObjectId } from "../index";
3
+ import type {
4
+ CreateWebsiteUrlInput,
5
+ WebsiteUrl,
6
+ WebsiteUrlDoc,
7
+ } from "./websiteUrls.types";
8
+
9
+ export const getWebsiteUrlsCollection = (): Collection<WebsiteUrl> => {
10
+ return getDb().collection<WebsiteUrl>("websiteUrls");
11
+ };
12
+
13
+ export const getWebsiteUrlsByClient = async (
14
+ clientId: string,
15
+ ): Promise<WebsiteUrlDoc[]> => {
16
+ return getWebsiteUrlsCollection()
17
+ .find({ clientId })
18
+ .sort({ createdAt: 1 })
19
+ .toArray();
20
+ };
21
+
22
+ export const getWebsiteUrlById = async (
23
+ id: string,
24
+ ): Promise<WebsiteUrlDoc | null> => {
25
+ return getWebsiteUrlsCollection().findOne({ _id: new ObjectId(id) });
26
+ };
27
+
28
+ export const findWebsiteUrls = async (
29
+ filter: Filter<WebsiteUrl> = {},
30
+ ): Promise<WebsiteUrlDoc[]> => {
31
+ return getWebsiteUrlsCollection().find(filter).toArray();
32
+ };
33
+
34
+ export const createWebsiteUrl = async (
35
+ input: CreateWebsiteUrlInput,
36
+ ): Promise<MongoObjectId> => {
37
+ const now = new Date();
38
+ const { insertedId } = await getWebsiteUrlsCollection().insertOne({
39
+ clientId: input.clientId,
40
+ name: input.name,
41
+ baseUrl: input.baseUrl,
42
+ createdAt: now,
43
+ updatedAt: now,
44
+ });
45
+
46
+ return insertedId;
47
+ };
48
+
49
+ export const updateWebsiteUrl = async (
50
+ id: string,
51
+ updates: Partial<Pick<WebsiteUrl, "name" | "baseUrl">>,
52
+ ): Promise<WebsiteUrlDoc | null> => {
53
+ return getWebsiteUrlsCollection().findOneAndUpdate(
54
+ { _id: new ObjectId(id) },
55
+ { $set: { ...updates, updatedAt: new Date() } },
56
+ { returnDocument: "after" },
57
+ );
58
+ };
59
+
60
+ export const deleteWebsiteUrl = async (id: string): Promise<boolean> => {
61
+ const result = await getWebsiteUrlsCollection().deleteOne({
62
+ _id: new ObjectId(id),
63
+ });
64
+ return result.deletedCount === 1;
65
+ };
@@ -1,13 +1,13 @@
1
- import { ObjectId } from "mongodb";
2
-
3
- export type WebsiteUrl = {
4
- clientId: string;
5
- name: string;
6
- baseUrl: string;
7
- createdAt: Date;
8
- updatedAt: Date;
9
- };
10
-
11
- export type WebsiteUrlDoc = WebsiteUrl & { _id: ObjectId };
12
-
13
- export type CreateWebsiteUrlInput = Omit<WebsiteUrl, "createdAt" | "updatedAt">;
1
+ import { ObjectId } from "mongodb";
2
+
3
+ export type WebsiteUrl = {
4
+ clientId: string;
5
+ name: string;
6
+ baseUrl: string;
7
+ createdAt: Date;
8
+ updatedAt: Date;
9
+ };
10
+
11
+ export type WebsiteUrlDoc = WebsiteUrl & { _id: ObjectId };
12
+
13
+ export type CreateWebsiteUrlInput = Omit<WebsiteUrl, "createdAt" | "updatedAt">;
package/tsconfig.json CHANGED
@@ -1,23 +1,23 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "Node16",
5
- "moduleResolution": "node16",
6
- "isolatedModules": true,
7
- "lib": ["ES2022"],
8
- "declaration": true,
9
- "declarationMap": true,
10
- "sourceMap": true,
11
- "outDir": "dist",
12
- "rootDir": "src",
13
- "strict": true,
14
- "esModuleInterop": true,
15
- "forceConsistentCasingInFileNames": true,
16
- "skipLibCheck": true,
17
- "resolveJsonModule": true,
18
- "experimentalDecorators": true,
19
- "emitDecoratorMetadata": true
20
- },
21
- "include": ["src/**/*"],
22
- "exclude": ["node_modules", "dist", "test", "**/*.test.ts", "**/__tests__/*", "**/*.spec.ts"]
23
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "Node16",
5
+ "moduleResolution": "node16",
6
+ "isolatedModules": true,
7
+ "lib": ["ES2022"],
8
+ "declaration": true,
9
+ "declarationMap": true,
10
+ "sourceMap": true,
11
+ "outDir": "dist",
12
+ "rootDir": "src",
13
+ "strict": true,
14
+ "esModuleInterop": true,
15
+ "forceConsistentCasingInFileNames": true,
16
+ "skipLibCheck": true,
17
+ "resolveJsonModule": true,
18
+ "experimentalDecorators": true,
19
+ "emitDecoratorMetadata": true
20
+ },
21
+ "include": ["src/**/*"],
22
+ "exclude": ["node_modules", "dist", "test", "**/*.test.ts", "**/__tests__/*", "**/*.spec.ts"]
23
+ }
@@ -1,4 +0,0 @@
1
- import { CallTokenUsage, CallTokenUsageDoc } from "./callTokenUsage.types";
2
- export declare const getCallTokenUsageCollection: () => import("mongodb").Collection<CallTokenUsageDoc>;
3
- export declare const incrementCallTokenUsage: (callSid: string, { provider, model, ...counters }: CallTokenUsage) => Promise<void>;
4
- //# sourceMappingURL=callTokenUsage.getters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callTokenUsage.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/callTokenUsage/callTokenUsage.getters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3E,eAAO,MAAM,2BAA2B,uDAEvC,CAAC;AAkBF,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,kCAAkC,cAAc,KAC/C,OAAO,CAAC,IAAI,CAcd,CAAC"}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.incrementCallTokenUsage = exports.getCallTokenUsageCollection = void 0;
4
- const index_1 = require("../index");
5
- const getCallTokenUsageCollection = () => {
6
- return (0, index_1.getDb)().collection("callTokenUsage");
7
- };
8
- exports.getCallTokenUsageCollection = getCallTokenUsageCollection;
9
- // Unique callSid, so concurrent first reports of a call upsert one document, not several.
10
- const callSidIndexByDb = new WeakMap();
11
- const ensureCallSidIndex = () => {
12
- const db = (0, index_1.getDb)();
13
- let index = callSidIndexByDb.get(db);
14
- if (!index) {
15
- index = (0, exports.getCallTokenUsageCollection)().createIndex({ callSid: 1 }, { unique: true });
16
- callSidIndexByDb.set(db, index);
17
- }
18
- return index;
19
- };
20
- const incrementCallTokenUsage = async (callSid, { provider, model, ...counters }) => {
21
- await ensureCallSidIndex();
22
- const now = new Date();
23
- await (0, exports.getCallTokenUsageCollection)().updateOne({ callSid }, {
24
- $inc: Object.fromEntries(Object.entries(counters).filter(([, value]) => (value ?? 0) > 0)),
25
- $set: { provider, ...(model && { model }), updatedAt: now },
26
- $setOnInsert: { createdAt: now },
27
- }, { upsert: true });
28
- };
29
- exports.incrementCallTokenUsage = incrementCallTokenUsage;
30
- //# sourceMappingURL=callTokenUsage.getters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callTokenUsage.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/callTokenUsage/callTokenUsage.getters.ts"],"names":[],"mappings":";;;AACA,oCAAiC;AAG1B,MAAM,2BAA2B,GAAG,GAAG,EAAE;IAC9C,OAAO,IAAA,aAAK,GAAE,CAAC,UAAU,CAAoB,gBAAgB,CAAC,CAAC;AACjE,CAAC,CAAC;AAFW,QAAA,2BAA2B,+BAEtC;AAEF,0FAA0F;AAC1F,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAuB,CAAC;AAE5D,MAAM,kBAAkB,GAAG,GAAoB,EAAE;IAC/C,MAAM,EAAE,GAAG,IAAA,aAAK,GAAE,CAAC;IACnB,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,IAAA,mCAA2B,GAAE,CAAC,WAAW,CAC/C,EAAE,OAAO,EAAE,CAAC,EAAE,EACd,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;QACF,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,KAAK,EAC1C,OAAe,EACf,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAkB,EACjC,EAAE;IACjB,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAA,mCAA2B,GAAE,CAAC,SAAS,CAC3C,EAAE,OAAO,EAAE,EACX;QACE,IAAI,EAAE,MAAM,CAAC,WAAW,CACtB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CACjE;QACD,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;QAC3D,YAAY,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;KACE,EACpC,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,uBAAuB,2BAiBlC"}
@@ -1,28 +0,0 @@
1
- export type CallTokenUsage = {
2
- provider: string;
3
- model?: string;
4
- responsesCount?: number;
5
- inputTokens?: number;
6
- outputTokens?: number;
7
- totalTokens?: number;
8
- inputTextTokens?: number;
9
- inputAudioTokens?: number;
10
- inputImageTokens?: number;
11
- cachedInputTokens?: number;
12
- cachedInputTextTokens?: number;
13
- cachedInputAudioTokens?: number;
14
- cachedInputImageTokens?: number;
15
- outputTextTokens?: number;
16
- outputAudioTokens?: number;
17
- thoughtsTokens?: number;
18
- toolUseTokens?: number;
19
- billableAudioSeconds?: number;
20
- sessionSeconds?: number;
21
- textInputsCount?: number;
22
- };
23
- export type CallTokenUsageDoc = CallTokenUsage & {
24
- callSid: string;
25
- createdAt: Date;
26
- updatedAt: Date;
27
- };
28
- //# sourceMappingURL=callTokenUsage.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callTokenUsage.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/callTokenUsage/callTokenUsage.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=callTokenUsage.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callTokenUsage.types.js","sourceRoot":"","sources":["../../../src/talkpilot/callTokenUsage/callTokenUsage.types.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- export * from "./callTokenUsage.getters";
2
- export type * from "./callTokenUsage.types";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/callTokenUsage/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,mBAAmB,wBAAwB,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./callTokenUsage.getters"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/talkpilot/callTokenUsage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC"}
@@ -1,57 +0,0 @@
1
- import {
2
- getCallTokenUsageCollection,
3
- incrementCallTokenUsage,
4
- } from "../callTokenUsage.getters";
5
-
6
- describe("callTokenUsage getters", () => {
7
- it("should add each report to the call totals and keep provider and model", async () => {
8
- await incrementCallTokenUsage("CA-usage-1", {
9
- provider: "openai",
10
- model: "gpt-realtime",
11
- inputTokens: 10,
12
- });
13
- await incrementCallTokenUsage("CA-usage-1", {
14
- provider: "openai",
15
- inputTokens: 5,
16
- });
17
-
18
- const usage = await getCallTokenUsageCollection().findOne({
19
- callSid: "CA-usage-1",
20
- });
21
- expect(usage).toMatchObject({
22
- provider: "openai",
23
- model: "gpt-realtime",
24
- inputTokens: 15,
25
- });
26
- });
27
-
28
- it("should create a single document when first reports arrive together", async () => {
29
- await Promise.all(
30
- Array.from({ length: 10 }, () =>
31
- incrementCallTokenUsage("CA-usage-2", {
32
- provider: "xai",
33
- textInputsCount: 1,
34
- }),
35
- ),
36
- );
37
-
38
- const docs = await getCallTokenUsageCollection()
39
- .find({ callSid: "CA-usage-2" })
40
- .toArray();
41
- expect(docs).toHaveLength(1);
42
- expect(docs[0].textInputsCount).toBe(10);
43
- });
44
-
45
- it("should not write zero counters", async () => {
46
- await incrementCallTokenUsage("CA-usage-3", {
47
- provider: "gemini",
48
- inputTokens: 3,
49
- outputTokens: 0,
50
- });
51
-
52
- const usage = await getCallTokenUsageCollection().findOne({
53
- callSid: "CA-usage-3",
54
- });
55
- expect(usage).not.toHaveProperty("outputTokens");
56
- });
57
- });
@@ -1,42 +0,0 @@
1
- import { Db, UpdateFilter } from "mongodb";
2
- import { getDb } from "../index";
3
- import { CallTokenUsage, CallTokenUsageDoc } from "./callTokenUsage.types";
4
-
5
- export const getCallTokenUsageCollection = () => {
6
- return getDb().collection<CallTokenUsageDoc>("callTokenUsage");
7
- };
8
-
9
- // Unique callSid, so concurrent first reports of a call upsert one document, not several.
10
- const callSidIndexByDb = new WeakMap<Db, Promise<string>>();
11
-
12
- const ensureCallSidIndex = (): Promise<string> => {
13
- const db = getDb();
14
- let index = callSidIndexByDb.get(db);
15
- if (!index) {
16
- index = getCallTokenUsageCollection().createIndex(
17
- { callSid: 1 },
18
- { unique: true },
19
- );
20
- callSidIndexByDb.set(db, index);
21
- }
22
- return index;
23
- };
24
-
25
- export const incrementCallTokenUsage = async (
26
- callSid: string,
27
- { provider, model, ...counters }: CallTokenUsage,
28
- ): Promise<void> => {
29
- await ensureCallSidIndex();
30
- const now = new Date();
31
- await getCallTokenUsageCollection().updateOne(
32
- { callSid },
33
- {
34
- $inc: Object.fromEntries(
35
- Object.entries(counters).filter(([, value]) => (value ?? 0) > 0),
36
- ),
37
- $set: { provider, ...(model && { model }), updatedAt: now },
38
- $setOnInsert: { createdAt: now },
39
- } as UpdateFilter<CallTokenUsageDoc>,
40
- { upsert: true },
41
- );
42
- };
@@ -1,28 +0,0 @@
1
- export type CallTokenUsage = {
2
- provider: string;
3
- model?: string;
4
- responsesCount?: number;
5
- inputTokens?: number;
6
- outputTokens?: number;
7
- totalTokens?: number;
8
- inputTextTokens?: number;
9
- inputAudioTokens?: number;
10
- inputImageTokens?: number;
11
- cachedInputTokens?: number;
12
- cachedInputTextTokens?: number;
13
- cachedInputAudioTokens?: number;
14
- cachedInputImageTokens?: number;
15
- outputTextTokens?: number;
16
- outputAudioTokens?: number;
17
- thoughtsTokens?: number;
18
- toolUseTokens?: number;
19
- billableAudioSeconds?: number;
20
- sessionSeconds?: number;
21
- textInputsCount?: number;
22
- };
23
-
24
- export type CallTokenUsageDoc = CallTokenUsage & {
25
- callSid: string;
26
- createdAt: Date;
27
- updatedAt: Date;
28
- };
@@ -1,2 +0,0 @@
1
- export * from "./callTokenUsage.getters";
2
- export type * from "./callTokenUsage.types";