jev-recipes 0.9.12 → 0.9.13
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.
|
@@ -50,7 +50,7 @@ export const recipeMetadata = [
|
|
|
50
50
|
experimental: true,
|
|
51
51
|
measurement: {
|
|
52
52
|
model: 'jev-1.13.0',
|
|
53
|
-
date: '2026-10-
|
|
53
|
+
date: '2026-10-04T20:42:48.259Z',
|
|
54
54
|
operation: 'live',
|
|
55
55
|
replayedAt: null,
|
|
56
56
|
scoringRevision: 2,
|
|
@@ -94,7 +94,7 @@ export const recipeMetadata = [
|
|
|
94
94
|
experimental: true,
|
|
95
95
|
measurement: {
|
|
96
96
|
model: 'jev-1.13.0',
|
|
97
|
-
date: '2026-10-
|
|
97
|
+
date: '2026-10-04T20:42:51.224Z',
|
|
98
98
|
operation: 'live',
|
|
99
99
|
replayedAt: null,
|
|
100
100
|
scoringRevision: 2,
|
|
@@ -319,7 +319,7 @@ export const recipeMetadata = [
|
|
|
319
319
|
experimental: true,
|
|
320
320
|
measurement: {
|
|
321
321
|
model: 'jev-1.13.0',
|
|
322
|
-
date: '2026-10-
|
|
322
|
+
date: '2026-10-04T20:42:52.472Z',
|
|
323
323
|
operation: 'live',
|
|
324
324
|
replayedAt: null,
|
|
325
325
|
scoringRevision: 2,
|
|
@@ -601,7 +601,7 @@ export const recipeMetadata = [
|
|
|
601
601
|
experimental: true,
|
|
602
602
|
measurement: {
|
|
603
603
|
model: 'jev-1.13.0',
|
|
604
|
-
date: '2026-10-
|
|
604
|
+
date: '2026-10-04T20:42:53.964Z',
|
|
605
605
|
operation: 'live',
|
|
606
606
|
replayedAt: null,
|
|
607
607
|
scoringRevision: 2,
|
|
@@ -669,7 +669,7 @@ export const recipeMetadata = [
|
|
|
669
669
|
experimental: true,
|
|
670
670
|
measurement: {
|
|
671
671
|
model: 'jev-1.13.0',
|
|
672
|
-
date: '2026-10-
|
|
672
|
+
date: '2026-10-04T20:42:56.097Z',
|
|
673
673
|
operation: 'live',
|
|
674
674
|
replayedAt: null,
|
|
675
675
|
scoringRevision: 2,
|
|
@@ -930,7 +930,7 @@ export const recipeMetadata = [
|
|
|
930
930
|
experimental: true,
|
|
931
931
|
measurement: {
|
|
932
932
|
model: 'jev-1.13.0',
|
|
933
|
-
date: '2026-10-
|
|
933
|
+
date: '2026-10-04T20:42:57.724Z',
|
|
934
934
|
operation: 'live',
|
|
935
935
|
replayedAt: null,
|
|
936
936
|
scoringRevision: 2,
|
|
@@ -992,7 +992,7 @@ export const recipeMetadata = [
|
|
|
992
992
|
experimental: true,
|
|
993
993
|
measurement: {
|
|
994
994
|
model: 'jev-1.13.0',
|
|
995
|
-
date: '2026-10-
|
|
995
|
+
date: '2026-10-04T20:42:58.654Z',
|
|
996
996
|
operation: 'live',
|
|
997
997
|
replayedAt: null,
|
|
998
998
|
scoringRevision: 2,
|
|
@@ -1115,7 +1115,7 @@ export const recipeMetadata = [
|
|
|
1115
1115
|
experimental: true,
|
|
1116
1116
|
measurement: {
|
|
1117
1117
|
model: 'jev-1.13.0',
|
|
1118
|
-
date: '2026-10-
|
|
1118
|
+
date: '2026-10-04T20:42:59.711Z',
|
|
1119
1119
|
operation: 'live',
|
|
1120
1120
|
replayedAt: null,
|
|
1121
1121
|
scoringRevision: 2,
|
|
@@ -1155,14 +1155,14 @@ export const recipeMetadata = [
|
|
|
1155
1155
|
experimental: true,
|
|
1156
1156
|
measurement: {
|
|
1157
1157
|
model: 'jev-1.13.0',
|
|
1158
|
-
date: '2026-10-
|
|
1158
|
+
date: '2026-10-04T20:43:01.233Z',
|
|
1159
1159
|
operation: 'live',
|
|
1160
1160
|
replayedAt: null,
|
|
1161
1161
|
scoringRevision: 2,
|
|
1162
1162
|
split: 'development',
|
|
1163
1163
|
cases: 50,
|
|
1164
|
-
ready:
|
|
1165
|
-
reviewRate: 0.
|
|
1164
|
+
ready: 30,
|
|
1165
|
+
reviewRate: 0.4,
|
|
1166
1166
|
readyAccuracy: 1,
|
|
1167
1167
|
failed: 0,
|
|
1168
1168
|
provenance: [
|
|
@@ -1342,14 +1342,14 @@ export const recipeMetadata = [
|
|
|
1342
1342
|
experimental: true,
|
|
1343
1343
|
measurement: {
|
|
1344
1344
|
model: 'jev-1.13.0',
|
|
1345
|
-
date: '2026-10-
|
|
1345
|
+
date: '2026-10-04T20:43:02.671Z',
|
|
1346
1346
|
operation: 'live',
|
|
1347
1347
|
replayedAt: null,
|
|
1348
1348
|
scoringRevision: 2,
|
|
1349
1349
|
split: 'development',
|
|
1350
1350
|
cases: 144,
|
|
1351
|
-
ready:
|
|
1352
|
-
reviewRate: 0.
|
|
1351
|
+
ready: 91,
|
|
1352
|
+
reviewRate: 0.368,
|
|
1353
1353
|
readyAccuracy: 1,
|
|
1354
1354
|
failed: 0,
|
|
1355
1355
|
provenance: [
|
|
@@ -1501,7 +1501,7 @@ export const recipeMetadata = [
|
|
|
1501
1501
|
experimental: true,
|
|
1502
1502
|
measurement: {
|
|
1503
1503
|
model: 'jev-1.13.0',
|
|
1504
|
-
date: '2026-10-
|
|
1504
|
+
date: '2026-10-04T20:43:06.812Z',
|
|
1505
1505
|
operation: 'live',
|
|
1506
1506
|
replayedAt: null,
|
|
1507
1507
|
scoringRevision: 2,
|
|
@@ -1600,14 +1600,14 @@ export const recipeMetadata = [
|
|
|
1600
1600
|
experimental: true,
|
|
1601
1601
|
measurement: {
|
|
1602
1602
|
model: 'jev-1.13.0',
|
|
1603
|
-
date: '2026-10-
|
|
1603
|
+
date: '2026-10-04T20:43:08.518Z',
|
|
1604
1604
|
operation: 'live',
|
|
1605
1605
|
replayedAt: null,
|
|
1606
1606
|
scoringRevision: 2,
|
|
1607
1607
|
split: 'development',
|
|
1608
1608
|
cases: 136,
|
|
1609
|
-
ready:
|
|
1610
|
-
reviewRate: 0.
|
|
1609
|
+
ready: 81,
|
|
1610
|
+
reviewRate: 0.404,
|
|
1611
1611
|
readyAccuracy: 1,
|
|
1612
1612
|
failed: 0,
|
|
1613
1613
|
provenance: [
|
|
@@ -1841,14 +1841,14 @@ export const recipeMetadata = [
|
|
|
1841
1841
|
experimental: true,
|
|
1842
1842
|
measurement: {
|
|
1843
1843
|
model: 'jev-1.13.0',
|
|
1844
|
-
date: '2026-10-
|
|
1844
|
+
date: '2026-10-04T20:43:12.519Z',
|
|
1845
1845
|
operation: 'live',
|
|
1846
1846
|
replayedAt: null,
|
|
1847
1847
|
scoringRevision: 2,
|
|
1848
1848
|
split: 'development',
|
|
1849
1849
|
cases: 43,
|
|
1850
|
-
ready:
|
|
1851
|
-
reviewRate: 0.
|
|
1850
|
+
ready: 35,
|
|
1851
|
+
reviewRate: 0.186,
|
|
1852
1852
|
readyAccuracy: 0.971,
|
|
1853
1853
|
failed: 0,
|
|
1854
1854
|
provenance: [
|
|
@@ -2040,7 +2040,7 @@ export const recipeMetadata = [
|
|
|
2040
2040
|
experimental: true,
|
|
2041
2041
|
measurement: {
|
|
2042
2042
|
model: 'jev-1.13.0',
|
|
2043
|
-
date: '2026-10-
|
|
2043
|
+
date: '2026-10-04T20:43:14.302Z',
|
|
2044
2044
|
operation: 'live',
|
|
2045
2045
|
replayedAt: null,
|
|
2046
2046
|
scoringRevision: 2,
|
|
@@ -2339,7 +2339,7 @@ export const recipeMetadata = [
|
|
|
2339
2339
|
experimental: true,
|
|
2340
2340
|
measurement: {
|
|
2341
2341
|
model: 'jev-1.13.0',
|
|
2342
|
-
date: '2026-10-
|
|
2342
|
+
date: '2026-10-04T20:43:16.085Z',
|
|
2343
2343
|
operation: 'live',
|
|
2344
2344
|
replayedAt: null,
|
|
2345
2345
|
scoringRevision: 2,
|
|
@@ -2486,14 +2486,14 @@ export const recipeMetadata = [
|
|
|
2486
2486
|
experimental: true,
|
|
2487
2487
|
measurement: {
|
|
2488
2488
|
model: 'jev-1.13.0',
|
|
2489
|
-
date: '2026-10-
|
|
2489
|
+
date: '2026-10-04T20:43:17.929Z',
|
|
2490
2490
|
operation: 'live',
|
|
2491
2491
|
replayedAt: null,
|
|
2492
2492
|
scoringRevision: 2,
|
|
2493
2493
|
split: 'development',
|
|
2494
2494
|
cases: 60,
|
|
2495
|
-
ready:
|
|
2496
|
-
reviewRate: 0.
|
|
2495
|
+
ready: 44,
|
|
2496
|
+
reviewRate: 0.267,
|
|
2497
2497
|
readyAccuracy: 1,
|
|
2498
2498
|
failed: 0,
|
|
2499
2499
|
provenance: [
|
|
@@ -2578,7 +2578,7 @@ export const recipeMetadata = [
|
|
|
2578
2578
|
experimental: true,
|
|
2579
2579
|
measurement: {
|
|
2580
2580
|
model: 'jev-1.13.0',
|
|
2581
|
-
date: '2026-10-
|
|
2581
|
+
date: '2026-10-04T20:43:19.595Z',
|
|
2582
2582
|
operation: 'live',
|
|
2583
2583
|
replayedAt: null,
|
|
2584
2584
|
scoringRevision: 2,
|
|
@@ -2631,7 +2631,7 @@ export const recipeMetadata = [
|
|
|
2631
2631
|
experimental: true,
|
|
2632
2632
|
measurement: {
|
|
2633
2633
|
model: 'jev-1.13.0',
|
|
2634
|
-
date: '2026-10-
|
|
2634
|
+
date: '2026-10-04T20:43:21.226Z',
|
|
2635
2635
|
operation: 'live',
|
|
2636
2636
|
replayedAt: null,
|
|
2637
2637
|
scoringRevision: 2,
|
|
@@ -2833,7 +2833,7 @@ export const recipeMetadata = [
|
|
|
2833
2833
|
experimental: true,
|
|
2834
2834
|
measurement: {
|
|
2835
2835
|
model: 'jev-1.13.0',
|
|
2836
|
-
date: '2026-10-
|
|
2836
|
+
date: '2026-10-04T20:43:22.858Z',
|
|
2837
2837
|
operation: 'live',
|
|
2838
2838
|
replayedAt: null,
|
|
2839
2839
|
scoringRevision: 2,
|
|
@@ -2916,7 +2916,7 @@ export const recipeMetadata = [
|
|
|
2916
2916
|
experimental: true,
|
|
2917
2917
|
measurement: {
|
|
2918
2918
|
model: 'jev-1.13.0',
|
|
2919
|
-
date: '2026-10-
|
|
2919
|
+
date: '2026-10-04T20:43:24.162Z',
|
|
2920
2920
|
operation: 'live',
|
|
2921
2921
|
replayedAt: null,
|
|
2922
2922
|
scoringRevision: 2,
|
|
@@ -3049,7 +3049,7 @@ export const recipeMetadata = [
|
|
|
3049
3049
|
experimental: true,
|
|
3050
3050
|
measurement: {
|
|
3051
3051
|
model: 'jev-1.13.0',
|
|
3052
|
-
date: '2026-10-
|
|
3052
|
+
date: '2026-10-04T20:43:25.936Z',
|
|
3053
3053
|
operation: 'live',
|
|
3054
3054
|
replayedAt: null,
|
|
3055
3055
|
scoringRevision: 2,
|
|
@@ -3782,7 +3782,7 @@ export const recipeMetadata = [
|
|
|
3782
3782
|
experimental: true,
|
|
3783
3783
|
measurement: {
|
|
3784
3784
|
model: 'jev-1.13.0',
|
|
3785
|
-
date: '2026-10-
|
|
3785
|
+
date: '2026-10-04T20:43:27.171Z',
|
|
3786
3786
|
operation: 'live',
|
|
3787
3787
|
replayedAt: null,
|
|
3788
3788
|
scoringRevision: 2,
|
|
@@ -4222,14 +4222,14 @@ export const recipeMetadata = [
|
|
|
4222
4222
|
experimental: true,
|
|
4223
4223
|
measurement: {
|
|
4224
4224
|
model: 'jev-1.13.0',
|
|
4225
|
-
date: '2026-10-
|
|
4225
|
+
date: '2026-10-04T20:43:30.092Z',
|
|
4226
4226
|
operation: 'live',
|
|
4227
4227
|
replayedAt: null,
|
|
4228
4228
|
scoringRevision: 2,
|
|
4229
4229
|
split: 'development',
|
|
4230
4230
|
cases: 112,
|
|
4231
|
-
ready:
|
|
4232
|
-
reviewRate: 0.
|
|
4231
|
+
ready: 55,
|
|
4232
|
+
reviewRate: 0.509,
|
|
4233
4233
|
readyAccuracy: 1,
|
|
4234
4234
|
failed: 0,
|
|
4235
4235
|
provenance: [
|
|
@@ -4518,7 +4518,7 @@ export const recipeMetadata = [
|
|
|
4518
4518
|
experimental: true,
|
|
4519
4519
|
measurement: {
|
|
4520
4520
|
model: 'jev-1.13.0',
|
|
4521
|
-
date: '2026-10-
|
|
4521
|
+
date: '2026-10-04T20:43:33.245Z',
|
|
4522
4522
|
operation: 'live',
|
|
4523
4523
|
replayedAt: null,
|
|
4524
4524
|
scoringRevision: 2,
|
|
@@ -4770,7 +4770,7 @@ export const recipeMetadata = [
|
|
|
4770
4770
|
experimental: true,
|
|
4771
4771
|
measurement: {
|
|
4772
4772
|
model: 'jev-1.13.0',
|
|
4773
|
-
date: '2026-10-
|
|
4773
|
+
date: '2026-10-04T20:43:34.650Z',
|
|
4774
4774
|
operation: 'live',
|
|
4775
4775
|
replayedAt: null,
|
|
4776
4776
|
scoringRevision: 2,
|
|
@@ -4818,14 +4818,14 @@ export const recipeMetadata = [
|
|
|
4818
4818
|
experimental: true,
|
|
4819
4819
|
measurement: {
|
|
4820
4820
|
model: 'jev-1.13.0',
|
|
4821
|
-
date: '2026-10-
|
|
4821
|
+
date: '2026-10-04T20:43:37.293Z',
|
|
4822
4822
|
operation: 'live',
|
|
4823
4823
|
replayedAt: null,
|
|
4824
4824
|
scoringRevision: 2,
|
|
4825
4825
|
split: 'development',
|
|
4826
4826
|
cases: 102,
|
|
4827
|
-
ready:
|
|
4828
|
-
reviewRate: 0.
|
|
4827
|
+
ready: 93,
|
|
4828
|
+
reviewRate: 0.088,
|
|
4829
4829
|
readyAccuracy: 1,
|
|
4830
4830
|
failed: 0,
|
|
4831
4831
|
provenance: [
|
|
@@ -5210,7 +5210,7 @@ export const recipeMetadata = [
|
|
|
5210
5210
|
experimental: true,
|
|
5211
5211
|
measurement: {
|
|
5212
5212
|
model: 'jev-1.13.0',
|
|
5213
|
-
date: '2026-10-
|
|
5213
|
+
date: '2026-10-04T20:43:40.159Z',
|
|
5214
5214
|
operation: 'live',
|
|
5215
5215
|
replayedAt: null,
|
|
5216
5216
|
scoringRevision: 2,
|
|
@@ -5271,7 +5271,7 @@ export const recipeMetadata = [
|
|
|
5271
5271
|
experimental: true,
|
|
5272
5272
|
measurement: {
|
|
5273
5273
|
model: 'jev-1.13.0',
|
|
5274
|
-
date: '2026-10-
|
|
5274
|
+
date: '2026-10-04T20:43:41.765Z',
|
|
5275
5275
|
operation: 'live',
|
|
5276
5276
|
replayedAt: null,
|
|
5277
5277
|
scoringRevision: 2,
|
|
@@ -5332,7 +5332,7 @@ export const recipeMetadata = [
|
|
|
5332
5332
|
experimental: true,
|
|
5333
5333
|
measurement: {
|
|
5334
5334
|
model: 'jev-1.13.0',
|
|
5335
|
-
date: '2026-10-
|
|
5335
|
+
date: '2026-10-04T20:43:43.607Z',
|
|
5336
5336
|
operation: 'live',
|
|
5337
5337
|
replayedAt: null,
|
|
5338
5338
|
scoringRevision: 2,
|
|
@@ -5453,7 +5453,7 @@ export const recipeMetadata = [
|
|
|
5453
5453
|
experimental: true,
|
|
5454
5454
|
measurement: {
|
|
5455
5455
|
model: 'jev-1.13.0',
|
|
5456
|
-
date: '2026-10-
|
|
5456
|
+
date: '2026-10-04T20:43:44.923Z',
|
|
5457
5457
|
operation: 'live',
|
|
5458
5458
|
replayedAt: null,
|
|
5459
5459
|
scoringRevision: 2,
|
|
@@ -5644,14 +5644,14 @@ export const recipeMetadata = [
|
|
|
5644
5644
|
experimental: true,
|
|
5645
5645
|
measurement: {
|
|
5646
5646
|
model: 'jev-1.13.0',
|
|
5647
|
-
date: '2026-10-
|
|
5647
|
+
date: '2026-10-04T20:43:46.575Z',
|
|
5648
5648
|
operation: 'live',
|
|
5649
5649
|
replayedAt: null,
|
|
5650
5650
|
scoringRevision: 2,
|
|
5651
5651
|
split: 'development',
|
|
5652
5652
|
cases: 110,
|
|
5653
|
-
ready:
|
|
5654
|
-
reviewRate: 0.
|
|
5653
|
+
ready: 73,
|
|
5654
|
+
reviewRate: 0.336,
|
|
5655
5655
|
readyAccuracy: 1,
|
|
5656
5656
|
failed: 0,
|
|
5657
5657
|
provenance: [
|
|
@@ -5697,15 +5697,15 @@ export const recipeMetadata = [
|
|
|
5697
5697
|
experimental: true,
|
|
5698
5698
|
measurement: {
|
|
5699
5699
|
model: 'jev-1.13.0',
|
|
5700
|
-
date: '2026-10-
|
|
5700
|
+
date: '2026-10-04T20:43:49.817Z',
|
|
5701
5701
|
operation: 'live',
|
|
5702
5702
|
replayedAt: null,
|
|
5703
5703
|
scoringRevision: 2,
|
|
5704
5704
|
split: 'development',
|
|
5705
5705
|
cases: 87,
|
|
5706
|
-
ready:
|
|
5707
|
-
reviewRate: 0.
|
|
5708
|
-
readyAccuracy: 0.
|
|
5706
|
+
ready: 47,
|
|
5707
|
+
reviewRate: 0.46,
|
|
5708
|
+
readyAccuracy: 0.979,
|
|
5709
5709
|
failed: 0,
|
|
5710
5710
|
provenance: [
|
|
5711
5711
|
{
|
|
@@ -6329,7 +6329,7 @@ export const recipeMetadata = [
|
|
|
6329
6329
|
experimental: true,
|
|
6330
6330
|
measurement: {
|
|
6331
6331
|
model: 'jev-1.13.0',
|
|
6332
|
-
date: '2026-10-
|
|
6332
|
+
date: '2026-10-04T20:43:52.490Z',
|
|
6333
6333
|
operation: 'live',
|
|
6334
6334
|
replayedAt: null,
|
|
6335
6335
|
scoringRevision: 2,
|
|
@@ -6337,7 +6337,7 @@ export const recipeMetadata = [
|
|
|
6337
6337
|
cases: 126,
|
|
6338
6338
|
ready: 92,
|
|
6339
6339
|
reviewRate: 0.27,
|
|
6340
|
-
readyAccuracy: 0.
|
|
6340
|
+
readyAccuracy: 0.967,
|
|
6341
6341
|
failed: 0,
|
|
6342
6342
|
provenance: [
|
|
6343
6343
|
{
|
|
@@ -6497,7 +6497,7 @@ export const recipeMetadata = [
|
|
|
6497
6497
|
experimental: true,
|
|
6498
6498
|
measurement: {
|
|
6499
6499
|
model: 'jev-1.13.0',
|
|
6500
|
-
date: '2026-10-
|
|
6500
|
+
date: '2026-10-04T20:43:55.923Z',
|
|
6501
6501
|
operation: 'live',
|
|
6502
6502
|
replayedAt: null,
|
|
6503
6503
|
scoringRevision: 2,
|
|
@@ -6719,14 +6719,14 @@ export const recipeMetadata = [
|
|
|
6719
6719
|
experimental: true,
|
|
6720
6720
|
measurement: {
|
|
6721
6721
|
model: 'jev-1.13.0',
|
|
6722
|
-
date: '2026-10-
|
|
6722
|
+
date: '2026-10-04T20:43:58.961Z',
|
|
6723
6723
|
operation: 'live',
|
|
6724
6724
|
replayedAt: null,
|
|
6725
6725
|
scoringRevision: 2,
|
|
6726
6726
|
split: 'development',
|
|
6727
6727
|
cases: 50,
|
|
6728
|
-
ready:
|
|
6729
|
-
reviewRate: 0.
|
|
6728
|
+
ready: 43,
|
|
6729
|
+
reviewRate: 0.14,
|
|
6730
6730
|
readyAccuracy: 1,
|
|
6731
6731
|
failed: 0,
|
|
6732
6732
|
provenance: [
|
|
@@ -6763,15 +6763,15 @@ export const recipeMetadata = [
|
|
|
6763
6763
|
experimental: true,
|
|
6764
6764
|
measurement: {
|
|
6765
6765
|
model: 'jev-1.13.0',
|
|
6766
|
-
date: '2026-10-
|
|
6766
|
+
date: '2026-10-04T20:44:00.345Z',
|
|
6767
6767
|
operation: 'live',
|
|
6768
6768
|
replayedAt: null,
|
|
6769
6769
|
scoringRevision: 2,
|
|
6770
6770
|
split: 'development',
|
|
6771
6771
|
cases: 44,
|
|
6772
|
-
ready:
|
|
6773
|
-
reviewRate: 0.
|
|
6774
|
-
readyAccuracy: 0.
|
|
6772
|
+
ready: 33,
|
|
6773
|
+
reviewRate: 0.25,
|
|
6774
|
+
readyAccuracy: 0.97,
|
|
6775
6775
|
failed: 0,
|
|
6776
6776
|
provenance: [
|
|
6777
6777
|
{ method: 'unspecified', source: 'Not recorded by the dataset author.', cases: 44 },
|
|
@@ -5,5 +5,6 @@ export declare function comparableDecision(value: unknown, recipe: string): unkn
|
|
|
5
5
|
export declare function matchesExpected(actual: unknown, expected: unknown, recipe: string): boolean;
|
|
6
6
|
export declare function isReady(result: unknown, recipe: string): boolean;
|
|
7
7
|
export declare function isMetadataPath(schema: Schema, segments: string[]): boolean;
|
|
8
|
+
export declare function gatedTwinFor(schema: Schema, segments: string[]): string | undefined;
|
|
8
9
|
export declare function schemaAtPath(schema: Schema, segments: string[]): Schema | undefined;
|
|
9
10
|
export {};
|
|
@@ -76,6 +76,19 @@ export function isMetadataPath(schema, segments) {
|
|
|
76
76
|
const child = schemaAtPath(schema, [first]);
|
|
77
77
|
return child !== undefined && isMetadataPath(child, rest);
|
|
78
78
|
}
|
|
79
|
+
export function gatedTwinFor(schema, segments) {
|
|
80
|
+
const name = segments.at(-1);
|
|
81
|
+
if (name === undefined || !name.length)
|
|
82
|
+
return undefined;
|
|
83
|
+
const twin = `suggested${name[0].toUpperCase()}${name.slice(1)}`;
|
|
84
|
+
const parent = schemaAtPath(schema, segments.slice(0, -1));
|
|
85
|
+
return parent !== undefined && hasProperty(parent, twin) ? twin : undefined;
|
|
86
|
+
}
|
|
87
|
+
function hasProperty(schema, name) {
|
|
88
|
+
if (Array.isArray(schema.anyOf))
|
|
89
|
+
return schema.anyOf.some((branch) => isRecord(branch) && hasProperty(branch, name));
|
|
90
|
+
return isRecord(schema.properties) && Object.hasOwn(schema.properties, name);
|
|
91
|
+
}
|
|
79
92
|
export function schemaAtPath(schema, segments) {
|
|
80
93
|
if (!segments.length)
|
|
81
94
|
return schema;
|
|
@@ -3,7 +3,7 @@ import { readFile } from 'node:fs/promises';
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { recipeNameSchema } from '../catalog/schema.js';
|
|
5
5
|
import { isRecord } from './decisions.js';
|
|
6
|
-
import { comparableDecision, isMetadataPath, schemaAtPath, resultSchemaFor } from './comparison.js';
|
|
6
|
+
import { comparableDecision, gatedTwinFor, isMetadataPath, schemaAtPath, resultSchemaFor, } from './comparison.js';
|
|
7
7
|
import { evaluationCaseSchema } from './schema.js';
|
|
8
8
|
export async function loadEvaluationRecipe(name) {
|
|
9
9
|
const id = recipeNameSchema.parse(name);
|
|
@@ -45,9 +45,13 @@ export function validateCases(recipe, values) {
|
|
|
45
45
|
}
|
|
46
46
|
recipe.inputSchema.parse(entry.input);
|
|
47
47
|
for (const [path, expected] of Object.entries(entry.expected)) {
|
|
48
|
-
|
|
48
|
+
const segments = path.split('.');
|
|
49
|
+
if (isMetadataPath(resultSchema, segments))
|
|
49
50
|
throw new Error(`${entry.id}: expected must name an ungated decision, not ${path}.`);
|
|
50
|
-
const
|
|
51
|
+
const twin = gatedTwinFor(resultSchema, segments);
|
|
52
|
+
if (twin)
|
|
53
|
+
throw new Error(`${entry.id}: ${path} is gated by the review policy; label ${twin} instead.`);
|
|
54
|
+
const field = schemaAtPath(resultSchema, segments);
|
|
51
55
|
if (!field)
|
|
52
56
|
throw new Error(`${entry.id}: unknown result field ${path}.`);
|
|
53
57
|
if (!acceptsValue(field, expected))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jev-recipes",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.13",
|
|
4
4
|
"description": "248 small Jev decisions for JavaScript and TypeScript: route, rerank, gate, grade, compare, and label text for agents, RAG, support, code review, and music. Each returns a typed result with explicit uncertainty. Plug into Vercel AI SDK or LangChain agents, import one recipe, or run the CLI with JSON from any language.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|