File size: 2,617 Bytes
49d5ba7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import schema from '@/schema/evaluation-schema.json'
import categoryDetails from '@/schema/category-details.json'
import formHints from '@/schema/form-hints.json'
import systemInfoSchema from '@/schema/system-info-schema.json'

export type Category = {
  id: string
  name: string
  description: string
  type: 'capability' | 'risk'
  detailedGuidance?: string
}

export type Question = {
  id: string
  text: string
  tooltip?: string
  hint?: string
  customFields?: string[]
}

const raw = schema as {
  version: string
  categories: Array<{ id: string; name: string; type: 'capability' | 'risk' }>
  benchmarkQuestions: Question[]
  processQuestions: Question[]
}

// Merge in descriptions from category details
const data = {
  version: raw.version,
  categories: raw.categories.map((c) => ({ 
    ...c, 
    description: (categoryDetails.categories as any)[c.id]?.description || '',
    detailedGuidance: (categoryDetails.categories as any)[c.id]?.detailedGuidance || '' 
  })) as Category[],
  benchmarkQuestions: raw.benchmarkQuestions,
  processQuestions: raw.processQuestions,
}

export function getAllCategories() {
  return data.categories
}

export function getCategoryById(id: string) {
  return data.categories.find((c) => c.id === id)
}

export function getBenchmarkQuestions() {
  return data.benchmarkQuestions
}

export function getProcessQuestions() {
  return data.processQuestions
}

// Export form utilities from schema
export const SOURCE_TYPES = formHints.sourceTypes
export const ADDITIONAL_ASPECTS_SECTION = formHints.additionalAspectsSection

// Form hint utilities from schema
export function getFieldPlaceholder(categoryId: string, field: "benchmarkName" | "metrics") {
  if (field === "benchmarkName") return (formHints.recommendedBenchmarks as any)[categoryId] || "e.g., MMLU, HellaSwag, GSM8K"
  return (formHints.recommendedMetrics as any)[categoryId] || "e.g., accuracy, F1, BLEU, perplexity"
}

export function getHint(categoryId: string, questionId: string, section: "benchmark" | "process") {
  const catQ = (formHints.categoryQuestionHints as any)[categoryId]
  const qHints = catQ ? catQ[questionId] : undefined
  if (qHints && qHints[section]) return qHints[section]
  if ((formHints.categoryHints as any)[categoryId] && (formHints.categoryHints as any)[categoryId][section]) return (formHints.categoryHints as any)[categoryId][section]
  return (formHints.defaultHints as any)[section]
}

export function getSystemInfoFormOptions() {
  return systemInfoSchema.formOptions
}

export function getSystemInfoSchema() {
  return systemInfoSchema.systemInfo
}

export default data