(opts: {
captured: string;
evalCollector: EvalCollector | null;
evalId: string;
evalTitle: string;
result: SkillTestResult;
passed: boolean;
})
| 210 | * further. |
| 211 | */ |
| 212 | export async function assertRecommendationQuality(opts: { |
| 213 | captured: string; |
| 214 | evalCollector: EvalCollector | null; |
| 215 | evalId: string; |
| 216 | evalTitle: string; |
| 217 | result: SkillTestResult; |
| 218 | passed: boolean; |
| 219 | }): Promise<RecommendationScore> { |
| 220 | const recScore = await judgeRecommendation(opts.captured); |
| 221 | recordE2E(opts.evalCollector, opts.evalId, opts.evalTitle, opts.result, { |
| 222 | passed: opts.passed, |
| 223 | judge_scores: { |
| 224 | rec_present: recScore.present ? 1 : 0, |
| 225 | rec_commits: recScore.commits ? 1 : 0, |
| 226 | rec_has_because: recScore.has_because ? 1 : 0, |
| 227 | rec_substance: recScore.reason_substance, |
| 228 | }, |
| 229 | judge_reasoning: `${recScore.reasoning} | reason: "${recScore.reason_text}"`, |
| 230 | }); |
| 231 | expect(recScore.present, recScore.reasoning).toBe(true); |
| 232 | expect(recScore.commits, recScore.reasoning).toBe(true); |
| 233 | expect(recScore.has_because, recScore.reasoning).toBe(true); |
| 234 | expect( |
| 235 | recScore.reason_substance, |
| 236 | `${recScore.reasoning}\n reason: "${recScore.reason_text}"`, |
| 237 | ).toBeGreaterThanOrEqual(RECOMMENDATION_SUBSTANCE_THRESHOLD); |
| 238 | return recScore; |
| 239 | } |
| 240 | |
| 241 | /** Finalize an eval collector (write results). */ |
| 242 | export async function finalizeEvalCollector(evalCollector: EvalCollector | null) { |
no test coverage detected