@talkpilot/core-db 1.3.89 → 1.3.91

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 (121) hide show
  1. package/README.md +12 -65
  2. package/dist/configuration/gptLive.seed.d.ts +2 -0
  3. package/dist/configuration/gptLive.seed.d.ts.map +1 -0
  4. package/dist/configuration/gptLive.seed.js +59 -0
  5. package/dist/configuration/gptLive.seed.js.map +1 -0
  6. package/dist/talkpilot/calls/calls.constants.d.ts +1 -11
  7. package/dist/talkpilot/calls/calls.constants.d.ts.map +1 -1
  8. package/dist/talkpilot/calls/calls.constants.js +1 -11
  9. package/dist/talkpilot/calls/calls.constants.js.map +1 -1
  10. package/dist/talkpilot/calls/calls.getters.d.ts +1 -8
  11. package/dist/talkpilot/calls/calls.getters.d.ts.map +1 -1
  12. package/dist/talkpilot/calls/calls.getters.js +1 -216
  13. package/dist/talkpilot/calls/calls.getters.js.map +1 -1
  14. package/dist/talkpilot/calls/calls.types.d.ts +0 -45
  15. package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
  16. package/dist/talkpilot/clients/clients.getters.d.ts +0 -6
  17. package/dist/talkpilot/clients/clients.getters.d.ts.map +1 -1
  18. package/dist/talkpilot/clients/clients.getters.js +1 -62
  19. package/dist/talkpilot/clients/clients.getters.js.map +1 -1
  20. package/dist/talkpilot/clients/clients.quota.constants.d.ts +2 -0
  21. package/dist/talkpilot/clients/clients.quota.constants.d.ts.map +1 -0
  22. package/dist/talkpilot/clients/clients.quota.constants.js +5 -0
  23. package/dist/talkpilot/clients/clients.quota.constants.js.map +1 -0
  24. package/dist/talkpilot/clients/clients.quota.utils.d.ts +8 -0
  25. package/dist/talkpilot/clients/clients.quota.utils.d.ts.map +1 -0
  26. package/dist/talkpilot/clients/clients.quota.utils.js +45 -0
  27. package/dist/talkpilot/clients/clients.quota.utils.js.map +1 -0
  28. package/dist/talkpilot/clients/clients.types.d.ts +0 -53
  29. package/dist/talkpilot/clients/clients.types.d.ts.map +1 -1
  30. package/dist/talkpilot/clients/index.d.ts +0 -2
  31. package/dist/talkpilot/clients/index.d.ts.map +1 -1
  32. package/dist/talkpilot/clients/index.js +0 -2
  33. package/dist/talkpilot/clients/index.js.map +1 -1
  34. package/dist/talkpilot/contextNotes/contextNotes.getters.d.ts +7 -1
  35. package/dist/talkpilot/contextNotes/contextNotes.getters.d.ts.map +1 -1
  36. package/dist/talkpilot/contextNotes/contextNotes.getters.js +37 -1
  37. package/dist/talkpilot/contextNotes/contextNotes.getters.js.map +1 -1
  38. package/dist/talkpilot/contextNotes/contextNotes.types.d.ts +6 -0
  39. package/dist/talkpilot/contextNotes/contextNotes.types.d.ts.map +1 -1
  40. package/dist/talkpilot/index.d.ts +0 -1
  41. package/dist/talkpilot/index.d.ts.map +1 -1
  42. package/dist/talkpilot/index.js +0 -1
  43. package/dist/talkpilot/index.js.map +1 -1
  44. package/dist/talkpilot/phone_numbers/phone_numbers.getter.d.ts +1 -9
  45. package/dist/talkpilot/phone_numbers/phone_numbers.getter.d.ts.map +1 -1
  46. package/dist/talkpilot/phone_numbers/phone_numbers.getter.js +1 -70
  47. package/dist/talkpilot/phone_numbers/phone_numbers.getter.js.map +1 -1
  48. package/dist/talkpilot/phone_numbers/phone_numbers.types.d.ts +0 -5
  49. package/dist/talkpilot/phone_numbers/phone_numbers.types.d.ts.map +1 -1
  50. package/dist/test-utils/factories/index.d.ts +0 -2
  51. package/dist/test-utils/factories/index.d.ts.map +1 -1
  52. package/dist/test-utils/factories/index.js +0 -2
  53. package/dist/test-utils/factories/index.js.map +1 -1
  54. package/dist/websitalk/scanResources/scanResources.getters.d.ts.map +1 -1
  55. package/dist/websitalk/scanResources/scanResources.getters.js +1 -2
  56. package/dist/websitalk/scanResources/scanResources.getters.js.map +1 -1
  57. package/dist/websitalk/scanResources/scanResources.utils.d.ts +1 -1
  58. package/dist/websitalk/scanResources/scanResources.utils.d.ts.map +1 -1
  59. package/dist/websitalk/scanResources/scanResources.utils.js +3 -3
  60. package/dist/websitalk/scanResources/scanResources.utils.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/talkpilot/calls/calls.constants.ts +0 -14
  63. package/src/talkpilot/calls/calls.getters.ts +0 -320
  64. package/src/talkpilot/calls/calls.types.ts +0 -52
  65. package/src/talkpilot/clients/clients.getters.ts +2 -91
  66. package/src/talkpilot/clients/clients.types.ts +0 -58
  67. package/src/talkpilot/clients/index.ts +0 -2
  68. package/src/talkpilot/contextNotes/__tests__/contextNotes.getters.spec.ts +141 -0
  69. package/src/talkpilot/contextNotes/contextNotes.getters.ts +75 -1
  70. package/src/talkpilot/contextNotes/contextNotes.types.ts +7 -0
  71. package/src/talkpilot/index.ts +0 -1
  72. package/src/talkpilot/phone_numbers/__tests__/phone_numbers.spec.ts +13 -284
  73. package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +1 -89
  74. package/src/talkpilot/phone_numbers/phone_numbers.types.ts +0 -6
  75. package/src/test-utils/factories/index.ts +0 -2
  76. package/src/websitalk/scanResources/scanResources.getters.ts +6 -2
  77. package/src/websitalk/scanResources/scanResources.utils.ts +3 -2
  78. package/dist/talkpilot/auditLogs/auditLogs.getters.d.ts +0 -8
  79. package/dist/talkpilot/auditLogs/auditLogs.getters.d.ts.map +0 -1
  80. package/dist/talkpilot/auditLogs/auditLogs.getters.js +0 -26
  81. package/dist/talkpilot/auditLogs/auditLogs.getters.js.map +0 -1
  82. package/dist/talkpilot/auditLogs/auditLogs.types.d.ts +0 -11
  83. package/dist/talkpilot/auditLogs/auditLogs.types.d.ts.map +0 -1
  84. package/dist/talkpilot/auditLogs/auditLogs.types.js +0 -3
  85. package/dist/talkpilot/auditLogs/auditLogs.types.js.map +0 -1
  86. package/dist/talkpilot/auditLogs/index.d.ts +0 -3
  87. package/dist/talkpilot/auditLogs/index.d.ts.map +0 -1
  88. package/dist/talkpilot/auditLogs/index.js +0 -19
  89. package/dist/talkpilot/auditLogs/index.js.map +0 -1
  90. package/dist/talkpilot/clients/clients.constants.d.ts +0 -4
  91. package/dist/talkpilot/clients/clients.constants.d.ts.map +0 -1
  92. package/dist/talkpilot/clients/clients.constants.js +0 -7
  93. package/dist/talkpilot/clients/clients.constants.js.map +0 -1
  94. package/dist/talkpilot/clients/clients.lifecycle.d.ts +0 -10
  95. package/dist/talkpilot/clients/clients.lifecycle.d.ts.map +0 -1
  96. package/dist/talkpilot/clients/clients.lifecycle.js +0 -109
  97. package/dist/talkpilot/clients/clients.lifecycle.js.map +0 -1
  98. package/dist/test-utils/factories/talkpilot/clients.d.ts +0 -14
  99. package/dist/test-utils/factories/talkpilot/clients.d.ts.map +0 -1
  100. package/dist/test-utils/factories/talkpilot/clients.js +0 -19
  101. package/dist/test-utils/factories/talkpilot/clients.js.map +0 -1
  102. package/dist/test-utils/factories/talkpilot/results.d.ts +0 -16
  103. package/dist/test-utils/factories/talkpilot/results.d.ts.map +0 -1
  104. package/dist/test-utils/factories/talkpilot/results.js +0 -40
  105. package/dist/test-utils/factories/talkpilot/results.js.map +0 -1
  106. package/dist/utils/regex.utils.d.ts +0 -2
  107. package/dist/utils/regex.utils.d.ts.map +0 -1
  108. package/dist/utils/regex.utils.js +0 -6
  109. package/dist/utils/regex.utils.js.map +0 -1
  110. package/src/talkpilot/auditLogs/__tests__/auditLogs.spec.ts +0 -91
  111. package/src/talkpilot/auditLogs/auditLogs.getters.ts +0 -26
  112. package/src/talkpilot/auditLogs/auditLogs.types.ts +0 -12
  113. package/src/talkpilot/auditLogs/index.ts +0 -2
  114. package/src/talkpilot/calls/__tests__/calls.statistics.getters.spec.ts +0 -559
  115. package/src/talkpilot/clients/__tests__/clients.getters.spec.ts +0 -224
  116. package/src/talkpilot/clients/__tests__/clients.lifecycle.spec.ts +0 -194
  117. package/src/talkpilot/clients/clients.constants.ts +0 -4
  118. package/src/talkpilot/clients/clients.lifecycle.ts +0 -132
  119. package/src/test-utils/factories/talkpilot/clients.ts +0 -21
  120. package/src/test-utils/factories/talkpilot/results.ts +0 -43
  121. package/src/utils/regex.utils.ts +0 -2
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,18 +178,17 @@ 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
184
  | 1.3.64 | New `callTokenUsage` collection with `incrementCallTokenUsage` (CP-1810): per-call realtime token usage, one document per `callSid`. |
187
185
  | 1.3.65 | `Flow.beforeCallEvent` as an optional HTTP config object (`url` required; `timeoutMs`, `sendUserAuthToken`, `allowedKeys`, `wait`). `afterCallEvent` remains an optional Pub/Sub string. |
188
- | 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. |
189
186
  | 1.3.69 | Municipal `residents` collection: optional resident fields (`cityName`, `firstName`, `lastName`, `idNumber`, `phoneNumber`, `address`) with exact-match getters by phone, by idNumber, and by phone+idNumber (city-scoped). Schema + indexes exported; collection is created out of band. |
190
187
  | 1.3.71 | Who ended a call (CP-1873): optional `Call.endedBy` (`system` / `agent` / `user`), `CallEndedByValues`, and `setCallEndedBy` (first write wins). **Breaking** vs 1.3.69–1.3.70: the value `resident` was replaced by `user`. |
191
188
  | 1.3.74 | Added `human` to `CallEndedByValues` (CP-1873): a human agent ended the call, after a transfer or in a conference. |
192
189
  | 1.3.82 | Complaint tracking on `muniIssues` (CP-1888): optional `status` / `response` / `updatedAt`; an editable TalkPilot response with up to `MUNI_ISSUE_MAX_RESPONSE_IMAGES` (5) `response.imageUrls` and `response.updatedAt`; `updateMuniIssueStatus`, `setMuniIssueResponse`, `findMuniIssuesByClient`, `countMuniIssuesByClient`, `getMuniIssueByIdForClient`; index `clientId_1_createdAt_-1`. |
193
- | 1.3.89 | Backoffice support: roles (`BACKOFFICE_ROLES`, `getBackofficeRole`, `setBackofficeRole`, `countBackofficeAdmins`), `findClientsPage`, `findClientIdsWithCalls`, `findLastCallDatesByClientIds`, `findPhonesByClientIds`; `deleteClientDataAcrossDomains` returns `auditLogged` / `auditError`; an "Unknown" session bucket (`UNKNOWN_SESSION_ID`). **Breaking vs 1.3.66:** `aggregateClientCallStats` returns `{ rows, total }` and takes `clientIds` / `skip` / `limit`; `getAllClientsLastCallDate`, `getAllClientCredits` and `getAllClientPhoneMappings` are removed (only ever published from this branch, never on `main`). |
190
+ | 1.3.88 | Single-note writes on `contextNotes` (CP-1998): append, update, or remove one entry without replacing the rest of the list. |
191
+
194
192
 
195
193
  ### 1.1.9
196
194
 
@@ -779,24 +777,6 @@ No — purely additive.
779
777
 
780
778
  No API changes. **WTIS** (the only current consumer of `getScanPages`) should upgrade to 1.3.48 or later to pick up the fix.
781
779
 
782
- ### 1.3.52 — Client-lifecycle support for the TalkPilot Dashboard (PE-869)
783
-
784
- Adds centralized client deletion across the talkpilot/municipal domains, with an audit trail, plus supporting getters for the client-management dashboard.
785
-
786
- **Added**
787
-
788
- | Area | What |
789
- | --- | --- |
790
- | `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`. |
791
- | `auditLogs` (new collection) | `insertAuditLog`, `findAuditLogs` (paginated), `countAuditLogs`. |
792
- | `results` | `aggregateActiveCallsSummary`, `aggregateTodayCallsSummary`, `aggregateClientCallStats`, `aggregateSessionCallStats` — call-volume/status dashboards. `findClientIdsByCallSids` — resolves clientId per callSid, added for backOffice-server. |
793
- | `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). |
794
-
795
- ⚠️ 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.
796
-
797
- **Do I need to update my app?**
798
-
799
- No — purely additive, no breaking changes. Consumers opt in by importing the new getters above.
800
780
  ### 1.3.57 — Phone-number bind getters
801
781
 
802
782
  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.
@@ -831,32 +811,6 @@ Optional `activeFlowId` on `WebsiteTalkProduct`. WTIS reads this field when it u
831
811
 
832
812
  No — the field is optional. **WTIS** should upgrade to **1.3.61** so the call-script update can use it.
833
813
 
834
- ### 1.3.66 — Calls-based stats aggregations
835
-
836
- 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.
837
-
838
- **Added**
839
-
840
- | Export | Purpose |
841
- | --- | --- |
842
- | `aggregateActiveCallsSummary` | Active-calls-right-now summary, from `calls`. |
843
- | `aggregateTodayCallsSummary` | Status/type/minutes summary for a date range (or all-time with no range given), from `calls`. |
844
- | `aggregateClientCallStats` | Per-client breakdown with a full per-status `statusCounts` map and `lastCallDate`, from `calls`. |
845
- | `aggregateSessionCallStats` | Per-session breakdown with a full per-status `statusCounts` map, from `calls`. |
846
- | `getAllClientsLastCallDate` | Last call date per client, from `calls`. |
847
- | `findClientIdsByCallSids` | Resolves clientId per callSid, from `calls`. |
848
-
849
- 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.
850
-
851
- ⚠️ **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.
852
-
853
- **Removed**
854
-
855
- 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.
856
-
857
- **Do I need to update my app?**
858
-
859
- No — these are new getters, and the 1.3.52 ones they replace were never released, so nothing existing depends on either.
860
814
  ### 1.3.71 — Who ended the call (CP-1873)
861
815
 
862
816
  Records who ended a connected call. Unset for calls that never connected (busy, no-answer) and for calls moved to a conference.
@@ -883,29 +837,22 @@ New `CallEndedByValues.Human` (`"human"`): a human agent ended the call, either
883
837
 
884
838
  No — purely additive. **TalkPilot Server** should upgrade to **1.3.74** to write it.
885
839
 
886
- ### 1.3.89 — Backoffice support and the "Unknown" session bucket
840
+ ### 1.3.85 — Single context-note writes (CP-1998)
887
841
 
888
- **Added**
889
-
890
- - Backoffice roles: `BACKOFFICE_ROLES`, `BackofficeRole`, `getBackofficeRole`, `setBackofficeRole`, `countBackofficeAdmins` (stored in `roles.backoffice`).
891
- - `findClientsPage`: a page of clients with `total`, filtered by `clientId`, `clientIds`, `excludeClientIds` or a `search` on the clientId or phone numbers.
892
- - Per-client lookups: `findClientIdsWithCalls`, `findLastCallDatesByClientIds`, `findPhonesByClientIds`.
893
- - `deleteClientDataAcrossDomains` returns `auditLogged`, and `auditError` when it is `false`.
894
- - `UNKNOWN_SESSION_ID`.
895
-
896
- **Changed**
842
+ Append, update, or remove one note on a client/product document without replacing the rest of the `notes` array. `appendContextNoteEntry` creates the document when none exists yet. `setContextNoteEntries` still replaces the whole list.
897
843
 
898
- - `aggregateClientCallStats` accepts `clientIds`, `skip` and `limit` and returns `{ rows, total }` instead of an array. **Breaking vs 1.3.66.**
899
- - `aggregateSessionCallStats`: only `isIncomingCall: true` calls are "Incoming Call"; non-incoming calls with no session get their own "Unknown" row.
900
- - `getDistinctClientPhonePairs` takes an optional `clientIds`.
901
-
902
- **Removed** (only ever in 1.3.66, never on `main`)
844
+ **Added**
903
845
 
904
- - `getAllClientsLastCallDate` (use `findLastCallDatesByClientIds`), `getAllClientCredits` (use `findClientsPage`, which returns `credits`) and `getAllClientPhoneMappings` (use `getDistinctClientPhonePairs` or `findPhonesByClientIds`).
846
+ | Export | Purpose |
847
+ | --- | --- |
848
+ | `ContextNoteEntryWrite` | Fields the caller sets: `title`, `content`, `activeFrom`, `expiresAt`. The getter assigns `_id`, `createdAt`, and `updatedAt`. |
849
+ | `appendContextNoteEntry(clientId, product, entry, now?)` | Pushes one note and upserts the document. Returns the stored entry. |
850
+ | `updateContextNoteEntryFields(clientId, product, noteId, entry, now?)` | Replaces one note's writable fields and `updatedAt`. Leaves `createdAt` and the other notes alone. Returns `null` when the note is missing. |
851
+ | `pullContextNoteEntry(clientId, product, noteId)` | Removes one note by id. Returns `false` when nothing changed. |
905
852
 
906
853
  **Do I need to update my app?**
907
854
 
908
- Only if you use 1.3.66 (the backoffice): adapt to the changes above. **Backoffice** should upgrade to **1.3.89**.
855
+ No — purely additive. Use these instead of `setContextNoteEntries` when only one note changes.
909
856
 
910
857
  ## 🛠 CI/CD & deployment
911
858
 
@@ -0,0 +1,2 @@
1
+ export declare function seedGptLiveDocuments(): Promise<void>;
2
+ //# sourceMappingURL=gptLive.seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gptLive.seed.d.ts","sourceRoot":"","sources":["../../src/configuration/gptLive.seed.ts"],"names":[],"mappings":"AA2BA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyC1D"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.seedGptLiveDocuments = seedGptLiveDocuments;
4
+ const mongodb_1 = require("mongodb");
5
+ const models_getters_1 = require("./models/models.getters");
6
+ const prompts_getters_1 = require("./prompts/prompts.getters");
7
+ const GPT_LIVE_MODEL_ID = "gpt-live-1";
8
+ const VOICE_PROMPT = "gptLiveVoiceInstructions";
9
+ const BACKEND_PROMPT = "gptLiveBackendInstructions";
10
+ const VOICE_INSTRUCTIONS = [
11
+ "You are a phone agent on a live call. Speak naturally and briefly.",
12
+ "{{flowInstructions}}",
13
+ "Backchannel: {{backchannelPolicy}}",
14
+ "Interruptions: {{interruptionPolicy}}",
15
+ "Delegation: {{delegationPolicy}}",
16
+ "When the flow is finished, say one short closing line and then stop talking.",
17
+ ].join("\n");
18
+ const BACKEND_INSTRUCTIONS = [
19
+ "You are the reasoning backend for a phone agent. Use the tools to do the work.",
20
+ "Return only what the tools returned. Never invent a result, a ticket number, or a confirmation.",
21
+ "{{flowInstructions}}",
22
+ "{{backchannelPolicy}}",
23
+ "{{interruptionPolicy}}",
24
+ "{{delegationPolicy}}",
25
+ ].join("\n");
26
+ async function seedGptLiveDocuments() {
27
+ const now = new Date();
28
+ await (0, models_getters_1.getModelsCollection)().updateOne({ modelId: GPT_LIVE_MODEL_ID, type: "realtime" }, {
29
+ $setOnInsert: {
30
+ _id: new mongodb_1.ObjectId(),
31
+ modelId: GPT_LIVE_MODEL_ID,
32
+ name: "GPT-Live 1",
33
+ description: "Turnless full-duplex voice",
34
+ type: "realtime",
35
+ provider: "openai-live",
36
+ available: true,
37
+ features: { supportsAudio: true },
38
+ configDefaults: { backendModel: "gpt-5.6-luna" },
39
+ createdAt: now,
40
+ updatedAt: now,
41
+ },
42
+ }, { upsert: true });
43
+ for (const prompt of [
44
+ { name: VOICE_PROMPT, content: VOICE_INSTRUCTIONS },
45
+ { name: BACKEND_PROMPT, content: BACKEND_INSTRUCTIONS },
46
+ ]) {
47
+ await (0, prompts_getters_1.getPromptsCollection)().updateOne({ name: prompt.name }, {
48
+ $setOnInsert: {
49
+ _id: new mongodb_1.ObjectId(),
50
+ name: prompt.name,
51
+ content: prompt.content,
52
+ productName: "municipal",
53
+ createdAt: now,
54
+ updatedAt: now,
55
+ },
56
+ }, { upsert: true });
57
+ }
58
+ }
59
+ //# sourceMappingURL=gptLive.seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gptLive.seed.js","sourceRoot":"","sources":["../../src/configuration/gptLive.seed.ts"],"names":[],"mappings":";;AA2BA,oDAyCC;AApED,qCAA2C;AAC3C,4DAA8D;AAC9D,+DAAiE;AAGjE,MAAM,iBAAiB,GAAG,YAAY,CAAC;AACvC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAChD,MAAM,cAAc,GAAG,4BAA4B,CAAC;AAEpD,MAAM,kBAAkB,GAAG;IACzB,oEAAoE;IACpE,sBAAsB;IACtB,oCAAoC;IACpC,uCAAuC;IACvC,kCAAkC;IAClC,8EAA8E;CAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,oBAAoB,GAAG;IAC3B,gFAAgF;IAChF,iGAAiG;IACjG,sBAAsB;IACtB,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;CACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEN,KAAK,UAAU,oBAAoB;IACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAA,oCAAmB,GAAE,CAAC,SAAS,CACnC,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAsB,EACpE;QACE,YAAY,EAAE;YACZ,GAAG,EAAE,IAAI,kBAAQ,EAAE;YACnB,OAAO,EAAE,iBAAiB;YAC1B,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,4BAA4B;YACzC,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;YACjC,cAAc,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE;YAChD,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACQ;KACzB,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI;QACnB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE;QACnD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,EAAE;KACxD,EAAE,CAAC;QACF,MAAM,IAAA,sCAAoB,GAAE,CAAC,SAAS,CACpC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EACrB;YACE,YAAY,EAAE;gBACZ,GAAG,EAAE,IAAI,kBAAQ,EAAE;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,WAAW;gBACxB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf;SACF,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -6,14 +6,6 @@ export declare const CONFERENCE_ROLE_SUPERVISOR: "supervisor";
6
6
  export declare const IN_CALL_STATUSES: readonly ["in-progress", "answered"];
7
7
  /** Terminal Twilio call statuses — no further status callbacks expected. */
8
8
  export declare const FINAL_STATUSES: readonly ["no-answer", "completed", "busy", "failed", "canceled"];
9
- /** sessionId used for calls that arrived without an existing session (incoming calls). */
10
- export declare const INCOMING_SESSION_ID = "incomingCall";
11
- /** sessionId used in the per-session breakdown for calls with no session that are not incoming. */
12
- export declare const UNKNOWN_SESSION_ID = "unknownSession";
13
- /** Twilio call statuses considered "currently active" for the live calls summary. */
14
- export declare const ACTIVE_STATUSES: string[];
15
- /** Lookback window for the "active calls right now" summary. */
16
- export declare const ACTIVE_CALLS_WINDOW_MS: number;
17
9
  /** Hours in a single day. */
18
10
  export declare const HOURS_PER_DAY = 24;
19
11
  /** Max execution time (ms) for calls statistics aggregations. */
@@ -39,9 +31,7 @@ export declare const CallStatusValues: {
39
31
  readonly Failed: "failed";
40
32
  readonly Canceled: "canceled";
41
33
  };
42
- export declare const ALL_CALL_STATUSES: ("failed" | "answered" | "in-progress" | "no-answer" | "completed" | "busy" | "canceled" | "initiated" | "ringing")[];
43
- /** All statuses shown in the breakdown tables — kept separate so CallStatusValues stays untouched. */
44
- export declare const ALL_STATUSES_FOR_BREAKDOWN: readonly [...("failed" | "answered" | "in-progress" | "no-answer" | "completed" | "busy" | "canceled" | "initiated" | "ringing")[], "queued"];
34
+ export declare const ALL_CALL_STATUSES: ("in-progress" | "answered" | "no-answer" | "completed" | "busy" | "failed" | "canceled" | "initiated" | "ringing")[];
45
35
  /** Who ended a connected call: our platform, the AI agent (end flow), the caller, or a human agent. */
46
36
  export declare const CallEndedByValues: {
47
37
  readonly System: "system";
@@ -1 +1 @@
1
- {"version":3,"file":"calls.constants.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.constants.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,eAAO,MAAM,wBAAwB,EAAG,UAAmB,CAAC;AAE5D,gDAAgD;AAChD,eAAO,MAAM,0BAA0B,EAAG,YAAqB,CAAC;AAEhE,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,sCAAuC,CAAC;AAErE,4EAA4E;AAC5E,eAAO,MAAM,cAAc,mEAMjB,CAAC;AAEX,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,qFAAqF;AACrF,eAAO,MAAM,eAAe,UAAkB,CAAC;AAE/C,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,QAAqB,CAAC;AAEzD,6BAA6B;AAC7B,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,eAAO,MAAM,gBAAgB;;;;;;;;;;CAUnB,CAAC;AAEX,eAAO,MAAM,iBAAiB,uHAAkC,CAAC;AAEjE,sGAAsG;AACtG,eAAO,MAAM,0BAA0B,+IAA4C,CAAC;AACpF,uGAAuG;AACvG,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC"}
1
+ {"version":3,"file":"calls.constants.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.constants.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,eAAO,MAAM,wBAAwB,EAAG,UAAmB,CAAC;AAE5D,gDAAgD;AAChD,eAAO,MAAM,0BAA0B,EAAG,YAAqB,CAAC;AAEhE,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,sCAAuC,CAAC;AAErE,4EAA4E;AAC5E,eAAO,MAAM,cAAc,mEAMjB,CAAC;AAEX,6BAA6B;AAC7B,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,eAAO,MAAM,gBAAgB;;;;;;;;;;CAUnB,CAAC;AAEX,eAAO,MAAM,iBAAiB,uHAAkC,CAAC;AAEjE,uGAAuG;AACvG,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CallEndedByValues = exports.ALL_STATUSES_FOR_BREAKDOWN = exports.ALL_CALL_STATUSES = exports.CallStatusValues = exports.TOOL_EXECUTIONS_DEFAULT_LIMIT = exports.TOOL_EXECUTIONS_DEFAULT_SKIP = exports.TREND_WEEK_BUCKET_MIN_MONTHS = exports.TREND_MONTH_BUCKET_MIN_MONTHS = exports.STATS_MAX_TIME_MS = exports.HOURS_PER_DAY = exports.ACTIVE_CALLS_WINDOW_MS = exports.ACTIVE_STATUSES = exports.UNKNOWN_SESSION_ID = exports.INCOMING_SESSION_ID = exports.FINAL_STATUSES = exports.IN_CALL_STATUSES = exports.CONFERENCE_ROLE_SUPERVISOR = exports.CONFERENCE_ROLE_CUSTOMER = void 0;
3
+ exports.CallEndedByValues = exports.ALL_CALL_STATUSES = exports.CallStatusValues = exports.TOOL_EXECUTIONS_DEFAULT_LIMIT = exports.TOOL_EXECUTIONS_DEFAULT_SKIP = exports.TREND_WEEK_BUCKET_MIN_MONTHS = exports.TREND_MONTH_BUCKET_MIN_MONTHS = exports.STATS_MAX_TIME_MS = exports.HOURS_PER_DAY = exports.FINAL_STATUSES = exports.IN_CALL_STATUSES = exports.CONFERENCE_ROLE_SUPERVISOR = exports.CONFERENCE_ROLE_CUSTOMER = void 0;
4
4
  /** Customer role within a conference call. */
5
5
  exports.CONFERENCE_ROLE_CUSTOMER = "customer";
6
6
  /** Supervisor role within a conference call. */
@@ -15,14 +15,6 @@ exports.FINAL_STATUSES = [
15
15
  "failed",
16
16
  "canceled",
17
17
  ];
18
- /** sessionId used for calls that arrived without an existing session (incoming calls). */
19
- exports.INCOMING_SESSION_ID = "incomingCall";
20
- /** sessionId used in the per-session breakdown for calls with no session that are not incoming. */
21
- exports.UNKNOWN_SESSION_ID = "unknownSession";
22
- /** Twilio call statuses considered "currently active" for the live calls summary. */
23
- exports.ACTIVE_STATUSES = ["in-progress"];
24
- /** Lookback window for the "active calls right now" summary. */
25
- exports.ACTIVE_CALLS_WINDOW_MS = 2 * 60 * 60 * 1000;
26
18
  /** Hours in a single day. */
27
19
  exports.HOURS_PER_DAY = 24;
28
20
  /** Max execution time (ms) for calls statistics aggregations. */
@@ -49,8 +41,6 @@ exports.CallStatusValues = {
49
41
  Canceled: "canceled",
50
42
  };
51
43
  exports.ALL_CALL_STATUSES = Object.values(exports.CallStatusValues);
52
- /** All statuses shown in the breakdown tables — kept separate so CallStatusValues stays untouched. */
53
- exports.ALL_STATUSES_FOR_BREAKDOWN = [...exports.ALL_CALL_STATUSES, "queued"];
54
44
  /** Who ended a connected call: our platform, the AI agent (end flow), the caller, or a human agent. */
55
45
  exports.CallEndedByValues = {
56
46
  System: "system",
@@ -1 +1 @@
1
- {"version":3,"file":"calls.constants.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.constants.ts"],"names":[],"mappings":";;;AAAA,8CAA8C;AACjC,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D,gDAAgD;AACnC,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE,wEAAwE;AAC3D,QAAA,gBAAgB,GAAG,CAAC,aAAa,EAAE,UAAU,CAAU,CAAC;AAErE,4EAA4E;AAC/D,QAAA,cAAc,GAAG;IAC5B,WAAW;IACX,WAAW;IACX,MAAM;IACN,QAAQ;IACR,UAAU;CACF,CAAC;AAEX,0FAA0F;AAC7E,QAAA,mBAAmB,GAAG,cAAc,CAAC;AAElD,mGAAmG;AACtF,QAAA,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD,qFAAqF;AACxE,QAAA,eAAe,GAAG,CAAC,aAAa,CAAC,CAAC;AAE/C,gEAAgE;AACnD,QAAA,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzD,6BAA6B;AAChB,QAAA,aAAa,GAAG,EAAE,CAAC;AAEhC,iEAAiE;AACpD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAExC;;;;;GAKG;AACU,QAAA,6BAA6B,GAAG,CAAC,CAAC;AAClC,QAAA,4BAA4B,GAAG,CAAC,CAAC;AAEjC,QAAA,4BAA4B,GAAG,CAAC,CAAC;AACjC,QAAA,6BAA6B,GAAG,EAAE,CAAC;AAEnC,QAAA,gBAAgB,GAAG;IAC9B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEE,QAAA,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;AAEjE,sGAAsG;AACzF,QAAA,0BAA0B,GAAG,CAAC,GAAG,yBAAiB,EAAE,QAAQ,CAAU,CAAC;AACpF,uGAAuG;AAC1F,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;CAChB,CAAC"}
1
+ {"version":3,"file":"calls.constants.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.constants.ts"],"names":[],"mappings":";;;AAAA,8CAA8C;AACjC,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAE5D,gDAAgD;AACnC,QAAA,0BAA0B,GAAG,YAAqB,CAAC;AAEhE,wEAAwE;AAC3D,QAAA,gBAAgB,GAAG,CAAC,aAAa,EAAE,UAAU,CAAU,CAAC;AAErE,4EAA4E;AAC/D,QAAA,cAAc,GAAG;IAC5B,WAAW;IACX,WAAW;IACX,MAAM;IACN,QAAQ;IACR,UAAU;CACF,CAAC;AAEX,6BAA6B;AAChB,QAAA,aAAa,GAAG,EAAE,CAAC;AAEhC,iEAAiE;AACpD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAExC;;;;;GAKG;AACU,QAAA,6BAA6B,GAAG,CAAC,CAAC;AAClC,QAAA,4BAA4B,GAAG,CAAC,CAAC;AAEjC,QAAA,4BAA4B,GAAG,CAAC,CAAC;AACjC,QAAA,6BAA6B,GAAG,EAAE,CAAC;AAEnC,QAAA,gBAAgB,GAAG;IAC9B,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEE,QAAA,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;AAEjE,uGAAuG;AAC1F,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;CAChB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Call, CallDoc, CallQueryOptions, CallUpdateParams } from "../index";
2
- import type { CountOpts, DateRange, ToolExecution, CallStatus, ActiveCallsSummary, TodayCallsSummary, ClientCallStatsPage, ClientCallStatsParams, SessionCallStats, StatsDateRangeParams, CallEndedBy } from "./calls.types";
2
+ import type { CountOpts, DateRange, ToolExecution, CallStatus, CallEndedBy } from "./calls.types";
3
3
  import { Filter, ObjectId } from "mongodb";
4
4
  import { DashboardHeatmapMetric } from "./dashboard/calls.dashboard.types";
5
5
  export declare const getCallsCollection: () => import("mongodb").Collection<Call>;
@@ -41,11 +41,4 @@ export declare function getCallsStatsForDateRange(clientId: string, startStr: st
41
41
  * Aggregate calls by hour for a given date (createdAt converted to given timezone). Hour format "HH:mm".
42
42
  */
43
43
  export declare function getCallsHourlyAggregation(clientId: string, dateStr: string, timezone: string): Promise<DashboardHeatmapMetric[]>;
44
- export declare const findClientIdsWithCalls: ({ dateFrom, dateTo, timezone, }: StatsDateRangeParams) => Promise<string[]>;
45
- export declare const aggregateActiveCallsSummary: (clientId?: string) => Promise<ActiveCallsSummary>;
46
- export declare const aggregateTodayCallsSummary: ({ dateFrom, dateTo, clientId, timezone, }: StatsDateRangeParams) => Promise<TodayCallsSummary>;
47
- export declare const aggregateClientCallStats: ({ dateFrom, dateTo, clientId, clientIds, timezone, skip, limit, }: ClientCallStatsParams) => Promise<ClientCallStatsPage>;
48
- export declare const aggregateSessionCallStats: ({ dateFrom, dateTo, clientId, timezone, }: StatsDateRangeParams) => Promise<SessionCallStats[]>;
49
- export declare const findLastCallDatesByClientIds: (clientIds: string[]) => Promise<Map<string, Date>>;
50
- export declare const findClientIdsByCallSids: (callSids: string[]) => Promise<Map<string, string>>;
51
44
  //# sourceMappingURL=calls.getters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calls.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.getters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calls.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.getters.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.findClientIdsByCallSids = exports.findLastCallDatesByClientIds = exports.aggregateSessionCallStats = exports.aggregateClientCallStats = exports.aggregateTodayCallsSummary = exports.aggregateActiveCallsSummary = exports.findClientIdsWithCalls = exports.range = exports.countCalls = exports.findCallsByQuery = exports.getCallsByClientAndDateRange = exports.pushToolExecution = exports.setCallEndedBy = exports.updateCallStatusByCallSid = exports.getToolExecutionsByCallSid = exports.updateCallByCallSid = exports.createCallDoc = exports.getCallsByFlow = exports.getCallsByClient = exports.getCallsByPhoneNumber = exports.getCallByCallSid = exports.getCallsCollection = void 0;
36
+ exports.range = exports.countCalls = exports.findCallsByQuery = exports.getCallsByClientAndDateRange = exports.pushToolExecution = exports.setCallEndedBy = exports.updateCallStatusByCallSid = exports.getToolExecutionsByCallSid = exports.updateCallByCallSid = exports.createCallDoc = exports.getCallsByFlow = exports.getCallsByClient = exports.getCallsByPhoneNumber = exports.getCallByCallSid = exports.getCallsCollection = void 0;
37
37
  exports.countCallsByPhoneInRange = countCallsByPhoneInRange;
38
38
  exports.startOfDay = startOfDay;
39
39
  exports.addDays = addDays;
@@ -43,7 +43,6 @@ const index_1 = require("../index");
43
43
  const calls_constants_1 = require("./calls.constants");
44
44
  const process = __importStar(require("node:process"));
45
45
  const query_utils_1 = require("../utils/query.utils");
46
- const date_utils_1 = require("../../utils/date.utils");
47
46
  const getCallsCollection = () => {
48
47
  return (0, index_1.getDb)().collection("calls");
49
48
  };
@@ -247,218 +246,4 @@ async function getCallsHourlyAggregation(clientId, dateStr, timezone) {
247
246
  calls: r.calls,
248
247
  }));
249
248
  }
250
- // One $sum/$cond accumulator per status in ALL_STATUSES_FOR_BREAKDOWN.
251
- const buildStatusCountFields = (field) => Object.fromEntries(calls_constants_1.ALL_STATUSES_FOR_BREAKDOWN.map((status) => [
252
- status,
253
- { $sum: { $cond: [{ $eq: [field, status] }, 1, 0] } },
254
- ]));
255
- const extractStatusCounts = (row) => Object.fromEntries(calls_constants_1.ALL_STATUSES_FOR_BREAKDOWN.map((status) => [status, row[status] ?? 0]));
256
- const dateRangeFilter = (dateFrom, dateTo, timezone) => {
257
- const today = (0, date_utils_1.formatYmdInTz)(new Date(), timezone);
258
- return {
259
- start: (0, date_utils_1.startOfCalendarDayInTz)(dateFrom ?? today, timezone),
260
- end: (0, date_utils_1.endOfCalendarDayInTz)(dateTo ?? today, timezone),
261
- };
262
- };
263
- const buildCallsStatsMatch = ({ dateFrom, dateTo, clientId, clientIds, timezone = "UTC", }) => {
264
- const range = dateFrom || dateTo ? dateRangeFilter(dateFrom, dateTo, timezone) : null;
265
- const clientConditions = [
266
- ...(clientId ? [{ clientId }] : []),
267
- ...(clientIds ? [{ clientId: { $in: clientIds } }] : []),
268
- ];
269
- return {
270
- ...(range ? { createdAt: { $gte: range.start, $lte: range.end } } : {}),
271
- ...(clientConditions.length > 0 ? { $and: clientConditions } : {}),
272
- };
273
- };
274
- const findClientIdsWithCalls = async ({ dateFrom, dateTo, timezone = "UTC", }) => (0, exports.getCallsCollection)().distinct("clientId", buildCallsStatsMatch({ dateFrom, dateTo, timezone }));
275
- exports.findClientIdsWithCalls = findClientIdsWithCalls;
276
- const aggregateActiveCallsSummary = async (clientId) => {
277
- const coll = (0, exports.getCallsCollection)();
278
- const twoHoursAgo = new Date(Date.now() - calls_constants_1.ACTIVE_CALLS_WINDOW_MS);
279
- const match = {
280
- status: { $in: calls_constants_1.ACTIVE_STATUSES },
281
- updatedAt: { $gte: twoHoursAgo },
282
- ...(clientId ? { clientId } : {}),
283
- };
284
- const facetResult = await coll
285
- .aggregate([
286
- { $match: match },
287
- {
288
- $facet: {
289
- counts: [
290
- {
291
- $group: {
292
- _id: null,
293
- total: { $sum: 1 },
294
- incoming: { $sum: { $cond: ["$isIncomingCall", 1, 0] } },
295
- outgoing: { $sum: { $cond: ["$isOutgoingCall", 1, 0] } },
296
- },
297
- },
298
- ],
299
- activeClients: [{ $group: { _id: "$clientId" } }],
300
- },
301
- },
302
- ])
303
- .next();
304
- const counts = facetResult?.counts?.[0];
305
- return {
306
- total: counts?.total ?? 0,
307
- incoming: counts?.incoming ?? 0,
308
- outgoing: counts?.outgoing ?? 0,
309
- activeClientIds: (facetResult?.activeClients ?? []).map((d) => d._id || "Unknown"),
310
- };
311
- };
312
- exports.aggregateActiveCallsSummary = aggregateActiveCallsSummary;
313
- const aggregateTodayCallsSummary = async ({ dateFrom, dateTo, clientId, timezone = "UTC", }) => {
314
- const coll = (0, exports.getCallsCollection)();
315
- const match = buildCallsStatsMatch({ dateFrom, dateTo, clientId, timezone });
316
- const facetResult = await coll
317
- .aggregate([
318
- { $match: match },
319
- {
320
- $facet: {
321
- byStatus: [{ $group: { _id: "$status", count: { $sum: 1 } } }],
322
- byType: [
323
- {
324
- $group: {
325
- _id: { $cond: ["$isIncomingCall", "incoming", "outgoing"] },
326
- count: { $sum: 1 },
327
- },
328
- },
329
- ],
330
- total: [{ $group: { _id: null, count: { $sum: 1 } } }],
331
- totalSeconds: [{ $group: { _id: null, seconds: { $sum: "$callLength" } } }],
332
- },
333
- },
334
- ])
335
- .next();
336
- const byStatus = {};
337
- (facetResult?.byStatus ?? []).forEach((s) => {
338
- byStatus[s._id] = s.count;
339
- });
340
- const byType = {};
341
- (facetResult?.byType ?? []).forEach((t) => {
342
- byType[t._id] = t.count;
343
- });
344
- const totalSeconds = facetResult?.totalSeconds?.[0]?.seconds ?? 0;
345
- return {
346
- total: facetResult?.total?.[0]?.count ?? 0,
347
- incoming: byType.incoming ?? 0,
348
- outgoing: byType.outgoing ?? 0,
349
- completed: byStatus.completed ?? 0,
350
- failed: byStatus.failed ?? 0,
351
- busy: byStatus.busy ?? 0,
352
- noAnswer: byStatus["no-answer"] ?? 0,
353
- totalMinutes: Math.ceil(totalSeconds / 60),
354
- };
355
- };
356
- exports.aggregateTodayCallsSummary = aggregateTodayCallsSummary;
357
- const aggregateClientCallStats = async ({ dateFrom, dateTo, clientId, clientIds, timezone = "UTC", skip = 0, limit, }) => {
358
- const [result] = await (0, exports.getCallsCollection)()
359
- .aggregate([
360
- { $match: buildCallsStatsMatch({ dateFrom, dateTo, clientId, clientIds, timezone }) },
361
- {
362
- $group: {
363
- _id: "$clientId",
364
- totalCalls: { $sum: 1 },
365
- ...buildStatusCountFields("$status"),
366
- totalSeconds: { $sum: "$callLength" },
367
- lastCallDate: { $max: "$createdAt" },
368
- },
369
- },
370
- {
371
- $lookup: {
372
- from: (0, index_1.getClientsCollection)().collectionName,
373
- localField: "_id",
374
- foreignField: "clientId",
375
- as: "client",
376
- },
377
- },
378
- { $match: { "client.0": { $exists: true } } },
379
- { $project: { client: 0 } },
380
- { $sort: { totalCalls: -1, _id: 1 } },
381
- {
382
- $facet: {
383
- rows: [{ $skip: skip }, ...(limit ? [{ $limit: limit }] : [])],
384
- total: [{ $count: "count" }],
385
- },
386
- },
387
- ])
388
- .toArray();
389
- return {
390
- rows: (result?.rows ?? []).map((r) => ({
391
- clientId: r._id,
392
- totalCalls: r.totalCalls,
393
- statusCounts: extractStatusCounts(r),
394
- totalMinutes: Math.ceil((r.totalSeconds || 0) / 60),
395
- lastCallDate: r.lastCallDate,
396
- })),
397
- total: result?.total[0]?.count ?? 0,
398
- };
399
- };
400
- exports.aggregateClientCallStats = aggregateClientCallStats;
401
- const aggregateSessionCallStats = async ({ dateFrom, dateTo, clientId, timezone = "UTC", }) => {
402
- const coll = (0, exports.getCallsCollection)();
403
- const match = buildCallsStatsMatch({ dateFrom, dateTo, clientId, timezone });
404
- const sessionGroupKey = {
405
- $cond: [
406
- { $eq: ["$isIncomingCall", true] },
407
- calls_constants_1.INCOMING_SESSION_ID,
408
- { $ifNull: ["$sessionId", calls_constants_1.UNKNOWN_SESSION_ID] },
409
- ],
410
- };
411
- const rows = await coll
412
- .aggregate([
413
- { $match: match },
414
- {
415
- $group: {
416
- _id: sessionGroupKey,
417
- totalCalls: { $sum: 1 },
418
- ...buildStatusCountFields("$status"),
419
- },
420
- },
421
- {
422
- $lookup: {
423
- from: "sessions",
424
- localField: "_id",
425
- foreignField: "_id",
426
- as: "sessionDoc",
427
- },
428
- },
429
- { $sort: { totalCalls: -1 } },
430
- ])
431
- .toArray();
432
- return rows.map((r) => ({
433
- sessionId: r._id.toString(),
434
- // No session, or a deleted/unnamed one, has no name to look up: that is "Unknown".
435
- sessionName: r._id === calls_constants_1.INCOMING_SESSION_ID
436
- ? "Incoming Call"
437
- : r.sessionDoc[0]?.session_name || "Unknown",
438
- totalCalls: r.totalCalls,
439
- statusCounts: extractStatusCounts(r),
440
- }));
441
- };
442
- exports.aggregateSessionCallStats = aggregateSessionCallStats;
443
- const findLastCallDatesByClientIds = async (clientIds) => {
444
- if (clientIds.length === 0)
445
- return new Map();
446
- const rows = await (0, exports.getCallsCollection)()
447
- .aggregate([
448
- { $match: { clientId: { $in: clientIds } } },
449
- { $group: { _id: "$clientId", lastCallDate: { $max: "$createdAt" } } },
450
- ])
451
- .toArray();
452
- return new Map(rows.map((r) => [r._id, r.lastCallDate]));
453
- };
454
- exports.findLastCallDatesByClientIds = findLastCallDatesByClientIds;
455
- const findClientIdsByCallSids = async (callSids) => {
456
- if (callSids.length === 0)
457
- return new Map();
458
- const docs = await (0, exports.getCallsCollection)()
459
- .find({ callSid: { $in: callSids } }, { projection: { _id: 0, clientId: 1, callSid: 1 } })
460
- .toArray();
461
- return new Map(docs.map((d) => [d.callSid, d.clientId]));
462
- };
463
- exports.findClientIdsByCallSids = findClientIdsByCallSids;
464
249
  //# sourceMappingURL=calls.getters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calls.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.getters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calls.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.getters.ts"],"names":[],"mappings":"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"}