@m4trix/evals 0.1.0 → 0.3.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/index.cjs CHANGED
@@ -1,12 +1,34 @@
1
1
  'use strict';
2
2
 
3
- var crypto = require('crypto');
4
3
  var effect = require('effect');
5
- var promises = require('fs/promises');
4
+ var crypto = require('crypto');
5
+ var fs = require('fs');
6
6
  var path = require('path');
7
+ var jitiModule = require('jiti');
8
+ var promises = require('fs/promises');
7
9
  var url = require('url');
8
10
 
9
11
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var jitiModule__namespace = /*#__PURE__*/_interopNamespace(jitiModule);
31
+
10
32
  // src/cli/data.mock.json
11
33
  var data_mock_default = {
12
34
  datasets: [
@@ -544,6 +566,9 @@ var binaryScore = Score.of({
544
566
  });
545
567
 
546
568
  // src/runner/config.ts
569
+ function defineConfig(factory) {
570
+ return factory;
571
+ }
547
572
  var defaultRunnerConfig = {
548
573
  discovery: {
549
574
  rootDir: process.cwd(),
@@ -564,6 +589,42 @@ var defaultRunnerConfig = {
564
589
  },
565
590
  artifactDirectory: ".eval-results"
566
591
  };
592
+ function toRunnerConfigOverrides(config) {
593
+ if (!config) {
594
+ return void 0;
595
+ }
596
+ const rawDiscovery = config.discovery;
597
+ const discovery = {};
598
+ if (rawDiscovery?.rootDir !== void 0) {
599
+ discovery.rootDir = rawDiscovery.rootDir;
600
+ }
601
+ if (rawDiscovery?.datasetFilePatterns !== void 0) {
602
+ discovery.datasetSuffixes = rawDiscovery.datasetFilePatterns;
603
+ } else if (rawDiscovery?.datasetSuffixes !== void 0) {
604
+ discovery.datasetSuffixes = rawDiscovery.datasetSuffixes;
605
+ }
606
+ if (rawDiscovery?.evaluatorFilePatterns !== void 0) {
607
+ discovery.evaluatorSuffixes = rawDiscovery.evaluatorFilePatterns;
608
+ } else if (rawDiscovery?.evaluatorSuffixes !== void 0) {
609
+ discovery.evaluatorSuffixes = rawDiscovery.evaluatorSuffixes;
610
+ }
611
+ if (rawDiscovery?.testCaseFilePatterns !== void 0) {
612
+ discovery.testCaseSuffixes = rawDiscovery.testCaseFilePatterns;
613
+ } else if (rawDiscovery?.testCaseSuffixes !== void 0) {
614
+ discovery.testCaseSuffixes = rawDiscovery.testCaseSuffixes;
615
+ }
616
+ if (rawDiscovery?.excludeDirectories !== void 0) {
617
+ discovery.excludeDirectories = rawDiscovery.excludeDirectories;
618
+ }
619
+ const overrides = {};
620
+ if (config.artifactDirectory !== void 0) {
621
+ overrides.artifactDirectory = config.artifactDirectory;
622
+ }
623
+ if (Object.keys(discovery).length > 0) {
624
+ overrides.discovery = discovery;
625
+ }
626
+ return overrides;
627
+ }
567
628
  function withRunnerConfig(overrides) {
568
629
  if (!overrides) {
569
630
  return defaultRunnerConfig;
@@ -578,6 +639,55 @@ function withRunnerConfig(overrides) {
578
639
  discovery
579
640
  };
580
641
  }
642
+ var CONFIG_FILE_NAME = "m4trix-eval.config.ts";
643
+ var cachedLoader;
644
+ function getJitiLoader() {
645
+ if (cachedLoader) {
646
+ return cachedLoader;
647
+ }
648
+ const createJiti2 = jitiModule__namespace.createJiti ?? jitiModule__namespace.default;
649
+ if (typeof createJiti2 !== "function") {
650
+ throw new Error(
651
+ "Failed to initialize jiti for m4trix eval config loading."
652
+ );
653
+ }
654
+ cachedLoader = createJiti2((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('out.js', document.baseURI).href)), {
655
+ interopDefault: true,
656
+ moduleCache: true
657
+ });
658
+ return cachedLoader;
659
+ }
660
+ function resolveConfigModuleExport(loadedModule) {
661
+ if (loadedModule && typeof loadedModule === "object" && "default" in loadedModule) {
662
+ return loadedModule.default;
663
+ }
664
+ return loadedModule;
665
+ }
666
+ function resolveConfigValue(value) {
667
+ if (value === void 0 || value === null) {
668
+ return void 0;
669
+ }
670
+ if (typeof value === "function") {
671
+ return value();
672
+ }
673
+ if (typeof value !== "object") {
674
+ throw new Error(
675
+ "Invalid m4trix eval config export. Expected an object or defineConfig(() => config)."
676
+ );
677
+ }
678
+ return value;
679
+ }
680
+ function loadRunnerConfigFile(cwd = process.cwd()) {
681
+ const configPath = path.resolve(cwd, CONFIG_FILE_NAME);
682
+ if (!fs.existsSync(configPath)) {
683
+ return void 0;
684
+ }
685
+ const loader = getJitiLoader();
686
+ const loaded = loader(configPath);
687
+ const exportedValue = resolveConfigModuleExport(loaded);
688
+ const config = resolveConfigValue(exportedValue);
689
+ return toRunnerConfigOverrides(config);
690
+ }
581
691
  var jitiLoader;
582
692
  function toId(prefix, filePath, name) {
583
693
  const stable = name && name.trim().length > 0 ? name : filePath;
@@ -629,12 +739,12 @@ function hasOneSuffix(filePath, suffixes) {
629
739
  async function loadModuleExports(filePath) {
630
740
  if (filePath.endsWith(".ts") || filePath.endsWith(".tsx")) {
631
741
  if (!jitiLoader) {
632
- const jitiModule = await import('jiti');
633
- const createJiti = jitiModule.createJiti ?? jitiModule.default;
634
- if (!createJiti) {
742
+ const jitiModule2 = await import('jiti');
743
+ const createJiti2 = jitiModule2.createJiti ?? jitiModule2.default;
744
+ if (!createJiti2) {
635
745
  throw new Error("Failed to initialize jiti TypeScript loader");
636
746
  }
637
- jitiLoader = createJiti((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('out.js', document.baseURI).href)), {
747
+ jitiLoader = createJiti2((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('out.js', document.baseURI).href)), {
638
748
  interopDefault: true,
639
749
  moduleCache: true
640
750
  });
@@ -965,8 +1075,27 @@ function createNameMatcher(pattern) {
965
1075
  }
966
1076
  return (value) => value.toLowerCase() === normalizedPattern.toLowerCase();
967
1077
  }
1078
+ function mergeRunnerOverrides(base, next) {
1079
+ if (!base) {
1080
+ return next;
1081
+ }
1082
+ if (!next) {
1083
+ return base;
1084
+ }
1085
+ const discovery = base.discovery || next.discovery ? {
1086
+ ...base.discovery ?? {},
1087
+ ...next.discovery ?? {}
1088
+ } : void 0;
1089
+ return {
1090
+ ...base,
1091
+ ...next,
1092
+ discovery
1093
+ };
1094
+ }
968
1095
  function createRunner(overrides) {
969
- return new EffectRunner(withRunnerConfig(overrides));
1096
+ const fileOverrides = loadRunnerConfigFile();
1097
+ const merged = mergeRunnerOverrides(fileOverrides, overrides);
1098
+ return new EffectRunner(withRunnerConfig(merged));
970
1099
  }
971
1100
  var EffectRunner = class {
972
1101
  constructor(config) {
@@ -1163,6 +1292,10 @@ var EffectRunner = class {
1163
1292
  }
1164
1293
  };
1165
1294
 
1295
+ Object.defineProperty(exports, "S", {
1296
+ enumerable: true,
1297
+ get: function () { return effect.Schema; }
1298
+ });
1166
1299
  exports.Dataset = Dataset;
1167
1300
  exports.Evaluator = Evaluator;
1168
1301
  exports.Metric = Metric;
@@ -1171,6 +1304,7 @@ exports.TestCase = TestCase;
1171
1304
  exports.binaryScore = binaryScore;
1172
1305
  exports.createRunner = createRunner;
1173
1306
  exports.defaultRunnerConfig = defaultRunnerConfig;
1307
+ exports.defineConfig = defineConfig;
1174
1308
  exports.getMetricById = getMetricById;
1175
1309
  exports.getScoreById = getScoreById;
1176
1310
  exports.latencyMetric = latencyMetric;