vskill 0.5.47 → 0.5.49

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.
@@ -23,7 +23,8 @@ export function computeVerdict(assertionPassRate, skillRubricAvg, baselineRubric
23
23
  }
24
24
  return "DEGRADING";
25
25
  }
26
- export function verdictExplanation(verdict, score, rubric) {
26
+ export function verdictExplanation(verdict, rawScore, rubric) {
27
+ const score = isNaN(rawScore) ? 0 : rawScore;
27
28
  const passed = rubric?.filter((r) => r.score >= 0.7) ?? [];
28
29
  const failed = rubric?.filter((r) => r.score < 0.4) ?? [];
29
30
  const weak = rubric?.filter((r) => r.score >= 0.4 && r.score < 0.7) ?? [];
@@ -35,7 +36,7 @@ export function verdictExplanation(verdict, score, rubric) {
35
36
  explanation: `${verdict} (score ${score.toFixed(2)}): evaluation met expectations.${metList}`,
36
37
  };
37
38
  }
38
- if ((verdict === "FAIL" || verdict === "DEGRADING") && score < 0.7) {
39
+ if (verdict === "FAIL" || verdict === "DEGRADING") {
39
40
  const failedList = failed.length > 0
40
41
  ? ` Failed criteria: ${failed.map((r) => r.criterion).join(", ")}.`
41
42
  : "";
@@ -51,18 +52,61 @@ export function verdictExplanation(verdict, score, rubric) {
51
52
  recommendations,
52
53
  };
53
54
  }
54
- if (verdict === "INEFFECTIVE" && score < 0.2) {
55
- const suggestions = [
55
+ if (verdict === "INEFFECTIVE") {
56
+ if (score < 0.2) {
57
+ const suggestions = [
58
+ ...failed.map((r) => `Rework "${r.criterion}" — currently at ${r.score.toFixed(2)}`),
59
+ "Consider adding examples to your system prompt",
60
+ "Review the rubric criteria for achievability",
61
+ ];
62
+ return {
63
+ explanation: `${verdict} (score ${score.toFixed(2)}): evaluation is significantly below expectations.`,
64
+ recommendations: suggestions,
65
+ };
66
+ }
67
+ const recommendations = [
56
68
  ...failed.map((r) => `Rework "${r.criterion}" — currently at ${r.score.toFixed(2)}`),
57
- "Consider adding examples to your system prompt",
58
- "Review the rubric criteria for achievability",
69
+ ...weak.map((r) => `Strengthen "${r.criterion}" (score: ${r.score.toFixed(2)})`),
70
+ ];
71
+ if (recommendations.length === 0) {
72
+ recommendations.push("Consider restructuring your prompt approach");
73
+ }
74
+ return {
75
+ explanation: `${verdict} (score ${score.toFixed(2)}): below expectations but showing some capability.`,
76
+ recommendations,
77
+ };
78
+ }
79
+ if (verdict === "MARGINAL") {
80
+ const recommendations = [
81
+ ...weak.map((r) => `Strengthen "${r.criterion}" (score: ${r.score.toFixed(2)})`),
82
+ ...failed.map((r) => `Improve "${r.criterion}" (score: ${r.score.toFixed(2)})`),
59
83
  ];
84
+ if (recommendations.length === 0) {
85
+ recommendations.push(passed.length > 0
86
+ ? "Assertion pass rate is below target despite strong rubric scores — review test case alignment"
87
+ : "Review prompt instructions for areas of improvement");
88
+ }
60
89
  return {
61
- explanation: `${verdict} (score ${score.toFixed(2)}): evaluation is significantly below expectations.`,
62
- recommendations: suggestions,
90
+ explanation: `${verdict} (score ${score.toFixed(2)}): moderate improvement detected.`,
91
+ recommendations,
92
+ };
93
+ }
94
+ if (verdict === "EMERGING") {
95
+ const recommendations = [
96
+ ...failed.map((r) => `Improve "${r.criterion}" (score: ${r.score.toFixed(2)})`),
97
+ ...weak.map((r) => `Strengthen "${r.criterion}" (score: ${r.score.toFixed(2)})`),
98
+ ];
99
+ if (recommendations.length === 0) {
100
+ recommendations.push(passed.length > 0
101
+ ? "Assertion pass rate is below target despite strong rubric scores — review test case alignment"
102
+ : "Add more specific guidance to your prompt instructions");
103
+ }
104
+ return {
105
+ explanation: `${verdict} (score ${score.toFixed(2)}): early promise — focus on weak areas to improve.`,
106
+ recommendations,
63
107
  };
64
108
  }
65
- // Default/boundary case (e.g., unmatched verdict or PASS/EFFECTIVE with low score)
109
+ // Default/boundary case (e.g., PASS/EFFECTIVE with low score)
66
110
  const metNote = passed.length > 0
67
111
  ? ` Passing: ${passed.map((r) => r.criterion).join(", ")}.`
68
112
  : "";
@@ -1 +1 @@
1
- {"version":3,"file":"verdict.js","sourceRoot":"","sources":["../../src/eval/verdict.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAI9E,MAAM,UAAU,cAAc,CAC5B,iBAAyB,EACzB,cAAsB,EACtB,iBAAyB,EACzB,mBAA2B,CAAC;IAE5B,MAAM,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IAE3D,+BAA+B;IAC/B,IAAI,iBAAiB,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,aAAa,GAAG,IAAI,IAAI,cAAc,GAAG,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACnE,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,iCAAiC;IACjC,IAAI,iBAAiB,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,6BAA6B;IAC7B,IAAI,cAAc,GAAG,iBAAiB,EAAE,CAAC;QACvC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAYD,MAAM,UAAU,kBAAkB,CAChC,OAAsC,EACtC,KAAa,EACb,MAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAE1E,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,WAAW,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,kBAAkB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAChE,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,WAAW,EAAE,GAAG,OAAO,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,OAAO,EAAE;SAC9F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,WAAW,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACnE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC,qBAAqB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACnE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,eAAe,GAAG;YACtB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/E,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;SACjF,CAAC;QACF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,eAAe,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACpF,CAAC;QACD,OAAO;YACL,WAAW,EAAE,GAAG,OAAO,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2CAA2C,UAAU,EAAE;YACzG,eAAe;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,aAAa,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG;YAClB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,SAAS,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,gDAAgD;YAChD,8CAA8C;SAC/C,CAAC;QACF,OAAO;YACL,WAAW,EAAE,GAAG,OAAO,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oDAAoD;YACtG,eAAe,EAAE,WAAW;SAC7B,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC3D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,CAAC,uBAAuB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACnE,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,WAAW,EAAE,GAAG,OAAO,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,OAAO,GAAG,QAAQ,EAAE;KAC3F,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAgC;IAClD,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,sBAAsB;IAChC,QAAQ,EAAE,eAAe;IACzB,WAAW,EAAE,YAAY;IACzB,SAAS,EAAE,YAAY;CACxB,CAAC;AAEF,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAoB;IAC/C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAa;YAChB,OAAO,QAAQ,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"verdict.js","sourceRoot":"","sources":["../../src/eval/verdict.ts"],"names":[],"mappings":"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"}