@aeye/ai 0.2.0 → 0.3.1

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/registry.js CHANGED
@@ -7,6 +7,164 @@
7
7
  import { getModel } from '@aeye/core';
8
8
  import { detectTier } from './modelDetection';
9
9
  // ============================================================================
10
+ // Generic Constraint Helpers
11
+ // ============================================================================
12
+ /**
13
+ * Recursively checks if a model value satisfies min/max constraints.
14
+ * Returns true if the value is acceptable, false otherwise.
15
+ *
16
+ * For primitive values (number, string, boolean), compares directly.
17
+ * For objects, recursively checks all properties that exist in both min/max and modelValue.
18
+ */
19
+ function satisfiesConstraint(modelValue, min, max) {
20
+ // If no constraints, always satisfied
21
+ if (min === undefined && max === undefined) {
22
+ return true;
23
+ }
24
+ // If model doesn't have the value but constraints exist, it's not satisfied
25
+ if (modelValue === undefined) {
26
+ return false;
27
+ }
28
+ // Handle primitive types (numbers)
29
+ if (typeof modelValue === 'number') {
30
+ const minNum = min;
31
+ const maxNum = max;
32
+ if (minNum !== undefined && modelValue < minNum) {
33
+ return false;
34
+ }
35
+ if (maxNum !== undefined && modelValue > maxNum) {
36
+ return false;
37
+ }
38
+ return true;
39
+ }
40
+ // Handle objects recursively
41
+ if (typeof modelValue === 'object' && modelValue !== null) {
42
+ const minObj = min;
43
+ const maxObj = max;
44
+ // Check all properties that exist in constraints
45
+ const propsToCheck = new Set();
46
+ if (minObj && typeof minObj === 'object') {
47
+ Object.keys(minObj).forEach(key => propsToCheck.add(key));
48
+ }
49
+ if (maxObj && typeof maxObj === 'object') {
50
+ Object.keys(maxObj).forEach(key => propsToCheck.add(key));
51
+ }
52
+ for (const key of propsToCheck) {
53
+ const modelProp = modelValue[key];
54
+ const minProp = minObj?.[key];
55
+ const maxProp = maxObj?.[key];
56
+ if (!satisfiesConstraint(modelProp, minProp, maxProp)) {
57
+ return false;
58
+ }
59
+ }
60
+ return true;
61
+ }
62
+ // For other types, just check existence
63
+ return true;
64
+ }
65
+ /**
66
+ * Recursively updates min/max range values based on a model value.
67
+ * Updates min to the minimum and max to the maximum across all models.
68
+ * Returns the updated min and max.
69
+ */
70
+ function calculateRange(modelValue, currentMin, currentMax) {
71
+ // If model doesn't have the value, return current range
72
+ if (modelValue === undefined) {
73
+ return { min: currentMin, max: currentMax };
74
+ }
75
+ // Handle primitive types (numbers)
76
+ if (typeof modelValue === 'number') {
77
+ const minNum = currentMin;
78
+ const maxNum = currentMax;
79
+ return {
80
+ min: (minNum === undefined ? modelValue : Math.min(minNum, modelValue)),
81
+ max: (maxNum === undefined ? modelValue : Math.max(maxNum, modelValue))
82
+ };
83
+ }
84
+ // Handle objects recursively
85
+ if (typeof modelValue === 'object' && modelValue !== null) {
86
+ const minObj = (currentMin ?? {});
87
+ const maxObj = (currentMax ?? {});
88
+ const resultMin = { ...minObj };
89
+ const resultMax = { ...maxObj };
90
+ // Process all properties in modelValue
91
+ for (const key in modelValue) {
92
+ const modelProp = modelValue[key];
93
+ const { min: newMin, max: newMax } = calculateRange(modelProp, minObj[key], maxObj[key]);
94
+ if (newMin !== undefined) {
95
+ resultMin[key] = newMin;
96
+ }
97
+ if (newMax !== undefined) {
98
+ resultMax[key] = newMax;
99
+ }
100
+ }
101
+ return {
102
+ min: (Object.keys(resultMin).length > 0 ? resultMin : undefined),
103
+ max: (Object.keys(resultMax).length > 0 ? resultMax : undefined)
104
+ };
105
+ }
106
+ // For other types, just return the value
107
+ return { min: modelValue, max: modelValue };
108
+ }
109
+ /**
110
+ * Recursively calculates a normalized score based on how close modelValue is to target.
111
+ * Returns a score between 0 and 1, where 1 is closest to target.
112
+ *
113
+ * For primitive values, normalizes distance between min and max.
114
+ * For objects, calculates the average score across all defined numeric properties.
115
+ * Returns undefined if target is not specified or if no valid scores can be calculated.
116
+ */
117
+ function calculateScore(modelValue, target, min, max) {
118
+ // If no target or no model value, can't calculate score
119
+ if (target === undefined || modelValue === undefined) {
120
+ return undefined;
121
+ }
122
+ // Handle primitive types (numbers)
123
+ if (typeof modelValue === 'number' && typeof target === 'number') {
124
+ const minNum = min;
125
+ const maxNum = max;
126
+ // Need both min and max to normalize
127
+ if (minNum === undefined || maxNum === undefined) {
128
+ return undefined;
129
+ }
130
+ // If min and max are the same, perfect score if value matches
131
+ const range = maxNum - minNum;
132
+ if (range === 0) {
133
+ return modelValue === target ? 1 : 0;
134
+ }
135
+ // Calculate normalized distance from target
136
+ const distance = Math.abs(target - modelValue);
137
+ const normalizedDistance = distance / range;
138
+ // Score is 1 - normalizedDistance, clamped to [0, 1]
139
+ return Math.max(0, Math.min(1, 1 - normalizedDistance));
140
+ }
141
+ // Handle objects recursively
142
+ if (typeof modelValue === 'object' && modelValue !== null && typeof target === 'object' && target !== null) {
143
+ const targetObj = target;
144
+ const minObj = min;
145
+ const maxObj = max;
146
+ const scores = [];
147
+ // Calculate scores for all properties in target
148
+ for (const key in targetObj) {
149
+ const modelProp = modelValue[key];
150
+ const targetProp = targetObj[key];
151
+ const minProp = minObj?.[key];
152
+ const maxProp = maxObj?.[key];
153
+ const score = calculateScore(modelProp, targetProp, minProp, maxProp);
154
+ if (score !== undefined) {
155
+ scores.push(score);
156
+ }
157
+ }
158
+ // Return average of all defined scores
159
+ if (scores.length === 0) {
160
+ return undefined;
161
+ }
162
+ return scores.reduce((sum, score) => sum + score, 0) / scores.length;
163
+ }
164
+ // For other types, can't calculate meaningful score
165
+ return undefined;
166
+ }
167
+ // ============================================================================
10
168
  // Provider Capability Detection
11
169
  // ============================================================================
12
170
  /**
@@ -237,13 +395,76 @@ export class ModelRegistry {
237
395
  * Search and score models based on criteria
238
396
  */
239
397
  searchModels(metadata) {
240
- const scored = [];
241
398
  // Filter list by models we have providers for
242
399
  const providedModels = this.providedModels();
400
+ // Step 1: Filter to applicable models
401
+ const applicableModels = [];
243
402
  for (const model of providedModels) {
244
- const score = this.scoreModel(model, metadata);
245
- if (score.score > 0) {
246
- scored.push(score);
403
+ const applicability = this.isModelApplicable(model, metadata);
404
+ if (applicability) {
405
+ applicableModels.push({ model, applicability });
406
+ }
407
+ }
408
+ // If no applicable models, return empty
409
+ if (applicableModels.length === 0) {
410
+ return [];
411
+ }
412
+ // Step 2: Calculate ranges across all applicable models
413
+ let rangeMin = {};
414
+ let rangeMax = {};
415
+ for (const { model } of applicableModels) {
416
+ // Calculate range for pricing
417
+ if (model.pricing) {
418
+ const { min, max } = calculateRange(model.pricing, rangeMin.pricing, rangeMax.pricing);
419
+ rangeMin.pricing = min;
420
+ rangeMax.pricing = max;
421
+ }
422
+ // Calculate range for contextWindow
423
+ if (model.contextWindow) {
424
+ const { min, max } = calculateRange(model.contextWindow, rangeMin.contextWindow, rangeMax.contextWindow);
425
+ rangeMin.contextWindow = min;
426
+ rangeMax.contextWindow = max;
427
+ }
428
+ // Calculate range for maxOutputTokens
429
+ if (model.maxOutputTokens) {
430
+ const { min, max } = calculateRange(model.maxOutputTokens, rangeMin.maxOutputTokens, rangeMax.maxOutputTokens);
431
+ rangeMin.maxOutputTokens = min;
432
+ rangeMax.maxOutputTokens = max;
433
+ }
434
+ // Calculate range for metrics
435
+ if (model.metrics) {
436
+ const { min, max } = calculateRange(model.metrics, rangeMin.metrics, rangeMax.metrics);
437
+ rangeMin.metrics = min;
438
+ rangeMax.metrics = max;
439
+ }
440
+ }
441
+ // Step 3: Score all applicable models with ranges
442
+ const scored = [];
443
+ for (const { model, applicability } of applicableModels) {
444
+ const result = {
445
+ model,
446
+ score: 0,
447
+ matchedRequired: applicability.matchedRequired,
448
+ matchedOptional: applicability.matchedOptional,
449
+ missingRequired: applicability.missingRequired,
450
+ };
451
+ // Determine weights
452
+ let weights;
453
+ if (metadata.weights) {
454
+ weights = metadata.weights;
455
+ }
456
+ else if (metadata.weightProfile && this.weightProfiles[metadata.weightProfile]) {
457
+ weights = this.weightProfiles[metadata.weightProfile];
458
+ }
459
+ else if (this.defaultWeights) {
460
+ weights = this.defaultWeights;
461
+ }
462
+ else {
463
+ weights = { cost: 0.5, speed: 0.3, accuracy: 0.2 };
464
+ }
465
+ result.score = this.calculateWeightedScore(model, weights, metadata, rangeMin, rangeMax);
466
+ if (result.score > 0) {
467
+ scored.push(result);
247
468
  }
248
469
  }
249
470
  // Sort by score descending
@@ -266,33 +487,10 @@ export class ModelRegistry {
266
487
  if (!provider) {
267
488
  return undefined;
268
489
  }
269
- // Validate that provider supports required capabilities
270
- if (criteria.required) {
271
- const providerCaps = this.providerCapabilities.get(model.provider);
272
- for (const cap of criteria.required) {
273
- // Check if provider supports this capability
274
- const providerSupportsCap = !providerCaps || providerCaps.has(cap);
275
- if (!providerSupportsCap) {
276
- // Provider doesn't support this capability, cannot use this model
277
- return undefined;
278
- }
279
- }
280
- }
281
- // Validate that model supports required parameters
282
- if (criteria.requiredParameters && criteria.requiredParameters.length > 0) {
283
- const optionalParams = criteria.optionalParameters || [];
284
- for (const param of criteria.requiredParameters) {
285
- // If this param is marked as optional, skip the requirement check
286
- if (optionalParams.includes(param)) {
287
- continue;
288
- }
289
- // Check if model supports this parameter
290
- const modelSupportsParam = model.supportedParameters?.has(param) ?? false;
291
- if (!modelSupportsParam) {
292
- // Required parameter not supported by model
293
- return undefined;
294
- }
295
- }
490
+ // Check if model is applicable
491
+ const applicability = this.isModelApplicable(model, criteria);
492
+ if (!applicability) {
493
+ return undefined;
296
494
  }
297
495
  return {
298
496
  model,
@@ -345,25 +543,22 @@ export class ModelRegistry {
345
543
  return this.providerCapabilities.get(name);
346
544
  }
347
545
  /**
348
- * Score a model against criteria
546
+ * Check if a model is applicable given the criteria.
547
+ * Returns null if not applicable, or an object with matched capabilities if applicable.
349
548
  */
350
- scoreModel(model, criteria) {
351
- const result = {
352
- model,
353
- score: 0,
354
- matchedRequired: [],
355
- matchedOptional: [],
356
- missingRequired: [],
357
- };
549
+ isModelApplicable(model, criteria) {
358
550
  // Check provider allowlist/blocklist
359
551
  if (criteria.providers) {
360
552
  if (criteria.providers.deny?.includes(model.provider)) {
361
- return result; // score = 0
553
+ return null;
362
554
  }
363
555
  if (criteria.providers.allow && !criteria.providers.allow.includes(model.provider)) {
364
- return result; // score = 0
556
+ return null;
365
557
  }
366
558
  }
559
+ const matchedRequired = [];
560
+ const matchedOptional = [];
561
+ const missingRequired = [];
367
562
  // Check required capabilities against both model AND provider
368
563
  if (criteria.required) {
369
564
  const providerCaps = this.providerCapabilities.get(model.provider);
@@ -375,22 +570,22 @@ export class ModelRegistry {
375
570
  const providerSupportsCap = !providerCaps || providerCaps.has(cap);
376
571
  // Both model AND provider must support the capability
377
572
  if (modelHasCap && providerSupportsCap) {
378
- result.matchedRequired.push(cap);
573
+ matchedRequired.push(cap);
379
574
  }
380
575
  else {
381
- result.missingRequired.push(cap);
576
+ missingRequired.push(cap);
382
577
  }
383
578
  }
384
- // If any required capabilities are missing, score = 0
385
- if (result.missingRequired.length > 0) {
386
- return result;
579
+ // If any required capabilities are missing, not applicable
580
+ if (missingRequired.length > 0) {
581
+ return null;
387
582
  }
388
583
  }
389
584
  // Check optional capabilities
390
585
  if (criteria.optional) {
391
586
  for (const cap of criteria.optional) {
392
587
  if (model.capabilities.has(cap)) {
393
- result.matchedOptional.push(cap);
588
+ matchedOptional.push(cap);
394
589
  }
395
590
  }
396
591
  }
@@ -406,16 +601,54 @@ export class ModelRegistry {
406
601
  const modelSupportsParam = model.supportedParameters?.has(param) ?? false;
407
602
  if (!modelSupportsParam) {
408
603
  // Required parameter not supported by model
409
- return result; // score = 0
604
+ return null;
410
605
  }
411
606
  }
412
607
  }
413
- // Check minimum context window
414
- if (criteria.minContextWindow && model.contextWindow && model.contextWindow < criteria.minContextWindow) {
415
- return result; // score = 0
608
+ // Check pricing constraints
609
+ if (!satisfiesConstraint(model.pricing, criteria.pricing?.min, criteria.pricing?.max)) {
610
+ return null;
611
+ }
612
+ // Check context window constraints
613
+ if (!satisfiesConstraint(model.contextWindow, criteria.contextWindow?.min, criteria.contextWindow?.max)) {
614
+ return null;
615
+ }
616
+ // Check output tokens constraints
617
+ if (!satisfiesConstraint(model.maxOutputTokens, criteria.outputTokens?.min, criteria.outputTokens?.max)) {
618
+ return null;
619
+ }
620
+ // Check metrics constraints
621
+ if (!satisfiesConstraint(model.metrics, criteria.metrics?.min, criteria.metrics?.max)) {
622
+ return null;
416
623
  }
417
624
  if (criteria.tier && model.tier !== criteria.tier) {
418
- return result; // score = 0
625
+ return null;
626
+ }
627
+ return { matchedRequired, matchedOptional, missingRequired };
628
+ }
629
+ /**
630
+ * Score a model against criteria
631
+ * @param skipApplicabilityCheck - If true, skips the applicability check (used when already filtered)
632
+ * @param rangeMin - Minimum values across all applicable models (for target scoring)
633
+ * @param rangeMax - Maximum values across all applicable models (for target scoring)
634
+ */
635
+ scoreModel(model, criteria, skipApplicabilityCheck = false, rangeMin, rangeMax) {
636
+ const result = {
637
+ model,
638
+ score: 0,
639
+ matchedRequired: [],
640
+ matchedOptional: [],
641
+ missingRequired: [],
642
+ };
643
+ // Check if model is applicable (unless already checked)
644
+ if (!skipApplicabilityCheck) {
645
+ const applicability = this.isModelApplicable(model, criteria);
646
+ if (!applicability) {
647
+ return result; // score = 0
648
+ }
649
+ result.matchedRequired = applicability.matchedRequired;
650
+ result.matchedOptional = applicability.matchedOptional;
651
+ result.missingRequired = applicability.missingRequired;
419
652
  }
420
653
  // Determine weights with priority: metadata.weights > weightProfile > defaultWeights
421
654
  let weights;
@@ -431,30 +664,54 @@ export class ModelRegistry {
431
664
  else {
432
665
  weights = { cost: 0.5, speed: 0.3, accuracy: 0.2 };
433
666
  }
434
- result.score = this.calculateWeightedScore(model, weights, criteria);
667
+ result.score = this.calculateWeightedScore(model, weights, criteria, rangeMin, rangeMax);
435
668
  return result;
436
669
  }
437
670
  /**
438
671
  * Calculate weighted score for a model
672
+ * @param rangeMin - Minimum values across all applicable models (for target scoring)
673
+ * @param rangeMax - Maximum values across all applicable models (for target scoring)
439
674
  */
440
- calculateWeightedScore(model, weights, metadata) {
675
+ calculateWeightedScore(model, weights, metadata, rangeMin, rangeMax) {
441
676
  let score = 0;
442
677
  let weighted = 0;
443
- // Cost score (lower is better, invert)
678
+ // Cost score with optional target-based scoring
444
679
  if (weights.cost) {
445
- // TODO more sophisticated cost modeling
446
- const avgCost = ((model.pricing.text?.input ?? 0) + (model.pricing.text?.output ?? 0)) / 2;
447
- const costScore = 1 / (1 + avgCost / 10); // Normalize
448
- score += weights.cost * costScore;
449
- if (avgCost > 0) {
680
+ let costScore;
681
+ // If target pricing specified and we have range, use target-based scoring
682
+ if (metadata.pricing?.target && rangeMin && rangeMax) {
683
+ costScore = calculateScore(model.pricing, metadata.pricing.target, rangeMin.pricing, rangeMax.pricing);
684
+ }
685
+ // Fallback to default scoring if no target or no range
686
+ if (costScore === undefined) {
687
+ // Extract average cost for simple scoring
688
+ const inputCost = model.pricing?.text?.input ?? 0;
689
+ const outputCost = model.pricing?.text?.output ?? 0;
690
+ const avgCost = (inputCost + outputCost) / 2;
691
+ if (avgCost > 0) {
692
+ // Default: lower cost is better
693
+ costScore = 1 / (1 + avgCost / 10);
694
+ }
695
+ }
696
+ if (costScore !== undefined) {
697
+ score += weights.cost * costScore;
450
698
  weighted++;
451
699
  }
452
700
  }
453
- // Speed score
454
- if (weights.speed && model.metrics?.tokensPerSecond) {
455
- const speedScore = Math.min(model.metrics.tokensPerSecond / 100, 1); // Normalize to 0-1
456
- score += weights.speed * speedScore;
457
- if (speedScore > 0) {
701
+ // Speed score with optional target-based scoring
702
+ if (weights.speed) {
703
+ let speedScore;
704
+ // If target metrics specified and we have range, use target-based scoring
705
+ if (metadata.metrics?.target && rangeMin && rangeMax) {
706
+ speedScore = calculateScore(model.metrics, metadata.metrics.target, rangeMin.metrics, rangeMax.metrics);
707
+ }
708
+ // Fallback to default scoring if no target or no range
709
+ if (speedScore === undefined && model.metrics?.tokensPerSecond !== undefined) {
710
+ // Default: higher speed is better (normalize to 0-1)
711
+ speedScore = Math.min(model.metrics.tokensPerSecond / 100, 1);
712
+ }
713
+ if (speedScore !== undefined) {
714
+ score += weights.speed * speedScore;
458
715
  weighted++;
459
716
  }
460
717
  }
@@ -462,21 +719,29 @@ export class ModelRegistry {
462
719
  if (weights.accuracy) {
463
720
  if (model.metrics?.accuracyScore) {
464
721
  score += weights.accuracy * model.metrics.accuracyScore;
722
+ weighted++;
465
723
  }
466
724
  else if (model.tier) {
467
725
  // Fallback to tier-based accuracy when metrics not available
468
726
  const tierScore = model.tier === 'flagship' ? 1.0 : model.tier === 'efficient' ? 0.7 : 0.5;
469
727
  score += weights.accuracy * tierScore;
470
- }
471
- if (model.metrics?.accuracyScore || model.tier) {
472
728
  weighted++;
473
729
  }
474
730
  }
475
- // Context window score
731
+ // Context window score with optional target-based scoring
476
732
  if (weights.contextWindow) {
477
- const contextScore = Math.min(model.contextWindow / 100000, 1); // Normalize
478
- score += weights.contextWindow * contextScore;
479
- if (model.contextWindow > 0) {
733
+ let contextScore;
734
+ // If target context window specified and we have range, use target-based scoring
735
+ if (metadata.contextWindow?.target && rangeMin && rangeMax) {
736
+ contextScore = calculateScore(model.contextWindow, metadata.contextWindow.target, rangeMin.contextWindow, rangeMax.contextWindow);
737
+ }
738
+ // Fallback to default scoring if no target or no range
739
+ if (contextScore === undefined && model.contextWindow > 0) {
740
+ // Default: larger context window is better (normalize to 0-1)
741
+ contextScore = Math.min(model.contextWindow / 100000, 1);
742
+ }
743
+ if (contextScore !== undefined) {
744
+ score += weights.contextWindow * contextScore;
480
745
  weighted++;
481
746
  }
482
747
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}