@elizaos/training 2.0.0-alpha.21 → 2.0.0-alpha.22

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.
Files changed (94) hide show
  1. package/.turbo/turbo-lint.log +2 -0
  2. package/.turbo/turbo-typecheck.log +1 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/adapter.js +59 -0
  5. package/dist/archetypes/ArchetypeConfigService.js +510 -0
  6. package/dist/archetypes/derive-archetype.js +196 -0
  7. package/dist/archetypes/index.js +7 -0
  8. package/dist/benchmark/ArchetypeMatchupBenchmark.js +547 -0
  9. package/dist/benchmark/BenchmarkChartGenerator.js +632 -0
  10. package/dist/benchmark/BenchmarkDataGenerator.js +825 -0
  11. package/dist/benchmark/BenchmarkDataViewer.js +197 -0
  12. package/dist/benchmark/BenchmarkHistoryService.js +135 -0
  13. package/dist/benchmark/BenchmarkRunner.js +483 -0
  14. package/dist/benchmark/BenchmarkValidator.js +158 -0
  15. package/dist/benchmark/FastEvalRunner.js +133 -0
  16. package/dist/benchmark/MetricsValidator.js +104 -0
  17. package/dist/benchmark/MetricsVisualizer.js +775 -0
  18. package/dist/benchmark/ModelBenchmarkService.js +433 -0
  19. package/dist/benchmark/ModelRegistry.js +122 -0
  20. package/dist/benchmark/RulerBenchmarkIntegration.js +168 -0
  21. package/dist/benchmark/SimulationA2AInterface.js +683 -0
  22. package/dist/benchmark/SimulationEngine.js +522 -0
  23. package/dist/benchmark/TaskRunner.js +60 -0
  24. package/dist/benchmark/__tests__/BenchmarkRunner.test.js +409 -0
  25. package/dist/benchmark/__tests__/HeadToHead.test.js +105 -0
  26. package/dist/benchmark/index.js +23 -0
  27. package/dist/benchmark/parseSimulationMetrics.js +86 -0
  28. package/dist/benchmark/simulation-types.js +1 -0
  29. package/dist/dependencies.js +197 -0
  30. package/dist/generation/TrajectoryGenerator.js +244 -0
  31. package/dist/generation/index.js +6 -0
  32. package/dist/huggingface/HuggingFaceDatasetUploader.js +463 -0
  33. package/dist/huggingface/HuggingFaceIntegrationService.js +272 -0
  34. package/dist/huggingface/HuggingFaceModelUploader.js +385 -0
  35. package/dist/huggingface/index.js +9 -0
  36. package/dist/huggingface/shared/HuggingFaceUploadUtil.js +144 -0
  37. package/dist/index.js +41 -0
  38. package/dist/init-training.js +43 -0
  39. package/dist/metrics/TrajectoryMetricsExtractor.js +523 -0
  40. package/dist/metrics/__tests__/TrajectoryMetricsExtractor.test.js +628 -0
  41. package/dist/metrics/index.js +7 -0
  42. package/dist/metrics/types.js +21 -0
  43. package/dist/rubrics/__tests__/index.test.js +150 -0
  44. package/dist/rubrics/ass-kisser.js +83 -0
  45. package/dist/rubrics/degen.js +78 -0
  46. package/dist/rubrics/goody-twoshoes.js +82 -0
  47. package/dist/rubrics/index.js +184 -0
  48. package/dist/rubrics/information-trader.js +82 -0
  49. package/dist/rubrics/infosec.js +99 -0
  50. package/dist/rubrics/liar.js +102 -0
  51. package/dist/rubrics/perps-trader.js +85 -0
  52. package/dist/rubrics/researcher.js +79 -0
  53. package/dist/rubrics/scammer.js +80 -0
  54. package/dist/rubrics/social-butterfly.js +71 -0
  55. package/dist/rubrics/super-predictor.js +95 -0
  56. package/dist/rubrics/trader.js +65 -0
  57. package/dist/scoring/ArchetypeScoringService.js +301 -0
  58. package/dist/scoring/JudgePromptBuilder.js +401 -0
  59. package/dist/scoring/LLMJudgeCache.js +263 -0
  60. package/dist/scoring/index.js +8 -0
  61. package/dist/training/AutomationPipeline.js +714 -0
  62. package/dist/training/BenchmarkService.js +370 -0
  63. package/dist/training/ConfigValidator.js +153 -0
  64. package/dist/training/MarketOutcomesTracker.js +142 -0
  65. package/dist/training/ModelDeployer.js +128 -0
  66. package/dist/training/ModelFetcher.js +48 -0
  67. package/dist/training/ModelSelectionService.js +248 -0
  68. package/dist/training/ModelUsageVerifier.js +106 -0
  69. package/dist/training/MultiModelOrchestrator.js +349 -0
  70. package/dist/training/RLModelConfig.js +295 -0
  71. package/dist/training/RewardBackpropagationService.js +117 -0
  72. package/dist/training/RulerScoringService.js +450 -0
  73. package/dist/training/TrainingMonitor.js +108 -0
  74. package/dist/training/TrajectoryRecorder.js +281 -0
  75. package/dist/training/__tests__/TrajectoryRecorder.test.js +363 -0
  76. package/dist/training/index.js +30 -0
  77. package/dist/training/logRLConfig.js +29 -0
  78. package/dist/training/pipeline.js +80 -0
  79. package/dist/training/storage/ModelStorageService.js +190 -0
  80. package/dist/training/storage/TrainingDataArchiver.js +136 -0
  81. package/dist/training/storage/index.js +7 -0
  82. package/dist/training/types.js +6 -0
  83. package/dist/training/window-utils.js +100 -0
  84. package/dist/utils/index.js +73 -0
  85. package/dist/utils/logger.js +55 -0
  86. package/dist/utils/snowflake.js +15 -0
  87. package/dist/utils/synthetic-detector.js +67 -0
  88. package/package.json +2 -2
  89. package/research-output/training-runs/training-run-1773742857616.json +38 -0
  90. package/research-output/training-runs/training-run-1773742946977.json +38 -0
  91. package/research-output/training-runs/training-run-1773743278891.json +38 -0
  92. package/research-output/training-runs/training-run-1773743409754.json +38 -0
  93. package/research-output/training-runs/training-run-1773743651086.json +38 -0
  94. package/research-output/training-runs/training-run-1773743782883.json +38 -0
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Archetype Derivation
3
+ *
4
+ * Derives training archetypes from NPC characteristics.
5
+ * Maps game NPC roles and personalities to training pipeline archetypes.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { getAvailableArchetypes, normalizeArchetype } from "../rubrics";
10
+ /**
11
+ * Role to archetype mappings
12
+ * Maps game NPC roles to training archetypes
13
+ */
14
+ const ROLE_TO_ARCHETYPE = {
15
+ // High-reliability roles → ethical archetypes
16
+ insider: "information-trader",
17
+ expert: "researcher",
18
+ whistleblower: "goody-twoshoes",
19
+ analyst: "researcher",
20
+ // Media/content roles
21
+ journalist: "social-butterfly",
22
+ reporter: "social-butterfly",
23
+ influencer: "social-butterfly",
24
+ // Low-reliability roles → deceptive archetypes
25
+ deceiver: "scammer",
26
+ politician: "liar",
27
+ conspiracy: "liar",
28
+ // Trading-focused roles
29
+ trader: "trader",
30
+ investor: "trader",
31
+ speculator: "degen",
32
+ // Default fallback
33
+ unknown: "trader",
34
+ };
35
+ /**
36
+ * Personality keyword to archetype mappings
37
+ * Used when role doesn't provide clear mapping
38
+ */
39
+ const PERSONALITY_KEYWORDS = [
40
+ // High priority - distinctive personalities
41
+ {
42
+ keywords: ["manipulative", "deceptive", "cunning", "unethical"],
43
+ archetype: "scammer",
44
+ priority: 10,
45
+ },
46
+ {
47
+ keywords: ["reckless", "impulsive", "yolo", "fomo", "aggressive"],
48
+ archetype: "degen",
49
+ priority: 10,
50
+ },
51
+ {
52
+ keywords: ["honest", "ethical", "helpful", "transparent", "altruistic"],
53
+ archetype: "goody-twoshoes",
54
+ priority: 10,
55
+ },
56
+ {
57
+ keywords: ["thorough", "meticulous", "analytical", "data-driven"],
58
+ archetype: "researcher",
59
+ priority: 8,
60
+ },
61
+ // Medium priority - trading styles
62
+ {
63
+ keywords: ["disciplined", "methodical", "patient", "risk-averse"],
64
+ archetype: "trader",
65
+ priority: 5,
66
+ },
67
+ {
68
+ keywords: ["social", "networker", "outgoing", "community"],
69
+ archetype: "social-butterfly",
70
+ priority: 5,
71
+ },
72
+ {
73
+ keywords: ["flattering", "agreeable", "sycophantic", "pleasing"],
74
+ archetype: "ass-kisser",
75
+ priority: 5,
76
+ },
77
+ // Low priority - general
78
+ {
79
+ keywords: ["suspicious", "secretive", "paranoid", "security"],
80
+ archetype: "infosec",
81
+ priority: 3,
82
+ },
83
+ {
84
+ keywords: ["leverage", "perpetual", "futures", "derivatives"],
85
+ archetype: "perps-trader",
86
+ priority: 3,
87
+ },
88
+ {
89
+ keywords: ["prediction", "forecast", "oracle", "prophet"],
90
+ archetype: "super-predictor",
91
+ priority: 3,
92
+ },
93
+ ];
94
+ /**
95
+ * Derives a training archetype from NPC characteristics
96
+ *
97
+ * @param npc - NPC characteristics to analyze
98
+ * @returns Normalized archetype string
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * const archetype = deriveArchetype({
103
+ * id: 'npc-1',
104
+ * name: 'Insider Ian',
105
+ * role: 'insider',
106
+ * reliability: 0.9
107
+ * });
108
+ * // Returns: 'information-trader'
109
+ * ```
110
+ */
111
+ export function deriveArchetype(npc) {
112
+ // 1. Check role mapping first (most reliable)
113
+ if (npc.role) {
114
+ const roleKey = npc.role.toLowerCase().trim();
115
+ const roleArchetype = ROLE_TO_ARCHETYPE[roleKey];
116
+ if (roleArchetype) {
117
+ return normalizeArchetype(roleArchetype);
118
+ }
119
+ }
120
+ // 2. Analyze reliability for deception indicators
121
+ // Only classify as deceptive if BOTH low reliability AND willingToLie
122
+ // This avoids misclassifying legitimate low-reliability NPCs (e.g., unreliable but honest)
123
+ if (npc.reliability !== undefined &&
124
+ npc.reliability < 0.3 &&
125
+ npc.willingToLie === true) {
126
+ // Confirmed deceptive: low reliability + actively willing to lie
127
+ return "scammer";
128
+ }
129
+ // Note: High reliability is factored into personality analysis below, not used as an override.
130
+ // This prevents highly reliable journalists from becoming information-traders.
131
+ // 3. Analyze personality keywords
132
+ if (npc.personality) {
133
+ const personalityLower = npc.personality.toLowerCase();
134
+ let bestMatch = null;
135
+ for (const mapping of PERSONALITY_KEYWORDS) {
136
+ const matchCount = mapping.keywords.filter((keyword) => personalityLower.includes(keyword)).length;
137
+ if (matchCount > 0) {
138
+ const effectivePriority = mapping.priority * matchCount;
139
+ if (!bestMatch || effectivePriority > bestMatch.priority) {
140
+ bestMatch = {
141
+ archetype: mapping.archetype,
142
+ priority: effectivePriority,
143
+ };
144
+ }
145
+ }
146
+ }
147
+ if (bestMatch) {
148
+ return normalizeArchetype(bestMatch.archetype);
149
+ }
150
+ }
151
+ // 4. Check domain for trading specialization
152
+ if (npc.domain && npc.domain.length > 0) {
153
+ const domains = npc.domain.map((d) => d.toLowerCase());
154
+ if (domains.includes("trading") || domains.includes("finance")) {
155
+ return "trader";
156
+ }
157
+ if (domains.includes("technology") || domains.includes("tech")) {
158
+ return "researcher";
159
+ }
160
+ if (domains.includes("media") || domains.includes("social")) {
161
+ return "social-butterfly";
162
+ }
163
+ }
164
+ // 5. Default fallback
165
+ return "trader";
166
+ }
167
+ /**
168
+ * Creates an archetype resolver from a map of NPC characteristics
169
+ *
170
+ * @param npcs - Array of NPC characteristics
171
+ * @returns Function that resolves archetype from NPC ID
172
+ */
173
+ export function createArchetypeResolver(npcs) {
174
+ const archetypeMap = new Map();
175
+ for (const npc of npcs) {
176
+ archetypeMap.set(npc.id, deriveArchetype(npc));
177
+ }
178
+ return (npcId) => {
179
+ return archetypeMap.get(npcId) ?? "trader";
180
+ };
181
+ }
182
+ /**
183
+ * Pre-computed archetype mappings for common NPC roles
184
+ * Useful for quick lookups without full NPC analysis
185
+ */
186
+ export function getRoleArchetype(role) {
187
+ const normalized = role.toLowerCase().trim();
188
+ return ROLE_TO_ARCHETYPE[normalized] ?? "trader";
189
+ }
190
+ /**
191
+ * Get all valid training archetypes
192
+ * Re-exports from rubrics for convenience
193
+ */
194
+ export function getValidArchetypes() {
195
+ return getAvailableArchetypes();
196
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Archetypes Module
3
+ *
4
+ * Central service for managing agent archetype configurations and behaviors.
5
+ */
6
+ export { ArchetypeConfigService, archetypeConfigService, } from "./ArchetypeConfigService";
7
+ export { createArchetypeResolver, deriveArchetype, getRoleArchetype, getValidArchetypes, } from "./derive-archetype";