@talkpilot/core-db 1.1.19 → 1.2.0

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 (130) hide show
  1. package/.cursor/rules/development.mdc +65 -65
  2. package/DEVELOPMENT.md +98 -98
  3. package/README.md +160 -160
  4. package/dist/talkpilot/calls/calls.getters.d.ts +2 -1
  5. package/dist/talkpilot/calls/calls.getters.d.ts.map +1 -1
  6. package/dist/talkpilot/calls/calls.getters.js +176 -0
  7. package/dist/talkpilot/calls/calls.getters.js.map +1 -1
  8. package/dist/talkpilot/calls/calls.types.d.ts +48 -0
  9. package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
  10. package/dist/talkpilot/clientsConfig/clientsConfig.getters.d.ts +1 -0
  11. package/dist/talkpilot/clientsConfig/clientsConfig.getters.d.ts.map +1 -1
  12. package/dist/talkpilot/clientsConfig/clientsConfig.getters.js +13 -0
  13. package/dist/talkpilot/clientsConfig/clientsConfig.getters.js.map +1 -1
  14. package/jest.config.js +19 -19
  15. package/package.json +45 -45
  16. package/src/__tests__/setup.ts +20 -20
  17. package/src/connection.ts +42 -42
  18. package/src/index.ts +16 -16
  19. package/src/municipal/__tests__/validation.spec.ts +62 -62
  20. package/src/municipal/cities/cities.getters.ts +50 -50
  21. package/src/municipal/cities/cities.types.ts +11 -11
  22. package/src/municipal/cities/index.ts +2 -2
  23. package/src/municipal/departmentsSubjects/departmentsSubjects.getters.ts +282 -282
  24. package/src/municipal/departmentsSubjects/departmentsSubjects.types.ts +72 -72
  25. package/src/municipal/departmentsSubjects/index.ts +9 -9
  26. package/src/municipal/index.ts +21 -21
  27. package/src/municipal/mongodb-client.ts +61 -61
  28. package/src/municipal/streets/index.ts +2 -2
  29. package/src/municipal/streets/streets.getters.ts +125 -125
  30. package/src/municipal/streets/streets.types.ts +18 -18
  31. package/src/municipal/systemInstructions/__tests__/getters.spec.ts +113 -113
  32. package/src/municipal/systemInstructions/__tests__/setters.spec.ts +274 -274
  33. package/src/municipal/systemInstructions/index.ts +7 -7
  34. package/src/municipal/systemInstructions/instructions.getters.ts +57 -57
  35. package/src/municipal/systemInstructions/instructions.setters.ts +119 -119
  36. package/src/municipal/systemInstructions/instructions.types.ts +30 -30
  37. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +66 -66
  38. package/src/municipal/tickets/index.ts +2 -2
  39. package/src/municipal/tickets/tickets.getters.ts +261 -261
  40. package/src/municipal/tickets/tickets.types.ts +43 -43
  41. package/src/municipal/utils/types.ts +11 -11
  42. package/src/talkpilot/__tests__/db.spec.ts +38 -38
  43. package/src/talkpilot/__tests__/mongodb-client.spec.ts +18 -18
  44. package/src/talkpilot/__tests__/validation.spec.ts +68 -68
  45. package/src/talkpilot/agents/__tests__/agents.getters.spec.ts +29 -29
  46. package/src/talkpilot/agents/agents.getters.ts +34 -34
  47. package/src/talkpilot/agents/agents.types.ts +14 -14
  48. package/src/talkpilot/agents/index.ts +2 -2
  49. package/src/talkpilot/backgroundToolResults/__tests__/backgroundToolResults.getters.spec.ts +147 -147
  50. package/src/talkpilot/backgroundToolResults/backgroundToolResults.getters.ts +65 -65
  51. package/src/talkpilot/backgroundToolResults/backgroundToolResults.types.ts +23 -23
  52. package/src/talkpilot/backgroundToolResults/index.ts +2 -2
  53. package/src/talkpilot/calls/__tests__/callStats.utils.spec.ts +128 -128
  54. package/src/talkpilot/calls/__tests__/calls.spec.ts +252 -252
  55. package/src/talkpilot/calls/calls.getters.ts +446 -248
  56. package/src/talkpilot/calls/calls.types.ts +171 -115
  57. package/src/talkpilot/calls/index.ts +2 -2
  58. package/src/talkpilot/clientAudioBuffers/__tests__/clientAudioBuffer.getters.spec.ts +160 -160
  59. package/src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts +117 -117
  60. package/src/talkpilot/clientAudioBuffers/clientsAudioBuffers.types.ts +25 -25
  61. package/src/talkpilot/clientAudioBuffers/index.ts +2 -2
  62. package/src/talkpilot/clients/clients.getters.ts +16 -16
  63. package/src/talkpilot/clients/clients.types.ts +14 -14
  64. package/src/talkpilot/clients/index.ts +2 -2
  65. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +106 -106
  66. package/src/talkpilot/clientsConfig/clientsConfig.getters.ts +44 -22
  67. package/src/talkpilot/clientsConfig/clientsConfig.types.ts +94 -94
  68. package/src/talkpilot/clientsConfig/index.ts +2 -2
  69. package/src/talkpilot/flows/__tests__/flows.schema.spec.ts +67 -67
  70. package/src/talkpilot/flows/flows.getter.ts +14 -14
  71. package/src/talkpilot/flows/flows.schema.ts +153 -153
  72. package/src/talkpilot/flows/flows.types.ts +184 -184
  73. package/src/talkpilot/flows/index.ts +2 -2
  74. package/src/talkpilot/groups/__tests__/groups.spec.ts +90 -90
  75. package/src/talkpilot/groups/__tests__/phone.utils.spec.ts +32 -32
  76. package/src/talkpilot/groups/groups.getters.ts +30 -30
  77. package/src/talkpilot/groups/groups.types.ts +29 -29
  78. package/src/talkpilot/groups/index.ts +3 -3
  79. package/src/talkpilot/groups/phone.utils.ts +46 -46
  80. package/src/talkpilot/index.ts +29 -29
  81. package/src/talkpilot/leads/index.ts +2 -2
  82. package/src/talkpilot/leads/leads.getter.ts +6 -6
  83. package/src/talkpilot/leads/leads.schema.ts +33 -33
  84. package/src/talkpilot/leads/leads.types.ts +20 -20
  85. package/src/talkpilot/mongodb-client.ts +78 -78
  86. package/src/talkpilot/phone_numbers/__tests__/phone_numbers.spec.ts +247 -247
  87. package/src/talkpilot/phone_numbers/index.ts +2 -2
  88. package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +154 -154
  89. package/src/talkpilot/phone_numbers/phone_numbers.schema.ts +17 -17
  90. package/src/talkpilot/phone_numbers/phone_numbers.types.ts +30 -30
  91. package/src/talkpilot/plans/__tests__/plans.spec.ts +70 -70
  92. package/src/talkpilot/plans/index.ts +2 -2
  93. package/src/talkpilot/plans/plans.getters.ts +132 -132
  94. package/src/talkpilot/plans/plans.types.ts +89 -89
  95. package/src/talkpilot/results/index.ts +7 -7
  96. package/src/talkpilot/results/results.getter.ts +35 -35
  97. package/src/talkpilot/results/results.schema.ts +25 -25
  98. package/src/talkpilot/results/results.types.ts +34 -34
  99. package/src/talkpilot/retry_analyze/__tests__/retryAnalyze.getters.spec.ts +156 -156
  100. package/src/talkpilot/retry_analyze/index.ts +2 -2
  101. package/src/talkpilot/retry_analyze/retryAnalyze.getters.ts +75 -75
  102. package/src/talkpilot/retry_analyze/retryAnalyze.types.ts +13 -13
  103. package/src/talkpilot/sessions/__tests__/sessions.spec.ts +147 -147
  104. package/src/talkpilot/sessions/index.ts +2 -2
  105. package/src/talkpilot/sessions/sessions.getter.ts +92 -92
  106. package/src/talkpilot/sessions/sessions.schema.ts +34 -34
  107. package/src/talkpilot/sessions/sessions.types.ts +30 -30
  108. package/src/talkpilot/subscriptions/__tests__/subscriptions.getters.utils.spec.ts +45 -45
  109. package/src/talkpilot/subscriptions/index.ts +3 -3
  110. package/src/talkpilot/subscriptions/subscriptions.getters.ts +146 -146
  111. package/src/talkpilot/subscriptions/subscriptions.getters.utils.ts +33 -33
  112. package/src/talkpilot/subscriptions/subscriptions.types.ts +66 -66
  113. package/src/talkpilot/utils/__tests__/query.utils.spec.ts +49 -49
  114. package/src/talkpilot/utils/query.utils.ts +21 -21
  115. package/src/test-utils/db-utils.ts +24 -24
  116. package/src/test-utils/factories/index.ts +12 -12
  117. package/src/test-utils/factories/municipal/cities.ts +16 -16
  118. package/src/test-utils/factories/municipal/departmentsSubjects.ts +37 -37
  119. package/src/test-utils/factories/municipal/streets.ts +22 -22
  120. package/src/test-utils/factories/municipal/tickets.ts +39 -39
  121. package/src/test-utils/factories/talkpilot/agents.ts +19 -19
  122. package/src/test-utils/factories/talkpilot/calls.ts +37 -37
  123. package/src/test-utils/factories/talkpilot/clientAudioBuffers.ts +20 -20
  124. package/src/test-utils/factories/talkpilot/clientsConfig.ts +18 -18
  125. package/src/test-utils/factories/talkpilot/flows.ts +33 -33
  126. package/src/test-utils/factories/talkpilot/groups.ts +33 -33
  127. package/src/test-utils/factories/talkpilot/phone_numbers.ts +22 -22
  128. package/src/test-utils/factories/talkpilot/sessions.ts +35 -35
  129. package/src/utils/validation.ts +23 -23
  130. package/tsconfig.json +23 -23
@@ -1,113 +1,113 @@
1
- import { createSystemInstruction } from "../instructions.setters";
2
- import {
3
- getSystemInstructionById,
4
- getActiveSystemInstructionsByCity,
5
- getSystemInstructionsByToolAndCity,
6
- findSystemInstructions,
7
- } from "../instructions.getters";
8
- import { ObjectId } from "mongodb";
9
- import { MIS_TOOLS, QUERY_TYPES } from "../instructions.types";
10
-
11
- describe("System Instructions Getter Tests", () => {
12
- const testCity = "Ashdod";
13
- const otherCity = "Tel Aviv";
14
-
15
- describe("getters", () => {
16
- let instructionId: string;
17
-
18
- beforeEach(async () => {
19
- const id = await createSystemInstruction({
20
- cityName: testCity,
21
- instruction: "Find Me",
22
- isActive: true,
23
- tool: MIS_TOOLS.findSubject,
24
- queryType: QUERY_TYPES.any,
25
- tags: ["important", "urgent"],
26
- });
27
- instructionId = id.toString();
28
-
29
- // for filtering tests
30
- await createSystemInstruction({
31
- cityName: testCity,
32
- instruction: "Inactive One",
33
- isActive: false,
34
- tool: MIS_TOOLS.findSubject,
35
- queryType: QUERY_TYPES.any,
36
- });
37
-
38
- await createSystemInstruction({
39
- cityName: otherCity,
40
- instruction: "Other City Instruction",
41
- isActive: true,
42
- tool: MIS_TOOLS.findStreet,
43
- queryType: QUERY_TYPES.exactlyOne,
44
- });
45
- });
46
-
47
- describe("getSystemInstructionById", () => {
48
- it("given existing id when fetched then return the document", async () => {
49
- const result = await getSystemInstructionById(instructionId);
50
- expect(result?._id.toString()).toBe(instructionId);
51
- });
52
-
53
- it("given non-existent id when fetched then return null", async () => {
54
- const result = await getSystemInstructionById(
55
- new ObjectId().toHexString(),
56
- );
57
- expect(result).toBeNull();
58
- });
59
- });
60
-
61
- describe("getActiveSystemInstructionsByCity", () => {
62
- it("given city with active instructions when fetched then return only active documents for that city", async () => {
63
- const result = await getActiveSystemInstructionsByCity(testCity);
64
- expect(result.length).toBe(1);
65
- expect(result[0].instruction).toBe("Find Me");
66
- });
67
-
68
- it("given city with no instructions when fetched then return empty array", async () => {
69
- const result =
70
- await getActiveSystemInstructionsByCity("NonExistentCity");
71
- expect(result).toEqual([]);
72
- });
73
- });
74
-
75
- describe("getSystemInstructionsByToolAndCity", () => {
76
- it("given valid city and tool when fetched then return matching instructions", async () => {
77
- const result = await getSystemInstructionsByToolAndCity(
78
- testCity,
79
- MIS_TOOLS.findSubject,
80
- );
81
- expect(result.length).toBe(2); // One active, one inactive
82
- expect(
83
- result.every(
84
- (r) => r.cityName === testCity && r.tool === MIS_TOOLS.findSubject,
85
- ),
86
- ).toBe(true);
87
- });
88
-
89
- it("given valid city but wrong tool when fetched then return empty array", async () => {
90
- const result = await getSystemInstructionsByToolAndCity(
91
- testCity,
92
- MIS_TOOLS.findStreet,
93
- );
94
- expect(result).toEqual([]);
95
- });
96
- });
97
-
98
- describe("findSystemInstructions", () => {
99
- it("given filter by tags when searched then return matching documents", async () => {
100
- const result = await findSystemInstructions({
101
- tags: { $in: ["important"] },
102
- });
103
- expect(result.length).toBe(1);
104
- expect(result[0].instruction).toBe("Find Me");
105
- });
106
-
107
- it("given empty filter when searched then return all documents", async () => {
108
- const result = await findSystemInstructions({});
109
- expect(result.length).toBe(3);
110
- });
111
- });
112
- });
113
- });
1
+ import { createSystemInstruction } from "../instructions.setters";
2
+ import {
3
+ getSystemInstructionById,
4
+ getActiveSystemInstructionsByCity,
5
+ getSystemInstructionsByToolAndCity,
6
+ findSystemInstructions,
7
+ } from "../instructions.getters";
8
+ import { ObjectId } from "mongodb";
9
+ import { MIS_TOOLS, QUERY_TYPES } from "../instructions.types";
10
+
11
+ describe("System Instructions Getter Tests", () => {
12
+ const testCity = "Ashdod";
13
+ const otherCity = "Tel Aviv";
14
+
15
+ describe("getters", () => {
16
+ let instructionId: string;
17
+
18
+ beforeEach(async () => {
19
+ const id = await createSystemInstruction({
20
+ cityName: testCity,
21
+ instruction: "Find Me",
22
+ isActive: true,
23
+ tool: MIS_TOOLS.findSubject,
24
+ queryType: QUERY_TYPES.any,
25
+ tags: ["important", "urgent"],
26
+ });
27
+ instructionId = id.toString();
28
+
29
+ // for filtering tests
30
+ await createSystemInstruction({
31
+ cityName: testCity,
32
+ instruction: "Inactive One",
33
+ isActive: false,
34
+ tool: MIS_TOOLS.findSubject,
35
+ queryType: QUERY_TYPES.any,
36
+ });
37
+
38
+ await createSystemInstruction({
39
+ cityName: otherCity,
40
+ instruction: "Other City Instruction",
41
+ isActive: true,
42
+ tool: MIS_TOOLS.findStreet,
43
+ queryType: QUERY_TYPES.exactlyOne,
44
+ });
45
+ });
46
+
47
+ describe("getSystemInstructionById", () => {
48
+ it("given existing id when fetched then return the document", async () => {
49
+ const result = await getSystemInstructionById(instructionId);
50
+ expect(result?._id.toString()).toBe(instructionId);
51
+ });
52
+
53
+ it("given non-existent id when fetched then return null", async () => {
54
+ const result = await getSystemInstructionById(
55
+ new ObjectId().toHexString(),
56
+ );
57
+ expect(result).toBeNull();
58
+ });
59
+ });
60
+
61
+ describe("getActiveSystemInstructionsByCity", () => {
62
+ it("given city with active instructions when fetched then return only active documents for that city", async () => {
63
+ const result = await getActiveSystemInstructionsByCity(testCity);
64
+ expect(result.length).toBe(1);
65
+ expect(result[0].instruction).toBe("Find Me");
66
+ });
67
+
68
+ it("given city with no instructions when fetched then return empty array", async () => {
69
+ const result =
70
+ await getActiveSystemInstructionsByCity("NonExistentCity");
71
+ expect(result).toEqual([]);
72
+ });
73
+ });
74
+
75
+ describe("getSystemInstructionsByToolAndCity", () => {
76
+ it("given valid city and tool when fetched then return matching instructions", async () => {
77
+ const result = await getSystemInstructionsByToolAndCity(
78
+ testCity,
79
+ MIS_TOOLS.findSubject,
80
+ );
81
+ expect(result.length).toBe(2); // One active, one inactive
82
+ expect(
83
+ result.every(
84
+ (r) => r.cityName === testCity && r.tool === MIS_TOOLS.findSubject,
85
+ ),
86
+ ).toBe(true);
87
+ });
88
+
89
+ it("given valid city but wrong tool when fetched then return empty array", async () => {
90
+ const result = await getSystemInstructionsByToolAndCity(
91
+ testCity,
92
+ MIS_TOOLS.findStreet,
93
+ );
94
+ expect(result).toEqual([]);
95
+ });
96
+ });
97
+
98
+ describe("findSystemInstructions", () => {
99
+ it("given filter by tags when searched then return matching documents", async () => {
100
+ const result = await findSystemInstructions({
101
+ tags: { $in: ["important"] },
102
+ });
103
+ expect(result.length).toBe(1);
104
+ expect(result[0].instruction).toBe("Find Me");
105
+ });
106
+
107
+ it("given empty filter when searched then return all documents", async () => {
108
+ const result = await findSystemInstructions({});
109
+ expect(result.length).toBe(3);
110
+ });
111
+ });
112
+ });
113
+ });