@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.
- package/LICENSE +21 -0
- package/dist/__tests__/e2e/test-helpers.d.ts +79 -0
- package/dist/__tests__/e2e/test-helpers.d.ts.map +1 -0
- package/dist/__tests__/e2e/test-helpers.js +162 -0
- package/dist/__tests__/e2e/test-helpers.js.map +1 -0
- package/dist/adapters/adapter-registry.d.ts +14 -0
- package/dist/adapters/adapter-registry.d.ts.map +1 -0
- package/dist/adapters/adapter-registry.js +53 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/agent-adapter.interface.d.ts +70 -0
- package/dist/adapters/agent-adapter.interface.d.ts.map +1 -0
- package/dist/adapters/agent-adapter.interface.js +3 -0
- package/dist/adapters/agent-adapter.interface.js.map +1 -0
- package/dist/adapters/anthropic.adapter.d.ts +17 -0
- package/dist/adapters/anthropic.adapter.d.ts.map +1 -0
- package/dist/adapters/anthropic.adapter.js +145 -0
- package/dist/adapters/anthropic.adapter.js.map +1 -0
- package/dist/adapters/http.adapter.d.ts +17 -0
- package/dist/adapters/http.adapter.d.ts.map +1 -0
- package/dist/adapters/http.adapter.js +95 -0
- package/dist/adapters/http.adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +22 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/openai.adapter.d.ts +17 -0
- package/dist/adapters/openai.adapter.d.ts.map +1 -0
- package/dist/adapters/openai.adapter.js +133 -0
- package/dist/adapters/openai.adapter.js.map +1 -0
- package/dist/dataset/convert.d.ts +28 -0
- package/dist/dataset/convert.d.ts.map +1 -0
- package/dist/dataset/convert.js +94 -0
- package/dist/dataset/convert.js.map +1 -0
- package/dist/dataset/formats/dpo.d.ts +41 -0
- package/dist/dataset/formats/dpo.d.ts.map +1 -0
- package/dist/dataset/formats/dpo.js +79 -0
- package/dist/dataset/formats/dpo.js.map +1 -0
- package/dist/dataset/formats/index.d.ts +4 -0
- package/dist/dataset/formats/index.d.ts.map +1 -0
- package/dist/dataset/formats/index.js +13 -0
- package/dist/dataset/formats/index.js.map +1 -0
- package/dist/dataset/formats/openai.d.ts +29 -0
- package/dist/dataset/formats/openai.d.ts.map +1 -0
- package/dist/dataset/formats/openai.js +98 -0
- package/dist/dataset/formats/openai.js.map +1 -0
- package/dist/dataset/formats/sharegpt.d.ts +31 -0
- package/dist/dataset/formats/sharegpt.d.ts.map +1 -0
- package/dist/dataset/formats/sharegpt.js +76 -0
- package/dist/dataset/formats/sharegpt.js.map +1 -0
- package/dist/dataset/index.d.ts +4 -0
- package/dist/dataset/index.d.ts.map +1 -0
- package/dist/dataset/index.js +20 -0
- package/dist/dataset/index.js.map +1 -0
- package/dist/dataset/types.d.ts +108 -0
- package/dist/dataset/types.d.ts.map +1 -0
- package/dist/dataset/types.js +7 -0
- package/dist/dataset/types.js.map +1 -0
- package/dist/execution/agent-config-resolver.d.ts +44 -0
- package/dist/execution/agent-config-resolver.d.ts.map +1 -0
- package/dist/execution/agent-config-resolver.js +76 -0
- package/dist/execution/agent-config-resolver.js.map +1 -0
- package/dist/execution/execution-processor.d.ts +75 -0
- package/dist/execution/execution-processor.d.ts.map +1 -0
- package/dist/execution/execution-processor.js +569 -0
- package/dist/execution/execution-processor.js.map +1 -0
- package/dist/execution/execution.module.d.ts +3 -0
- package/dist/execution/execution.module.d.ts.map +1 -0
- package/dist/execution/execution.module.js +56 -0
- package/dist/execution/execution.module.js.map +1 -0
- package/dist/execution/execution.service.d.ts +52 -0
- package/dist/execution/execution.service.d.ts.map +1 -0
- package/dist/execution/execution.service.js +182 -0
- package/dist/execution/execution.service.js.map +1 -0
- package/dist/execution/index.d.ts +11 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +30 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/interfaces/job-data.interface.d.ts +38 -0
- package/dist/execution/interfaces/job-data.interface.d.ts.map +1 -0
- package/dist/execution/interfaces/job-data.interface.js +3 -0
- package/dist/execution/interfaces/job-data.interface.js.map +1 -0
- package/dist/execution/judge-llm.d.ts +35 -0
- package/dist/execution/judge-llm.d.ts.map +1 -0
- package/dist/execution/judge-llm.js +129 -0
- package/dist/execution/judge-llm.js.map +1 -0
- package/dist/execution/llm-config-resolver.d.ts +26 -0
- package/dist/execution/llm-config-resolver.d.ts.map +1 -0
- package/dist/execution/llm-config-resolver.js +99 -0
- package/dist/execution/llm-config-resolver.js.map +1 -0
- package/dist/execution/persona-llm.d.ts +29 -0
- package/dist/execution/persona-llm.d.ts.map +1 -0
- package/dist/execution/persona-llm.js +98 -0
- package/dist/execution/persona-llm.js.map +1 -0
- package/dist/execution/persona-strategy-registry.d.ts +14 -0
- package/dist/execution/persona-strategy-registry.d.ts.map +1 -0
- package/dist/execution/persona-strategy-registry.js +51 -0
- package/dist/execution/persona-strategy-registry.js.map +1 -0
- package/dist/execution/persona-strategy.interface.d.ts +88 -0
- package/dist/execution/persona-strategy.interface.d.ts.map +1 -0
- package/dist/execution/persona-strategy.interface.js +3 -0
- package/dist/execution/persona-strategy.interface.js.map +1 -0
- package/dist/execution/queue-producer.service.d.ts +21 -0
- package/dist/execution/queue-producer.service.d.ts.map +1 -0
- package/dist/execution/queue-producer.service.js +60 -0
- package/dist/execution/queue-producer.service.js.map +1 -0
- package/dist/execution/queues.config.d.ts +39 -0
- package/dist/execution/queues.config.d.ts.map +1 -0
- package/dist/execution/queues.config.js +43 -0
- package/dist/execution/queues.config.js.map +1 -0
- package/dist/execution/strategies/default.strategy.d.ts +11 -0
- package/dist/execution/strategies/default.strategy.d.ts.map +1 -0
- package/dist/execution/strategies/default.strategy.js +31 -0
- package/dist/execution/strategies/default.strategy.js.map +1 -0
- package/dist/execution/strategies/reactive.strategy.d.ts +28 -0
- package/dist/execution/strategies/reactive.strategy.d.ts.map +1 -0
- package/dist/execution/strategies/reactive.strategy.js +220 -0
- package/dist/execution/strategies/reactive.strategy.js.map +1 -0
- package/dist/execution/template-renderer.d.ts +52 -0
- package/dist/execution/template-renderer.d.ts.map +1 -0
- package/dist/execution/template-renderer.js +90 -0
- package/dist/execution/template-renderer.js.map +1 -0
- package/dist/generation/index.d.ts +2 -0
- package/dist/generation/index.d.ts.map +1 -0
- package/dist/generation/index.js +6 -0
- package/dist/generation/index.js.map +1 -0
- package/dist/generation/scenario-generator.service.d.ts +77 -0
- package/dist/generation/scenario-generator.service.d.ts.map +1 -0
- package/dist/generation/scenario-generator.service.js +272 -0
- package/dist/generation/scenario-generator.service.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/personas/dto/create-persona.dto.d.ts +61 -0
- package/dist/personas/dto/create-persona.dto.d.ts.map +1 -0
- package/dist/personas/dto/create-persona.dto.js +146 -0
- package/dist/personas/dto/create-persona.dto.js.map +1 -0
- package/dist/personas/dto/index.d.ts +3 -0
- package/dist/personas/dto/index.d.ts.map +1 -0
- package/dist/personas/dto/index.js +19 -0
- package/dist/personas/dto/index.js.map +1 -0
- package/dist/personas/dto/update-persona.dto.d.ts +8 -0
- package/dist/personas/dto/update-persona.dto.d.ts.map +1 -0
- package/dist/personas/dto/update-persona.dto.js +29 -0
- package/dist/personas/dto/update-persona.dto.js.map +1 -0
- package/dist/personas/index.d.ts +6 -0
- package/dist/personas/index.d.ts.map +1 -0
- package/dist/personas/index.js +22 -0
- package/dist/personas/index.js.map +1 -0
- package/dist/personas/persona.controller.d.ts +69 -0
- package/dist/personas/persona.controller.d.ts.map +1 -0
- package/dist/personas/persona.controller.js +282 -0
- package/dist/personas/persona.controller.js.map +1 -0
- package/dist/personas/persona.module.d.ts +3 -0
- package/dist/personas/persona.module.d.ts.map +1 -0
- package/dist/personas/persona.module.js +28 -0
- package/dist/personas/persona.module.js.map +1 -0
- package/dist/personas/persona.service.d.ts +85 -0
- package/dist/personas/persona.service.d.ts.map +1 -0
- package/dist/personas/persona.service.js +382 -0
- package/dist/personas/persona.service.js.map +1 -0
- package/dist/personas/schemas/persona.schema.d.ts +90 -0
- package/dist/personas/schemas/persona.schema.d.ts.map +1 -0
- package/dist/personas/schemas/persona.schema.js +321 -0
- package/dist/personas/schemas/persona.schema.js.map +1 -0
- package/dist/scenarios/controllers/scenario-execution.controller.d.ts +48 -0
- package/dist/scenarios/controllers/scenario-execution.controller.d.ts.map +1 -0
- package/dist/scenarios/controllers/scenario-execution.controller.js +260 -0
- package/dist/scenarios/controllers/scenario-execution.controller.js.map +1 -0
- package/dist/scenarios/controllers/scenario.controller.d.ts +81 -0
- package/dist/scenarios/controllers/scenario.controller.d.ts.map +1 -0
- package/dist/scenarios/controllers/scenario.controller.js +345 -0
- package/dist/scenarios/controllers/scenario.controller.js.map +1 -0
- package/dist/scenarios/dto/create-scenario.dto.d.ts +31 -0
- package/dist/scenarios/dto/create-scenario.dto.d.ts.map +1 -0
- package/dist/scenarios/dto/create-scenario.dto.js +102 -0
- package/dist/scenarios/dto/create-scenario.dto.js.map +1 -0
- package/dist/scenarios/dto/execute-scenario.dto.d.ts +34 -0
- package/dist/scenarios/dto/execute-scenario.dto.d.ts.map +1 -0
- package/dist/scenarios/dto/execute-scenario.dto.js +150 -0
- package/dist/scenarios/dto/execute-scenario.dto.js.map +1 -0
- package/dist/scenarios/dto/index.d.ts +4 -0
- package/dist/scenarios/dto/index.d.ts.map +1 -0
- package/dist/scenarios/dto/index.js +20 -0
- package/dist/scenarios/dto/index.js.map +1 -0
- package/dist/scenarios/dto/update-scenario.dto.d.ts +6 -0
- package/dist/scenarios/dto/update-scenario.dto.d.ts.map +1 -0
- package/dist/scenarios/dto/update-scenario.dto.js +9 -0
- package/dist/scenarios/dto/update-scenario.dto.js.map +1 -0
- package/dist/scenarios/index.d.ts +9 -0
- package/dist/scenarios/index.d.ts.map +1 -0
- package/dist/scenarios/index.js +25 -0
- package/dist/scenarios/index.js.map +1 -0
- package/dist/scenarios/scenario.module.d.ts +3 -0
- package/dist/scenarios/scenario.module.d.ts.map +1 -0
- package/dist/scenarios/scenario.module.js +42 -0
- package/dist/scenarios/scenario.module.js.map +1 -0
- package/dist/scenarios/schemas/scenario-execution.schema.d.ts +133 -0
- package/dist/scenarios/schemas/scenario-execution.schema.d.ts.map +1 -0
- package/dist/scenarios/schemas/scenario-execution.schema.js +292 -0
- package/dist/scenarios/schemas/scenario-execution.schema.js.map +1 -0
- package/dist/scenarios/schemas/scenario.schema.d.ts +106 -0
- package/dist/scenarios/schemas/scenario.schema.d.ts.map +1 -0
- package/dist/scenarios/schemas/scenario.schema.js +205 -0
- package/dist/scenarios/schemas/scenario.schema.js.map +1 -0
- package/dist/scenarios/services/scenario-execution.service.d.ts +73 -0
- package/dist/scenarios/services/scenario-execution.service.d.ts.map +1 -0
- package/dist/scenarios/services/scenario-execution.service.js +505 -0
- package/dist/scenarios/services/scenario-execution.service.js.map +1 -0
- package/dist/scenarios/services/scenario.service.d.ts +110 -0
- package/dist/scenarios/services/scenario.service.d.ts.map +1 -0
- package/dist/scenarios/services/scenario.service.js +608 -0
- package/dist/scenarios/services/scenario.service.js.map +1 -0
- package/dist/simulator/index.d.ts +2 -0
- package/dist/simulator/index.d.ts.map +1 -0
- package/dist/simulator/index.js +18 -0
- package/dist/simulator/index.js.map +1 -0
- package/dist/simulator/persona-simulator.service.d.ts +81 -0
- package/dist/simulator/persona-simulator.service.d.ts.map +1 -0
- package/dist/simulator/persona-simulator.service.js +358 -0
- package/dist/simulator/persona-simulator.service.js.map +1 -0
- package/dist/templates/dto/create-template.dto.d.ts +16 -0
- package/dist/templates/dto/create-template.dto.d.ts.map +1 -0
- package/dist/templates/dto/create-template.dto.js +75 -0
- package/dist/templates/dto/create-template.dto.js.map +1 -0
- package/dist/templates/dto/index.d.ts +4 -0
- package/dist/templates/dto/index.d.ts.map +1 -0
- package/dist/templates/dto/index.js +10 -0
- package/dist/templates/dto/index.js.map +1 -0
- package/dist/templates/dto/instantiate-template.dto.d.ts +7 -0
- package/dist/templates/dto/instantiate-template.dto.d.ts.map +1 -0
- package/dist/templates/dto/instantiate-template.dto.js +38 -0
- package/dist/templates/dto/instantiate-template.dto.js.map +1 -0
- package/dist/templates/dto/update-template.dto.d.ts +6 -0
- package/dist/templates/dto/update-template.dto.d.ts.map +1 -0
- package/dist/templates/dto/update-template.dto.js +9 -0
- package/dist/templates/dto/update-template.dto.js.map +1 -0
- package/dist/templates/index.d.ts +6 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +22 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/scenario-template.controller.d.ts +42 -0
- package/dist/templates/scenario-template.controller.d.ts.map +1 -0
- package/dist/templates/scenario-template.controller.js +148 -0
- package/dist/templates/scenario-template.controller.js.map +1 -0
- package/dist/templates/scenario-template.module.d.ts +3 -0
- package/dist/templates/scenario-template.module.d.ts.map +1 -0
- package/dist/templates/scenario-template.module.js +30 -0
- package/dist/templates/scenario-template.module.js.map +1 -0
- package/dist/templates/scenario-template.service.d.ts +50 -0
- package/dist/templates/scenario-template.service.d.ts.map +1 -0
- package/dist/templates/scenario-template.service.js +497 -0
- package/dist/templates/scenario-template.service.js.map +1 -0
- package/dist/templates/schemas/scenario-template.schema.d.ts +59 -0
- package/dist/templates/schemas/scenario-template.schema.d.ts.map +1 -0
- package/dist/templates/schemas/scenario-template.schema.js +132 -0
- package/dist/templates/schemas/scenario-template.schema.js.map +1 -0
- package/dist/tool-fixtures/dto/create-tool-fixture.dto.d.ts +18 -0
- package/dist/tool-fixtures/dto/create-tool-fixture.dto.d.ts.map +1 -0
- package/dist/tool-fixtures/dto/create-tool-fixture.dto.js +46 -0
- package/dist/tool-fixtures/dto/create-tool-fixture.dto.js.map +1 -0
- package/dist/tool-fixtures/dto/index.d.ts +4 -0
- package/dist/tool-fixtures/dto/index.d.ts.map +1 -0
- package/dist/tool-fixtures/dto/index.js +20 -0
- package/dist/tool-fixtures/dto/index.js.map +1 -0
- package/dist/tool-fixtures/dto/tool-fixture-filter.dto.d.ts +6 -0
- package/dist/tool-fixtures/dto/tool-fixture-filter.dto.d.ts.map +1 -0
- package/dist/tool-fixtures/dto/tool-fixture-filter.dto.js +33 -0
- package/dist/tool-fixtures/dto/tool-fixture-filter.dto.js.map +1 -0
- package/dist/tool-fixtures/dto/update-tool-fixture.dto.d.ts +6 -0
- package/dist/tool-fixtures/dto/update-tool-fixture.dto.d.ts.map +1 -0
- package/dist/tool-fixtures/dto/update-tool-fixture.dto.js +9 -0
- package/dist/tool-fixtures/dto/update-tool-fixture.dto.js.map +1 -0
- package/dist/tool-fixtures/index.d.ts +7 -0
- package/dist/tool-fixtures/index.d.ts.map +1 -0
- package/dist/tool-fixtures/index.js +23 -0
- package/dist/tool-fixtures/index.js.map +1 -0
- package/dist/tool-fixtures/mock-resolver.service.d.ts +48 -0
- package/dist/tool-fixtures/mock-resolver.service.d.ts.map +1 -0
- package/dist/tool-fixtures/mock-resolver.service.js +99 -0
- package/dist/tool-fixtures/mock-resolver.service.js.map +1 -0
- package/dist/tool-fixtures/schemas/tool-fixture.schema.d.ts +35 -0
- package/dist/tool-fixtures/schemas/tool-fixture.schema.d.ts.map +1 -0
- package/dist/tool-fixtures/schemas/tool-fixture.schema.js +87 -0
- package/dist/tool-fixtures/schemas/tool-fixture.schema.js.map +1 -0
- package/dist/tool-fixtures/tool-fixture.controller.d.ts +45 -0
- package/dist/tool-fixtures/tool-fixture.controller.d.ts.map +1 -0
- package/dist/tool-fixtures/tool-fixture.controller.js +223 -0
- package/dist/tool-fixtures/tool-fixture.controller.js.map +1 -0
- package/dist/tool-fixtures/tool-fixture.module.d.ts +3 -0
- package/dist/tool-fixtures/tool-fixture.module.d.ts.map +1 -0
- package/dist/tool-fixtures/tool-fixture.module.js +31 -0
- package/dist/tool-fixtures/tool-fixture.module.js.map +1 -0
- package/dist/tool-fixtures/tool-fixture.service.d.ts +59 -0
- package/dist/tool-fixtures/tool-fixture.service.d.ts.map +1 -0
- package/dist/tool-fixtures/tool-fixture.service.js +198 -0
- package/dist/tool-fixtures/tool-fixture.service.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|