@machinespirits/eval 0.1.0
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/components/MobileEvalDashboard.tsx +267 -0
- package/components/comparison/DeltaAnalysisTable.tsx +137 -0
- package/components/comparison/ProfileComparisonCard.tsx +176 -0
- package/components/comparison/RecognitionABMode.tsx +385 -0
- package/components/comparison/RecognitionMetricsPanel.tsx +135 -0
- package/components/comparison/WinnerIndicator.tsx +64 -0
- package/components/comparison/index.ts +5 -0
- package/components/mobile/BottomSheet.tsx +233 -0
- package/components/mobile/DimensionBreakdown.tsx +210 -0
- package/components/mobile/DocsView.tsx +363 -0
- package/components/mobile/LogsView.tsx +481 -0
- package/components/mobile/PsychodynamicQuadrant.tsx +261 -0
- package/components/mobile/QuickTestView.tsx +1098 -0
- package/components/mobile/RecognitionTypeChart.tsx +124 -0
- package/components/mobile/RecognitionView.tsx +809 -0
- package/components/mobile/RunDetailView.tsx +261 -0
- package/components/mobile/RunHistoryView.tsx +367 -0
- package/components/mobile/ScoreRadial.tsx +211 -0
- package/components/mobile/StreamingLogPanel.tsx +230 -0
- package/components/mobile/SynthesisStrategyChart.tsx +140 -0
- package/config/interaction-eval-scenarios.yaml +832 -0
- package/config/learner-agents.yaml +248 -0
- package/docs/research/ABLATION-DIALOGUE-ROUNDS.md +52 -0
- package/docs/research/ABLATION-MODEL-SELECTION.md +53 -0
- package/docs/research/ADVANCED-EVAL-ANALYSIS.md +60 -0
- package/docs/research/ANOVA-RESULTS-2026-01-14.md +257 -0
- package/docs/research/COMPREHENSIVE-EVALUATION-PLAN.md +586 -0
- package/docs/research/COST-ANALYSIS.md +56 -0
- package/docs/research/CRITICAL-REVIEW-RECOGNITION-TUTORING.md +340 -0
- package/docs/research/DYNAMIC-VS-SCRIPTED-ANALYSIS.md +291 -0
- package/docs/research/EVAL-SYSTEM-ANALYSIS.md +306 -0
- package/docs/research/FACTORIAL-RESULTS-2026-01-14.md +301 -0
- package/docs/research/IMPLEMENTATION-PLAN-CRITIQUE-RESPONSE.md +1988 -0
- package/docs/research/LONGITUDINAL-DYADIC-EVALUATION.md +282 -0
- package/docs/research/MULTI-JUDGE-VALIDATION-2026-01-14.md +147 -0
- package/docs/research/PAPER-EXTENSION-DYADIC.md +204 -0
- package/docs/research/PAPER-UNIFIED.md +659 -0
- package/docs/research/PAPER-UNIFIED.pdf +0 -0
- package/docs/research/PROMPT-IMPROVEMENTS-2026-01-14.md +356 -0
- package/docs/research/SESSION-NOTES-2026-01-11-RECOGNITION-EVAL.md +419 -0
- package/docs/research/apa.csl +2133 -0
- package/docs/research/archive/PAPER-DRAFT-RECOGNITION-TUTORING.md +1637 -0
- package/docs/research/archive/paper-multiagent-tutor.tex +978 -0
- package/docs/research/paper-draft/full-paper.md +136 -0
- package/docs/research/paper-draft/images/pasted-image-2026-01-24T03-47-47-846Z-d76a7ae2.png +0 -0
- package/docs/research/paper-draft/references.bib +515 -0
- package/docs/research/transcript-baseline.md +139 -0
- package/docs/research/transcript-recognition-multiagent.md +187 -0
- package/hooks/useEvalData.ts +625 -0
- package/index.js +27 -0
- package/package.json +73 -0
- package/routes/evalRoutes.js +3002 -0
- package/scripts/advanced-eval-analysis.js +351 -0
- package/scripts/analyze-eval-costs.js +378 -0
- package/scripts/analyze-eval-results.js +513 -0
- package/scripts/analyze-interaction-evals.js +368 -0
- package/server-init.js +45 -0
- package/server.js +162 -0
- package/services/benchmarkService.js +1892 -0
- package/services/evaluationRunner.js +739 -0
- package/services/evaluationStore.js +1121 -0
- package/services/learnerConfigLoader.js +385 -0
- package/services/learnerTutorInteractionEngine.js +857 -0
- package/services/memory/learnerMemoryService.js +1227 -0
- package/services/memory/learnerWritingPad.js +577 -0
- package/services/memory/tutorWritingPad.js +674 -0
- package/services/promptRecommendationService.js +493 -0
- package/services/rubricEvaluator.js +826 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RecognitionTypeChart Component
|
|
3
|
+
*
|
|
4
|
+
* Horizontal stacked bar showing distribution of recognition types:
|
|
5
|
+
* - Pedagogical (green) - Learning-focused recognition moments
|
|
6
|
+
* - Metacognitive (blue) - Reflection on learning process
|
|
7
|
+
* - Existential (purple) - Deep identity/meaning moments
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import React from 'react';
|
|
11
|
+
|
|
12
|
+
interface RecognitionTypeCounts {
|
|
13
|
+
pedagogical: number;
|
|
14
|
+
metacognitive: number;
|
|
15
|
+
existential: number;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface RecognitionTypeChartProps {
|
|
19
|
+
counts: RecognitionTypeCounts;
|
|
20
|
+
showLegend?: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const RecognitionTypeChart: React.FC<RecognitionTypeChartProps> = ({
|
|
24
|
+
counts,
|
|
25
|
+
showLegend = true,
|
|
26
|
+
}) => {
|
|
27
|
+
const total = counts.pedagogical + counts.metacognitive + counts.existential;
|
|
28
|
+
|
|
29
|
+
if (total === 0) {
|
|
30
|
+
return (
|
|
31
|
+
<div className="bg-gray-900/60 backdrop-blur-sm border border-white/5 rounded-xl p-4">
|
|
32
|
+
<div className="text-xs text-gray-400 mb-3">Recognition Types</div>
|
|
33
|
+
<div className="text-sm text-gray-500 text-center py-4">
|
|
34
|
+
No recognition moments recorded
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const percentages = {
|
|
41
|
+
pedagogical: (counts.pedagogical / total) * 100,
|
|
42
|
+
metacognitive: (counts.metacognitive / total) * 100,
|
|
43
|
+
existential: (counts.existential / total) * 100,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const types = [
|
|
47
|
+
{
|
|
48
|
+
key: 'pedagogical',
|
|
49
|
+
label: 'Pedagogical',
|
|
50
|
+
count: counts.pedagogical,
|
|
51
|
+
percentage: percentages.pedagogical,
|
|
52
|
+
color: 'bg-green-500',
|
|
53
|
+
textColor: 'text-green-400',
|
|
54
|
+
description: 'Learning-focused',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: 'metacognitive',
|
|
58
|
+
label: 'Metacognitive',
|
|
59
|
+
count: counts.metacognitive,
|
|
60
|
+
percentage: percentages.metacognitive,
|
|
61
|
+
color: 'bg-blue-500',
|
|
62
|
+
textColor: 'text-blue-400',
|
|
63
|
+
description: 'Process reflection',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
key: 'existential',
|
|
67
|
+
label: 'Existential',
|
|
68
|
+
count: counts.existential,
|
|
69
|
+
percentage: percentages.existential,
|
|
70
|
+
color: 'bg-purple-500',
|
|
71
|
+
textColor: 'text-purple-400',
|
|
72
|
+
description: 'Identity/meaning',
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<div className="bg-gray-900/60 backdrop-blur-sm border border-white/5 rounded-xl p-4">
|
|
78
|
+
<div className="flex items-center justify-between mb-3">
|
|
79
|
+
<div className="text-xs text-gray-400">Recognition Types</div>
|
|
80
|
+
<div className="text-xs text-gray-500">{total} total</div>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
{/* Stacked bar */}
|
|
84
|
+
<div className="h-6 rounded-full overflow-hidden flex bg-gray-800">
|
|
85
|
+
{types.map(
|
|
86
|
+
(type) =>
|
|
87
|
+
type.percentage > 0 && (
|
|
88
|
+
<div
|
|
89
|
+
key={type.key}
|
|
90
|
+
className={`${type.color} transition-all duration-500`}
|
|
91
|
+
style={{ width: `${type.percentage}%` }}
|
|
92
|
+
title={`${type.label}: ${type.count} (${type.percentage.toFixed(1)}%)`}
|
|
93
|
+
/>
|
|
94
|
+
)
|
|
95
|
+
)}
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
{/* Legend */}
|
|
99
|
+
{showLegend && (
|
|
100
|
+
<div className="mt-4 space-y-2">
|
|
101
|
+
{types.map((type) => (
|
|
102
|
+
<div key={type.key} className="flex items-center justify-between">
|
|
103
|
+
<div className="flex items-center gap-2">
|
|
104
|
+
<div className={`w-3 h-3 rounded-full ${type.color}`} />
|
|
105
|
+
<span className="text-xs text-gray-300">{type.label}</span>
|
|
106
|
+
<span className="text-xs text-gray-600">{type.description}</span>
|
|
107
|
+
</div>
|
|
108
|
+
<div className="flex items-center gap-2">
|
|
109
|
+
<span className={`text-xs ${type.textColor} font-medium`}>
|
|
110
|
+
{type.count}
|
|
111
|
+
</span>
|
|
112
|
+
<span className="text-xs text-gray-500">
|
|
113
|
+
({type.percentage.toFixed(0)}%)
|
|
114
|
+
</span>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
))}
|
|
118
|
+
</div>
|
|
119
|
+
)}
|
|
120
|
+
</div>
|
|
121
|
+
);
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
export default RecognitionTypeChart;
|