@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,98 @@
1
+ "use strict";
2
+ /**
3
+ * OpenAI Chat Completion fine-tuning format.
4
+ *
5
+ * Produces JSONL where each line is:
6
+ * {"messages": [{"role": "system", ...}, {"role": "user", ...}, {"role": "assistant", ...}]}
7
+ *
8
+ * With tools (openai-tools format), also includes:
9
+ * {"tools": [...], "messages": [...assistant with tool_calls..., ...tool results...]}
10
+ *
11
+ * Compatible with: OpenAI, Together AI, Fireworks, Axolotl, Unsloth, LLaMA Factory.
12
+ *
13
+ * Spec: https://platform.openai.com/docs/guides/supervised-fine-tuning
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.toOpenAIChat = toOpenAIChat;
17
+ exports.toOpenAIChatJsonl = toOpenAIChatJsonl;
18
+ /**
19
+ * Convert a ConversationRecord to an OpenAI fine-tuning JSONL line.
20
+ */
21
+ function toOpenAIChat(record, options = {}) {
22
+ const includeTools = options.includeTools ?? false;
23
+ const systemPrompt = options.systemPrompt !== undefined
24
+ ? options.systemPrompt
25
+ : record.systemPrompt;
26
+ const messages = [];
27
+ // System prompt
28
+ if (systemPrompt) {
29
+ messages.push({ role: 'system', content: systemPrompt });
30
+ }
31
+ for (const msg of record.messages) {
32
+ if (msg.role === 'user') {
33
+ messages.push({ role: 'user', content: msg.content });
34
+ continue;
35
+ }
36
+ if (msg.role === 'assistant') {
37
+ if (msg.toolCalls?.length && includeTools) {
38
+ // Assistant message with tool calls — no text content per OpenAI spec
39
+ messages.push({
40
+ role: 'assistant',
41
+ content: msg.content || undefined,
42
+ tool_calls: msg.toolCalls.map((tc) => ({
43
+ id: tc.id,
44
+ type: 'function',
45
+ function: {
46
+ name: tc.name,
47
+ // OpenAI requires arguments as JSON STRING, not object
48
+ arguments: JSON.stringify(tc.arguments),
49
+ },
50
+ })),
51
+ });
52
+ }
53
+ else if (msg.toolCalls?.length && !includeTools) {
54
+ // Strip tool calls — skip this message (tool interaction hidden)
55
+ // The next text-only assistant message will be included
56
+ if (msg.content) {
57
+ messages.push({ role: 'assistant', content: msg.content });
58
+ }
59
+ }
60
+ else {
61
+ messages.push({ role: 'assistant', content: msg.content });
62
+ }
63
+ continue;
64
+ }
65
+ if (msg.role === 'tool' && includeTools) {
66
+ messages.push({
67
+ role: 'tool',
68
+ content: msg.content,
69
+ tool_call_id: msg.toolCallId,
70
+ });
71
+ continue;
72
+ }
73
+ // Skip tool messages when not including tools
74
+ }
75
+ // Strip tool-call-only assistant messages that have no content and no tool_calls
76
+ // (happens when includeTools=false strips tool_calls from empty assistant msgs)
77
+ const cleaned = messages.filter((m) => m.content || m.tool_calls?.length);
78
+ const line = { messages: cleaned };
79
+ // Add tool definitions when including tools
80
+ if (includeTools && record.tools?.length) {
81
+ line.tools = record.tools.map((t) => ({
82
+ type: 'function',
83
+ function: {
84
+ name: t.name,
85
+ description: t.description,
86
+ parameters: t.parameters,
87
+ },
88
+ }));
89
+ }
90
+ return line;
91
+ }
92
+ /**
93
+ * Serialize to JSONL string (one line).
94
+ */
95
+ function toOpenAIChatJsonl(record, options = {}) {
96
+ return JSON.stringify(toOpenAIChat(record, options));
97
+ }
98
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/dataset/formats/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * ShareGPT format converter.
3
+ *
4
+ * Produces JSON where each conversation is:
5
+ * {"conversations": [{"from": "system", "value": "..."}, {"from": "human", "value": "..."}, {"from": "gpt", "value": "..."}]}
6
+ *
7
+ * Compatible with: LLaMA Factory, older Axolotl configs, many HuggingFace datasets.
8
+ *
9
+ * Note: ShareGPT doesn't have a standard way to represent tool calls.
10
+ * Tool interactions are either omitted or inlined as text in the assistant message.
11
+ */
12
+ import type { ConversationRecord, ShareGPTLine } from '../types';
13
+ export interface ShareGPTFormatOptions {
14
+ /** Override system prompt. Pass null to omit. */
15
+ systemPrompt?: string | null;
16
+ /**
17
+ * How to handle tool call messages.
18
+ * - 'omit': skip tool interactions entirely (default)
19
+ * - 'inline': include tool calls as formatted text in assistant messages
20
+ */
21
+ toolHandling?: 'omit' | 'inline';
22
+ }
23
+ /**
24
+ * Convert a ConversationRecord to ShareGPT format.
25
+ */
26
+ export declare function toShareGPT(record: ConversationRecord, options?: ShareGPTFormatOptions): ShareGPTLine;
27
+ /**
28
+ * Serialize to JSON string (one line for JSONL, or pretty for JSON array).
29
+ */
30
+ export declare function toShareGPTJsonl(record: ConversationRecord, options?: ShareGPTFormatOptions): string;
31
+ //# sourceMappingURL=sharegpt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharegpt.d.ts","sourceRoot":"","sources":["../../../src/dataset/formats/sharegpt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,YAAY,CAwDd;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAER"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * ShareGPT format converter.
4
+ *
5
+ * Produces JSON where each conversation is:
6
+ * {"conversations": [{"from": "system", "value": "..."}, {"from": "human", "value": "..."}, {"from": "gpt", "value": "..."}]}
7
+ *
8
+ * Compatible with: LLaMA Factory, older Axolotl configs, many HuggingFace datasets.
9
+ *
10
+ * Note: ShareGPT doesn't have a standard way to represent tool calls.
11
+ * Tool interactions are either omitted or inlined as text in the assistant message.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.toShareGPT = toShareGPT;
15
+ exports.toShareGPTJsonl = toShareGPTJsonl;
16
+ /**
17
+ * Convert a ConversationRecord to ShareGPT format.
18
+ */
19
+ function toShareGPT(record, options = {}) {
20
+ const systemPrompt = options.systemPrompt !== undefined
21
+ ? options.systemPrompt
22
+ : record.systemPrompt;
23
+ const toolHandling = options.toolHandling ?? 'omit';
24
+ const conversations = [];
25
+ // System prompt
26
+ if (systemPrompt) {
27
+ conversations.push({ from: 'system', value: systemPrompt });
28
+ }
29
+ for (const msg of record.messages) {
30
+ if (msg.role === 'user') {
31
+ conversations.push({ from: 'human', value: msg.content });
32
+ continue;
33
+ }
34
+ if (msg.role === 'assistant') {
35
+ if (msg.toolCalls?.length && toolHandling === 'inline') {
36
+ // Inline tool calls as text
37
+ const toolText = msg.toolCalls
38
+ .map((tc) => `[Tool Call: ${tc.name}(${JSON.stringify(tc.arguments)})]`)
39
+ .join('\n');
40
+ const content = msg.content
41
+ ? `${msg.content}\n${toolText}`
42
+ : toolText;
43
+ conversations.push({ from: 'gpt', value: content });
44
+ }
45
+ else if (msg.toolCalls?.length && toolHandling === 'omit') {
46
+ // Skip tool-call-only assistant messages
47
+ if (msg.content) {
48
+ conversations.push({ from: 'gpt', value: msg.content });
49
+ }
50
+ }
51
+ else {
52
+ conversations.push({ from: 'gpt', value: msg.content });
53
+ }
54
+ continue;
55
+ }
56
+ if (msg.role === 'tool' && toolHandling === 'inline') {
57
+ // Inline tool results
58
+ conversations.push({
59
+ from: 'tool',
60
+ value: msg.content,
61
+ });
62
+ continue;
63
+ }
64
+ // Skip tool messages when omitting
65
+ }
66
+ // Ensure alternating human/gpt by removing empty entries
67
+ const cleaned = conversations.filter((c) => c.value);
68
+ return { conversations: cleaned };
69
+ }
70
+ /**
71
+ * Serialize to JSON string (one line for JSONL, or pretty for JSON array).
72
+ */
73
+ function toShareGPTJsonl(record, options = {}) {
74
+ return JSON.stringify(toShareGPT(record, options));
75
+ }
76
+ //# sourceMappingURL=sharegpt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharegpt.js","sourceRoot":"","sources":["../../../src/dataset/formats/sharegpt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './convert';
3
+ export * from './formats';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dataset/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./convert"), exports);
19
+ __exportStar(require("./formats"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dataset/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Dataset export types for converting execution transcripts
3
+ * into training data formats (OpenAI, ShareGPT, DPO).
4
+ */
5
+ export interface ConversationMessage {
6
+ role: 'user' | 'assistant' | 'tool';
7
+ content: string;
8
+ /** Present on assistant messages that invoked tools */
9
+ toolCalls?: Array<{
10
+ id: string;
11
+ name: string;
12
+ arguments: Record<string, any>;
13
+ }>;
14
+ /** Present on tool-result messages — references the tool call ID */
15
+ toolCallId?: string;
16
+ }
17
+ import type { ToolDefinition } from '../adapters/agent-adapter.interface';
18
+ export type { ToolDefinition };
19
+ export interface ConversationMetadata {
20
+ executionId: string;
21
+ scenarioId: string;
22
+ personaId?: string;
23
+ score?: number;
24
+ turnCount: number;
25
+ duration?: number;
26
+ tags?: string[];
27
+ personaTraits?: Record<string, any>;
28
+ scenarioName?: string;
29
+ personaName?: string;
30
+ }
31
+ export interface ConversationRecord {
32
+ messages: ConversationMessage[];
33
+ systemPrompt?: string;
34
+ tools?: ToolDefinition[];
35
+ metadata: ConversationMetadata;
36
+ }
37
+ export type ExportFormat = 'openai' | 'openai-tools' | 'sharegpt' | 'dpo';
38
+ export interface ExportOptions {
39
+ format: ExportFormat;
40
+ /** Override or omit the system prompt. Pass 'omit' to exclude entirely. */
41
+ systemPrompt?: string | 'omit';
42
+ /** Filter: minimum scorecard score (0-100) */
43
+ minScore?: number;
44
+ /** Generate companion metadata.jsonl alongside training data */
45
+ includeMetadata?: boolean;
46
+ }
47
+ /** OpenAI chat completion fine-tuning format */
48
+ export interface OpenAIChatLine {
49
+ messages: Array<{
50
+ role: 'system' | 'user' | 'assistant' | 'tool';
51
+ content?: string;
52
+ tool_calls?: Array<{
53
+ id: string;
54
+ type: 'function';
55
+ function: {
56
+ name: string;
57
+ arguments: string;
58
+ };
59
+ }>;
60
+ tool_call_id?: string;
61
+ }>;
62
+ tools?: Array<{
63
+ type: 'function';
64
+ function: {
65
+ name: string;
66
+ description: string;
67
+ parameters: Record<string, any>;
68
+ };
69
+ }>;
70
+ }
71
+ /** ShareGPT format (LLaMA Factory, older open-source tools) */
72
+ export interface ShareGPTLine {
73
+ conversations: Array<{
74
+ from: 'system' | 'human' | 'gpt' | 'tool';
75
+ value: string;
76
+ }>;
77
+ }
78
+ /** DPO preference pair format */
79
+ export interface DPOLine {
80
+ input: {
81
+ messages: Array<{
82
+ role: 'system' | 'user';
83
+ content: string;
84
+ }>;
85
+ };
86
+ preferred_output: Array<{
87
+ role: 'assistant';
88
+ content: string;
89
+ }>;
90
+ non_preferred_output: Array<{
91
+ role: 'assistant';
92
+ content: string;
93
+ }>;
94
+ }
95
+ /** Metadata sidecar line (one per training example) */
96
+ export interface MetadataLine {
97
+ executionId: string;
98
+ scenarioId: string;
99
+ personaId?: string;
100
+ score?: number;
101
+ turnCount: number;
102
+ duration?: number;
103
+ tags?: string[];
104
+ personaTraits?: Record<string, any>;
105
+ scenarioName?: string;
106
+ personaName?: string;
107
+ }
108
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dataset/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Dataset export types for converting execution transcripts
4
+ * into training data formats (OpenAI, ShareGPT, DPO).
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dataset/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,44 @@
1
+ import { AgentAdapterConfig, ToolDefinition } from '../adapters/agent-adapter.interface';
2
+ /**
3
+ * Minimal prompt shape — matches what we read from the prompts collection.
4
+ * Kept deliberately loose so both ChatService and ExecutionProcessor
5
+ * can pass in a prompt document without importing the Prompt schema.
6
+ */
7
+ export interface PromptConfig {
8
+ content: string;
9
+ adapterConfig?: {
10
+ adapterType?: string;
11
+ model?: string;
12
+ temperature?: number;
13
+ maxTokens?: number;
14
+ endpoint?: string;
15
+ [key: string]: any;
16
+ };
17
+ }
18
+ export interface ResolvedAgentConfig {
19
+ adapterType: string;
20
+ config: AgentAdapterConfig;
21
+ }
22
+ /**
23
+ * Single source of truth for building an AgentAdapterConfig.
24
+ *
25
+ * Both ChatService (playground) and ExecutionProcessor (simulate)
26
+ * call this instead of assembling config themselves.
27
+ *
28
+ * Resolution priority for API key:
29
+ * 1. overrides.apiKey (explicit per-execution override)
30
+ * 2. Environment: CHANL_OPENAI_API_KEY / CHANL_ANTHROPIC_API_KEY
31
+ * 3. Settings DB (via settingsLookup callback)
32
+ */
33
+ export declare class AgentConfigResolver {
34
+ private readonly logger;
35
+ resolve(opts: {
36
+ prompt: PromptConfig;
37
+ settingsLookup: (provider: string) => Promise<string | undefined>;
38
+ tools?: ToolDefinition[];
39
+ overrides?: Partial<AgentAdapterConfig> & {
40
+ adapterType?: string;
41
+ };
42
+ }): Promise<ResolvedAgentConfig>;
43
+ }
44
+ //# sourceMappingURL=agent-config-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config-resolver.d.ts","sourceRoot":"","sources":["../../src/execution/agent-config-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,qBACa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAEzD,OAAO,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,YAAY,CAAC;QACrB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAClE,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG;YAAE,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACpE,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAoDjC"}
@@ -0,0 +1,76 @@
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 AgentConfigResolver_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AgentConfigResolver = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ /**
13
+ * Single source of truth for building an AgentAdapterConfig.
14
+ *
15
+ * Both ChatService (playground) and ExecutionProcessor (simulate)
16
+ * call this instead of assembling config themselves.
17
+ *
18
+ * Resolution priority for API key:
19
+ * 1. overrides.apiKey (explicit per-execution override)
20
+ * 2. Environment: CHANL_OPENAI_API_KEY / CHANL_ANTHROPIC_API_KEY
21
+ * 3. Settings DB (via settingsLookup callback)
22
+ */
23
+ let AgentConfigResolver = AgentConfigResolver_1 = class AgentConfigResolver {
24
+ constructor() {
25
+ this.logger = new common_1.Logger(AgentConfigResolver_1.name);
26
+ }
27
+ async resolve(opts) {
28
+ const promptAdapter = opts.prompt.adapterConfig || {};
29
+ const overrides = opts.overrides || {};
30
+ const adapterType = overrides.adapterType || promptAdapter.adapterType || 'openai';
31
+ // Resolve API key: overrides → env → settings
32
+ let apiKey = overrides.apiKey;
33
+ if (!apiKey) {
34
+ apiKey =
35
+ (adapterType === 'openai' ? process.env.CHANL_OPENAI_API_KEY : undefined) ||
36
+ (adapterType === 'anthropic' ? process.env.CHANL_ANTHROPIC_API_KEY : undefined) ||
37
+ process.env.CHANL_OPENAI_API_KEY; // generic fallback
38
+ }
39
+ if (!apiKey) {
40
+ apiKey = await opts.settingsLookup(adapterType) || await opts.settingsLookup('openai');
41
+ }
42
+ if (!apiKey && adapterType !== 'http') {
43
+ this.logger.warn(`No API key resolved for adapter type "${adapterType}"`);
44
+ }
45
+ // Build config from prompt + overrides.
46
+ // CRITICAL: undefined values must NOT be in the config — they overwrite adapter defaults
47
+ // when spread with { ...defaults, ...config }. Strip them.
48
+ const raw = {
49
+ systemPrompt: opts.prompt.content,
50
+ apiKey,
51
+ model: promptAdapter.model,
52
+ temperature: promptAdapter.temperature,
53
+ maxTokens: promptAdapter.maxTokens,
54
+ endpoint: promptAdapter.endpoint,
55
+ tools: opts.tools,
56
+ };
57
+ // Apply overrides (except adapterType)
58
+ for (const [key, value] of Object.entries(overrides)) {
59
+ if (key !== 'adapterType')
60
+ raw[key] = value;
61
+ }
62
+ // Strip undefined/null values so adapter defaults are preserved
63
+ const config = {};
64
+ for (const [key, value] of Object.entries(raw)) {
65
+ if (value != null)
66
+ config[key] = value;
67
+ }
68
+ this.logger.debug(`Resolved config: type=${adapterType}, model=${config.model}, hasKey=${!!apiKey}, hasPrompt=${!!config.systemPrompt}, tools=${config.tools?.length || 0}`);
69
+ return { adapterType, config };
70
+ }
71
+ };
72
+ exports.AgentConfigResolver = AgentConfigResolver;
73
+ exports.AgentConfigResolver = AgentConfigResolver = AgentConfigResolver_1 = __decorate([
74
+ (0, common_1.Injectable)()
75
+ ], AgentConfigResolver);
76
+ //# sourceMappingURL=agent-config-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config-resolver.js","sourceRoot":"","sources":["../../src/execution/agent-config-resolver.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAyBpD;;;;;;;;;;GAUG;AAEI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAAzB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IA2DjE,CAAC;IAzDC,KAAK,CAAC,OAAO,CAAC,IAKb;QACC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QAEvC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,IAAI,QAAQ,CAAC;QAEnF,8CAA8C;QAC9C,IAAI,MAAM,GAAG,SAAS,CAAC,MAA4B,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM;gBACJ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;oBACzE,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC/E,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,mBAAmB;QACzD,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,WAAW,GAAG,CAAC,CAAC;QAC5E,CAAC;QAED,wCAAwC;QACxC,yFAAyF;QACzF,2DAA2D;QAC3D,MAAM,GAAG,GAAwB;YAC/B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YACjC,MAAM;YACN,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QAEF,uCAAuC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,GAAG,KAAK,aAAa;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9C,CAAC;QAED,gEAAgE;QAChE,MAAM,MAAM,GAAuB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,KAAK,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,yBAAyB,WAAW,WAAW,MAAM,CAAC,KAAK,YAAY,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,MAAM,CAAC,YAAY,WAAW,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAC1J,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;CACF,CAAA;AA5DY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;GACA,mBAAmB,CA4D/B"}
@@ -0,0 +1,75 @@
1
+ import { Model } from 'mongoose';
2
+ import { Job } from 'bull';
3
+ import { ScenarioExecutionJobData, ScenarioExecutionResult } from './interfaces/job-data.interface';
4
+ import { ScenarioExecutionDocument } from '../scenarios/schemas/scenario-execution.schema';
5
+ import { ScenarioDocument } from '../scenarios/schemas/scenario.schema';
6
+ import { PersonaDocument } from '../personas/schemas/persona.schema';
7
+ import { AdapterRegistry } from '../adapters/adapter-registry';
8
+ import { PersonaSimulatorService } from '../simulator/persona-simulator.service';
9
+ import { EvaluationService } from '@chanl/scorecards-core';
10
+ import { ToolFixtureService } from '../tool-fixtures/tool-fixture.service';
11
+ import { MockResolver } from '../tool-fixtures/mock-resolver.service';
12
+ import { AgentConfigResolver } from './agent-config-resolver';
13
+ import { PersonaStrategyRegistry } from './persona-strategy-registry';
14
+ export declare class ExecutionProcessor {
15
+ private executionModel;
16
+ private scenarioModel;
17
+ private personaModel;
18
+ private readonly adapterRegistry;
19
+ private readonly agentConfigResolver;
20
+ private readonly personaSimulator;
21
+ private readonly evaluationService;
22
+ private readonly toolFixtureService;
23
+ private readonly mockResolver;
24
+ private readonly personaStrategyRegistry;
25
+ private readonly logger;
26
+ constructor(executionModel: Model<ScenarioExecutionDocument>, scenarioModel: Model<ScenarioDocument>, personaModel: Model<PersonaDocument>, adapterRegistry: AdapterRegistry, agentConfigResolver: AgentConfigResolver, personaSimulator: PersonaSimulatorService, evaluationService: EvaluationService, toolFixtureService: ToolFixtureService, mockResolver: MockResolver, personaStrategyRegistry: PersonaStrategyRegistry);
27
+ /**
28
+ * Main job handler. Dequeues, runs the conversation loop, and stores results.
29
+ */
30
+ processExecution(job: Job<ScenarioExecutionJobData>): Promise<ScenarioExecutionResult>;
31
+ /**
32
+ * Generate an opening message based on the scenario prompt and persona.
33
+ */
34
+ private getOpeningMessage;
35
+ /**
36
+ * Generate the next persona message in the conversation.
37
+ * Placeholder implementation -- a real system would call an LLM with
38
+ * the persona system prompt and conversation history.
39
+ */
40
+ private generateNextPersonaMessage;
41
+ /**
42
+ * Resolve tool calls in a loop until the LLM returns a text-only response
43
+ * or the iteration limit is reached.
44
+ *
45
+ * Each iteration:
46
+ * 1. Resolves all tool calls via MockResolver
47
+ * 2. Records tool calls in the transcript
48
+ * 3. Adds assistant message (with tool calls) and tool results to history
49
+ * 4. Calls the LLM again with tool results
50
+ *
51
+ * Returns the final AgentResponse (text, no pending tool calls).
52
+ */
53
+ private resolveToolCallLoop;
54
+ /**
55
+ * Determine whether the conversation should end.
56
+ */
57
+ private shouldEndConversation;
58
+ /**
59
+ * Generate a critical 2-3 sentence summary of scorecard results.
60
+ * Uses one LLM call after evaluation to distill findings.
61
+ */
62
+ private generateEvalSummary;
63
+ /**
64
+ * Calculate a basic score based on transcript completeness.
65
+ */
66
+ private calculateScore;
67
+ /**
68
+ * Calculate average latency from agent responses.
69
+ */
70
+ private calculateAvgLatency;
71
+ onActive(job: Job<ScenarioExecutionJobData>): void;
72
+ onCompleted(job: Job<ScenarioExecutionJobData>): void;
73
+ onFailed(job: Job<ScenarioExecutionJobData>, error: Error): void;
74
+ }
75
+ //# sourceMappingURL=execution-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-processor.d.ts","sourceRoot":"","sources":["../../src/execution/execution-processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAS,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EAExB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,yBAAyB,EAC1B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAY,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAW,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAOtE,OAAO,EAAE,mBAAmB,EAAgB,MAAM,yBAAyB,CAAC;AAG5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAUtE,qBACa,kBAAkB;IAK3B,OAAO,CAAC,cAAc;IAEtB,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAf1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAIpD,cAAc,EAAE,KAAK,CAAC,yBAAyB,CAAC,EAEhD,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAEtC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,EAC3B,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,gBAAgB,EAAE,uBAAuB,EACzC,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,uBAAuB,EAAE,uBAAuB;IAGnE;;OAEG;IAEG,gBAAgB,CACpB,GAAG,EAAE,GAAG,CAAC,wBAAwB,CAAC,GACjC,OAAO,CAAC,uBAAuB,CAAC;IAuXnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAgBlC;;;;;;;;;;;OAWG;YACW,mBAAmB;IAwDjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;OAGG;YACW,mBAAmB;IAmEjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,wBAAwB,CAAC;IAO3C,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,wBAAwB,CAAC;IAO9C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,KAAK;CAM1D"}