@talkpilot/core-db 1.0.4 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/talkpilot/calls/calls.getters.d.ts +5 -2
  2. package/dist/talkpilot/calls/calls.getters.d.ts.map +1 -1
  3. package/dist/talkpilot/calls/calls.getters.js +25 -1
  4. package/dist/talkpilot/calls/calls.getters.js.map +1 -1
  5. package/dist/talkpilot/calls/calls.types.d.ts +31 -1
  6. package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
  7. package/dist/talkpilot/calls/calls.types.js +3 -0
  8. package/dist/talkpilot/calls/calls.types.js.map +1 -1
  9. package/dist/talkpilot/clientsConfig/clientsConfig.getters.d.ts +1 -1
  10. package/dist/talkpilot/clientsConfig/clientsConfig.getters.d.ts.map +1 -1
  11. package/dist/talkpilot/clientsConfig/clientsConfig.getters.js +5 -2
  12. package/dist/talkpilot/clientsConfig/clientsConfig.getters.js.map +1 -1
  13. package/dist/talkpilot/phone_numbers/phone_numbers.getter.d.ts +6 -3
  14. package/dist/talkpilot/phone_numbers/phone_numbers.getter.d.ts.map +1 -1
  15. package/dist/talkpilot/phone_numbers/phone_numbers.getter.js +35 -19
  16. package/dist/talkpilot/phone_numbers/phone_numbers.getter.js.map +1 -1
  17. package/dist/talkpilot/plans/plans.getters.d.ts +4 -2
  18. package/dist/talkpilot/plans/plans.getters.d.ts.map +1 -1
  19. package/dist/talkpilot/plans/plans.getters.js +14 -11
  20. package/dist/talkpilot/plans/plans.getters.js.map +1 -1
  21. package/dist/talkpilot/results/results.types.d.ts +2 -0
  22. package/dist/talkpilot/results/results.types.d.ts.map +1 -1
  23. package/dist/talkpilot/sessions/sessions.getter.d.ts.map +1 -1
  24. package/dist/talkpilot/sessions/sessions.getter.js +57 -6
  25. package/dist/talkpilot/sessions/sessions.getter.js.map +1 -1
  26. package/dist/talkpilot/subscriptions/subscriptions.getters.d.ts +2 -1
  27. package/dist/talkpilot/subscriptions/subscriptions.getters.d.ts.map +1 -1
  28. package/dist/talkpilot/subscriptions/subscriptions.getters.js +9 -11
  29. package/dist/talkpilot/subscriptions/subscriptions.getters.js.map +1 -1
  30. package/dist/talkpilot/utils/query.utils.d.ts +8 -0
  31. package/dist/talkpilot/utils/query.utils.d.ts.map +1 -0
  32. package/dist/talkpilot/utils/query.utils.js +17 -0
  33. package/dist/talkpilot/utils/query.utils.js.map +1 -0
  34. package/package.json +1 -1
  35. package/src/talkpilot/calls/__tests__/calls.spec.ts +58 -0
  36. package/src/talkpilot/calls/calls.getters.ts +29 -2
  37. package/src/talkpilot/calls/calls.types.ts +38 -1
  38. package/src/talkpilot/clientsConfig/clientsConfig.getters.ts +6 -6
  39. package/src/talkpilot/phone_numbers/__tests__/phone_numbers.spec.ts +57 -1
  40. package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +49 -18
  41. package/src/talkpilot/plans/__tests__/plans.spec.ts +66 -0
  42. package/src/talkpilot/plans/plans.getters.ts +26 -22
  43. package/src/talkpilot/results/results.types.ts +2 -0
  44. package/src/talkpilot/sessions/__tests__/sessions.spec.ts +73 -10
  45. package/src/talkpilot/sessions/sessions.getter.ts +66 -7
  46. package/src/talkpilot/subscriptions/subscriptions.getters.ts +19 -23
  47. package/src/talkpilot/utils/__tests__/query.utils.spec.ts +49 -0
  48. package/src/talkpilot/utils/query.utils.ts +21 -0
@@ -1,6 +1,6 @@
1
- import { Call, CallDoc, CallUpdateParams } from '../index';
1
+ import { Call, CallDoc, CallUpdateParams, CallQueryOptions } from '../index';
2
2
  import type { CallsByHour } from './calls.types';
3
- import { ObjectId } from 'mongodb';
3
+ import { ObjectId, Filter } from 'mongodb';
4
4
  export declare const getCallsCollection: () => import("mongodb").Collection<Call>;
5
5
  export declare const getCallByCallSid: (callSid: string) => Promise<import("mongodb").WithId<Call> | null>;
6
6
  export declare const getCallsByPhoneNumber: (phoneNumber: string) => Promise<import("mongodb").WithId<Call>[]>;
@@ -8,6 +8,9 @@ export declare const getCallsByClient: (clientId: string) => Promise<import("mon
8
8
  export declare const getCallsByFlow: (flowId: ObjectId) => Promise<import("mongodb").WithId<Call>[]>;
9
9
  export declare const createCallDoc: (call: Omit<Call, "createdAt" | "updatedAt" | "env">) => Promise<import("mongodb").InsertOneResult<Call>>;
10
10
  export declare const updateCallByCallSid: (callSid: string, updates: CallUpdateParams) => Promise<CallDoc | null>;
11
+ export declare const getCallsByClientAndDateRange: (clientId: string, startDate: Date, endDate: Date) => Promise<import("mongodb").WithId<Call>[]>;
12
+ export declare const findCallsByQuery: (query: Filter<Call>, options?: CallQueryOptions) => Promise<CallDoc[]>;
13
+ export declare const countCalls: (query: Filter<Call>) => Promise<number>;
11
14
  /**
12
15
  * Aggregate calls stats for a date range (createdAt in [startStr, endStr] in timezone).
13
16
  * completed = agentHungUp=true or status='completed'.
@@ -1 +1 @@
1
- {"version":3,"file":"calls.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,eAAO,MAAM,kBAAkB,0CAE9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,mDAE/C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAa,MAAM,8CAExD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,8CAEhD,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,QAAQ,8CAE9C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC,qDAOhF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,EACf,SAAS,gBAAgB,KACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAaxB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAmCjE;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,CA4BxB"}
1
+ {"version":3,"file":"calls.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAI3C,eAAO,MAAM,kBAAkB,0CAE9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,mDAE/C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAa,MAAM,8CAExD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,8CAEhD,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,QAAQ,8CAE9C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC,qDAOhF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,EACf,SAAS,gBAAgB,KACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAaxB,CAAC;AAIF,eAAO,MAAM,4BAA4B,GAAI,UAAU,MAAM,EAAE,WAAW,IAAI,EAAE,SAAS,IAAI,8CAU5F,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,EACnB,UAAU,gBAAgB,KACzB,OAAO,CAAC,OAAO,EAAE,CAGnB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,OAAO,MAAM,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,MAAM,CAEpE,CAAC;AAEF;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAmCjE;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,CA4BxB"}
@@ -33,11 +33,12 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.updateCallByCallSid = exports.createCallDoc = exports.getCallsByFlow = exports.getCallsByClient = exports.getCallsByPhoneNumber = exports.getCallByCallSid = exports.getCallsCollection = void 0;
36
+ exports.countCalls = exports.findCallsByQuery = exports.getCallsByClientAndDateRange = exports.updateCallByCallSid = exports.createCallDoc = exports.getCallsByFlow = exports.getCallsByClient = exports.getCallsByPhoneNumber = exports.getCallByCallSid = exports.getCallsCollection = void 0;
37
37
  exports.getCallsStatsForDateRange = getCallsStatsForDateRange;
38
38
  exports.getCallsHourlyAggregation = getCallsHourlyAggregation;
39
39
  const index_1 = require("../index");
40
40
  const process = __importStar(require("node:process"));
41
+ const query_utils_1 = require("../utils/query.utils");
41
42
  const getCallsCollection = () => {
42
43
  return (0, index_1.getDb)().collection('calls');
43
44
  };
@@ -77,6 +78,29 @@ const updateCallByCallSid = async (callSid, updates) => {
77
78
  return result;
78
79
  };
79
80
  exports.updateCallByCallSid = updateCallByCallSid;
81
+ // get calls by client and date range
82
+ //client here is the user id
83
+ const getCallsByClientAndDateRange = (clientId, startDate, endDate) => {
84
+ return (0, exports.getCallsCollection)()
85
+ .find({
86
+ clientId,
87
+ createdAt: {
88
+ $gte: startDate,
89
+ $lte: endDate,
90
+ },
91
+ })
92
+ .toArray();
93
+ };
94
+ exports.getCallsByClientAndDateRange = getCallsByClientAndDateRange;
95
+ const findCallsByQuery = async (query, options) => {
96
+ const cursor = (0, exports.getCallsCollection)().find(query);
97
+ return await (0, query_utils_1.applyQueryOptions)(cursor, options).toArray();
98
+ };
99
+ exports.findCallsByQuery = findCallsByQuery;
100
+ const countCalls = async (query) => {
101
+ return (0, exports.getCallsCollection)().countDocuments(query);
102
+ };
103
+ exports.countCalls = countCalls;
80
104
  /**
81
105
  * Aggregate calls stats for a date range (createdAt in [startStr, endStr] in timezone).
82
106
  * completed = agentHungUp=true or status='completed'.
@@ -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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"}
@@ -1,5 +1,8 @@
1
- import { ObjectId, WithId } from 'mongodb';
1
+ import { ObjectId, Sort, WithId } from 'mongodb';
2
2
  import { TranscriptionSegment } from '../results/results.types';
3
+ export declare const CONFERENCE_ROLE_CUSTOMER: "customer";
4
+ export declare const CONFERENCE_ROLE_SUPERVISOR: "supervisor";
5
+ export type ConferenceRole = typeof CONFERENCE_ROLE_CUSTOMER | typeof CONFERENCE_ROLE_SUPERVISOR | null;
3
6
  export type Call = {
4
7
  callSid: string;
5
8
  flowId: ObjectId;
@@ -20,7 +23,34 @@ export type Call = {
20
23
  env: string;
21
24
  updatedAt: Date;
22
25
  createdAt: Date;
26
+ isAnsweredByAnsweringMachine?: boolean;
23
27
  agentHungUp?: boolean;
28
+ endReason?: string;
29
+ conferenceName?: string | null;
30
+ conferenceSid?: string | null;
31
+ conferenceParticipantSid?: string | null;
32
+ isConferenceCall?: boolean;
33
+ conferenceRole?: ConferenceRole;
34
+ redirectedCall?: boolean;
35
+ };
36
+ export type CallQueryOptions = {
37
+ sort?: Sort;
38
+ skip?: number;
39
+ limit?: number;
40
+ };
41
+ export type CallsFilterParams = {
42
+ clientId: string;
43
+ callSid?: string;
44
+ startDate?: Date;
45
+ endDate?: Date;
46
+ status?: string;
47
+ customerPhoneNumber?: string;
48
+ agentPhoneNumber?: string;
49
+ flowId?: string;
50
+ runId?: string;
51
+ sessionId?: string;
52
+ isIncoming?: boolean;
53
+ search?: string;
24
54
  };
25
55
  export type ImmutableCallFields = 'customerPhoneNumber' | 'agentPhoneNumber' | 'isIncomingCall' | 'isOutgoingCall' | 'sessionId' | 'callSid' | 'flowId' | 'clientId' | 'runId' | 'resultId' | 'env' | 'createdAt';
26
56
  export type CallUpdateParams = Partial<Omit<Call, ImmutableCallFields>>;
@@ -1 +1 @@
1
- {"version":3,"file":"calls.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,MAAM,IAAI,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,qBAAqB,GACrB,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,WAAW,GACX,SAAS,GACT,QAAQ,GACR,UAAU,GACV,OAAO,GACP,UAAU,GACV,KAAK,GACL,WAAW,CAAC;AAEhB,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"calls.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONFERENCE_ROLE_SUPERVISOR = exports.CONFERENCE_ROLE_CUSTOMER = void 0;
4
+ exports.CONFERENCE_ROLE_CUSTOMER = 'customer';
5
+ exports.CONFERENCE_ROLE_SUPERVISOR = 'supervisor';
3
6
  //# sourceMappingURL=calls.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calls.types.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"calls.types.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.types.ts"],"names":[],"mappings":";;;AAGa,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAC/C,QAAA,0BAA0B,GAAG,YAAqB,CAAC"}
@@ -2,6 +2,6 @@ import { ClientConfigDoc } from '../index';
2
2
  import { Collection } from 'mongodb';
3
3
  export declare const getClientsConfigCollection: () => Collection<ClientConfigDoc>;
4
4
  export declare const getClientConfig: (clientId: string) => Promise<import("mongodb").WithId<ClientConfigDoc> | null>;
5
- export declare const getClientConfigByPhone: (phoneNumber: string) => Promise<ClientConfigDoc | null>;
5
+ export declare const getClientConfigByPhone: (phone: string) => Promise<import("mongodb").WithId<ClientConfigDoc> | null>;
6
6
  export declare const createClientConfigDoc: (clientConfig: ClientConfigDoc) => Promise<void>;
7
7
  //# sourceMappingURL=clientsConfig.getters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientsConfig.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/clientsConfig/clientsConfig.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAS,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,eAAO,MAAM,0BAA0B,QAAO,UAAU,CAAC,eAAe,CAEvE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,8DAE/C,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,KAClB,OAAO,CAAC,eAAe,GAAG,IAAI,CAEhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc,eAAe,KAAG,OAAO,CAAC,IAAI,CAEvF,CAAC"}
1
+ {"version":3,"file":"clientsConfig.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/clientsConfig/clientsConfig.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkC,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,eAAO,MAAM,0BAA0B,QAAO,UAAU,CAAC,eAAe,CAEvE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,8DAE/C,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,OAAO,MAAM,8DAIzD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc,eAAe,KAAG,OAAO,CAAC,IAAI,CAEvF,CAAC"}
@@ -10,8 +10,11 @@ const getClientConfig = (clientId) => {
10
10
  return (0, exports.getClientsConfigCollection)().findOne({ clientId });
11
11
  };
12
12
  exports.getClientConfig = getClientConfig;
13
- const getClientConfigByPhone = async (phoneNumber) => {
14
- return (0, exports.getClientsConfigCollection)().findOne({ phoneNumber });
13
+ const getClientConfigByPhone = async (phone) => {
14
+ const client = await (0, index_1.findClientByPhoneNumber)(phone);
15
+ if (!client)
16
+ return null;
17
+ return (0, exports.getClientConfig)(client.clientId);
15
18
  };
16
19
  exports.getClientConfigByPhone = getClientConfigByPhone;
17
20
  const createClientConfigDoc = async (clientConfig) => {
@@ -1 +1 @@
1
- {"version":3,"file":"clientsConfig.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/clientsConfig/clientsConfig.getters.ts"],"names":[],"mappings":";;;AAAA,oCAAkD;AAG3C,MAAM,0BAA0B,GAAG,GAAgC,EAAE;IAC1E,OAAO,IAAA,aAAK,GAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAC7C,CAAC,CAAC;AAFW,QAAA,0BAA0B,8BAErC;AAEK,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE;IAClD,OAAO,IAAA,kCAA0B,GAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEK,MAAM,sBAAsB,GAAG,KAAK,EACzC,WAAmB,EACc,EAAE;IACnC,OAAO,IAAA,kCAA0B,GAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC;AAJW,QAAA,sBAAsB,0BAIjC;AAEK,MAAM,qBAAqB,GAAG,KAAK,EAAE,YAA6B,EAAiB,EAAE;IAC1F,MAAM,IAAA,kCAA0B,GAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC7D,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC"}
1
+ {"version":3,"file":"clientsConfig.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/clientsConfig/clientsConfig.getters.ts"],"names":[],"mappings":";;;AAAA,oCAA2E;AAGpE,MAAM,0BAA0B,GAAG,GAAgC,EAAE;IAC1E,OAAO,IAAA,aAAK,GAAE,CAAC,UAAU,CAAkB,eAAe,CAAC,CAAC;AAC9D,CAAC,CAAC;AAFW,QAAA,0BAA0B,8BAErC;AAEK,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE;IAClD,OAAO,IAAA,kCAA0B,GAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEK,MAAM,sBAAsB,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAuB,EAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,IAAA,uBAAe,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC,CAAC;AAJW,QAAA,sBAAsB,0BAIjC;AAEK,MAAM,qBAAqB,GAAG,KAAK,EAAE,YAA6B,EAAiB,EAAE;IAC1F,MAAM,IAAA,kCAA0B,GAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC7D,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC"}
@@ -1,8 +1,11 @@
1
1
  import type { Collection } from 'mongodb';
2
- import type { PhoneNumber, PhoneNumberWithFlow } from './phone_numbers.types';
2
+ import { Client } from '../index';
3
+ import { PhoneNumber, PhoneNumberWithFlow } from './phone_numbers.types';
3
4
  export declare const getPhoneNumbersCollection: () => Collection<PhoneNumber>;
4
5
  export declare const getPhoneDataByPhoneNumber: (phoneNumber: string) => Promise<PhoneNumberWithFlow | null>;
6
+ export declare const getClientPrimaryPhoneNumber: (clientId: string) => Promise<string | null>;
5
7
  export declare const getClientPhoneNumber: (clientId: string) => Promise<string | null>;
6
- export declare const getClientPhoneData: (clientId: string) => Promise<PhoneNumber | null>;
7
- export declare const createPhoneNumberEntity: (phoneNumber: string, flowId: string, clientId: string, isPrimary?: boolean) => Promise<PhoneNumber>;
8
+ export declare const getClientPhoneData: (clientId: string, isPrimary?: boolean) => Promise<PhoneNumber | null>;
9
+ export declare const createPhoneNumberEntity: (phoneNumber: string, flowId: string, clientId: string) => Promise<PhoneNumber>;
10
+ export declare const findClientByPhoneNumber: (phoneNumber: string) => Promise<Client>;
8
11
  //# sourceMappingURL=phone_numbers.getter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"phone_numbers.getter.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/phone_numbers/phone_numbers.getter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,eAAO,MAAM,yBAAyB,QAAO,UAAU,CAAC,WAAW,CACjB,CAAC;AAEnD,eAAO,MAAM,yBAAyB,GACpC,aAAa,MAAM,KAClB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAMpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAElF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAKrF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,UAAU,MAAM,EAChB,mBAAgB,KACf,OAAO,CAAC,WAAW,CAYrB,CAAC"}
1
+ {"version":3,"file":"phone_numbers.getter.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/phone_numbers/phone_numbers.getter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EACL,MAAM,EAMP,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEzE,eAAO,MAAM,yBAAyB,QAAO,UAAU,CAAC,WAAW,CACjB,CAAC;AAEnD,eAAO,MAAM,yBAAyB,GACpC,aAAa,MAAM,KAClB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAapC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAKzF,CAAC;AAEF,eAAO,MAAM,oBAAoB,aAP2B,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAO3B,CAAC;AAEhE,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,YAAY,OAAO,KAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAI5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,UAAU,MAAM,KACf,OAAO,CAAC,WAAW,CAerB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAOjF,CAAC"}
@@ -1,32 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPhoneNumberEntity = exports.getClientPhoneData = exports.getClientPhoneNumber = exports.getPhoneDataByPhoneNumber = exports.getPhoneNumbersCollection = void 0;
3
+ exports.findClientByPhoneNumber = exports.createPhoneNumberEntity = exports.getClientPhoneData = exports.getClientPhoneNumber = exports.getClientPrimaryPhoneNumber = exports.getPhoneDataByPhoneNumber = exports.getPhoneNumbersCollection = void 0;
4
4
  const index_1 = require("../index");
5
- const flows_getter_1 = require("../flows/flows.getter");
6
5
  const getPhoneNumbersCollection = () => (0, index_1.getDb)().collection('phone_numbers');
7
6
  exports.getPhoneNumbersCollection = getPhoneNumbersCollection;
8
7
  const getPhoneDataByPhoneNumber = async (phoneNumber) => {
9
- const phoneData = await (0, exports.getPhoneNumbersCollection)().findOne({ phone_number: phoneNumber });
10
- if (!phoneData)
11
- return null;
12
- const flow = await (0, flows_getter_1.findFlowById)(phoneData.flow_id, phoneData.client_id);
13
- if (!flow)
14
- return null;
15
- return { ...phoneData, flow };
8
+ const phoneCallData = await (0, exports.getPhoneNumbersCollection)().findOne({ phone_number: phoneNumber });
9
+ if (!phoneCallData) {
10
+ throw new Error('PhoneNumber not found');
11
+ }
12
+ const flow = await (0, index_1.getFlowsCollection)().findOne({ _id: new index_1.ObjectId(phoneCallData.flow_id) });
13
+ if (!flow) {
14
+ throw new Error('Flow not found');
15
+ }
16
+ const [subscription] = (await (0, index_1.findSubscriptions)({ clientId: phoneCallData.client_id, isActive: true })) || [];
17
+ return { ...phoneCallData, flow, subscriptionId: subscription?._id?.toString() ?? undefined };
16
18
  };
17
19
  exports.getPhoneDataByPhoneNumber = getPhoneDataByPhoneNumber;
18
- const getClientPhoneNumber = async (clientId) => {
19
- return (await (0, exports.getPhoneNumbersCollection)().findOne({ client_id: clientId }))?.phone_number ?? null;
20
+ const getClientPrimaryPhoneNumber = async (clientId) => {
21
+ return ((await (0, exports.getPhoneNumbersCollection)().findOne({ client_id: clientId, is_primary: true }))
22
+ ?.phone_number ?? null);
20
23
  };
21
- exports.getClientPhoneNumber = getClientPhoneNumber;
22
- const getClientPhoneData = async (clientId) => {
23
- const phoneNumberData = await (0, exports.getPhoneNumbersCollection)().findOne({
24
- client_id: clientId,
25
- });
26
- return phoneNumberData;
24
+ exports.getClientPrimaryPhoneNumber = getClientPrimaryPhoneNumber;
25
+ exports.getClientPhoneNumber = exports.getClientPrimaryPhoneNumber;
26
+ const getClientPhoneData = async (clientId, isPrimary) => {
27
+ const filter = { client_id: clientId, is_primary: isPrimary !== false };
28
+ const options = isPrimary === false ? { sort: { createdAt: -1 } } : {};
29
+ return (0, exports.getPhoneNumbersCollection)().findOne(filter, options);
27
30
  };
28
31
  exports.getClientPhoneData = getClientPhoneData;
29
- const createPhoneNumberEntity = async (phoneNumber, flowId, clientId, isPrimary = true) => {
32
+ const createPhoneNumberEntity = async (phoneNumber, flowId, clientId) => {
33
+ const existing = await (0, exports.getClientPhoneData)(clientId);
34
+ const isPrimary = !existing;
30
35
  await (0, exports.getPhoneNumbersCollection)().insertOne({
31
36
  phone_number: phoneNumber,
32
37
  flow_id: new index_1.ObjectId(flowId),
@@ -35,10 +40,21 @@ const createPhoneNumberEntity = async (phoneNumber, flowId, clientId, isPrimary
35
40
  createdAt: new Date(),
36
41
  updatedAt: new Date(),
37
42
  });
38
- const phoneNumberData = await (0, exports.getClientPhoneData)(clientId);
43
+ const phoneNumberData = await (0, exports.getClientPhoneData)(clientId, isPrimary);
39
44
  if (!phoneNumberData)
40
45
  throw new Error('Failed to create phoneNumber');
41
46
  return phoneNumberData;
42
47
  };
43
48
  exports.createPhoneNumberEntity = createPhoneNumberEntity;
49
+ const findClientByPhoneNumber = async (phoneNumber) => {
50
+ const phoneData = await (0, exports.getPhoneNumbersCollection)().findOne({ phone_number: phoneNumber });
51
+ if (!phoneData)
52
+ throw new Error('Failed to get phone data');
53
+ const clientId = phoneData.client_id;
54
+ const client = await (0, index_1.getClientsCollection)().findOne({ clientId });
55
+ if (!client)
56
+ throw new Error('Failed to get client');
57
+ return client;
58
+ };
59
+ exports.findClientByPhoneNumber = findClientByPhoneNumber;
44
60
  //# sourceMappingURL=phone_numbers.getter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"phone_numbers.getter.js","sourceRoot":"","sources":["../../../src/talkpilot/phone_numbers/phone_numbers.getter.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAC3C,wDAAqD;AAG9C,MAAM,yBAAyB,GAAG,GAA4B,EAAE,CACrE,IAAA,aAAK,GAAE,CAAC,UAAU,CAAc,eAAe,CAAC,CAAC;AADtC,QAAA,yBAAyB,6BACa;AAE5C,MAAM,yBAAyB,GAAG,KAAK,EAC5C,WAAmB,EACkB,EAAE;IACvC,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAyB,GAAE,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3F,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAM,IAAA,2BAAY,EAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AARW,QAAA,yBAAyB,6BAQpC;AAEK,MAAM,oBAAoB,GAAG,KAAK,EAAE,QAAgB,EAA0B,EAAE;IACrF,OAAO,CAAC,MAAM,IAAA,iCAAyB,GAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;AACpG,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B;AAEK,MAAM,kBAAkB,GAAG,KAAK,EAAE,QAAgB,EAA+B,EAAE;IACxF,MAAM,eAAe,GAAG,MAAM,IAAA,iCAAyB,GAAE,CAAC,OAAO,CAAC;QAChE,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B;AAEK,MAAM,uBAAuB,GAAG,KAAK,EAC1C,WAAmB,EACnB,MAAc,EACd,QAAgB,EAChB,SAAS,GAAG,IAAI,EACM,EAAE;IACxB,MAAM,IAAA,iCAAyB,GAAE,CAAC,SAAS,CAAC;QAC1C,YAAY,EAAE,WAAW;QACzB,OAAO,EAAE,IAAI,gBAAQ,CAAC,MAAM,CAAC;QAC7B,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,IAAA,0BAAkB,EAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACtE,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAjBW,QAAA,uBAAuB,2BAiBlC"}
1
+ {"version":3,"file":"phone_numbers.getter.js","sourceRoot":"","sources":["../../../src/talkpilot/phone_numbers/phone_numbers.getter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import { Plan, PlanDoc, PlanFilter, PlanQueryOptions } from '../index';
2
- import { ObjectId } from 'mongodb';
2
+ import { Filter, ObjectId } from 'mongodb';
3
3
  export declare const getPlansCollection: () => import("mongodb").Collection<Plan>;
4
4
  /**
5
5
  * Generic function to find plans with flexible filtering
6
6
  */
7
7
  export declare const findPlans: (filter?: PlanFilter, options?: PlanQueryOptions) => Promise<PlanDoc[]>;
8
+ export declare const findPlansByQuery: (query: Filter<Plan>, options?: PlanQueryOptions) => Promise<PlanDoc[]>;
9
+ export declare const countPlans: (query: Filter<Plan>) => Promise<number>;
8
10
  export declare const createPlanDoc: (planData: Omit<Plan, "createdAt" | "updatedAt">) => Promise<PlanDoc>;
9
- export declare const updatePlanDoc: (planId: ObjectId, updates: Partial<Pick<Plan, "isActive">>) => Promise<PlanDoc | null>;
11
+ export declare const updatePlanDoc: (planId: ObjectId, updates: Partial<Omit<Plan, "createdAt" | "updatedAt">>) => Promise<PlanDoc | null>;
10
12
  //# sourceMappingURL=plans.getters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plans.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/plans/plans.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAS,OAAO,EAAE,UAAU,EAAoB,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,kBAAkB,0CAE9B,CAAC;AAiCF;;GAEG;AACH,eAAO,MAAM,SAAS,GACpB,SAAS,UAAU,EACnB,UAAU,gBAAgB,KACzB,OAAO,CAAC,OAAO,EAAE,CA0CnB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC,KAC9C,OAAO,CAAC,OAAO,CAWjB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,QAAQ,QAAQ,EAChB,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KACvC,OAAO,CAAC,OAAO,GAAG,IAAI,CAcxB,CAAC"}
1
+ {"version":3,"file":"plans.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/plans/plans.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAmB,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAGzC,eAAO,MAAM,kBAAkB,0CAE9B,CAAC;AAiCF;;GAEG;AACH,eAAO,MAAM,SAAS,GACpB,SAAS,UAAU,EACnB,UAAU,gBAAgB,KACzB,OAAO,CAAC,OAAO,EAAE,CAkCnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,EACnB,UAAU,gBAAgB,KACzB,OAAO,CAAC,OAAO,EAAE,CAGnB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,OAAO,MAAM,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,MAAM,CAEpE,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC,KAC9C,OAAO,CAAC,OAAO,CAWjB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,QAAQ,QAAQ,EAChB,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,KACtD,OAAO,CAAC,OAAO,GAAG,IAAI,CAaxB,CAAC"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updatePlanDoc = exports.createPlanDoc = exports.findPlans = exports.getPlansCollection = void 0;
3
+ exports.updatePlanDoc = exports.createPlanDoc = exports.countPlans = exports.findPlansByQuery = exports.findPlans = exports.getPlansCollection = void 0;
4
4
  const index_1 = require("../index");
5
5
  const mongodb_1 = require("mongodb");
6
+ const query_utils_1 = require("../utils/query.utils");
6
7
  const getPlansCollection = () => {
7
8
  return (0, index_1.getDb)().collection('plans');
8
9
  };
@@ -65,16 +66,19 @@ const findPlans = async (filter, options) => {
65
66
  query.$and = filter.and.map(buildSimpleQuery);
66
67
  }
67
68
  }
68
- let queryBuilder = (0, exports.getPlansCollection)().find(query);
69
- if (options?.sort) {
70
- queryBuilder = queryBuilder.sort(options.sort);
71
- }
72
- if (options?.limit) {
73
- queryBuilder = queryBuilder.limit(options.limit);
74
- }
75
- return await queryBuilder.toArray();
69
+ const cursor = (0, exports.getPlansCollection)().find(query);
70
+ return await (0, query_utils_1.applyQueryOptions)(cursor, options).toArray();
76
71
  };
77
72
  exports.findPlans = findPlans;
73
+ const findPlansByQuery = async (query, options) => {
74
+ const cursor = (0, exports.getPlansCollection)().find(query);
75
+ return await (0, query_utils_1.applyQueryOptions)(cursor, options).toArray();
76
+ };
77
+ exports.findPlansByQuery = findPlansByQuery;
78
+ const countPlans = async (query) => {
79
+ return (0, exports.getPlansCollection)().countDocuments(query);
80
+ };
81
+ exports.countPlans = countPlans;
78
82
  const createPlanDoc = async (planData) => {
79
83
  const now = new Date();
80
84
  const result = await (0, exports.getPlansCollection)().insertOne({
@@ -89,7 +93,7 @@ const createPlanDoc = async (planData) => {
89
93
  };
90
94
  exports.createPlanDoc = createPlanDoc;
91
95
  const updatePlanDoc = async (planId, updates) => {
92
- const result = await (0, exports.getPlansCollection)().findOneAndUpdate({ _id: planId }, {
96
+ return await (0, exports.getPlansCollection)().findOneAndUpdate({ _id: planId }, {
93
97
  $set: {
94
98
  ...updates,
95
99
  updatedAt: new Date(),
@@ -97,7 +101,6 @@ const updatePlanDoc = async (planId, updates) => {
97
101
  }, {
98
102
  returnDocument: 'after',
99
103
  });
100
- return result;
101
104
  };
102
105
  exports.updatePlanDoc = updatePlanDoc;
103
106
  //# sourceMappingURL=plans.getters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plans.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/plans/plans.getters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plans.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/plans/plans.getters.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,8 @@ export interface CallResult {
23
23
  transcription: TranscriptionSegment[];
24
24
  flowId: ObjectId | string;
25
25
  recordingUrl: string | null;
26
+ agentHungUp?: boolean;
27
+ endReason?: string;
26
28
  }
27
29
  export type TranscriptionSegment = {
28
30
  assistant: string;
@@ -1 +1 @@
1
- {"version":3,"file":"results.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/results/results.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"results.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/results/results.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.getter.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/sessions/sessions.getter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAO,MAAM,qBAAqB,QAAO,UAAU,CAAC,OAAO,CAClB,CAAC;AAE1C,eAAO,MAAM,eAAe,GAC1B,WAAW,QAAQ,EACnB,UAAU,MAAM,KACf,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAEhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,MAAM,MAAM,EAAE,IAAI,MAAM,oCAYvE,CAAC"}
1
+ {"version":3,"file":"sessions.getter.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/sessions/sessions.getter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAO,MAAM,qBAAqB,QAAO,UAAU,CAAC,OAAO,CAClB,CAAC;AA8B1C,eAAO,MAAM,eAAe,GAC1B,WAAW,QAAQ,EACnB,UAAU,MAAM,KACf,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAEhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,MAAM,MAAM,EAAE,IAAI,MAAM,oCA2CvE,CAAC"}
@@ -5,21 +5,72 @@ const mongodb_1 = require("mongodb");
5
5
  const index_1 = require("../index");
6
6
  const getSessionsCollection = () => (0, index_1.getDb)().collection('sessions');
7
7
  exports.getSessionsCollection = getSessionsCollection;
8
+ const buildPhoneCandidates = (phone) => {
9
+ const raw = (phone ?? '').trim();
10
+ if (!raw)
11
+ return [];
12
+ const noPlus = raw.startsWith('+') ? raw.slice(1) : raw;
13
+ const digitsOnly = raw.replace(/\D/g, '');
14
+ const digitsOnlyNoPlus = noPlus.replace(/\D/g, '');
15
+ return Array.from(new Set([raw, noPlus, digitsOnly, digitsOnlyNoPlus].filter(Boolean)));
16
+ };
17
+ const buildFlowIdCandidates = (flowId) => {
18
+ if (!flowId)
19
+ return [];
20
+ // Some sessions store flow_id as string, others as ObjectId.
21
+ if (flowId instanceof mongodb_1.ObjectId) {
22
+ return [flowId, flowId.toString()];
23
+ }
24
+ const asString = String(flowId);
25
+ if (!asString)
26
+ return [];
27
+ if (mongodb_1.ObjectId.isValid(asString)) {
28
+ return [new mongodb_1.ObjectId(asString), asString];
29
+ }
30
+ return [asString];
31
+ };
8
32
  const findSessionById = (sessionId, clientId) => {
9
33
  return (0, exports.getSessionsCollection)().findOne({ _id: sessionId, clientId: clientId });
10
34
  };
11
35
  exports.findSessionById = findSessionById;
12
36
  const findSessionOfIncomingCall = async (from, to) => {
13
- const receiverPhoneData = await (0, index_1.getPhoneNumbersCollection)().findOne({ phone_number: to });
37
+ const toCandidates = buildPhoneCandidates(to);
38
+ const fromCandidates = buildPhoneCandidates(from);
39
+ const receiverPhoneData = await (0, index_1.getPhoneNumbersCollection)().findOne({
40
+ phone_number: { $in: toCandidates },
41
+ });
14
42
  if (!receiverPhoneData) {
15
43
  return null;
16
44
  }
17
- const session = await (0, exports.getSessionsCollection)().findOne({
18
- flow_id: new mongodb_1.ObjectId(receiverPhoneData.flow_id),
19
- phone_numbers: {
20
- $elemMatch: { phoneNumber: from },
45
+ const flowIdCandidates = buildFlowIdCandidates(receiverPhoneData.flow_id);
46
+ const [session] = await (0, exports.getSessionsCollection)()
47
+ .aggregate([
48
+ {
49
+ $match: {
50
+ flow_id: { $in: flowIdCandidates },
51
+ phone_numbers: {
52
+ $elemMatch: { phoneNumber: { $in: fromCandidates } },
53
+ },
54
+ },
21
55
  },
22
- });
56
+ {
57
+ $addFields: {
58
+ phone_numbers: {
59
+ $filter: {
60
+ input: '$phone_numbers',
61
+ as: 'pn',
62
+ cond: { $in: ['$$pn.phoneNumber', fromCandidates] },
63
+ },
64
+ },
65
+ },
66
+ },
67
+ { $limit: 1 },
68
+ ])
69
+ .toArray();
70
+ if (!session) {
71
+ console.info('No session found for incoming call');
72
+ return null;
73
+ }
23
74
  return session;
24
75
  };
25
76
  exports.findSessionOfIncomingCall = findSessionOfIncomingCall;
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.getter.js","sourceRoot":"","sources":["../../../src/talkpilot/sessions/sessions.getter.ts"],"names":[],"mappings":";;;AAAA,qCAAmC;AAEnC,oCAA4D;AAGrD,MAAM,qBAAqB,GAAG,GAAwB,EAAE,CAC7D,IAAA,aAAK,GAAE,CAAC,UAAU,CAAU,UAAU,CAAC,CAAC;AAD7B,QAAA,qBAAqB,yBACQ;AAEnC,MAAM,eAAe,GAAG,CAC7B,SAAmB,EACnB,QAAgB,EACiB,EAAE;IACnC,OAAO,IAAA,6BAAqB,GAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjF,CAAC,CAAC;AALW,QAAA,eAAe,mBAK1B;AAEK,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAU,EAAE,EAAE;IAC1E,MAAM,iBAAiB,GAAG,MAAM,IAAA,iCAAyB,GAAE,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1F,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAqB,GAAE,CAAC,OAAO,CAAC;QACpD,OAAO,EAAE,IAAI,kBAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAChD,aAAa,EAAE;YACb,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;SAClC;KACF,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAZW,QAAA,yBAAyB,6BAYpC"}
1
+ {"version":3,"file":"sessions.getter.js","sourceRoot":"","sources":["../../../src/talkpilot/sessions/sessions.getter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { Subscription, SubscriptionDoc, SubscriptionFilter, SubscriptionQueryOptions } from './subscriptions.types';
2
- import { ObjectId } from 'mongodb';
2
+ import { Filter, ObjectId } from 'mongodb';
3
3
  export declare const getSubscriptionsCollection: () => import("mongodb").Collection<Subscription>;
4
4
  /**
5
5
  * A simple filter for Subscription: each field may be a value or a MongoDB operator expression
6
6
  */
7
7
  export declare const findSubscriptions: (filter?: SubscriptionFilter, options?: SubscriptionQueryOptions) => Promise<SubscriptionDoc[]>;
8
+ export declare const countSubscriptions: (query: Filter<Subscription>) => Promise<number>;
8
9
  export declare const createSubscriptionDoc: (subscriptionData: Omit<Subscription, "createdAt" | "updatedAt">) => Promise<SubscriptionDoc>;
9
10
  export declare const updateSubscriptionDoc: (subscriptionId: ObjectId, updates: Partial<Subscription>) => Promise<SubscriptionDoc | null>;
10
11
  export declare const incrementSubscriptionUsage: (subscriptionId: ObjectId, amount?: number) => Promise<SubscriptionDoc | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/subscriptions/subscriptions.getters.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,eAAe,EAEf,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAC;AAG3C,eAAO,MAAM,0BAA0B,kDAEtC,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,kBAAkB,EAC3B,UAAU,wBAAwB,KACjC,OAAO,CAAC,eAAe,EAAE,CAmC3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,kBAAkB,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,WAAW,CAAC,KAC9D,OAAO,CAAC,eAAe,CAWzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,gBAAgB,QAAQ,EACxB,SAAS,OAAO,CAAC,YAAY,CAAC,KAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAahC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,gBAAgB,QAAQ,EACxB,SAAQ,MAAU,KACjB,OAAO,CAAC,eAAe,GAAG,IAAI,CAahC,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC7C,gBAAgB,QAAQ,EACxB,iBAAiB,IAAI,KACpB,OAAO,CAAC,IAAI,CAcd,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,gBAAgB,QAAQ,EACxB,UAAU,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KACvC,OAAO,CAAC,eAAe,GAAG,IAAI,CAchC,CAAC"}
1
+ {"version":3,"file":"subscriptions.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/subscriptions/subscriptions.getters.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAIzC,eAAO,MAAM,0BAA0B,kDAEtC,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,kBAAkB,EAC3B,UAAU,wBAAwB,KACjC,OAAO,CAAC,eAAe,EAAE,CA4B3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,OAAO,MAAM,CAAC,YAAY,CAAC,KAAG,OAAO,CAAC,MAAM,CAEpF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,kBAAkB,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,WAAW,CAAC,KAC9D,OAAO,CAAC,eAAe,CAWzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,gBAAgB,QAAQ,EACxB,SAAS,OAAO,CAAC,YAAY,CAAC,KAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAahC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,gBAAgB,QAAQ,EACxB,SAAQ,MAAU,KACjB,OAAO,CAAC,eAAe,GAAG,IAAI,CAahC,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC7C,gBAAgB,QAAQ,EACxB,iBAAiB,IAAI,KACpB,OAAO,CAAC,IAAI,CAcd,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,gBAAgB,QAAQ,EACxB,UAAU,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KACvC,OAAO,CAAC,eAAe,GAAG,IAAI,CAYhC,CAAC"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pushNewSubscriptionCycle = exports.deactivateCurrentSubscriptionCycle = exports.incrementSubscriptionUsage = exports.updateSubscriptionDoc = exports.createSubscriptionDoc = exports.findSubscriptions = exports.getSubscriptionsCollection = void 0;
3
+ exports.pushNewSubscriptionCycle = exports.deactivateCurrentSubscriptionCycle = exports.incrementSubscriptionUsage = exports.updateSubscriptionDoc = exports.createSubscriptionDoc = exports.countSubscriptions = exports.findSubscriptions = exports.getSubscriptionsCollection = void 0;
4
4
  const index_1 = require("../index");
5
5
  const subscriptions_getters_utils_1 = require("./subscriptions.getters.utils");
6
+ const query_utils_1 = require("../utils/query.utils");
6
7
  const getSubscriptionsCollection = () => {
7
8
  return (0, index_1.getDb)().collection('subscriptions');
8
9
  };
@@ -34,16 +35,14 @@ const findSubscriptions = async (filter, options) => {
34
35
  query.$and = filter.and.map(subscriptions_getters_utils_1.buildSimpleQuery);
35
36
  }
36
37
  }
37
- let queryBuilder = (0, exports.getSubscriptionsCollection)().find(query);
38
- if (options?.sort) {
39
- queryBuilder = queryBuilder.sort(options.sort);
40
- }
41
- if (options?.limit) {
42
- queryBuilder = queryBuilder.limit(options.limit);
43
- }
44
- return await queryBuilder.toArray();
38
+ const cursor = (0, exports.getSubscriptionsCollection)().find(query);
39
+ return await (0, query_utils_1.applyQueryOptions)(cursor, options).toArray();
45
40
  };
46
41
  exports.findSubscriptions = findSubscriptions;
42
+ const countSubscriptions = async (query) => {
43
+ return (0, exports.getSubscriptionsCollection)().countDocuments(query);
44
+ };
45
+ exports.countSubscriptions = countSubscriptions;
47
46
  const createSubscriptionDoc = async (subscriptionData) => {
48
47
  const now = new Date();
49
48
  const result = await (0, exports.getSubscriptionsCollection)().insertOne({
@@ -92,14 +91,13 @@ const deactivateCurrentSubscriptionCycle = async (subscriptionId, nextRenewalDat
92
91
  };
93
92
  exports.deactivateCurrentSubscriptionCycle = deactivateCurrentSubscriptionCycle;
94
93
  const pushNewSubscriptionCycle = async (subscriptionId, newCycle) => {
95
- const result = await (0, exports.getSubscriptionsCollection)().findOneAndUpdate({ _id: subscriptionId }, {
94
+ return await (0, exports.getSubscriptionsCollection)().findOneAndUpdate({ _id: subscriptionId }, {
96
95
  $push: {
97
96
  cycles: newCycle,
98
97
  },
99
98
  }, {
100
99
  returnDocument: 'after',
101
100
  });
102
- return result;
103
101
  };
104
102
  exports.pushNewSubscriptionCycle = pushNewSubscriptionCycle;
105
103
  //# sourceMappingURL=subscriptions.getters.js.map