@elizaos/plugin-suno 1.0.5 → 1.0.6-alpha.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.
package/biome.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
3
+ "organizeImports": {
4
+ "enabled": false
5
+ },
6
+ "linter": {
7
+ "enabled": true,
8
+ "rules": {
9
+ "recommended": true,
10
+ "correctness": {
11
+ "noUnusedVariables": "error"
12
+ },
13
+ "suspicious": {
14
+ "noExplicitAny": "error"
15
+ },
16
+ "style": {
17
+ "useConst": "error",
18
+ "useImportType": "off"
19
+ }
20
+ }
21
+ },
22
+ "formatter": {
23
+ "enabled": true,
24
+ "indentStyle": "space",
25
+ "indentWidth": 4,
26
+ "lineWidth": 100
27
+ },
28
+ "javascript": {
29
+ "formatter": {
30
+ "quoteStyle": "single",
31
+ "trailingCommas": "es5"
32
+ }
33
+ },
34
+ "files": {
35
+ "ignore": [
36
+ "dist/**/*",
37
+ "extra/**/*",
38
+ "node_modules/**/*"
39
+ ]
40
+ }
41
+ }
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/providers/suno.ts
2
- var SunoApiClient = class _SunoApiClient {
2
+ var SunoProvider = class _SunoProvider {
3
3
  apiKey;
4
4
  baseUrl;
5
5
  static async get(runtime, _message, _state) {
@@ -7,16 +7,19 @@ var SunoApiClient = class _SunoApiClient {
7
7
  if (!apiKey) {
8
8
  throw new Error("SUNO_API_KEY is required");
9
9
  }
10
- return new _SunoApiClient({ apiKey });
10
+ return new _SunoProvider({ apiKey });
11
11
  }
12
12
  constructor(config) {
13
13
  this.apiKey = config.apiKey;
14
14
  this.baseUrl = config.baseUrl || "https://api.suno.ai/v1";
15
15
  }
16
+ async get(_runtime, _message, _state) {
17
+ return { status: "ready" };
18
+ }
16
19
  async request(endpoint, options = {}) {
17
20
  const url = `${this.baseUrl}${endpoint}`;
18
21
  const headers = {
19
- Authorization: `Bearer ${this.apiKey}`,
22
+ "Authorization": `Bearer ${this.apiKey}`,
20
23
  "Content-Type": "application/json",
21
24
  ...options.headers
22
25
  };
@@ -30,21 +33,6 @@ var SunoApiClient = class _SunoApiClient {
30
33
  return response.json();
31
34
  }
32
35
  };
33
- var SunoProvider = {
34
- name: "suno",
35
- description: "Provides Suno AI music generation context and status",
36
- get: async (runtime, _message, _state) => {
37
- const apiKey = runtime.getSetting("SUNO_API_KEY");
38
- return {
39
- values: {
40
- apiKeyConfigured: !!apiKey,
41
- status: apiKey ? "ready" : "not_configured",
42
- serviceUrl: "https://api.suno.ai/v1"
43
- },
44
- text: `Suno AI music generation service is ${apiKey ? "ready" : "not configured"}. API key ${apiKey ? "is set" : "is missing"}.`
45
- };
46
- }
47
- };
48
36
 
49
37
  // src/actions/generate.ts
50
38
  var generateMusic = {
@@ -63,7 +51,7 @@ var generateMusic = {
63
51
  },
64
52
  handler: async (runtime, message, state, _options, callback) => {
65
53
  try {
66
- const provider = await SunoApiClient.get(runtime, message, state);
54
+ const provider = await SunoProvider.get(runtime, message, state);
67
55
  const content = message.content;
68
56
  if (!content.prompt) {
69
57
  throw new Error("Missing required parameter: prompt");
@@ -89,7 +77,7 @@ var generateMusic = {
89
77
  } catch (error) {
90
78
  if (callback) {
91
79
  callback({
92
- text: `Failed to generate music: ${error.message}`,
80
+ text: `Failed to extend audio: ${error.message}`,
93
81
  error
94
82
  });
95
83
  }
@@ -99,7 +87,7 @@ var generateMusic = {
99
87
  examples: [
100
88
  [
101
89
  {
102
- name: "user1",
90
+ user: "{{user1}}",
103
91
  content: {
104
92
  text: "Create a happy and energetic song",
105
93
  prompt: "A cheerful and energetic melody with upbeat rhythm",
@@ -108,14 +96,14 @@ var generateMusic = {
108
96
  }
109
97
  },
110
98
  {
111
- name: "agent",
99
+ user: "{{agent}}",
112
100
  content: {
113
101
  text: "I'll generate a happy and energetic song for you.",
114
102
  action: "generate-music"
115
103
  }
116
104
  },
117
105
  {
118
- name: "agent",
106
+ user: "{{agent}}",
119
107
  content: {
120
108
  text: "Successfully generated your upbeat and energetic song."
121
109
  }
@@ -123,7 +111,7 @@ var generateMusic = {
123
111
  ],
124
112
  [
125
113
  {
126
- name: "user1",
114
+ user: "{{user1}}",
127
115
  content: {
128
116
  text: "Generate a relaxing ambient track",
129
117
  prompt: "A peaceful ambient soundscape with gentle waves and soft pads",
@@ -133,14 +121,14 @@ var generateMusic = {
133
121
  }
134
122
  },
135
123
  {
136
- name: "agent",
124
+ user: "{{agent}}",
137
125
  content: {
138
126
  text: "I'll create a calming ambient piece for you.",
139
127
  action: "generate-music"
140
128
  }
141
129
  },
142
130
  {
143
- name: "agent",
131
+ user: "{{agent}}",
144
132
  content: {
145
133
  text: "Successfully generated your relaxing ambient soundscape."
146
134
  }
@@ -148,7 +136,7 @@ var generateMusic = {
148
136
  ],
149
137
  [
150
138
  {
151
- name: "user1",
139
+ user: "{{user1}}",
152
140
  content: {
153
141
  text: "Make a short jingle for my podcast",
154
142
  prompt: "A catchy and professional podcast intro jingle",
@@ -158,14 +146,14 @@ var generateMusic = {
158
146
  }
159
147
  },
160
148
  {
161
- name: "agent",
149
+ user: "{{agent}}",
162
150
  content: {
163
151
  text: "I'll generate a podcast jingle for you.",
164
152
  action: "generate-music"
165
153
  }
166
154
  },
167
155
  {
168
- name: "agent",
156
+ user: "{{agent}}",
169
157
  content: {
170
158
  text: "Successfully generated your podcast jingle."
171
159
  }
@@ -184,16 +172,16 @@ var customGenerateMusic = {
184
172
  "GENERATE_CUSTOM_AUDIO",
185
173
  "MAKE_CUSTOM_MUSIC",
186
174
  "COMPOSE_CUSTOM_MUSIC",
187
- "CUSTOM_MUSIC_GENERATION",
188
- "ADVANCED_MUSIC_CREATION",
189
- "PERSONALIZED_MUSIC_GENERATION"
175
+ "COMPOSE_MUSIC",
176
+ "CREATE_MUSIC",
177
+ "GENERATE_MUSIC"
190
178
  ],
191
179
  validate: async (runtime, _message) => {
192
180
  return !!runtime.getSetting("SUNO_API_KEY");
193
181
  },
194
182
  handler: async (runtime, message, state, _options, callback) => {
195
183
  try {
196
- const provider = await SunoApiClient.get(runtime, message, state);
184
+ const provider = await SunoProvider.get(runtime, message, state);
197
185
  const content = message.content;
198
186
  if (!content.prompt) {
199
187
  throw new Error("Missing required parameter: prompt");
@@ -234,7 +222,7 @@ var customGenerateMusic = {
234
222
  examples: [
235
223
  [
236
224
  {
237
- name: "user1",
225
+ user: "{{user1}}",
238
226
  content: {
239
227
  text: "Create an upbeat electronic dance track with heavy bass",
240
228
  prompt: "An upbeat electronic dance track with heavy bass and energetic synths",
@@ -244,14 +232,14 @@ var customGenerateMusic = {
244
232
  }
245
233
  },
246
234
  {
247
- name: "agent",
235
+ user: "{{agent}}",
248
236
  content: {
249
237
  text: "I'll generate an energetic EDM track for you.",
250
238
  action: "custom-generate-music"
251
239
  }
252
240
  },
253
241
  {
254
- name: "agent",
242
+ user: "{{agent}}",
255
243
  content: {
256
244
  text: "Successfully generated your EDM track with heavy bass and synths."
257
245
  }
@@ -259,7 +247,7 @@ var customGenerateMusic = {
259
247
  ],
260
248
  [
261
249
  {
262
- name: "user1",
250
+ user: "{{user1}}",
263
251
  content: {
264
252
  text: "Generate a calm piano melody in C major",
265
253
  prompt: "A gentle, flowing piano melody with soft dynamics",
@@ -271,14 +259,14 @@ var customGenerateMusic = {
271
259
  }
272
260
  },
273
261
  {
274
- name: "agent",
262
+ user: "{{agent}}",
275
263
  content: {
276
264
  text: "I'll create a calming piano piece in C major for you.",
277
265
  action: "custom-generate-music"
278
266
  }
279
267
  },
280
268
  {
281
- name: "agent",
269
+ user: "{{agent}}",
282
270
  content: {
283
271
  text: "Successfully generated your peaceful piano melody in C major."
284
272
  }
@@ -286,7 +274,7 @@ var customGenerateMusic = {
286
274
  ],
287
275
  [
288
276
  {
289
- name: "user1",
277
+ user: "{{user1}}",
290
278
  content: {
291
279
  text: "Make a rock song with guitar solos",
292
280
  prompt: "A rock song with powerful electric guitar solos and driving drums",
@@ -297,14 +285,14 @@ var customGenerateMusic = {
297
285
  }
298
286
  },
299
287
  {
300
- name: "agent",
288
+ user: "{{agent}}",
301
289
  content: {
302
290
  text: "I'll generate a rock track with guitar solos for you.",
303
291
  action: "custom-generate-music"
304
292
  }
305
293
  },
306
294
  {
307
- name: "agent",
295
+ user: "{{agent}}",
308
296
  content: {
309
297
  text: "Successfully generated your rock song with guitar solos."
310
298
  }
@@ -319,7 +307,6 @@ var extendAudio = {
319
307
  name: "extend-audio",
320
308
  description: "Extend the duration of an existing audio generation",
321
309
  similes: [
322
- "EXTEND_AUDIO",
323
310
  "LENGTHEN_AUDIO",
324
311
  "PROLONG_AUDIO",
325
312
  "INCREASE_DURATION",
@@ -330,7 +317,7 @@ var extendAudio = {
330
317
  },
331
318
  handler: async (runtime, message, state, _options, callback) => {
332
319
  try {
333
- const provider = await SunoApiClient.get(runtime, message, state);
320
+ const provider = await SunoProvider.get(runtime, message, state);
334
321
  const content = message.content;
335
322
  if (!content.audio_id || !content.duration) {
336
323
  throw new Error("Missing required parameters: audio_id and duration");
@@ -362,7 +349,7 @@ var extendAudio = {
362
349
  examples: [
363
350
  [
364
351
  {
365
- name: "user1",
352
+ user: "{{user1}}",
366
353
  content: {
367
354
  text: "Make this song longer by 30 seconds",
368
355
  audio_id: "abc123",
@@ -370,14 +357,14 @@ var extendAudio = {
370
357
  }
371
358
  },
372
359
  {
373
- name: "agent",
360
+ user: "{{agent}}",
374
361
  content: {
375
362
  text: "I'll extend your song by 30 seconds.",
376
363
  action: "extend-audio"
377
364
  }
378
365
  },
379
366
  {
380
- name: "agent",
367
+ user: "{{agent}}",
381
368
  content: {
382
369
  text: "Successfully extended your song by 30 seconds."
383
370
  }
@@ -385,7 +372,7 @@ var extendAudio = {
385
372
  ],
386
373
  [
387
374
  {
388
- name: "user1",
375
+ user: "{{user1}}",
389
376
  content: {
390
377
  text: "Double the length of this track",
391
378
  audio_id: "xyz789",
@@ -393,14 +380,14 @@ var extendAudio = {
393
380
  }
394
381
  },
395
382
  {
396
- name: "agent",
383
+ user: "{{agent}}",
397
384
  content: {
398
385
  text: "I'll double the duration of your track.",
399
386
  action: "extend-audio"
400
387
  }
401
388
  },
402
389
  {
403
- name: "agent",
390
+ user: "{{agent}}",
404
391
  content: {
405
392
  text: "Successfully doubled the length of your track to 60 seconds."
406
393
  }
@@ -408,7 +395,7 @@ var extendAudio = {
408
395
  ],
409
396
  [
410
397
  {
411
- name: "user1",
398
+ user: "{{user1}}",
412
399
  content: {
413
400
  text: "Add 15 more seconds to this melody",
414
401
  audio_id: "def456",
@@ -416,14 +403,14 @@ var extendAudio = {
416
403
  }
417
404
  },
418
405
  {
419
- name: "agent",
406
+ user: "{{agent}}",
420
407
  content: {
421
408
  text: "I'll add 15 seconds to your melody.",
422
409
  action: "extend-audio"
423
410
  }
424
411
  },
425
412
  {
426
- name: "agent",
413
+ user: "{{agent}}",
427
414
  content: {
428
415
  text: "Successfully added 15 seconds to your melody."
429
416
  }
@@ -442,7 +429,12 @@ var sunoPlugin = {
442
429
  providers: [SunoProvider]
443
430
  };
444
431
  var index_default = sunoPlugin;
445
-
446
- export { customGenerate_default as CustomGenerateMusic, extend_default as ExtendAudio, generate_default as GenerateMusic, SunoApiClient, SunoProvider, index_default as default, sunoPlugin };
447
- //# sourceMappingURL=index.js.map
432
+ export {
433
+ customGenerate_default as CustomGenerateMusic,
434
+ extend_default as ExtendAudio,
435
+ generate_default as GenerateMusic,
436
+ SunoProvider,
437
+ index_default as default,
438
+ sunoPlugin
439
+ };
448
440
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/providers/suno.ts","../src/actions/generate.ts","../src/actions/customGenerate.ts","../src/actions/extend.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { IAgentRuntime, Memory, State, Provider } from '@elizaos/core';\n\nexport interface SunoConfig {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport class SunoApiClient {\n private apiKey: string;\n private baseUrl: string;\n\n static async get(\n runtime: IAgentRuntime,\n _message: Memory,\n _state?: State\n ): Promise<SunoApiClient> {\n const apiKey = runtime.getSetting('SUNO_API_KEY');\n if (!apiKey) {\n throw new Error('SUNO_API_KEY is required');\n }\n return new SunoApiClient({ apiKey });\n }\n\n constructor(config: SunoConfig) {\n this.apiKey = config.apiKey;\n this.baseUrl = config.baseUrl || 'https://api.suno.ai/v1';\n }\n\n async request(endpoint: string, options: RequestInit = {}) {\n const url = `${this.baseUrl}${endpoint}`;\n const headers = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n ...options.headers,\n };\n\n const response = await fetch(url, {\n ...options,\n headers,\n });\n\n if (!response.ok) {\n throw new Error(`Suno API error: ${response.statusText}`);\n }\n\n return response.json();\n }\n}\n\nexport const SunoProvider: Provider = {\n name: 'suno',\n description: 'Provides Suno AI music generation context and status',\n get: async (runtime: IAgentRuntime, _message: Memory, _state: State) => {\n const apiKey = runtime.getSetting('SUNO_API_KEY');\n return {\n values: {\n apiKeyConfigured: !!apiKey,\n status: apiKey ? 'ready' : 'not_configured',\n serviceUrl: 'https://api.suno.ai/v1',\n },\n text: `Suno AI music generation service is ${apiKey ? 'ready' : 'not configured'}. API key ${apiKey ? 'is set' : 'is missing'}.`,\n };\n },\n};\n\nexport interface GenerateParams {\n prompt: string;\n duration?: number;\n temperature?: number;\n topK?: number;\n topP?: number;\n classifier_free_guidance?: number;\n}\n\nexport interface CustomGenerateParams extends GenerateParams {\n reference_audio?: string;\n style?: string;\n bpm?: number;\n key?: string;\n mode?: string;\n}\n\nexport interface ExtendParams {\n audio_id: string;\n duration: number;\n}\n\nexport interface GenerationResponse {\n id: string;\n status: 'pending' | 'processing' | 'completed' | 'failed';\n audio_url?: string;\n error?: string;\n}\n","import type { Action, IAgentRuntime, Memory, State, HandlerCallback } from '@elizaos/core';\nimport { SunoApiClient } from '../providers/suno';\nimport type { GenerateParams } from '../types';\n\nconst generateMusic: Action = {\n name: 'generate-music',\n description: 'Generate music using Suno AI',\n similes: [\n 'CREATE_MUSIC',\n 'MAKE_MUSIC',\n 'COMPOSE_MUSIC',\n 'GENERATE_AUDIO',\n 'CREATE_SONG',\n 'MAKE_SONG',\n ],\n\n validate: async (runtime: IAgentRuntime, _message: Memory) => {\n return !!runtime.getSetting('SUNO_API_KEY');\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: { [key: string]: unknown },\n callback?: HandlerCallback\n ): Promise<boolean> => {\n try {\n const provider = await SunoApiClient.get(runtime, message, state);\n const content = message.content as unknown as GenerateParams;\n\n if (!content.prompt) {\n throw new Error('Missing required parameter: prompt');\n }\n\n const response = await provider.request('/generate', {\n method: 'POST',\n body: JSON.stringify({\n prompt: content.prompt,\n duration: content.duration || 30,\n temperature: content.temperature || 1.0,\n top_k: content.topK || 250,\n top_p: content.topP || 0.95,\n classifier_free_guidance: content.classifier_free_guidance || 3.0,\n }),\n });\n\n if (callback) {\n callback({\n text: 'Successfully generated music based on your prompt',\n content: response,\n });\n }\n\n return true;\n } catch (error) {\n if (callback) {\n callback({\n text: `Failed to generate music: ${(error as Error).message}`,\n error: error,\n });\n }\n return false;\n }\n },\n\n examples: [\n [\n {\n name: 'user1',\n content: {\n text: 'Create a happy and energetic song',\n prompt: 'A cheerful and energetic melody with upbeat rhythm',\n duration: 30,\n temperature: 1.0,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll generate a happy and energetic song for you.\",\n action: 'generate-music',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully generated your upbeat and energetic song.',\n },\n },\n ],\n [\n {\n name: 'user1',\n content: {\n text: 'Generate a relaxing ambient track',\n prompt: 'A peaceful ambient soundscape with gentle waves and soft pads',\n duration: 45,\n temperature: 0.8,\n classifier_free_guidance: 4.0,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll create a calming ambient piece for you.\",\n action: 'generate-music',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully generated your relaxing ambient soundscape.',\n },\n },\n ],\n [\n {\n name: 'user1',\n content: {\n text: 'Make a short jingle for my podcast',\n prompt: 'A catchy and professional podcast intro jingle',\n duration: 15,\n temperature: 1.2,\n top_k: 300,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll generate a podcast jingle for you.\",\n action: 'generate-music',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully generated your podcast jingle.',\n },\n },\n ],\n ],\n};\n\nexport default generateMusic;\n","import type { Action, IAgentRuntime, Memory, State, HandlerCallback } from '@elizaos/core';\nimport { SunoApiClient } from '../providers/suno';\nimport type { CustomGenerateParams } from '../types';\n\nconst customGenerateMusic: Action = {\n name: 'custom-generate-music',\n description: 'Generate music with custom parameters using Suno AI',\n similes: [\n 'CREATE_CUSTOM_MUSIC',\n 'GENERATE_CUSTOM_AUDIO',\n 'MAKE_CUSTOM_MUSIC',\n 'COMPOSE_CUSTOM_MUSIC',\n 'CUSTOM_MUSIC_GENERATION',\n 'ADVANCED_MUSIC_CREATION',\n 'PERSONALIZED_MUSIC_GENERATION',\n ],\n\n validate: async (runtime: IAgentRuntime, _message: Memory) => {\n return !!runtime.getSetting('SUNO_API_KEY');\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: { [key: string]: unknown },\n callback?: HandlerCallback\n ): Promise<boolean> => {\n try {\n const provider = await SunoApiClient.get(runtime, message, state);\n const content = message.content as unknown as CustomGenerateParams;\n\n if (!content.prompt) {\n throw new Error('Missing required parameter: prompt');\n }\n\n const response = await provider.request('/custom-generate', {\n method: 'POST',\n body: JSON.stringify({\n prompt: content.prompt,\n duration: content.duration || 30,\n temperature: content.temperature || 1.0,\n top_k: content.topK || 250,\n top_p: content.topP || 0.95,\n classifier_free_guidance: content.classifier_free_guidance || 3.0,\n reference_audio: content.reference_audio,\n style: content.style,\n bpm: content.bpm,\n key: content.key,\n mode: content.mode,\n }),\n });\n\n if (callback) {\n callback({\n text: 'Successfully generated custom music',\n content: response,\n });\n }\n\n return true;\n } catch (error) {\n if (callback) {\n callback({\n text: `Failed to generate custom music: ${(error as Error).message}`,\n error: error,\n });\n }\n return false;\n }\n },\n\n examples: [\n [\n {\n name: 'user1',\n content: {\n text: 'Create an upbeat electronic dance track with heavy bass',\n prompt: 'An upbeat electronic dance track with heavy bass and energetic synths',\n duration: 60,\n style: 'electronic',\n bpm: 128,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll generate an energetic EDM track for you.\",\n action: 'custom-generate-music',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully generated your EDM track with heavy bass and synths.',\n },\n },\n ],\n [\n {\n name: 'user1',\n content: {\n text: 'Generate a calm piano melody in C major',\n prompt: 'A gentle, flowing piano melody with soft dynamics',\n duration: 45,\n style: 'classical',\n key: 'C',\n mode: 'major',\n temperature: 0.8,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll create a calming piano piece in C major for you.\",\n action: 'custom-generate-music',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully generated your peaceful piano melody in C major.',\n },\n },\n ],\n [\n {\n name: 'user1',\n content: {\n text: 'Make a rock song with guitar solos',\n prompt: 'A rock song with powerful electric guitar solos and driving drums',\n duration: 90,\n style: 'rock',\n bpm: 120,\n classifier_free_guidance: 4.0,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll generate a rock track with guitar solos for you.\",\n action: 'custom-generate-music',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully generated your rock song with guitar solos.',\n },\n },\n ],\n ],\n};\n\nexport default customGenerateMusic;\n","import type { Action, IAgentRuntime, Memory, State, HandlerCallback } from '@elizaos/core';\nimport { SunoApiClient } from '../providers/suno';\nimport type { ExtendParams } from '../types';\n\nconst extendAudio: Action = {\n name: 'extend-audio',\n description: 'Extend the duration of an existing audio generation',\n similes: [\n 'EXTEND_AUDIO',\n 'LENGTHEN_AUDIO',\n 'PROLONG_AUDIO',\n 'INCREASE_DURATION',\n 'MAKE_AUDIO_LONGER',\n ],\n\n validate: async (runtime: IAgentRuntime, _message: Memory) => {\n return !!runtime.getSetting('SUNO_API_KEY');\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: { [key: string]: unknown },\n callback?: HandlerCallback\n ): Promise<boolean> => {\n try {\n const provider = await SunoApiClient.get(runtime, message, state);\n const content = message.content as unknown as ExtendParams;\n\n if (!content.audio_id || !content.duration) {\n throw new Error('Missing required parameters: audio_id and duration');\n }\n\n const response = await provider.request('/extend', {\n method: 'POST',\n body: JSON.stringify({\n audio_id: content.audio_id,\n duration: content.duration,\n }),\n });\n\n if (callback) {\n callback({\n text: `Successfully extended audio ${content.audio_id}`,\n content: response,\n });\n }\n\n return true;\n } catch (error) {\n if (callback) {\n callback({\n text: `Failed to extend audio: ${(error as Error).message}`,\n error: error,\n });\n }\n return false;\n }\n },\n\n examples: [\n [\n {\n name: 'user1',\n content: {\n text: 'Make this song longer by 30 seconds',\n audio_id: 'abc123',\n duration: 30,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll extend your song by 30 seconds.\",\n action: 'extend-audio',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully extended your song by 30 seconds.',\n },\n },\n ],\n [\n {\n name: 'user1',\n content: {\n text: 'Double the length of this track',\n audio_id: 'xyz789',\n duration: 60,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll double the duration of your track.\",\n action: 'extend-audio',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully doubled the length of your track to 60 seconds.',\n },\n },\n ],\n [\n {\n name: 'user1',\n content: {\n text: 'Add 15 more seconds to this melody',\n audio_id: 'def456',\n duration: 15,\n },\n },\n {\n name: 'agent',\n content: {\n text: \"I'll add 15 seconds to your melody.\",\n action: 'extend-audio',\n },\n },\n {\n name: 'agent',\n content: {\n text: 'Successfully added 15 seconds to your melody.',\n },\n },\n ],\n ],\n};\n\nexport default extendAudio;\n","import type { Plugin } from '@elizaos/core';\nimport generateMusic from './actions/generate';\nimport customGenerateMusic from './actions/customGenerate';\nimport extendAudio from './actions/extend';\nimport { SunoProvider, SunoApiClient } from './providers/suno';\n\nexport {\n SunoProvider,\n SunoApiClient,\n generateMusic as GenerateMusic,\n customGenerateMusic as CustomGenerateMusic,\n extendAudio as ExtendAudio,\n};\n\nexport const sunoPlugin: Plugin = {\n name: 'suno',\n description: 'Suno AI Music Generation Plugin for Eliza',\n actions: [generateMusic, customGenerateMusic, extendAudio],\n evaluators: [],\n providers: [SunoProvider],\n};\n\nexport default sunoPlugin;\n"]}
1
+ {"version":3,"sources":["../src/providers/suno.ts","../src/actions/generate.ts","../src/actions/customGenerate.ts","../src/actions/extend.ts","../src/index.ts"],"sourcesContent":["import type { IAgentRuntime, Memory, State } from \"@elizaos/core\"; // Added type keyword\r\nimport type { Provider } from \"@elizaos/core\"; // Added type keyword\r\n\r\nexport interface SunoConfig {\r\n apiKey: string;\r\n baseUrl?: string;\r\n}\r\n\r\nexport class SunoProvider implements Provider {\r\n private apiKey: string;\r\n private baseUrl: string;\r\n\r\n static async get(runtime: IAgentRuntime, _message: Memory, _state?: State): Promise<SunoProvider> {\r\n const apiKey = runtime.getSetting(\"SUNO_API_KEY\");\r\n if (!apiKey) {\r\n throw new Error(\"SUNO_API_KEY is required\");\r\n }\r\n return new SunoProvider({ apiKey });\r\n }\r\n\r\n constructor(config: SunoConfig) {\r\n this.apiKey = config.apiKey;\r\n this.baseUrl = config.baseUrl || 'https://api.suno.ai/v1';\r\n }\r\n\r\n async get(_runtime: IAgentRuntime, _message: Memory, _state?: State): Promise<{ status: string }> {\r\n return { status: 'ready' };\r\n }\r\n\r\n async request(endpoint: string, options: RequestInit = {}) {\r\n const url = `${this.baseUrl}${endpoint}`;\r\n const headers = {\r\n 'Authorization': `Bearer ${this.apiKey}`,\r\n 'Content-Type': 'application/json',\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers,\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(`Suno API error: ${response.statusText}`);\r\n }\r\n\r\n return response.json();\r\n }\r\n}\r\n\r\nexport interface GenerateParams {\r\n prompt: string;\r\n duration?: number;\r\n temperature?: number;\r\n topK?: number;\r\n topP?: number;\r\n classifier_free_guidance?: number;\r\n}\r\n\r\nexport interface CustomGenerateParams extends GenerateParams {\r\n reference_audio?: string;\r\n style?: string;\r\n bpm?: number;\r\n key?: string;\r\n mode?: string;\r\n}\r\n\r\nexport interface ExtendParams {\r\n audio_id: string;\r\n duration: number;\r\n}\r\n\r\nexport interface GenerationResponse {\r\n id: string;\r\n status: 'pending' | 'processing' | 'completed' | 'failed';\r\n audio_url?: string;\r\n error?: string;\r\n}","import type { Action, IAgentRuntime, Memory, State, HandlerCallback } from \"@elizaos/core\";\r\nimport { SunoProvider } from \"../providers/suno\";\r\nimport type { GenerateParams } from \"../types\";\r\n\r\nconst generateMusic: Action = {\r\n name: \"generate-music\",\r\n description: \"Generate music using Suno AI\",\r\n similes: [\r\n \"CREATE_MUSIC\",\r\n \"MAKE_MUSIC\",\r\n \"COMPOSE_MUSIC\",\r\n \"GENERATE_AUDIO\",\r\n \"CREATE_SONG\",\r\n \"MAKE_SONG\"\r\n ],\r\n\r\n validate: async (runtime: IAgentRuntime, _message: Memory) => {\r\n return !!runtime.getSetting(\"SUNO_API_KEY\");\r\n },\r\n\r\n handler: async (\r\n runtime: IAgentRuntime,\r\n message: Memory,\r\n state: State,\r\n _options: { [key: string]: unknown },\r\n callback?: HandlerCallback\r\n ): Promise<boolean> => {\r\n try {\r\n const provider = await SunoProvider.get(runtime, message, state);\r\n const content = message.content as unknown as GenerateParams;\r\n\r\n if (!content.prompt) {\r\n throw new Error(\"Missing required parameter: prompt\");\r\n }\r\n\r\n const response = await provider.request('/generate', {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n prompt: content.prompt,\r\n duration: content.duration || 30,\r\n temperature: content.temperature || 1.0,\r\n top_k: content.topK || 250,\r\n top_p: content.topP || 0.95,\r\n classifier_free_guidance: content.classifier_free_guidance || 3.0\r\n })\r\n });\r\n\r\n if (callback) {\r\n callback({\r\n text: 'Successfully generated music based on your prompt',\r\n content: response\r\n });\r\n }\r\n\r\n return true;\r\n } catch (error) {\r\n if (callback) {\r\n callback({\r\n text: `Failed to extend audio: ${(error as Error).message}`,\r\n error: error\r\n });\r\n }\r\n return false;\r\n }\r\n },\r\n\r\n examples: [\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Create a happy and energetic song\",\r\n prompt: \"A cheerful and energetic melody with upbeat rhythm\",\r\n duration: 30,\r\n temperature: 1.0\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll generate a happy and energetic song for you.\",\r\n action: \"generate-music\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully generated your upbeat and energetic song.\"\r\n }\r\n }\r\n ],\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Generate a relaxing ambient track\",\r\n prompt: \"A peaceful ambient soundscape with gentle waves and soft pads\",\r\n duration: 45,\r\n temperature: 0.8,\r\n classifier_free_guidance: 4.0\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll create a calming ambient piece for you.\",\r\n action: \"generate-music\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully generated your relaxing ambient soundscape.\"\r\n }\r\n }\r\n ],\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Make a short jingle for my podcast\",\r\n prompt: \"A catchy and professional podcast intro jingle\",\r\n duration: 15,\r\n temperature: 1.2,\r\n top_k: 300\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll generate a podcast jingle for you.\",\r\n action: \"generate-music\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully generated your podcast jingle.\"\r\n }\r\n }\r\n ]\r\n ]\r\n};\r\n\r\nexport default generateMusic;","import type { Action, IAgentRuntime, Memory, State, HandlerCallback } from \"@elizaos/core\";\r\nimport { SunoProvider } from \"../providers/suno\";\r\nimport type { CustomGenerateParams } from \"../types\";\r\n\r\nconst customGenerateMusic: Action = {\r\n name: \"custom-generate-music\",\r\n description: \"Generate music with custom parameters using Suno AI\",\r\n similes: [\r\n \"CREATE_CUSTOM_MUSIC\",\r\n \"GENERATE_CUSTOM_AUDIO\",\r\n \"MAKE_CUSTOM_MUSIC\",\r\n \"COMPOSE_CUSTOM_MUSIC\",\r\n \"COMPOSE_MUSIC\",\r\n \"CREATE_MUSIC\",\r\n \"GENERATE_MUSIC\"\r\n\r\n ],\r\n\r\n validate: async (runtime: IAgentRuntime, _message: Memory) => {\r\n return !!runtime.getSetting(\"SUNO_API_KEY\");\r\n },\r\n\r\n handler: async (\r\n runtime: IAgentRuntime,\r\n message: Memory,\r\n state: State,\r\n _options: { [key: string]: unknown },\r\n callback?: HandlerCallback\r\n ): Promise<boolean> => {\r\n try {\r\n const provider = await SunoProvider.get(runtime, message, state);\r\n const content = message.content as unknown as CustomGenerateParams;\r\n\r\n if (!content.prompt) {\r\n throw new Error(\"Missing required parameter: prompt\");\r\n }\r\n\r\n const response = await provider.request('/custom-generate', {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n prompt: content.prompt,\r\n duration: content.duration || 30,\r\n temperature: content.temperature || 1.0,\r\n top_k: content.topK || 250,\r\n top_p: content.topP || 0.95,\r\n classifier_free_guidance: content.classifier_free_guidance || 3.0,\r\n reference_audio: content.reference_audio,\r\n style: content.style,\r\n bpm: content.bpm,\r\n key: content.key,\r\n mode: content.mode\r\n })\r\n });\r\n\r\n if (callback) {\r\n callback({\r\n text: 'Successfully generated custom music',\r\n content: response\r\n });\r\n }\r\n\r\n return true;\r\n } catch (error) {\r\n if (callback) {\r\n callback({\r\n text: `Failed to generate custom music: ${(error as Error).message}`,\r\n error: error\r\n });\r\n }\r\n return false;\r\n }\r\n },\r\n\r\n examples: [\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Create an upbeat electronic dance track with heavy bass\",\r\n prompt: \"An upbeat electronic dance track with heavy bass and energetic synths\",\r\n duration: 60,\r\n style: \"electronic\",\r\n bpm: 128\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll generate an energetic EDM track for you.\",\r\n action: \"custom-generate-music\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully generated your EDM track with heavy bass and synths.\"\r\n }\r\n }\r\n ],\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Generate a calm piano melody in C major\",\r\n prompt: \"A gentle, flowing piano melody with soft dynamics\",\r\n duration: 45,\r\n style: \"classical\",\r\n key: \"C\",\r\n mode: \"major\",\r\n temperature: 0.8\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll create a calming piano piece in C major for you.\",\r\n action: \"custom-generate-music\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully generated your peaceful piano melody in C major.\"\r\n }\r\n }\r\n ],\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Make a rock song with guitar solos\",\r\n prompt: \"A rock song with powerful electric guitar solos and driving drums\",\r\n duration: 90,\r\n style: \"rock\",\r\n bpm: 120,\r\n classifier_free_guidance: 4.0\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll generate a rock track with guitar solos for you.\",\r\n action: \"custom-generate-music\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully generated your rock song with guitar solos.\"\r\n }\r\n }\r\n ]\r\n ]\r\n};\r\n\r\nexport default customGenerateMusic;","import type { Action, IAgentRuntime, Memory, State, HandlerCallback } from \"@elizaos/core\";\r\nimport { SunoProvider } from \"../providers/suno\";\r\nimport type { ExtendParams } from \"../types\";\r\n\r\nconst extendAudio: Action = {\r\n name: \"extend-audio\",\r\n description: \"Extend the duration of an existing audio generation\",\r\n similes: [\r\n \"LENGTHEN_AUDIO\",\r\n \"PROLONG_AUDIO\",\r\n \"INCREASE_DURATION\",\r\n \"MAKE_AUDIO_LONGER\"\r\n ],\r\n\r\n validate: async (runtime: IAgentRuntime, _message: Memory) => {\r\n return !!runtime.getSetting(\"SUNO_API_KEY\");\r\n },\r\n\r\n handler: async (\r\n runtime: IAgentRuntime,\r\n message: Memory,\r\n state: State,\r\n _options: { [key: string]: unknown },\r\n callback?: HandlerCallback\r\n ): Promise<boolean> => {\r\n try {\r\n const provider = await SunoProvider.get(runtime, message, state);\r\n const content = message.content as unknown as ExtendParams;\r\n\r\n if (!content.audio_id || !content.duration) {\r\n throw new Error(\"Missing required parameters: audio_id and duration\");\r\n }\r\n\r\n const response = await provider.request('/extend', {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n audio_id: content.audio_id,\r\n duration: content.duration\r\n })\r\n });\r\n\r\n if (callback) {\r\n callback({\r\n text: `Successfully extended audio ${content.audio_id}`,\r\n content: response\r\n });\r\n }\r\n\r\n return true;\r\n } catch (error) {\r\n if (callback) {\r\n callback({\r\n text: `Failed to extend audio: ${(error as Error).message}`,\r\n error: error\r\n });\r\n }\r\n return false;\r\n }\r\n },\r\n\r\n examples: [\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Make this song longer by 30 seconds\",\r\n audio_id: \"abc123\",\r\n duration: 30\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll extend your song by 30 seconds.\",\r\n action: \"extend-audio\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully extended your song by 30 seconds.\"\r\n }\r\n }\r\n ],\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Double the length of this track\",\r\n audio_id: \"xyz789\",\r\n duration: 60\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll double the duration of your track.\",\r\n action: \"extend-audio\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully doubled the length of your track to 60 seconds.\"\r\n }\r\n }\r\n ],\r\n [\r\n {\r\n user: \"{{user1}}\",\r\n content: {\r\n text: \"Add 15 more seconds to this melody\",\r\n audio_id: \"def456\",\r\n duration: 15\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"I'll add 15 seconds to your melody.\",\r\n action: \"extend-audio\"\r\n }\r\n },\r\n {\r\n user: \"{{agent}}\",\r\n content: {\r\n text: \"Successfully added 15 seconds to your melody.\"\r\n }\r\n }\r\n ]\r\n ]\r\n};\r\n\r\nexport default extendAudio;","import type { Plugin } from \"@elizaos/core\";\r\nimport generateMusic from \"./actions/generate\";\r\nimport customGenerateMusic from \"./actions/customGenerate\";\r\nimport extendAudio from \"./actions/extend\";\r\nimport { SunoProvider } from \"./providers/suno\";\r\n\r\nexport {\r\n SunoProvider,\r\n generateMusic as GenerateMusic,\r\n customGenerateMusic as CustomGenerateMusic,\r\n extendAudio as ExtendAudio\r\n};\r\n\r\nexport const sunoPlugin: Plugin = {\r\n name: \"suno\",\r\n description: \"Suno AI Music Generation Plugin for Eliza\",\r\n actions: [generateMusic, customGenerateMusic, extendAudio],\r\n evaluators: [],\r\n providers: [SunoProvider],\r\n};\r\n\r\nexport default sunoPlugin;"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,74 +1,36 @@
1
1
  {
2
- "name": "@elizaos/plugin-suno",
3
- "version": "1.0.5",
4
- "description": "Suno AI music generation plugin for ElizaOS - Enables AI-powered music creation and audio manipulation",
5
- "type": "module",
6
- "author": "elizaOS Contributors",
7
- "license": "MIT",
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/elizaos/elizaos-plugins"
11
- },
12
- "keywords": [
13
- "elizaos",
14
- "plugin",
15
- "suno",
16
- "ai",
17
- "music",
18
- "audio",
19
- "generation"
20
- ],
21
- "main": "dist/index.js",
22
- "module": "dist/index.js",
23
- "types": "dist/index.d.ts",
24
- "exports": {
25
- "./package.json": "./package.json",
26
- ".": {
27
- "import": {
28
- "@elizaos/source": "./src/index.ts",
29
- "types": "./dist/index.d.ts",
30
- "default": "./dist/index.js"
31
- }
2
+ "name": "@elizaos/plugin-suno",
3
+ "version": "1.0.6-alpha.1",
4
+ "description": "Suno AI Music Generation Plugin for Eliza",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "types": "dist/index.d.ts",
8
+ "scripts": {
9
+ "build": "tsup --format esm --dts",
10
+ "dev": "tsup --format esm --dts --watch",
11
+ "lint": "biome check src/",
12
+ "lint:fix": "biome check --apply src/",
13
+ "format": "biome format src/",
14
+ "format:fix": "biome format --write src/",
15
+ "test": "jest --passWithNoTests"
16
+ },
17
+ "devDependencies": {
18
+ "@biomejs/biome": "1.5.3",
19
+ "@types/jest": "^27.0.0",
20
+ "@types/node": "^16.0.0",
21
+ "jest": "^27.0.0",
22
+ "tsup": "^8.3.5",
23
+ "typescript": "^5.0.0"
24
+ },
25
+ "agentConfig": {
26
+ "pluginType": "elizaos:client:1.0.0",
27
+ "pluginParameters": {
28
+ "apiKey": {
29
+ "type": "string",
30
+ "minLength": 1,
31
+ "description": "Your Suno API key for authentication.",
32
+ "optional": false
33
+ }
34
+ }
32
35
  }
33
- },
34
- "files": [
35
- "dist"
36
- ],
37
- "dependencies": {
38
- "@elizaos/core": "1.0.9",
39
- "zod": "^3.22.4"
40
- },
41
- "devDependencies": {
42
- "@types/node": "^20.0.0",
43
- "tsup": "8.3.5",
44
- "typescript": "^5.7.3",
45
- "prettier": "^3.0.0",
46
- "bun": "^1.2.15",
47
- "@types/bun": "latest"
48
- },
49
- "scripts": {
50
- "build": "tsup",
51
- "dev": "tsup --watch",
52
- "lint": "prettier --write ./src",
53
- "clean": "rm -rf dist .turbo node_modules .turbo-tsconfig.json tsconfig.tsbuildinfo",
54
- "format": "prettier --write ./src",
55
- "format:check": "prettier --check ./src",
56
- "test": "bun test",
57
- "test:watch": "bun test --watch",
58
- "test:coverage": "bun test --coverage"
59
- },
60
- "publishConfig": {
61
- "access": "public"
62
- },
63
- "agentConfig": {
64
- "pluginType": "elizaos:plugin:1.0.0",
65
- "pluginParameters": {
66
- "SUNO_API_KEY": {
67
- "type": "string",
68
- "description": "Suno AI API key for authentication",
69
- "required": true,
70
- "sensitive": true
71
- }
72
- }
73
- }
74
- }
36
+ }