@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,56 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ExecutionModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const bull_1 = require("@nestjs/bull");
|
|
12
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
13
|
+
const scorecards_core_1 = require("@chanl/scorecards-core");
|
|
14
|
+
const scenario_schema_1 = require("../scenarios/schemas/scenario.schema");
|
|
15
|
+
const scenario_execution_schema_1 = require("../scenarios/schemas/scenario-execution.schema");
|
|
16
|
+
const persona_schema_1 = require("../personas/schemas/persona.schema");
|
|
17
|
+
const tool_fixture_module_1 = require("../tool-fixtures/tool-fixture.module");
|
|
18
|
+
const adapter_registry_1 = require("../adapters/adapter-registry");
|
|
19
|
+
const persona_simulator_service_1 = require("../simulator/persona-simulator.service");
|
|
20
|
+
const persona_strategy_registry_1 = require("./persona-strategy-registry");
|
|
21
|
+
const queue_producer_service_1 = require("./queue-producer.service");
|
|
22
|
+
const execution_processor_1 = require("./execution-processor");
|
|
23
|
+
const execution_service_1 = require("./execution.service");
|
|
24
|
+
const agent_config_resolver_1 = require("./agent-config-resolver");
|
|
25
|
+
const queues_config_1 = require("./queues.config");
|
|
26
|
+
let ExecutionModule = class ExecutionModule {
|
|
27
|
+
};
|
|
28
|
+
exports.ExecutionModule = ExecutionModule;
|
|
29
|
+
exports.ExecutionModule = ExecutionModule = __decorate([
|
|
30
|
+
(0, common_1.Module)({
|
|
31
|
+
imports: [
|
|
32
|
+
scorecards_core_1.ScorecardsModule,
|
|
33
|
+
tool_fixture_module_1.ToolFixtureModule,
|
|
34
|
+
mongoose_1.MongooseModule.forFeature([
|
|
35
|
+
{ name: scenario_schema_1.Scenario.name, schema: scenario_schema_1.ScenarioSchema },
|
|
36
|
+
{ name: scenario_execution_schema_1.ScenarioExecution.name, schema: scenario_execution_schema_1.ScenarioExecutionSchema },
|
|
37
|
+
{ name: persona_schema_1.Persona.name, schema: persona_schema_1.PersonaSchema },
|
|
38
|
+
]),
|
|
39
|
+
bull_1.BullModule.registerQueue({
|
|
40
|
+
name: queues_config_1.QUEUE_NAMES.SCENARIO_EXECUTION,
|
|
41
|
+
defaultJobOptions: queues_config_1.defaultJobOptions,
|
|
42
|
+
}),
|
|
43
|
+
],
|
|
44
|
+
providers: [
|
|
45
|
+
adapter_registry_1.AdapterRegistry,
|
|
46
|
+
agent_config_resolver_1.AgentConfigResolver,
|
|
47
|
+
persona_simulator_service_1.PersonaSimulatorService,
|
|
48
|
+
persona_strategy_registry_1.PersonaStrategyRegistry,
|
|
49
|
+
queue_producer_service_1.QueueProducerService,
|
|
50
|
+
execution_processor_1.ExecutionProcessor,
|
|
51
|
+
execution_service_1.ExecutionService,
|
|
52
|
+
],
|
|
53
|
+
exports: [execution_service_1.ExecutionService, queue_producer_service_1.QueueProducerService, adapter_registry_1.AdapterRegistry, agent_config_resolver_1.AgentConfigResolver, persona_strategy_registry_1.PersonaStrategyRegistry],
|
|
54
|
+
})
|
|
55
|
+
], ExecutionModule);
|
|
56
|
+
//# sourceMappingURL=execution.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.module.js","sourceRoot":"","sources":["../../src/execution/execution.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA0C;AAC1C,+CAAkD;AAClD,4DAA0D;AAC1D,0EAG8C;AAC9C,8FAGwD;AACxD,uEAG4C;AAC5C,8EAAyE;AACzE,mEAA+D;AAC/D,sFAAiF;AACjF,2EAAsE;AACtE,qEAAgE;AAChE,+DAA2D;AAC3D,2DAAuD;AACvD,mEAA8D;AAC9D,mDAAiE;AA2B1D,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAzB3B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,kCAAgB;YAChB,uCAAiB;YACjB,yBAAc,CAAC,UAAU,CAAC;gBACxB,EAAE,IAAI,EAAE,0BAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,gCAAc,EAAE;gBAC/C,EAAE,IAAI,EAAE,6CAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,mDAAuB,EAAE;gBACjE,EAAE,IAAI,EAAE,wBAAO,CAAC,IAAI,EAAE,MAAM,EAAE,8BAAa,EAAE;aAC9C,CAAC;YACF,iBAAU,CAAC,aAAa,CAAC;gBACvB,IAAI,EAAE,2BAAW,CAAC,kBAAkB;gBACpC,iBAAiB,EAAjB,iCAAiB;aAClB,CAAC;SACH;QACD,SAAS,EAAE;YACT,kCAAe;YACf,2CAAmB;YACnB,mDAAuB;YACvB,mDAAuB;YACvB,6CAAoB;YACpB,wCAAkB;YAClB,oCAAgB;SACjB;QACD,OAAO,EAAE,CAAC,oCAAgB,EAAE,6CAAoB,EAAE,kCAAe,EAAE,2CAAmB,EAAE,mDAAuB,CAAC;KACjH,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Model } from 'mongoose';
|
|
2
|
+
import { ScenarioExecution, ScenarioExecutionDocument } from '../scenarios/schemas/scenario-execution.schema';
|
|
3
|
+
import { ScenarioDocument } from '../scenarios/schemas/scenario.schema';
|
|
4
|
+
import { QueueProducerService } from './queue-producer.service';
|
|
5
|
+
export interface ExecuteOptions {
|
|
6
|
+
promptId: string;
|
|
7
|
+
personaId?: string;
|
|
8
|
+
maxTurns?: number;
|
|
9
|
+
parameters?: Record<string, any>;
|
|
10
|
+
environment?: string;
|
|
11
|
+
triggeredBy?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ListExecutionsFilters {
|
|
14
|
+
status?: string;
|
|
15
|
+
scenarioId?: string;
|
|
16
|
+
agentId?: string;
|
|
17
|
+
personaId?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ListExecutionsPagination {
|
|
20
|
+
limit?: number;
|
|
21
|
+
offset?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare class ExecutionService {
|
|
24
|
+
private executionModel;
|
|
25
|
+
private scenarioModel;
|
|
26
|
+
private readonly queueProducer;
|
|
27
|
+
private readonly logger;
|
|
28
|
+
constructor(executionModel: Model<ScenarioExecutionDocument>, scenarioModel: Model<ScenarioDocument>, queueProducer: QueueProducerService);
|
|
29
|
+
/**
|
|
30
|
+
* Create an execution document (status: queued) and enqueue a BullMQ job.
|
|
31
|
+
*
|
|
32
|
+
* @returns The executionId string
|
|
33
|
+
*/
|
|
34
|
+
execute(scenarioId: string, options: ExecuteOptions): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Get a single execution by executionId.
|
|
37
|
+
*/
|
|
38
|
+
getExecution(executionId: string): Promise<ScenarioExecution>;
|
|
39
|
+
/**
|
|
40
|
+
* List executions with filters and pagination.
|
|
41
|
+
*/
|
|
42
|
+
listExecutions(filters?: ListExecutionsFilters, pagination?: ListExecutionsPagination): Promise<{
|
|
43
|
+
executions: ScenarioExecution[];
|
|
44
|
+
total: number;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Cancel a running or queued execution.
|
|
48
|
+
* Transitions status from running/queued to cancelled.
|
|
49
|
+
*/
|
|
50
|
+
cancelExecution(executionId: string): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=execution.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.service.d.ts","sourceRoot":"","sources":["../../src/execution/execution.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAS,MAAM,UAAU,CAAC;AAExC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAY,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,gBAAgB;IAKzB,OAAO,CAAC,cAAc;IAEtB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAPhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;gBAIlD,cAAc,EAAE,KAAK,CAAC,yBAAyB,CAAC,EAEhD,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAC7B,aAAa,EAAE,oBAAoB;IAGtD;;;;OAIG;IACG,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC;IA+DlB;;OAEG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC;IAuB7B;;OAEG;IACG,cAAc,CAClB,OAAO,CAAC,EAAE,qBAAqB,EAC/B,UAAU,CAAC,EAAE,wBAAwB,GACpC,OAAO,CAAC;QAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA8C9D;;;OAGG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;CAwCjB"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var ExecutionService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.ExecutionService = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
19
|
+
const mongoose_2 = require("mongoose");
|
|
20
|
+
const crypto_1 = require("crypto");
|
|
21
|
+
const scenario_execution_schema_1 = require("../scenarios/schemas/scenario-execution.schema");
|
|
22
|
+
const scenario_schema_1 = require("../scenarios/schemas/scenario.schema");
|
|
23
|
+
const queue_producer_service_1 = require("./queue-producer.service");
|
|
24
|
+
let ExecutionService = ExecutionService_1 = class ExecutionService {
|
|
25
|
+
constructor(executionModel, scenarioModel, queueProducer) {
|
|
26
|
+
this.executionModel = executionModel;
|
|
27
|
+
this.scenarioModel = scenarioModel;
|
|
28
|
+
this.queueProducer = queueProducer;
|
|
29
|
+
this.logger = new common_1.Logger(ExecutionService_1.name);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create an execution document (status: queued) and enqueue a BullMQ job.
|
|
33
|
+
*
|
|
34
|
+
* @returns The executionId string
|
|
35
|
+
*/
|
|
36
|
+
async execute(scenarioId, options) {
|
|
37
|
+
try {
|
|
38
|
+
// Verify scenario exists and is active
|
|
39
|
+
const scenario = await this.scenarioModel.findById(scenarioId);
|
|
40
|
+
if (!scenario) {
|
|
41
|
+
throw new common_1.NotFoundException(`Scenario with ID ${scenarioId} not found`);
|
|
42
|
+
}
|
|
43
|
+
if (scenario.status !== 'active') {
|
|
44
|
+
throw new common_1.BadRequestException(`Cannot execute scenario with status "${scenario.status}". Scenario must be active.`);
|
|
45
|
+
}
|
|
46
|
+
// Create execution record
|
|
47
|
+
const executionId = `exec_${(0, crypto_1.randomUUID)()}`;
|
|
48
|
+
const executionData = {
|
|
49
|
+
executionId,
|
|
50
|
+
scenarioId: new mongoose_2.Types.ObjectId(scenarioId),
|
|
51
|
+
promptId: options?.promptId
|
|
52
|
+
? new mongoose_2.Types.ObjectId(options.promptId)
|
|
53
|
+
: undefined,
|
|
54
|
+
personaId: options?.personaId
|
|
55
|
+
? new mongoose_2.Types.ObjectId(options.personaId)
|
|
56
|
+
: scenario.personaIds?.[0],
|
|
57
|
+
status: 'queued',
|
|
58
|
+
startTime: new Date(),
|
|
59
|
+
triggeredBy: options?.triggeredBy || 'system',
|
|
60
|
+
parameters: options?.parameters || {},
|
|
61
|
+
environment: {
|
|
62
|
+
version: '1.0.0',
|
|
63
|
+
environment: options?.environment || 'development',
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
const execution = new this.executionModel(executionData);
|
|
67
|
+
await execution.save();
|
|
68
|
+
// Enqueue the BullMQ job
|
|
69
|
+
await this.queueProducer.enqueueExecution(executionId, scenarioId, {
|
|
70
|
+
promptId: options.promptId,
|
|
71
|
+
personaId: options?.personaId || scenario.personaIds?.[0]?.toString(),
|
|
72
|
+
maxTurns: options?.maxTurns,
|
|
73
|
+
parameters: options?.parameters,
|
|
74
|
+
});
|
|
75
|
+
this.logger.log(`Created and enqueued execution ${executionId} for scenario ${scenarioId}`);
|
|
76
|
+
return executionId;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
this.logger.error(`Failed to execute scenario: ${error.message}`, error.stack);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get a single execution by executionId.
|
|
85
|
+
*/
|
|
86
|
+
async getExecution(executionId) {
|
|
87
|
+
try {
|
|
88
|
+
const execution = await this.executionModel.findOne({ executionId });
|
|
89
|
+
if (!execution) {
|
|
90
|
+
throw new common_1.NotFoundException(`Execution with ID ${executionId} not found`);
|
|
91
|
+
}
|
|
92
|
+
return execution.toJSON();
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (error instanceof common_1.NotFoundException) {
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
this.logger.error(`Failed to get execution: ${error.message}`, error.stack);
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* List executions with filters and pagination.
|
|
104
|
+
*/
|
|
105
|
+
async listExecutions(filters, pagination) {
|
|
106
|
+
try {
|
|
107
|
+
const query = {};
|
|
108
|
+
if (filters) {
|
|
109
|
+
if (filters.status) {
|
|
110
|
+
query.status = filters.status;
|
|
111
|
+
}
|
|
112
|
+
if (filters.scenarioId) {
|
|
113
|
+
query.scenarioId = new mongoose_2.Types.ObjectId(filters.scenarioId);
|
|
114
|
+
}
|
|
115
|
+
if (filters.agentId) {
|
|
116
|
+
query.agentId = new mongoose_2.Types.ObjectId(filters.agentId);
|
|
117
|
+
}
|
|
118
|
+
if (filters.personaId) {
|
|
119
|
+
query.personaId = new mongoose_2.Types.ObjectId(filters.personaId);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
let queryBuilder = this.executionModel
|
|
123
|
+
.find(query)
|
|
124
|
+
.sort({ startTime: -1 });
|
|
125
|
+
if (pagination?.offset) {
|
|
126
|
+
queryBuilder = queryBuilder.skip(pagination.offset);
|
|
127
|
+
}
|
|
128
|
+
if (pagination?.limit) {
|
|
129
|
+
queryBuilder = queryBuilder.limit(pagination.limit);
|
|
130
|
+
}
|
|
131
|
+
const executions = await queryBuilder.exec();
|
|
132
|
+
const total = await this.executionModel.countDocuments(query);
|
|
133
|
+
return {
|
|
134
|
+
executions: executions.map((e) => e.toJSON()),
|
|
135
|
+
total,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
this.logger.error(`Failed to list executions: ${error.message}`, error.stack);
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Cancel a running or queued execution.
|
|
145
|
+
* Transitions status from running/queued to cancelled.
|
|
146
|
+
*/
|
|
147
|
+
async cancelExecution(executionId) {
|
|
148
|
+
try {
|
|
149
|
+
const execution = await this.executionModel.findOne({ executionId });
|
|
150
|
+
if (!execution) {
|
|
151
|
+
throw new common_1.NotFoundException(`Execution with ID ${executionId} not found`);
|
|
152
|
+
}
|
|
153
|
+
if (!['queued', 'running'].includes(execution.status)) {
|
|
154
|
+
throw new common_1.BadRequestException(`Cannot cancel execution with status "${execution.status}"`);
|
|
155
|
+
}
|
|
156
|
+
await this.executionModel.findOneAndUpdate({ executionId }, {
|
|
157
|
+
status: 'cancelled',
|
|
158
|
+
endTime: new Date(),
|
|
159
|
+
updatedAt: new Date(),
|
|
160
|
+
});
|
|
161
|
+
this.logger.log(`Cancelled execution ${executionId}`);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
if (error instanceof common_1.NotFoundException ||
|
|
165
|
+
error instanceof common_1.BadRequestException) {
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
this.logger.error(`Failed to cancel execution: ${error.message}`, error.stack);
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
exports.ExecutionService = ExecutionService;
|
|
174
|
+
exports.ExecutionService = ExecutionService = ExecutionService_1 = __decorate([
|
|
175
|
+
(0, common_1.Injectable)(),
|
|
176
|
+
__param(0, (0, mongoose_1.InjectModel)(scenario_execution_schema_1.ScenarioExecution.name)),
|
|
177
|
+
__param(1, (0, mongoose_1.InjectModel)(scenario_schema_1.Scenario.name)),
|
|
178
|
+
__metadata("design:paramtypes", [mongoose_2.Model,
|
|
179
|
+
mongoose_2.Model,
|
|
180
|
+
queue_producer_service_1.QueueProducerService])
|
|
181
|
+
], ExecutionService);
|
|
182
|
+
//# sourceMappingURL=execution.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.service.js","sourceRoot":"","sources":["../../src/execution/execution.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './execution.module';
|
|
2
|
+
export * from './execution.service';
|
|
3
|
+
export * from './queue-producer.service';
|
|
4
|
+
export * from './execution-processor';
|
|
5
|
+
export * from './queues.config';
|
|
6
|
+
export * from './interfaces/job-data.interface';
|
|
7
|
+
export * from './template-renderer';
|
|
8
|
+
export * from './llm-config-resolver';
|
|
9
|
+
export * from './agent-config-resolver';
|
|
10
|
+
export { buildLlmJudge, buildOpenAiJudge } from './judge-llm';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
exports.buildOpenAiJudge = exports.buildLlmJudge = void 0;
|
|
18
|
+
__exportStar(require("./execution.module"), exports);
|
|
19
|
+
__exportStar(require("./execution.service"), exports);
|
|
20
|
+
__exportStar(require("./queue-producer.service"), exports);
|
|
21
|
+
__exportStar(require("./execution-processor"), exports);
|
|
22
|
+
__exportStar(require("./queues.config"), exports);
|
|
23
|
+
__exportStar(require("./interfaces/job-data.interface"), exports);
|
|
24
|
+
__exportStar(require("./template-renderer"), exports);
|
|
25
|
+
__exportStar(require("./llm-config-resolver"), exports);
|
|
26
|
+
__exportStar(require("./agent-config-resolver"), exports);
|
|
27
|
+
var judge_llm_1 = require("./judge-llm");
|
|
28
|
+
Object.defineProperty(exports, "buildLlmJudge", { enumerable: true, get: function () { return judge_llm_1.buildLlmJudge; } });
|
|
29
|
+
Object.defineProperty(exports, "buildOpenAiJudge", { enumerable: true, get: function () { return judge_llm_1.buildOpenAiJudge; } });
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,sDAAoC;AACpC,2DAAyC;AACzC,wDAAsC;AACtC,kDAAgC;AAChC,kEAAgD;AAChD,sDAAoC;AACpC,wDAAsC;AACtC,0DAAwC;AACxC,yCAA8D;AAArD,0GAAA,aAAa,OAAA;AAAE,6GAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data structure for scenario execution jobs enqueued to BullMQ.
|
|
3
|
+
*/
|
|
4
|
+
export interface ScenarioExecutionJobData {
|
|
5
|
+
executionId: string;
|
|
6
|
+
scenarioId: string;
|
|
7
|
+
promptId: string;
|
|
8
|
+
personaId?: string;
|
|
9
|
+
maxTurns?: number;
|
|
10
|
+
parameters?: Record<string, any>;
|
|
11
|
+
toolFixtureIds?: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Result produced by the execution processor after a scenario run.
|
|
15
|
+
*/
|
|
16
|
+
export interface ScenarioExecutionResult {
|
|
17
|
+
passed: boolean;
|
|
18
|
+
score: number;
|
|
19
|
+
duration: number;
|
|
20
|
+
transcript: TranscriptEntry[];
|
|
21
|
+
metrics?: Record<string, number>;
|
|
22
|
+
errors?: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Single entry in a conversation transcript.
|
|
26
|
+
*/
|
|
27
|
+
export interface TranscriptEntry {
|
|
28
|
+
role: 'persona' | 'agent' | 'tool';
|
|
29
|
+
content: string;
|
|
30
|
+
timestamp: Date;
|
|
31
|
+
latencyMs?: number;
|
|
32
|
+
toolCalls?: Array<{
|
|
33
|
+
name: string;
|
|
34
|
+
arguments: Record<string, any>;
|
|
35
|
+
result: any;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=job-data.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-data.interface.d.ts","sourceRoot":"","sources":["../../../src/execution/interfaces/job-data.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,CAAC;KACb,CAAC,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-data.interface.js","sourceRoot":"","sources":["../../../src/execution/interfaces/job-data.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ResolvedLlmConfig } from './llm-config-resolver';
|
|
2
|
+
/** Params passed to the judge evaluation function */
|
|
3
|
+
interface JudgeParams {
|
|
4
|
+
criterionName: string;
|
|
5
|
+
description: string;
|
|
6
|
+
evaluationType: 'boolean' | 'score';
|
|
7
|
+
transcript: string;
|
|
8
|
+
threshold?: {
|
|
9
|
+
type: 'boolean' | 'numerical';
|
|
10
|
+
expectedValue?: boolean;
|
|
11
|
+
min?: number;
|
|
12
|
+
max?: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/** Result from the judge evaluation function */
|
|
16
|
+
interface JudgeResult {
|
|
17
|
+
result: boolean | number;
|
|
18
|
+
passed: boolean;
|
|
19
|
+
reasoning: string;
|
|
20
|
+
evidence: string[];
|
|
21
|
+
confidence?: number;
|
|
22
|
+
}
|
|
23
|
+
type JudgeFn = (params: JudgeParams) => Promise<JudgeResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Build an LLM judge function that supports both OpenAI and Anthropic.
|
|
26
|
+
* Returns undefined if config is not provided.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildLlmJudge(config: ResolvedLlmConfig | undefined): JudgeFn | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated Use `buildLlmJudge` with a `ResolvedLlmConfig` instead.
|
|
31
|
+
* Kept for backwards compatibility.
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildOpenAiJudge(apiKey: string | undefined, model?: string): JudgeFn | undefined;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=judge-llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"judge-llm.d.ts","sourceRoot":"","sources":["../../src/execution/judge-llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qDAAqD;AACrD,UAAU,WAAW;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,SAAS,GAAG,OAAO,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;QAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,gDAAgD;AAChD,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,OAAO,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAwD7D;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,OAAO,GAAG,SAAS,CAOrB;AAiED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,SAAgB,GACpB,OAAO,GAAG,SAAS,CAGrB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildLlmJudge = buildLlmJudge;
|
|
4
|
+
exports.buildOpenAiJudge = buildOpenAiJudge;
|
|
5
|
+
const SYSTEM_PROMPT = `You are a strict but fair evaluator for AI agent quality.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
- Evaluate SUBSTANCE, not rigid formulas.
|
|
9
|
+
- Be STRICT about template placeholders — if the agent outputs "[insert X here]", "etc.]", or similar unfilled templates, that is a FAILURE for clarity/resolution.
|
|
10
|
+
- Reasoning: 1-2 sentences max. State the verdict and the key reason. No filler.
|
|
11
|
+
- Evidence: max 2 short quotes (under 15 words each). Pick the most relevant.
|
|
12
|
+
- For scores: 7+ = good, 5-6 = mediocre, below 5 = bad.
|
|
13
|
+
|
|
14
|
+
Respond with JSON only: {"result": boolean|number, "passed": boolean, "reasoning": string, "evidence": string[]}`;
|
|
15
|
+
function buildUserPrompt(params) {
|
|
16
|
+
const thresholdHint = params.threshold?.type === 'boolean'
|
|
17
|
+
? `Expected boolean outcome: ${params.threshold.expectedValue}`
|
|
18
|
+
: params.threshold?.type === 'numerical'
|
|
19
|
+
? `Score should be between ${params.threshold.min ?? '?'} and ${params.threshold.max ?? '?'}`
|
|
20
|
+
: '';
|
|
21
|
+
return `Criterion: ${params.criterionName}
|
|
22
|
+
Description: ${params.description}
|
|
23
|
+
Evaluation type: ${params.evaluationType}
|
|
24
|
+
${thresholdHint}
|
|
25
|
+
|
|
26
|
+
Transcript:
|
|
27
|
+
${params.transcript}`;
|
|
28
|
+
}
|
|
29
|
+
function parseJudgeResponse(raw, evaluationType) {
|
|
30
|
+
try {
|
|
31
|
+
const parsed = JSON.parse(raw);
|
|
32
|
+
const result = parsed.result ?? (evaluationType === 'boolean' ? false : 5);
|
|
33
|
+
const passed = parsed.passed ??
|
|
34
|
+
(typeof result === 'boolean' ? result : Number(result) >= 7);
|
|
35
|
+
return {
|
|
36
|
+
result: result,
|
|
37
|
+
passed,
|
|
38
|
+
reasoning: parsed.reasoning || 'LLM evaluation completed.',
|
|
39
|
+
evidence: parsed.evidence || [],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Malformed JSON — return safe defaults
|
|
44
|
+
const result = evaluationType === 'boolean' ? false : 5;
|
|
45
|
+
return {
|
|
46
|
+
result,
|
|
47
|
+
passed: false,
|
|
48
|
+
reasoning: 'LLM evaluation completed (response parsing failed).',
|
|
49
|
+
evidence: [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Build an LLM judge function that supports both OpenAI and Anthropic.
|
|
55
|
+
* Returns undefined if config is not provided.
|
|
56
|
+
*/
|
|
57
|
+
function buildLlmJudge(config) {
|
|
58
|
+
if (!config)
|
|
59
|
+
return undefined;
|
|
60
|
+
if (config.kind === 'anthropic') {
|
|
61
|
+
return buildAnthropicJudge(config);
|
|
62
|
+
}
|
|
63
|
+
return buildOpenAiJudgeInternal(config);
|
|
64
|
+
}
|
|
65
|
+
function buildOpenAiJudgeInternal(config) {
|
|
66
|
+
const model = config.model || 'gpt-4o-mini';
|
|
67
|
+
return async (params) => {
|
|
68
|
+
const res = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
headers: {
|
|
71
|
+
'Content-Type': 'application/json',
|
|
72
|
+
Authorization: `Bearer ${config.apiKey}`,
|
|
73
|
+
},
|
|
74
|
+
body: JSON.stringify({
|
|
75
|
+
model,
|
|
76
|
+
temperature: 0.2,
|
|
77
|
+
messages: [
|
|
78
|
+
{ role: 'system', content: SYSTEM_PROMPT },
|
|
79
|
+
{ role: 'user', content: buildUserPrompt(params) },
|
|
80
|
+
],
|
|
81
|
+
response_format: { type: 'json_object' },
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
84
|
+
if (!res.ok) {
|
|
85
|
+
throw new Error(`OpenAI judge error: ${await res.text()}`);
|
|
86
|
+
}
|
|
87
|
+
const data = await res.json();
|
|
88
|
+
const raw = data.choices?.[0]?.message?.content || '{}';
|
|
89
|
+
return parseJudgeResponse(raw, params.evaluationType);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function buildAnthropicJudge(config) {
|
|
93
|
+
const model = config.model || 'claude-3-5-haiku-20241022';
|
|
94
|
+
return async (params) => {
|
|
95
|
+
const res = await fetch('https://api.anthropic.com/v1/messages', {
|
|
96
|
+
method: 'POST',
|
|
97
|
+
headers: {
|
|
98
|
+
'Content-Type': 'application/json',
|
|
99
|
+
'x-api-key': config.apiKey,
|
|
100
|
+
'anthropic-version': '2023-06-01',
|
|
101
|
+
},
|
|
102
|
+
body: JSON.stringify({
|
|
103
|
+
model,
|
|
104
|
+
max_tokens: 1024,
|
|
105
|
+
temperature: 0.2,
|
|
106
|
+
system: SYSTEM_PROMPT,
|
|
107
|
+
messages: [
|
|
108
|
+
{ role: 'user', content: buildUserPrompt(params) },
|
|
109
|
+
],
|
|
110
|
+
}),
|
|
111
|
+
});
|
|
112
|
+
if (!res.ok) {
|
|
113
|
+
throw new Error(`Anthropic judge error: ${await res.text()}`);
|
|
114
|
+
}
|
|
115
|
+
const data = await res.json();
|
|
116
|
+
const raw = data.content?.[0]?.text || '{}';
|
|
117
|
+
return parseJudgeResponse(raw, params.evaluationType);
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* @deprecated Use `buildLlmJudge` with a `ResolvedLlmConfig` instead.
|
|
122
|
+
* Kept for backwards compatibility.
|
|
123
|
+
*/
|
|
124
|
+
function buildOpenAiJudge(apiKey, model = 'gpt-4o-mini') {
|
|
125
|
+
if (!apiKey)
|
|
126
|
+
return undefined;
|
|
127
|
+
return buildLlmJudge({ kind: 'openai', apiKey, model });
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=judge-llm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"judge-llm.js","sourceRoot":"","sources":["../../src/execution/judge-llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central LLM configuration resolver for chanl-eval.
|
|
3
|
+
*
|
|
4
|
+
* Replaces 6 scattered resolution paths with a single 4-tier chain:
|
|
5
|
+
* 1. Explicit config (adapterConfig.apiKey)
|
|
6
|
+
* 2. Simulation-specific keys (adapterConfig.simulationApiKey, legacy fields)
|
|
7
|
+
* 3. Environment variables (CHANL_OPENAI_API_KEY, CHANL_ANTHROPIC_API_KEY)
|
|
8
|
+
* 4. Settings DB (async callback)
|
|
9
|
+
*/
|
|
10
|
+
export interface ResolvedLlmConfig {
|
|
11
|
+
kind: 'openai' | 'anthropic';
|
|
12
|
+
apiKey: string;
|
|
13
|
+
model?: string;
|
|
14
|
+
}
|
|
15
|
+
export type SettingsLookup = (provider: string) => Promise<string | undefined>;
|
|
16
|
+
/**
|
|
17
|
+
* Synchronous resolver — tiers 1-3 (no DB access).
|
|
18
|
+
* Used by persona-llm.ts and persona strategies where async isn't needed.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveLlmConfigSync(adapterType: string | undefined, adapterConfig: Record<string, any> | undefined): ResolvedLlmConfig | null;
|
|
21
|
+
/**
|
|
22
|
+
* Async resolver — all 4 tiers including settings DB lookup.
|
|
23
|
+
* Used by ExecutionProcessor and ChatService where DB access is available.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveLlmConfig(adapterType: string | undefined, adapterConfig: Record<string, any> | undefined, settingsLookup?: SettingsLookup): Promise<ResolvedLlmConfig | null>;
|
|
26
|
+
//# sourceMappingURL=llm-config-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-config-resolver.d.ts","sourceRoot":"","sources":["../../src/execution/llm-config-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAM/E;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAC7C,iBAAiB,GAAG,IAAI,CA4C1B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC9C,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAkCnC"}
|