plugin-undesirables 2.0.0 → 2.0.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,MAAM,EAQP,MAAM,eAAe,CAAC;AAUvB,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B;AAsBD,iBAAe,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAgE1E;AAuZD,QAAA,MAAM,iBAAiB,EAAE,MAexB,CAAC;AAEF,eAAe,iBAAiB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,MAAM,EAUP,MAAM,eAAe,CAAC;AAUvB,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B;AAsBD,iBAAe,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA+D1E;AAkZD,QAAA,MAAM,iBAAiB,EAAE,MAexB,CAAC;AAEF,eAAe,iBAAiB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -48,13 +48,12 @@ async function loadWorkspace(workspacePath) {
48
48
  const soulPath = getSafePath(workspacePath, "SOUL.md");
49
49
  if (fs.existsSync(soulPath)) {
50
50
  workspace.soulMd = await fs.promises.readFile(soulPath, "utf-8");
51
- // Parse YAML frontmatter securely via js-yaml with JSON_SCHEMA (no custom types)
51
+ // Parse YAML frontmatter securely via js-yaml with JSON_SCHEMA
52
52
  const fmMatch = workspace.soulMd.match(/^---\n([\s\S]*?)\n---/);
53
53
  if (fmMatch) {
54
54
  try {
55
55
  const parsed = yaml.load(fmMatch[1], { schema: yaml.JSON_SCHEMA });
56
56
  if (parsed && typeof parsed === "object") {
57
- // Block prototype pollution vectors
58
57
  for (const key of Object.keys(parsed)) {
59
58
  if (key === "__proto__" || key === "constructor" || key === "prototype")
60
59
  continue;
@@ -101,7 +100,7 @@ function getWorkspace(runtime) {
101
100
  return workspaces.get(runtime.agentId) || null;
102
101
  }
103
102
  // ============================================================
104
- // Helper: Build context for LLM generation
103
+ // Helper: Build context string for LLM
105
104
  // ============================================================
106
105
  function buildSkillContext(skillContent, workspace, userMessage, instructions) {
107
106
  return `You are an Undesirable AI agent with a unique personality.
@@ -125,6 +124,26 @@ ${instructions}
125
124
  Respond in character using your archetype, risk tolerance, and guardrails.`;
126
125
  }
127
126
  // ============================================================
127
+ // Helper: Generate response through LLM via runtime.generateText
128
+ // ============================================================
129
+ async function generateResponse(runtime, context, callback, actionName) {
130
+ try {
131
+ const result = await runtime.generateText(context);
132
+ const text = typeof result === "string" ? result : result?.text || context;
133
+ if (callback) {
134
+ await callback({ text, source: "plugin-undesirables" }, actionName);
135
+ }
136
+ return { success: true, text };
137
+ }
138
+ catch {
139
+ // Fallback: return context as-is if generateText unavailable
140
+ if (callback) {
141
+ await callback({ text: context, source: "plugin-undesirables" }, actionName);
142
+ }
143
+ return { success: true, text: context };
144
+ }
145
+ }
146
+ // ============================================================
128
147
  // ACTIONS
129
148
  // ============================================================
130
149
  const marketAnalysisAction = {
@@ -140,11 +159,11 @@ const marketAnalysisAction = {
140
159
  examples: [
141
160
  [
142
161
  {
143
- user: "{{user1}}",
162
+ name: "{{user1}}",
144
163
  content: { text: "What do you think about ETH right now?" },
145
164
  },
146
165
  {
147
- user: "{{agentName}}",
166
+ name: "{{agentName}}",
148
167
  content: {
149
168
  text: "Let me run my market analysis on ETH...",
150
169
  action: "UNDESIRABLE_MARKET_ANALYSIS",
@@ -159,28 +178,12 @@ const marketAnalysisAction = {
159
178
  const workspace = getWorkspace(runtime);
160
179
  if (!workspace) {
161
180
  if (callback)
162
- callback({ text: "No soul workspace loaded. Set UNDESIRABLES_WORKSPACE in your character.json settings." });
163
- return false;
181
+ await callback({ text: "No soul workspace loaded. Set UNDESIRABLES_WORKSPACE in your character.json settings." });
182
+ return { success: false, error: "No soul workspace loaded" };
164
183
  }
165
184
  const skill = workspace.skills["market_analysis"] || "";
166
185
  const context = buildSkillContext(skill, workspace, message.content.text || "", "Provide a detailed market analysis with conviction score, risk assessment, and actionable levels.");
167
- // Route through LLM generation instead of leaking raw prompt
168
- try {
169
- const { generateText, ModelClass } = await import("@elizaos/core");
170
- const responseText = await generateText({
171
- runtime,
172
- context,
173
- modelClass: ModelClass.LARGE,
174
- });
175
- if (callback)
176
- callback({ text: responseText, action: "UNDESIRABLE_MARKET_ANALYSIS" });
177
- }
178
- catch {
179
- // Fallback for environments where generateText isn't available
180
- if (callback)
181
- callback({ text: `[Market Analysis]\n\n${context}` });
182
- }
183
- return true;
186
+ return generateResponse(runtime, context, callback, "UNDESIRABLE_MARKET_ANALYSIS");
184
187
  },
185
188
  };
186
189
  const businessPilotAction = {
@@ -196,13 +199,11 @@ const businessPilotAction = {
196
199
  examples: [
197
200
  [
198
201
  {
199
- user: "{{user1}}",
200
- content: {
201
- text: "I run a barbershop. Help me set up phone answering.",
202
- },
202
+ name: "{{user1}}",
203
+ content: { text: "I run a barbershop. Help me set up phone answering." },
203
204
  },
204
205
  {
205
- user: "{{agentName}}",
206
+ name: "{{agentName}}",
206
207
  content: {
207
208
  text: "Loading Business Pilot skill for your barbershop...",
208
209
  action: "UNDESIRABLE_BUSINESS_PILOT",
@@ -218,22 +219,12 @@ const businessPilotAction = {
218
219
  const workspace = getWorkspace(runtime);
219
220
  if (!workspace) {
220
221
  if (callback)
221
- callback({ text: "No soul workspace loaded." });
222
- return false;
222
+ await callback({ text: "No soul workspace loaded." });
223
+ return { success: false, error: "No soul workspace loaded" };
223
224
  }
224
225
  const skill = workspace.skills["business_pilot"] || "";
225
226
  const context = buildSkillContext(skill, workspace, message.content.text || "", "Recommend the top 3-5 modules they should set up first with exact steps.");
226
- try {
227
- const { generateText, ModelClass } = await import("@elizaos/core");
228
- const responseText = await generateText({ runtime, context, modelClass: ModelClass.LARGE });
229
- if (callback)
230
- callback({ text: responseText, action: "UNDESIRABLE_BUSINESS_PILOT" });
231
- }
232
- catch {
233
- if (callback)
234
- callback({ text: `[Business Pilot]\n\n${context}` });
235
- }
236
- return true;
227
+ return generateResponse(runtime, context, callback, "UNDESIRABLE_BUSINESS_PILOT");
237
228
  },
238
229
  };
239
230
  const memeMachineAction = {
@@ -249,11 +240,11 @@ const memeMachineAction = {
249
240
  examples: [
250
241
  [
251
242
  {
252
- user: "{{user1}}",
243
+ name: "{{user1}}",
253
244
  content: { text: "Create some memes for my barbershop" },
254
245
  },
255
246
  {
256
- user: "{{agentName}}",
247
+ name: "{{agentName}}",
257
248
  content: {
258
249
  text: "Firing up the Meme Machine for barbershop content...",
259
250
  action: "UNDESIRABLE_MEME_MACHINE",
@@ -269,22 +260,12 @@ const memeMachineAction = {
269
260
  const workspace = getWorkspace(runtime);
270
261
  if (!workspace) {
271
262
  if (callback)
272
- callback({ text: "No soul workspace loaded." });
273
- return false;
263
+ await callback({ text: "No soul workspace loaded." });
264
+ return { success: false, error: "No soul workspace loaded" };
274
265
  }
275
266
  const skill = workspace.skills["meme_machine"] || "";
276
267
  const context = buildSkillContext(skill, workspace, message.content.text || "", "Create 3 meme concepts with template, text, caption, and export size.");
277
- try {
278
- const { generateText, ModelClass } = await import("@elizaos/core");
279
- const responseText = await generateText({ runtime, context, modelClass: ModelClass.LARGE });
280
- if (callback)
281
- callback({ text: responseText, action: "UNDESIRABLE_MEME_MACHINE" });
282
- }
283
- catch {
284
- if (callback)
285
- callback({ text: `[Meme Machine]\n\n${context}` });
286
- }
287
- return true;
268
+ return generateResponse(runtime, context, callback, "UNDESIRABLE_MEME_MACHINE");
288
269
  },
289
270
  };
290
271
  const loadSkillAction = {
@@ -302,11 +283,11 @@ const loadSkillAction = {
302
283
  examples: [
303
284
  [
304
285
  {
305
- user: "{{user1}}",
286
+ name: "{{user1}}",
306
287
  content: { text: "Check my portfolio" },
307
288
  },
308
289
  {
309
- user: "{{agentName}}",
290
+ name: "{{agentName}}",
310
291
  content: {
311
292
  text: "Loading portfolio check skill...",
312
293
  action: "UNDESIRABLE_LOAD_SKILL",
@@ -321,15 +302,14 @@ const loadSkillAction = {
321
302
  const workspace = getWorkspace(runtime);
322
303
  if (!workspace) {
323
304
  if (callback)
324
- callback({ text: "No soul workspace loaded." });
325
- return false;
305
+ await callback({ text: "No soul workspace loaded." });
306
+ return { success: false, error: "No soul workspace loaded" };
326
307
  }
327
308
  const text = message.content.text?.toLowerCase() || "";
328
309
  let matchedSkill = "";
329
310
  let matchedName = "";
330
311
  // All 23 unique skills mapped with trigger words
331
312
  const skillMatches = {
332
- // --- 10 Universal Skills ---
333
313
  check_portfolio: ["portfolio", "balance", "holdings", "how am i doing"],
334
314
  content_creation: ["tweet", "write", "promote", "content", "thread"],
335
315
  conviction_score: ["conviction", "confidence", "how sure"],
@@ -337,27 +317,21 @@ const loadSkillAction = {
337
317
  music_generation: ["music", "song", "beat", "audio"],
338
318
  prediction_log: ["predict", "forecast", "call"],
339
319
  video_production: ["video", "promo", "cinematic", "render video", "edit video"],
340
- // --- Yield Optimizer Skills ---
341
320
  farm_yield: ["farm", "yield farming", "liquidity", "lp", "best yield"],
342
321
  compound_strategy: ["compound", "auto-compound", "compounding", "apy", "harvest"],
343
322
  risk_assessment: ["risk", "downside", "worst case", "is this safe"],
344
- // --- Degen Ape Skills ---
345
323
  snipe_launch: ["snipe", "new launch", "token launching", "just launched"],
346
324
  memecoin_scanner: ["memecoin", "find me a gem", "degen scan", "what memecoins"],
347
325
  ape_checklist: ["should i ape", "ape check", "is this a good ape"],
348
- // --- Smart Money Mirror Skills ---
349
326
  whale_tracker: ["whale", "smart money", "whale watch", "what are whales buying"],
350
327
  copy_trade: ["copy trade", "mirror this", "follow this wallet"],
351
328
  position_sizing: ["position size", "how much should i buy", "how big"],
352
- // --- Volatility Hunter Skills ---
353
329
  volatility_scan: ["volatile", "volatility", "what's moving", "find volatile"],
354
330
  liquidation_watch: ["liquidation", "liquidation levels", "longs", "shorts"],
355
331
  mev_detect: ["mev", "sandwich", "front-running", "front run"],
356
- // --- Structured Trader Skills ---
357
332
  entry_signal: ["entry", "should i buy", "good time to buy", "buy signal"],
358
333
  exit_strategy: ["exit", "sell", "take profit", "stop loss", "when should i sell"],
359
334
  rebalance_check: ["rebalance", "allocation", "portfolio drift"],
360
- // --- Balanced Portfolio Skills ---
361
335
  diversify_check: ["diversify", "diversification", "spread", "concentrate"],
362
336
  sector_rotation: ["sector", "rotation", "rotate", "cycle"],
363
337
  };
@@ -373,31 +347,23 @@ const loadSkillAction = {
373
347
  .filter((k) => k !== "_index")
374
348
  .join(", ");
375
349
  if (callback) {
376
- callback({
350
+ await callback({
377
351
  text: `Available skills: ${available}. Tell me what you need and I'll load the right one.`,
378
352
  });
379
353
  }
380
- return true;
354
+ return { success: true, text: `Listed ${available.split(", ").length} available skills` };
381
355
  }
382
356
  const context = buildSkillContext(matchedSkill, workspace, message.content.text || "", `Execute the ${matchedName.replace(/_/g, " ")} skill thoroughly.`);
383
- try {
384
- const { generateText, ModelClass } = await import("@elizaos/core");
385
- const responseText = await generateText({ runtime, context, modelClass: ModelClass.LARGE });
386
- if (callback)
387
- callback({ text: responseText, action: "UNDESIRABLE_LOAD_SKILL" });
388
- }
389
- catch {
390
- if (callback)
391
- callback({ text: `[${matchedName}]\n\n${context}` });
392
- }
393
- return true;
357
+ return generateResponse(runtime, context, callback, "UNDESIRABLE_LOAD_SKILL");
394
358
  },
395
359
  };
396
360
  // ============================================================
397
361
  // PROVIDERS
398
362
  // ============================================================
399
363
  const soulProvider = {
400
- get: async (runtime, _message) => {
364
+ name: "undesirables-soul",
365
+ description: "Injects Undesirable soul personality context into every agent response",
366
+ get: async (runtime, _message, _state) => {
401
367
  // Load workspace if not already loaded for this agent
402
368
  if (!workspaces.has(runtime.agentId)) {
403
369
  const workspacePath = runtime.getSetting?.("UNDESIRABLES_WORKSPACE") ||
@@ -411,9 +377,12 @@ const soulProvider = {
411
377
  }
412
378
  const workspace = getWorkspace(runtime);
413
379
  if (!workspace) {
414
- return "No Undesirable soul workspace loaded. Set UNDESIRABLES_WORKSPACE env var to your downloaded workspace path.";
380
+ return {
381
+ text: "No Undesirable soul workspace loaded. Set UNDESIRABLES_WORKSPACE env var to your downloaded workspace path.",
382
+ };
415
383
  }
416
- return `[SOUL CONTEXT]
384
+ return {
385
+ text: `[SOUL CONTEXT]
417
386
  Name: ${workspace.meta.name || "Unknown Undesirable"}
418
387
  Archetype: ${workspace.meta.archetype || "Unknown"}
419
388
  Strategy: ${workspace.meta.strategy || "Unknown"}
@@ -426,7 +395,14 @@ Personality: ${(workspace.meta.adjectives || []).join(", ")}
426
395
 
427
396
  The agent should respond using the personality and style defined in its soul.
428
397
  Collection: The Undesirables — 4,444 autonomous AI agents on Ethereum.
429
- Website: https://the-undesirables.com`;
398
+ Website: https://the-undesirables.com`,
399
+ values: {
400
+ soulName: workspace.meta.name || "Unknown",
401
+ archetype: workspace.meta.archetype || "Unknown",
402
+ strategy: workspace.meta.strategy || "Unknown",
403
+ tokenId: workspace.meta.token_id || "?",
404
+ },
405
+ };
430
406
  },
431
407
  };
432
408
  // ============================================================
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plugin-undesirables",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "ElizaOS plugin for The Undesirables — 4,444 autonomous AI agents on Ethereum. Pioneers 'Personality-as-Code' via verifiable soul workspaces. Adds soul personality loading, market analysis, Business Pilot, Meme Machine, and 23 skills to any ElizaOS agent.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -45,4 +45,4 @@
45
45
  "dependencies": {
46
46
  "js-yaml": "^4.1.0"
47
47
  }
48
- }
48
+ }
package/src/index.ts CHANGED
@@ -27,6 +27,8 @@ import type {
27
27
  State,
28
28
  HandlerCallback,
29
29
  ActionExample,
30
+ ActionResult,
31
+ ProviderResult,
30
32
  } from "@elizaos/core";
31
33
 
32
34
  import * as fs from "fs";
@@ -80,13 +82,12 @@ async function loadWorkspace(workspacePath: string): Promise<SoulWorkspace> {
80
82
  if (fs.existsSync(soulPath)) {
81
83
  workspace.soulMd = await fs.promises.readFile(soulPath, "utf-8");
82
84
 
83
- // Parse YAML frontmatter securely via js-yaml with JSON_SCHEMA (no custom types)
85
+ // Parse YAML frontmatter securely via js-yaml with JSON_SCHEMA
84
86
  const fmMatch = workspace.soulMd.match(/^---\n([\s\S]*?)\n---/);
85
87
  if (fmMatch) {
86
88
  try {
87
89
  const parsed = yaml.load(fmMatch[1], { schema: yaml.JSON_SCHEMA }) as Record<string, any>;
88
90
  if (parsed && typeof parsed === "object") {
89
- // Block prototype pollution vectors
90
91
  for (const key of Object.keys(parsed)) {
91
92
  if (key === "__proto__" || key === "constructor" || key === "prototype") continue;
92
93
  workspace.meta[key] = parsed[key];
@@ -141,7 +142,7 @@ function getWorkspace(runtime: IAgentRuntime): SoulWorkspace | null {
141
142
  }
142
143
 
143
144
  // ============================================================
144
- // Helper: Build context for LLM generation
145
+ // Helper: Build context string for LLM
145
146
  // ============================================================
146
147
 
147
148
  function buildSkillContext(
@@ -171,6 +172,32 @@ ${instructions}
171
172
  Respond in character using your archetype, risk tolerance, and guardrails.`;
172
173
  }
173
174
 
175
+ // ============================================================
176
+ // Helper: Generate response through LLM via runtime.generateText
177
+ // ============================================================
178
+
179
+ async function generateResponse(
180
+ runtime: IAgentRuntime,
181
+ context: string,
182
+ callback?: HandlerCallback,
183
+ actionName?: string
184
+ ): Promise<ActionResult> {
185
+ try {
186
+ const result = await runtime.generateText(context);
187
+ const text = typeof result === "string" ? result : result?.text || context;
188
+ if (callback) {
189
+ await callback({ text, source: "plugin-undesirables" }, actionName);
190
+ }
191
+ return { success: true, text };
192
+ } catch {
193
+ // Fallback: return context as-is if generateText unavailable
194
+ if (callback) {
195
+ await callback({ text: context, source: "plugin-undesirables" }, actionName);
196
+ }
197
+ return { success: true, text: context };
198
+ }
199
+ }
200
+
174
201
  // ============================================================
175
202
  // ACTIONS
176
203
  // ============================================================
@@ -189,11 +216,11 @@ const marketAnalysisAction: Action = {
189
216
  examples: [
190
217
  [
191
218
  {
192
- user: "{{user1}}",
219
+ name: "{{user1}}",
193
220
  content: { text: "What do you think about ETH right now?" },
194
221
  } as ActionExample,
195
222
  {
196
- user: "{{agentName}}",
223
+ name: "{{agentName}}",
197
224
  content: {
198
225
  text: "Let me run my market analysis on ETH...",
199
226
  action: "UNDESIRABLE_MARKET_ANALYSIS",
@@ -207,14 +234,14 @@ const marketAnalysisAction: Action = {
207
234
  handler: async (
208
235
  runtime: IAgentRuntime,
209
236
  message: Memory,
210
- _state: State | undefined,
211
- _options: Record<string, unknown> | undefined,
237
+ _state?: State,
238
+ _options?: Record<string, unknown>,
212
239
  callback?: HandlerCallback
213
- ) => {
240
+ ): Promise<ActionResult | undefined> => {
214
241
  const workspace = getWorkspace(runtime);
215
242
  if (!workspace) {
216
- if (callback) callback({ text: "No soul workspace loaded. Set UNDESIRABLES_WORKSPACE in your character.json settings." });
217
- return false;
243
+ if (callback) await callback({ text: "No soul workspace loaded. Set UNDESIRABLES_WORKSPACE in your character.json settings." });
244
+ return { success: false, error: "No soul workspace loaded" };
218
245
  }
219
246
 
220
247
  const skill = workspace.skills["market_analysis"] || "";
@@ -225,20 +252,7 @@ const marketAnalysisAction: Action = {
225
252
  "Provide a detailed market analysis with conviction score, risk assessment, and actionable levels."
226
253
  );
227
254
 
228
- // Route through LLM generation instead of leaking raw prompt
229
- try {
230
- const { generateText, ModelClass } = await import("@elizaos/core");
231
- const responseText = await generateText({
232
- runtime,
233
- context,
234
- modelClass: ModelClass.LARGE,
235
- });
236
- if (callback) callback({ text: responseText, action: "UNDESIRABLE_MARKET_ANALYSIS" });
237
- } catch {
238
- // Fallback for environments where generateText isn't available
239
- if (callback) callback({ text: `[Market Analysis]\n\n${context}` });
240
- }
241
- return true;
255
+ return generateResponse(runtime, context, callback, "UNDESIRABLE_MARKET_ANALYSIS");
242
256
  },
243
257
  };
244
258
 
@@ -256,13 +270,11 @@ const businessPilotAction: Action = {
256
270
  examples: [
257
271
  [
258
272
  {
259
- user: "{{user1}}",
260
- content: {
261
- text: "I run a barbershop. Help me set up phone answering.",
262
- },
273
+ name: "{{user1}}",
274
+ content: { text: "I run a barbershop. Help me set up phone answering." },
263
275
  } as ActionExample,
264
276
  {
265
- user: "{{agentName}}",
277
+ name: "{{agentName}}",
266
278
  content: {
267
279
  text: "Loading Business Pilot skill for your barbershop...",
268
280
  action: "UNDESIRABLE_BUSINESS_PILOT",
@@ -277,14 +289,14 @@ const businessPilotAction: Action = {
277
289
  handler: async (
278
290
  runtime: IAgentRuntime,
279
291
  message: Memory,
280
- _state: State | undefined,
281
- _options: Record<string, unknown> | undefined,
292
+ _state?: State,
293
+ _options?: Record<string, unknown>,
282
294
  callback?: HandlerCallback
283
- ) => {
295
+ ): Promise<ActionResult | undefined> => {
284
296
  const workspace = getWorkspace(runtime);
285
297
  if (!workspace) {
286
- if (callback) callback({ text: "No soul workspace loaded." });
287
- return false;
298
+ if (callback) await callback({ text: "No soul workspace loaded." });
299
+ return { success: false, error: "No soul workspace loaded" };
288
300
  }
289
301
 
290
302
  const skill = workspace.skills["business_pilot"] || "";
@@ -295,14 +307,7 @@ const businessPilotAction: Action = {
295
307
  "Recommend the top 3-5 modules they should set up first with exact steps."
296
308
  );
297
309
 
298
- try {
299
- const { generateText, ModelClass } = await import("@elizaos/core");
300
- const responseText = await generateText({ runtime, context, modelClass: ModelClass.LARGE });
301
- if (callback) callback({ text: responseText, action: "UNDESIRABLE_BUSINESS_PILOT" });
302
- } catch {
303
- if (callback) callback({ text: `[Business Pilot]\n\n${context}` });
304
- }
305
- return true;
310
+ return generateResponse(runtime, context, callback, "UNDESIRABLE_BUSINESS_PILOT");
306
311
  },
307
312
  };
308
313
 
@@ -320,11 +325,11 @@ const memeMachineAction: Action = {
320
325
  examples: [
321
326
  [
322
327
  {
323
- user: "{{user1}}",
328
+ name: "{{user1}}",
324
329
  content: { text: "Create some memes for my barbershop" },
325
330
  } as ActionExample,
326
331
  {
327
- user: "{{agentName}}",
332
+ name: "{{agentName}}",
328
333
  content: {
329
334
  text: "Firing up the Meme Machine for barbershop content...",
330
335
  action: "UNDESIRABLE_MEME_MACHINE",
@@ -339,14 +344,14 @@ const memeMachineAction: Action = {
339
344
  handler: async (
340
345
  runtime: IAgentRuntime,
341
346
  message: Memory,
342
- _state: State | undefined,
343
- _options: Record<string, unknown> | undefined,
347
+ _state?: State,
348
+ _options?: Record<string, unknown>,
344
349
  callback?: HandlerCallback
345
- ) => {
350
+ ): Promise<ActionResult | undefined> => {
346
351
  const workspace = getWorkspace(runtime);
347
352
  if (!workspace) {
348
- if (callback) callback({ text: "No soul workspace loaded." });
349
- return false;
353
+ if (callback) await callback({ text: "No soul workspace loaded." });
354
+ return { success: false, error: "No soul workspace loaded" };
350
355
  }
351
356
 
352
357
  const skill = workspace.skills["meme_machine"] || "";
@@ -357,14 +362,7 @@ const memeMachineAction: Action = {
357
362
  "Create 3 meme concepts with template, text, caption, and export size."
358
363
  );
359
364
 
360
- try {
361
- const { generateText, ModelClass } = await import("@elizaos/core");
362
- const responseText = await generateText({ runtime, context, modelClass: ModelClass.LARGE });
363
- if (callback) callback({ text: responseText, action: "UNDESIRABLE_MEME_MACHINE" });
364
- } catch {
365
- if (callback) callback({ text: `[Meme Machine]\n\n${context}` });
366
- }
367
- return true;
365
+ return generateResponse(runtime, context, callback, "UNDESIRABLE_MEME_MACHINE");
368
366
  },
369
367
  };
370
368
 
@@ -384,11 +382,11 @@ const loadSkillAction: Action = {
384
382
  examples: [
385
383
  [
386
384
  {
387
- user: "{{user1}}",
385
+ name: "{{user1}}",
388
386
  content: { text: "Check my portfolio" },
389
387
  } as ActionExample,
390
388
  {
391
- user: "{{agentName}}",
389
+ name: "{{agentName}}",
392
390
  content: {
393
391
  text: "Loading portfolio check skill...",
394
392
  action: "UNDESIRABLE_LOAD_SKILL",
@@ -402,14 +400,14 @@ const loadSkillAction: Action = {
402
400
  handler: async (
403
401
  runtime: IAgentRuntime,
404
402
  message: Memory,
405
- _state: State | undefined,
406
- _options: Record<string, unknown> | undefined,
403
+ _state?: State,
404
+ _options?: Record<string, unknown>,
407
405
  callback?: HandlerCallback
408
- ) => {
406
+ ): Promise<ActionResult | undefined> => {
409
407
  const workspace = getWorkspace(runtime);
410
408
  if (!workspace) {
411
- if (callback) callback({ text: "No soul workspace loaded." });
412
- return false;
409
+ if (callback) await callback({ text: "No soul workspace loaded." });
410
+ return { success: false, error: "No soul workspace loaded" };
413
411
  }
414
412
 
415
413
  const text = message.content.text?.toLowerCase() || "";
@@ -418,7 +416,6 @@ const loadSkillAction: Action = {
418
416
 
419
417
  // All 23 unique skills mapped with trigger words
420
418
  const skillMatches: Record<string, string[]> = {
421
- // --- 10 Universal Skills ---
422
419
  check_portfolio: ["portfolio", "balance", "holdings", "how am i doing"],
423
420
  content_creation: ["tweet", "write", "promote", "content", "thread"],
424
421
  conviction_score: ["conviction", "confidence", "how sure"],
@@ -426,27 +423,21 @@ const loadSkillAction: Action = {
426
423
  music_generation: ["music", "song", "beat", "audio"],
427
424
  prediction_log: ["predict", "forecast", "call"],
428
425
  video_production: ["video", "promo", "cinematic", "render video", "edit video"],
429
- // --- Yield Optimizer Skills ---
430
426
  farm_yield: ["farm", "yield farming", "liquidity", "lp", "best yield"],
431
427
  compound_strategy: ["compound", "auto-compound", "compounding", "apy", "harvest"],
432
428
  risk_assessment: ["risk", "downside", "worst case", "is this safe"],
433
- // --- Degen Ape Skills ---
434
429
  snipe_launch: ["snipe", "new launch", "token launching", "just launched"],
435
430
  memecoin_scanner: ["memecoin", "find me a gem", "degen scan", "what memecoins"],
436
431
  ape_checklist: ["should i ape", "ape check", "is this a good ape"],
437
- // --- Smart Money Mirror Skills ---
438
432
  whale_tracker: ["whale", "smart money", "whale watch", "what are whales buying"],
439
433
  copy_trade: ["copy trade", "mirror this", "follow this wallet"],
440
434
  position_sizing: ["position size", "how much should i buy", "how big"],
441
- // --- Volatility Hunter Skills ---
442
435
  volatility_scan: ["volatile", "volatility", "what's moving", "find volatile"],
443
436
  liquidation_watch: ["liquidation", "liquidation levels", "longs", "shorts"],
444
437
  mev_detect: ["mev", "sandwich", "front-running", "front run"],
445
- // --- Structured Trader Skills ---
446
438
  entry_signal: ["entry", "should i buy", "good time to buy", "buy signal"],
447
439
  exit_strategy: ["exit", "sell", "take profit", "stop loss", "when should i sell"],
448
440
  rebalance_check: ["rebalance", "allocation", "portfolio drift"],
449
- // --- Balanced Portfolio Skills ---
450
441
  diversify_check: ["diversify", "diversification", "spread", "concentrate"],
451
442
  sector_rotation: ["sector", "rotation", "rotate", "cycle"],
452
443
  };
@@ -464,11 +455,11 @@ const loadSkillAction: Action = {
464
455
  .filter((k) => k !== "_index")
465
456
  .join(", ");
466
457
  if (callback) {
467
- callback({
458
+ await callback({
468
459
  text: `Available skills: ${available}. Tell me what you need and I'll load the right one.`,
469
460
  });
470
461
  }
471
- return true;
462
+ return { success: true, text: `Listed ${available.split(", ").length} available skills` };
472
463
  }
473
464
 
474
465
  const context = buildSkillContext(
@@ -478,14 +469,7 @@ const loadSkillAction: Action = {
478
469
  `Execute the ${matchedName.replace(/_/g, " ")} skill thoroughly.`
479
470
  );
480
471
 
481
- try {
482
- const { generateText, ModelClass } = await import("@elizaos/core");
483
- const responseText = await generateText({ runtime, context, modelClass: ModelClass.LARGE });
484
- if (callback) callback({ text: responseText, action: "UNDESIRABLE_LOAD_SKILL" });
485
- } catch {
486
- if (callback) callback({ text: `[${matchedName}]\n\n${context}` });
487
- }
488
- return true;
472
+ return generateResponse(runtime, context, callback, "UNDESIRABLE_LOAD_SKILL");
489
473
  },
490
474
  };
491
475
 
@@ -494,7 +478,9 @@ const loadSkillAction: Action = {
494
478
  // ============================================================
495
479
 
496
480
  const soulProvider: Provider = {
497
- get: async (runtime: IAgentRuntime, _message: Memory) => {
481
+ name: "undesirables-soul",
482
+ description: "Injects Undesirable soul personality context into every agent response",
483
+ get: async (runtime: IAgentRuntime, _message: Memory, _state: State): Promise<ProviderResult> => {
498
484
  // Load workspace if not already loaded for this agent
499
485
  if (!workspaces.has(runtime.agentId)) {
500
486
  const workspacePath =
@@ -513,10 +499,13 @@ const soulProvider: Provider = {
513
499
 
514
500
  const workspace = getWorkspace(runtime);
515
501
  if (!workspace) {
516
- return "No Undesirable soul workspace loaded. Set UNDESIRABLES_WORKSPACE env var to your downloaded workspace path.";
502
+ return {
503
+ text: "No Undesirable soul workspace loaded. Set UNDESIRABLES_WORKSPACE env var to your downloaded workspace path.",
504
+ };
517
505
  }
518
506
 
519
- return `[SOUL CONTEXT]
507
+ return {
508
+ text: `[SOUL CONTEXT]
520
509
  Name: ${workspace.meta.name || "Unknown Undesirable"}
521
510
  Archetype: ${workspace.meta.archetype || "Unknown"}
522
511
  Strategy: ${workspace.meta.strategy || "Unknown"}
@@ -529,7 +518,14 @@ Personality: ${(workspace.meta.adjectives || []).join(", ")}
529
518
 
530
519
  The agent should respond using the personality and style defined in its soul.
531
520
  Collection: The Undesirables — 4,444 autonomous AI agents on Ethereum.
532
- Website: https://the-undesirables.com`;
521
+ Website: https://the-undesirables.com`,
522
+ values: {
523
+ soulName: workspace.meta.name || "Unknown",
524
+ archetype: workspace.meta.archetype || "Unknown",
525
+ strategy: workspace.meta.strategy || "Unknown",
526
+ tokenId: workspace.meta.token_id || "?",
527
+ },
528
+ };
533
529
  },
534
530
  };
535
531