@inspectr/mcplab-core 0.1.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/dist/agent.d.ts +78 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +565 -0
- package/dist/agent.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +513 -0
- package/dist/config.js.map +1 -0
- package/dist/eval.d.ts +18 -0
- package/dist/eval.d.ts.map +1 -0
- package/dist/eval.js +111 -0
- package/dist/eval.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +19 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +198 -0
- package/dist/mcp.js.map +1 -0
- package/dist/results.d.ts +17 -0
- package/dist/results.d.ts.map +1 -0
- package/dist/results.js +111 -0
- package/dist/results.js.map +1 -0
- package/dist/runner.d.ts +66 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +176 -0
- package/dist/runner.js.map +1 -0
- package/dist/trace.d.ts +7 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +11 -0
- package/dist/trace.js.map +1 -0
- package/dist/types.d.ts +268 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +49 -0
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EvalConfig, ExecutableEvalConfig, SourceEvalConfig } from './types.js';
|
|
2
|
+
export declare function loadConfig(path: string, options?: {
|
|
3
|
+
bundleRoot?: string;
|
|
4
|
+
}): {
|
|
5
|
+
config: EvalConfig;
|
|
6
|
+
sourceConfig: SourceEvalConfig;
|
|
7
|
+
hash: string;
|
|
8
|
+
raw: string;
|
|
9
|
+
warnings: string[];
|
|
10
|
+
};
|
|
11
|
+
export declare function selectScenarios<T extends {
|
|
12
|
+
scenarios: Array<{
|
|
13
|
+
id: string;
|
|
14
|
+
}>;
|
|
15
|
+
}>(config: T, scenarioId?: string): T;
|
|
16
|
+
export declare function normalizeSourceConfig(sourceConfig: SourceEvalConfig): {
|
|
17
|
+
config: SourceEvalConfig;
|
|
18
|
+
warnings: string[];
|
|
19
|
+
};
|
|
20
|
+
export declare function normalizeLibraryServers(raw: unknown): Record<string, EvalConfig['servers'][string]>;
|
|
21
|
+
export declare function normalizeLibraryAgents(raw: unknown): Record<string, EvalConfig['agents'][string]>;
|
|
22
|
+
export declare function expandConfigForAgents(config: EvalConfig, requestedAgents?: string[]): ExecutableEvalConfig;
|
|
23
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAIV,UAAU,EACV,oBAAoB,EAOpB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAWA;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,EAC5E,MAAM,EAAE,CAAC,EACT,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,CAOH;AAuKD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,gBAAgB,GAC7B;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA+MlD;AAYD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAoCnG;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CA0CjG;AAgDD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,oBAAoB,CAuBtB"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
3
|
+
import { dirname, join, resolve } from 'node:path';
|
|
4
|
+
import { parse } from 'yaml';
|
|
5
|
+
export function loadConfig(path, options) {
|
|
6
|
+
const raw = readFileSync(path, 'utf8');
|
|
7
|
+
const sourceConfig = parse(raw);
|
|
8
|
+
if (!sourceConfig || typeof sourceConfig !== 'object') {
|
|
9
|
+
throw new Error('Invalid config: expected object');
|
|
10
|
+
}
|
|
11
|
+
const { config: normalizedSource, warnings } = normalizeSourceConfig(sourceConfig);
|
|
12
|
+
const config = resolveReferences(normalizedSource, path, options?.bundleRoot);
|
|
13
|
+
const hash = createHash('sha256').update(stableStringify(config)).digest('hex');
|
|
14
|
+
return { config, sourceConfig: normalizedSource, hash, raw, warnings };
|
|
15
|
+
}
|
|
16
|
+
export function selectScenarios(config, scenarioId) {
|
|
17
|
+
if (!scenarioId)
|
|
18
|
+
return config;
|
|
19
|
+
const scenarios = config.scenarios.filter((s) => s.id === scenarioId);
|
|
20
|
+
if (scenarios.length === 0) {
|
|
21
|
+
throw new Error(`Scenario not found: ${scenarioId}`);
|
|
22
|
+
}
|
|
23
|
+
return { ...config, scenarios };
|
|
24
|
+
}
|
|
25
|
+
function resolveReferences(sourceConfig, configPath, bundleRootOverride) {
|
|
26
|
+
const bundleRoot = bundleRootOverride
|
|
27
|
+
? resolve(bundleRootOverride)
|
|
28
|
+
: detectBundleRoot(configPath);
|
|
29
|
+
const libraryServers = normalizeLibraryServers(readYaml(join(bundleRoot, 'servers.yaml'), {}));
|
|
30
|
+
const libraryAgents = normalizeLibraryAgents(readYaml(join(bundleRoot, 'agents.yaml'), {}));
|
|
31
|
+
const libraryScenarios = readScenarioLibrary(join(bundleRoot, 'scenarios'));
|
|
32
|
+
const missingServerRefs = [];
|
|
33
|
+
const resolvedServers = {};
|
|
34
|
+
const seenServerNames = new Set();
|
|
35
|
+
for (const entry of sourceConfig.servers ?? []) {
|
|
36
|
+
if (isServerRefEntry(entry)) {
|
|
37
|
+
const ref = String(entry.ref || '').trim();
|
|
38
|
+
if (!ref) {
|
|
39
|
+
missingServerRefs.push('(empty-ref)');
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const server = libraryServers[ref];
|
|
43
|
+
if (!server) {
|
|
44
|
+
missingServerRefs.push(ref);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (seenServerNames.has(ref)) {
|
|
48
|
+
throw new Error(`Duplicate server name detected while resolving refs: ${ref}`);
|
|
49
|
+
}
|
|
50
|
+
seenServerNames.add(ref);
|
|
51
|
+
resolvedServers[ref] = server;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const inlineId = String(entry.id ?? '').trim();
|
|
55
|
+
const legacyName = String(entry.name ?? '').trim();
|
|
56
|
+
const resolvedId = inlineId || legacyName;
|
|
57
|
+
if (!resolvedId) {
|
|
58
|
+
throw new Error('Invalid config: inline server is missing required id');
|
|
59
|
+
}
|
|
60
|
+
if (seenServerNames.has(resolvedId)) {
|
|
61
|
+
throw new Error(`Duplicate server id detected: ${resolvedId}`);
|
|
62
|
+
}
|
|
63
|
+
seenServerNames.add(resolvedId);
|
|
64
|
+
resolvedServers[resolvedId] = {
|
|
65
|
+
transport: entry.transport,
|
|
66
|
+
url: entry.url,
|
|
67
|
+
auth: entry.auth
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const missingAgentRefs = [];
|
|
71
|
+
const resolvedAgents = {};
|
|
72
|
+
const seenAgentNames = new Set();
|
|
73
|
+
for (const entry of sourceConfig.agents ?? []) {
|
|
74
|
+
if (isAgentRefEntry(entry)) {
|
|
75
|
+
const ref = String(entry.ref || '').trim();
|
|
76
|
+
if (!ref) {
|
|
77
|
+
missingAgentRefs.push('(empty-ref)');
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const agent = libraryAgents[ref];
|
|
81
|
+
if (!agent) {
|
|
82
|
+
missingAgentRefs.push(ref);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (seenAgentNames.has(ref)) {
|
|
86
|
+
throw new Error(`Duplicate agent name detected while resolving refs: ${ref}`);
|
|
87
|
+
}
|
|
88
|
+
seenAgentNames.add(ref);
|
|
89
|
+
resolvedAgents[ref] = agent;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const inlineId = String(entry.id ?? '').trim();
|
|
93
|
+
const legacyName = String(entry.name ?? '').trim();
|
|
94
|
+
const resolvedId = inlineId || legacyName;
|
|
95
|
+
if (!resolvedId) {
|
|
96
|
+
throw new Error('Invalid config: inline agent is missing required id');
|
|
97
|
+
}
|
|
98
|
+
if (seenAgentNames.has(resolvedId)) {
|
|
99
|
+
throw new Error(`Duplicate agent id detected: ${resolvedId}`);
|
|
100
|
+
}
|
|
101
|
+
seenAgentNames.add(resolvedId);
|
|
102
|
+
resolvedAgents[resolvedId] = {
|
|
103
|
+
provider: entry.provider,
|
|
104
|
+
model: entry.model,
|
|
105
|
+
temperature: entry.temperature,
|
|
106
|
+
max_tokens: entry.max_tokens,
|
|
107
|
+
system: entry.system
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const scenarios = [];
|
|
111
|
+
const seenScenarioIds = new Set();
|
|
112
|
+
const missingScenarioRefs = [];
|
|
113
|
+
for (const entry of sourceConfig.scenarios ?? []) {
|
|
114
|
+
if (isScenarioRefEntry(entry)) {
|
|
115
|
+
const ref = String(entry.ref || '').trim();
|
|
116
|
+
if (!ref) {
|
|
117
|
+
missingScenarioRefs.push('(empty-ref)');
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const scenario = libraryScenarios[ref];
|
|
121
|
+
if (!scenario) {
|
|
122
|
+
missingScenarioRefs.push(ref);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (seenScenarioIds.has(scenario.id)) {
|
|
126
|
+
throw new Error(`Duplicate scenario id detected while resolving refs: ${scenario.id}`);
|
|
127
|
+
}
|
|
128
|
+
seenScenarioIds.add(scenario.id);
|
|
129
|
+
scenarios.push(scenario);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const inline = entry;
|
|
133
|
+
const inlineId = String(inline.id || '').trim();
|
|
134
|
+
if (!inlineId) {
|
|
135
|
+
throw new Error('Invalid config: inline scenario is missing required id');
|
|
136
|
+
}
|
|
137
|
+
if (seenScenarioIds.has(inlineId)) {
|
|
138
|
+
throw new Error(`Duplicate scenario id detected: ${inlineId}`);
|
|
139
|
+
}
|
|
140
|
+
seenScenarioIds.add(inlineId);
|
|
141
|
+
scenarios.push(inline);
|
|
142
|
+
}
|
|
143
|
+
const missingMessages = [];
|
|
144
|
+
if (missingServerRefs.length > 0) {
|
|
145
|
+
missingMessages.push(`servers refs: ${missingServerRefs.join(', ')}`);
|
|
146
|
+
}
|
|
147
|
+
if (missingAgentRefs.length > 0) {
|
|
148
|
+
missingMessages.push(`agents refs: ${missingAgentRefs.join(', ')}`);
|
|
149
|
+
}
|
|
150
|
+
if (missingScenarioRefs.length > 0) {
|
|
151
|
+
missingMessages.push(`scenarios refs: ${missingScenarioRefs.join(', ')}`);
|
|
152
|
+
}
|
|
153
|
+
const defaultAgents = sourceConfig.run_defaults?.selected_agents ?? [];
|
|
154
|
+
const missingDefaultAgents = defaultAgents.filter((agent) => !resolvedAgents[agent]);
|
|
155
|
+
if (missingDefaultAgents.length > 0) {
|
|
156
|
+
missingMessages.push(`run_defaults.selected_agents: ${missingDefaultAgents.join(', ')}`);
|
|
157
|
+
}
|
|
158
|
+
if (sourceConfig.run_defaults?.selected_agents &&
|
|
159
|
+
sourceConfig.run_defaults.selected_agents.length === 0) {
|
|
160
|
+
missingMessages.push('run_defaults.selected_agents must include at least one valid agent');
|
|
161
|
+
}
|
|
162
|
+
if (missingMessages.length > 0) {
|
|
163
|
+
throw new Error(`Unresolved config references (${bundleRoot}): ${missingMessages.join(' | ')}`);
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
...sourceConfig,
|
|
167
|
+
servers: resolvedServers,
|
|
168
|
+
agents: resolvedAgents,
|
|
169
|
+
scenarios
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
export function normalizeSourceConfig(sourceConfig) {
|
|
173
|
+
const warnings = [];
|
|
174
|
+
const sourceConfigRecord = sourceConfig;
|
|
175
|
+
if ('server_refs' in sourceConfigRecord) {
|
|
176
|
+
throw new Error('Invalid config: server_refs is not supported; use servers[{ ref: "<id>" }]');
|
|
177
|
+
}
|
|
178
|
+
if ('agent_refs' in sourceConfigRecord) {
|
|
179
|
+
throw new Error('Invalid config: agent_refs is not supported; use agents[{ ref: "<id>" }]');
|
|
180
|
+
}
|
|
181
|
+
if ('scenario_refs' in sourceConfigRecord) {
|
|
182
|
+
throw new Error('Invalid config: scenario_refs is not supported; use scenarios[{ ref: "<id>" }]');
|
|
183
|
+
}
|
|
184
|
+
const legacyPinnedAgents = new Set();
|
|
185
|
+
const rawServers = sourceConfig.servers;
|
|
186
|
+
const serversInput = Array.isArray(rawServers) ? rawServers : [];
|
|
187
|
+
const normalizedServers = [];
|
|
188
|
+
if (Array.isArray(rawServers)) {
|
|
189
|
+
for (const rawServer of serversInput) {
|
|
190
|
+
const server = rawServer;
|
|
191
|
+
if (isServerRefEntry(server)) {
|
|
192
|
+
const ref = String(server.ref ?? '').trim();
|
|
193
|
+
if (!ref)
|
|
194
|
+
throw new Error('Invalid config: server ref must be a non-empty id');
|
|
195
|
+
normalizedServers.push({ ref });
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const inlineId = String(server.id ?? '').trim();
|
|
199
|
+
const legacyName = String(server.name ?? '').trim();
|
|
200
|
+
const resolvedId = inlineId || legacyName;
|
|
201
|
+
if (!resolvedId)
|
|
202
|
+
throw new Error('Invalid config: inline server is missing required id');
|
|
203
|
+
if (!inlineId && legacyName) {
|
|
204
|
+
warnings.push(`Legacy inline server.name migrated to server.id: ${legacyName}`);
|
|
205
|
+
}
|
|
206
|
+
normalizedServers.push({
|
|
207
|
+
id: resolvedId,
|
|
208
|
+
name: legacyName || undefined,
|
|
209
|
+
transport: server.transport,
|
|
210
|
+
url: server.url,
|
|
211
|
+
auth: server.auth
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
const legacyInlineServers = rawServers && typeof rawServers === 'object' && !Array.isArray(rawServers)
|
|
217
|
+
? rawServers
|
|
218
|
+
: {};
|
|
219
|
+
for (const [name, server] of Object.entries(legacyInlineServers)) {
|
|
220
|
+
normalizedServers.push({
|
|
221
|
+
id: name,
|
|
222
|
+
name: typeof server.name === 'string' ? String(server.name) : undefined,
|
|
223
|
+
transport: server.transport,
|
|
224
|
+
url: server.url,
|
|
225
|
+
auth: server.auth
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
if (Object.keys(legacyInlineServers).length > 0) {
|
|
229
|
+
warnings.push('Legacy servers object map was migrated into servers[] entries.');
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const scenariosInput = Array.isArray(sourceConfig.scenarios) ? sourceConfig.scenarios : [];
|
|
233
|
+
const rawAgents = sourceConfig.agents;
|
|
234
|
+
const agentsInput = Array.isArray(rawAgents) ? rawAgents : [];
|
|
235
|
+
const normalizedAgents = [];
|
|
236
|
+
if (Array.isArray(rawAgents)) {
|
|
237
|
+
for (const rawAgent of agentsInput) {
|
|
238
|
+
const agent = rawAgent;
|
|
239
|
+
if (isAgentRefEntry(agent)) {
|
|
240
|
+
const ref = String(agent.ref ?? '').trim();
|
|
241
|
+
if (!ref)
|
|
242
|
+
throw new Error('Invalid config: agent ref must be a non-empty id');
|
|
243
|
+
normalizedAgents.push({ ref });
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
const inlineId = String(agent.id ?? '').trim();
|
|
247
|
+
const legacyName = String(agent.name ?? '').trim();
|
|
248
|
+
const resolvedId = inlineId || legacyName;
|
|
249
|
+
if (!resolvedId)
|
|
250
|
+
throw new Error('Invalid config: inline agent is missing required id');
|
|
251
|
+
if (!inlineId && legacyName) {
|
|
252
|
+
warnings.push(`Legacy inline agent.name migrated to agent.id: ${legacyName}`);
|
|
253
|
+
}
|
|
254
|
+
normalizedAgents.push({
|
|
255
|
+
id: resolvedId,
|
|
256
|
+
name: legacyName || undefined,
|
|
257
|
+
provider: agent.provider,
|
|
258
|
+
model: agent.model,
|
|
259
|
+
temperature: agent.temperature,
|
|
260
|
+
max_tokens: agent.max_tokens,
|
|
261
|
+
system: agent.system
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
const legacyInlineAgents = rawAgents && typeof rawAgents === 'object' && !Array.isArray(rawAgents)
|
|
267
|
+
? rawAgents
|
|
268
|
+
: {};
|
|
269
|
+
for (const [name, agent] of Object.entries(legacyInlineAgents)) {
|
|
270
|
+
normalizedAgents.push({
|
|
271
|
+
id: name,
|
|
272
|
+
name: typeof agent.name === 'string' ? String(agent.name) : undefined,
|
|
273
|
+
provider: agent.provider,
|
|
274
|
+
model: agent.model,
|
|
275
|
+
temperature: agent.temperature,
|
|
276
|
+
max_tokens: agent.max_tokens,
|
|
277
|
+
system: agent.system
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
if (Object.keys(legacyInlineAgents).length > 0) {
|
|
281
|
+
warnings.push('Legacy agents object map was migrated into agents[] entries.');
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
const normalizedScenarios = [];
|
|
285
|
+
for (const scenario of scenariosInput) {
|
|
286
|
+
if (isScenarioRefEntry(scenario)) {
|
|
287
|
+
const ref = String(scenario.ref ?? '').trim();
|
|
288
|
+
if (!ref)
|
|
289
|
+
throw new Error('Invalid config: scenario ref must be a non-empty id');
|
|
290
|
+
normalizedScenarios.push({ ref });
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
const rawScenario = scenario;
|
|
294
|
+
const nextScenario = {
|
|
295
|
+
id: rawScenario.id,
|
|
296
|
+
name: rawScenario.name,
|
|
297
|
+
servers: rawScenario.servers,
|
|
298
|
+
prompt: rawScenario.prompt,
|
|
299
|
+
eval: rawScenario.eval,
|
|
300
|
+
extract: rawScenario.extract
|
|
301
|
+
};
|
|
302
|
+
const legacyAgent = typeof rawScenario.agent === 'string' ? rawScenario.agent.trim() : '';
|
|
303
|
+
if (legacyAgent)
|
|
304
|
+
legacyPinnedAgents.add(legacyAgent);
|
|
305
|
+
const legacySnapshotEnabled = typeof rawScenario.snapshot_eval_enabled === 'boolean'
|
|
306
|
+
? rawScenario.snapshot_eval_enabled
|
|
307
|
+
: undefined;
|
|
308
|
+
if (rawScenario.snapshot_eval || legacySnapshotEnabled !== undefined) {
|
|
309
|
+
nextScenario.snapshot_eval = {
|
|
310
|
+
...(rawScenario.snapshot_eval ?? {}),
|
|
311
|
+
...(legacySnapshotEnabled !== undefined ? { enabled: legacySnapshotEnabled } : {})
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
normalizedScenarios.push(nextScenario);
|
|
315
|
+
}
|
|
316
|
+
const normalized = {
|
|
317
|
+
...sourceConfig,
|
|
318
|
+
name: typeof sourceConfig.name === 'string'
|
|
319
|
+
? String(sourceConfig.name).trim() || undefined
|
|
320
|
+
: undefined,
|
|
321
|
+
servers: normalizedServers,
|
|
322
|
+
agents: normalizedAgents,
|
|
323
|
+
scenarios: normalizedScenarios
|
|
324
|
+
};
|
|
325
|
+
if (!Array.isArray(normalized.servers)) {
|
|
326
|
+
throw new Error('Invalid config: servers must be an array');
|
|
327
|
+
}
|
|
328
|
+
if (!Array.isArray(normalized.agents)) {
|
|
329
|
+
throw new Error('Invalid config: agents must be an array');
|
|
330
|
+
}
|
|
331
|
+
if (!Array.isArray(normalized.scenarios)) {
|
|
332
|
+
throw new Error('Invalid config: scenarios must be an array');
|
|
333
|
+
}
|
|
334
|
+
if (normalized.run_defaults &&
|
|
335
|
+
(typeof normalized.run_defaults !== 'object' || Array.isArray(normalized.run_defaults))) {
|
|
336
|
+
throw new Error('Invalid config: run_defaults must be an object');
|
|
337
|
+
}
|
|
338
|
+
if (normalized.run_defaults?.selected_agents !== undefined &&
|
|
339
|
+
!Array.isArray(normalized.run_defaults.selected_agents)) {
|
|
340
|
+
throw new Error('Invalid config: run_defaults.selected_agents must be an array');
|
|
341
|
+
}
|
|
342
|
+
if (legacyPinnedAgents.size > 0) {
|
|
343
|
+
const migrated = new Set(normalized.run_defaults?.selected_agents ?? []);
|
|
344
|
+
for (const agent of legacyPinnedAgents)
|
|
345
|
+
migrated.add(agent);
|
|
346
|
+
normalized.run_defaults = {
|
|
347
|
+
...(normalized.run_defaults ?? {}),
|
|
348
|
+
selected_agents: Array.from(migrated)
|
|
349
|
+
};
|
|
350
|
+
warnings.push(`Legacy scenario.agent was migrated to run_defaults.selected_agents (union): ${Array.from(legacyPinnedAgents).join(', ')}`);
|
|
351
|
+
}
|
|
352
|
+
if (normalized.scenarios.some((s) => !isScenarioRefEntry(s) && s.snapshot_eval && 'enabled' in (s.snapshot_eval ?? {})) &&
|
|
353
|
+
scenariosInput.some((s) => s?.snapshot_eval_enabled !== undefined)) {
|
|
354
|
+
warnings.push('Legacy scenario.snapshot_eval_enabled was migrated to scenario.snapshot_eval.enabled.');
|
|
355
|
+
}
|
|
356
|
+
if (normalized.run_defaults?.selected_agents) {
|
|
357
|
+
normalized.run_defaults.selected_agents = normalized.run_defaults.selected_agents
|
|
358
|
+
.map((v) => String(v).trim())
|
|
359
|
+
.filter(Boolean);
|
|
360
|
+
}
|
|
361
|
+
return { config: normalized, warnings };
|
|
362
|
+
}
|
|
363
|
+
function readYaml(path, fallback) {
|
|
364
|
+
if (!existsSync(path))
|
|
365
|
+
return fallback;
|
|
366
|
+
try {
|
|
367
|
+
const raw = readFileSync(path, 'utf8');
|
|
368
|
+
return parse(raw) ?? fallback;
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
return fallback;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
export function normalizeLibraryServers(raw) {
|
|
375
|
+
const out = {};
|
|
376
|
+
if (Array.isArray(raw)) {
|
|
377
|
+
for (const entry of raw) {
|
|
378
|
+
if (!entry || typeof entry !== 'object')
|
|
379
|
+
continue;
|
|
380
|
+
const server = entry;
|
|
381
|
+
const id = String(server.id ?? server.name ?? '').trim();
|
|
382
|
+
if (!id || !server.transport || !server.url)
|
|
383
|
+
continue;
|
|
384
|
+
out[id] = {
|
|
385
|
+
name: typeof server.name === 'string' ? server.name : undefined,
|
|
386
|
+
transport: server.transport,
|
|
387
|
+
url: server.url,
|
|
388
|
+
auth: server.auth
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
return out;
|
|
392
|
+
}
|
|
393
|
+
if (!raw || typeof raw !== 'object')
|
|
394
|
+
return out;
|
|
395
|
+
for (const [id, value] of Object.entries(raw)) {
|
|
396
|
+
if (!value || typeof value !== 'object')
|
|
397
|
+
continue;
|
|
398
|
+
const server = value;
|
|
399
|
+
if (!server.transport || !server.url)
|
|
400
|
+
continue;
|
|
401
|
+
out[id] = {
|
|
402
|
+
name: typeof server.name === 'string' ? server.name : undefined,
|
|
403
|
+
transport: server.transport,
|
|
404
|
+
url: server.url,
|
|
405
|
+
auth: server.auth
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
return out;
|
|
409
|
+
}
|
|
410
|
+
export function normalizeLibraryAgents(raw) {
|
|
411
|
+
const out = {};
|
|
412
|
+
if (Array.isArray(raw)) {
|
|
413
|
+
for (const entry of raw) {
|
|
414
|
+
if (!entry || typeof entry !== 'object')
|
|
415
|
+
continue;
|
|
416
|
+
const agent = entry;
|
|
417
|
+
const id = String(agent.id ?? agent.name ?? '').trim();
|
|
418
|
+
if (!id || !agent.provider || !agent.model)
|
|
419
|
+
continue;
|
|
420
|
+
out[id] = {
|
|
421
|
+
name: typeof agent.name === 'string' ? agent.name : undefined,
|
|
422
|
+
provider: agent.provider,
|
|
423
|
+
model: agent.model,
|
|
424
|
+
temperature: agent.temperature,
|
|
425
|
+
max_tokens: agent.max_tokens,
|
|
426
|
+
system: agent.system
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
return out;
|
|
430
|
+
}
|
|
431
|
+
if (!raw || typeof raw !== 'object')
|
|
432
|
+
return out;
|
|
433
|
+
for (const [id, value] of Object.entries(raw)) {
|
|
434
|
+
if (!value || typeof value !== 'object')
|
|
435
|
+
continue;
|
|
436
|
+
const agent = value;
|
|
437
|
+
if (!agent.provider || !agent.model)
|
|
438
|
+
continue;
|
|
439
|
+
out[id] = {
|
|
440
|
+
name: typeof agent.name === 'string' ? agent.name : undefined,
|
|
441
|
+
provider: agent.provider,
|
|
442
|
+
model: agent.model,
|
|
443
|
+
temperature: agent.temperature,
|
|
444
|
+
max_tokens: agent.max_tokens,
|
|
445
|
+
system: agent.system
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
return out;
|
|
449
|
+
}
|
|
450
|
+
function readScenarioLibrary(scenariosDir) {
|
|
451
|
+
if (!existsSync(scenariosDir))
|
|
452
|
+
return {};
|
|
453
|
+
const out = {};
|
|
454
|
+
const files = readdirSync(scenariosDir).filter((name) => name.endsWith('.yaml') || name.endsWith('.yml'));
|
|
455
|
+
for (const file of files) {
|
|
456
|
+
const scenario = readYaml(join(scenariosDir, file), null);
|
|
457
|
+
if (!scenario || !scenario.id)
|
|
458
|
+
continue;
|
|
459
|
+
out[scenario.id] = scenario;
|
|
460
|
+
}
|
|
461
|
+
return out;
|
|
462
|
+
}
|
|
463
|
+
function detectBundleRoot(configPath) {
|
|
464
|
+
const abs = resolve(configPath);
|
|
465
|
+
const configDir = dirname(abs);
|
|
466
|
+
if (configDir.endsWith('/configs') || configDir.endsWith('\\configs')) {
|
|
467
|
+
return dirname(configDir);
|
|
468
|
+
}
|
|
469
|
+
return configDir;
|
|
470
|
+
}
|
|
471
|
+
function stableStringify(value) {
|
|
472
|
+
return JSON.stringify(sortDeep(value));
|
|
473
|
+
}
|
|
474
|
+
function sortDeep(value) {
|
|
475
|
+
if (Array.isArray(value)) {
|
|
476
|
+
return value.map((item) => sortDeep(item));
|
|
477
|
+
}
|
|
478
|
+
if (value && typeof value === 'object') {
|
|
479
|
+
const out = {};
|
|
480
|
+
for (const key of Object.keys(value).sort()) {
|
|
481
|
+
out[key] = sortDeep(value[key]);
|
|
482
|
+
}
|
|
483
|
+
return out;
|
|
484
|
+
}
|
|
485
|
+
return value;
|
|
486
|
+
}
|
|
487
|
+
export function expandConfigForAgents(config, requestedAgents) {
|
|
488
|
+
const selectedAgents = requestedAgents && requestedAgents.length > 0 ? requestedAgents : Object.keys(config.agents);
|
|
489
|
+
const missing = selectedAgents.filter((agent) => !config.agents[agent]);
|
|
490
|
+
if (missing.length > 0) {
|
|
491
|
+
throw new Error(`Unknown agents: ${missing.join(', ')}. Available: ${Object.keys(config.agents).join(', ')}`);
|
|
492
|
+
}
|
|
493
|
+
const inlineScenarios = config.scenarios.filter((scenario) => !isScenarioRefEntry(scenario));
|
|
494
|
+
if (inlineScenarios.length !== config.scenarios.length) {
|
|
495
|
+
throw new Error('Config contains unresolved scenario refs; resolve config before expansion');
|
|
496
|
+
}
|
|
497
|
+
const scenarios = inlineScenarios.flatMap((scenario) => selectedAgents.map((agent) => ({
|
|
498
|
+
...scenario,
|
|
499
|
+
agent,
|
|
500
|
+
scenario_exec_id: `${scenario.id}-${agent}`
|
|
501
|
+
})));
|
|
502
|
+
return { ...config, scenarios };
|
|
503
|
+
}
|
|
504
|
+
function isScenarioRefEntry(entry) {
|
|
505
|
+
return Boolean(entry && typeof entry === 'object' && 'ref' in entry);
|
|
506
|
+
}
|
|
507
|
+
function isAgentRefEntry(entry) {
|
|
508
|
+
return Boolean(entry && typeof entry === 'object' && 'ref' in entry);
|
|
509
|
+
}
|
|
510
|
+
function isServerRefEntry(entry) {
|
|
511
|
+
return Boolean(entry && typeof entry === 'object' && 'ref' in entry);
|
|
512
|
+
}
|
|
513
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAgB7B,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,OAAiC;IAQjC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAqB,CAAC;IAEpD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAS,EACT,UAAmB;IAEnB,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IACtE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAO,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CACxB,YAA8B,EAC9B,UAAkB,EAClB,kBAA2B;IAE3B,MAAM,UAAU,GAAG,kBAAkB;QACnC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC7B,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,cAAc,GAAG,uBAAuB,CAC5C,QAAQ,CAAU,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CACxD,CAAC;IACF,MAAM,aAAa,GAAG,sBAAsB,CAC1C,QAAQ,CAAU,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CACvD,CAAC;IACF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5E,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,eAAe,GAAkD,EAAE,CAAC;IAC1E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC/C,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,wDAAwD,GAAG,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,eAAe,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAE,KAA0C,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrF,MAAM,UAAU,GAAG,MAAM,CAAE,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,MAAM,UAAU,GAAG,QAAQ,IAAI,UAAU,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,eAAe,CAAC,UAAU,CAAC,GAAG;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,cAAc,GAAiD,EAAE,CAAC;IACxE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC9C,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrC,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,uDAAuD,GAAG,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxB,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAE,KAA0C,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrF,MAAM,UAAU,GAAG,MAAM,CAAE,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,MAAM,UAAU,GAAG,QAAQ,IAAI,UAAU,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,cAAc,CAAC,UAAU,CAAC,GAAG;YAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,MAAM,mBAAmB,GAAa,EAAE,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QACjD,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YACD,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,wDAAwD,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACzF,CAAC;YACD,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,KAAiB,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC,iBAAiB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,eAAe,CAAC,IAAI,CAAC,gBAAgB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,eAAe,CAAC,IAAI,CAAC,mBAAmB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,aAAa,GAAG,YAAY,CAAC,YAAY,EAAE,eAAe,IAAI,EAAE,CAAC;IACvE,MAAM,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,eAAe,CAAC,IAAI,CAAC,iCAAiC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,IACE,YAAY,CAAC,YAAY,EAAE,eAAe;QAC1C,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EACtD,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,OAAO;QACL,GAAG,YAAY;QACf,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,cAAc;QACtB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,YAA8B;IAE9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,kBAAkB,GAAG,YAAkD,CAAC;IAC9E,IAAI,aAAa,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,YAAY,IAAI,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,eAAe,IAAI,kBAAkB,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,MAAM,UAAU,GAAI,YAAsC,CAAC,OAAO,CAAC;IACnE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,iBAAiB,GAAsB,EAAE,CAAC;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,SAA4B,CAAC;YAC5C,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBAC/E,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAE,MAA4B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvE,MAAM,UAAU,GAAG,MAAM,CAAE,MAA4B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3E,MAAM,UAAU,GAAG,QAAQ,IAAI,UAAU,CAAC;YAC1C,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACzF,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,oDAAoD,UAAU,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,iBAAiB,CAAC,IAAI,CAAC;gBACrB,EAAE,EAAE,UAAU;gBACd,IAAI,EAAE,UAAU,IAAI,SAAS;gBAC7B,SAAS,EAAG,MAA4B,CAAC,SAAS;gBAClD,GAAG,EAAG,MAA4B,CAAC,GAAG;gBACtC,IAAI,EAAG,MAA4B,CAAC,IAAI;aACzC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,mBAAmB,GACvB,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YACxE,CAAC,CAAE,UAA4D;YAC/D,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACjE,iBAAiB,CAAC,IAAI,CAAC;gBACrB,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,OAAQ,MAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAE,MAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBACvH,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,MAAM,SAAS,GAAI,YAAqC,CAAC,MAAM,CAAC;IAChE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,gBAAgB,GAAqB,EAAE,CAAC;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,QAA0B,CAAC;YACzC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAC9E,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAE,KAA0B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,MAAM,UAAU,GAAG,MAAM,CAAE,KAA0B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACzE,MAAM,UAAU,GAAG,QAAQ,IAAI,UAAU,CAAC;YAC1C,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACxF,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,kDAAkD,UAAU,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC;gBACpB,EAAE,EAAE,UAAU;gBACd,IAAI,EAAE,UAAU,IAAI,SAAS;gBAC7B,QAAQ,EAAG,KAA0B,CAAC,QAAQ;gBAC9C,KAAK,EAAG,KAA0B,CAAC,KAAK;gBACxC,WAAW,EAAG,KAA0B,CAAC,WAAW;gBACpD,UAAU,EAAG,KAA0B,CAAC,UAAU;gBAClD,MAAM,EAAG,KAA0B,CAAC,MAAM;aAC3C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,kBAAkB,GACtB,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACrE,CAAC,CAAE,SAA0D;YAC7D,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC/D,gBAAgB,CAAC,IAAI,CAAC;gBACpB,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAE,KAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBACrH,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,MAAM,mBAAmB,GAAwB,EAAE,CAAC;IACpD,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,MAAM,CAAE,QAA6B,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACpE,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACjF,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,QAGnB,CAAC;QACF,MAAM,YAAY,GAAa;YAC7B,EAAE,EAAE,WAAW,CAAC,EAAE;YAClB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC;QACF,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,IAAI,WAAW;YAAE,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,qBAAqB,GACzB,OAAO,WAAW,CAAC,qBAAqB,KAAK,SAAS;YACpD,CAAC,CAAC,WAAW,CAAC,qBAAqB;YACnC,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,WAAW,CAAC,aAAa,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;YACrE,YAAY,CAAC,aAAa,GAAG;gBAC3B,GAAG,CAAC,WAAW,CAAC,aAAa,IAAI,EAAE,CAAC;gBACpC,GAAG,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnF,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAqB;QACnC,GAAG,YAAY;QACf,IAAI,EACF,OAAQ,YAAmC,CAAC,IAAI,KAAK,QAAQ;YAC3D,CAAC,CAAC,MAAM,CAAE,YAAmC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS;YACvE,CAAC,CAAC,SAAS;QACf,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,mBAAmB;KAC/B,CAAC;IAEF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IACE,UAAU,CAAC,YAAY;QACvB,CAAC,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EACvF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IACE,UAAU,CAAC,YAAY,EAAE,eAAe,KAAK,SAAS;QACtD,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,EACvD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,YAAY,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC;QACjF,KAAK,MAAM,KAAK,IAAI,kBAAkB;YAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5D,UAAU,CAAC,YAAY,GAAG;YACxB,GAAG,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;YAClC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;SACtC,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,+EAA+E,KAAK,CAAC,IAAI,CACvF,kBAAkB,CACnB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;IACJ,CAAC;IACD,IACE,UAAU,CAAC,SAAS,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CACzF;QACD,cAAc,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,SAAS,CAAC,EACvE,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,uFAAuF,CACxF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,EAAE,eAAe,EAAE,CAAC;QAC7C,UAAU,CAAC,YAAY,CAAC,eAAe,GAAG,UAAU,CAAC,YAAY,CAAC,eAAe;aAC9E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,QAAQ,CAAI,IAAY,EAAE,QAAW;IAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,OAAQ,KAAK,CAAC,GAAG,CAAO,IAAI,QAAQ,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,MAAM,GAAG,GAAkD,EAAE,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,SAAS;YAClD,MAAM,MAAM,GAAG,KAMd,CAAC;YACF,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG;gBAAE,SAAS;YACtD,GAAG,CAAC,EAAE,CAAC,GAAG;gBACR,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC/D,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAChD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,MAAM,GAAG,KAAsC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG;YAAE,SAAS;QAC/C,GAAG,CAAC,EAAE,CAAC,GAAG;YACR,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC/D,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,MAAM,GAAG,GAAiD,EAAE,CAAC;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,SAAS;YAClD,MAAM,KAAK,GAAG,KAQb,CAAC;YACF,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,SAAS;YACrD,GAAG,CAAC,EAAE,CAAC,GAAG;gBACR,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC7D,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAChD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,KAAK,GAAG,KAAqC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,SAAS;QAC9C,GAAG,CAAC,EAAE,CAAC,GAAG;YACR,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC7D,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAAoB;IAEpB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,GAAG,GAAoD,EAAE,CAAC;IAChE,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC1D,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CACvB,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EACxB,IAAI,CACL,CAAC;QACF,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,SAAS;QACxC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACtE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ,CAAI,KAAQ;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAM,CAAC;IAClD,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACvE,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,GAAQ,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAkB,EAClB,eAA0B;IAE1B,MAAM,cAAc,GAClB,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7F,CAAC;IACJ,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAwB,EAAE,CACjF,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAC9B,CAAC;IACF,IAAI,eAAe,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACrD,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,GAAG,QAAQ;QACX,KAAK;QACL,gBAAgB,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE;KAC5C,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAwB;IAClD,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,eAAe,CAAC,KAAqB;IAC5C,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AACvE,CAAC"}
|
package/dist/eval.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { EvalRules } from './types.js';
|
|
2
|
+
export interface EvalResult {
|
|
3
|
+
pass: boolean;
|
|
4
|
+
failures: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare function evaluateScenario(
|
|
7
|
+
finalText: string,
|
|
8
|
+
toolSequence: string[],
|
|
9
|
+
evalRules?: EvalRules
|
|
10
|
+
): EvalResult;
|
|
11
|
+
export declare function extractValues(
|
|
12
|
+
text: string,
|
|
13
|
+
extractRules?: {
|
|
14
|
+
name: string;
|
|
15
|
+
regex: string;
|
|
16
|
+
}[]
|
|
17
|
+
): Record<string, string | number | boolean | null>;
|
|
18
|
+
//# sourceMappingURL=eval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../src/eval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAsC,MAAM,YAAY,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,CAAC,EAAE,SAAS,GACpB,UAAU,CAYZ;AAmED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAO,GACnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAiBlD"}
|