@zhijiewang/openharness 0.5.1 → 0.6.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/dist/commands/cybergotchi.d.ts.map +1 -1
- package/dist/commands/cybergotchi.js +22 -19
- package/dist/commands/cybergotchi.js.map +1 -1
- package/dist/components/App.d.ts +1 -1
- package/dist/components/App.d.ts.map +1 -1
- package/dist/components/App.js +58 -2
- package/dist/components/App.js.map +1 -1
- package/dist/components/CompanionFooter.d.ts +9 -0
- package/dist/components/CompanionFooter.d.ts.map +1 -0
- package/dist/components/CompanionFooter.js +13 -0
- package/dist/components/CompanionFooter.js.map +1 -0
- package/dist/components/CybergotchiBubble.d.ts +2 -1
- package/dist/components/CybergotchiBubble.d.ts.map +1 -1
- package/dist/components/CybergotchiBubble.js +4 -5
- package/dist/components/CybergotchiBubble.js.map +1 -1
- package/dist/components/CybergotchiPanel.d.ts +5 -4
- package/dist/components/CybergotchiPanel.d.ts.map +1 -1
- package/dist/components/CybergotchiPanel.js +4 -2
- package/dist/components/CybergotchiPanel.js.map +1 -1
- package/dist/components/CybergotchiPanelConnected.js +4 -4
- package/dist/components/CybergotchiPanelConnected.js.map +1 -1
- package/dist/components/CybergotchiSetup.d.ts.map +1 -1
- package/dist/components/CybergotchiSetup.js +25 -61
- package/dist/components/CybergotchiSetup.js.map +1 -1
- package/dist/components/CybergotchiSprite.d.ts +5 -4
- package/dist/components/CybergotchiSprite.d.ts.map +1 -1
- package/dist/components/CybergotchiSprite.js +16 -9
- package/dist/components/CybergotchiSprite.js.map +1 -1
- package/dist/components/DiffView.d.ts +27 -0
- package/dist/components/DiffView.d.ts.map +1 -0
- package/dist/components/DiffView.js +74 -0
- package/dist/components/DiffView.js.map +1 -0
- package/dist/components/Messages.js +1 -1
- package/dist/components/Messages.js.map +1 -1
- package/dist/components/PermissionPrompt.d.ts.map +1 -1
- package/dist/components/PermissionPrompt.js +61 -8
- package/dist/components/PermissionPrompt.js.map +1 -1
- package/dist/components/REPL.d.ts.map +1 -1
- package/dist/components/REPL.js +75 -21
- package/dist/components/REPL.js.map +1 -1
- package/dist/components/TextInput.d.ts +2 -1
- package/dist/components/TextInput.d.ts.map +1 -1
- package/dist/components/TextInput.js +110 -6
- package/dist/components/TextInput.js.map +1 -1
- package/dist/cybergotchi/bones.d.ts +12 -0
- package/dist/cybergotchi/bones.d.ts.map +1 -0
- package/dist/cybergotchi/bones.js +89 -0
- package/dist/cybergotchi/bones.js.map +1 -0
- package/dist/cybergotchi/config.d.ts +14 -4
- package/dist/cybergotchi/config.d.ts.map +1 -1
- package/dist/cybergotchi/config.js +62 -9
- package/dist/cybergotchi/config.js.map +1 -1
- package/dist/cybergotchi/needs.d.ts +4 -4
- package/dist/cybergotchi/needs.d.ts.map +1 -1
- package/dist/cybergotchi/needs.js.map +1 -1
- package/dist/cybergotchi/personality.d.ts +11 -0
- package/dist/cybergotchi/personality.d.ts.map +1 -0
- package/dist/cybergotchi/personality.js +26 -0
- package/dist/cybergotchi/personality.js.map +1 -0
- package/dist/cybergotchi/species.d.ts +0 -1
- package/dist/cybergotchi/species.d.ts.map +1 -1
- package/dist/cybergotchi/species.js +253 -229
- package/dist/cybergotchi/species.js.map +1 -1
- package/dist/cybergotchi/types.d.ts +45 -7
- package/dist/cybergotchi/types.d.ts.map +1 -1
- package/dist/cybergotchi/types.js +36 -5
- package/dist/cybergotchi/types.js.map +1 -1
- package/dist/cybergotchi/useCybergotchi.d.ts +7 -5
- package/dist/cybergotchi/useCybergotchi.d.ts.map +1 -1
- package/dist/cybergotchi/useCybergotchi.js +27 -16
- package/dist/cybergotchi/useCybergotchi.js.map +1 -1
- package/dist/git/index.d.ts +9 -0
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +31 -0
- package/dist/git/index.js.map +1 -1
- package/dist/harness/config.d.ts +5 -0
- package/dist/harness/config.d.ts.map +1 -1
- package/dist/harness/config.js.map +1 -1
- package/dist/harness/credentials.d.ts +24 -0
- package/dist/harness/credentials.d.ts.map +1 -0
- package/dist/harness/credentials.js +104 -0
- package/dist/harness/credentials.js.map +1 -0
- package/dist/harness/hooks.d.ts +8 -0
- package/dist/harness/hooks.d.ts.map +1 -1
- package/dist/harness/hooks.js +98 -22
- package/dist/harness/hooks.js.map +1 -1
- package/dist/harness/keybindings.d.ts +37 -0
- package/dist/harness/keybindings.d.ts.map +1 -0
- package/dist/harness/keybindings.js +134 -0
- package/dist/harness/keybindings.js.map +1 -0
- package/dist/harness/memory.d.ts +35 -0
- package/dist/harness/memory.d.ts.map +1 -0
- package/dist/harness/memory.js +115 -0
- package/dist/harness/memory.js.map +1 -0
- package/dist/harness/plugins.d.ts +57 -0
- package/dist/harness/plugins.d.ts.map +1 -0
- package/dist/harness/plugins.js +142 -0
- package/dist/harness/plugins.js.map +1 -0
- package/dist/harness/session.d.ts +5 -0
- package/dist/harness/session.d.ts.map +1 -1
- package/dist/harness/session.js +39 -1
- package/dist/harness/session.js.map +1 -1
- package/dist/lsp/client.d.ts +58 -0
- package/dist/lsp/client.d.ts.map +1 -0
- package/dist/lsp/client.js +174 -0
- package/dist/lsp/client.js.map +1 -0
- package/dist/main.js +160 -0
- package/dist/main.js.map +1 -1
- package/dist/mcp/DeferredMcpTool.d.ts +30 -0
- package/dist/mcp/DeferredMcpTool.d.ts.map +1 -0
- package/dist/mcp/DeferredMcpTool.js +75 -0
- package/dist/mcp/DeferredMcpTool.js.map +1 -0
- package/dist/mcp/client.d.ts +7 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +56 -8
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/loader.d.ts +9 -0
- package/dist/mcp/loader.d.ts.map +1 -1
- package/dist/mcp/loader.js +43 -2
- package/dist/mcp/loader.js.map +1 -1
- package/dist/mcp/schema.d.ts +7 -0
- package/dist/mcp/schema.d.ts.map +1 -0
- package/dist/mcp/schema.js +41 -0
- package/dist/mcp/schema.js.map +1 -0
- package/dist/mcp/server.d.ts +16 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +94 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/base.d.ts +15 -0
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js +13 -1
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +91 -14
- package/dist/query.js.map +1 -1
- package/dist/remote/server.d.ts +31 -0
- package/dist/remote/server.d.ts.map +1 -0
- package/dist/remote/server.js +163 -0
- package/dist/remote/server.js.map +1 -0
- package/dist/services/AgentDispatcher.d.ts +42 -0
- package/dist/services/AgentDispatcher.d.ts.map +1 -0
- package/dist/services/AgentDispatcher.js +181 -0
- package/dist/services/AgentDispatcher.js.map +1 -0
- package/dist/services/StreamingToolExecutor.d.ts +2 -1
- package/dist/services/StreamingToolExecutor.d.ts.map +1 -1
- package/dist/services/StreamingToolExecutor.js +11 -2
- package/dist/services/StreamingToolExecutor.js.map +1 -1
- package/dist/tools/AgentTool/index.d.ts +3 -0
- package/dist/tools/AgentTool/index.d.ts.map +1 -1
- package/dist/tools/AgentTool/index.js +54 -16
- package/dist/tools/AgentTool/index.js.map +1 -1
- package/dist/tools/DiagnosticsTool/index.d.ts +21 -0
- package/dist/tools/DiagnosticsTool/index.d.ts.map +1 -0
- package/dist/tools/DiagnosticsTool/index.js +108 -0
- package/dist/tools/DiagnosticsTool/index.js.map +1 -0
- package/dist/tools/GrepTool/index.d.ts +2 -2
- package/dist/tools/ParallelAgentTool/index.d.ts +37 -0
- package/dist/tools/ParallelAgentTool/index.d.ts.map +1 -0
- package/dist/tools/ParallelAgentTool/index.js +53 -0
- package/dist/tools/ParallelAgentTool/index.js.map +1 -0
- package/dist/tools/SkillTool/index.d.ts.map +1 -1
- package/dist/tools/SkillTool/index.js +22 -27
- package/dist/tools/SkillTool/index.js.map +1 -1
- package/dist/tools/ToolSearchTool/index.d.ts +15 -0
- package/dist/tools/ToolSearchTool/index.d.ts.map +1 -0
- package/dist/tools/ToolSearchTool/index.js +50 -0
- package/dist/tools/ToolSearchTool/index.js.map +1 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +9 -0
- package/dist/tools.js.map +1 -1
- package/dist/types/message.d.ts +2 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +3 -0
- package/dist/types/message.js.map +1 -1
- package/dist/types/permissions.d.ts +2 -0
- package/dist/types/permissions.d.ts.map +1 -1
- package/dist/types/permissions.js +30 -0
- package/dist/types/permissions.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,356 +1,380 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Pad string to exactly 12 chars
|
|
2
2
|
function p(s) {
|
|
3
|
-
if (s.length >=
|
|
4
|
-
return s.slice(0,
|
|
5
|
-
return s + ' '.repeat(
|
|
3
|
+
if (s.length >= 12)
|
|
4
|
+
return s.slice(0, 12);
|
|
5
|
+
return s + ' '.repeat(12 - s.length);
|
|
6
6
|
}
|
|
7
|
-
// Build
|
|
8
|
-
// For single-frame emotions, supply one frame; for animated, supply multiple
|
|
7
|
+
// Build a frame: 5 lines of 12 chars
|
|
9
8
|
function f(...lines) {
|
|
10
9
|
return lines.map(p);
|
|
11
10
|
}
|
|
11
|
+
// ─── Duck ───────────────────────────────────────
|
|
12
12
|
const duck = {
|
|
13
13
|
name: 'duck',
|
|
14
14
|
label: 'Duck',
|
|
15
15
|
traitHint: 'Curious and quacky. Gets things done.',
|
|
16
16
|
frames: {
|
|
17
17
|
idle: [
|
|
18
|
-
f('
|
|
18
|
+
f(' .__. ', ' ( {E} ) ', ' \\ V / ', ' /|~~~|\\ ', ' /_| |_\\ '),
|
|
19
|
+
f(' .__. ', ' ( {E} ) ', ' \\ V / ', ' /|~~~|\\ ', ' \\_| |_/ '),
|
|
20
|
+
f(' .__. ', ' ( {E} ) ', ' \\ v / ', ' /|~~~|\\ ', ' /_| |_\\ '),
|
|
19
21
|
],
|
|
20
22
|
happy: [
|
|
21
|
-
f('
|
|
22
|
-
f(' .---. ', ' ( ^ ) ', ' ( {E} ) ', ' ( ^ ) --', ' / ~~~~~ \\', ' | (( )) | ', ' \\_____/ ', ' /| |\\ '),
|
|
23
|
-
],
|
|
24
|
-
thinking: [
|
|
25
|
-
f(' ? .---. ', ' ( ) ', ' ( {E} ) ', ' ( . ) --', ' / ~~~~~ \\', ' | (( )) | ', ' \\_____/ ', ' /| |\\ '),
|
|
23
|
+
f(' .__. ', ' ( {E} ) ', ' \\ ^ / ', ' /|~~~|\\ ', ' /_| |_\\ '),
|
|
26
24
|
],
|
|
27
25
|
alarm: [
|
|
28
|
-
f('
|
|
26
|
+
f(' .!!. ', ' ( {E} ) ', ' \\ O / ', ' /|~~~|\\ ', ' /_| |_\\ '),
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
// ─── Goose ──────────────────────────────────────
|
|
31
|
+
const goose = {
|
|
32
|
+
name: 'goose',
|
|
33
|
+
label: 'Goose',
|
|
34
|
+
traitHint: 'Chaotic energy. Honks at bugs.',
|
|
35
|
+
frames: {
|
|
36
|
+
idle: [
|
|
37
|
+
f(' _/~ ', ' / {E} ) ', ' | <> | ', ' | ~~ | ', ' \\_||_/ '),
|
|
38
|
+
f(' _/~ ', ' / {E} ) ', ' | <> | ', ' | ~~ | ', ' \\_||_/ ~ '),
|
|
39
|
+
f(' _/~~ ', ' / {E} ) ', ' | <> | ', ' | ~~ | ', ' \\_||_/ '),
|
|
29
40
|
],
|
|
30
|
-
|
|
31
|
-
f('
|
|
41
|
+
happy: [
|
|
42
|
+
f(' _/~ ! ', ' / {E} ) ', ' | ^> | ', ' | ~~ | ', ' \\_||_/ '),
|
|
32
43
|
],
|
|
33
|
-
|
|
34
|
-
f('
|
|
35
|
-
f(' /o\\ .---. ', ' ( ) ', ' ( {E} ) ', ' ( D ) --', ' / ~~~~~ \\', ' | (( )) | ', ' \\_____/ ', ' /| |\\ '),
|
|
44
|
+
alarm: [
|
|
45
|
+
f(' !_/~! ', ' / {E} ) ', ' | OO | ', ' | ~~ | ', ' \\_||_/ '),
|
|
36
46
|
],
|
|
37
47
|
},
|
|
38
48
|
};
|
|
49
|
+
// ─── Cat ────────────────────────────────────────
|
|
39
50
|
const cat = {
|
|
40
51
|
name: 'cat',
|
|
41
52
|
label: 'Cat',
|
|
42
|
-
traitHint: '
|
|
53
|
+
traitHint: 'Independent. Judges your code silently.',
|
|
43
54
|
frames: {
|
|
44
55
|
idle: [
|
|
45
|
-
f(' /\\
|
|
56
|
+
f(' /\\ /\\ ', '( {E} ) ', ' \\ ^ / ', ' |~| ', ' _/ \\_ '),
|
|
57
|
+
f(' /\\ /\\ ', '( {E} ) ', ' \\ ^ / ', ' |~| ~ ', ' _/ \\_ / '),
|
|
58
|
+
f(' /\\ /\\ ', '( {E} ) ', ' \\ . / ', ' |~| ', ' _/ \\_ '),
|
|
46
59
|
],
|
|
47
60
|
happy: [
|
|
48
|
-
f(' /\\
|
|
49
|
-
f(' /\\ /\\ /\\ ', '( {E} ) ', ' \\ ^ / ', ' ( u u ) ', ' | | ', ' \\ / ', ' /| |\\ ', ' \\_|___|_/ '),
|
|
50
|
-
],
|
|
51
|
-
thinking: [
|
|
52
|
-
f(' /\\ ? /\\ ', '( {E} ) ', ' \\ ^ / ', ' ( ~ ~ ) ', ' | | ', ' \\ / ', ' /| |\\ ', ' \\_|___|_/ '),
|
|
61
|
+
f(' /\\ /\\ ', '( {E} ) ', ' \\ w / ', ' |~| ', ' _/ \\_ '),
|
|
53
62
|
],
|
|
54
63
|
alarm: [
|
|
55
|
-
f('
|
|
64
|
+
f(' /! !\\ ', '( {E} ) ', ' \\ ! / ', ' |~| ', ' _/ \\_ '),
|
|
56
65
|
],
|
|
57
|
-
|
|
58
|
-
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
// ─── Rabbit ─────────────────────────────────────
|
|
69
|
+
const rabbit = {
|
|
70
|
+
name: 'rabbit',
|
|
71
|
+
label: 'Rabbit',
|
|
72
|
+
traitHint: 'Fast learner. Hops between tasks.',
|
|
73
|
+
frames: {
|
|
74
|
+
idle: [
|
|
75
|
+
f(' (\\ /) ', ' ( {E} ) ', ' ( > ) ', ' /| |\\ ', ' d_ _b '),
|
|
76
|
+
f(' (\\ /) ', ' ( {E} ) ', ' ( > ) ', ' /| |\\ ', ' d_ _b '),
|
|
77
|
+
f(' (\\ /) ', ' ( {E} ) ', ' ( . ) ', ' /| |\\ ', ' d_ _b '),
|
|
59
78
|
],
|
|
60
|
-
|
|
61
|
-
f('
|
|
62
|
-
|
|
79
|
+
happy: [
|
|
80
|
+
f(' (\\ /) ', ' ( {E} ) ', ' ( ^ ) ', ' /| |\\ ', ' d_ _b '),
|
|
81
|
+
],
|
|
82
|
+
alarm: [
|
|
83
|
+
f(' (! !) ', ' ( {E} ) ', ' ( O ) ', ' /| |\\ ', ' d_ _b '),
|
|
63
84
|
],
|
|
64
85
|
},
|
|
65
86
|
};
|
|
87
|
+
// ─── Owl ────────────────────────────────────────
|
|
66
88
|
const owl = {
|
|
67
89
|
name: 'owl',
|
|
68
90
|
label: 'Owl',
|
|
69
|
-
traitHint: '
|
|
91
|
+
traitHint: 'Wise and watchful. Knows all the patterns.',
|
|
70
92
|
frames: {
|
|
71
93
|
idle: [
|
|
72
|
-
f('
|
|
94
|
+
f(' /\\__/\\ ', ' ( {E} ) ', ' (/\\/) ', ' |__| ', ' _/\\_ '),
|
|
95
|
+
f(' /\\__/\\ ', ' ( {E} ) ', ' (/\\/) ', ' |__| ', ' _/ \\_ '),
|
|
96
|
+
f(' /\\__/\\ ', ' ( {E} ) ', ' ( \\/) ', ' |__| ', ' _/\\_ '),
|
|
73
97
|
],
|
|
74
98
|
happy: [
|
|
75
|
-
f('
|
|
76
|
-
],
|
|
77
|
-
thinking: [
|
|
78
|
-
f(' ? /( )\\ ', ' ( {E} ) ', ' / V \\ ', ' | ... | ', ' | | | | ', ' \\ / ', ' /| | |\\ ', ' /_|___|_\\ '),
|
|
79
|
-
f(' /( )\\ ', ' ( {E} ) ', ' / V \\ ', ' | ... | ', ' | | | | ', ' \\ . / ', ' /| | |\\ ', ' /_|___|_\\ '),
|
|
99
|
+
f(' /\\__/\\ ', ' ( {E} ) ', ' (^^\\/^) ', ' |__| ', ' _/\\_ '),
|
|
80
100
|
],
|
|
81
101
|
alarm: [
|
|
82
|
-
f('
|
|
83
|
-
],
|
|
84
|
-
snark: [
|
|
85
|
-
f(' /( )\\ ', ' ( {E} ) ', ' / - \\ ', ' | ... | ', ' | | | | ', ' \\ / ', ' /| | |\\ ', ' /_|___|_\\ '),
|
|
86
|
-
],
|
|
87
|
-
cheer: [
|
|
88
|
-
f(' /( )\\ ', ' ( {E} ) ', ' / w \\ ', ' | ~~~ | ', ' | \\ / | ', ' \\ U / ', ' /| | |\\ ', ' /_|___|_\\ '),
|
|
102
|
+
f(' /!__!\\ ', ' ( {E} ) ', ' (/!!\\) ', ' |__| ', ' _/\\_ '),
|
|
89
103
|
],
|
|
90
104
|
},
|
|
91
105
|
};
|
|
106
|
+
// ─── Penguin ────────────────────────────────────
|
|
92
107
|
const penguin = {
|
|
93
108
|
name: 'penguin',
|
|
94
109
|
label: 'Penguin',
|
|
95
|
-
traitHint: 'Formal
|
|
110
|
+
traitHint: 'Formal but playful. Loves clean code.',
|
|
96
111
|
frames: {
|
|
97
112
|
idle: [
|
|
98
|
-
f('
|
|
113
|
+
f(' .~~. ', ' / {E} \\ ', ' | \\__/ | ', ' \\| |/ ', ' L L '),
|
|
114
|
+
f(' .~~. ', ' / {E} \\ ', ' | \\__/ | ', ' \\| |/ ', ' L J '),
|
|
115
|
+
f(' .~~. ', ' / {E} \\ ', ' | \\../ | ', ' \\| |/ ', ' L L '),
|
|
99
116
|
],
|
|
100
117
|
happy: [
|
|
101
|
-
f('
|
|
102
|
-
f(' .---. ', ' :( {E} ): ', ' / ___ \\ ', ' | / ^ \\ | ', ' | \\___/ | ', ' \\ ___ / ', ' | | ', ' (_) (_) '),
|
|
103
|
-
],
|
|
104
|
-
thinking: [
|
|
105
|
-
f(' ? .---. ', ' ( {E} ) ', ' / ___ \\ ', ' | / ~ \\ | ', ' | \\___/ | ', ' \\ ___ / ', ' | | ', ' (_) (_) '),
|
|
118
|
+
f(' .~~. ', ' / {E} \\ ', ' | \\^^/ | ', ' \\| |/ ', ' L L '),
|
|
106
119
|
],
|
|
107
120
|
alarm: [
|
|
108
|
-
f('
|
|
109
|
-
],
|
|
110
|
-
snark: [
|
|
111
|
-
f(' .---. ', ' ( {E} ) ', ' / ___ \\ ', ' | / - \\ | ', ' | \\___/ | ', ' \\ ___ / ', ' | | ', ' (_) (_) '),
|
|
112
|
-
],
|
|
113
|
-
cheer: [
|
|
114
|
-
f(' .---. ', ' \\o( {E} )o/ ', ' / ___ \\ ', ' | / D \\ | ', ' | \\___/ | ', ' \\ ___ / ', ' | | ', ' (_) (_) '),
|
|
115
|
-
f(' .---. ', ' /o( {E} )o\\ ', ' / ___ \\ ', ' | / D \\ | ', ' | \\___/ | ', ' \\ ___ / ', ' | | ', ' (_) (_) '),
|
|
121
|
+
f(' .!!. ', ' / {E} \\ ', ' | \\OO/ | ', ' \\| |/ ', ' L L '),
|
|
116
122
|
],
|
|
117
123
|
},
|
|
118
124
|
};
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
125
|
+
// ─── Turtle ─────────────────────────────────────
|
|
126
|
+
const turtle = {
|
|
127
|
+
name: 'turtle',
|
|
128
|
+
label: 'Turtle',
|
|
129
|
+
traitHint: 'Slow and steady. Rock-solid reliability.',
|
|
123
130
|
frames: {
|
|
124
131
|
idle: [
|
|
125
|
-
f('
|
|
126
|
-
f('
|
|
132
|
+
f(' ', ' _{E}_ ', ' /=====\\ ', ' |~~~~~~~| ', ' d_/ \\_b '),
|
|
133
|
+
f(' ', ' _{E}_ ', ' /=====\\ ', ' |~~~~~~~| ', ' d__/ \\__b '),
|
|
134
|
+
f(' ', ' _{E}_ ', ' /=====\\ ', ' |~.~.~.~| ', ' d_/ \\_b '),
|
|
127
135
|
],
|
|
128
136
|
happy: [
|
|
129
|
-
f('
|
|
130
|
-
],
|
|
131
|
-
thinking: [
|
|
132
|
-
f(' ? .~~~~. ', ' / {E} \\ ', ' | ... | ', ' | ( ) | ', ' | | ', ' \\ / ', ' ) | | ( ', ' (_) (_) '),
|
|
137
|
+
f(' ', ' _{E}_ ', ' /=====\\ ', ' |~~^^^~~| ', ' d_/ \\_b '),
|
|
133
138
|
],
|
|
134
139
|
alarm: [
|
|
135
|
-
f('
|
|
136
|
-
],
|
|
137
|
-
snark: [
|
|
138
|
-
f(' .~~~~. ', ' / {E} \\ ', ' | --- | ', ' | (-_-) | ', ' | | ', ' \\ / ', ' ) | | ( ', ' (_) (_) '),
|
|
139
|
-
],
|
|
140
|
-
cheer: [
|
|
141
|
-
f(' .~~~~. ', ' / {E} \\ ', ' | \\ / | ', ' | (^_^) | ', ' | / \\ | ', ' \\ / ', ' ) | | ( ', ' (_) (_) '),
|
|
140
|
+
f(' !! ', ' _{E}_ ', ' /=====\\ ', ' |~!!!!!~| ', ' d_/ \\_b '),
|
|
142
141
|
],
|
|
143
142
|
},
|
|
144
143
|
};
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
144
|
+
// ─── Snail ──────────────────────────────────────
|
|
145
|
+
const snail = {
|
|
146
|
+
name: 'snail',
|
|
147
|
+
label: 'Snail',
|
|
148
|
+
traitHint: 'Patient. Leaves a trail of documentation.',
|
|
149
149
|
frames: {
|
|
150
150
|
idle: [
|
|
151
|
-
f('
|
|
151
|
+
f(' \\ \\ ', ' ( {E} ) ', ' /@@@\\ ', ' |_____| ', ' ~~~~~~~~~~'),
|
|
152
|
+
f(' | | ', ' ( {E} ) ', ' /@@@\\ ', ' |_____| ', ' ~~~~~~~~~~'),
|
|
153
|
+
f(' \\ \\ ', ' ( {E} ) ', ' /@@@\\ ', ' |_____| ', ' ~~~~~~~~~'),
|
|
152
154
|
],
|
|
153
155
|
happy: [
|
|
154
|
-
f('
|
|
155
|
-
f(' .[=====]. ', ' |{E} | ', ' | ~~~ | ', ' |[ ^ ]| ', ' |_____| ', ' /| |\\ ', ' | |_O_| | ', ' |_| |_| '),
|
|
156
|
-
],
|
|
157
|
-
thinking: [
|
|
158
|
-
f(' [=====] ', ' |{E} | ', ' | ... | ', ' |[ . ]| ', ' |_____| ', ' /| |\\ ', ' | |_O_| | ', ' |_| |_| '),
|
|
156
|
+
f(' \\ \\ ', ' ( {E} ) ', ' /@@@\\ ', ' |__^__| ', ' ~~~~~~~~~~'),
|
|
159
157
|
],
|
|
160
158
|
alarm: [
|
|
161
|
-
f('
|
|
162
|
-
],
|
|
163
|
-
snark: [
|
|
164
|
-
f(' [=====] ', ' |{E} | ', ' | --- | ', ' |[___]| ', ' |_____| ', ' /| |\\ ', ' | |_O_| | ', ' |_| |_| '),
|
|
165
|
-
],
|
|
166
|
-
cheer: [
|
|
167
|
-
f(' [=====] ', ' |{E} | ', ' | ~~~ | ', ' |[\\o/]| ', ' |_____| ', ' /| |\\ ', ' | |_O_| | ', ' |_| |_| '),
|
|
159
|
+
f(' ! ! ', ' ( {E} ) ', ' /@@@\\ ', ' |__!__| ', ' ~~~~~~~~~~'),
|
|
168
160
|
],
|
|
169
161
|
},
|
|
170
162
|
};
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
163
|
+
// ─── Dragon ─────────────────────────────────────
|
|
164
|
+
const dragon = {
|
|
165
|
+
name: 'dragon',
|
|
166
|
+
label: 'Dragon',
|
|
167
|
+
traitHint: 'Fierce protector of clean architecture.',
|
|
175
168
|
frames: {
|
|
176
169
|
idle: [
|
|
177
|
-
f('
|
|
178
|
-
f('
|
|
170
|
+
f(' /\\/\\ ', '( {E} )> ', ' \\~~~/ ', ' |/\\| ', ' d b '),
|
|
171
|
+
f(' /\\/\\ ', '( {E} )> ', ' \\~~~/ ', ' |/\\| ~ ', ' d b/ '),
|
|
172
|
+
f(' /\\/\\ * ', '( {E} )> ', ' \\~~~/ ', ' |/\\| ', ' d b '),
|
|
179
173
|
],
|
|
180
174
|
happy: [
|
|
181
|
-
f('
|
|
182
|
-
],
|
|
183
|
-
thinking: [
|
|
184
|
-
f('?.~~~~~~~~. ', '( {E} )', '( ... ) ', '( ( ) ) ', ' \\ ... / ', ' \\ / ', ' /~~~~~\\ ', ' (_______) '),
|
|
175
|
+
f(' /\\/\\ *~ ', '( {E} )> ', ' \\^^^/ ', ' |/\\| ', ' d b '),
|
|
185
176
|
],
|
|
186
177
|
alarm: [
|
|
187
|
-
f('
|
|
188
|
-
],
|
|
189
|
-
snark: [
|
|
190
|
-
f(' .~~~~~~~~. ', '( {E} )', '( ) ', '( (-_-) ) ', ' \\ / ', ' \\ / ', ' /~~~~~\\ ', ' (_______) '),
|
|
191
|
-
],
|
|
192
|
-
cheer: [
|
|
193
|
-
f(' .~~~~~~~~. ', '( {E} )', '( \\ / ) ', '( (^_^) ) ', ' \\ /=\\ / ', ' \\ / ', ' /~~~~~\\ ', ' (_______) '),
|
|
194
|
-
f(' .~~~~~~~~. ', '( {E} )', '( / \\ ) ', '( (^_^) ) ', ' \\ \\=/ / ', ' \\ / ', ' /~~~~~\\ ', ' (_______) '),
|
|
178
|
+
f(' /\\/\\ *~*~ ', '( {E} )> ', ' \\!!!/ ', ' |/\\| ', ' d b '),
|
|
195
179
|
],
|
|
196
180
|
},
|
|
197
181
|
};
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
182
|
+
// ─── Octopus ────────────────────────────────────
|
|
183
|
+
const octopus = {
|
|
184
|
+
name: 'octopus',
|
|
185
|
+
label: 'Octopus',
|
|
186
|
+
traitHint: 'Multi-tasker. Eight arms, eight PRs.',
|
|
202
187
|
frames: {
|
|
203
188
|
idle: [
|
|
204
|
-
f('
|
|
189
|
+
f(' .---. ', ' ( {E} ) ', ' \\~~/ ', ' /|/\\|\\ ', ' ~ | | ~ '),
|
|
190
|
+
f(' .---. ', ' ( {E} ) ', ' \\~~/ ', ' \\|/\\|/ ', ' ~| |~ '),
|
|
191
|
+
f(' .---. ', ' ( {E} ) ', ' \\../ ', ' /|/\\|\\ ', ' ~ | | ~ '),
|
|
205
192
|
],
|
|
206
193
|
happy: [
|
|
207
|
-
f('
|
|
208
|
-
],
|
|
209
|
-
thinking: [
|
|
210
|
-
f('? .---. ', '(\\( {E} ) ', ' \\\\ ... / ', ' \\ / ', ' | ~ | ', ' | | ', ' /| |\\ ', '(_|_) (_|_)'),
|
|
194
|
+
f(' .---. ', ' ( {E} ) ', ' \\^^/ ', ' \\|/\\|/ ', ' ~| |~ '),
|
|
211
195
|
],
|
|
212
196
|
alarm: [
|
|
213
|
-
f('
|
|
214
|
-
],
|
|
215
|
-
snark: [
|
|
216
|
-
f(' .---. ', '(\\( {E} ) ', ' \\\\ --- / ', ' \\ / ', ' | . | ', ' | | ', ' /| |\\ ', '(_|_) (_|_)'),
|
|
217
|
-
],
|
|
218
|
-
cheer: [
|
|
219
|
-
f(' .---. ', '(\\( {E} ) ', ' \\\\ ^^^ / ', ' \\ * / ', ' | \\o/ | ', ' | | ', ' /| |\\ ', '(_|_) (_|_)'),
|
|
197
|
+
f(' .!!-. ', ' ( {E} ) ', ' \\!!/ ', ' /|/\\|\\ ', ' ~!| |!~ '),
|
|
220
198
|
],
|
|
221
199
|
},
|
|
222
200
|
};
|
|
223
|
-
//
|
|
224
|
-
const
|
|
225
|
-
name: '
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
happy: [f(' /\\ ^^^ /\\ ', '( {E} ) ', ' \\ u / ', ' ( ) ', ' | | ', ' \\~~~~~/ ', ' /| | |\\ ', ' (_) (_) '),
|
|
229
|
-
f(' /\\ vvv /\\ ', '( {E} ) ', ' \\ u / ', ' ( ) ', ' | | ', ' \\~~~~~/ ', ' /| | |\\ ', ' (_) (_) ')],
|
|
230
|
-
thinking: [f(' /\\ /\\ ', '( ?{E} ) ', ' \\ . / ', ' ( ) ', ' | | ', ' \\~~~~~/ ', ' /| | |\\ ', ' (_) (_) ')],
|
|
231
|
-
alarm: [f(' /\\ !!! /\\ ', '( !{E}! ) ', ' \\ O / ', ' ( ) ', ' | ! | ', ' \\~~~~~/ ', ' /| | |\\ ', ' (_) (_) ')],
|
|
232
|
-
snark: [f(' /\\ /\\ ', '( {E} ) ', ' \\ - / ', ' ( ) ', ' | | ', ' \\~~~~~/ ', ' /| | |\\ ', ' (_) (_) ')],
|
|
233
|
-
cheer: [f(' /\\ \\o/ /\\ ', '( {E} ) ', ' \\ w / ', ' ( ) ', ' | \\o/ | ', ' \\~~~~~/ ', ' /| | |\\ ', ' (_) (_) '),
|
|
234
|
-
f(' /\\ /o\\ /\\ ', '( {E} ) ', ' \\ w / ', ' ( ) ', ' | /o\\ | ', ' \\~~~~~/ ', ' /| | |\\ ', ' (_) (_) ')],
|
|
235
|
-
},
|
|
236
|
-
};
|
|
237
|
-
const turtle = {
|
|
238
|
-
name: 'turtle', label: 'Turtle', traitHint: 'Slow and steady. Writes bulletproof code.',
|
|
201
|
+
// ─── Axolotl ────────────────────────────────────
|
|
202
|
+
const axolotl = {
|
|
203
|
+
name: 'axolotl',
|
|
204
|
+
label: 'Axolotl',
|
|
205
|
+
traitHint: 'Regenerates from any failure. Adorable.',
|
|
239
206
|
frames: {
|
|
240
|
-
idle: [
|
|
241
|
-
|
|
242
|
-
f('
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
207
|
+
idle: [
|
|
208
|
+
f(' \\\\( )// ', ' ( {E} ) ', ' \\ / ', ' ~|~~|~ ', ' d b '),
|
|
209
|
+
f(' \\\\( )// ', ' ( {E} ) ', ' \\ / ~ ', ' ~|~~|~ ', ' d b '),
|
|
210
|
+
f(' \\( )/ ', ' ( {E} ) ', ' \\ / ', ' ~|~~|~ ', ' d b '),
|
|
211
|
+
],
|
|
212
|
+
happy: [
|
|
213
|
+
f(' \\\\( )// ', ' ( {E} ) ', ' \\ ^/ ', ' ~|~~|~ ', ' d b '),
|
|
214
|
+
],
|
|
215
|
+
alarm: [
|
|
216
|
+
f(' !\\( )/! ', ' ( {E} ) ', ' \\!!/ ', ' ~|~~|~ ', ' d b '),
|
|
217
|
+
],
|
|
247
218
|
},
|
|
248
219
|
};
|
|
249
|
-
|
|
250
|
-
|
|
220
|
+
// ─── Ghost ──────────────────────────────────────
|
|
221
|
+
const ghost = {
|
|
222
|
+
name: 'ghost',
|
|
223
|
+
label: 'Ghost',
|
|
224
|
+
traitHint: 'Haunts dead code. Spooky refactorer.',
|
|
251
225
|
frames: {
|
|
252
|
-
idle: [
|
|
253
|
-
|
|
254
|
-
f('
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
226
|
+
idle: [
|
|
227
|
+
f(' .---. ', ' ( {E} ) ', ' | o | ', ' | | ', ' /\\/\\/\\ '),
|
|
228
|
+
f(' .---. ', ' ( {E} ) ', ' | o | ', ' | | ', ' \\/\\/\\/ '),
|
|
229
|
+
f(' .---. ', ' ( {E} ) ', ' | o | ', ' | | ', ' /\\/\\/\\ '),
|
|
230
|
+
],
|
|
231
|
+
happy: [
|
|
232
|
+
f(' .---. ', ' ( {E} ) ', ' | ^^^ | ', ' | | ', ' /\\/\\/\\ '),
|
|
233
|
+
],
|
|
234
|
+
alarm: [
|
|
235
|
+
f(' .!!!. ', ' ( {E} ) ', ' | !!! | ', ' | | ', ' /\\/\\/\\ '),
|
|
236
|
+
],
|
|
259
237
|
},
|
|
260
238
|
};
|
|
261
|
-
|
|
262
|
-
|
|
239
|
+
// ─── Robot ──────────────────────────────────────
|
|
240
|
+
const robot = {
|
|
241
|
+
name: 'robot',
|
|
242
|
+
label: 'Robot',
|
|
243
|
+
traitHint: 'Logical and precise. Beep boop.',
|
|
263
244
|
frames: {
|
|
264
|
-
idle: [
|
|
265
|
-
|
|
266
|
-
f('
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
245
|
+
idle: [
|
|
246
|
+
f(' [=====] ', ' | {E} | ', ' |[___]| ', ' -| |- ', ' _| |_ '),
|
|
247
|
+
f(' [=====] ', ' | {E} | ', ' |[___]| ', ' -| |- ', ' _| _|_ '),
|
|
248
|
+
f(' [=====] ', ' | {E} | ', ' |[_._]| ', ' -| |- ', ' _| |_ '),
|
|
249
|
+
],
|
|
250
|
+
happy: [
|
|
251
|
+
f(' [=====] ', ' | {E} | ', ' |[^^^]| ', ' -| |- ', ' _| |_ '),
|
|
252
|
+
],
|
|
253
|
+
alarm: [
|
|
254
|
+
f(' [!!!!!] ', ' | {E} | ', ' |[!!!]| ', ' -| |- ', ' _| |_ '),
|
|
255
|
+
],
|
|
271
256
|
},
|
|
272
257
|
};
|
|
273
|
-
|
|
274
|
-
|
|
258
|
+
// ─── Blob ───────────────────────────────────────
|
|
259
|
+
const blob = {
|
|
260
|
+
name: 'blob',
|
|
261
|
+
label: 'Blob',
|
|
262
|
+
traitHint: 'Amorphous and adaptable. Goes with the flow.',
|
|
275
263
|
frames: {
|
|
276
|
-
idle: [
|
|
277
|
-
|
|
278
|
-
f('
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
264
|
+
idle: [
|
|
265
|
+
f(' ', ' .~~. ', ' ({E} ) ', ' ( ) ', ' `~~~~` '),
|
|
266
|
+
f(' ', ' .~~. ', ' ( {E}) ', ' ( ) ', ' `~~~~` '),
|
|
267
|
+
f(' ', ' .~~. ', ' ({E} ) ', ' ( ) ', ' `~~~` '),
|
|
268
|
+
],
|
|
269
|
+
happy: [
|
|
270
|
+
f(' ', ' .~~. * ', ' ({E} ) ', ' ( ^^ ) ', ' `~~~~` '),
|
|
271
|
+
],
|
|
272
|
+
alarm: [
|
|
273
|
+
f(' !! ', ' .~~. ', ' ({E} ) ', ' ( !! ) ', ' `~~~~` '),
|
|
274
|
+
],
|
|
283
275
|
},
|
|
284
276
|
};
|
|
277
|
+
// ─── Cactus ─────────────────────────────────────
|
|
285
278
|
const cactus = {
|
|
286
|
-
name: 'cactus',
|
|
279
|
+
name: 'cactus',
|
|
280
|
+
label: 'Cactus',
|
|
281
|
+
traitHint: 'Prickly on the outside. Warm on the inside.',
|
|
287
282
|
frames: {
|
|
288
|
-
idle: [
|
|
289
|
-
|
|
290
|
-
f('
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
283
|
+
idle: [
|
|
284
|
+
f(' |\\ ', ' .-|-. ', ' |({E})| ', ' | ~ | ', ' |_____| '),
|
|
285
|
+
f(' |\\ ', ' .-|-. ', ' |({E})| ', ' | ~ | ', ' |___| '),
|
|
286
|
+
f(' |\\ ', ' .-|-. ', ' |({E})| ', ' | . | ', ' |_____| '),
|
|
287
|
+
],
|
|
288
|
+
happy: [
|
|
289
|
+
f(' *|\\* ', ' .-|-. ', ' |({E})| ', ' | ^ | ', ' |_____| '),
|
|
290
|
+
],
|
|
291
|
+
alarm: [
|
|
292
|
+
f(' !|\\! ', ' .-|-. ', ' |({E})| ', ' | !!! | ', ' |_____| '),
|
|
293
|
+
],
|
|
295
294
|
},
|
|
296
295
|
};
|
|
296
|
+
// ─── Mushroom ───────────────────────────────────
|
|
297
297
|
const mushroom = {
|
|
298
|
-
name: 'mushroom',
|
|
298
|
+
name: 'mushroom',
|
|
299
|
+
label: 'Mushroom',
|
|
300
|
+
traitHint: 'Grows in the dark. Thrives under pressure.',
|
|
299
301
|
frames: {
|
|
300
|
-
idle: [
|
|
301
|
-
|
|
302
|
-
f('
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
302
|
+
idle: [
|
|
303
|
+
f(' .o.O.o. ', ' /~~~~~~~\\ ', ' ({E}) ', ' |~| ', ' _/ \\_ '),
|
|
304
|
+
f(' .O.o.O. ', ' /~~~~~~~\\ ', ' ({E}) ', ' |~| ', ' _/ \\_ '),
|
|
305
|
+
f(' .o.O.o. ', ' /~~~~~~~\\ ', ' ({E}) ', ' |.| ', ' _/ \\_ '),
|
|
306
|
+
],
|
|
307
|
+
happy: [
|
|
308
|
+
f(' .o.O.o. ', ' /~~~~~~~\\ ', ' ({E}) ', ' |^| ', ' _/ \\_ '),
|
|
309
|
+
],
|
|
310
|
+
alarm: [
|
|
311
|
+
f(' .!.!.!. ', ' /~~~~~~~\\ ', ' ({E}) ', ' |!| ', ' _/ \\_ '),
|
|
312
|
+
],
|
|
307
313
|
},
|
|
308
314
|
};
|
|
315
|
+
// ─── Chonk ──────────────────────────────────────
|
|
309
316
|
const chonk = {
|
|
310
|
-
name: 'chonk',
|
|
317
|
+
name: 'chonk',
|
|
318
|
+
label: 'Chonk',
|
|
319
|
+
traitHint: 'Round and mighty. Maximum comfort.',
|
|
311
320
|
frames: {
|
|
312
|
-
idle: [
|
|
313
|
-
|
|
314
|
-
f('
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
321
|
+
idle: [
|
|
322
|
+
f(' .------. ', ' / {E} \\ ', '| ~~~~ | ', '| | ', ' \\______/ '),
|
|
323
|
+
f(' .------. ', ' / {E} \\ ', '| ~~~~ | ', '| | ', ' \\______/ '),
|
|
324
|
+
f(' .------. ', ' / {E} \\ ', '| ~..~ | ', '| | ', ' \\______/ '),
|
|
325
|
+
],
|
|
326
|
+
happy: [
|
|
327
|
+
f(' .------. ', ' / {E} \\ ', '| ^^^^ | ', '| | ', ' \\______/ '),
|
|
328
|
+
],
|
|
329
|
+
alarm: [
|
|
330
|
+
f(' .!!!!!-. ', ' / {E} \\ ', '| !!!! | ', '| | ', ' \\______/ '),
|
|
331
|
+
],
|
|
320
332
|
},
|
|
321
333
|
};
|
|
334
|
+
// ─── Capybara ───────────────────────────────────
|
|
322
335
|
const capybara = {
|
|
323
|
-
name: 'capybara',
|
|
336
|
+
name: 'capybara',
|
|
337
|
+
label: 'Capybara',
|
|
338
|
+
traitHint: 'Chill vibes. Everyone gets along with capybara.',
|
|
324
339
|
frames: {
|
|
325
|
-
idle: [
|
|
326
|
-
|
|
327
|
-
f('
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
frames: {
|
|
337
|
-
idle: [f(' .---. ', ' ( {E} )--', ' ( > ) ', ' ) ( ', ' / ~~~ \\ ', ' | | ', ' \\ / ', ' \\_____/ ')],
|
|
338
|
-
happy: [f(' .---. ', ' ( {E} )--', ' ( D ) ', ' ) ( ', ' / ~~~ \\ ', ' | U | ', ' \\ / ', ' \\_____/ '),
|
|
339
|
-
f(' ..---.. ', ' ( {E} )--', ' ( D ) ', ' ) ( ', ' / ~~~ \\ ', ' | U | ', ' \\ / ', ' \\_____/ ')],
|
|
340
|
-
thinking: [f(' ? .---. ', ' ( {E} )--', ' ( . ) ', ' ) ( ', ' / ~~~ \\ ', ' | ... | ', ' \\ / ', ' \\_____/ ')],
|
|
341
|
-
alarm: [f(' ! .---. ', ' !( {E} )--', ' ( O ) ', ' ) ( ', ' / ~~~ \\ ', ' | HONK! | ', ' \\ / ', ' \\_____/ ')],
|
|
342
|
-
snark: [f(' .---. ', ' ( {E} )--', ' ( - ) ', ' ) ( ', ' / ~~~ \\ ', ' | ... | ', ' \\ / ', ' \\_____/ ')],
|
|
343
|
-
cheer: [f(' .---. ', ' ( {E} )--', ' ( D ) ', ' \\ ) ( ', ' / ~~~ \\ ', ' | HONK! | ', ' \\ / ', ' \\_____/ '),
|
|
344
|
-
f(' .---. ', ' ( {E} )--', ' ( D ) ', ' ) ( /', ' / ~~~ \\ ', ' | HONK! | ', ' \\ / ', ' \\_____/ ')],
|
|
340
|
+
idle: [
|
|
341
|
+
f(' .---. ', ' / {E} \\ ', ' | \\_/ | ', ' |~~~~~| ', ' d___b '),
|
|
342
|
+
f(' .---. ', ' / {E} \\ ', ' | \\_/ | ', ' |~~~~~| ~ ', ' d___b / '),
|
|
343
|
+
f(' .---. ', ' / {E} \\ ', ' | \\./ | ', ' |~~~~~| ', ' d___b '),
|
|
344
|
+
],
|
|
345
|
+
happy: [
|
|
346
|
+
f(' .---. ', ' / {E} \\ ', ' | \\^/ | ', ' |~~~~~| ', ' d___b '),
|
|
347
|
+
],
|
|
348
|
+
alarm: [
|
|
349
|
+
f(' .!!!. ', ' / {E} \\ ', ' | \\!/ | ', ' |~~~~~| ', ' d___b '),
|
|
350
|
+
],
|
|
345
351
|
},
|
|
346
352
|
};
|
|
353
|
+
// ─────────────────────────────────────────────────
|
|
347
354
|
export const SPECIES = [
|
|
348
|
-
duck,
|
|
349
|
-
|
|
350
|
-
|
|
355
|
+
duck,
|
|
356
|
+
goose,
|
|
357
|
+
cat,
|
|
358
|
+
rabbit,
|
|
359
|
+
owl,
|
|
360
|
+
penguin,
|
|
361
|
+
turtle,
|
|
362
|
+
snail,
|
|
363
|
+
dragon,
|
|
364
|
+
octopus,
|
|
365
|
+
axolotl,
|
|
366
|
+
ghost,
|
|
367
|
+
robot,
|
|
368
|
+
blob,
|
|
369
|
+
cactus,
|
|
370
|
+
mushroom,
|
|
371
|
+
chonk,
|
|
372
|
+
capybara,
|
|
351
373
|
];
|
|
352
|
-
export const SPECIES_MAP = new Map(SPECIES.map(s => [s.name, s]));
|
|
353
374
|
export function getSpecies(name) {
|
|
354
|
-
|
|
375
|
+
const found = SPECIES.find((s) => s.name === name);
|
|
376
|
+
if (!found)
|
|
377
|
+
throw new Error(`Unknown species: ${name}`);
|
|
378
|
+
return found;
|
|
355
379
|
}
|
|
356
380
|
//# sourceMappingURL=species.js.map
|