@clearlysh/beehaven 0.8.16
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/LICENSE +21 -0
- package/README.md +201 -0
- package/dist/__tests__/_cli-switch.js +105 -0
- package/dist/__tests__/agent-wrap-probe.js +136 -0
- package/dist/agent-attribution.js +192 -0
- package/dist/agent-identity-daemon.js +135 -0
- package/dist/agent-onboard.js +156 -0
- package/dist/agent-scope.js +79 -0
- package/dist/agent-sessions.js +370 -0
- package/dist/agent-state.js +482 -0
- package/dist/app-manifest.js +221 -0
- package/dist/app-signer.js +54 -0
- package/dist/app-signing.js +127 -0
- package/dist/audio-play.js +98 -0
- package/dist/avatar-protocol.js +25 -0
- package/dist/avatar-route.js +79 -0
- package/dist/bee/cloud-proxy.js +130 -0
- package/dist/blocked-actions.js +120 -0
- package/dist/build-channel.js +101 -0
- package/dist/buildings/daemon-workspace.js +475 -0
- package/dist/claude-bridge.js +310 -0
- package/dist/claude-credential-store.js +633 -0
- package/dist/clearly-sync.js +518 -0
- package/dist/clearly.js +616 -0
- package/dist/cli-state.js +334 -0
- package/dist/cli.js +6973 -0
- package/dist/commands/agent-skills.js +302 -0
- package/dist/commands/agent.js +1310 -0
- package/dist/commands/app.js +1123 -0
- package/dist/commands/auth.js +171 -0
- package/dist/commands/building-shell.js +392 -0
- package/dist/commands/canvas.js +932 -0
- package/dist/commands/claude.js +218 -0
- package/dist/commands/compliance.js +387 -0
- package/dist/commands/compose.js +507 -0
- package/dist/commands/composition.js +95 -0
- package/dist/commands/connect-session.js +409 -0
- package/dist/commands/conversations.js +160 -0
- package/dist/commands/costs.js +443 -0
- package/dist/commands/d1.js +253 -0
- package/dist/commands/daemon-cmd.js +162 -0
- package/dist/commands/deploy.js +164 -0
- package/dist/commands/design.js +617 -0
- package/dist/commands/dev-generate.js +125 -0
- package/dist/commands/dev.js +109 -0
- package/dist/commands/devices.js +135 -0
- package/dist/commands/explain-router.js +24 -0
- package/dist/commands/explain.js +882 -0
- package/dist/commands/explore.js +264 -0
- package/dist/commands/help.js +2418 -0
- package/dist/commands/init.js +408 -0
- package/dist/commands/install.js +129 -0
- package/dist/commands/library.js +229 -0
- package/dist/commands/marketplace.js +138 -0
- package/dist/commands/mcp-install.js +476 -0
- package/dist/commands/mention.js +257 -0
- package/dist/commands/omni.js +529 -0
- package/dist/commands/secrets.js +323 -0
- package/dist/commands/self-update.js +206 -0
- package/dist/commands/sheet.js +264 -0
- package/dist/commands/shell-output.js +309 -0
- package/dist/commands/shell.js +1048 -0
- package/dist/commands/shop.js +368 -0
- package/dist/commands/skills.js +311 -0
- package/dist/commands/slides.js +418 -0
- package/dist/commands/swarm.js +341 -0
- package/dist/commands/ticket.js +1301 -0
- package/dist/commands/tool.js +312 -0
- package/dist/commands/trash.js +106 -0
- package/dist/commands/treehouse.js +120 -0
- package/dist/commands/user.js +240 -0
- package/dist/commands/voice-tts.js +319 -0
- package/dist/commands/voice.js +166 -0
- package/dist/commands/watch-git.js +401 -0
- package/dist/commands/webhook.js +159 -0
- package/dist/commands/workspace.js +3354 -0
- package/dist/composition-repos.js +91 -0
- package/dist/daemon-avatar.js +130 -0
- package/dist/daemon-claude-code-auto-install.js +52 -0
- package/dist/daemon-client.js +363 -0
- package/dist/daemon-codex.js +349 -0
- package/dist/daemon-entry.js +101 -0
- package/dist/daemon-fetch-allowlist.js +194 -0
- package/dist/daemon-gemini.js +224 -0
- package/dist/daemon-mcp-clearly.js +353 -0
- package/dist/daemon-mcp-sandbox.js +127 -0
- package/dist/daemon-omni-company.js +338 -0
- package/dist/daemon-omni-hooks.js +375 -0
- package/dist/daemon-omni-identity.js +229 -0
- package/dist/daemon-omni-pipeline.js +251 -0
- package/dist/daemon-omni-policies.js +346 -0
- package/dist/daemon-omni-principal.js +580 -0
- package/dist/daemon-omni-tool-gate.js +116 -0
- package/dist/daemon-omni.js +1442 -0
- package/dist/daemon-path-transform.js +120 -0
- package/dist/daemon-write-sandbox.js +191 -0
- package/dist/daemon.js +4471 -0
- package/dist/dashboard.js +846 -0
- package/dist/dep-installer.js +286 -0
- package/dist/dev-mode.js +67 -0
- package/dist/doc-indexer.js +169 -0
- package/dist/e2e-crypto.js +94 -0
- package/dist/feature-flags.js +154 -0
- package/dist/file-browser.js +88 -0
- package/dist/first-party-hives.js +211 -0
- package/dist/folder-sync.js +226 -0
- package/dist/health.js +56 -0
- package/dist/ipc-auth.js +299 -0
- package/dist/ipc-client.js +495 -0
- package/dist/ipc-server.js +684 -0
- package/dist/keychain.js +224 -0
- package/dist/lib/admin-client.js +73 -0
- package/dist/lib/mobile-build-parser.js +156 -0
- package/dist/local-app-manager.js +660 -0
- package/dist/log-redaction.js +89 -0
- package/dist/logger.js +108 -0
- package/dist/manifest.js +143 -0
- package/dist/marketplace.js +793 -0
- package/dist/min-version-copy.js +51 -0
- package/dist/min-version.js +214 -0
- package/dist/public-surface.js +23 -0
- package/dist/relay-presets.js +89 -0
- package/dist/relay.js +2723 -0
- package/dist/repl.js +619 -0
- package/dist/setup-relay.js +363 -0
- package/dist/setup-service.js +536 -0
- package/dist/shared/bee-memory/index.js +6 -0
- package/dist/shared/bee-memory/types.js +682 -0
- package/dist/shared/claude-code/daemon-types.js +112 -0
- package/dist/shared/claude-code/index.js +2 -0
- package/dist/shared/claude-code/types.js +1 -0
- package/dist/shared/status/schema.js +133 -0
- package/dist/shell-session.js +198 -0
- package/dist/speak-lock.js +97 -0
- package/dist/spinner.js +57 -0
- package/dist/telemetry.js +166 -0
- package/dist/terminal/block-parser.js +207 -0
- package/dist/terminal/shell-integration.js +108 -0
- package/dist/transcript-tailer.js +215 -0
- package/dist/tts-qwen3.js +547 -0
- package/dist/types.js +4 -0
- package/dist/utm.js +38 -0
- package/dist/verb-surface.js +331 -0
- package/dist/version-utils.js +85 -0
- package/dist/watcher.js +207 -0
- package/package.json +88 -0
- package/python/qwen3_tts.py +230 -0
- package/scripts/stamp-build-channel.mjs +115 -0
- package/scripts/sync-installed.mjs +159 -0
- package/scripts/sync-skills.mjs +112 -0
- package/skills/README.md +24 -0
- package/skills/agent-doodle-space/SKILL.md +118 -0
- package/skills/agent-home/SKILL.md +98 -0
- package/skills/beehaven-cli/SKILL.md +144 -0
- package/skills/claude-shopper/README.md +90 -0
- package/skills/claude-shopper/SKILL.md +151 -0
- package/skills/clearly-agent/SKILL.md +183 -0
- package/skills/clearly-canvas/SKILL.md +222 -0
- package/skills/clearly-canvas/authoring.md +160 -0
- package/skills/clearly-canvas/communications.md +32 -0
- package/skills/clearly-canvas/composition-patterns.md +84 -0
- package/skills/clearly-canvas/example.mjs +78 -0
- package/skills/clearly-canvas/project-plans.md +156 -0
- package/skills/clearly-canvas/review.mjs +68 -0
- package/skills/clearly-workspace/SKILL.md +79 -0
- package/skills/clearly-workspace/survey.mjs +101 -0
- package/skills/codebase-map/SKILL.md +142 -0
- package/skills/design-craft/SKILL.md +300 -0
- package/skills/index.json +79 -0
- package/skills/layout-systems/SKILL.md +184 -0
- package/skills/pair-on-canvas/SKILL.md +92 -0
|
@@ -0,0 +1,682 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bee Memory Types
|
|
3
|
+
*
|
|
4
|
+
* Shared types for the bee memory system across desktop and web.
|
|
5
|
+
* Each user has one primary bee that learns and evolves with them.
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================
|
|
8
|
+
// Default Values
|
|
9
|
+
// =============================================================
|
|
10
|
+
export const DEFAULT_BEE_IDENTITY = {
|
|
11
|
+
name: 'Buzzy',
|
|
12
|
+
color: '#FFB300', // Amber/honey color
|
|
13
|
+
createdAt: Date.now(),
|
|
14
|
+
personalityTraits: ['curious', 'helpful', 'playful'],
|
|
15
|
+
outfit: {},
|
|
16
|
+
};
|
|
17
|
+
export const DEFAULT_BEE_PROFILE = {
|
|
18
|
+
interests: [],
|
|
19
|
+
currentProjects: [],
|
|
20
|
+
preferences: {},
|
|
21
|
+
lastUpdated: Date.now(),
|
|
22
|
+
};
|
|
23
|
+
export const DEFAULT_BEE_STATS = {
|
|
24
|
+
intelligenceScore: 0,
|
|
25
|
+
totalInteractions: 0,
|
|
26
|
+
learningsCount: 0,
|
|
27
|
+
patternsCount: 0,
|
|
28
|
+
notesCurated: 0,
|
|
29
|
+
notesRead: 0,
|
|
30
|
+
uniqueTopics: [],
|
|
31
|
+
lastActive: Date.now(),
|
|
32
|
+
};
|
|
33
|
+
// =============================================================
|
|
34
|
+
// Intelligence Score Calculation
|
|
35
|
+
// =============================================================
|
|
36
|
+
export function calculateIntelligenceScore(stats) {
|
|
37
|
+
const base = stats.learningsCount * 10;
|
|
38
|
+
const patternBonus = stats.patternsCount * 25;
|
|
39
|
+
const accuracyBonus = (stats.accuracyRate ?? 0.5) * 100;
|
|
40
|
+
const topicBonus = stats.uniqueTopics.length * 5;
|
|
41
|
+
const curationBonus = stats.notesCurated * 3;
|
|
42
|
+
const interactionBonus = Math.min(stats.totalInteractions, 500); // Cap at 500
|
|
43
|
+
return Math.round(base + patternBonus + accuracyBonus + topicBonus + curationBonus + interactionBonus);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Complete country registry with flags and colors
|
|
47
|
+
*/
|
|
48
|
+
export const BEEHAVEN_COUNTRIES = {
|
|
49
|
+
US: {
|
|
50
|
+
code: 'US',
|
|
51
|
+
name: 'United States',
|
|
52
|
+
flag: '🇺🇸',
|
|
53
|
+
colors: ['#3C3B6E', '#B22234'],
|
|
54
|
+
motto: 'Liberty Through Intelligence',
|
|
55
|
+
},
|
|
56
|
+
CN: { code: 'CN', name: 'China', flag: '🇨🇳', colors: ['#DE2910', '#FFDE00'], motto: '万蜂齐发' },
|
|
57
|
+
JP: { code: 'JP', name: 'Japan', flag: '🇯🇵', colors: ['#BC002D', '#FFFFFF'], motto: '蜂の道' },
|
|
58
|
+
KR: {
|
|
59
|
+
code: 'KR',
|
|
60
|
+
name: 'South Korea',
|
|
61
|
+
flag: '🇰🇷',
|
|
62
|
+
colors: ['#0047A0', '#C60C30'],
|
|
63
|
+
motto: '벌의 정신',
|
|
64
|
+
},
|
|
65
|
+
DE: {
|
|
66
|
+
code: 'DE',
|
|
67
|
+
name: 'Germany',
|
|
68
|
+
flag: '🇩🇪',
|
|
69
|
+
colors: ['#000000', '#FFCC00'],
|
|
70
|
+
motto: 'Präzision und Stärke',
|
|
71
|
+
},
|
|
72
|
+
GB: {
|
|
73
|
+
code: 'GB',
|
|
74
|
+
name: 'United Kingdom',
|
|
75
|
+
flag: '🇬🇧',
|
|
76
|
+
colors: ['#012169', '#C8102E'],
|
|
77
|
+
motto: 'God Save The Hive',
|
|
78
|
+
},
|
|
79
|
+
FR: {
|
|
80
|
+
code: 'FR',
|
|
81
|
+
name: 'France',
|
|
82
|
+
flag: '🇫🇷',
|
|
83
|
+
colors: ['#0055A4', '#EF4135'],
|
|
84
|
+
motto: 'Liberté, Égalité, Apiculture',
|
|
85
|
+
},
|
|
86
|
+
IN: {
|
|
87
|
+
code: 'IN',
|
|
88
|
+
name: 'India',
|
|
89
|
+
flag: '🇮🇳',
|
|
90
|
+
colors: ['#FF9933', '#138808'],
|
|
91
|
+
motto: 'Unity in the Swarm',
|
|
92
|
+
},
|
|
93
|
+
BR: {
|
|
94
|
+
code: 'BR',
|
|
95
|
+
name: 'Brazil',
|
|
96
|
+
flag: '🇧🇷',
|
|
97
|
+
colors: ['#009739', '#FEDD00'],
|
|
98
|
+
motto: 'Ordem e Progresso da Colmeia',
|
|
99
|
+
},
|
|
100
|
+
RU: { code: 'RU', name: 'Russia', flag: '🇷🇺', colors: ['#0039A6', '#D52B1E'], motto: 'Сила Роя' },
|
|
101
|
+
CA: {
|
|
102
|
+
code: 'CA',
|
|
103
|
+
name: 'Canada',
|
|
104
|
+
flag: '🇨🇦',
|
|
105
|
+
colors: ['#FF0000', '#FFFFFF'],
|
|
106
|
+
motto: 'True North Strong and Bee',
|
|
107
|
+
},
|
|
108
|
+
AU: {
|
|
109
|
+
code: 'AU',
|
|
110
|
+
name: 'Australia',
|
|
111
|
+
flag: '🇦🇺',
|
|
112
|
+
colors: ['#00008B', '#FFD700'],
|
|
113
|
+
motto: 'Advance Australia Hive',
|
|
114
|
+
},
|
|
115
|
+
IT: {
|
|
116
|
+
code: 'IT',
|
|
117
|
+
name: 'Italy',
|
|
118
|
+
flag: '🇮🇹',
|
|
119
|
+
colors: ['#009246', '#CE2B37'],
|
|
120
|
+
motto: "L'Ape Vittoriosa",
|
|
121
|
+
},
|
|
122
|
+
ES: {
|
|
123
|
+
code: 'ES',
|
|
124
|
+
name: 'Spain',
|
|
125
|
+
flag: '🇪🇸',
|
|
126
|
+
colors: ['#AA151B', '#F1BF00'],
|
|
127
|
+
motto: 'Plus Ultra Abeja',
|
|
128
|
+
},
|
|
129
|
+
MX: {
|
|
130
|
+
code: 'MX',
|
|
131
|
+
name: 'Mexico',
|
|
132
|
+
flag: '🇲🇽',
|
|
133
|
+
colors: ['#006847', '#CE1126'],
|
|
134
|
+
motto: 'Viva La Colmena',
|
|
135
|
+
},
|
|
136
|
+
NL: {
|
|
137
|
+
code: 'NL',
|
|
138
|
+
name: 'Netherlands',
|
|
139
|
+
flag: '🇳🇱',
|
|
140
|
+
colors: ['#21468B', '#FF6600'],
|
|
141
|
+
motto: 'Je Maintiendrai La Ruche',
|
|
142
|
+
},
|
|
143
|
+
SE: {
|
|
144
|
+
code: 'SE',
|
|
145
|
+
name: 'Sweden',
|
|
146
|
+
flag: '🇸🇪',
|
|
147
|
+
colors: ['#006AA7', '#FECC00'],
|
|
148
|
+
motto: 'För Sverige I Bikupan',
|
|
149
|
+
},
|
|
150
|
+
NO: {
|
|
151
|
+
code: 'NO',
|
|
152
|
+
name: 'Norway',
|
|
153
|
+
flag: '🇳🇴',
|
|
154
|
+
colors: ['#BA0C2F', '#00205B'],
|
|
155
|
+
motto: 'Alt for Norge og Bie',
|
|
156
|
+
},
|
|
157
|
+
FI: {
|
|
158
|
+
code: 'FI',
|
|
159
|
+
name: 'Finland',
|
|
160
|
+
flag: '🇫🇮',
|
|
161
|
+
colors: ['#003580', '#FFFFFF'],
|
|
162
|
+
motto: 'Sisu of the Hive',
|
|
163
|
+
},
|
|
164
|
+
DK: {
|
|
165
|
+
code: 'DK',
|
|
166
|
+
name: 'Denmark',
|
|
167
|
+
flag: '🇩🇰',
|
|
168
|
+
colors: ['#C60C30', '#FFFFFF'],
|
|
169
|
+
motto: 'Guds Hjælp og Biernes Kærlighed',
|
|
170
|
+
},
|
|
171
|
+
PL: {
|
|
172
|
+
code: 'PL',
|
|
173
|
+
name: 'Poland',
|
|
174
|
+
flag: '🇵🇱',
|
|
175
|
+
colors: ['#DC143C', '#FFFFFF'],
|
|
176
|
+
motto: 'Polska Walczy z Pszczołami',
|
|
177
|
+
},
|
|
178
|
+
UA: {
|
|
179
|
+
code: 'UA',
|
|
180
|
+
name: 'Ukraine',
|
|
181
|
+
flag: '🇺🇦',
|
|
182
|
+
colors: ['#005BBB', '#FFD500'],
|
|
183
|
+
motto: 'Слава Бджолам',
|
|
184
|
+
},
|
|
185
|
+
IL: {
|
|
186
|
+
code: 'IL',
|
|
187
|
+
name: 'Israel',
|
|
188
|
+
flag: '🇮🇱',
|
|
189
|
+
colors: ['#0038B8', '#FFFFFF'],
|
|
190
|
+
motto: 'Land of Milk and Honey',
|
|
191
|
+
},
|
|
192
|
+
SG: {
|
|
193
|
+
code: 'SG',
|
|
194
|
+
name: 'Singapore',
|
|
195
|
+
flag: '🇸🇬',
|
|
196
|
+
colors: ['#EF3340', '#FFFFFF'],
|
|
197
|
+
motto: 'Majulah Sarang Lebah',
|
|
198
|
+
},
|
|
199
|
+
NZ: {
|
|
200
|
+
code: 'NZ',
|
|
201
|
+
name: 'New Zealand',
|
|
202
|
+
flag: '🇳🇿',
|
|
203
|
+
colors: ['#00247D', '#CC142B'],
|
|
204
|
+
motto: 'Aotearoa Hive',
|
|
205
|
+
},
|
|
206
|
+
CH: {
|
|
207
|
+
code: 'CH',
|
|
208
|
+
name: 'Switzerland',
|
|
209
|
+
flag: '🇨🇭',
|
|
210
|
+
colors: ['#FF0000', '#FFFFFF'],
|
|
211
|
+
motto: 'Neutrality Through Precision',
|
|
212
|
+
},
|
|
213
|
+
AT: {
|
|
214
|
+
code: 'AT',
|
|
215
|
+
name: 'Austria',
|
|
216
|
+
flag: '🇦🇹',
|
|
217
|
+
colors: ['#ED2939', '#FFFFFF'],
|
|
218
|
+
motto: 'Austria Est Apis Mundi',
|
|
219
|
+
},
|
|
220
|
+
BE: {
|
|
221
|
+
code: 'BE',
|
|
222
|
+
name: 'Belgium',
|
|
223
|
+
flag: '🇧🇪',
|
|
224
|
+
colors: ['#000000', '#FDDA24'],
|
|
225
|
+
motto: "L'Union Fait La Ruche",
|
|
226
|
+
},
|
|
227
|
+
PT: {
|
|
228
|
+
code: 'PT',
|
|
229
|
+
name: 'Portugal',
|
|
230
|
+
flag: '🇵🇹',
|
|
231
|
+
colors: ['#006600', '#FF0000'],
|
|
232
|
+
motto: 'Esta É A Minha Colmeia',
|
|
233
|
+
},
|
|
234
|
+
AR: {
|
|
235
|
+
code: 'AR',
|
|
236
|
+
name: 'Argentina',
|
|
237
|
+
flag: '🇦🇷',
|
|
238
|
+
colors: ['#74ACDF', '#FFFFFF'],
|
|
239
|
+
motto: 'En Union y Libertad de Abejas',
|
|
240
|
+
},
|
|
241
|
+
CL: {
|
|
242
|
+
code: 'CL',
|
|
243
|
+
name: 'Chile',
|
|
244
|
+
flag: '🇨🇱',
|
|
245
|
+
colors: ['#0039A6', '#D52B1E'],
|
|
246
|
+
motto: 'Por La Razón o La Colmena',
|
|
247
|
+
},
|
|
248
|
+
CO: {
|
|
249
|
+
code: 'CO',
|
|
250
|
+
name: 'Colombia',
|
|
251
|
+
flag: '🇨🇴',
|
|
252
|
+
colors: ['#FCD116', '#003893'],
|
|
253
|
+
motto: 'Libertad y Orden de Abejas',
|
|
254
|
+
},
|
|
255
|
+
ZA: {
|
|
256
|
+
code: 'ZA',
|
|
257
|
+
name: 'South Africa',
|
|
258
|
+
flag: '🇿🇦',
|
|
259
|
+
colors: ['#007749', '#FFB81C'],
|
|
260
|
+
motto: 'Unity in Diversity, Strength in Swarm',
|
|
261
|
+
},
|
|
262
|
+
EG: {
|
|
263
|
+
code: 'EG',
|
|
264
|
+
name: 'Egypt',
|
|
265
|
+
flag: '🇪🇬',
|
|
266
|
+
colors: ['#CE1126', '#000000'],
|
|
267
|
+
motto: "Pharaoh's Hive",
|
|
268
|
+
},
|
|
269
|
+
NG: {
|
|
270
|
+
code: 'NG',
|
|
271
|
+
name: 'Nigeria',
|
|
272
|
+
flag: '🇳🇬',
|
|
273
|
+
colors: ['#008751', '#FFFFFF'],
|
|
274
|
+
motto: 'Unity and Faith in the Swarm',
|
|
275
|
+
},
|
|
276
|
+
KE: {
|
|
277
|
+
code: 'KE',
|
|
278
|
+
name: 'Kenya',
|
|
279
|
+
flag: '🇰🇪',
|
|
280
|
+
colors: ['#006600', '#BB0000'],
|
|
281
|
+
motto: 'Harambee Hive',
|
|
282
|
+
},
|
|
283
|
+
AE: {
|
|
284
|
+
code: 'AE',
|
|
285
|
+
name: 'UAE',
|
|
286
|
+
flag: '🇦🇪',
|
|
287
|
+
colors: ['#00732F', '#FF0000'],
|
|
288
|
+
motto: 'Bee Bold, Bee Dubai',
|
|
289
|
+
},
|
|
290
|
+
SA: {
|
|
291
|
+
code: 'SA',
|
|
292
|
+
name: 'Saudi Arabia',
|
|
293
|
+
flag: '🇸🇦',
|
|
294
|
+
colors: ['#006C35', '#FFFFFF'],
|
|
295
|
+
motto: 'Kingdom of the Hive',
|
|
296
|
+
},
|
|
297
|
+
TH: {
|
|
298
|
+
code: 'TH',
|
|
299
|
+
name: 'Thailand',
|
|
300
|
+
flag: '🇹🇭',
|
|
301
|
+
colors: ['#A51931', '#2D2A4A'],
|
|
302
|
+
motto: 'ผึ้งไทยไม่แพ้ใคร',
|
|
303
|
+
},
|
|
304
|
+
VN: {
|
|
305
|
+
code: 'VN',
|
|
306
|
+
name: 'Vietnam',
|
|
307
|
+
flag: '🇻🇳',
|
|
308
|
+
colors: ['#DA251D', '#FFFF00'],
|
|
309
|
+
motto: 'Độc Lập - Tự Do - Ong',
|
|
310
|
+
},
|
|
311
|
+
PH: {
|
|
312
|
+
code: 'PH',
|
|
313
|
+
name: 'Philippines',
|
|
314
|
+
flag: '🇵🇭',
|
|
315
|
+
colors: ['#0038A8', '#CE1126'],
|
|
316
|
+
motto: 'Maka-Bee, Maka-Tao',
|
|
317
|
+
},
|
|
318
|
+
ID: {
|
|
319
|
+
code: 'ID',
|
|
320
|
+
name: 'Indonesia',
|
|
321
|
+
flag: '🇮🇩',
|
|
322
|
+
colors: ['#FF0000', '#FFFFFF'],
|
|
323
|
+
motto: 'Bhinneka Tunggal Lebah',
|
|
324
|
+
},
|
|
325
|
+
MY: {
|
|
326
|
+
code: 'MY',
|
|
327
|
+
name: 'Malaysia',
|
|
328
|
+
flag: '🇲🇾',
|
|
329
|
+
colors: ['#010066', '#CC0001'],
|
|
330
|
+
motto: 'Malaysia Boleh Lebah',
|
|
331
|
+
},
|
|
332
|
+
TW: { code: 'TW', name: 'Taiwan', flag: '🇹🇼', colors: ['#FE0000', '#000095'], motto: '蜂島之光' },
|
|
333
|
+
HK: {
|
|
334
|
+
code: 'HK',
|
|
335
|
+
name: 'Hong Kong',
|
|
336
|
+
flag: '🇭🇰',
|
|
337
|
+
colors: ['#DE2910', '#FFFFFF'],
|
|
338
|
+
motto: "Asia's World Hive",
|
|
339
|
+
},
|
|
340
|
+
IE: {
|
|
341
|
+
code: 'IE',
|
|
342
|
+
name: 'Ireland',
|
|
343
|
+
flag: '🇮🇪',
|
|
344
|
+
colors: ['#169B62', '#FF883E'],
|
|
345
|
+
motto: 'Éire go Deo na mBeach',
|
|
346
|
+
},
|
|
347
|
+
CZ: {
|
|
348
|
+
code: 'CZ',
|
|
349
|
+
name: 'Czechia',
|
|
350
|
+
flag: '🇨🇿',
|
|
351
|
+
colors: ['#11457E', '#D7141A'],
|
|
352
|
+
motto: 'Pravda Včel Vítězí',
|
|
353
|
+
},
|
|
354
|
+
RO: {
|
|
355
|
+
code: 'RO',
|
|
356
|
+
name: 'Romania',
|
|
357
|
+
flag: '🇷🇴',
|
|
358
|
+
colors: ['#002B7F', '#FCD116'],
|
|
359
|
+
motto: 'Patria și Stupul',
|
|
360
|
+
},
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
* Calculate competitive ELO-style rating
|
|
364
|
+
*/
|
|
365
|
+
export function calculateCompetitiveRating(stats) {
|
|
366
|
+
const baseRating = 1000;
|
|
367
|
+
const winBonus = stats.challengeWins * 25;
|
|
368
|
+
const podiumBonus = stats.challengePodiums * 10;
|
|
369
|
+
const tournamentWinBonus = stats.tournamentWins * 100;
|
|
370
|
+
const tournamentFinalBonus = stats.tournamentFinals * 30;
|
|
371
|
+
const participationBonus = Math.min(stats.totalChallengesCompleted * 2, 200);
|
|
372
|
+
return Math.round(baseRating +
|
|
373
|
+
winBonus +
|
|
374
|
+
podiumBonus +
|
|
375
|
+
tournamentWinBonus +
|
|
376
|
+
tournamentFinalBonus +
|
|
377
|
+
participationBonus);
|
|
378
|
+
}
|
|
379
|
+
// =============================================================
|
|
380
|
+
// BEEHAVEN - Featured Skin Lines (Preset Collections)
|
|
381
|
+
// =============================================================
|
|
382
|
+
/**
|
|
383
|
+
* Preset skin collections for BEEHAVEN
|
|
384
|
+
*/
|
|
385
|
+
export const BEEHAVEN_SKIN_LINES = [
|
|
386
|
+
{
|
|
387
|
+
id: 'mecha-jaeger',
|
|
388
|
+
name: 'Mecha Jaeger',
|
|
389
|
+
description: 'Giant mechanical bees built to defend humanity. Pacific Rim inspired.',
|
|
390
|
+
theme: 'mecha',
|
|
391
|
+
skins: ['mecha-striker', 'mecha-guardian', 'mecha-berserker', 'mecha-phantom'],
|
|
392
|
+
releaseYear: 2026,
|
|
393
|
+
iconUrl: '/skins/mecha/icon.png',
|
|
394
|
+
collectionBonus: {
|
|
395
|
+
type: 'intelligence',
|
|
396
|
+
amount: 50,
|
|
397
|
+
description: '+50 Intelligence for owning all Mecha Jaeger skins',
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
id: 'world-champions-2026',
|
|
402
|
+
name: 'World Champions 2026',
|
|
403
|
+
description: 'Exclusive skins celebrating the 2026 World Championship winners.',
|
|
404
|
+
theme: 'world-championship',
|
|
405
|
+
skins: ['champion-striker-2026', 'champion-support-2026'],
|
|
406
|
+
releaseYear: 2026,
|
|
407
|
+
iconUrl: '/skins/championship/2026/icon.png',
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
id: 'dark-star',
|
|
411
|
+
name: 'Dark Star',
|
|
412
|
+
description: 'Corrupted by the void between stars. Cosmic horror entities.',
|
|
413
|
+
theme: 'dark-star',
|
|
414
|
+
skins: ['dark-star-queen', 'dark-star-drone', 'dark-star-corrupted'],
|
|
415
|
+
releaseYear: 2026,
|
|
416
|
+
iconUrl: '/skins/darkstar/icon.png',
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
id: 'arcade-legends',
|
|
420
|
+
name: 'Arcade Legends',
|
|
421
|
+
description: '8-bit retro gaming aesthetic. Press start to play.',
|
|
422
|
+
theme: 'arcade',
|
|
423
|
+
skins: ['arcade-hero', 'arcade-boss', 'arcade-pixel', 'arcade-final-boss'],
|
|
424
|
+
releaseYear: 2026,
|
|
425
|
+
iconUrl: '/skins/arcade/icon.png',
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
id: 'spirit-blossom',
|
|
429
|
+
name: 'Spirit Blossom',
|
|
430
|
+
description: 'Ethereal spirits from the realm between life and death.',
|
|
431
|
+
theme: 'spirit-blossom',
|
|
432
|
+
skins: ['spirit-blossom-kindred', 'spirit-blossom-eternal', 'spirit-blossom-ahri'],
|
|
433
|
+
releaseYear: 2026,
|
|
434
|
+
iconUrl: '/skins/spiritblossom/icon.png',
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
id: 'battle-academia',
|
|
438
|
+
name: 'Battle Academia',
|
|
439
|
+
description: 'Students at the prestigious Beehaven Academy. Anime school style.',
|
|
440
|
+
theme: 'battle-academia',
|
|
441
|
+
skins: ['academia-prodigy', 'academia-valedictorian', 'academia-rebel', 'academia-professor'],
|
|
442
|
+
releaseYear: 2026,
|
|
443
|
+
iconUrl: '/skins/academia/icon.png',
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
id: 'hextech',
|
|
447
|
+
name: 'Hextech',
|
|
448
|
+
description: 'Masterfully crafted with rare hextech crystals. Prestige collection.',
|
|
449
|
+
theme: 'hextech',
|
|
450
|
+
skins: ['hextech-automaton', 'hextech-sentinel'],
|
|
451
|
+
releaseYear: 2026,
|
|
452
|
+
iconUrl: '/skins/hextech/icon.png',
|
|
453
|
+
},
|
|
454
|
+
];
|
|
455
|
+
/**
|
|
456
|
+
* National pride skins - one per country
|
|
457
|
+
*/
|
|
458
|
+
export const NATIONAL_SKINS = {
|
|
459
|
+
US: {
|
|
460
|
+
id: 'national-us',
|
|
461
|
+
name: 'Stars & Stripes Bee',
|
|
462
|
+
baseColor: '#3C3B6E',
|
|
463
|
+
accentColor: '#B22234',
|
|
464
|
+
},
|
|
465
|
+
CN: {
|
|
466
|
+
id: 'national-cn',
|
|
467
|
+
name: 'Golden Dragon Bee',
|
|
468
|
+
baseColor: '#DE2910',
|
|
469
|
+
accentColor: '#FFDE00',
|
|
470
|
+
},
|
|
471
|
+
JP: {
|
|
472
|
+
id: 'national-jp',
|
|
473
|
+
name: 'Sakura Samurai Bee',
|
|
474
|
+
baseColor: '#BC002D',
|
|
475
|
+
accentColor: '#FADADD',
|
|
476
|
+
},
|
|
477
|
+
KR: { id: 'national-kr', name: 'K-Pop Star Bee', baseColor: '#0047A0', accentColor: '#C60C30' },
|
|
478
|
+
DE: {
|
|
479
|
+
id: 'national-de',
|
|
480
|
+
name: 'Precision Engineer Bee',
|
|
481
|
+
baseColor: '#000000',
|
|
482
|
+
accentColor: '#FFCC00',
|
|
483
|
+
},
|
|
484
|
+
GB: { id: 'national-gb', name: 'Royal Guard Bee', baseColor: '#012169', accentColor: '#C8102E' },
|
|
485
|
+
FR: {
|
|
486
|
+
id: 'national-fr',
|
|
487
|
+
name: 'Parisian Artiste Bee',
|
|
488
|
+
baseColor: '#0055A4',
|
|
489
|
+
accentColor: '#EF4135',
|
|
490
|
+
},
|
|
491
|
+
IN: {
|
|
492
|
+
id: 'national-in',
|
|
493
|
+
name: 'Bollywood Star Bee',
|
|
494
|
+
baseColor: '#FF9933',
|
|
495
|
+
accentColor: '#138808',
|
|
496
|
+
},
|
|
497
|
+
BR: {
|
|
498
|
+
id: 'national-br',
|
|
499
|
+
name: 'Samba Carnival Bee',
|
|
500
|
+
baseColor: '#009739',
|
|
501
|
+
accentColor: '#FEDD00',
|
|
502
|
+
},
|
|
503
|
+
RU: { id: 'national-ru', name: 'Winter Bear Bee', baseColor: '#0039A6', accentColor: '#D52B1E' },
|
|
504
|
+
CA: {
|
|
505
|
+
id: 'national-ca',
|
|
506
|
+
name: 'Maple Mountie Bee',
|
|
507
|
+
baseColor: '#FF0000',
|
|
508
|
+
accentColor: '#FFFFFF',
|
|
509
|
+
},
|
|
510
|
+
AU: {
|
|
511
|
+
id: 'national-au',
|
|
512
|
+
name: 'Outback Explorer Bee',
|
|
513
|
+
baseColor: '#00008B',
|
|
514
|
+
accentColor: '#FFD700',
|
|
515
|
+
},
|
|
516
|
+
IT: {
|
|
517
|
+
id: 'national-it',
|
|
518
|
+
name: 'Renaissance Maestro Bee',
|
|
519
|
+
baseColor: '#009246',
|
|
520
|
+
accentColor: '#CE2B37',
|
|
521
|
+
},
|
|
522
|
+
ES: {
|
|
523
|
+
id: 'national-es',
|
|
524
|
+
name: 'Flamenco Matador Bee',
|
|
525
|
+
baseColor: '#AA151B',
|
|
526
|
+
accentColor: '#F1BF00',
|
|
527
|
+
},
|
|
528
|
+
MX: {
|
|
529
|
+
id: 'national-mx',
|
|
530
|
+
name: 'Día de los Muertos Bee',
|
|
531
|
+
baseColor: '#006847',
|
|
532
|
+
accentColor: '#CE1126',
|
|
533
|
+
},
|
|
534
|
+
NL: {
|
|
535
|
+
id: 'national-nl',
|
|
536
|
+
name: 'Tulip Windmill Bee',
|
|
537
|
+
baseColor: '#21468B',
|
|
538
|
+
accentColor: '#FF6600',
|
|
539
|
+
},
|
|
540
|
+
SE: { id: 'national-se', name: 'Viking Frost Bee', baseColor: '#006AA7', accentColor: '#FECC00' },
|
|
541
|
+
NO: {
|
|
542
|
+
id: 'national-no',
|
|
543
|
+
name: 'Aurora Borealis Bee',
|
|
544
|
+
baseColor: '#BA0C2F',
|
|
545
|
+
accentColor: '#00205B',
|
|
546
|
+
},
|
|
547
|
+
FI: {
|
|
548
|
+
id: 'national-fi',
|
|
549
|
+
name: 'Sauna Warrior Bee',
|
|
550
|
+
baseColor: '#003580',
|
|
551
|
+
accentColor: '#FFFFFF',
|
|
552
|
+
},
|
|
553
|
+
DK: { id: 'national-dk', name: 'LEGO Builder Bee', baseColor: '#C60C30', accentColor: '#FFFFFF' },
|
|
554
|
+
PL: {
|
|
555
|
+
id: 'national-pl',
|
|
556
|
+
name: 'Hussar Knight Bee',
|
|
557
|
+
baseColor: '#DC143C',
|
|
558
|
+
accentColor: '#FFFFFF',
|
|
559
|
+
},
|
|
560
|
+
UA: {
|
|
561
|
+
id: 'national-ua',
|
|
562
|
+
name: 'Sunflower Guardian Bee',
|
|
563
|
+
baseColor: '#005BBB',
|
|
564
|
+
accentColor: '#FFD500',
|
|
565
|
+
},
|
|
566
|
+
IL: {
|
|
567
|
+
id: 'national-il',
|
|
568
|
+
name: 'Star of David Bee',
|
|
569
|
+
baseColor: '#0038B8',
|
|
570
|
+
accentColor: '#FFFFFF',
|
|
571
|
+
},
|
|
572
|
+
SG: { id: 'national-sg', name: 'Merlion Tech Bee', baseColor: '#EF3340', accentColor: '#FFFFFF' },
|
|
573
|
+
NZ: { id: 'national-nz', name: 'Silver Fern Bee', baseColor: '#00247D', accentColor: '#CC142B' },
|
|
574
|
+
CH: {
|
|
575
|
+
id: 'national-ch',
|
|
576
|
+
name: 'Alpine Precision Bee',
|
|
577
|
+
baseColor: '#FF0000',
|
|
578
|
+
accentColor: '#FFFFFF',
|
|
579
|
+
},
|
|
580
|
+
AT: {
|
|
581
|
+
id: 'national-at',
|
|
582
|
+
name: 'Waltz Composer Bee',
|
|
583
|
+
baseColor: '#ED2939',
|
|
584
|
+
accentColor: '#FFFFFF',
|
|
585
|
+
},
|
|
586
|
+
BE: {
|
|
587
|
+
id: 'national-be',
|
|
588
|
+
name: 'Chocolate Artisan Bee',
|
|
589
|
+
baseColor: '#000000',
|
|
590
|
+
accentColor: '#FDDA24',
|
|
591
|
+
},
|
|
592
|
+
PT: {
|
|
593
|
+
id: 'national-pt',
|
|
594
|
+
name: 'Navigator Explorer Bee',
|
|
595
|
+
baseColor: '#006600',
|
|
596
|
+
accentColor: '#FF0000',
|
|
597
|
+
},
|
|
598
|
+
AR: {
|
|
599
|
+
id: 'national-ar',
|
|
600
|
+
name: 'Tango Maestro Bee',
|
|
601
|
+
baseColor: '#74ACDF',
|
|
602
|
+
accentColor: '#FFFFFF',
|
|
603
|
+
},
|
|
604
|
+
CL: { id: 'national-cl', name: 'Andes Condor Bee', baseColor: '#0039A6', accentColor: '#D52B1E' },
|
|
605
|
+
CO: { id: 'national-co', name: 'Coffee Bean Bee', baseColor: '#FCD116', accentColor: '#003893' },
|
|
606
|
+
ZA: {
|
|
607
|
+
id: 'national-za',
|
|
608
|
+
name: 'Rainbow Nation Bee',
|
|
609
|
+
baseColor: '#007749',
|
|
610
|
+
accentColor: '#FFB81C',
|
|
611
|
+
},
|
|
612
|
+
EG: {
|
|
613
|
+
id: 'national-eg',
|
|
614
|
+
name: 'Pharaoh Guardian Bee',
|
|
615
|
+
baseColor: '#CE1126',
|
|
616
|
+
accentColor: '#C09300',
|
|
617
|
+
},
|
|
618
|
+
NG: {
|
|
619
|
+
id: 'national-ng',
|
|
620
|
+
name: 'Nollywood Star Bee',
|
|
621
|
+
baseColor: '#008751',
|
|
622
|
+
accentColor: '#FFFFFF',
|
|
623
|
+
},
|
|
624
|
+
KE: {
|
|
625
|
+
id: 'national-ke',
|
|
626
|
+
name: 'Safari Runner Bee',
|
|
627
|
+
baseColor: '#006600',
|
|
628
|
+
accentColor: '#BB0000',
|
|
629
|
+
},
|
|
630
|
+
AE: { id: 'national-ae', name: 'Dubai Luxe Bee', baseColor: '#00732F', accentColor: '#C09300' },
|
|
631
|
+
SA: {
|
|
632
|
+
id: 'national-sa',
|
|
633
|
+
name: 'Desert Prince Bee',
|
|
634
|
+
baseColor: '#006C35',
|
|
635
|
+
accentColor: '#FFFFFF',
|
|
636
|
+
},
|
|
637
|
+
TH: {
|
|
638
|
+
id: 'national-th',
|
|
639
|
+
name: 'Golden Temple Bee',
|
|
640
|
+
baseColor: '#A51931',
|
|
641
|
+
accentColor: '#F4D03F',
|
|
642
|
+
},
|
|
643
|
+
VN: { id: 'national-vn', name: 'Dragon Pearl Bee', baseColor: '#DA251D', accentColor: '#FFFF00' },
|
|
644
|
+
PH: {
|
|
645
|
+
id: 'national-ph',
|
|
646
|
+
name: 'Jeepney Festival Bee',
|
|
647
|
+
baseColor: '#0038A8',
|
|
648
|
+
accentColor: '#CE1126',
|
|
649
|
+
},
|
|
650
|
+
ID: {
|
|
651
|
+
id: 'national-id',
|
|
652
|
+
name: 'Batik Warrior Bee',
|
|
653
|
+
baseColor: '#FF0000',
|
|
654
|
+
accentColor: '#FFFFFF',
|
|
655
|
+
},
|
|
656
|
+
MY: {
|
|
657
|
+
id: 'national-my',
|
|
658
|
+
name: 'Petronas Twin Bee',
|
|
659
|
+
baseColor: '#010066',
|
|
660
|
+
accentColor: '#CC0001',
|
|
661
|
+
},
|
|
662
|
+
TW: { id: 'national-tw', name: 'Night Market Bee', baseColor: '#FE0000', accentColor: '#000095' },
|
|
663
|
+
HK: { id: 'national-hk', name: 'Neon City Bee', baseColor: '#DE2910', accentColor: '#FF00FF' },
|
|
664
|
+
IE: {
|
|
665
|
+
id: 'national-ie',
|
|
666
|
+
name: 'Celtic Shamrock Bee',
|
|
667
|
+
baseColor: '#169B62',
|
|
668
|
+
accentColor: '#FF883E',
|
|
669
|
+
},
|
|
670
|
+
CZ: {
|
|
671
|
+
id: 'national-cz',
|
|
672
|
+
name: 'Bohemian Crystal Bee',
|
|
673
|
+
baseColor: '#11457E',
|
|
674
|
+
accentColor: '#D7141A',
|
|
675
|
+
},
|
|
676
|
+
RO: {
|
|
677
|
+
id: 'national-ro',
|
|
678
|
+
name: 'Transylvania Guardian Bee',
|
|
679
|
+
baseColor: '#002B7F',
|
|
680
|
+
accentColor: '#FCD116',
|
|
681
|
+
},
|
|
682
|
+
};
|