@talkpilot/core-db 1.3.66 → 1.3.67

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 (342) 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 +0 -48
  5. package/dist/configuration/models/models.constants.d.ts +1 -1
  6. package/dist/configuration/models/models.constants.d.ts.map +1 -1
  7. package/dist/configuration/models/models.constants.js +6 -1
  8. package/dist/configuration/models/models.constants.js.map +1 -1
  9. package/dist/municipal/departmentsSubjects/departmentsSubjects.setters.d.ts +10 -0
  10. package/dist/municipal/departmentsSubjects/departmentsSubjects.setters.d.ts.map +1 -0
  11. package/dist/municipal/departmentsSubjects/departmentsSubjects.setters.js +15 -0
  12. package/dist/municipal/departmentsSubjects/departmentsSubjects.setters.js.map +1 -0
  13. package/dist/municipal/streets/streets.setters.d.ts +10 -0
  14. package/dist/municipal/streets/streets.setters.d.ts.map +1 -0
  15. package/dist/municipal/streets/streets.setters.js +15 -0
  16. package/dist/municipal/streets/streets.setters.js.map +1 -0
  17. package/dist/reconcile/index.d.ts +5 -0
  18. package/dist/reconcile/index.d.ts.map +1 -0
  19. package/dist/{talkpilot/auditLogs → reconcile}/index.js +4 -2
  20. package/dist/reconcile/index.js.map +1 -0
  21. package/dist/reconcile/reconcile.diff.d.ts +4 -0
  22. package/dist/reconcile/reconcile.diff.d.ts.map +1 -0
  23. package/dist/reconcile/reconcile.diff.js +36 -0
  24. package/dist/reconcile/reconcile.diff.js.map +1 -0
  25. package/dist/reconcile/reconcile.execute.d.ts +7 -0
  26. package/dist/reconcile/reconcile.execute.d.ts.map +1 -0
  27. package/dist/reconcile/reconcile.execute.js +20 -0
  28. package/dist/reconcile/reconcile.execute.js.map +1 -0
  29. package/dist/reconcile/reconcile.ops.d.ts +12 -0
  30. package/dist/reconcile/reconcile.ops.d.ts.map +1 -0
  31. package/dist/reconcile/reconcile.ops.js +24 -0
  32. package/dist/reconcile/reconcile.ops.js.map +1 -0
  33. package/dist/reconcile/reconcile.types.d.ts +32 -0
  34. package/dist/reconcile/reconcile.types.d.ts.map +1 -0
  35. package/dist/{talkpilot/auditLogs/auditLogs.types.js → reconcile/reconcile.types.js} +1 -1
  36. package/dist/reconcile/reconcile.types.js.map +1 -0
  37. package/dist/talkpilot/calls/calls.constants.d.ts +1 -9
  38. package/dist/talkpilot/calls/calls.constants.d.ts.map +1 -1
  39. package/dist/talkpilot/calls/calls.constants.js +1 -9
  40. package/dist/talkpilot/calls/calls.constants.js.map +1 -1
  41. package/dist/talkpilot/calls/calls.getters.d.ts +1 -7
  42. package/dist/talkpilot/calls/calls.getters.d.ts.map +1 -1
  43. package/dist/talkpilot/calls/calls.getters.js +1 -181
  44. package/dist/talkpilot/calls/calls.getters.js.map +1 -1
  45. package/dist/talkpilot/calls/calls.types.d.ts +2 -35
  46. package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
  47. package/dist/talkpilot/clients/clients.getters.d.ts +0 -2
  48. package/dist/talkpilot/clients/clients.getters.d.ts.map +1 -1
  49. package/dist/talkpilot/clients/clients.getters.js +1 -15
  50. package/dist/talkpilot/clients/clients.getters.js.map +1 -1
  51. package/dist/talkpilot/clients/clients.types.d.ts +0 -21
  52. package/dist/talkpilot/clients/clients.types.d.ts.map +1 -1
  53. package/dist/talkpilot/clients/index.d.ts +0 -2
  54. package/dist/talkpilot/clients/index.d.ts.map +1 -1
  55. package/dist/talkpilot/clients/index.js +0 -2
  56. package/dist/talkpilot/clients/index.js.map +1 -1
  57. package/dist/talkpilot/index.d.ts +0 -1
  58. package/dist/talkpilot/index.d.ts.map +1 -1
  59. package/dist/talkpilot/index.js +0 -1
  60. package/dist/talkpilot/index.js.map +1 -1
  61. package/dist/talkpilot/phone_numbers/phone_numbers.getter.d.ts +1 -9
  62. package/dist/talkpilot/phone_numbers/phone_numbers.getter.d.ts.map +1 -1
  63. package/dist/talkpilot/phone_numbers/phone_numbers.getter.js +1 -66
  64. package/dist/talkpilot/phone_numbers/phone_numbers.getter.js.map +1 -1
  65. package/dist/talkpilot/phone_numbers/phone_numbers.types.d.ts +0 -5
  66. package/dist/talkpilot/phone_numbers/phone_numbers.types.d.ts.map +1 -1
  67. package/dist/test-utils/factories/index.d.ts +0 -2
  68. package/dist/test-utils/factories/index.d.ts.map +1 -1
  69. package/dist/test-utils/factories/index.js +0 -2
  70. package/dist/test-utils/factories/index.js.map +1 -1
  71. package/jest.config.js +20 -20
  72. package/package.json +46 -46
  73. package/src/__tests__/setup.ts +20 -20
  74. package/src/bulkWrite/__tests__/bulkWrite.spec.ts +65 -65
  75. package/src/bulkWrite/bulkWrite.ops.ts +45 -45
  76. package/src/bulkWrite/bulkWrite.types.ts +4 -4
  77. package/src/bulkWrite/index.ts +2 -2
  78. package/src/config.ts +9 -9
  79. package/src/configuration/index.ts +17 -17
  80. package/src/configuration/internalModels/index.ts +3 -3
  81. package/src/configuration/internalModels/internalModels.constants.ts +1 -1
  82. package/src/configuration/internalModels/internalModels.getters.ts +33 -33
  83. package/src/configuration/internalModels/internalModels.types.ts +12 -12
  84. package/src/configuration/models/__tests__/models.getters.spec.ts +67 -67
  85. package/src/configuration/models/index.ts +27 -27
  86. package/src/configuration/models/models.constants.ts +20 -15
  87. package/src/configuration/models/models.getters.ts +71 -71
  88. package/src/configuration/models/models.types.ts +80 -80
  89. package/src/configuration/mongodb-client.ts +62 -62
  90. package/src/configuration/prompts/index.ts +2 -2
  91. package/src/configuration/prompts/prompts.getters.ts +49 -49
  92. package/src/configuration/prompts/prompts.types.ts +11 -11
  93. package/src/connection.ts +81 -81
  94. package/src/index.ts +47 -47
  95. package/src/municipal/__tests__/validation.spec.ts +62 -62
  96. package/src/municipal/cities/cities.getters.ts +50 -50
  97. package/src/municipal/cities/cities.types.ts +11 -11
  98. package/src/municipal/cities/index.ts +2 -2
  99. package/src/municipal/departmentsSubjects/__tests__/departmentsSubjects.spec.ts +272 -272
  100. package/src/municipal/departmentsSubjects/departmentsSubjects.getters.ts +317 -317
  101. package/src/municipal/departmentsSubjects/departmentsSubjects.types.ts +73 -73
  102. package/src/municipal/departmentsSubjects/index.ts +9 -9
  103. package/src/municipal/index.ts +22 -22
  104. package/src/municipal/mongodb-client.ts +61 -61
  105. package/src/municipal/muniIssues/__tests__/muniIssues.setters.spec.ts +94 -94
  106. package/src/municipal/muniIssues/__tests__/muniIssues.setup.spec.ts +92 -92
  107. package/src/municipal/muniIssues/index.ts +17 -17
  108. package/src/municipal/muniIssues/muniIssues.constants.ts +18 -18
  109. package/src/municipal/muniIssues/muniIssues.getters.ts +24 -24
  110. package/src/municipal/muniIssues/muniIssues.schema.ts +66 -66
  111. package/src/municipal/muniIssues/muniIssues.setters.ts +24 -24
  112. package/src/municipal/muniIssues/muniIssues.setup.ts +65 -65
  113. package/src/municipal/muniIssues/muniIssues.types.ts +37 -37
  114. package/src/municipal/streets/__tests__/streets.spec.ts +253 -253
  115. package/src/municipal/streets/index.ts +2 -2
  116. package/src/municipal/streets/streets.getters.ts +140 -140
  117. package/src/municipal/streets/streets.types.ts +19 -19
  118. package/src/municipal/systemInstructions/__tests__/getters.spec.ts +113 -113
  119. package/src/municipal/systemInstructions/__tests__/setters.spec.ts +274 -274
  120. package/src/municipal/systemInstructions/index.ts +7 -7
  121. package/src/municipal/systemInstructions/instructions.getters.ts +57 -57
  122. package/src/municipal/systemInstructions/instructions.setters.ts +119 -119
  123. package/src/municipal/systemInstructions/instructions.types.ts +30 -30
  124. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +30 -30
  125. package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +99 -99
  126. package/src/municipal/tickets/index.ts +9 -9
  127. package/src/municipal/tickets/tickets.constants.ts +8 -8
  128. package/src/municipal/tickets/tickets.getters.ts +121 -121
  129. package/src/municipal/tickets/tickets.statistics.aggregation.ts +110 -110
  130. package/src/municipal/tickets/tickets.statistics.getters.ts +145 -145
  131. package/src/municipal/tickets/tickets.types.ts +54 -54
  132. package/src/municipal/utils/types.ts +11 -11
  133. package/src/talkpilot/__tests__/db.spec.ts +38 -38
  134. package/src/talkpilot/__tests__/mongodb-client.spec.ts +18 -18
  135. package/src/talkpilot/__tests__/validation.spec.ts +68 -68
  136. package/src/talkpilot/agents/__tests__/agents.getters.spec.ts +29 -29
  137. package/src/talkpilot/agents/agents.getters.ts +34 -34
  138. package/src/talkpilot/agents/agents.types.ts +14 -14
  139. package/src/talkpilot/agents/index.ts +2 -2
  140. package/src/talkpilot/backgroundToolResults/__tests__/backgroundToolResults.getters.spec.ts +147 -147
  141. package/src/talkpilot/backgroundToolResults/backgroundToolResults.getters.ts +65 -65
  142. package/src/talkpilot/backgroundToolResults/backgroundToolResults.types.ts +23 -23
  143. package/src/talkpilot/backgroundToolResults/index.ts +2 -2
  144. package/src/talkpilot/calls/__tests__/callStats.utils.spec.ts +128 -128
  145. package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +229 -229
  146. package/src/talkpilot/calls/__tests__/calls.spec.ts +471 -471
  147. package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +483 -483
  148. package/src/talkpilot/calls/calls.constants.ts +49 -61
  149. package/src/talkpilot/calls/calls.getters.ts +1 -270
  150. package/src/talkpilot/calls/calls.statistics.getters.ts +668 -668
  151. package/src/talkpilot/calls/calls.statistics.types.ts +48 -48
  152. package/src/talkpilot/calls/calls.types.ts +2 -40
  153. package/src/talkpilot/calls/dashboard/calls.dashboard.ts +295 -295
  154. package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +57 -57
  155. package/src/talkpilot/calls/index.ts +6 -6
  156. package/src/talkpilot/clientAudioBuffers/__tests__/clientAudioBuffer.getters.spec.ts +160 -160
  157. package/src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts +117 -117
  158. package/src/talkpilot/clientAudioBuffers/clientsAudioBuffers.types.ts +25 -25
  159. package/src/talkpilot/clientAudioBuffers/index.ts +2 -2
  160. package/src/talkpilot/clients/__tests__/clients.quota.spec.ts +123 -123
  161. package/src/talkpilot/clients/clients.getters.ts +19 -32
  162. package/src/talkpilot/clients/clients.quota.getters.ts +119 -119
  163. package/src/talkpilot/clients/clients.quota.types.ts +27 -27
  164. package/src/talkpilot/clients/clients.types.ts +18 -37
  165. package/src/talkpilot/clients/index.ts +4 -6
  166. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.getters.spec.ts +423 -423
  167. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +212 -212
  168. package/src/talkpilot/clientsConfig/clientsConfig.constants.ts +2 -2
  169. package/src/talkpilot/clientsConfig/clientsConfig.getters.ts +247 -247
  170. package/src/talkpilot/clientsConfig/clientsConfig.types.ts +137 -137
  171. package/src/talkpilot/clientsConfig/index.ts +3 -3
  172. package/src/talkpilot/contextNotes/__tests__/contextNotes.getters.spec.ts +217 -217
  173. package/src/talkpilot/contextNotes/contextNotes.getters.ts +85 -85
  174. package/src/talkpilot/contextNotes/contextNotes.types.ts +20 -20
  175. package/src/talkpilot/contextNotes/index.ts +2 -2
  176. package/src/talkpilot/flows/__tests__/flows.schema.spec.ts +124 -124
  177. package/src/talkpilot/flows/flows.getter.ts +34 -34
  178. package/src/talkpilot/flows/flows.schema.ts +180 -180
  179. package/src/talkpilot/flows/flows.types.ts +211 -211
  180. package/src/talkpilot/flows/index.ts +7 -7
  181. package/src/talkpilot/groups/__tests__/groups.spec.ts +90 -90
  182. package/src/talkpilot/groups/__tests__/phone.utils.spec.ts +32 -32
  183. package/src/talkpilot/groups/groups.getters.ts +30 -30
  184. package/src/talkpilot/groups/groups.types.ts +29 -29
  185. package/src/talkpilot/groups/index.ts +3 -3
  186. package/src/talkpilot/groups/phone.utils.ts +46 -46
  187. package/src/talkpilot/index.ts +31 -32
  188. package/src/talkpilot/leads/index.ts +2 -2
  189. package/src/talkpilot/leads/leads.getter.ts +6 -6
  190. package/src/talkpilot/leads/leads.schema.ts +33 -33
  191. package/src/talkpilot/leads/leads.types.ts +20 -20
  192. package/src/talkpilot/mongodb-client.ts +78 -78
  193. package/src/talkpilot/phone_numbers/__tests__/phone_numbers.spec.ts +530 -774
  194. package/src/talkpilot/phone_numbers/index.ts +2 -2
  195. package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +240 -324
  196. package/src/talkpilot/phone_numbers/phone_numbers.schema.ts +17 -17
  197. package/src/talkpilot/phone_numbers/phone_numbers.types.ts +30 -36
  198. package/src/talkpilot/phone_numbers/phone_numbers.utils.ts +9 -9
  199. package/src/talkpilot/plans/__tests__/plans.spec.ts +70 -70
  200. package/src/talkpilot/plans/index.ts +2 -2
  201. package/src/talkpilot/plans/plans.getters.ts +132 -132
  202. package/src/talkpilot/plans/plans.types.ts +89 -89
  203. package/src/talkpilot/products/__tests__/products.getters.spec.ts +44 -44
  204. package/src/talkpilot/products/index.ts +2 -2
  205. package/src/talkpilot/products/products.getters.ts +12 -12
  206. package/src/talkpilot/products/products.types.ts +9 -9
  207. package/src/talkpilot/results/index.ts +7 -7
  208. package/src/talkpilot/results/results.getter.ts +39 -39
  209. package/src/talkpilot/results/results.schema.ts +25 -25
  210. package/src/talkpilot/results/results.types.ts +34 -34
  211. package/src/talkpilot/retry_analyze/__tests__/retryAnalyze.getters.spec.ts +156 -156
  212. package/src/talkpilot/retry_analyze/index.ts +2 -2
  213. package/src/talkpilot/retry_analyze/retryAnalyze.getters.ts +84 -84
  214. package/src/talkpilot/retry_analyze/retryAnalyze.types.ts +13 -13
  215. package/src/talkpilot/sessions/__tests__/sessions.spec.ts +147 -147
  216. package/src/talkpilot/sessions/index.ts +2 -2
  217. package/src/talkpilot/sessions/sessions.getter.ts +92 -92
  218. package/src/talkpilot/sessions/sessions.schema.ts +34 -34
  219. package/src/talkpilot/sessions/sessions.types.ts +30 -30
  220. package/src/talkpilot/subscriptions/__tests__/subscriptions.getters.utils.spec.ts +45 -45
  221. package/src/talkpilot/subscriptions/index.ts +3 -3
  222. package/src/talkpilot/subscriptions/subscriptions.getters.ts +146 -146
  223. package/src/talkpilot/subscriptions/subscriptions.getters.utils.ts +33 -33
  224. package/src/talkpilot/subscriptions/subscriptions.types.ts +66 -66
  225. package/src/talkpilot/utils/__tests__/query.utils.spec.ts +49 -49
  226. package/src/talkpilot/utils/query.utils.ts +21 -21
  227. package/src/test-utils/db-utils.ts +33 -33
  228. package/src/test-utils/factories/index.ts +18 -20
  229. package/src/test-utils/factories/municipal/cities.ts +16 -16
  230. package/src/test-utils/factories/municipal/departmentsSubjects.ts +37 -37
  231. package/src/test-utils/factories/municipal/muniIssues.ts +32 -32
  232. package/src/test-utils/factories/municipal/streets.ts +22 -22
  233. package/src/test-utils/factories/municipal/tickets.ts +39 -39
  234. package/src/test-utils/factories/talkpilot/agents.ts +19 -19
  235. package/src/test-utils/factories/talkpilot/calls.ts +37 -37
  236. package/src/test-utils/factories/talkpilot/clientAudioBuffers.ts +20 -20
  237. package/src/test-utils/factories/talkpilot/clientsConfig.ts +18 -18
  238. package/src/test-utils/factories/talkpilot/contextNotes.ts +40 -40
  239. package/src/test-utils/factories/talkpilot/flows.ts +33 -33
  240. package/src/test-utils/factories/talkpilot/groups.ts +33 -33
  241. package/src/test-utils/factories/talkpilot/phone_numbers.ts +22 -22
  242. package/src/test-utils/factories/talkpilot/sessions.ts +35 -35
  243. package/src/test-utils/factories/websitalk/knowledgeDocuments.ts +29 -29
  244. package/src/test-utils/factories/websitalk/scanResources.ts +26 -26
  245. package/src/test-utils/factories/websitalk/scans.ts +30 -30
  246. package/src/test-utils/factories/websitalk/websiteUrls.ts +17 -17
  247. package/src/utils/date.utils.ts +126 -126
  248. package/src/utils/shared.types.ts +4 -4
  249. package/src/utils/validation.ts +23 -23
  250. package/src/websitalk/index.ts +18 -18
  251. package/src/websitalk/knowledgeDocuments/__tests__/knowledgeDocuments.spec.ts +238 -238
  252. package/src/websitalk/knowledgeDocuments/index.ts +3 -3
  253. package/src/websitalk/knowledgeDocuments/knowledgeDocuments.constants.ts +26 -26
  254. package/src/websitalk/knowledgeDocuments/knowledgeDocuments.getters.ts +95 -95
  255. package/src/websitalk/knowledgeDocuments/knowledgeDocuments.types.ts +75 -75
  256. package/src/websitalk/mongodb-client.ts +61 -61
  257. package/src/websitalk/scanResources/__tests__/scanResources.spec.ts +267 -267
  258. package/src/websitalk/scanResources/index.ts +4 -4
  259. package/src/websitalk/scanResources/scanResources.constants.ts +60 -60
  260. package/src/websitalk/scanResources/scanResources.getters.ts +128 -128
  261. package/src/websitalk/scanResources/scanResources.types.ts +105 -105
  262. package/src/websitalk/scanResources/scanResources.utils.ts +31 -31
  263. package/src/websitalk/scans/__tests__/scans.spec.ts +362 -362
  264. package/src/websitalk/scans/index.ts +4 -4
  265. package/src/websitalk/scans/scans.constants.ts +18 -18
  266. package/src/websitalk/scans/scans.getters.ts +172 -172
  267. package/src/websitalk/scans/scans.types.ts +58 -58
  268. package/src/websitalk/scans/scans.utils.ts +5 -5
  269. package/src/websitalk/websiteUrls/__tests__/websiteUrls.spec.ts +77 -77
  270. package/src/websitalk/websiteUrls/index.ts +2 -2
  271. package/src/websitalk/websiteUrls/websiteUrls.getters.ts +65 -65
  272. package/src/websitalk/websiteUrls/websiteUrls.types.ts +13 -13
  273. package/tsconfig.json +23 -23
  274. package/dist/talkpilot/auditLogs/auditLogs.getters.d.ts +0 -8
  275. package/dist/talkpilot/auditLogs/auditLogs.getters.d.ts.map +0 -1
  276. package/dist/talkpilot/auditLogs/auditLogs.getters.js +0 -26
  277. package/dist/talkpilot/auditLogs/auditLogs.getters.js.map +0 -1
  278. package/dist/talkpilot/auditLogs/auditLogs.setters.d.ts +0 -3
  279. package/dist/talkpilot/auditLogs/auditLogs.setters.d.ts.map +0 -1
  280. package/dist/talkpilot/auditLogs/auditLogs.setters.js +0 -9
  281. package/dist/talkpilot/auditLogs/auditLogs.setters.js.map +0 -1
  282. package/dist/talkpilot/auditLogs/auditLogs.types.d.ts +0 -11
  283. package/dist/talkpilot/auditLogs/auditLogs.types.d.ts.map +0 -1
  284. package/dist/talkpilot/auditLogs/auditLogs.types.js.map +0 -1
  285. package/dist/talkpilot/auditLogs/index.d.ts +0 -3
  286. package/dist/talkpilot/auditLogs/index.d.ts.map +0 -1
  287. package/dist/talkpilot/auditLogs/index.js.map +0 -1
  288. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.getters.d.ts +0 -4
  289. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.getters.d.ts.map +0 -1
  290. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.getters.js +0 -9
  291. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.getters.js.map +0 -1
  292. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.setters.d.ts +0 -3
  293. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.setters.d.ts.map +0 -1
  294. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.setters.js +0 -9
  295. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.setters.js.map +0 -1
  296. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.types.d.ts +0 -10
  297. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.types.d.ts.map +0 -1
  298. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.types.js +0 -3
  299. package/dist/talkpilot/clientDeletionLogs/clientDeletionLogs.types.js.map +0 -1
  300. package/dist/talkpilot/clientDeletionLogs/index.d.ts +0 -4
  301. package/dist/talkpilot/clientDeletionLogs/index.d.ts.map +0 -1
  302. package/dist/talkpilot/clientDeletionLogs/index.js +0 -20
  303. package/dist/talkpilot/clientDeletionLogs/index.js.map +0 -1
  304. package/dist/talkpilot/clients/clients.constants.d.ts +0 -3
  305. package/dist/talkpilot/clients/clients.constants.d.ts.map +0 -1
  306. package/dist/talkpilot/clients/clients.constants.js +0 -6
  307. package/dist/talkpilot/clients/clients.constants.js.map +0 -1
  308. package/dist/talkpilot/clients/clients.lifecycle.d.ts +0 -10
  309. package/dist/talkpilot/clients/clients.lifecycle.d.ts.map +0 -1
  310. package/dist/talkpilot/clients/clients.lifecycle.js +0 -95
  311. package/dist/talkpilot/clients/clients.lifecycle.js.map +0 -1
  312. package/dist/talkpilot/results/results.constants.d.ts +0 -4
  313. package/dist/talkpilot/results/results.constants.d.ts.map +0 -1
  314. package/dist/talkpilot/results/results.constants.js +0 -10
  315. package/dist/talkpilot/results/results.constants.js.map +0 -1
  316. package/dist/talkpilot/results/results.statistics.getters.d.ts +0 -12
  317. package/dist/talkpilot/results/results.statistics.getters.d.ts.map +0 -1
  318. package/dist/talkpilot/results/results.statistics.getters.js +0 -258
  319. package/dist/talkpilot/results/results.statistics.getters.js.map +0 -1
  320. package/dist/talkpilot/results/results.statistics.types.d.ts +0 -22
  321. package/dist/talkpilot/results/results.statistics.types.d.ts.map +0 -1
  322. package/dist/talkpilot/results/results.statistics.types.js +0 -3
  323. package/dist/talkpilot/results/results.statistics.types.js.map +0 -1
  324. package/dist/test-utils/factories/talkpilot/clients.d.ts +0 -14
  325. package/dist/test-utils/factories/talkpilot/clients.d.ts.map +0 -1
  326. package/dist/test-utils/factories/talkpilot/clients.js +0 -19
  327. package/dist/test-utils/factories/talkpilot/clients.js.map +0 -1
  328. package/dist/test-utils/factories/talkpilot/results.d.ts +0 -16
  329. package/dist/test-utils/factories/talkpilot/results.d.ts.map +0 -1
  330. package/dist/test-utils/factories/talkpilot/results.js +0 -40
  331. package/dist/test-utils/factories/talkpilot/results.js.map +0 -1
  332. package/src/talkpilot/auditLogs/__tests__/auditLogs.spec.ts +0 -91
  333. package/src/talkpilot/auditLogs/auditLogs.getters.ts +0 -26
  334. package/src/talkpilot/auditLogs/auditLogs.types.ts +0 -12
  335. package/src/talkpilot/auditLogs/index.ts +0 -2
  336. package/src/talkpilot/calls/__tests__/calls.statistics.getters.spec.ts +0 -374
  337. package/src/talkpilot/clients/__tests__/clients.getters.spec.ts +0 -51
  338. package/src/talkpilot/clients/__tests__/clients.lifecycle.spec.ts +0 -166
  339. package/src/talkpilot/clients/clients.constants.ts +0 -2
  340. package/src/talkpilot/clients/clients.lifecycle.ts +0 -116
  341. package/src/test-utils/factories/talkpilot/clients.ts +0 -21
  342. package/src/test-utils/factories/talkpilot/results.ts +0 -43
@@ -1,65 +1,65 @@
1
- ---
2
- description: Development standards and conventions for the core-db package
3
- globs: src/**/*.ts
4
- alwaysApply: true
5
- ---
6
-
7
- # Development Standards
8
-
9
- This package provides a centralized database layer for multiple domains (TalkPilot and Municipal). Follow these rules to maintain consistency and reliability.
10
-
11
- ## Project Structure
12
-
13
- - **`src/talkpilot/`**: All database logic, types, and getters related to the TalkPilot domain.
14
- - **`src/municipal/`**: All database logic, types, and getters related to the Municipal Data domain.
15
- - **`src/test-utils/`**: Shared testing infrastructure, including factories and database utilities.
16
-
17
- ## Database Connection Pattern
18
-
19
- Each domain is isolated. They have their own `db` instance and must be connected independently.
20
-
21
- ```typescript
22
- import { mongodbClient, municipalDataMongodbClient } from '@talkpilot/core-db';
23
-
24
- // TalkPilot
25
- await mongodbClient.connect(uri);
26
-
27
- // Municipal
28
- await municipalDataMongodbClient.connect(uri);
29
- ```
30
-
31
- ## Creating New Getters
32
-
33
- 1. **Location**: Place getters in the relevant domain folder (e.g., `src/talkpilot/agents/agents.getters.ts`).
34
- 2. **Naming**: Use `find...` for multiple results and `get...ById` for single results.
35
- 3. **Domain isolation**: Always use the `getDb()` function from the current domain's `index.ts`.
36
-
37
- ## Environment Validation
38
-
39
- Always validate configuration "on-demand" within the `connect` methods using the validation utilities.
40
-
41
- ```typescript
42
- import { validateConfig, validateMongoUri } from '../utils/validation';
43
-
44
- async connect(uri?: string) {
45
- const mongodbUri = uri || process.env.MONGO_URI;
46
- validateConfig('MONGO_URI', mongodbUri);
47
- validateMongoUri(mongodbUri!);
48
- // ... connection logic
49
- }
50
- ```
51
-
52
- ## Testing Standards
53
-
54
- 1. **In-Memory DB**: Use `mongodb-memory-server` for all tests. It is automatically initialized in `src/__tests__/setup.ts`.
55
- 2. **Factories**: Use the Fishery factories in `src/test-utils/factories/` to generate test data.
56
- 3. **Organization**: Place tests in a `__tests__` folder within the relevant domain.
57
-
58
- ```typescript
59
- import { createAgent } from '../../../test-utils/factories';
60
-
61
- it('should find agents', async () => {
62
- const agent = createAgent({ name: 'Test' });
63
- // ... test logic
64
- });
65
- ```
1
+ ---
2
+ description: Development standards and conventions for the core-db package
3
+ globs: src/**/*.ts
4
+ alwaysApply: true
5
+ ---
6
+
7
+ # Development Standards
8
+
9
+ This package provides a centralized database layer for multiple domains (TalkPilot and Municipal). Follow these rules to maintain consistency and reliability.
10
+
11
+ ## Project Structure
12
+
13
+ - **`src/talkpilot/`**: All database logic, types, and getters related to the TalkPilot domain.
14
+ - **`src/municipal/`**: All database logic, types, and getters related to the Municipal Data domain.
15
+ - **`src/test-utils/`**: Shared testing infrastructure, including factories and database utilities.
16
+
17
+ ## Database Connection Pattern
18
+
19
+ Each domain is isolated. They have their own `db` instance and must be connected independently.
20
+
21
+ ```typescript
22
+ import { mongodbClient, municipalDataMongodbClient } from '@talkpilot/core-db';
23
+
24
+ // TalkPilot
25
+ await mongodbClient.connect(uri);
26
+
27
+ // Municipal
28
+ await municipalDataMongodbClient.connect(uri);
29
+ ```
30
+
31
+ ## Creating New Getters
32
+
33
+ 1. **Location**: Place getters in the relevant domain folder (e.g., `src/talkpilot/agents/agents.getters.ts`).
34
+ 2. **Naming**: Use `find...` for multiple results and `get...ById` for single results.
35
+ 3. **Domain isolation**: Always use the `getDb()` function from the current domain's `index.ts`.
36
+
37
+ ## Environment Validation
38
+
39
+ Always validate configuration "on-demand" within the `connect` methods using the validation utilities.
40
+
41
+ ```typescript
42
+ import { validateConfig, validateMongoUri } from '../utils/validation';
43
+
44
+ async connect(uri?: string) {
45
+ const mongodbUri = uri || process.env.MONGO_URI;
46
+ validateConfig('MONGO_URI', mongodbUri);
47
+ validateMongoUri(mongodbUri!);
48
+ // ... connection logic
49
+ }
50
+ ```
51
+
52
+ ## Testing Standards
53
+
54
+ 1. **In-Memory DB**: Use `mongodb-memory-server` for all tests. It is automatically initialized in `src/__tests__/setup.ts`.
55
+ 2. **Factories**: Use the Fishery factories in `src/test-utils/factories/` to generate test data.
56
+ 3. **Organization**: Place tests in a `__tests__` folder within the relevant domain.
57
+
58
+ ```typescript
59
+ import { createAgent } from '../../../test-utils/factories';
60
+
61
+ it('should find agents', async () => {
62
+ const agent = createAgent({ name: 'Test' });
63
+ // ... test logic
64
+ });
65
+ ```
package/AGENTS.md CHANGED
@@ -1,49 +1,49 @@
1
- # AI Agent Guide for core-db
2
-
3
- Ground truth for AI coding agents in this repository. This is `@talkpilot/core-db` — the only package that should talk to Mongo. `.cursor/rules/development.mdc` exists but may lag (TalkPilot + Municipal only); do not expand those rules in an unrelated ticket.
4
-
5
- ## What this is
6
- Shared Mongo layer: typed getters, schemas, factories, indexes. Consumed by TalkPilot, municipal, WebsiteTalk, and clinic services. Publishing a version here is how other repos pick up schema/getter changes.
7
-
8
- ## Coding philosophy
9
- - Strict TypeScript. No `any`; use `unknown` and narrow.
10
- - No narrating comments.
11
- - Split types, getters, and schemas into separate files.
12
-
13
- ## Project structure
14
- - `src/talkpilot/` — calls, flows, sessions, clients, phone numbers, subscriptions, …
15
- - `src/municipal/` — cities, streets, tickets, departmentsSubjects, …
16
- - `src/websitalk/` — scans, scanResources, websiteUrls.
17
- - `src/configuration/` — prompts, models.
18
- - `src/test-utils/` — Fishery factories and test DB helpers.
19
- - `src/utils/` — validation, pagination, shared types.
20
- - `dist/` is what consumers import — generated, tests excluded from the build.
21
-
22
- ## Copy this
23
- New getter: `src/<domain>/<entity>/<entity>.types.ts` + `<entity>.getter.ts` (or `*.getters.ts`) + optional `<entity>.schema.ts` + barrel `index.ts` + `__tests__/<entity>.spec.ts`.
24
- Export it from `src/index.ts`.
25
- Examples: `src/talkpilot/calls/calls.getters.ts`, `src/talkpilot/phone_numbers/phone_numbers.getter.ts`.
26
-
27
- Naming: `find*` for many, `get*ById` (or equivalent single-doc) for one. Always use that domain’s `getDb()` / collection helper — never another domain’s client. Exception already on disk: `src/talkpilot/calls/calls.statistics.getters.ts` imports municipal `tickets.statistics.getters` — do not “clean that up.”
28
-
29
- ## Where data lives
30
- This repo **owns** `mongodb`. Four isolated clients — connect each independently:
31
-
32
- - `mongodbClient` — TalkPilot
33
- - `municipalDataMongodbClient` — municipal
34
- - `websitalkMongodbClient` — WebsiteTalk
35
- - `configurationMongodbClient` — configuration
36
-
37
- Do not cross-import getters across domains, except the talkpilot call-stats → municipal tickets exception above.
38
-
39
- ## Do / don't
40
- - Do not put HTTP, Express, or business orchestration here.
41
- - Validate `MONGO_URI` (and siblings) on demand in `connect()`, using `src/utils/validation`.
42
- - After a getter/schema change: bump package version, build, publish; then bump the consumer. Downstream pins skew — do not assume they are on latest.
43
- - `prepare` runs `build` on install.
44
-
45
- ## Siblings
46
- Every Node service should call getters from here. If a service is about to `getDb().collection` or `import from 'mongodb'`, the getter belongs in this PR first.
47
-
48
- ## Tests
49
- Jest + `mongodb-memory-server` (`src/__tests__/setup.ts`). Factories in `src/test-utils/factories/`. Colocate `__tests__/` under the domain.
1
+ # AI Agent Guide for core-db
2
+
3
+ Ground truth for AI coding agents in this repository. This is `@talkpilot/core-db` — the only package that should talk to Mongo. `.cursor/rules/development.mdc` exists but may lag (TalkPilot + Municipal only); do not expand those rules in an unrelated ticket.
4
+
5
+ ## What this is
6
+ Shared Mongo layer: typed getters, schemas, factories, indexes. Consumed by TalkPilot, municipal, WebsiteTalk, and clinic services. Publishing a version here is how other repos pick up schema/getter changes.
7
+
8
+ ## Coding philosophy
9
+ - Strict TypeScript. No `any`; use `unknown` and narrow.
10
+ - No narrating comments.
11
+ - Split types, getters, and schemas into separate files.
12
+
13
+ ## Project structure
14
+ - `src/talkpilot/` — calls, flows, sessions, clients, phone numbers, subscriptions, …
15
+ - `src/municipal/` — cities, streets, tickets, departmentsSubjects, …
16
+ - `src/websitalk/` — scans, scanResources, websiteUrls.
17
+ - `src/configuration/` — prompts, models.
18
+ - `src/test-utils/` — Fishery factories and test DB helpers.
19
+ - `src/utils/` — validation, pagination, shared types.
20
+ - `dist/` is what consumers import — generated, tests excluded from the build.
21
+
22
+ ## Copy this
23
+ New getter: `src/<domain>/<entity>/<entity>.types.ts` + `<entity>.getter.ts` (or `*.getters.ts`) + optional `<entity>.schema.ts` + barrel `index.ts` + `__tests__/<entity>.spec.ts`.
24
+ Export it from `src/index.ts`.
25
+ Examples: `src/talkpilot/calls/calls.getters.ts`, `src/talkpilot/phone_numbers/phone_numbers.getter.ts`.
26
+
27
+ Naming: `find*` for many, `get*ById` (or equivalent single-doc) for one. Always use that domain’s `getDb()` / collection helper — never another domain’s client. Exception already on disk: `src/talkpilot/calls/calls.statistics.getters.ts` imports municipal `tickets.statistics.getters` — do not “clean that up.”
28
+
29
+ ## Where data lives
30
+ This repo **owns** `mongodb`. Four isolated clients — connect each independently:
31
+
32
+ - `mongodbClient` — TalkPilot
33
+ - `municipalDataMongodbClient` — municipal
34
+ - `websitalkMongodbClient` — WebsiteTalk
35
+ - `configurationMongodbClient` — configuration
36
+
37
+ Do not cross-import getters across domains, except the talkpilot call-stats → municipal tickets exception above.
38
+
39
+ ## Do / don't
40
+ - Do not put HTTP, Express, or business orchestration here.
41
+ - Validate `MONGO_URI` (and siblings) on demand in `connect()`, using `src/utils/validation`.
42
+ - After a getter/schema change: bump package version, build, publish; then bump the consumer. Downstream pins skew — do not assume they are on latest.
43
+ - `prepare` runs `build` on install.
44
+
45
+ ## Siblings
46
+ Every Node service should call getters from here. If a service is about to `getDb().collection` or `import from 'mongodb'`, the getter belongs in this PR first.
47
+
48
+ ## Tests
49
+ Jest + `mongodb-memory-server` (`src/__tests__/setup.ts`). Factories in `src/test-utils/factories/`. Colocate `__tests__/` under the domain.
package/DEVELOPMENT.md CHANGED
@@ -1,141 +1,141 @@
1
- # Development Guide
2
-
3
- Welcome to the `core-db` development guide. This document explains how to set up, develop, and test this package.
4
-
5
- ## Getting Started
6
-
7
- ### Prerequisites
8
-
9
- - Node.js (v18 or later)
10
- - TypeScript
11
-
12
- ### Setup
13
-
14
- 1. Install dependencies:
15
- ```bash
16
- npm install
17
- ```
18
-
19
- 2. Build the project:
20
- ```bash
21
- npm run build
22
- ```
23
-
24
- ## Local Development
25
-
26
- Use `npm pack` to test local changes in a consuming project.
27
-
28
- 1. In the `core-db` folder, build and pack:
29
- ```bash
30
- npm run build && npm pack
31
- ```
32
- This produces a file like `talkpilot-core-db-x.y.z.tgz` in the project root.
33
-
34
- 2. In the consuming project, install it:
35
- ```bash
36
- npm install /path/to/core-db/talkpilot-core-db-x.y.z.tgz
37
- ```
38
-
39
- 3. After making further changes to `core-db`, repeat step 1 and reinstall in the consuming project.
40
-
41
- ## Adding a New Getter
42
-
43
- 1. **Define Types**: Add your data types in the relevant domain's `types.ts` file.
44
- 2. **Implement Getter**: Add the function in the `getters.ts` file.
45
- 3. **Export**: Ensure the getter is exported from the domain's `index.ts` and finally from the main `src/index.ts`.
46
- 4. **Test**: Create a test in the domain's `__tests__` folder.
47
-
48
- ## Signature Immutability
49
-
50
- `core-db` is a shared package consumed by multiple services that may not all update at the same time. A signature change that looks harmless locally can silently break a service that hasn't picked up the new version yet.
51
-
52
- **Rules:**
53
-
54
- - **Never change an existing parameter's type or name.**
55
- - **Never add a required parameter** to an existing function.
56
- - **Never remove a function.** Mark it `@deprecated` instead (see below).
57
- - **Safe additions only**: you may add optional parameters or parameters with defaults — existing callers will continue to compile without changes.
58
-
59
- **Deprecating instead of deleting:**
60
-
61
- When a function is no longer the right approach, mark it deprecated and explain why. Consumers can then migrate on their own schedule.
62
-
63
- ```ts
64
- /**
65
- * @deprecated Use `newFunction` instead — reason for the change.
66
- */
67
- export const oldFunction = (...) => { ... };
68
- ```
69
-
70
- The deprecation comment must include either the name of the replacement or a clear explanation of why the function was retired, so a consumer reading the warning knows exactly what to do.
71
-
72
- ## Testing
73
-
74
- We use Jest with `mongodb-memory-server` for fast, isolated database tests.
75
-
76
- ### Running Tests
77
-
78
- ```bash
79
- npm test
80
- ```
81
-
82
- ### Using Factories
83
-
84
- Always use factories to generate test data to keep tests clean and maintainable.
85
-
86
- ```typescript
87
- import { createCallDoc } from '../calls.getters';
88
- import { createOutGoingCallDoc } from '../../../test-utils/factories';
89
-
90
- it('should save a call', async () => {
91
- const call = createOutGoingCallDoc({ callSid: 'CA123' });
92
- await createCallDoc(call);
93
- // ... assertions
94
- });
95
- ```
96
-
97
- ## Build Process
98
-
99
- The project is built using TypeScript (`tsc`). The output is generated in the `dist/` directory.
100
-
101
- - `main`: `dist/index.js`
102
- - `types`: `dist/index.d.ts`
103
-
104
- The `prepare` script in `package.json` ensures that the project is built automatically when installed via a Git URL.
105
-
106
- ## Releasing a New Version
107
-
108
- Publish **only after the PR is approved and merged** — never from an unreviewed branch. Then, from the merged `main`:
109
-
110
- 1. **Pull** the latest `main` so you publish exactly what was reviewed (see also [Branch Hygiene](#branch-hygiene)).
111
- 2. **Bump the version** with `npm version <patch|minor|major>` (or edit `package.json`). Never reuse a number that already exists on the registry — check first with `npm view @talkpilot/core-db versions`.
112
- 3. **Verify**: `npm run build` and `npm test` (the Pre-push checklist in the README).
113
- 4. **Publish**: `npm publish` (requires the shared token — see [Team Access & Authentication](#team-access--authentication)).
114
- 5. Downstream repos pick it up via `npm update @talkpilot/core-db` or their next container build.
115
-
116
- Add a short release note for the version in the README (the version table and per-version section).
117
-
118
- ### If a published version turns out to be broken
119
-
120
- Never republish or unpublish — a reused or missing number leaves a confusing gap in the registry. Instead, publish a **new** version with the fix, and add a one-line warning to the broken version's row in the README version table (e.g. "⚠️ do not use — <reason>; upgrade to <next version>") so consumers know to skip it.
121
-
122
- ## Team Access & Authentication
123
-
124
- To allow the whole team to publish and install without adding individual npm accounts, we use a shared **npm Granular Access Token**.
125
-
126
- ### One-time Local Setup
127
-
128
- Each developer needs to add the shared token to their local npm configuration. Do **NOT** add this to the project's `.npmrc` file, as it will be committed to Git.
129
-
130
- 1. Get the shared **npm Automation Token**.
131
- 2. Open (or create) your global npm configuration file:
132
- ```bash
133
- nano ~/.npmrc
134
- ```
135
- 3. Add the following line (replace `[TOKEN]` with the actual token):
136
- ```text
137
- //registry.npmjs.org/:_authToken=[TOKEN]
138
- ```
139
- 4. Save and exit.
140
-
141
- Now you can run `npm publish` and `npm install` for scoped `@talkpilot` packages without being prompted for credentials.
1
+ # Development Guide
2
+
3
+ Welcome to the `core-db` development guide. This document explains how to set up, develop, and test this package.
4
+
5
+ ## Getting Started
6
+
7
+ ### Prerequisites
8
+
9
+ - Node.js (v18 or later)
10
+ - TypeScript
11
+
12
+ ### Setup
13
+
14
+ 1. Install dependencies:
15
+ ```bash
16
+ npm install
17
+ ```
18
+
19
+ 2. Build the project:
20
+ ```bash
21
+ npm run build
22
+ ```
23
+
24
+ ## Local Development
25
+
26
+ Use `npm pack` to test local changes in a consuming project.
27
+
28
+ 1. In the `core-db` folder, build and pack:
29
+ ```bash
30
+ npm run build && npm pack
31
+ ```
32
+ This produces a file like `talkpilot-core-db-x.y.z.tgz` in the project root.
33
+
34
+ 2. In the consuming project, install it:
35
+ ```bash
36
+ npm install /path/to/core-db/talkpilot-core-db-x.y.z.tgz
37
+ ```
38
+
39
+ 3. After making further changes to `core-db`, repeat step 1 and reinstall in the consuming project.
40
+
41
+ ## Adding a New Getter
42
+
43
+ 1. **Define Types**: Add your data types in the relevant domain's `types.ts` file.
44
+ 2. **Implement Getter**: Add the function in the `getters.ts` file.
45
+ 3. **Export**: Ensure the getter is exported from the domain's `index.ts` and finally from the main `src/index.ts`.
46
+ 4. **Test**: Create a test in the domain's `__tests__` folder.
47
+
48
+ ## Signature Immutability
49
+
50
+ `core-db` is a shared package consumed by multiple services that may not all update at the same time. A signature change that looks harmless locally can silently break a service that hasn't picked up the new version yet.
51
+
52
+ **Rules:**
53
+
54
+ - **Never change an existing parameter's type or name.**
55
+ - **Never add a required parameter** to an existing function.
56
+ - **Never remove a function.** Mark it `@deprecated` instead (see below).
57
+ - **Safe additions only**: you may add optional parameters or parameters with defaults — existing callers will continue to compile without changes.
58
+
59
+ **Deprecating instead of deleting:**
60
+
61
+ When a function is no longer the right approach, mark it deprecated and explain why. Consumers can then migrate on their own schedule.
62
+
63
+ ```ts
64
+ /**
65
+ * @deprecated Use `newFunction` instead — reason for the change.
66
+ */
67
+ export const oldFunction = (...) => { ... };
68
+ ```
69
+
70
+ The deprecation comment must include either the name of the replacement or a clear explanation of why the function was retired, so a consumer reading the warning knows exactly what to do.
71
+
72
+ ## Testing
73
+
74
+ We use Jest with `mongodb-memory-server` for fast, isolated database tests.
75
+
76
+ ### Running Tests
77
+
78
+ ```bash
79
+ npm test
80
+ ```
81
+
82
+ ### Using Factories
83
+
84
+ Always use factories to generate test data to keep tests clean and maintainable.
85
+
86
+ ```typescript
87
+ import { createCallDoc } from '../calls.getters';
88
+ import { createOutGoingCallDoc } from '../../../test-utils/factories';
89
+
90
+ it('should save a call', async () => {
91
+ const call = createOutGoingCallDoc({ callSid: 'CA123' });
92
+ await createCallDoc(call);
93
+ // ... assertions
94
+ });
95
+ ```
96
+
97
+ ## Build Process
98
+
99
+ The project is built using TypeScript (`tsc`). The output is generated in the `dist/` directory.
100
+
101
+ - `main`: `dist/index.js`
102
+ - `types`: `dist/index.d.ts`
103
+
104
+ The `prepare` script in `package.json` ensures that the project is built automatically when installed via a Git URL.
105
+
106
+ ## Releasing a New Version
107
+
108
+ Publish **only after the PR is approved and merged** — never from an unreviewed branch. Then, from the merged `main`:
109
+
110
+ 1. **Pull** the latest `main` so you publish exactly what was reviewed (see also [Branch Hygiene](#branch-hygiene)).
111
+ 2. **Bump the version** with `npm version <patch|minor|major>` (or edit `package.json`). Never reuse a number that already exists on the registry — check first with `npm view @talkpilot/core-db versions`.
112
+ 3. **Verify**: `npm run build` and `npm test` (the Pre-push checklist in the README).
113
+ 4. **Publish**: `npm publish` (requires the shared token — see [Team Access & Authentication](#team-access--authentication)).
114
+ 5. Downstream repos pick it up via `npm update @talkpilot/core-db` or their next container build.
115
+
116
+ Add a short release note for the version in the README (the version table and per-version section).
117
+
118
+ ### If a published version turns out to be broken
119
+
120
+ Never republish or unpublish — a reused or missing number leaves a confusing gap in the registry. Instead, publish a **new** version with the fix, and add a one-line warning to the broken version's row in the README version table (e.g. "⚠️ do not use — <reason>; upgrade to <next version>") so consumers know to skip it.
121
+
122
+ ## Team Access & Authentication
123
+
124
+ To allow the whole team to publish and install without adding individual npm accounts, we use a shared **npm Granular Access Token**.
125
+
126
+ ### One-time Local Setup
127
+
128
+ Each developer needs to add the shared token to their local npm configuration. Do **NOT** add this to the project's `.npmrc` file, as it will be committed to Git.
129
+
130
+ 1. Get the shared **npm Automation Token**.
131
+ 2. Open (or create) your global npm configuration file:
132
+ ```bash
133
+ nano ~/.npmrc
134
+ ```
135
+ 3. Add the following line (replace `[TOKEN]` with the actual token):
136
+ ```text
137
+ //registry.npmjs.org/:_authToken=[TOKEN]
138
+ ```
139
+ 4. Save and exit.
140
+
141
+ Now you can run `npm publish` and `npm install` for scoped `@talkpilot` packages without being prompted for credentials.
package/README.md CHANGED
@@ -37,7 +37,6 @@ L1:# @talkpilot/core-db
37
37
  - **TalkPilot domain** – Imports like `findAgents`, `getFlows`, `findCalls`, and `vectorSearchCalls` live in `src/talkpilot`. These functions are the canonical access pattern for call history, session metadata, and provider configs.
38
38
  - **Municipal domain** – Helpers such as `findStreets`, `getMunicipalCities`, `findDepartmentSubjects`, and `createTicket` live under `src/municipal` and feed MIS workflows (street hints, subject matching, Ash Bina tickets).
39
39
  - **Configuration domain** – `getPromptByName`, `findPrompts`, `getAllPrompts`, and `getPromptsByProduct` live under `src/configuration` and back MIS's `moked_106` prompt lookups (defaults, overridable per-client via `clientConfig.toolsPrompts`).
40
- - **Websitalk domain** (`scans`, `websiteUrls`) – ⚠️ **Not included in `clientExistsInAnyCollection`/`deleteClientDataAcrossDomains`.** Those collections hold the client's URLs, which an external website-talk API uses as a lookup key to clean up its own Mongo collections *and* other, non-Mongo data stores tied to the client. Deleting a client fully requires calling that external API separately — see the warning on `deleteClientDataAcrossDomains` in `src/talkpilot/clients/clients.lifecycle.ts`.
41
40
 
42
41
  ## Environment variables
43
42
 
@@ -179,11 +178,9 @@ Refer to `DEVELOPMENT.md` for the full walkthrough, token instructions, and fact
179
178
  | 1.3.47 | Added optional `accountOwnerEmail` field to `WebsiteTalkProduct` (CP-1715): the recipient for the end-of-call summary email, set once from the client's login email and editable in Settings. |
180
179
  | 1.3.48 | Fixed `getScanPages` search (CP-1726): user search input was passed unescaped into MongoDB's `$regex`, so a URL/title containing regex-special characters (e.g. `?`) failed to match even when the document existed. Added `escapeRegex()` and applied it before building the `url`/`title` `$regex` filter. No API changes. |
181
180
  | 1.3.49 | Internal tools configuration on flows (CP-1723): `Flow.internalTools` keyed by tool name (`enabled`, optional `maxCalls`, per-parameter `description`/`value` overrides) with matching `$jsonSchema` validator, plus `createFlow` / `updateFlowById` mutators and the `FlowUpdateParams` type so consumers stop writing to the `flows` collection directly. |
182
- | 1.3.52 | Client-lifecycle support for the TalkPilot Dashboard (PE-869): `clientExistsInAnyCollection`/`deleteClientDataAcrossDomains` (dynamic scan across talkpilot/municipal domains only, no hardcoded collection list; `auditLogs` is excluded so a client's own deletion record survives its deletion), new `auditLogs` collection & `insertAuditLog`/`findAuditLogs`/`countAuditLogs`, `getAllClientCredits` on `clients`. Added `results` statistics getters for the dashboard: `aggregateActiveCallsSummary`, `aggregateTodayCallsSummary`, `aggregateClientCallStats`, `aggregateSessionCallStats`, and `findClientIdsByCallSids` (for backOffice-server). On `phone_numbers`: fixed `getClientPhones`/`getAllClientPhoneMappings` to deduplicate append-only history records instead of returning raw duplicate rows per client; added `getDistinctClientPhonePairs`, `findClientsByPhoneNumbers`, and `deletePhoneNumberRecords` (removes every record for a phone number, across all clients, once it's released back to Twilio). website-talk (`scans`/`websiteUrls`) is intentionally NOT touched by `deleteClientDataAcrossDomains` — see the Websitalk domain note above; callers must call the external website-talk deletion API separately. No breaking changes. |
183
181
  | 1.3.57 | Phone-number bind getters: list by client, exclusive flow assign, unbind, and `flow_id` match for ObjectId or leftover string. `getClientByClientId`. |
184
182
  | 1.3.61 | Optional `activeFlowId` on `WebsiteTalkProduct` (CP-1849). WebsiteTalk updates this flow instead of the flow on a phone number. |
185
183
  | 1.3.62 | Pause/Resume support for WebsiteTalk scans (CP-1752): `PAUSED` and `CANCELED` added to `SCAN_STATUSES` (`PAUSED` deliberately excluded from `FINISHED_SCAN_STATUSES` — pausing isn't done, `CANCELED` is). Added `Scan.pausedAt`, tracked across pause/resume so elapsed-time display can freeze correctly instead of counting the paused duration. |
186
- | 1.3.66 | Added `calls`-based stats getters for the dashboard: `aggregateActiveCallsSummary`, `aggregateTodayCallsSummary`, `aggregateClientCallStats`, `aggregateSessionCallStats`, `getAllClientsLastCallDate`, `findClientIdsByCallSids` — read the flat `calls` collection directly instead of unwinding `results.calls[]`, with a full per-status breakdown (`ALL_STATUSES_FOR_BREAKDOWN`) instead of a fixed 5-status set. **Removed** the 1.3.52 `results`-based getters of the same names — they were never released, so this isn't a breaking change for any consumer. |
187
184
 
188
185
  ### 1.1.9
189
186
 
@@ -772,24 +769,6 @@ No — purely additive.
772
769
 
773
770
  No API changes. **WTIS** (the only current consumer of `getScanPages`) should upgrade to 1.3.48 or later to pick up the fix.
774
771
 
775
- ### 1.3.52 — Client-lifecycle support for the TalkPilot Dashboard (PE-869)
776
-
777
- Adds centralized client deletion across the talkpilot/municipal domains, with an audit trail, plus supporting getters for the client-management dashboard.
778
-
779
- **Added**
780
-
781
- | Area | What |
782
- | --- | --- |
783
- | `clients` | `clientExistsInAnyCollection` / `deleteClientDataAcrossDomains` — dynamically scan and delete a client's data across every talkpilot/municipal collection (no hardcoded collection list). `auditLogs` is always excluded, so a client's own deletion record survives its own deletion. `getAllClientCredits`. |
784
- | `auditLogs` (new collection) | `insertAuditLog`, `findAuditLogs` (paginated), `countAuditLogs`. |
785
- | `results` | `aggregateActiveCallsSummary`, `aggregateTodayCallsSummary`, `aggregateClientCallStats`, `aggregateSessionCallStats` — call-volume/status dashboards. `findClientIdsByCallSids` — resolves clientId per callSid, added for backOffice-server. |
786
- | `phone_numbers` | Fixed `getClientPhones`/`getAllClientPhoneMappings` to deduplicate append-only history records. Added `getDistinctClientPhonePairs`, `findClientsByPhoneNumbers`, `deletePhoneNumberRecords` (clears every record for a number once released back to Twilio). |
787
-
788
- ⚠️ website-talk (`scans`/`websiteUrls`) is intentionally **not** touched by `deleteClientDataAcrossDomains` — see the Websitalk domain note above. Callers must call the external website-talk deletion API separately for a full client delete.
789
-
790
- **Do I need to update my app?**
791
-
792
- No — purely additive, no breaking changes. Consumers opt in by importing the new getters above.
793
772
  ### 1.3.57 — Phone-number bind getters
794
773
 
795
774
  TalkPilot can bind any owned number to a flow without querying Mongo in the service layer. `flow_id` is matched as ObjectId or as a leftover string.
@@ -824,33 +803,6 @@ Optional `activeFlowId` on `WebsiteTalkProduct`. WTIS reads this field when it u
824
803
 
825
804
  No — the field is optional. **WTIS** should upgrade to **1.3.61** so the call-script update can use it.
826
805
 
827
- ### 1.3.66 — Calls-based stats aggregations
828
-
829
- Adds stats getters that read the flat `calls` collection directly instead of unwinding `results.calls[]`, with a full per-status breakdown instead of a fixed 5-status set.
830
-
831
- **Added**
832
-
833
- | Export | Purpose |
834
- | --- | --- |
835
- | `aggregateActiveCallsSummary` | Active-calls-right-now summary, from `calls`. |
836
- | `aggregateTodayCallsSummary` | Status/type/minutes summary for a date range (or all-time with no range given), from `calls`. |
837
- | `aggregateClientCallStats` | Per-client breakdown with a full per-status `statusCounts` map and `lastCallDate`, from `calls`. |
838
- | `aggregateSessionCallStats` | Per-session breakdown with a full per-status `statusCounts` map, from `calls`. |
839
- | `getAllClientsLastCallDate` | Last call date per client, from `calls`. |
840
- | `findClientIdsByCallSids` | Resolves clientId per callSid, from `calls`. |
841
-
842
- The session breakdown groups by `sessionId` (not `sessionName`) so a renamed session doesn't split its stats across two rows; the name shown is a live lookup against the current `sessions` collection.
843
-
844
- ⚠️ **Note:** the `calls` collection only reliably covers call volume from around late October 2025 onward (full per-status accuracy from mid-2026) — older history lives only in `results`. An "all time" aggregation on these getters will undercount clients whose history predates that cutover.
845
-
846
- **Removed**
847
-
848
- The `results`-based getters added in 1.3.52 (`aggregateActiveCallsSummary`, `aggregateTodayCallsSummary`, `aggregateClientCallStats`, `aggregateSessionCallStats`, `findClientIdsByCallSids`) are replaced by the `calls`-based getters above, under the same names. 1.3.52 was never released, so no consumer depended on them.
849
-
850
- **Do I need to update my app?**
851
-
852
- No — these are new getters, and the 1.3.52 ones they replace were never released, so nothing existing depends on either.
853
-
854
806
  ## 🛠 CI/CD & deployment
855
807
 
856
808
  - This package is consumed by Cloud Build-based services (TalkPilot Server, MIS, CIS) as a dependency when Docker images are built. Keep `dist/` in sync with your builds because the compiled artifact is what downstream services install.
@@ -1,6 +1,6 @@
1
1
  export declare const MODELS_COLLECTION = "models";
2
2
  export declare const MODEL_CONFIG_DEFAULTS_CONTEXT_WINDOW = "contextWindow";
3
3
  export declare const MODEL_TYPES: readonly ["realtime", "stt"];
4
- export declare const REALTIME_MODEL_PROVIDERS: readonly ["openai", "gemini", "xai"];
4
+ export declare const REALTIME_MODEL_PROVIDERS: readonly ["openai", "gemini", "xai", "elevenlabs"];
5
5
  export declare const STT_MODEL_PROVIDERS: readonly ["openai-stt", "google-stt", "deepgram-stt", "deepgram-flux", "elevenlabs-scribe", "gladia-stt"];
6
6
  //# sourceMappingURL=models.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.constants.d.ts","sourceRoot":"","sources":["../../../src/configuration/models/models.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,eAAO,MAAM,oCAAoC,kBAAkB,CAAC;AAEpE,eAAO,MAAM,WAAW,8BAA+B,CAAC;AAExD,eAAO,MAAM,wBAAwB,sCAAuC,CAAC;AAC7E,eAAO,MAAM,mBAAmB,2GAOtB,CAAC"}
1
+ {"version":3,"file":"models.constants.d.ts","sourceRoot":"","sources":["../../../src/configuration/models/models.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,eAAO,MAAM,oCAAoC,kBAAkB,CAAC;AAEpE,eAAO,MAAM,WAAW,8BAA+B,CAAC;AAExD,eAAO,MAAM,wBAAwB,oDAK3B,CAAC;AACX,eAAO,MAAM,mBAAmB,2GAOtB,CAAC"}
@@ -4,7 +4,12 @@ exports.STT_MODEL_PROVIDERS = exports.REALTIME_MODEL_PROVIDERS = exports.MODEL_T
4
4
  exports.MODELS_COLLECTION = "models";
5
5
  exports.MODEL_CONFIG_DEFAULTS_CONTEXT_WINDOW = "contextWindow";
6
6
  exports.MODEL_TYPES = ["realtime", "stt"];
7
- exports.REALTIME_MODEL_PROVIDERS = ["openai", "gemini", "xai"];
7
+ exports.REALTIME_MODEL_PROVIDERS = [
8
+ "openai",
9
+ "gemini",
10
+ "xai",
11
+ "elevenlabs",
12
+ ];
8
13
  exports.STT_MODEL_PROVIDERS = [
9
14
  "openai-stt",
10
15
  "google-stt",
@@ -1 +1 @@
1
- {"version":3,"file":"models.constants.js","sourceRoot":"","sources":["../../../src/configuration/models/models.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,QAAQ,CAAC;AAE7B,QAAA,oCAAoC,GAAG,eAAe,CAAC;AAEvD,QAAA,WAAW,GAAG,CAAC,UAAU,EAAE,KAAK,CAAU,CAAC;AAE3C,QAAA,wBAAwB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAChE,QAAA,mBAAmB,GAAG;IACjC,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,YAAY;CACJ,CAAC"}
1
+ {"version":3,"file":"models.constants.js","sourceRoot":"","sources":["../../../src/configuration/models/models.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,QAAQ,CAAC;AAE7B,QAAA,oCAAoC,GAAG,eAAe,CAAC;AAEvD,QAAA,WAAW,GAAG,CAAC,UAAU,EAAE,KAAK,CAAU,CAAC;AAE3C,QAAA,wBAAwB,GAAG;IACtC,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,YAAY;CACJ,CAAC;AACE,QAAA,mBAAmB,GAAG;IACjC,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,YAAY;CACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AnyBulkWriteOperation, BulkWriteOptions, BulkWriteResult } from "mongodb";
2
+ import { DepartmentSubject } from "./departmentsSubjects.types";
3
+ /**
4
+ * Generic batch write for the departmentsSubjects collection — a thin passthrough to the
5
+ * driver's bulkWrite, with no diffing/key-building/business logic. `operations` must be
6
+ * non-empty (the driver throws on an empty batch). Errors (including partial failures under
7
+ * `{ ordered: false }`) propagate unchanged, so callers can still catch `MongoBulkWriteError`.
8
+ */
9
+ export declare const bulkWriteDepartmentsSubjects: (operations: AnyBulkWriteOperation<DepartmentSubject>[], options?: BulkWriteOptions) => Promise<BulkWriteResult>;
10
+ //# sourceMappingURL=departmentsSubjects.setters.d.ts.map