@chanl/scenarios-core 0.4.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 (298) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/e2e/test-helpers.d.ts +79 -0
  3. package/dist/__tests__/e2e/test-helpers.d.ts.map +1 -0
  4. package/dist/__tests__/e2e/test-helpers.js +162 -0
  5. package/dist/__tests__/e2e/test-helpers.js.map +1 -0
  6. package/dist/adapters/adapter-registry.d.ts +14 -0
  7. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  8. package/dist/adapters/adapter-registry.js +53 -0
  9. package/dist/adapters/adapter-registry.js.map +1 -0
  10. package/dist/adapters/agent-adapter.interface.d.ts +70 -0
  11. package/dist/adapters/agent-adapter.interface.d.ts.map +1 -0
  12. package/dist/adapters/agent-adapter.interface.js +3 -0
  13. package/dist/adapters/agent-adapter.interface.js.map +1 -0
  14. package/dist/adapters/anthropic.adapter.d.ts +17 -0
  15. package/dist/adapters/anthropic.adapter.d.ts.map +1 -0
  16. package/dist/adapters/anthropic.adapter.js +145 -0
  17. package/dist/adapters/anthropic.adapter.js.map +1 -0
  18. package/dist/adapters/http.adapter.d.ts +17 -0
  19. package/dist/adapters/http.adapter.d.ts.map +1 -0
  20. package/dist/adapters/http.adapter.js +95 -0
  21. package/dist/adapters/http.adapter.js.map +1 -0
  22. package/dist/adapters/index.d.ts +6 -0
  23. package/dist/adapters/index.d.ts.map +1 -0
  24. package/dist/adapters/index.js +22 -0
  25. package/dist/adapters/index.js.map +1 -0
  26. package/dist/adapters/openai.adapter.d.ts +17 -0
  27. package/dist/adapters/openai.adapter.d.ts.map +1 -0
  28. package/dist/adapters/openai.adapter.js +133 -0
  29. package/dist/adapters/openai.adapter.js.map +1 -0
  30. package/dist/dataset/convert.d.ts +28 -0
  31. package/dist/dataset/convert.d.ts.map +1 -0
  32. package/dist/dataset/convert.js +94 -0
  33. package/dist/dataset/convert.js.map +1 -0
  34. package/dist/dataset/formats/dpo.d.ts +41 -0
  35. package/dist/dataset/formats/dpo.d.ts.map +1 -0
  36. package/dist/dataset/formats/dpo.js +79 -0
  37. package/dist/dataset/formats/dpo.js.map +1 -0
  38. package/dist/dataset/formats/index.d.ts +4 -0
  39. package/dist/dataset/formats/index.d.ts.map +1 -0
  40. package/dist/dataset/formats/index.js +13 -0
  41. package/dist/dataset/formats/index.js.map +1 -0
  42. package/dist/dataset/formats/openai.d.ts +29 -0
  43. package/dist/dataset/formats/openai.d.ts.map +1 -0
  44. package/dist/dataset/formats/openai.js +98 -0
  45. package/dist/dataset/formats/openai.js.map +1 -0
  46. package/dist/dataset/formats/sharegpt.d.ts +31 -0
  47. package/dist/dataset/formats/sharegpt.d.ts.map +1 -0
  48. package/dist/dataset/formats/sharegpt.js +76 -0
  49. package/dist/dataset/formats/sharegpt.js.map +1 -0
  50. package/dist/dataset/index.d.ts +4 -0
  51. package/dist/dataset/index.d.ts.map +1 -0
  52. package/dist/dataset/index.js +20 -0
  53. package/dist/dataset/index.js.map +1 -0
  54. package/dist/dataset/types.d.ts +108 -0
  55. package/dist/dataset/types.d.ts.map +1 -0
  56. package/dist/dataset/types.js +7 -0
  57. package/dist/dataset/types.js.map +1 -0
  58. package/dist/execution/agent-config-resolver.d.ts +44 -0
  59. package/dist/execution/agent-config-resolver.d.ts.map +1 -0
  60. package/dist/execution/agent-config-resolver.js +76 -0
  61. package/dist/execution/agent-config-resolver.js.map +1 -0
  62. package/dist/execution/execution-processor.d.ts +75 -0
  63. package/dist/execution/execution-processor.d.ts.map +1 -0
  64. package/dist/execution/execution-processor.js +569 -0
  65. package/dist/execution/execution-processor.js.map +1 -0
  66. package/dist/execution/execution.module.d.ts +3 -0
  67. package/dist/execution/execution.module.d.ts.map +1 -0
  68. package/dist/execution/execution.module.js +56 -0
  69. package/dist/execution/execution.module.js.map +1 -0
  70. package/dist/execution/execution.service.d.ts +52 -0
  71. package/dist/execution/execution.service.d.ts.map +1 -0
  72. package/dist/execution/execution.service.js +182 -0
  73. package/dist/execution/execution.service.js.map +1 -0
  74. package/dist/execution/index.d.ts +11 -0
  75. package/dist/execution/index.d.ts.map +1 -0
  76. package/dist/execution/index.js +30 -0
  77. package/dist/execution/index.js.map +1 -0
  78. package/dist/execution/interfaces/job-data.interface.d.ts +38 -0
  79. package/dist/execution/interfaces/job-data.interface.d.ts.map +1 -0
  80. package/dist/execution/interfaces/job-data.interface.js +3 -0
  81. package/dist/execution/interfaces/job-data.interface.js.map +1 -0
  82. package/dist/execution/judge-llm.d.ts +35 -0
  83. package/dist/execution/judge-llm.d.ts.map +1 -0
  84. package/dist/execution/judge-llm.js +129 -0
  85. package/dist/execution/judge-llm.js.map +1 -0
  86. package/dist/execution/llm-config-resolver.d.ts +26 -0
  87. package/dist/execution/llm-config-resolver.d.ts.map +1 -0
  88. package/dist/execution/llm-config-resolver.js +99 -0
  89. package/dist/execution/llm-config-resolver.js.map +1 -0
  90. package/dist/execution/persona-llm.d.ts +29 -0
  91. package/dist/execution/persona-llm.d.ts.map +1 -0
  92. package/dist/execution/persona-llm.js +98 -0
  93. package/dist/execution/persona-llm.js.map +1 -0
  94. package/dist/execution/persona-strategy-registry.d.ts +14 -0
  95. package/dist/execution/persona-strategy-registry.d.ts.map +1 -0
  96. package/dist/execution/persona-strategy-registry.js +51 -0
  97. package/dist/execution/persona-strategy-registry.js.map +1 -0
  98. package/dist/execution/persona-strategy.interface.d.ts +88 -0
  99. package/dist/execution/persona-strategy.interface.d.ts.map +1 -0
  100. package/dist/execution/persona-strategy.interface.js +3 -0
  101. package/dist/execution/persona-strategy.interface.js.map +1 -0
  102. package/dist/execution/queue-producer.service.d.ts +21 -0
  103. package/dist/execution/queue-producer.service.d.ts.map +1 -0
  104. package/dist/execution/queue-producer.service.js +60 -0
  105. package/dist/execution/queue-producer.service.js.map +1 -0
  106. package/dist/execution/queues.config.d.ts +39 -0
  107. package/dist/execution/queues.config.d.ts.map +1 -0
  108. package/dist/execution/queues.config.js +43 -0
  109. package/dist/execution/queues.config.js.map +1 -0
  110. package/dist/execution/strategies/default.strategy.d.ts +11 -0
  111. package/dist/execution/strategies/default.strategy.d.ts.map +1 -0
  112. package/dist/execution/strategies/default.strategy.js +31 -0
  113. package/dist/execution/strategies/default.strategy.js.map +1 -0
  114. package/dist/execution/strategies/reactive.strategy.d.ts +28 -0
  115. package/dist/execution/strategies/reactive.strategy.d.ts.map +1 -0
  116. package/dist/execution/strategies/reactive.strategy.js +220 -0
  117. package/dist/execution/strategies/reactive.strategy.js.map +1 -0
  118. package/dist/execution/template-renderer.d.ts +52 -0
  119. package/dist/execution/template-renderer.d.ts.map +1 -0
  120. package/dist/execution/template-renderer.js +90 -0
  121. package/dist/execution/template-renderer.js.map +1 -0
  122. package/dist/generation/index.d.ts +2 -0
  123. package/dist/generation/index.d.ts.map +1 -0
  124. package/dist/generation/index.js +6 -0
  125. package/dist/generation/index.js.map +1 -0
  126. package/dist/generation/scenario-generator.service.d.ts +77 -0
  127. package/dist/generation/scenario-generator.service.d.ts.map +1 -0
  128. package/dist/generation/scenario-generator.service.js +272 -0
  129. package/dist/generation/scenario-generator.service.js.map +1 -0
  130. package/dist/index.d.ts +10 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +27 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/personas/dto/create-persona.dto.d.ts +61 -0
  135. package/dist/personas/dto/create-persona.dto.d.ts.map +1 -0
  136. package/dist/personas/dto/create-persona.dto.js +146 -0
  137. package/dist/personas/dto/create-persona.dto.js.map +1 -0
  138. package/dist/personas/dto/index.d.ts +3 -0
  139. package/dist/personas/dto/index.d.ts.map +1 -0
  140. package/dist/personas/dto/index.js +19 -0
  141. package/dist/personas/dto/index.js.map +1 -0
  142. package/dist/personas/dto/update-persona.dto.d.ts +8 -0
  143. package/dist/personas/dto/update-persona.dto.d.ts.map +1 -0
  144. package/dist/personas/dto/update-persona.dto.js +29 -0
  145. package/dist/personas/dto/update-persona.dto.js.map +1 -0
  146. package/dist/personas/index.d.ts +6 -0
  147. package/dist/personas/index.d.ts.map +1 -0
  148. package/dist/personas/index.js +22 -0
  149. package/dist/personas/index.js.map +1 -0
  150. package/dist/personas/persona.controller.d.ts +69 -0
  151. package/dist/personas/persona.controller.d.ts.map +1 -0
  152. package/dist/personas/persona.controller.js +282 -0
  153. package/dist/personas/persona.controller.js.map +1 -0
  154. package/dist/personas/persona.module.d.ts +3 -0
  155. package/dist/personas/persona.module.d.ts.map +1 -0
  156. package/dist/personas/persona.module.js +28 -0
  157. package/dist/personas/persona.module.js.map +1 -0
  158. package/dist/personas/persona.service.d.ts +85 -0
  159. package/dist/personas/persona.service.d.ts.map +1 -0
  160. package/dist/personas/persona.service.js +382 -0
  161. package/dist/personas/persona.service.js.map +1 -0
  162. package/dist/personas/schemas/persona.schema.d.ts +90 -0
  163. package/dist/personas/schemas/persona.schema.d.ts.map +1 -0
  164. package/dist/personas/schemas/persona.schema.js +321 -0
  165. package/dist/personas/schemas/persona.schema.js.map +1 -0
  166. package/dist/scenarios/controllers/scenario-execution.controller.d.ts +48 -0
  167. package/dist/scenarios/controllers/scenario-execution.controller.d.ts.map +1 -0
  168. package/dist/scenarios/controllers/scenario-execution.controller.js +260 -0
  169. package/dist/scenarios/controllers/scenario-execution.controller.js.map +1 -0
  170. package/dist/scenarios/controllers/scenario.controller.d.ts +81 -0
  171. package/dist/scenarios/controllers/scenario.controller.d.ts.map +1 -0
  172. package/dist/scenarios/controllers/scenario.controller.js +345 -0
  173. package/dist/scenarios/controllers/scenario.controller.js.map +1 -0
  174. package/dist/scenarios/dto/create-scenario.dto.d.ts +31 -0
  175. package/dist/scenarios/dto/create-scenario.dto.d.ts.map +1 -0
  176. package/dist/scenarios/dto/create-scenario.dto.js +102 -0
  177. package/dist/scenarios/dto/create-scenario.dto.js.map +1 -0
  178. package/dist/scenarios/dto/execute-scenario.dto.d.ts +34 -0
  179. package/dist/scenarios/dto/execute-scenario.dto.d.ts.map +1 -0
  180. package/dist/scenarios/dto/execute-scenario.dto.js +150 -0
  181. package/dist/scenarios/dto/execute-scenario.dto.js.map +1 -0
  182. package/dist/scenarios/dto/index.d.ts +4 -0
  183. package/dist/scenarios/dto/index.d.ts.map +1 -0
  184. package/dist/scenarios/dto/index.js +20 -0
  185. package/dist/scenarios/dto/index.js.map +1 -0
  186. package/dist/scenarios/dto/update-scenario.dto.d.ts +6 -0
  187. package/dist/scenarios/dto/update-scenario.dto.d.ts.map +1 -0
  188. package/dist/scenarios/dto/update-scenario.dto.js +9 -0
  189. package/dist/scenarios/dto/update-scenario.dto.js.map +1 -0
  190. package/dist/scenarios/index.d.ts +9 -0
  191. package/dist/scenarios/index.d.ts.map +1 -0
  192. package/dist/scenarios/index.js +25 -0
  193. package/dist/scenarios/index.js.map +1 -0
  194. package/dist/scenarios/scenario.module.d.ts +3 -0
  195. package/dist/scenarios/scenario.module.d.ts.map +1 -0
  196. package/dist/scenarios/scenario.module.js +42 -0
  197. package/dist/scenarios/scenario.module.js.map +1 -0
  198. package/dist/scenarios/schemas/scenario-execution.schema.d.ts +133 -0
  199. package/dist/scenarios/schemas/scenario-execution.schema.d.ts.map +1 -0
  200. package/dist/scenarios/schemas/scenario-execution.schema.js +292 -0
  201. package/dist/scenarios/schemas/scenario-execution.schema.js.map +1 -0
  202. package/dist/scenarios/schemas/scenario.schema.d.ts +106 -0
  203. package/dist/scenarios/schemas/scenario.schema.d.ts.map +1 -0
  204. package/dist/scenarios/schemas/scenario.schema.js +205 -0
  205. package/dist/scenarios/schemas/scenario.schema.js.map +1 -0
  206. package/dist/scenarios/services/scenario-execution.service.d.ts +73 -0
  207. package/dist/scenarios/services/scenario-execution.service.d.ts.map +1 -0
  208. package/dist/scenarios/services/scenario-execution.service.js +505 -0
  209. package/dist/scenarios/services/scenario-execution.service.js.map +1 -0
  210. package/dist/scenarios/services/scenario.service.d.ts +110 -0
  211. package/dist/scenarios/services/scenario.service.d.ts.map +1 -0
  212. package/dist/scenarios/services/scenario.service.js +608 -0
  213. package/dist/scenarios/services/scenario.service.js.map +1 -0
  214. package/dist/simulator/index.d.ts +2 -0
  215. package/dist/simulator/index.d.ts.map +1 -0
  216. package/dist/simulator/index.js +18 -0
  217. package/dist/simulator/index.js.map +1 -0
  218. package/dist/simulator/persona-simulator.service.d.ts +81 -0
  219. package/dist/simulator/persona-simulator.service.d.ts.map +1 -0
  220. package/dist/simulator/persona-simulator.service.js +358 -0
  221. package/dist/simulator/persona-simulator.service.js.map +1 -0
  222. package/dist/templates/dto/create-template.dto.d.ts +16 -0
  223. package/dist/templates/dto/create-template.dto.d.ts.map +1 -0
  224. package/dist/templates/dto/create-template.dto.js +75 -0
  225. package/dist/templates/dto/create-template.dto.js.map +1 -0
  226. package/dist/templates/dto/index.d.ts +4 -0
  227. package/dist/templates/dto/index.d.ts.map +1 -0
  228. package/dist/templates/dto/index.js +10 -0
  229. package/dist/templates/dto/index.js.map +1 -0
  230. package/dist/templates/dto/instantiate-template.dto.d.ts +7 -0
  231. package/dist/templates/dto/instantiate-template.dto.d.ts.map +1 -0
  232. package/dist/templates/dto/instantiate-template.dto.js +38 -0
  233. package/dist/templates/dto/instantiate-template.dto.js.map +1 -0
  234. package/dist/templates/dto/update-template.dto.d.ts +6 -0
  235. package/dist/templates/dto/update-template.dto.d.ts.map +1 -0
  236. package/dist/templates/dto/update-template.dto.js +9 -0
  237. package/dist/templates/dto/update-template.dto.js.map +1 -0
  238. package/dist/templates/index.d.ts +6 -0
  239. package/dist/templates/index.d.ts.map +1 -0
  240. package/dist/templates/index.js +22 -0
  241. package/dist/templates/index.js.map +1 -0
  242. package/dist/templates/scenario-template.controller.d.ts +42 -0
  243. package/dist/templates/scenario-template.controller.d.ts.map +1 -0
  244. package/dist/templates/scenario-template.controller.js +148 -0
  245. package/dist/templates/scenario-template.controller.js.map +1 -0
  246. package/dist/templates/scenario-template.module.d.ts +3 -0
  247. package/dist/templates/scenario-template.module.d.ts.map +1 -0
  248. package/dist/templates/scenario-template.module.js +30 -0
  249. package/dist/templates/scenario-template.module.js.map +1 -0
  250. package/dist/templates/scenario-template.service.d.ts +50 -0
  251. package/dist/templates/scenario-template.service.d.ts.map +1 -0
  252. package/dist/templates/scenario-template.service.js +497 -0
  253. package/dist/templates/scenario-template.service.js.map +1 -0
  254. package/dist/templates/schemas/scenario-template.schema.d.ts +59 -0
  255. package/dist/templates/schemas/scenario-template.schema.d.ts.map +1 -0
  256. package/dist/templates/schemas/scenario-template.schema.js +132 -0
  257. package/dist/templates/schemas/scenario-template.schema.js.map +1 -0
  258. package/dist/tool-fixtures/dto/create-tool-fixture.dto.d.ts +18 -0
  259. package/dist/tool-fixtures/dto/create-tool-fixture.dto.d.ts.map +1 -0
  260. package/dist/tool-fixtures/dto/create-tool-fixture.dto.js +46 -0
  261. package/dist/tool-fixtures/dto/create-tool-fixture.dto.js.map +1 -0
  262. package/dist/tool-fixtures/dto/index.d.ts +4 -0
  263. package/dist/tool-fixtures/dto/index.d.ts.map +1 -0
  264. package/dist/tool-fixtures/dto/index.js +20 -0
  265. package/dist/tool-fixtures/dto/index.js.map +1 -0
  266. package/dist/tool-fixtures/dto/tool-fixture-filter.dto.d.ts +6 -0
  267. package/dist/tool-fixtures/dto/tool-fixture-filter.dto.d.ts.map +1 -0
  268. package/dist/tool-fixtures/dto/tool-fixture-filter.dto.js +33 -0
  269. package/dist/tool-fixtures/dto/tool-fixture-filter.dto.js.map +1 -0
  270. package/dist/tool-fixtures/dto/update-tool-fixture.dto.d.ts +6 -0
  271. package/dist/tool-fixtures/dto/update-tool-fixture.dto.d.ts.map +1 -0
  272. package/dist/tool-fixtures/dto/update-tool-fixture.dto.js +9 -0
  273. package/dist/tool-fixtures/dto/update-tool-fixture.dto.js.map +1 -0
  274. package/dist/tool-fixtures/index.d.ts +7 -0
  275. package/dist/tool-fixtures/index.d.ts.map +1 -0
  276. package/dist/tool-fixtures/index.js +23 -0
  277. package/dist/tool-fixtures/index.js.map +1 -0
  278. package/dist/tool-fixtures/mock-resolver.service.d.ts +48 -0
  279. package/dist/tool-fixtures/mock-resolver.service.d.ts.map +1 -0
  280. package/dist/tool-fixtures/mock-resolver.service.js +99 -0
  281. package/dist/tool-fixtures/mock-resolver.service.js.map +1 -0
  282. package/dist/tool-fixtures/schemas/tool-fixture.schema.d.ts +35 -0
  283. package/dist/tool-fixtures/schemas/tool-fixture.schema.d.ts.map +1 -0
  284. package/dist/tool-fixtures/schemas/tool-fixture.schema.js +87 -0
  285. package/dist/tool-fixtures/schemas/tool-fixture.schema.js.map +1 -0
  286. package/dist/tool-fixtures/tool-fixture.controller.d.ts +45 -0
  287. package/dist/tool-fixtures/tool-fixture.controller.d.ts.map +1 -0
  288. package/dist/tool-fixtures/tool-fixture.controller.js +223 -0
  289. package/dist/tool-fixtures/tool-fixture.controller.js.map +1 -0
  290. package/dist/tool-fixtures/tool-fixture.module.d.ts +3 -0
  291. package/dist/tool-fixtures/tool-fixture.module.d.ts.map +1 -0
  292. package/dist/tool-fixtures/tool-fixture.module.js +31 -0
  293. package/dist/tool-fixtures/tool-fixture.module.js.map +1 -0
  294. package/dist/tool-fixtures/tool-fixture.service.d.ts +59 -0
  295. package/dist/tool-fixtures/tool-fixture.service.d.ts.map +1 -0
  296. package/dist/tool-fixtures/tool-fixture.service.js +198 -0
  297. package/dist/tool-fixtures/tool-fixture.service.js.map +1 -0
  298. package/package.json +47 -0
@@ -0,0 +1,382 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var PersonaService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.PersonaService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const mongoose_1 = require("@nestjs/mongoose");
19
+ const mongoose_2 = require("mongoose");
20
+ const persona_schema_1 = require("./schemas/persona.schema");
21
+ let PersonaService = PersonaService_1 = class PersonaService {
22
+ constructor(personaModel) {
23
+ this.personaModel = personaModel;
24
+ this.logger = new common_1.Logger(PersonaService_1.name);
25
+ }
26
+ /**
27
+ * Create a new persona.
28
+ */
29
+ async create(createPersonaDto, createdBy) {
30
+ try {
31
+ const data = {
32
+ ...createPersonaDto,
33
+ createdBy: createdBy || 'local',
34
+ };
35
+ const persona = new this.personaModel(data);
36
+ return await persona.save();
37
+ }
38
+ catch (error) {
39
+ this.logger.error(`Failed to create persona: ${error.message}`, error.stack);
40
+ throw error;
41
+ }
42
+ }
43
+ /**
44
+ * Find all personas with optional filters.
45
+ */
46
+ async findAll(filters, pagination) {
47
+ try {
48
+ const query = {};
49
+ // Apply filters
50
+ if (filters) {
51
+ if (filters.emotion)
52
+ query.emotion = filters.emotion;
53
+ if (filters.language)
54
+ query.language = filters.language;
55
+ if (filters.gender)
56
+ query.gender = filters.gender;
57
+ if (filters.accent)
58
+ query.accent = filters.accent;
59
+ if (filters.isActive !== undefined)
60
+ query.isActive = filters.isActive;
61
+ if (filters.isDefault !== undefined)
62
+ query.isDefault = filters.isDefault;
63
+ if (filters.tags && filters.tags.length > 0)
64
+ query.tags = { $in: filters.tags };
65
+ if (filters.createdBy)
66
+ query.createdBy = filters.createdBy;
67
+ }
68
+ // Build the query
69
+ let queryBuilder = this.personaModel.find(query);
70
+ // Apply sorting
71
+ const sortBy = pagination?.sortBy || 'updatedAt';
72
+ const sortOrder = pagination?.sortOrder === 'asc' ? 1 : -1;
73
+ queryBuilder = queryBuilder.sort({ [sortBy]: sortOrder });
74
+ // Apply pagination
75
+ if (pagination?.offset)
76
+ queryBuilder = queryBuilder.skip(pagination.offset);
77
+ if (pagination?.limit)
78
+ queryBuilder = queryBuilder.limit(pagination.limit);
79
+ const personas = await queryBuilder.exec();
80
+ const total = await this.personaModel.countDocuments(query);
81
+ return { personas, total };
82
+ }
83
+ catch (error) {
84
+ this.logger.error(`Failed to find personas: ${error.message}`, error.stack);
85
+ throw error;
86
+ }
87
+ }
88
+ /**
89
+ * Find persona by ID
90
+ */
91
+ async findOne(id) {
92
+ try {
93
+ const persona = await this.personaModel.findById(id);
94
+ if (!persona) {
95
+ throw new common_1.NotFoundException(`Persona with ID ${id} not found`);
96
+ }
97
+ return persona;
98
+ }
99
+ catch (error) {
100
+ if (error instanceof common_1.NotFoundException) {
101
+ throw error;
102
+ }
103
+ this.logger.error(`Failed to find persona: ${error.message}`, error.stack);
104
+ throw error;
105
+ }
106
+ }
107
+ /**
108
+ * Update a persona using findByIdAndUpdate
109
+ */
110
+ async update(id, updatePersonaDto) {
111
+ try {
112
+ const updateQuery = {
113
+ ...updatePersonaDto,
114
+ updatedAt: new Date(),
115
+ };
116
+ const persona = await this.personaModel.findByIdAndUpdate(id, updateQuery, { new: true });
117
+ if (!persona) {
118
+ throw new common_1.NotFoundException(`Persona with ID ${id} not found`);
119
+ }
120
+ return persona;
121
+ }
122
+ catch (error) {
123
+ if (error instanceof common_1.NotFoundException) {
124
+ throw error;
125
+ }
126
+ this.logger.error(`Failed to update persona: ${error.message}`, error.stack);
127
+ throw error;
128
+ }
129
+ }
130
+ /**
131
+ * Delete a persona
132
+ */
133
+ async remove(id) {
134
+ try {
135
+ const result = await this.personaModel.findByIdAndDelete(id);
136
+ if (!result) {
137
+ throw new common_1.NotFoundException(`Persona with ID ${id} not found`);
138
+ }
139
+ }
140
+ catch (error) {
141
+ if (error instanceof common_1.NotFoundException) {
142
+ throw error;
143
+ }
144
+ this.logger.error(`Failed to delete persona: ${error.message}`, error.stack);
145
+ throw error;
146
+ }
147
+ }
148
+ /**
149
+ * Get default personas, optionally filtered by workspace.
150
+ */
151
+ async getDefaultPersonas() {
152
+ try {
153
+ const query = {
154
+ isDefault: true,
155
+ isActive: true,
156
+ };
157
+ return await this.personaModel.find(query).exec();
158
+ }
159
+ catch (error) {
160
+ this.logger.error(`Failed to get default personas: ${error.message}`, error.stack);
161
+ throw error;
162
+ }
163
+ }
164
+ /**
165
+ * Create default personas. Idempotent -- skips if defaults already exist.
166
+ */
167
+ async createDefaultPersonas(createdBy) {
168
+ try {
169
+ const existingDefaults = await this.getDefaultPersonas();
170
+ if (existingDefaults.length > 0) {
171
+ return existingDefaults;
172
+ }
173
+ const defaultPersonas = [
174
+ {
175
+ name: 'Angry - Karen',
176
+ description: 'Frustrated customer with demanding tone',
177
+ gender: 'female',
178
+ emotion: 'irritated',
179
+ language: 'english',
180
+ accent: 'british',
181
+ intentClarity: 'slightly unclear',
182
+ speechStyle: 'normal',
183
+ backgroundNoise: false,
184
+ allowInterruptions: false,
185
+ tags: ['customer-service', 'complaint', 'urgent'],
186
+ isDefault: true,
187
+ isActive: true,
188
+ createdBy,
189
+ },
190
+ {
191
+ name: 'Friendly - Sophia',
192
+ description: 'Warm and welcoming customer service representative',
193
+ gender: 'female',
194
+ emotion: 'friendly',
195
+ language: 'english',
196
+ accent: 'american',
197
+ intentClarity: 'very clear',
198
+ speechStyle: 'slow',
199
+ backgroundNoise: false,
200
+ allowInterruptions: true,
201
+ tags: ['customer-service', 'helpful', 'patient'],
202
+ isDefault: true,
203
+ isActive: true,
204
+ createdBy,
205
+ },
206
+ {
207
+ name: 'Polite - Carlos',
208
+ description: 'Professional and courteous customer',
209
+ gender: 'male',
210
+ emotion: 'polite',
211
+ language: 'spanish',
212
+ accent: 'mexican',
213
+ intentClarity: 'very clear',
214
+ speechStyle: 'normal',
215
+ backgroundNoise: false,
216
+ allowInterruptions: false,
217
+ tags: ['professional', 'courteous', 'spanish'],
218
+ isDefault: true,
219
+ isActive: true,
220
+ createdBy,
221
+ },
222
+ {
223
+ name: 'Stressed - Mei',
224
+ description: 'Overwhelmed customer with urgent needs',
225
+ gender: 'female',
226
+ emotion: 'stressed',
227
+ language: 'english',
228
+ accent: 'american',
229
+ intentClarity: 'slightly unclear',
230
+ speechStyle: 'fast',
231
+ backgroundNoise: true,
232
+ allowInterruptions: true,
233
+ tags: ['urgent', 'overwhelmed', 'time-sensitive'],
234
+ isDefault: true,
235
+ isActive: true,
236
+ createdBy,
237
+ },
238
+ {
239
+ name: 'Distracted - Alex',
240
+ description: 'Customer who seems preoccupied and unfocused',
241
+ gender: 'male',
242
+ emotion: 'distracted',
243
+ language: 'english',
244
+ accent: 'canadian',
245
+ intentClarity: 'mumbled',
246
+ speechStyle: 'moderate',
247
+ backgroundNoise: true,
248
+ allowInterruptions: true,
249
+ tags: ['distracted', 'unfocused', 'multitasking'],
250
+ isDefault: true,
251
+ isActive: true,
252
+ createdBy,
253
+ },
254
+ {
255
+ name: 'Calm - James',
256
+ description: 'Relaxed and composed customer',
257
+ gender: 'male',
258
+ emotion: 'calm',
259
+ language: 'english',
260
+ accent: 'american',
261
+ intentClarity: 'very clear',
262
+ speechStyle: 'slow',
263
+ backgroundNoise: false,
264
+ allowInterruptions: false,
265
+ tags: ['calm', 'patient', 'composed'],
266
+ isDefault: true,
267
+ isActive: true,
268
+ createdBy,
269
+ },
270
+ {
271
+ name: 'Curious - Maria',
272
+ description: 'Inquisitive customer asking many questions',
273
+ gender: 'female',
274
+ emotion: 'curious',
275
+ language: 'portuguese',
276
+ accent: 'brazilian',
277
+ intentClarity: 'very clear',
278
+ speechStyle: 'normal',
279
+ backgroundNoise: false,
280
+ allowInterruptions: true,
281
+ tags: ['inquisitive', 'questions', 'portuguese'],
282
+ isDefault: true,
283
+ isActive: true,
284
+ createdBy,
285
+ },
286
+ ];
287
+ const insertData = defaultPersonas.map((persona) => ({
288
+ ...persona,
289
+ createdAt: new Date(),
290
+ updatedAt: new Date(),
291
+ }));
292
+ const personas = (await this.personaModel.insertMany(insertData));
293
+ this.logger.log(`Created ${personas.length} default personas`);
294
+ return personas;
295
+ }
296
+ catch (error) {
297
+ this.logger.error(`Failed to create default personas: ${error.message}`, error.stack);
298
+ throw error;
299
+ }
300
+ }
301
+ /**
302
+ * Get persona statistics, optionally filtered by workspace.
303
+ */
304
+ async getPersonaStats() {
305
+ try {
306
+ const stats = await this.personaModel.aggregate([
307
+ { $match: {} },
308
+ {
309
+ $group: {
310
+ _id: null,
311
+ total: { $sum: 1 },
312
+ byEmotion: {
313
+ $push: {
314
+ emotion: '$emotion',
315
+ count: 1,
316
+ },
317
+ },
318
+ byLanguage: {
319
+ $push: {
320
+ language: '$language',
321
+ count: 1,
322
+ },
323
+ },
324
+ byGender: {
325
+ $push: {
326
+ gender: '$gender',
327
+ count: 1,
328
+ },
329
+ },
330
+ byAccent: {
331
+ $push: {
332
+ accent: '$accent',
333
+ count: 1,
334
+ },
335
+ },
336
+ active: { $sum: { $cond: ['$isActive', 1, 0] } },
337
+ defaults: { $sum: { $cond: ['$isDefault', 1, 0] } },
338
+ withBackgroundNoise: {
339
+ $sum: { $cond: ['$backgroundNoise', 1, 0] },
340
+ },
341
+ withInterruptions: {
342
+ $sum: { $cond: ['$allowInterruptions', 1, 0] },
343
+ },
344
+ },
345
+ },
346
+ ]);
347
+ const baseStats = stats[0] || {
348
+ total: 0,
349
+ byEmotion: [],
350
+ byLanguage: [],
351
+ byGender: [],
352
+ byAccent: [],
353
+ active: 0,
354
+ defaults: 0,
355
+ withBackgroundNoise: 0,
356
+ withInterruptions: 0,
357
+ };
358
+ // Count distinct languages from byLanguage array
359
+ const distinctLanguages = new Set(baseStats.byLanguage.map((item) => item.language)).size;
360
+ return {
361
+ // New standardized field names per API spec
362
+ totalPersonas: baseStats.total,
363
+ activePersonas: baseStats.active,
364
+ languages: distinctLanguages,
365
+ defaultPersonas: baseStats.defaults,
366
+ // Legacy fields for backward compatibility
367
+ ...baseStats,
368
+ };
369
+ }
370
+ catch (error) {
371
+ this.logger.error(`Failed to get persona stats: ${error.message}`, error.stack);
372
+ throw error;
373
+ }
374
+ }
375
+ };
376
+ exports.PersonaService = PersonaService;
377
+ exports.PersonaService = PersonaService = PersonaService_1 = __decorate([
378
+ (0, common_1.Injectable)(),
379
+ __param(0, (0, mongoose_1.InjectModel)(persona_schema_1.Persona.name)),
380
+ __metadata("design:paramtypes", [mongoose_2.Model])
381
+ ], PersonaService);
382
+ //# sourceMappingURL=persona.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona.service.js","sourceRoot":"","sources":["../../src/personas/persona.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { Document, Types } from 'mongoose';
2
+ export type PersonaDocument = Persona & Document;
3
+ export declare class Persona {
4
+ name: string;
5
+ gender: string;
6
+ emotion: string;
7
+ language: string;
8
+ accent: string;
9
+ intentClarity: string;
10
+ speechStyle: string;
11
+ backgroundNoise: boolean;
12
+ allowInterruptions: boolean;
13
+ description?: string;
14
+ backstory?: string;
15
+ voice?: {
16
+ gender?: string;
17
+ age?: string;
18
+ accent?: string;
19
+ clarity?: string;
20
+ pace?: string;
21
+ volume?: string;
22
+ tone?: string;
23
+ voiceId?: string;
24
+ provider?: string;
25
+ };
26
+ behavior?: {
27
+ personality?: string;
28
+ emotionalState?: string;
29
+ cooperationLevel?: string;
30
+ patience?: string;
31
+ communicationStyle?: string;
32
+ };
33
+ conversationTraits?: {
34
+ allowInterruptions?: boolean;
35
+ interruptionFrequency?: string;
36
+ asksClarifyingQuestions?: boolean;
37
+ repeatsInformation?: boolean;
38
+ goesOffTopic?: boolean;
39
+ };
40
+ environment?: {
41
+ backgroundNoise?: boolean;
42
+ noiseType?: string;
43
+ connectionQuality?: string;
44
+ };
45
+ variables: Record<string, string> | Array<{
46
+ key: string;
47
+ label: string;
48
+ type: 'text' | 'number' | 'date' | 'boolean' | 'select';
49
+ defaultValue?: any;
50
+ required: boolean;
51
+ options?: string[];
52
+ description?: string;
53
+ }>;
54
+ voiceId?: string;
55
+ voiceProvider?: string;
56
+ /**
57
+ * Optional agent reference for persona-as-agent pattern.
58
+ * When set, this persona can act as an agent in text/voice conversations.
59
+ */
60
+ agentId?: Types.ObjectId;
61
+ /**
62
+ * Persona-specific agent configuration for testing scenarios.
63
+ * Used when persona acts as an agent in conversations.
64
+ */
65
+ agentConfig?: {
66
+ promptTemplate?: string;
67
+ voice?: {
68
+ voiceId?: string;
69
+ provider?: 'elevenlabs' | 'azure' | 'google' | 'cartesia';
70
+ };
71
+ behavior?: {
72
+ interruptionFrequency?: 'never' | 'rare' | 'frequent';
73
+ responseSpeed?: 'slow' | 'normal' | 'fast';
74
+ verbosity?: 'terse' | 'normal' | 'verbose';
75
+ };
76
+ };
77
+ tags: string[];
78
+ isActive: boolean;
79
+ isDefault: boolean;
80
+ createdBy: string;
81
+ lastModifiedBy?: string;
82
+ createdAt: Date;
83
+ updatedAt: Date;
84
+ }
85
+ export declare const PersonaSchema: import("mongoose").Schema<Persona, import("mongoose").Model<Persona, any, any, any, Document<unknown, any, Persona> & Persona & {
86
+ _id: Types.ObjectId;
87
+ }, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, Persona, Document<unknown, {}, import("mongoose").FlatRecord<Persona>> & import("mongoose").FlatRecord<Persona> & {
88
+ _id: Types.ObjectId;
89
+ }>;
90
+ //# sourceMappingURL=persona.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona.schema.d.ts","sourceRoot":"","sources":["../../../src/personas/schemas/persona.schema.ts"],"names":[],"mappings":"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"}