From 82087be1b3655c95abed96919fcec6913804eaf9 Mon Sep 17 00:00:00 2001 From: OpenCode Date: Tue, 14 Jul 2026 16:17:51 +0700 Subject: [PATCH] Fix review issues: lyrics polling, validation, undici fetch, retry, timeout, throttle, payload helper --- suno-server/dist/client.d.ts | 12 +- suno-server/dist/client.d.ts.map | 2 +- suno-server/dist/client.js | 100 +++++++++---- suno-server/dist/client.js.map | 2 +- suno-server/dist/handlers.d.ts.map | 2 +- suno-server/dist/handlers.js | 224 +++++++++++++---------------- suno-server/dist/handlers.js.map | 2 +- suno-server/dist/schemas.d.ts | 132 ++++++++++++++++- suno-server/dist/schemas.d.ts.map | 2 +- suno-server/dist/schemas.js | 46 +++++- suno-server/dist/schemas.js.map | 2 +- suno-server/src/client.ts | 122 +++++++++++----- suno-server/src/handlers.ts | 200 ++++++++++++++++---------- suno-server/src/schemas.ts | 95 ++++++++---- 14 files changed, 628 insertions(+), 315 deletions(-) diff --git a/suno-server/dist/client.d.ts b/suno-server/dist/client.d.ts index ac11721..d6ac073 100644 --- a/suno-server/dist/client.d.ts +++ b/suno-server/dist/client.d.ts @@ -1,5 +1,5 @@ /** - * Suno API HTTP client with rate limiting and polling helpers. + * Suno API HTTP client with rate limiting, proxy support, retries and polling helpers. * * Rate limit: 20 requests per 10 seconds (sunoapi.org). * Proxy support via SUNO_HTTP_PROXY / HTTPS_PROXY / HTTP_PROXY env vars. @@ -28,13 +28,19 @@ export interface SunoTrack { createTime?: string; duration?: number; } +export interface SunoLyricsVariant { + text?: string; + title?: string; + status?: string; + errorMessage?: string; +} export interface SunoTaskData { taskId: string; parentMusicId?: string; param?: string; response?: { taskId?: string; - data?: SunoTrack[]; + data?: SunoTrack[] | SunoLyricsVariant[]; sunoData?: SunoTrack[]; }; status: string; @@ -49,6 +55,8 @@ export declare class SunoClient { private readonly maxRequests; private readonly windowMs; private readonly proxyAgent?; + private readonly requestTimeoutMs; + private readonly maxRetries; private requestTimestamps; constructor(apiKey: string); /** diff --git a/suno-server/dist/client.d.ts.map b/suno-server/dist/client.d.ts.map index 2b93b87..224ef13 100644 --- a/suno-server/dist/client.d.ts.map +++ b/suno-server/dist/client.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,CAAC;IACzE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAYD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAa;IACzC,OAAO,CAAC,iBAAiB,CAAgB;gBAE7B,MAAM,EAAE,MAAM;IAQ1B;;OAEG;YACW,QAAQ;IAkBhB,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAmC9B,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAI3D,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAI3F;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KAChB,GACL,OAAO,CAAC,YAAY,CAAC;CA2BzB"} \ No newline at end of file +{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/suno-server/dist/client.js b/suno-server/dist/client.js index f5fc585..3283c5e 100644 --- a/suno-server/dist/client.js +++ b/suno-server/dist/client.js @@ -1,6 +1,6 @@ "use strict"; /** - * Suno API HTTP client with rate limiting and polling helpers. + * Suno API HTTP client with rate limiting, proxy support, retries and polling helpers. * * Rate limit: 20 requests per 10 seconds (sunoapi.org). * Proxy support via SUNO_HTTP_PROXY / HTTPS_PROXY / HTTP_PROXY env vars. @@ -15,12 +15,24 @@ function getProxyUrl() { process.env.HTTP_PROXY || process.env.http_proxy); } +function isRetryableError(error) { + if (error instanceof Error) { + const msg = error.message.toLowerCase(); + return msg.includes('timeout') || msg.includes('econnreset') || msg.includes('socket') || msg.includes('fetch failed'); + } + return false; +} +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} class SunoClient { baseUrl = 'https://api.sunoapi.org/api/v1'; apiKey; maxRequests = 20; windowMs = 10_000; proxyAgent; + requestTimeoutMs = 30_000; + maxRetries = 2; requestTimestamps = []; constructor(apiKey) { this.apiKey = apiKey; @@ -33,17 +45,17 @@ class SunoClient { * Enforce rate limit: max 20 requests per 10 seconds. */ async throttle() { - const now = Date.now(); - this.requestTimestamps = this.requestTimestamps.filter((ts) => now - ts < this.windowMs); - if (this.requestTimestamps.length >= this.maxRequests) { - const oldest = this.requestTimestamps[0]; - const wait = this.windowMs - (now - oldest); - if (wait > 0) { - await new Promise((resolve) => setTimeout(resolve, wait)); - return this.throttle(); + while (true) { + const now = Date.now(); + this.requestTimestamps = this.requestTimestamps.filter((ts) => now - ts < this.windowMs); + if (this.requestTimestamps.length < this.maxRequests) { + this.requestTimestamps.push(now); + return; } + const oldest = this.requestTimestamps[0]; + const wait = Math.max(0, this.windowMs - (now - oldest)); + await sleep(wait); } - this.requestTimestamps.push(now); } async request(method, path, body) { await this.throttle(); @@ -52,27 +64,52 @@ class SunoClient { Authorization: `Bearer ${this.apiKey}`, 'Content-Type': 'application/json', }; - const fetchOptions = { - method, - headers, - body: body ? JSON.stringify(body) : undefined, - }; - if (this.proxyAgent) { - fetchOptions.dispatcher = this.proxyAgent; + let lastError; + for (let attempt = 0; attempt <= this.maxRetries; attempt++) { + try { + const fetchOptions = { + method, + headers, + body: body ? JSON.stringify(body) : undefined, + signal: AbortSignal.timeout(this.requestTimeoutMs), + }; + if (this.proxyAgent) { + fetchOptions.dispatcher = this.proxyAgent; + } + const response = await (0, undici_1.fetch)(url, fetchOptions); + const text = await response.text(); + let json; + try { + json = JSON.parse(text); + } + catch { + throw new Error(`Invalid JSON response from Suno API: ${text}`); + } + // Retry on transient server errors / rate-limit before throwing. + if (json.code === 429 || json.code === 503 || json.code === 504) { + if (attempt < this.maxRetries) { + const backoff = Math.min(1000 * 2 ** attempt, 8000); + await sleep(backoff); + continue; + } + } + if (json.code !== 200) { + throw new Error(`Suno API error ${json.code}: ${json.msg || 'unknown error'}`); + } + return json; + } + catch (error) { + lastError = error instanceof Error ? error : new Error(String(error)); + const retryable = isRetryableError(lastError); + if (retryable && attempt < this.maxRetries) { + const backoff = Math.min(1000 * 2 ** attempt, 8000); + await sleep(backoff); + continue; + } + throw lastError; + } } - const response = await fetch(url, fetchOptions); - const text = await response.text(); - let json; - try { - json = JSON.parse(text); - } - catch { - throw new Error(`Invalid JSON response from Suno API: ${text}`); - } - if (json.code !== 200) { - throw new Error(`Suno API error ${json.code}: ${json.msg || 'unknown error'}`); - } - return json; + throw lastError ?? new Error('Suno API request failed'); } get(path) { return this.request('GET', path); @@ -94,12 +131,13 @@ class SunoClient { status === 'FAILED' || status === 'CREATE_TASK_FAILED' || status === 'GENERATE_AUDIO_FAILED' || + status === 'GENERATE_LYRICS_FAILED' || status === 'CALLBACK_EXCEPTION' || status === 'SENSITIVE_WORD_ERROR') { return result.data; } if (attempt < maxAttempts) { - await new Promise((resolve) => setTimeout(resolve, intervalMs)); + await sleep(intervalMs); } } throw new Error(`Polling timeout for task ${taskId} after ${maxAttempts} attempts`); diff --git a/suno-server/dist/client.js.map b/suno-server/dist/client.js.map index e83f9d6..6d0f359 100644 --- a/suno-server/dist/client.js.map +++ b/suno-server/dist/client.js.map @@ -1 +1 @@ -{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mCAA2C;AAmD3C,SAAS,WAAW;IAClB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,UAAU,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACzH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAa,UAAU;IACJ,OAAO,GAAG,gCAAgC,CAAC;IAC3C,MAAM,CAAS;IACf,WAAW,GAAG,EAAE,CAAC;IACjB,QAAQ,GAAG,MAAM,CAAC;IAClB,UAAU,CAAc;IACxB,gBAAgB,GAAG,MAAM,CAAC;IAC1B,UAAU,GAAG,CAAC,CAAC;IACxB,iBAAiB,GAAa,EAAE,CAAC;IAEzC,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,GAAG,IAAI,mBAAU,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ;QACpB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzF,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;YACzD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAsB,EACtB,IAAY,EACZ,IAA8B;QAE9B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACtE,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,SAA4B,CAAC;QACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,YAAY,GAA8C;oBAC9D,MAAM;oBACN,OAAO;oBACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC7C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;iBACnD,CAAC;gBACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC5C,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAK,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBAChD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnC,IAAI,IAAwB,CAAC;gBAC7B,IAAI,CAAC;oBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;gBAChD,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAED,iEAAiE;gBACjE,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;oBAChE,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;wBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC;wBACpD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;wBACrB,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC,CAAC;gBACjF,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,SAAS,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC;oBACpD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrB,SAAS;gBACX,CAAC;gBACD,MAAM,SAAS,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC1D,CAAC;IAED,GAAG,CAAc,IAAY;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAc,IAAY,EAAE,IAA6B;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,UAII,EAAE;QAEN,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,gCAAgC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAEtG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAe,UAAU,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAElC,IACE,MAAM,KAAK,SAAS;gBACpB,MAAM,KAAK,QAAQ;gBACnB,MAAM,KAAK,oBAAoB;gBAC/B,MAAM,KAAK,uBAAuB;gBAClC,MAAM,KAAK,wBAAwB;gBACnC,MAAM,KAAK,oBAAoB;gBAC/B,MAAM,KAAK,sBAAsB,EACjC,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;YAED,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,UAAU,WAAW,WAAW,CAAC,CAAC;IACtF,CAAC;CACF;AApJD,gCAoJC"} \ No newline at end of file diff --git a/suno-server/dist/handlers.d.ts.map b/suno-server/dist/handlers.d.ts.map index a30395a..39e6589 100644 --- a/suno-server/dist/handlers.d.ts.map +++ b/suno-server/dist/handlers.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgB,MAAM,UAAU,CAAC;AA2EpD,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;CAsUlG"} \ No newline at end of file +{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA8C,MAAM,UAAU,CAAC;AAuIlF,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;CA4TlG"} \ No newline at end of file diff --git a/suno-server/dist/handlers.js b/suno-server/dist/handlers.js index c9c118c..d2b3fd5 100644 --- a/suno-server/dist/handlers.js +++ b/suno-server/dist/handlers.js @@ -37,6 +37,8 @@ exports.ToolHandlers = void 0; const schemas = __importStar(require("./schemas")); const ASYNC_POLLING_PATHS = { 'suno_generate_music': '/generate/record-info?taskId=', + 'suno_generate_lyrics': '/lyrics/record-info?taskId=', + 'suno_generate_sounds': '/generate/record-info?taskId=', 'suno_extend_music': '/generate/record-info?taskId=', 'suno_replace_section': '/generate/record-info?taskId=', 'suno_upload_and_cover': '/generate/record-info?taskId=', @@ -49,9 +51,46 @@ const ASYNC_POLLING_PATHS = { 'suno_create_video': '/generate/video-info?taskId=', 'suno_create_cover': '/generate/cover-info?taskId=', 'suno_convert_to_wav': '/generate/wav-info?taskId=', - 'suno_generate_sounds': '/generate/record-info?taskId=', }; +function copyDefined(source, target, keys) { + for (const key of keys) { + const value = source[key]; + if (value !== undefined) { + target[key] = value; + } + } +} +function isLyricsData(data) { + return data.type === 'LYRICS'; +} +function formatLyricsResult(data) { + const status = data.status; + if (status !== 'SUCCESS') { + return JSON.stringify({ + taskId: data.taskId, + status, + errorCode: data.errorCode, + errorMessage: data.errorMessage, + }, null, 2); + } + const variants = data.response?.data ?? []; + return JSON.stringify({ + taskId: data.taskId, + status, + type: data.type, + variants: variants.map((v, index) => ({ + index: index + 1, + title: v.title, + text: v.text, + status: v.status, + errorMessage: v.errorMessage, + })), + }, null, 2); +} function formatTaskResult(data) { + if (isLyricsData(data)) { + return formatLyricsResult(data); + } const status = data.status; if (status !== 'SUCCESS') { return JSON.stringify({ @@ -62,7 +101,7 @@ function formatTaskResult(data) { }, null, 2); } const response = data.response; - const tracks = response?.data ?? response?.sunoData ?? []; + const tracks = (response?.data ?? response?.sunoData ?? []); return JSON.stringify({ taskId: data.taskId, status, @@ -102,40 +141,32 @@ class ToolHandlers { case 'suno_generate_music': { const input = schemas.GenerateMusicSchema.parse(args); const payload = { - prompt: input.prompt, customMode: input.customMode, instrumental: input.instrumental, model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.style !== undefined) - payload.style = input.style; - if (input.title !== undefined) - payload.title = input.title; - if (input.negativeTags !== undefined) - payload.negativeTags = input.negativeTags; - if (input.vocalGender !== undefined) - payload.vocalGender = input.vocalGender; - if (input.styleWeight !== undefined) - payload.styleWeight = input.styleWeight; - if (input.weirdnessConstraint !== undefined) - payload.weirdnessConstraint = input.weirdnessConstraint; - if (input.audioWeight !== undefined) - payload.audioWeight = input.audioWeight; - if (input.personaId !== undefined) - payload.personaId = input.personaId; - if (input.personaModel !== undefined) - payload.personaModel = input.personaModel; + copyDefined(input, payload, [ + 'prompt', + 'style', + 'title', + 'negativeTags', + 'vocalGender', + 'styleWeight', + 'weirdnessConstraint', + 'audioWeight', + 'personaId', + 'personaModel', + ]); resultText = await runAsyncTask(this.client, name, '/generate', payload); break; } case 'suno_generate_lyrics': { const input = schemas.GenerateLyricsSchema.parse(args); - const result = await this.client.post('/lyrics', { + resultText = await runAsyncTask(this.client, name, '/lyrics', { prompt: input.prompt, callBackUrl: input.callBackUrl ?? '', }); - resultText = JSON.stringify({ taskId: result.data.taskId, status: 'PENDING' }, null, 2); break; } case 'suno_generate_sounds': { @@ -145,14 +176,7 @@ class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.soundLoop !== undefined) - payload.soundLoop = input.soundLoop; - if (input.soundTempo !== undefined) - payload.soundTempo = input.soundTempo; - if (input.soundKey !== undefined) - payload.soundKey = input.soundKey; - if (input.grabLyrics !== undefined) - payload.grabLyrics = input.grabLyrics; + copyDefined(input, payload, ['soundLoop', 'soundTempo', 'soundKey', 'grabLyrics']); resultText = await runAsyncTask(this.client, name, '/generate/sounds', payload); break; } @@ -164,28 +188,19 @@ class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.prompt !== undefined) - payload.prompt = input.prompt; - if (input.style !== undefined) - payload.style = input.style; - if (input.title !== undefined) - payload.title = input.title; - if (input.continueAt !== undefined) - payload.continueAt = input.continueAt; - if (input.negativeTags !== undefined) - payload.negativeTags = input.negativeTags; - if (input.vocalGender !== undefined) - payload.vocalGender = input.vocalGender; - if (input.styleWeight !== undefined) - payload.styleWeight = input.styleWeight; - if (input.weirdnessConstraint !== undefined) - payload.weirdnessConstraint = input.weirdnessConstraint; - if (input.audioWeight !== undefined) - payload.audioWeight = input.audioWeight; - if (input.personaId !== undefined) - payload.personaId = input.personaId; - if (input.personaModel !== undefined) - payload.personaModel = input.personaModel; + copyDefined(input, payload, [ + 'prompt', + 'style', + 'title', + 'continueAt', + 'negativeTags', + 'vocalGender', + 'styleWeight', + 'weirdnessConstraint', + 'audioWeight', + 'personaId', + 'personaModel', + ]); resultText = await runAsyncTask(this.client, name, '/generate/extend', payload); break; } @@ -199,16 +214,7 @@ class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.replaceAudioUrl !== undefined) - payload.replaceAudioUrl = input.replaceAudioUrl; - if (input.customMode !== undefined) - payload.customMode = input.customMode; - if (input.style !== undefined) - payload.style = input.style; - if (input.title !== undefined) - payload.title = input.title; - if (input.instrumental !== undefined) - payload.instrumental = input.instrumental; + copyDefined(input, payload, ['replaceAudioUrl', 'customMode', 'style', 'title', 'instrumental']); resultText = await runAsyncTask(this.client, name, '/generate/replace-section', payload); break; } @@ -216,16 +222,10 @@ class ToolHandlers { const input = schemas.AddVocalsSchema.parse(args); const payload = { audioId: input.audioId, - prompt: input.prompt, model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.customMode !== undefined) - payload.customMode = input.customMode; - if (input.style !== undefined) - payload.style = input.style; - if (input.title !== undefined) - payload.title = input.title; + copyDefined(input, payload, ['prompt', 'customMode', 'style', 'title']); resultText = await runAsyncTask(this.client, name, '/generate/add-vocals', payload); break; } @@ -233,16 +233,10 @@ class ToolHandlers { const input = schemas.AddInstrumentalSchema.parse(args); const payload = { audioId: input.audioId, - prompt: input.prompt, model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.customMode !== undefined) - payload.customMode = input.customMode; - if (input.style !== undefined) - payload.style = input.style; - if (input.title !== undefined) - payload.title = input.title; + copyDefined(input, payload, ['prompt', 'customMode', 'style', 'title']); resultText = await runAsyncTask(this.client, name, '/generate/add-instrumental', payload); break; } @@ -255,26 +249,18 @@ class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.prompt !== undefined) - payload.prompt = input.prompt; - if (input.style !== undefined) - payload.style = input.style; - if (input.title !== undefined) - payload.title = input.title; - if (input.negativeTags !== undefined) - payload.negativeTags = input.negativeTags; - if (input.vocalGender !== undefined) - payload.vocalGender = input.vocalGender; - if (input.styleWeight !== undefined) - payload.styleWeight = input.styleWeight; - if (input.weirdnessConstraint !== undefined) - payload.weirdnessConstraint = input.weirdnessConstraint; - if (input.audioWeight !== undefined) - payload.audioWeight = input.audioWeight; - if (input.personaId !== undefined) - payload.personaId = input.personaId; - if (input.personaModel !== undefined) - payload.personaModel = input.personaModel; + copyDefined(input, payload, [ + 'prompt', + 'style', + 'title', + 'negativeTags', + 'vocalGender', + 'styleWeight', + 'weirdnessConstraint', + 'audioWeight', + 'personaId', + 'personaModel', + ]); resultText = await runAsyncTask(this.client, name, '/generate/upload-cover', payload); break; } @@ -286,14 +272,7 @@ class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.prompt !== undefined) - payload.prompt = input.prompt; - if (input.style !== undefined) - payload.style = input.style; - if (input.title !== undefined) - payload.title = input.title; - if (input.continueAt !== undefined) - payload.continueAt = input.continueAt; + copyDefined(input, payload, ['prompt', 'style', 'title', 'continueAt']); resultText = await runAsyncTask(this.client, name, '/generate/upload-extend', payload); break; } @@ -306,22 +285,16 @@ class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.instrumental !== undefined) - payload.instrumental = input.instrumental; - if (input.style !== undefined) - payload.style = input.style; - if (input.title !== undefined) - payload.title = input.title; - if (input.negativeTags !== undefined) - payload.negativeTags = input.negativeTags; - if (input.vocalGender !== undefined) - payload.vocalGender = input.vocalGender; - if (input.styleWeight !== undefined) - payload.styleWeight = input.styleWeight; - if (input.weirdnessConstraint !== undefined) - payload.weirdnessConstraint = input.weirdnessConstraint; - if (input.audioWeight !== undefined) - payload.audioWeight = input.audioWeight; + copyDefined(input, payload, [ + 'instrumental', + 'style', + 'title', + 'negativeTags', + 'vocalGender', + 'styleWeight', + 'weirdnessConstraint', + 'audioWeight', + ]); resultText = await runAsyncTask(this.client, name, '/generate/mashup', payload); break; } @@ -351,10 +324,7 @@ class ToolHandlers { audioId: input.audioId, callBackUrl: input.callBackUrl ?? '', }; - if (input.author !== undefined) - payload.author = input.author; - if (input.domainName !== undefined) - payload.domainName = input.domainName; + copyDefined(input, payload, ['author', 'domainName']); resultText = await runAsyncTask(this.client, name, '/generate/video', payload); break; } @@ -407,8 +377,8 @@ class ToolHandlers { } case 'suno_get_lyrics_details': { const input = schemas.GetLyricsDetailsSchema.parse(args); - const result = await this.client.get(`/generate/lyrics-info?taskId=${encodeURIComponent(input.taskId)}`); - resultText = JSON.stringify(result.data, null, 2); + const result = await this.client.get(`/lyrics/record-info?taskId=${encodeURIComponent(input.taskId)}`); + resultText = formatLyricsResult(result.data); break; } case 'suno_get_wav_details': { diff --git a/suno-server/dist/handlers.js.map b/suno-server/dist/handlers.js.map index b14be17..8a9f4e9 100644 --- a/suno-server/dist/handlers.js.map +++ b/suno-server/dist/handlers.js.map @@ -1 +1 @@ -{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mDAAqC;AAErC,MAAM,mBAAmB,GAA2B;IAClD,qBAAqB,EAAE,+BAA+B;IACtD,mBAAmB,EAAE,+BAA+B;IACpD,sBAAsB,EAAE,+BAA+B;IACvD,uBAAuB,EAAE,+BAA+B;IACxD,wBAAwB,EAAE,+BAA+B;IACzD,iBAAiB,EAAE,+BAA+B;IAClD,uBAAuB,EAAE,+BAA+B;IACxD,sBAAsB,EAAE,+BAA+B;IACvD,sBAAsB,EAAE,oCAAoC;IAC5D,qBAAqB,EAAE,oCAAoC;IAC3D,mBAAmB,EAAE,8BAA8B;IACnD,mBAAmB,EAAE,8BAA8B;IACnD,qBAAqB,EAAE,4BAA4B;IACnD,sBAAsB,EAAE,+BAA+B;CACxD,CAAC;AAEF,SAAS,gBAAgB,CAAC,IAAkB;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,QAAQ,EAAE,IAAI,IAAI,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC1D,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM;QACN,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ;YACpC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,cAAc;YACxD,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ;SACrC,CAAC,CAAC;KACJ,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,MAAkB,EAClB,QAAgB,EAChB,UAAkB,EAClB,OAAgC;IAEhC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAqB,UAAU,EAAE,OAAO,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;IAExC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,mCAAmC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;QACrD,UAAU,EAAE,GAAG,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE;KACjE,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,MAAa,YAAY;IACM;IAA7B,YAA6B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAEnD,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,IAAa;QACtC,IAAI,UAAkB,CAAC;QAEvB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,OAAO,GAA4B;oBACvC,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS;oBAAE,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;gBACrG,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;gBACvE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBACzE,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAqB,SAAS,EAAE;oBACnE,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxF,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,OAAO,GAA4B;oBACvC,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;gBACvE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1E,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;oBAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACpE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1E,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBAChF,MAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpD,MAAM,OAAO,GAA4B;oBACvC,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;oBACxC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1E,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS;oBAAE,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;gBACrG,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;gBACvE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBAChF,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,OAAO,GAA4B;oBACvC,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;oBAAE,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;gBACzF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1E,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAC;gBACzF,MAAM;YACR,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,OAAO,GAA4B;oBACvC,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1E,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;gBACpF,MAAM;YACR,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,OAAO,GAA4B;oBACvC,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1E,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,CAAC,CAAC;gBAC1F,MAAM;YACR,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,OAAO,GAA4B;oBACvC,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS;oBAAE,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;gBACrG,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;gBACvE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,CAAC,CAAC;gBACtF,MAAM;YACR,CAAC;YAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,OAAO,GAA4B;oBACvC,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;oBACxC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1E,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;gBACvF,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,OAAO,GAA4B;oBACvC,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3D,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBAChF,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS;oBAAE,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;gBACrG,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;oBAAE,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC7E,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBAChF,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE;oBAC5E,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE;oBAC5E,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpD,MAAM,OAAO,GAA4B;oBACvC,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9D,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC1E,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;gBAC/E,MAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpD,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE;oBACpE,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE;oBAClE,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;iBACrC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAqB,iBAAiB,EAAE;oBAC3E,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAC;gBACH,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBAChC,MAAM;YACR,CAAC;YAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,OAAO,GAA4B,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClE,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;oBAAE,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAyB,mBAAmB,EAAE,OAAO,CAAC,CAAC;gBAC5F,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAChC,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACnE,CAAC;gBACF,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM;YACR,CAAC;YAED,KAAK,6BAA6B,CAAC,CAAC,CAAC;gBACnC,MAAM,KAAK,GAAG,OAAO,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAClC,uCAAuC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,kBAAkB,CACnG,KAAK,CAAC,OAAO,CACd,EAAE,CACJ,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;gBAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAClC,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACnE,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAClC,6BAA6B,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAChE,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YAED,KAAK,mCAAmC,CAAC,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,OAAO,CAAC,+BAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAClC,qCAAqC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACxE,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAClC,+BAA+B,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAClE,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,kBAAkB,CAAC,CAAC;gBACjE,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC/D,MAAM;YACR,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SAC9C,CAAC;IACJ,CAAC;CACF;AAzUD,oCAyUC"} \ No newline at end of file +{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/suno-server/dist/schemas.d.ts b/suno-server/dist/schemas.d.ts index 8422295..655d613 100644 --- a/suno-server/dist/schemas.d.ts +++ b/suno-server/dist/schemas.d.ts @@ -1,5 +1,5 @@ import { z } from 'zod'; -export declare const GenerateMusicSchema: z.ZodObject<{ +export declare const GenerateMusicSchema: z.ZodEffects; negativeTags: z.ZodOptional; vocalGender: z.ZodOptional>; @@ -44,6 +44,66 @@ export declare const GenerateMusicSchema: z.ZodObject<{ personaId?: string | undefined; personaModel?: "style_persona" | "voice_persona" | undefined; callBackUrl?: string | undefined; +}>, { + customMode: boolean; + instrumental: boolean; + model: string; + prompt?: string | undefined; + style?: string | undefined; + title?: string | undefined; + negativeTags?: string | undefined; + vocalGender?: "m" | "f" | undefined; + styleWeight?: number | undefined; + weirdnessConstraint?: number | undefined; + audioWeight?: number | undefined; + personaId?: string | undefined; + personaModel?: "style_persona" | "voice_persona" | undefined; + callBackUrl?: string | undefined; +}, { + customMode: boolean; + instrumental: boolean; + model: string; + prompt?: string | undefined; + style?: string | undefined; + title?: string | undefined; + negativeTags?: string | undefined; + vocalGender?: "m" | "f" | undefined; + styleWeight?: number | undefined; + weirdnessConstraint?: number | undefined; + audioWeight?: number | undefined; + personaId?: string | undefined; + personaModel?: "style_persona" | "voice_persona" | undefined; + callBackUrl?: string | undefined; +}>, { + customMode: boolean; + instrumental: boolean; + model: string; + prompt?: string | undefined; + style?: string | undefined; + title?: string | undefined; + negativeTags?: string | undefined; + vocalGender?: "m" | "f" | undefined; + styleWeight?: number | undefined; + weirdnessConstraint?: number | undefined; + audioWeight?: number | undefined; + personaId?: string | undefined; + personaModel?: "style_persona" | "voice_persona" | undefined; + callBackUrl?: string | undefined; +}, { + customMode: boolean; + instrumental: boolean; + model: string; + prompt?: string | undefined; + style?: string | undefined; + title?: string | undefined; + negativeTags?: string | undefined; + vocalGender?: "m" | "f" | undefined; + styleWeight?: number | undefined; + weirdnessConstraint?: number | undefined; + audioWeight?: number | undefined; + personaId?: string | undefined; + personaModel?: "style_persona" | "voice_persona" | undefined; + callBackUrl?: string | undefined; }>; export declare const GenerateLyricsSchema: z.ZodObject<{ prompt: z.ZodString; @@ -142,11 +202,11 @@ export declare const ReplaceSectionSchema: z.ZodObject<{ model: z.ZodEnum<[string, ...string[]]>; callBackUrl: z.ZodOptional; }, "strict", z.ZodTypeAny, { + end: number; prompt: string; model: string; audioId: string; start: number; - end: number; customMode?: boolean | undefined; instrumental?: boolean | undefined; style?: string | undefined; @@ -154,11 +214,11 @@ export declare const ReplaceSectionSchema: z.ZodObject<{ callBackUrl?: string | undefined; replaceAudioUrl?: string | undefined; }, { + end: number; prompt: string; model: string; audioId: string; start: number; - end: number; customMode?: boolean | undefined; instrumental?: boolean | undefined; style?: string | undefined; @@ -216,7 +276,7 @@ export declare const AddInstrumentalSchema: z.ZodObject<{ title?: string | undefined; callBackUrl?: string | undefined; }>; -export declare const UploadAndCoverSchema: z.ZodObject<{ +export declare const UploadAndCoverSchema: z.ZodEffects; customMode: z.ZodBoolean; @@ -264,6 +324,70 @@ export declare const UploadAndCoverSchema: z.ZodObject<{ personaId?: string | undefined; personaModel?: "style_persona" | "voice_persona" | undefined; callBackUrl?: string | undefined; +}>, { + customMode: boolean; + instrumental: boolean; + model: string; + uploadUrl: string; + prompt?: string | undefined; + style?: string | undefined; + title?: string | undefined; + negativeTags?: string | undefined; + vocalGender?: "m" | "f" | undefined; + styleWeight?: number | undefined; + weirdnessConstraint?: number | undefined; + audioWeight?: number | undefined; + personaId?: string | undefined; + personaModel?: "style_persona" | "voice_persona" | undefined; + callBackUrl?: string | undefined; +}, { + customMode: boolean; + instrumental: boolean; + model: string; + uploadUrl: string; + prompt?: string | undefined; + style?: string | undefined; + title?: string | undefined; + negativeTags?: string | undefined; + vocalGender?: "m" | "f" | undefined; + styleWeight?: number | undefined; + weirdnessConstraint?: number | undefined; + audioWeight?: number | undefined; + personaId?: string | undefined; + personaModel?: "style_persona" | "voice_persona" | undefined; + callBackUrl?: string | undefined; +}>, { + customMode: boolean; + instrumental: boolean; + model: string; + uploadUrl: string; + prompt?: string | undefined; + style?: string | undefined; + title?: string | undefined; + negativeTags?: string | undefined; + vocalGender?: "m" | "f" | undefined; + styleWeight?: number | undefined; + weirdnessConstraint?: number | undefined; + audioWeight?: number | undefined; + personaId?: string | undefined; + personaModel?: "style_persona" | "voice_persona" | undefined; + callBackUrl?: string | undefined; +}, { + customMode: boolean; + instrumental: boolean; + model: string; + uploadUrl: string; + prompt?: string | undefined; + style?: string | undefined; + title?: string | undefined; + negativeTags?: string | undefined; + vocalGender?: "m" | "f" | undefined; + styleWeight?: number | undefined; + weirdnessConstraint?: number | undefined; + audioWeight?: number | undefined; + personaId?: string | undefined; + personaModel?: "style_persona" | "voice_persona" | undefined; + callBackUrl?: string | undefined; }>; export declare const UploadAndExtendSchema: z.ZodObject<{ uploadUrl: z.ZodString; diff --git a/suno-server/dist/schemas.d.ts.map b/suno-server/dist/schemas.d.ts.map index a70a406..5561001 100644 --- a/suno-server/dist/schemas.d.ts.map +++ b/suno-server/dist/schemas.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/suno-server/dist/schemas.js b/suno-server/dist/schemas.js index 5041a65..c66107c 100644 --- a/suno-server/dist/schemas.js +++ b/suno-server/dist/schemas.js @@ -20,17 +20,43 @@ const CommonGenerateParams = { callBackUrl: CallbackUrl, }; // 1. Generate Music (12 credits) -exports.GenerateMusicSchema = zod_1.z.object({ - prompt: zod_1.z.string().optional().describe('Music description / lyrics (max 500 chars non-custom, 3000-5000 custom mode; required when customMode=false or customMode=true with instrumental=false)'), +exports.GenerateMusicSchema = zod_1.z + .object({ + prompt: zod_1.z + .string() + .optional() + .describe('Music description / lyrics (max 500 chars non-custom, 3000-5000 custom mode; required when customMode=false or customMode=true with instrumental=false)'), customMode: zod_1.z.boolean().describe('Enable custom mode (requires style and title)'), instrumental: zod_1.z.boolean().describe('Generate instrumental without vocals'), style: zod_1.z.string().optional().describe('Music style/genre (required when customMode=true)'), title: zod_1.z.string().optional().describe('Song title (required when customMode=true)'), ...CommonGenerateParams, -}).strict(); +}) + .strict() + .superRefine(requirePromptWhenNeeded) + .refine((data) => !data.customMode || (!!data.style && !!data.title), { + message: 'style and title are required when customMode is true', + path: ['style'], +}); +function requirePromptWhenNeeded(data, ctx) { + if (!data.customMode && !data.prompt) { + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + message: 'prompt is required when customMode is false', + path: ['prompt'], + }); + } + if (data.customMode && !data.instrumental && !data.prompt) { + ctx.addIssue({ + code: zod_1.z.ZodIssueCode.custom, + message: 'prompt is required when customMode is true and instrumental is false', + path: ['prompt'], + }); + } +} // 2. Generate Lyrics (0.4 credits) exports.GenerateLyricsSchema = zod_1.z.object({ - prompt: zod_1.z.string().describe('Topic or theme for lyrics'), + prompt: zod_1.z.string().max(200).describe('Topic or theme for lyrics (max 200 chars)'), callBackUrl: CallbackUrl, }).strict(); // 3. Generate Sounds (2.5 credits) @@ -99,7 +125,8 @@ exports.AddInstrumentalSchema = zod_1.z.object({ callBackUrl: CallbackUrl, }).strict(); // 8. Upload and Cover (12 credits) -exports.UploadAndCoverSchema = zod_1.z.object({ +exports.UploadAndCoverSchema = zod_1.z + .object({ uploadUrl: zod_1.z.string().url().describe('Public URL of audio file to cover (max 8 minutes)'), prompt: zod_1.z.string().optional(), customMode: zod_1.z.boolean(), @@ -115,7 +142,13 @@ exports.UploadAndCoverSchema = zod_1.z.object({ personaId: zod_1.z.string().optional(), personaModel: PersonaModelEnum, callBackUrl: CallbackUrl, -}).strict(); +}) + .strict() + .superRefine(requirePromptWhenNeeded) + .refine((data) => !data.customMode || (!!data.style && !!data.title), { + message: 'style and title are required when customMode is true', + path: ['style'], +}); // 9. Upload and Extend (12 credits) exports.UploadAndExtendSchema = zod_1.z.object({ uploadUrl: zod_1.z.string().url().describe('Public URL of audio file to extend'), @@ -169,6 +202,7 @@ exports.GeneratePersonaSchema = zod_1.z.object({ audioId: zod_1.z.string().describe('Track ID to derive persona from'), }).strict(); // 17. Generate Mashup (12 credits) +// Note: Suno API docs list only V4/V4_5/V4_5PLUS/V4_5ALL/V5 for mashup; V5_5 is not supported. exports.GenerateMashupSchema = zod_1.z.object({ uploadUrlList: zod_1.z.array(zod_1.z.string().url()).length(2).describe('Exactly 2 audio URLs to mash up'), customMode: zod_1.z.boolean(), diff --git a/suno-server/dist/schemas.js.map b/suno-server/dist/schemas.js.map index 83f2c55..53cf3fe 100644 --- a/suno-server/dist/schemas.js.map +++ b/suno-server/dist/schemas.js.map @@ -1 +1 @@ -{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,MAAM,MAAM,GAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1F,MAAM,YAAY,GAA0B,CAAC,IAAI,CAAC,CAAC;AAEnD,MAAM,SAAS,GAAG,OAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC,CAAC;AACnG,MAAM,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAC/E,MAAM,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAE/E,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC;AAEhG,MAAM,oBAAoB,GAAG;IAC3B,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACjE,WAAW,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC7E,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACnF,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACnG,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC7F,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAChE,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC7E,WAAW,EAAE,WAAW;CACzB,CAAC;AAEF,iCAAiC;AACpB,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,CAAC;IACN,MAAM,EAAE,OAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yJAAyJ,CAC1J;IACH,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACjF,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC1E,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAC1F,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACnF,GAAG,oBAAoB;CACxB,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAC5D;IACE,OAAO,EAAE,sDAAsD;IAC/D,IAAI,EAAE,CAAC,OAAO,CAAC;CAChB,CACF,CAAC;AAEJ,SAAS,uBAAuB,CAAC,IAAqE,EAAE,GAAoB;IAC1H,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,OAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,6CAA6C;YACtD,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1D,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,OAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,sEAAsE;YAC/E,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,mCAAmC;AACtB,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACjF,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,mCAAmC;AACtB,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACzE,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAClE,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvE,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC;QACf,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;QAClF,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;KAChE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACpE,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,+BAA+B;AAClB,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAChE,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAC3F,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC7F,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC5E,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC5E,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAC5G,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,gBAAgB;IAC9B,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,iCAAiC;AACpB,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2EAA2E,CAAC;IACzG,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAClE,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC5F,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACjE,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC1D,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACjE,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC5D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC5D,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC3E,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,6BAA6B;AAChB,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACrD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC9D,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,mCAAmC;AACtB,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACxD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACrE,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,mCAAmC;AACtB,QAAA,oBAAoB,GAAG,OAAC;KAClC,MAAM,CAAC;IACN,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACzF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE;IACvB,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE;IACzB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,gBAAgB;IAC9B,WAAW,EAAE,WAAW;CACzB,CAAC;KACD,MAAM,EAAE;KACR,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAC5D;IACE,OAAO,EAAE,sDAAsD;IAC/D,IAAI,EAAE,CAAC,OAAO,CAAC;CAChB,CACF,CAAC;AAEJ,oCAAoC;AACvB,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC1E,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE;IAC7B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,mCAAmC;AACtB,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1D,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACpD,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,6CAA6C;AAChC,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1D,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC/D,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,qCAAqC;AACxB,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACvD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACtD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACrD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC1D,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,qCAAqC;AACxB,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACvD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACxD,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,mCAAmC;AACtB,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACvD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACnD,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,gCAAgC;AACnB,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;CAChF,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,mCAAmC;AACtB,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC9E,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAChE,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,mCAAmC;AACnC,+FAA+F;AAClF,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC9F,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE;IACvB,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACtD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1D,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,kCAAkC;AACrB,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CAChD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,2CAA2C;AAC9B,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACvD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;CACzC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,qCAAqC;AACxB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACzD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,kCAAkC;AACrB,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACtD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,+CAA+C;AAClC,QAAA,+BAA+B,GAAG,OAAC,CAAC,MAAM,CAAC;IACtD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CACxD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,oCAAoC;AACvB,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,8BAA8B;AACjB,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC"} \ No newline at end of file diff --git a/suno-server/src/client.ts b/suno-server/src/client.ts index a9f619b..b5443ad 100644 --- a/suno-server/src/client.ts +++ b/suno-server/src/client.ts @@ -1,11 +1,11 @@ /** - * Suno API HTTP client with rate limiting and polling helpers. + * Suno API HTTP client with rate limiting, proxy support, retries and polling helpers. * * Rate limit: 20 requests per 10 seconds (sunoapi.org). * Proxy support via SUNO_HTTP_PROXY / HTTPS_PROXY / HTTP_PROXY env vars. */ -import { ProxyAgent } from 'undici'; +import { fetch, ProxyAgent } from 'undici'; export interface SunoApiResponse { code: number; @@ -33,13 +33,20 @@ export interface SunoTrack { duration?: number; } +export interface SunoLyricsVariant { + text?: string; + title?: string; + status?: string; + errorMessage?: string; +} + export interface SunoTaskData { taskId: string; parentMusicId?: string; param?: string; response?: { taskId?: string; - data?: SunoTrack[]; + data?: SunoTrack[] | SunoLyricsVariant[]; sunoData?: SunoTrack[]; }; status: string; @@ -59,12 +66,26 @@ function getProxyUrl(): string | undefined { ); } +function isRetryableError(error: unknown): boolean { + if (error instanceof Error) { + const msg = error.message.toLowerCase(); + return msg.includes('timeout') || msg.includes('econnreset') || msg.includes('socket') || msg.includes('fetch failed'); + } + return false; +} + +function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + export class SunoClient { private readonly baseUrl = 'https://api.sunoapi.org/api/v1'; private readonly apiKey: string; private readonly maxRequests = 20; private readonly windowMs = 10_000; private readonly proxyAgent?: ProxyAgent; + private readonly requestTimeoutMs = 30_000; + private readonly maxRetries = 2; private requestTimestamps: number[] = []; constructor(apiKey: string) { @@ -79,21 +100,19 @@ export class SunoClient { * Enforce rate limit: max 20 requests per 10 seconds. */ private async throttle(): Promise { - const now = Date.now(); - this.requestTimestamps = this.requestTimestamps.filter( - (ts) => now - ts < this.windowMs - ); + while (true) { + const now = Date.now(); + this.requestTimestamps = this.requestTimestamps.filter((ts) => now - ts < this.windowMs); - if (this.requestTimestamps.length >= this.maxRequests) { - const oldest = this.requestTimestamps[0]; - const wait = this.windowMs - (now - oldest); - if (wait > 0) { - await new Promise((resolve) => setTimeout(resolve, wait)); - return this.throttle(); + if (this.requestTimestamps.length < this.maxRequests) { + this.requestTimestamps.push(now); + return; } - } - this.requestTimestamps.push(now); + const oldest = this.requestTimestamps[0]; + const wait = Math.max(0, this.windowMs - (now - oldest)); + await sleep(wait); + } } async request( @@ -109,30 +128,56 @@ export class SunoClient { 'Content-Type': 'application/json', }; - const fetchOptions: RequestInit & { dispatcher?: any } = { - method, - headers, - body: body ? JSON.stringify(body) : undefined, - }; - if (this.proxyAgent) { - fetchOptions.dispatcher = this.proxyAgent; + let lastError: Error | undefined; + for (let attempt = 0; attempt <= this.maxRetries; attempt++) { + try { + const fetchOptions: RequestInit & { dispatcher?: ProxyAgent } = { + method, + headers, + body: body ? JSON.stringify(body) : undefined, + signal: AbortSignal.timeout(this.requestTimeoutMs), + }; + if (this.proxyAgent) { + fetchOptions.dispatcher = this.proxyAgent; + } + + const response = await fetch(url, fetchOptions); + const text = await response.text(); + + let json: SunoApiResponse; + try { + json = JSON.parse(text) as SunoApiResponse; + } catch { + throw new Error(`Invalid JSON response from Suno API: ${text}`); + } + + // Retry on transient server errors / rate-limit before throwing. + if (json.code === 429 || json.code === 503 || json.code === 504) { + if (attempt < this.maxRetries) { + const backoff = Math.min(1000 * 2 ** attempt, 8000); + await sleep(backoff); + continue; + } + } + + if (json.code !== 200) { + throw new Error(`Suno API error ${json.code}: ${json.msg || 'unknown error'}`); + } + + return json; + } catch (error: unknown) { + lastError = error instanceof Error ? error : new Error(String(error)); + const retryable = isRetryableError(lastError); + if (retryable && attempt < this.maxRetries) { + const backoff = Math.min(1000 * 2 ** attempt, 8000); + await sleep(backoff); + continue; + } + throw lastError; + } } - const response = await fetch(url, fetchOptions); - - const text = await response.text(); - let json: SunoApiResponse; - try { - json = JSON.parse(text) as SunoApiResponse; - } catch { - throw new Error(`Invalid JSON response from Suno API: ${text}`); - } - - if (json.code !== 200) { - throw new Error(`Suno API error ${json.code}: ${json.msg || 'unknown error'}`); - } - - return json; + throw lastError ?? new Error('Suno API request failed'); } get(path: string): Promise> { @@ -167,6 +212,7 @@ export class SunoClient { status === 'FAILED' || status === 'CREATE_TASK_FAILED' || status === 'GENERATE_AUDIO_FAILED' || + status === 'GENERATE_LYRICS_FAILED' || status === 'CALLBACK_EXCEPTION' || status === 'SENSITIVE_WORD_ERROR' ) { @@ -174,7 +220,7 @@ export class SunoClient { } if (attempt < maxAttempts) { - await new Promise((resolve) => setTimeout(resolve, intervalMs)); + await sleep(intervalMs); } } diff --git a/suno-server/src/handlers.ts b/suno-server/src/handlers.ts index 530fd7e..8bed94d 100644 --- a/suno-server/src/handlers.ts +++ b/suno-server/src/handlers.ts @@ -1,8 +1,10 @@ -import { SunoClient, SunoTaskData } from './client'; +import { SunoClient, SunoLyricsVariant, SunoTaskData, SunoTrack } from './client'; import * as schemas from './schemas'; const ASYNC_POLLING_PATHS: Record = { 'suno_generate_music': '/generate/record-info?taskId=', + 'suno_generate_lyrics': '/lyrics/record-info?taskId=', + 'suno_generate_sounds': '/generate/record-info?taskId=', 'suno_extend_music': '/generate/record-info?taskId=', 'suno_replace_section': '/generate/record-info?taskId=', 'suno_upload_and_cover': '/generate/record-info?taskId=', @@ -15,22 +17,80 @@ const ASYNC_POLLING_PATHS: Record = { 'suno_create_video': '/generate/video-info?taskId=', 'suno_create_cover': '/generate/cover-info?taskId=', 'suno_convert_to_wav': '/generate/wav-info?taskId=', - 'suno_generate_sounds': '/generate/record-info?taskId=', }; -function formatTaskResult(data: SunoTaskData): string { +function copyDefined>( + source: T, + target: Record, + keys: (keyof T)[] +): void { + for (const key of keys) { + const value = source[key]; + if (value !== undefined) { + target[key as string] = value; + } + } +} + +function isLyricsData(data: SunoTaskData): boolean { + return data.type === 'LYRICS'; +} + +function formatLyricsResult(data: SunoTaskData): string { const status = data.status; if (status !== 'SUCCESS') { - return JSON.stringify({ + return JSON.stringify( + { + taskId: data.taskId, + status, + errorCode: data.errorCode, + errorMessage: data.errorMessage, + }, + null, + 2 + ); + } + + const variants = (data.response?.data as SunoLyricsVariant[] | undefined) ?? []; + return JSON.stringify( + { taskId: data.taskId, status, - errorCode: data.errorCode, - errorMessage: data.errorMessage, - }, null, 2); + type: data.type, + variants: variants.map((v, index) => ({ + index: index + 1, + title: v.title, + text: v.text, + status: v.status, + errorMessage: v.errorMessage, + })), + }, + null, + 2 + ); +} + +function formatTaskResult(data: SunoTaskData): string { + if (isLyricsData(data)) { + return formatLyricsResult(data); + } + + const status = data.status; + if (status !== 'SUCCESS') { + return JSON.stringify( + { + taskId: data.taskId, + status, + errorCode: data.errorCode, + errorMessage: data.errorMessage, + }, + null, + 2 + ); } const response = data.response; - const tracks = response?.data ?? response?.sunoData ?? []; + const tracks = (response?.data ?? response?.sunoData ?? []) as SunoTrack[]; return JSON.stringify( { taskId: data.taskId, @@ -83,32 +143,33 @@ export class ToolHandlers { case 'suno_generate_music': { const input = schemas.GenerateMusicSchema.parse(args); const payload: Record = { - prompt: input.prompt, customMode: input.customMode, instrumental: input.instrumental, model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.style !== undefined) payload.style = input.style; - if (input.title !== undefined) payload.title = input.title; - if (input.negativeTags !== undefined) payload.negativeTags = input.negativeTags; - if (input.vocalGender !== undefined) payload.vocalGender = input.vocalGender; - if (input.styleWeight !== undefined) payload.styleWeight = input.styleWeight; - if (input.weirdnessConstraint !== undefined) payload.weirdnessConstraint = input.weirdnessConstraint; - if (input.audioWeight !== undefined) payload.audioWeight = input.audioWeight; - if (input.personaId !== undefined) payload.personaId = input.personaId; - if (input.personaModel !== undefined) payload.personaModel = input.personaModel; + copyDefined(input, payload, [ + 'prompt', + 'style', + 'title', + 'negativeTags', + 'vocalGender', + 'styleWeight', + 'weirdnessConstraint', + 'audioWeight', + 'personaId', + 'personaModel', + ]); resultText = await runAsyncTask(this.client, name, '/generate', payload); break; } case 'suno_generate_lyrics': { const input = schemas.GenerateLyricsSchema.parse(args); - const result = await this.client.post<{ taskId: string }>('/lyrics', { + resultText = await runAsyncTask(this.client, name, '/lyrics', { prompt: input.prompt, callBackUrl: input.callBackUrl ?? '', }); - resultText = JSON.stringify({ taskId: result.data.taskId, status: 'PENDING' }, null, 2); break; } @@ -119,10 +180,7 @@ export class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.soundLoop !== undefined) payload.soundLoop = input.soundLoop; - if (input.soundTempo !== undefined) payload.soundTempo = input.soundTempo; - if (input.soundKey !== undefined) payload.soundKey = input.soundKey; - if (input.grabLyrics !== undefined) payload.grabLyrics = input.grabLyrics; + copyDefined(input, payload, ['soundLoop', 'soundTempo', 'soundKey', 'grabLyrics']); resultText = await runAsyncTask(this.client, name, '/generate/sounds', payload); break; } @@ -135,17 +193,19 @@ export class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.prompt !== undefined) payload.prompt = input.prompt; - if (input.style !== undefined) payload.style = input.style; - if (input.title !== undefined) payload.title = input.title; - if (input.continueAt !== undefined) payload.continueAt = input.continueAt; - if (input.negativeTags !== undefined) payload.negativeTags = input.negativeTags; - if (input.vocalGender !== undefined) payload.vocalGender = input.vocalGender; - if (input.styleWeight !== undefined) payload.styleWeight = input.styleWeight; - if (input.weirdnessConstraint !== undefined) payload.weirdnessConstraint = input.weirdnessConstraint; - if (input.audioWeight !== undefined) payload.audioWeight = input.audioWeight; - if (input.personaId !== undefined) payload.personaId = input.personaId; - if (input.personaModel !== undefined) payload.personaModel = input.personaModel; + copyDefined(input, payload, [ + 'prompt', + 'style', + 'title', + 'continueAt', + 'negativeTags', + 'vocalGender', + 'styleWeight', + 'weirdnessConstraint', + 'audioWeight', + 'personaId', + 'personaModel', + ]); resultText = await runAsyncTask(this.client, name, '/generate/extend', payload); break; } @@ -160,11 +220,7 @@ export class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.replaceAudioUrl !== undefined) payload.replaceAudioUrl = input.replaceAudioUrl; - if (input.customMode !== undefined) payload.customMode = input.customMode; - if (input.style !== undefined) payload.style = input.style; - if (input.title !== undefined) payload.title = input.title; - if (input.instrumental !== undefined) payload.instrumental = input.instrumental; + copyDefined(input, payload, ['replaceAudioUrl', 'customMode', 'style', 'title', 'instrumental']); resultText = await runAsyncTask(this.client, name, '/generate/replace-section', payload); break; } @@ -173,13 +229,10 @@ export class ToolHandlers { const input = schemas.AddVocalsSchema.parse(args); const payload: Record = { audioId: input.audioId, - prompt: input.prompt, model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.customMode !== undefined) payload.customMode = input.customMode; - if (input.style !== undefined) payload.style = input.style; - if (input.title !== undefined) payload.title = input.title; + copyDefined(input, payload, ['prompt', 'customMode', 'style', 'title']); resultText = await runAsyncTask(this.client, name, '/generate/add-vocals', payload); break; } @@ -188,13 +241,10 @@ export class ToolHandlers { const input = schemas.AddInstrumentalSchema.parse(args); const payload: Record = { audioId: input.audioId, - prompt: input.prompt, model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.customMode !== undefined) payload.customMode = input.customMode; - if (input.style !== undefined) payload.style = input.style; - if (input.title !== undefined) payload.title = input.title; + copyDefined(input, payload, ['prompt', 'customMode', 'style', 'title']); resultText = await runAsyncTask(this.client, name, '/generate/add-instrumental', payload); break; } @@ -208,16 +258,18 @@ export class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.prompt !== undefined) payload.prompt = input.prompt; - if (input.style !== undefined) payload.style = input.style; - if (input.title !== undefined) payload.title = input.title; - if (input.negativeTags !== undefined) payload.negativeTags = input.negativeTags; - if (input.vocalGender !== undefined) payload.vocalGender = input.vocalGender; - if (input.styleWeight !== undefined) payload.styleWeight = input.styleWeight; - if (input.weirdnessConstraint !== undefined) payload.weirdnessConstraint = input.weirdnessConstraint; - if (input.audioWeight !== undefined) payload.audioWeight = input.audioWeight; - if (input.personaId !== undefined) payload.personaId = input.personaId; - if (input.personaModel !== undefined) payload.personaModel = input.personaModel; + copyDefined(input, payload, [ + 'prompt', + 'style', + 'title', + 'negativeTags', + 'vocalGender', + 'styleWeight', + 'weirdnessConstraint', + 'audioWeight', + 'personaId', + 'personaModel', + ]); resultText = await runAsyncTask(this.client, name, '/generate/upload-cover', payload); break; } @@ -230,10 +282,7 @@ export class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.prompt !== undefined) payload.prompt = input.prompt; - if (input.style !== undefined) payload.style = input.style; - if (input.title !== undefined) payload.title = input.title; - if (input.continueAt !== undefined) payload.continueAt = input.continueAt; + copyDefined(input, payload, ['prompt', 'style', 'title', 'continueAt']); resultText = await runAsyncTask(this.client, name, '/generate/upload-extend', payload); break; } @@ -247,14 +296,16 @@ export class ToolHandlers { model: input.model, callBackUrl: input.callBackUrl ?? '', }; - if (input.instrumental !== undefined) payload.instrumental = input.instrumental; - if (input.style !== undefined) payload.style = input.style; - if (input.title !== undefined) payload.title = input.title; - if (input.negativeTags !== undefined) payload.negativeTags = input.negativeTags; - if (input.vocalGender !== undefined) payload.vocalGender = input.vocalGender; - if (input.styleWeight !== undefined) payload.styleWeight = input.styleWeight; - if (input.weirdnessConstraint !== undefined) payload.weirdnessConstraint = input.weirdnessConstraint; - if (input.audioWeight !== undefined) payload.audioWeight = input.audioWeight; + copyDefined(input, payload, [ + 'instrumental', + 'style', + 'title', + 'negativeTags', + 'vocalGender', + 'styleWeight', + 'weirdnessConstraint', + 'audioWeight', + ]); resultText = await runAsyncTask(this.client, name, '/generate/mashup', payload); break; } @@ -287,8 +338,7 @@ export class ToolHandlers { audioId: input.audioId, callBackUrl: input.callBackUrl ?? '', }; - if (input.author !== undefined) payload.author = input.author; - if (input.domainName !== undefined) payload.domainName = input.domainName; + copyDefined(input, payload, ['author', 'domainName']); resultText = await runAsyncTask(this.client, name, '/generate/video', payload); break; } @@ -353,10 +403,10 @@ export class ToolHandlers { case 'suno_get_lyrics_details': { const input = schemas.GetLyricsDetailsSchema.parse(args); - const result = await this.client.get( - `/generate/lyrics-info?taskId=${encodeURIComponent(input.taskId)}` + const result = await this.client.get( + `/lyrics/record-info?taskId=${encodeURIComponent(input.taskId)}` ); - resultText = JSON.stringify(result.data, null, 2); + resultText = formatLyricsResult(result.data); break; } diff --git a/suno-server/src/schemas.ts b/suno-server/src/schemas.ts index f6f8958..9ea4b15 100644 --- a/suno-server/src/schemas.ts +++ b/suno-server/src/schemas.ts @@ -22,18 +22,50 @@ const CommonGenerateParams = { }; // 1. Generate Music (12 credits) -export const GenerateMusicSchema = z.object({ - prompt: z.string().optional().describe('Music description / lyrics (max 500 chars non-custom, 3000-5000 custom mode; required when customMode=false or customMode=true with instrumental=false)'), - customMode: z.boolean().describe('Enable custom mode (requires style and title)'), - instrumental: z.boolean().describe('Generate instrumental without vocals'), - style: z.string().optional().describe('Music style/genre (required when customMode=true)'), - title: z.string().optional().describe('Song title (required when customMode=true)'), - ...CommonGenerateParams, -}).strict(); +export const GenerateMusicSchema = z + .object({ + prompt: z + .string() + .optional() + .describe( + 'Music description / lyrics (max 500 chars non-custom, 3000-5000 custom mode; required when customMode=false or customMode=true with instrumental=false)' + ), + customMode: z.boolean().describe('Enable custom mode (requires style and title)'), + instrumental: z.boolean().describe('Generate instrumental without vocals'), + style: z.string().optional().describe('Music style/genre (required when customMode=true)'), + title: z.string().optional().describe('Song title (required when customMode=true)'), + ...CommonGenerateParams, + }) + .strict() + .superRefine(requirePromptWhenNeeded) + .refine( + (data) => !data.customMode || (!!data.style && !!data.title), + { + message: 'style and title are required when customMode is true', + path: ['style'], + } + ); + +function requirePromptWhenNeeded(data: { customMode: boolean; instrumental: boolean; prompt?: string }, ctx: z.RefinementCtx): void { + if (!data.customMode && !data.prompt) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'prompt is required when customMode is false', + path: ['prompt'], + }); + } + if (data.customMode && !data.instrumental && !data.prompt) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'prompt is required when customMode is true and instrumental is false', + path: ['prompt'], + }); + } +} // 2. Generate Lyrics (0.4 credits) export const GenerateLyricsSchema = z.object({ - prompt: z.string().describe('Topic or theme for lyrics'), + prompt: z.string().max(200).describe('Topic or theme for lyrics (max 200 chars)'), callBackUrl: CallbackUrl, }).strict(); @@ -108,23 +140,33 @@ export const AddInstrumentalSchema = z.object({ }).strict(); // 8. Upload and Cover (12 credits) -export const UploadAndCoverSchema = z.object({ - uploadUrl: z.string().url().describe('Public URL of audio file to cover (max 8 minutes)'), - prompt: z.string().optional(), - customMode: z.boolean(), - instrumental: z.boolean(), - style: z.string().optional(), - title: z.string().optional(), - model: ModelEnum, - negativeTags: z.string().optional(), - vocalGender: z.enum(['m', 'f']).optional(), - styleWeight: z.number().min(0).max(1).optional(), - weirdnessConstraint: z.number().min(0).max(1).optional(), - audioWeight: z.number().min(0).max(1).optional(), - personaId: z.string().optional(), - personaModel: PersonaModelEnum, - callBackUrl: CallbackUrl, -}).strict(); +export const UploadAndCoverSchema = z + .object({ + uploadUrl: z.string().url().describe('Public URL of audio file to cover (max 8 minutes)'), + prompt: z.string().optional(), + customMode: z.boolean(), + instrumental: z.boolean(), + style: z.string().optional(), + title: z.string().optional(), + model: ModelEnum, + negativeTags: z.string().optional(), + vocalGender: z.enum(['m', 'f']).optional(), + styleWeight: z.number().min(0).max(1).optional(), + weirdnessConstraint: z.number().min(0).max(1).optional(), + audioWeight: z.number().min(0).max(1).optional(), + personaId: z.string().optional(), + personaModel: PersonaModelEnum, + callBackUrl: CallbackUrl, + }) + .strict() + .superRefine(requirePromptWhenNeeded) + .refine( + (data) => !data.customMode || (!!data.style && !!data.title), + { + message: 'style and title are required when customMode is true', + path: ['style'], + } + ); // 9. Upload and Extend (12 credits) export const UploadAndExtendSchema = z.object({ @@ -187,6 +229,7 @@ export const GeneratePersonaSchema = z.object({ }).strict(); // 17. Generate Mashup (12 credits) +// Note: Suno API docs list only V4/V4_5/V4_5PLUS/V4_5ALL/V5 for mashup; V5_5 is not supported. export const GenerateMashupSchema = z.object({ uploadUrlList: z.array(z.string().url()).length(2).describe('Exactly 2 audio URLs to mash up'), customMode: z.boolean(),