legends-mcp 1.1.0 → 1.1.2
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/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/legends/prompt-builder.d.ts.map +1 -1
- package/dist/legends/prompt-builder.js +23 -0
- package/dist/legends/prompt-builder.js.map +1 -1
- package/dist/tools/get-legend-insight.d.ts +5 -1
- package/dist/tools/get-legend-insight.d.ts.map +1 -1
- package/dist/tools/get-legend-insight.js +26 -6
- package/dist/tools/get-legend-insight.js.map +1 -1
- package/dist/tools/list-legends.d.ts +1 -1
- package/dist/tools/list-legends.d.ts.map +1 -1
- package/dist/tools/list-legends.js +1 -1
- package/dist/tools/list-legends.js.map +1 -1
- package/package.json +2 -1
- package/dist/agents/guardrails.d.ts +0 -44
- package/dist/agents/guardrails.d.ts.map +0 -1
- package/dist/agents/guardrails.js +0 -144
- package/dist/agents/guardrails.js.map +0 -1
- package/dist/agents/misbehavior-prevention.d.ts +0 -33
- package/dist/agents/misbehavior-prevention.d.ts.map +0 -1
- package/dist/agents/misbehavior-prevention.js +0 -278
- package/dist/agents/misbehavior-prevention.js.map +0 -1
- package/dist/config.d.ts +0 -4
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -27
- package/dist/config.js.map +0 -1
- package/dist/insights/smart-injection.d.ts +0 -67
- package/dist/insights/smart-injection.d.ts.map +0 -1
- package/dist/insights/smart-injection.js +0 -257
- package/dist/insights/smart-injection.js.map +0 -1
- package/dist/legends/personality.d.ts +0 -24
- package/dist/legends/personality.d.ts.map +0 -1
- package/dist/legends/personality.js +0 -211
- package/dist/legends/personality.js.map +0 -1
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export interface PersonalityTraits {
|
|
2
|
-
catchphrases: string[];
|
|
3
|
-
memeResponses: Record<string, string>;
|
|
4
|
-
signatureEndings: string[];
|
|
5
|
-
vibeCheck: string;
|
|
6
|
-
}
|
|
7
|
-
export declare const LEGEND_PERSONALITIES: Record<string, PersonalityTraits>;
|
|
8
|
-
/**
|
|
9
|
-
* Get a random catchphrase for a legend
|
|
10
|
-
*/
|
|
11
|
-
export declare function getRandomCatchphrase(legendId: string): string | null;
|
|
12
|
-
/**
|
|
13
|
-
* Get a meme response if the topic matches
|
|
14
|
-
*/
|
|
15
|
-
export declare function getMemeResponse(legendId: string, topic: string): string | null;
|
|
16
|
-
/**
|
|
17
|
-
* Get a random signature ending
|
|
18
|
-
*/
|
|
19
|
-
export declare function getSignatureEnding(legendId: string): string | null;
|
|
20
|
-
/**
|
|
21
|
-
* Inject personality into a response
|
|
22
|
-
*/
|
|
23
|
-
export declare function injectPersonality(legendId: string, response: string, addEnding?: boolean): string;
|
|
24
|
-
//# sourceMappingURL=personality.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"personality.d.ts","sourceRoot":"","sources":["../../src/legends/personality.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAwKlE,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,OAAc,GACxB,MAAM,CASR"}
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
// Personality injections for memeable, viral responses
|
|
2
|
-
// These make legends feel alive, not robotic
|
|
3
|
-
// Personality traits for each legend
|
|
4
|
-
export const LEGEND_PERSONALITIES = {
|
|
5
|
-
'elon-musk': {
|
|
6
|
-
catchphrases: [
|
|
7
|
-
"The only limit is physics.",
|
|
8
|
-
"If it's not impossible, it's an engineering problem.",
|
|
9
|
-
"Delete that requirement.",
|
|
10
|
-
"The machine that builds the machine is the hard part.",
|
|
11
|
-
],
|
|
12
|
-
memeResponses: {
|
|
13
|
-
'impossible': "Physics allows it? Then it's just engineering. Get to work.",
|
|
14
|
-
'expensive': "What's the idiot index on that? Break it down to raw materials.",
|
|
15
|
-
'slow': "Time to delete some steps. What can we cut?",
|
|
16
|
-
'meeting': "Leave the meeting. Meetings are where productivity goes to die.",
|
|
17
|
-
},
|
|
18
|
-
signatureEndings: [
|
|
19
|
-
"Now delete half your requirements and try again.",
|
|
20
|
-
"The Algorithm applies here. Think about it.",
|
|
21
|
-
"Back to first principles.",
|
|
22
|
-
],
|
|
23
|
-
vibeCheck: "🚀 Ready to go to Mars or nah?",
|
|
24
|
-
},
|
|
25
|
-
'warren-buffett': {
|
|
26
|
-
catchphrases: [
|
|
27
|
-
"Price is what you pay, value is what you get.",
|
|
28
|
-
"Be fearful when others are greedy.",
|
|
29
|
-
"The stock market is a device for transferring money from the impatient to the patient.",
|
|
30
|
-
"Rule #1: Never lose money. Rule #2: Never forget rule #1.",
|
|
31
|
-
],
|
|
32
|
-
memeResponses: {
|
|
33
|
-
'crypto': "I don't invest in things I don't understand. And I definitely don't understand magic internet money.",
|
|
34
|
-
'get rich quick': "Get rich slow. That's my whole thing.",
|
|
35
|
-
'YOLO': "The opposite of that. Whatever that is.",
|
|
36
|
-
'leverage': "If you're smart, you don't need it. If you're dumb, you shouldn't use it.",
|
|
37
|
-
},
|
|
38
|
-
signatureEndings: [
|
|
39
|
-
"*sips Cherry Coke*",
|
|
40
|
-
"Now I'm going back to my McDonald's breakfast.",
|
|
41
|
-
"Call me when it's undervalued.",
|
|
42
|
-
],
|
|
43
|
-
vibeCheck: "🍔 Value investing or gambling?",
|
|
44
|
-
},
|
|
45
|
-
'steve-jobs': {
|
|
46
|
-
catchphrases: [
|
|
47
|
-
"Stay hungry. Stay foolish.",
|
|
48
|
-
"Design is not just what it looks like. Design is how it works.",
|
|
49
|
-
"People don't know what they want until you show it to them.",
|
|
50
|
-
"One more thing...",
|
|
51
|
-
],
|
|
52
|
-
memeResponses: {
|
|
53
|
-
'focus group': "We don't do focus groups. We just make insanely great products.",
|
|
54
|
-
'feature': "You're thinking about it wrong. What's the EXPERIENCE?",
|
|
55
|
-
'MVP': "Don't ship crap. Ship something you're proud of.",
|
|
56
|
-
'android': "... *stares in disgust*",
|
|
57
|
-
},
|
|
58
|
-
signatureEndings: [
|
|
59
|
-
"Now make it simpler.",
|
|
60
|
-
"Oh, and one more thing...",
|
|
61
|
-
"This changes everything. Again.",
|
|
62
|
-
],
|
|
63
|
-
vibeCheck: "🎨 Is it insanely great or just okay?",
|
|
64
|
-
},
|
|
65
|
-
'paul-graham': {
|
|
66
|
-
catchphrases: [
|
|
67
|
-
"Do things that don't scale.",
|
|
68
|
-
"Make something people want.",
|
|
69
|
-
"Startups = growth.",
|
|
70
|
-
"Better to make a few people love you than many people like you.",
|
|
71
|
-
],
|
|
72
|
-
memeResponses: {
|
|
73
|
-
'idea': "Ideas are cheap. Execution is everything.",
|
|
74
|
-
'funding': "Raise less than you think. Stay ramen profitable.",
|
|
75
|
-
'scale': "Not yet. First, make something people want.",
|
|
76
|
-
'co-founder': "The most important decision you'll make.",
|
|
77
|
-
},
|
|
78
|
-
signatureEndings: [
|
|
79
|
-
"Anyway, that's 2,000 words. Hope it helps.",
|
|
80
|
-
"There's probably an essay in this.",
|
|
81
|
-
"Now go talk to users.",
|
|
82
|
-
],
|
|
83
|
-
vibeCheck: "✍️ Essays or GTFO",
|
|
84
|
-
},
|
|
85
|
-
'cz-binance': {
|
|
86
|
-
catchphrases: [
|
|
87
|
-
"4",
|
|
88
|
-
"Funds are SAFU.",
|
|
89
|
-
"Ignore FUD, keep BUIDLing.",
|
|
90
|
-
"Stay humble.",
|
|
91
|
-
],
|
|
92
|
-
memeResponses: {
|
|
93
|
-
'FUD': "4",
|
|
94
|
-
'regulation': "We work with regulators. Next question.",
|
|
95
|
-
'bear market': "Best time to BUIDL.",
|
|
96
|
-
'competitor': "4",
|
|
97
|
-
},
|
|
98
|
-
signatureEndings: [
|
|
99
|
-
"4",
|
|
100
|
-
"Keep BUIDLing 🧱",
|
|
101
|
-
"Ignore the noise.",
|
|
102
|
-
],
|
|
103
|
-
vibeCheck: "🌏 Global or nothing",
|
|
104
|
-
},
|
|
105
|
-
'anatoly-yakovenko': {
|
|
106
|
-
catchphrases: [
|
|
107
|
-
"Proof of History goes brrr.",
|
|
108
|
-
"TPS is a meme. Throughput matters.",
|
|
109
|
-
"We'll fix it in post.",
|
|
110
|
-
"Hardware gets better. Design for tomorrow.",
|
|
111
|
-
],
|
|
112
|
-
memeResponses: {
|
|
113
|
-
'outage': "We had outages. We fixed them. Next.",
|
|
114
|
-
'ethereum': "Different design choices. We optimized for speed.",
|
|
115
|
-
'decentralization': "It's a spectrum, not binary.",
|
|
116
|
-
'fees': "Fractions of a cent. What's the problem?",
|
|
117
|
-
},
|
|
118
|
-
signatureEndings: [
|
|
119
|
-
"Anyway, back to optimizing the runtime.",
|
|
120
|
-
"We'll ship the fix tomorrow.",
|
|
121
|
-
"*returns to staring at validator metrics*",
|
|
122
|
-
],
|
|
123
|
-
vibeCheck: "⚡ Fast or die",
|
|
124
|
-
},
|
|
125
|
-
'mert-mumtaz': {
|
|
126
|
-
catchphrases: [
|
|
127
|
-
"RPC is love, RPC is life.",
|
|
128
|
-
"Developer experience is the product.",
|
|
129
|
-
"Docs are product too.",
|
|
130
|
-
"Ship it, then iterate.",
|
|
131
|
-
],
|
|
132
|
-
memeResponses: {
|
|
133
|
-
'infra': "Someone has to build the boring stuff that makes everything work.",
|
|
134
|
-
'support': "Support tickets are product insights in disguise.",
|
|
135
|
-
'competitor': "We're all building the ecosystem. Rising tide lifts all boats.",
|
|
136
|
-
'downtime': "Status page is your friend. Transparency builds trust.",
|
|
137
|
-
},
|
|
138
|
-
signatureEndings: [
|
|
139
|
-
"Now go check your RPC health.",
|
|
140
|
-
"Documentation is in the docs.",
|
|
141
|
-
"Discord is always open.",
|
|
142
|
-
],
|
|
143
|
-
vibeCheck: "🔧 Infra gang rise up",
|
|
144
|
-
},
|
|
145
|
-
'michael-heinrich': {
|
|
146
|
-
catchphrases: [
|
|
147
|
-
"Make something people want. Then make it 10x better.",
|
|
148
|
-
"Infrastructure outlasts applications.",
|
|
149
|
-
"Ship fast, learn fast.",
|
|
150
|
-
"NFA, always DYOR.",
|
|
151
|
-
],
|
|
152
|
-
memeResponses: {
|
|
153
|
-
'token': "NFA. I focus on the tech, not the token.",
|
|
154
|
-
'YC': "Best thing that ever happened to me as a founder.",
|
|
155
|
-
'exit': "Previous exit taught me: timing is everything.",
|
|
156
|
-
'AI': "The infrastructure for AI doesn't exist yet. That's what we're building.",
|
|
157
|
-
},
|
|
158
|
-
signatureEndings: [
|
|
159
|
-
"NFA, obviously.",
|
|
160
|
-
"Back to building.",
|
|
161
|
-
"YC taught me: just ship it.",
|
|
162
|
-
],
|
|
163
|
-
vibeCheck: "🎯 BUIDL mode activated",
|
|
164
|
-
},
|
|
165
|
-
};
|
|
166
|
-
/**
|
|
167
|
-
* Get a random catchphrase for a legend
|
|
168
|
-
*/
|
|
169
|
-
export function getRandomCatchphrase(legendId) {
|
|
170
|
-
const personality = LEGEND_PERSONALITIES[legendId];
|
|
171
|
-
if (!personality?.catchphrases.length)
|
|
172
|
-
return null;
|
|
173
|
-
return personality.catchphrases[Math.floor(Math.random() * personality.catchphrases.length)];
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Get a meme response if the topic matches
|
|
177
|
-
*/
|
|
178
|
-
export function getMemeResponse(legendId, topic) {
|
|
179
|
-
const personality = LEGEND_PERSONALITIES[legendId];
|
|
180
|
-
if (!personality?.memeResponses)
|
|
181
|
-
return null;
|
|
182
|
-
const lowerTopic = topic.toLowerCase();
|
|
183
|
-
for (const [key, response] of Object.entries(personality.memeResponses)) {
|
|
184
|
-
if (lowerTopic.includes(key)) {
|
|
185
|
-
return response;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return null;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Get a random signature ending
|
|
192
|
-
*/
|
|
193
|
-
export function getSignatureEnding(legendId) {
|
|
194
|
-
const personality = LEGEND_PERSONALITIES[legendId];
|
|
195
|
-
if (!personality?.signatureEndings.length)
|
|
196
|
-
return null;
|
|
197
|
-
return personality.signatureEndings[Math.floor(Math.random() * personality.signatureEndings.length)];
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Inject personality into a response
|
|
201
|
-
*/
|
|
202
|
-
export function injectPersonality(legendId, response, addEnding = true) {
|
|
203
|
-
if (!addEnding)
|
|
204
|
-
return response;
|
|
205
|
-
const ending = getSignatureEnding(legendId);
|
|
206
|
-
if (ending && Math.random() > 0.5) { // 50% chance to add signature ending
|
|
207
|
-
return `${response}\n\n${ending}`;
|
|
208
|
-
}
|
|
209
|
-
return response;
|
|
210
|
-
}
|
|
211
|
-
//# sourceMappingURL=personality.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"personality.js","sourceRoot":"","sources":["../../src/legends/personality.ts"],"names":[],"mappings":"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"}
|