@inspectr/mcplab 0.3.0 → 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/README.md CHANGED
@@ -18,6 +18,10 @@ MCPLab is a testing and evaluation framework for [MCP servers](https://modelcont
18
18
 
19
19
  Perfect for MCP server developers who want to ensure their tools work reliably across different AI models.
20
20
 
21
+ [![MCPLab](https://mcplab.inspectr.dev/screenshots/evaluation-results-assistance.png)](https://mcplab.inspectr.dev/)
22
+
23
+ Visit [mcplab.inspectr.dev](https://mcplab.inspectr.dev/) to learn more.
24
+
21
25
  ---
22
26
 
23
27
  ## ✨ Features
@@ -337,6 +341,9 @@ OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
337
341
  # Run all scenarios
338
342
  mcplab run -c mcplab/evals/eval.yaml
339
343
 
344
+ # Interactive mode (choose config + agents)
345
+ mcplab run --interactive
346
+
340
347
  # Run specific scenario
341
348
  mcplab run -c mcplab/evals/eval.yaml -s basic-test
342
349
 
@@ -350,6 +357,9 @@ Serve the web app and local API in one process:
350
357
 
351
358
  ```bash
352
359
  mcplab app --open
360
+
361
+ # Interactive startup (host/port/paths prompt + summary)
362
+ mcplab app --interactive
353
363
  ```
354
364
 
355
365
  Optional custom paths:
@@ -447,6 +457,9 @@ mcplab run -c mcplab/evals/eval.yaml --snapshot-eval
447
457
  ```bash
448
458
  # Regenerate HTML report from previous run
449
459
  mcplab report --input mcplab/results/evaluation-runs/20260206-212239
460
+
461
+ # Interactive run selection from recent runs
462
+ mcplab report --interactive
450
463
  ```
451
464
 
452
465
  ---
package/dist/cli.js CHANGED
@@ -10,6 +10,8 @@ import { execSync } from 'node:child_process';
10
10
  import { stringify as stringifyYaml, parse } from 'yaml';
11
11
  import { startAppServer } from './app-server/index.js';
12
12
  import { migrateSourceConfig } from './migrate-utils.js';
13
+ import { resolveRunOptions, runInteractiveSelection } from './run-interactive.js';
14
+ import { promptAppOptionsInteractive, selectRunDirInteractive } from './interactive-helpers.js';
13
15
  import { applySnapshotPolicyToRunResult, buildSnapshotFromRun, compareRunToSnapshot, formatSnapshotComparisonTable, listSnapshots, loadSnapshot, saveSnapshot } from './snapshot.js';
14
16
  const pkgVersion = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'))
15
17
  ?.version;
@@ -21,26 +23,52 @@ program
21
23
  program
22
24
  .command('run')
23
25
  .description('Run evaluation scenarios')
24
- .requiredOption('-c, --config <path>', 'Path to eval.yaml')
26
+ .option('-c, --config <path>', 'Path to eval.yaml')
25
27
  .option('-s, --scenario <id>', 'Run a single scenario')
26
28
  .option('-n, --runs <count>', 'Variance runs', '1')
27
29
  .option('--agents <agents>', 'Comma-separated list of agents to test (runs each scenario with each agent)')
30
+ .option('--agents-all', 'Run all configured agents for the selected scenarios')
31
+ .option('--interactive', 'Prompt for required inputs')
28
32
  .option('--snapshot-eval', 'Apply snapshot eval policy configured in the config')
29
33
  .option('--compare-snapshot <snapshotId>', 'Compare completed run against snapshot id')
30
34
  .option('--runs-dir <path>', 'Directory for run artifacts', 'mcplab/results/evaluation-runs')
31
35
  .option('--snapshots-dir <path>', 'Directory for snapshots', 'mcplab/snapshots')
32
36
  .action(async (options) => {
33
37
  try {
34
- let { config, hash, warnings } = loadConfig(resolve(options.config));
38
+ const hasAgentOverride = Boolean(options.agents) || Boolean(options.agentsAll);
39
+ const needsConfigPrompt = Boolean(options.interactive) && !options.config;
40
+ const needsAgentPrompt = Boolean(options.interactive) && !hasAgentOverride;
41
+ const interactiveSelection = needsConfigPrompt || needsAgentPrompt
42
+ ? await runInteractiveSelection({
43
+ initialConfigPath: options.config ? String(options.config) : undefined,
44
+ defaultEvalsDir: 'mcplab/evals',
45
+ cwd: process.cwd(),
46
+ promptAgentSelection: needsAgentPrompt,
47
+ loadConfigForValidation: (path) => loadConfig(path)
48
+ })
49
+ : undefined;
50
+ const resolvedOptions = resolveRunOptions({
51
+ interactive: Boolean(options.interactive),
52
+ config: options.config ? String(options.config) : undefined,
53
+ agents: options.agents ? String(options.agents) : undefined,
54
+ agentsAll: Boolean(options.agentsAll),
55
+ interactiveSelection
56
+ });
57
+ let { config, hash, warnings } = loadConfig(resolve(resolvedOptions.config));
35
58
  for (const warning of warnings) {
36
59
  console.log(kleur.yellow(`⚠ ${warning}`));
37
60
  }
38
- const requestedAgents = options.agents
39
- ? options.agents
61
+ const requestedAgentsFromCsv = resolvedOptions.agents
62
+ ? resolvedOptions.agents
40
63
  .split(',')
41
64
  .map((a) => a.trim())
42
65
  .filter(Boolean)
43
- : undefined;
66
+ : [];
67
+ const requestedAgents = resolvedOptions.agentsAll
68
+ ? Object.keys(config.agents)
69
+ : requestedAgentsFromCsv.length > 0
70
+ ? requestedAgentsFromCsv
71
+ : undefined;
44
72
  const beforeExpandCount = config.scenarios.length;
45
73
  const effectiveAgents = requestedAgents ?? config.run_defaults?.selected_agents;
46
74
  const expanded = expandConfigForAgents(config, effectiveAgents);
@@ -59,7 +87,13 @@ program
59
87
  configHash: hash,
60
88
  gitCommit: getGitCommit(),
61
89
  cliVersion: pkgVersion,
62
- runsDir: String(options.runsDir)
90
+ runsDir: String(options.runsDir),
91
+ onProgress: async (event) => {
92
+ const line = formatRunProgressEvent(event);
93
+ if (line) {
94
+ console.log(`[${formatNowTime()}] ${line}`);
95
+ }
96
+ }
63
97
  });
64
98
  let shouldFailOnDrift = false;
65
99
  const useSnapshotEval = Boolean(options.snapshotEval) || Boolean(config.snapshot_eval?.enabled);
@@ -95,7 +129,7 @@ program
95
129
  const resultsPath = join(runDir, 'results.json');
96
130
  writeFileSync(resultsPath, `${JSON.stringify(results, null, 2)}\n`, 'utf8');
97
131
  writeFileSync(reportPath, renderReport(results), 'utf8');
98
- console.log(kleur.green(`Run completed: ${runDir}`));
132
+ console.log(kleur.green(`✅ Run complete. Results: ${runDir}`));
99
133
  if (options.compareSnapshot) {
100
134
  const snapshot = loadSnapshot(String(options.compareSnapshot), resolve(options.snapshotsDir));
101
135
  const comparison = compareRunToSnapshot(results, snapshot);
@@ -103,15 +137,11 @@ program
103
137
  console.log(kleur.cyan('📸 Snapshot Comparison'));
104
138
  console.log(formatSnapshotComparisonTable(comparison));
105
139
  }
106
- // If multi-agent test, show comparison
107
- if (options.agents) {
108
- console.log(kleur.cyan(`\n📈 Run comparison script:`));
109
- console.log(kleur.gray(` node scripts/compare-llm-results.mjs ${join(runDir, 'results.json')}`));
110
- }
111
140
  if (shouldFailOnDrift) {
112
141
  console.error(kleur.red('Snapshot eval drift detected in fail_on_drift mode.'));
113
142
  process.exit(2);
114
143
  }
144
+ console.log(kleur.gray('Process exiting.'));
115
145
  }
116
146
  catch (err) {
117
147
  const message = err?.message ?? String(err);
@@ -452,10 +482,23 @@ program
452
482
  program
453
483
  .command('report')
454
484
  .description('Regenerate report.html from a previous run')
455
- .requiredOption('--input <runDir>', 'Run directory containing results.json')
456
- .action((options) => {
485
+ .option('--input <runDir>', 'Run directory containing results.json')
486
+ .option('--runs-dir <path>', 'Directory with run artifacts', 'mcplab/results/evaluation-runs')
487
+ .option('--interactive', 'Pick a run directory interactively')
488
+ .action(async (options) => {
457
489
  try {
458
- const runDir = resolve(options.input);
490
+ const runDir = options.interactive
491
+ ? options.input
492
+ ? resolve(String(options.input))
493
+ : await selectRunDirInteractive({
494
+ runsDir: String(options.runsDir),
495
+ cwd: process.cwd()
496
+ })
497
+ : options.input
498
+ ? resolve(String(options.input))
499
+ : (() => {
500
+ throw new Error('input is required');
501
+ })();
459
502
  const resultsPath = join(runDir, 'results.json');
460
503
  const reportPath = join(runDir, 'report.html');
461
504
  const results = JSON.parse(readFileSync(resultsPath, 'utf8'));
@@ -481,20 +524,40 @@ program
481
524
  .option('--host <host>', 'Host to bind', '127.0.0.1')
482
525
  .option('--open', 'Open browser after startup')
483
526
  .option('--dev', 'Proxy frontend requests to Vite dev server (API remains local)')
527
+ .option('--interactive', 'Prompt for host/port/paths before startup')
484
528
  .action(async (options) => {
485
529
  try {
486
- const port = Number(options.port);
530
+ const resolvedAppOptions = options.interactive
531
+ ? await promptAppOptionsInteractive({
532
+ host: String(options.host),
533
+ port: String(options.port),
534
+ evalsDir: String(options.evalsDir),
535
+ runsDir: String(options.runsDir),
536
+ snapshotsDir: String(options.snapshotsDir),
537
+ toolAnalysisResultsDir: String(options.toolAnalysisResultsDir),
538
+ librariesDir: String(options.librariesDir)
539
+ })
540
+ : {
541
+ host: String(options.host),
542
+ port: String(options.port),
543
+ evalsDir: String(options.evalsDir),
544
+ runsDir: String(options.runsDir),
545
+ snapshotsDir: String(options.snapshotsDir),
546
+ toolAnalysisResultsDir: String(options.toolAnalysisResultsDir),
547
+ librariesDir: String(options.librariesDir)
548
+ };
549
+ const port = Number(resolvedAppOptions.port);
487
550
  if (Number.isNaN(port) || port <= 0) {
488
551
  throw new Error('Port must be a positive number');
489
552
  }
490
553
  await startAppServer({
491
- host: options.host,
554
+ host: resolvedAppOptions.host,
492
555
  port,
493
- evalsDir: resolve(options.evalsDir),
494
- runsDir: resolve(options.runsDir),
495
- snapshotsDir: resolve(options.snapshotsDir),
496
- toolAnalysisResultsDir: resolve(options.toolAnalysisResultsDir),
497
- librariesDir: resolve(options.librariesDir),
556
+ evalsDir: resolve(resolvedAppOptions.evalsDir),
557
+ runsDir: resolve(resolvedAppOptions.runsDir),
558
+ snapshotsDir: resolve(resolvedAppOptions.snapshotsDir),
559
+ toolAnalysisResultsDir: resolve(resolvedAppOptions.toolAnalysisResultsDir),
560
+ librariesDir: resolve(resolvedAppOptions.librariesDir),
498
561
  dev: Boolean(options.dev),
499
562
  open: Boolean(options.open)
500
563
  });
@@ -517,4 +580,27 @@ function getGitCommit() {
517
580
  return undefined;
518
581
  }
519
582
  }
583
+ function formatNowTime() {
584
+ const now = new Date();
585
+ const pad = (value) => String(value).padStart(2, '0');
586
+ return `${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;
587
+ }
588
+ function formatRunProgressEvent(event) {
589
+ switch (event.type) {
590
+ case 'run_started':
591
+ return `Run started (${event.totalScenarioRuns} scenario run(s), ${event.runsPerScenario} run(s) each).`;
592
+ case 'mcp_connect_started':
593
+ return `Connecting MCP servers (${event.serverCount})...`;
594
+ case 'mcp_connect_finished':
595
+ return `Connected MCP servers (${event.serverCount}).`;
596
+ case 'scenario_run_started':
597
+ return `Scenario ${event.scenarioRunIndex}/${event.totalScenarioRuns} started: ${event.scenarioId} [agent=${event.agentName}, run=${event.runIndex + 1}/${event.runsPerScenario}]`;
598
+ case 'scenario_run_finished':
599
+ return `Scenario ${event.scenarioRunIndex}/${event.totalScenarioRuns} finished: ${event.scenarioId} [agent=${event.agentName}] -> ${event.pass ? 'PASS' : 'FAIL'} (${event.toolCallCount} tool calls)`;
600
+ case 'run_finished':
601
+ return `Run finished: ${event.runId}`;
602
+ default:
603
+ return undefined;
604
+ }
605
+ }
520
606
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,eAAe,EACf,MAAM,EACN,qBAAqB,EAKtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,EACpB,6BAA6B,EAC7B,aAAa,EACb,YAAY,EACZ,YAAY,EACb,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9F,EAAE,OAAiB,CAAC;AAEtB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,0BAA0B,CAAC;KACvC,cAAc,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;KACtD,MAAM,CAAC,oBAAoB,EAAE,eAAe,EAAE,GAAG,CAAC;KAClD,MAAM,CACL,mBAAmB,EACnB,6EAA6E,CAC9E;KACA,MAAM,CAAC,iBAAiB,EAAE,qDAAqD,CAAC;KAChF,MAAM,CAAC,iCAAiC,EAAE,2CAA2C,CAAC;KACtF,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,gCAAgC,CAAC;KAC5F,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,EAAE,kBAAkB,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM;YACpC,CAAC,CAAC,OAAO,CAAC,MAAM;iBACX,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAC5B,MAAM,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QAClD,MAAM,eAAe,GAAG,eAAe,IAAI,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC;QAChF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAChE,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,iBAAiB,IAAI,eAAe,EAAE,MAAM,EAAE,CAAC;YAC/E,MAAM,UAAU,GAAG,eAAe,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YAChF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,cAAc,iBAAiB,gBAAgB,UAAU,sBAAsB,QAAQ,CAAC,SAAS,CAAC,MAAM,cAAc,CACvH,CACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE;YACjD,eAAe;YACf,UAAU,EAAE,OAAO,CAAC,QAAQ;YAC5B,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,YAAY,EAAE;YACzB,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACjC,CAAC,CAAC;QACH,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,eAAe,GACnB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAE1E,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;YACpC,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,iEAAiE,CAAC,CAChF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,YAAY,CAC3B,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EACnC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAC9B,CAAC;gBACF,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC3D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,QAAQ,CAAC,SAAS;qBACf,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,KAAK,KAAK,CAAC;qBAC/D,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAClC,CAAC;gBACF,MAAM,OAAO,GAAG,8BAA8B,CAAC;oBAC7C,OAAO;oBACP,WAAW,EAAE,CAAC,UAAU,CAAC;oBACzB,MAAM;oBACN,kBAAkB;iBACnB,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CACT,GAAG,OAAO,CAAC,IAAI,eAAe,OAAO,CAAC,oBAAoB,cAAc,OAAO,CAAC,aAAa,aAAa,OAAO,CAAC,MAAM,EAAE,CAC3H,CAAC;gBACF,IAAI,OAAO,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,uBAAuB,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAC7E,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvD,iBAAiB;oBACf,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjD,aAAa,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5E,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC,CAAC;QAErD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,YAAY,CAC3B,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAC/B,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAC9B,CAAC;YACF,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,uCAAuC;QACvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,2CAA2C,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CACtF,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC3C,CAAC,CAAC,uGAAuG;YACzG,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,UAAU,CACT,IAAI,OAAO,CAAC,QAAQ,CAAC;KAClB,WAAW,CAAC,sDAAsD,CAAC;KACnE,cAAc,CAAC,eAAe,EAAE,0BAA0B,CAAC;KAC3D,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,EAAE,gCAAgC,CAAC;KAC7F,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,EAAE,kBAAkB,CAAC;KAC/E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CACL;KACA,UAAU,CACT,IAAI,OAAO,CAAC,WAAW,CAAC;KACrB,WAAW,CAAC,gFAAgF,CAAC;KAC7F,cAAc,CAAC,eAAe,EAAE,0BAA0B,CAAC;KAC3D,cAAc,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;KACtD,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;KACxC,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,EAAE,gCAAgC,CAAC;KAC7F,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,EAAE,kBAAkB,CAAC;KAC/E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAgB,CAAC;QAC7E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,UAAU,GAAqB;YACnC,GAAG,YAAY;YACf,aAAa,EAAE;gBACb,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,YAAY,CAAC,aAAa,EAAE,IAAI,IAAI,MAAM;gBAChD,oBAAoB,EAAE,QAAQ,CAAC,EAAE;gBACjC,sBAAsB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAC/C,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC1C;SACF,CAAC;QACF,aAAa,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CACL;KACA,UAAU,CACT,IAAI,OAAO,CAAC,aAAa,CAAC;KACvB,WAAW,CAAC,yCAAyC,CAAC;KACtD,cAAc,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;KACtD,cAAc,CAAC,wBAAwB,EAAE,kCAAkC,CAAC;KAC5E,cAAc,CAAC,6BAA6B,EAAE,oBAAoB,CAAC;KACnE,MAAM,CAAC,kCAAkC,EAAE,sBAAsB,CAAC;KAClE,MAAM,CAAC,+BAA+B,EAAE,uCAAuC,CAAC;KAChF,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAA6B,CAAC;QAC9D,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,UAAU,GAAqB;YACnC,GAAG,YAAY;YACf,aAAa,EAAE;gBACb,OAAO;gBACP,IAAI;gBACJ,oBAAoB,EAClB,OAAO,CAAC,gBAAgB,IAAI,YAAY,CAAC,aAAa,EAAE,oBAAoB;gBAC9E,sBAAsB,EACpB,OAAO,CAAC,iBAAiB,IAAI,YAAY,CAAC,aAAa,EAAE,sBAAsB;gBACjF,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC1C;SACF,CAAC;QACF,aAAa,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CACL;KACA,UAAU,CACT,IAAI,OAAO,CAAC,mBAAmB,CAAC;KAC7B,WAAW,CAAC,sEAAsE,CAAC;KACnF,cAAc,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;KACtD,cAAc,CAAC,iBAAiB,EAAE,aAAa,CAAC;KAChD,MAAM,CAAC,yBAAyB,EAAE,wDAAwD,CAAC;KAC3F,MAAM,CAAC,sBAAsB,EAAE,oDAAoD,CAAC;KACpF,MAAM,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;KAC3E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACzD,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CACnF,CAAC;QACF,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yDAAyD,UAAU,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,yDAAyD,UAAU,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,wBAAwB,GAAG;YAC/B,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;YAChC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;gBAChC,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,SAAS,EAAE;gBACvE,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,SAAS,EAAE;gBAC1E,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;gBAC/B,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;gBAC/D,CAAC,CAAC,EAAE,CAAC;YACP,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAC1C,CAAC;QACF,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,EAAE,CAAC;YACnD,OAAQ,wBAAgC,CAAC,oBAAoB,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,CAAC;YACrD,OAAQ,wBAAgC,CAAC,sBAAsB,CAAC;QAClE,CAAC;QACD,IACE,wBAAwB,CAAC,OAAO,KAAK,SAAS;YAC9C,CAAC,wBAAwB,CAAC,oBAAoB;YAC9C,CAAC,wBAAwB,CAAC,sBAAsB,EAChD,CAAC;YACD,SAAS,CAAC,aAAa,CAAC,GAAG;gBACzB,GAAG,OAAO;gBACV,aAAa,EAAE,SAAS;aACzB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,aAAa,CAAC,GAAG;gBACzB,GAAG,OAAO;gBACV,aAAa,EAAE,wBAAwB;aACxC,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAqB;YACnC,GAAG,YAAY;YACf,SAAS;SACV,CAAC;QACF,aAAa,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,8BAA8B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,EAAE,CACpF,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CACL;KACA,UAAU,CACT,IAAI,OAAO,CAAC,MAAM,CAAC;KAChB,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,EAAE,kBAAkB,CAAC;KAC/E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC/D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CACT,GAAG,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,UAAU,QAAQ,CAAC,aAAa,aAAa,QAAQ,CAAC,UAAU,GAAG,CACpG,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CACL;KACA,UAAU,CACT,IAAI,OAAO,CAAC,MAAM,CAAC;KAChB,WAAW,CAAC,oBAAoB,CAAC;KACjC,cAAc,CAAC,mBAAmB,EAAE,aAAa,CAAC;KAClD,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,EAAE,kBAAkB,CAAC;KAC/E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CACL;KACA,UAAU,CACT,IAAI,OAAO,CAAC,SAAS,CAAC;KACnB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,cAAc,CAAC,mBAAmB,EAAE,aAAa,CAAC;KAClD,cAAc,CAAC,eAAe,EAAE,0BAA0B,CAAC;KAC3D,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,OAAO,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,8BAA8B,EAAE,gCAAgC,CAAC;KAC7F,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,EAAE,kBAAkB,CAAC;KAC/E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CACL,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,cAAc,CAAC;KACxE,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,yBAAyB,EAAE,qDAAqD,EAAE,EAAE,CAAC;KAC5F,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC1D,CAAC;QACF,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBACxE,MAAM,0BAA0B,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC3D,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAC3D,CAAC;gBACF,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1D,OAAO,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAC1D,CAAC;gBACF,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAC7C,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAAC;oBACtD,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CACxD,CAAC;gBACF,MAAM,6BAA6B,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAC/D,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBACb,KAAK,CAAC,OAAO,CAAE,CAAS,CAAC,OAAO,CAAC;oBAChC,CAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;oBAC7B,OAAQ,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACzC,CAAE,CAAS,CAAC,WAAW,CAC1B,CAAC;gBAEF,IACE,CAAC,0BAA0B;oBAC3B,CAAC,yBAAyB;oBAC1B,CAAC,yBAAyB;oBAC1B,CAAC,6BAA6B,EAC9B,CAAC;oBACD,OAAO,IAAI,CAAC,CAAC;oBACb,SAAS;gBACX,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,aAAa,IAAI,kCACf,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACnD,EAAE,CACH,CACF,CAAC;oBACF,QAAQ,IAAI,CAAC,CAAC;oBACd,SAAS;gBACX,CAAC;gBACD,MAAM,UAAU,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBACrD,aAAa,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClE,QAAQ,IAAI,CAAC,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,oBACE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAClC,cAAc,QAAQ,aAAa,OAAO,YAAY,MAAM,EAAE,CAC/D,CACF,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,uHAAuH,CACxH,CACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3D,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CACxC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAClE,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAQ,CAAC;oBACjC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAAC,SAAS,IAAI,CAAC,CAAC;wBAAC,SAAS;oBAAC,CAAC;oBACxE,MAAM,gBAAgB,GACpB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;wBAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;wBACzB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;wBACrC,CAAC,MAAM,CAAC,WAAW,CAAC;oBACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAAC,SAAS,IAAI,CAAC,CAAC;wBAAC,SAAS;oBAAC,CAAC;oBACpD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,wCAAwC,CAAC,CAAC,CAAC;wBAC7F,UAAU,IAAI,CAAC,CAAC;wBAChB,SAAS;oBACX,CAAC;oBACD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;oBACnD,MAAM,QAAQ,GAAG;wBACf,GAAG,IAAI;wBACP,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;qBAC9D,CAAC;oBACF,aAAa,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAChE,UAAU,IAAI,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,QAAQ,IAAI,CAAC,CAAC;oBACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,IAAI,KAAK,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7F,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,uBAAuB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,UAAU,aAAa,SAAS,YAAY,QAAQ,EAAE,CAC9H,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4CAA4C,CAAC;KACzD,cAAc,CAAC,kBAAkB,EAAE,uCAAuC,CAAC;KAC3E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACnC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,cAAc,CAAC;KACxE,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,gCAAgC,CAAC;KAC5F,MAAM,CAAC,wBAAwB,EAAE,kCAAkC,EAAE,kBAAkB,CAAC;KACxF,MAAM,CACL,oCAAoC,EACpC,2CAA2C,EAC3C,8BAA8B,CAC/B;KACA,MAAM,CAAC,wBAAwB,EAAE,oDAAoD,EAAE,QAAQ,CAAC;KAChG,MAAM,CAAC,iBAAiB,EAAE,cAAc,EAAE,MAAM,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC;KACpD,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CAAC,OAAO,EAAE,gEAAgE,CAAC;KACjF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,cAAc,CAAC;YACnB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI;YACJ,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YACjC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3C,sBAAsB,EAAE,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC;YAC/D,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3C,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;YACzB,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;aACnF,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,IAAI,SAAS,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface ReportInteractiveSelectionOptions {
2
+ runsDir: string;
3
+ cwd?: string;
4
+ }
5
+ export interface AppInteractiveOptions {
6
+ host: string;
7
+ port: string;
8
+ evalsDir: string;
9
+ runsDir: string;
10
+ snapshotsDir: string;
11
+ toolAnalysisResultsDir: string;
12
+ librariesDir: string;
13
+ }
14
+ export declare function ensureInteractiveTty(): void;
15
+ export declare function selectRunDirInteractive(options: ReportInteractiveSelectionOptions): Promise<string>;
16
+ export declare function promptAppOptionsInteractive(current: AppInteractiveOptions): Promise<AppInteractiveOptions>;
17
+ //# sourceMappingURL=interactive-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-helpers.d.ts","sourceRoot":"","sources":["../src/interactive-helpers.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAkDhC"}
@@ -0,0 +1,140 @@
1
+ import { existsSync, readdirSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { createInterface } from 'node:readline/promises';
4
+ import kleur from 'kleur';
5
+ import { parseNumberSelection, INTERACTIVE_ABORT_ERROR } from './run-interactive.js';
6
+ export function ensureInteractiveTty() {
7
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
8
+ throw new Error('--interactive requires a TTY terminal.');
9
+ }
10
+ }
11
+ export async function selectRunDirInteractive(options) {
12
+ ensureInteractiveTty();
13
+ const cwd = options.cwd ?? process.cwd();
14
+ const runsDir = resolve(cwd, options.runsDir);
15
+ const candidates = getRunDirectoryCandidates(runsDir);
16
+ if (candidates.length === 0) {
17
+ throw new Error(`No run directories with results.json found in ${runsDir}`);
18
+ }
19
+ const ask = createAsker();
20
+ try {
21
+ console.log(kleur.cyan('\nSelect a run directory:'));
22
+ candidates.forEach((candidate, index) => {
23
+ console.log(`${index + 1}. ${candidate.id}`);
24
+ });
25
+ while (true) {
26
+ const input = (await ask.question('Run number or path: ')).trim();
27
+ if (!input) {
28
+ console.log(kleur.yellow('Please enter a selection.'));
29
+ continue;
30
+ }
31
+ if (/^\d+$/.test(input)) {
32
+ const selections = parseNumberSelection(input, candidates.length);
33
+ if (selections.length !== 1) {
34
+ console.log(kleur.yellow('Choose exactly one run.'));
35
+ continue;
36
+ }
37
+ return candidates[selections[0]].path;
38
+ }
39
+ return resolve(cwd, input);
40
+ }
41
+ }
42
+ finally {
43
+ ask.close();
44
+ }
45
+ }
46
+ export async function promptAppOptionsInteractive(current) {
47
+ ensureInteractiveTty();
48
+ const ask = createAsker();
49
+ try {
50
+ console.log(kleur.cyan('\nConfigure MCPLab app startup:'));
51
+ const host = await askWithDefault(ask.question, 'Host', current.host);
52
+ const port = await askValidPort(ask.question, current.port);
53
+ const evalsDir = await askWithDefault(ask.question, 'Evals dir', current.evalsDir);
54
+ const runsDir = await askWithDefault(ask.question, 'Runs dir', current.runsDir);
55
+ const snapshotsDir = await askWithDefault(ask.question, 'Snapshots dir', current.snapshotsDir);
56
+ const toolAnalysisResultsDir = await askWithDefault(ask.question, 'Tool analysis dir', current.toolAnalysisResultsDir);
57
+ const librariesDir = await askWithDefault(ask.question, 'Libraries dir', current.librariesDir);
58
+ console.log(kleur.cyan('\nApp launch summary:'));
59
+ console.log(`host: ${host}`);
60
+ console.log(`port: ${port}`);
61
+ console.log(`evals-dir: ${evalsDir}`);
62
+ console.log(`runs-dir: ${runsDir}`);
63
+ console.log(`snapshots-dir: ${snapshotsDir}`);
64
+ console.log(`tool-analysis-results-dir: ${toolAnalysisResultsDir}`);
65
+ console.log(`libraries-dir: ${librariesDir}`);
66
+ const confirm = (await ask.question('Start app with these settings? [Y/n]: ')).trim().toLowerCase();
67
+ if (confirm === 'n' || confirm === 'no') {
68
+ throw new Error(INTERACTIVE_ABORT_ERROR);
69
+ }
70
+ return {
71
+ host,
72
+ port,
73
+ evalsDir,
74
+ runsDir,
75
+ snapshotsDir,
76
+ toolAnalysisResultsDir,
77
+ librariesDir
78
+ };
79
+ }
80
+ finally {
81
+ ask.close();
82
+ }
83
+ }
84
+ function getRunDirectoryCandidates(runsDir) {
85
+ if (!existsSync(runsDir)) {
86
+ return [];
87
+ }
88
+ return readdirSync(runsDir)
89
+ .map((entry) => ({
90
+ id: entry,
91
+ path: join(runsDir, entry)
92
+ }))
93
+ .filter((entry) => existsSync(join(entry.path, 'results.json')))
94
+ .sort((a, b) => b.id.localeCompare(a.id));
95
+ }
96
+ async function askWithDefault(question, label, defaultValue) {
97
+ const answer = (await question(`${label} [${defaultValue}]: `)).trim();
98
+ return answer || defaultValue;
99
+ }
100
+ async function askValidPort(question, defaultPort) {
101
+ while (true) {
102
+ const value = await askWithDefault(question, 'Port', defaultPort);
103
+ const parsed = Number(value);
104
+ if (!Number.isNaN(parsed) && parsed > 0) {
105
+ return String(parsed);
106
+ }
107
+ console.log(kleur.yellow('Port must be a positive number.'));
108
+ }
109
+ }
110
+ function createAsker() {
111
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
112
+ let interrupted = false;
113
+ const onSigint = () => {
114
+ interrupted = true;
115
+ rl.close();
116
+ };
117
+ process.once('SIGINT', onSigint);
118
+ return {
119
+ question: async (prompt) => {
120
+ try {
121
+ return await rl.question(prompt);
122
+ }
123
+ catch (error) {
124
+ if (interrupted) {
125
+ throw new Error(INTERACTIVE_ABORT_ERROR);
126
+ }
127
+ const message = error instanceof Error ? error.message : String(error);
128
+ if (message.toLowerCase().includes('closed')) {
129
+ throw new Error(INTERACTIVE_ABORT_ERROR);
130
+ }
131
+ throw error;
132
+ }
133
+ },
134
+ close: () => {
135
+ process.off('SIGINT', onSigint);
136
+ rl.close();
137
+ }
138
+ };
139
+ }
140
+ //# sourceMappingURL=interactive-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-helpers.js","sourceRoot":"","sources":["../src/interactive-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { EvalConfig } from '@inspectr/mcplab-core';
2
+ export declare const INTERACTIVE_ABORT_ERROR = "Interactive input cancelled.";
3
+ export type InteractiveAgentMode = 'all' | 'defaults' | 'specific';
4
+ export interface InteractiveSelectionResult {
5
+ configPath: string;
6
+ agentMode: InteractiveAgentMode;
7
+ agents?: string[];
8
+ }
9
+ export interface ResolveRunOptionsInput {
10
+ interactive: boolean;
11
+ config?: string;
12
+ agents?: string;
13
+ agentsAll?: boolean;
14
+ interactiveSelection?: InteractiveSelectionResult;
15
+ }
16
+ export interface ResolveRunOptionsResult {
17
+ config: string;
18
+ agents?: string;
19
+ agentsAll: boolean;
20
+ }
21
+ export interface RunInteractiveSelectionOptions {
22
+ initialConfigPath?: string;
23
+ defaultEvalsDir?: string;
24
+ cwd?: string;
25
+ promptAgentSelection?: boolean;
26
+ loadConfigForValidation: (path: string) => {
27
+ config: EvalConfig;
28
+ };
29
+ }
30
+ export declare function parseNumberSelection(input: string, max: number): number[];
31
+ export declare function resolveRunOptions(input: ResolveRunOptionsInput): ResolveRunOptionsResult;
32
+ export declare function runInteractiveSelection(opts: RunInteractiveSelectionOptions): Promise<InteractiveSelectionResult>;
33
+ //# sourceMappingURL=run-interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-interactive.d.ts","sourceRoot":"","sources":["../src/run-interactive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnE,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC;CACnE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BzE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CA8DxF;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CAuDrC"}
@@ -0,0 +1,256 @@
1
+ import { existsSync, readFileSync, readdirSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { createInterface } from 'node:readline/promises';
4
+ import kleur from 'kleur';
5
+ import { parse } from 'yaml';
6
+ export const INTERACTIVE_ABORT_ERROR = 'Interactive input cancelled.';
7
+ export function parseNumberSelection(input, max) {
8
+ const parts = input
9
+ .split(',')
10
+ .map((part) => part.trim())
11
+ .filter(Boolean);
12
+ if (parts.length === 0) {
13
+ throw new Error('Please provide at least one number.');
14
+ }
15
+ const indices = [];
16
+ const seen = new Set();
17
+ for (const part of parts) {
18
+ if (!/^\d+$/.test(part)) {
19
+ throw new Error(`Invalid selection "${part}". Expected numeric values.`);
20
+ }
21
+ const oneBased = Number(part);
22
+ if (!Number.isInteger(oneBased) || oneBased < 1 || oneBased > max) {
23
+ throw new Error(`Selection "${part}" is out of range (1-${max}).`);
24
+ }
25
+ const zeroBased = oneBased - 1;
26
+ if (!seen.has(zeroBased)) {
27
+ seen.add(zeroBased);
28
+ indices.push(zeroBased);
29
+ }
30
+ }
31
+ return indices;
32
+ }
33
+ export function resolveRunOptions(input) {
34
+ const agentsCsv = input.agents?.trim();
35
+ const agentsAll = Boolean(input.agentsAll);
36
+ if (agentsAll && agentsCsv) {
37
+ throw new Error('Use either --agents or --agents-all, not both.');
38
+ }
39
+ if (!input.interactive) {
40
+ if (!input.config?.trim()) {
41
+ throw new Error('config is required');
42
+ }
43
+ return {
44
+ config: input.config.trim(),
45
+ agents: agentsCsv || undefined,
46
+ agentsAll
47
+ };
48
+ }
49
+ const selection = input.interactiveSelection;
50
+ const resolvedConfig = input.config?.trim() || selection?.configPath;
51
+ if (!resolvedConfig) {
52
+ throw new Error('config is required');
53
+ }
54
+ if (agentsAll || agentsCsv) {
55
+ return {
56
+ config: resolvedConfig,
57
+ agents: agentsCsv || undefined,
58
+ agentsAll
59
+ };
60
+ }
61
+ if (!selection) {
62
+ return {
63
+ config: resolvedConfig,
64
+ agentsAll: false
65
+ };
66
+ }
67
+ if (selection.agentMode === 'all') {
68
+ return {
69
+ config: resolvedConfig,
70
+ agentsAll: true
71
+ };
72
+ }
73
+ if (selection.agentMode === 'specific') {
74
+ if (!selection.agents || selection.agents.length === 0) {
75
+ throw new Error('Interactive specific agent selection cannot be empty.');
76
+ }
77
+ return {
78
+ config: resolvedConfig,
79
+ agents: selection.agents.join(','),
80
+ agentsAll: false
81
+ };
82
+ }
83
+ return {
84
+ config: resolvedConfig,
85
+ agentsAll: false
86
+ };
87
+ }
88
+ export async function runInteractiveSelection(opts) {
89
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
90
+ throw new Error('--interactive requires a TTY terminal.');
91
+ }
92
+ const cwd = opts.cwd ?? process.cwd();
93
+ const evalsDir = resolve(cwd, opts.defaultEvalsDir ?? 'mcplab/evals');
94
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
95
+ let interrupted = false;
96
+ const onSigint = () => {
97
+ interrupted = true;
98
+ rl.close();
99
+ };
100
+ process.once('SIGINT', onSigint);
101
+ const ask = async (question) => {
102
+ try {
103
+ return await rl.question(question);
104
+ }
105
+ catch (error) {
106
+ if (interrupted) {
107
+ throw new Error(INTERACTIVE_ABORT_ERROR);
108
+ }
109
+ const message = error instanceof Error ? error.message : String(error);
110
+ if (message.toLowerCase().includes('closed')) {
111
+ throw new Error(INTERACTIVE_ABORT_ERROR);
112
+ }
113
+ throw error;
114
+ }
115
+ };
116
+ try {
117
+ const configPath = opts.initialConfigPath
118
+ ? resolve(cwd, opts.initialConfigPath)
119
+ : await promptForConfigPath(ask, evalsDir, cwd, opts.loadConfigForValidation);
120
+ const shouldPromptAgentSelection = opts.promptAgentSelection ?? true;
121
+ if (!shouldPromptAgentSelection) {
122
+ return { configPath, agentMode: 'defaults' };
123
+ }
124
+ const loaded = opts.loadConfigForValidation(configPath);
125
+ const agentIds = Object.keys(loaded.config.agents);
126
+ const defaults = loaded.config.run_defaults?.selected_agents ?? [];
127
+ const agentMode = await promptForAgentMode(ask, agentIds, defaults);
128
+ if (agentMode === 'specific') {
129
+ const agents = await promptForSpecificAgents(ask, agentIds);
130
+ return { configPath, agentMode, agents };
131
+ }
132
+ return { configPath, agentMode };
133
+ }
134
+ finally {
135
+ process.off('SIGINT', onSigint);
136
+ rl.close();
137
+ }
138
+ }
139
+ async function promptForConfigPath(ask, evalsDir, cwd, loadConfigForValidation) {
140
+ const files = existsSync(evalsDir)
141
+ ? readdirSync(evalsDir)
142
+ .filter((name) => name.endsWith('.yaml') || name.endsWith('.yml'))
143
+ .sort((a, b) => a.localeCompare(b))
144
+ : [];
145
+ const choices = files.map((fileName) => {
146
+ const path = resolve(evalsDir, fileName);
147
+ return {
148
+ path,
149
+ fileName,
150
+ label: readConfigName(path) ?? fileName
151
+ };
152
+ });
153
+ if (choices.length > 0) {
154
+ console.log(kleur.cyan('\nSelect an evaluation config:'));
155
+ choices.forEach((choice, index) => {
156
+ const suffix = choice.label === choice.fileName ? '' : ` ${kleur.gray(`(${choice.fileName})`)}`;
157
+ console.log(`${index + 1}. ${choice.label}${suffix}`);
158
+ });
159
+ }
160
+ else {
161
+ console.log(kleur.yellow(`\nNo configs found in ${evalsDir}. Enter a path manually.`));
162
+ }
163
+ while (true) {
164
+ const prompt = choices.length > 0
165
+ ? 'Config number or path: '
166
+ : 'Config path: ';
167
+ const input = (await ask(prompt)).trim();
168
+ if (!input) {
169
+ console.log(kleur.yellow('Please enter a selection.'));
170
+ continue;
171
+ }
172
+ let candidatePath = input;
173
+ if (choices.length > 0 && /^\d+$/.test(input)) {
174
+ const selected = Number(input);
175
+ if (selected < 1 || selected > choices.length) {
176
+ console.log(kleur.yellow(`Selection out of range (1-${choices.length}).`));
177
+ continue;
178
+ }
179
+ candidatePath = choices[selected - 1].path;
180
+ }
181
+ else {
182
+ candidatePath = resolve(cwd, input);
183
+ }
184
+ try {
185
+ loadConfigForValidation(candidatePath);
186
+ return candidatePath;
187
+ }
188
+ catch (error) {
189
+ const message = error instanceof Error ? error.message : String(error);
190
+ console.log(kleur.yellow(`Invalid config: ${message}`));
191
+ }
192
+ }
193
+ }
194
+ function readConfigName(configPath) {
195
+ try {
196
+ const raw = readFileSync(configPath, 'utf8');
197
+ const parsed = parse(raw);
198
+ const name = typeof parsed?.name === 'string' ? parsed.name.trim() : '';
199
+ return name || undefined;
200
+ }
201
+ catch {
202
+ return undefined;
203
+ }
204
+ }
205
+ async function promptForAgentMode(ask, agentIds, defaults) {
206
+ if (agentIds.length === 0) {
207
+ throw new Error('Config has no resolved agents.');
208
+ }
209
+ console.log(kleur.cyan('\nSelect agent mode:'));
210
+ console.log('1. All configured agents');
211
+ if (defaults.length > 0) {
212
+ console.log(`2. Run defaults from config (${defaults.join(', ')})`);
213
+ }
214
+ console.log(defaults.length > 0 ? '3. Choose specific agents' : '2. Choose specific agents');
215
+ const max = defaults.length > 0 ? 3 : 2;
216
+ while (true) {
217
+ const input = (await ask('Choice: ')).trim();
218
+ try {
219
+ const selections = parseNumberSelection(input, max);
220
+ if (selections.length !== 1) {
221
+ throw new Error('Choose exactly one option.');
222
+ }
223
+ const selected = selections[0];
224
+ if (selected === 0)
225
+ return 'all';
226
+ if (defaults.length > 0 && selected === 1)
227
+ return 'defaults';
228
+ return 'specific';
229
+ }
230
+ catch (error) {
231
+ const message = error instanceof Error ? error.message : String(error);
232
+ console.log(kleur.yellow(message));
233
+ }
234
+ }
235
+ }
236
+ async function promptForSpecificAgents(ask, agentIds) {
237
+ console.log(kleur.cyan('\nSelect specific agents (comma-separated numbers):'));
238
+ agentIds.forEach((agentId, index) => {
239
+ console.log(`${index + 1}. ${agentId}`);
240
+ });
241
+ while (true) {
242
+ const input = (await ask('Agent numbers: ')).trim();
243
+ try {
244
+ const selectedIndices = parseNumberSelection(input, agentIds.length);
245
+ if (selectedIndices.length === 0) {
246
+ throw new Error('Select at least one agent.');
247
+ }
248
+ return selectedIndices.map((index) => agentIds[index]);
249
+ }
250
+ catch (error) {
251
+ const message = error instanceof Error ? error.message : String(error);
252
+ console.log(kleur.yellow(message));
253
+ }
254
+ }
255
+ }
256
+ //# sourceMappingURL=run-interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-interactive.js","sourceRoot":"","sources":["../src/run-interactive.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inspectr/mcplab",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "MCPLab - Test and evaluate MCP servers with LLMs — run evals, compare agents and launch the MCPLab web app",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -43,9 +43,9 @@
43
43
  "vitest": "^3.2.4"
44
44
  },
45
45
  "dependencies": {
46
- "@inspectr/mcplab-core": "0.3.0",
47
- "@inspectr/mcplab-mcp-server": "0.2.1",
48
- "@inspectr/mcplab-reporting": "0.2.1",
46
+ "@inspectr/mcplab-core": "0.4.0",
47
+ "@inspectr/mcplab-mcp-server": "0.3.0",
48
+ "@inspectr/mcplab-reporting": "0.3.0",
49
49
  "commander": "^12.1.0",
50
50
  "dotenv": "^16.4.5",
51
51
  "kleur": "^4.1.5",