@sogni-ai/sogni-client 5.58.2 → 5.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -341,19 +341,19 @@ export const SOGNI_HOSTED_TOOLS_MANIFEST: unknown = {
341
341
  },
342
342
  "duration": {
343
343
  "type": "number",
344
- "description": "Duration in seconds. Default: 30. Range: 10-600 (10 seconds to 10 minutes). Short clips: 10-30s. Standard songs: 120-300s.",
344
+ "description": "Duration in seconds. music3 (the default model): 10-300, default 60, and a ceiling — the song may end earlier at a musical resolution. ACE-Step turbo/sft: 10-600, default 30. Short clips: 10-30s. Standard songs: 120-300s.",
345
345
  "minimum": 10,
346
346
  "maximum": 600
347
347
  },
348
348
  "bpm": {
349
349
  "type": "number",
350
- "description": "Beats per minute / tempo. Default: 120. Range: 30-300. Slow ballad: 60-80. Mid-tempo: 90-120. Upbeat: 120-140. Fast dance: 140-180. Very fast: 180+.",
350
+ "description": "ACE-Step (turbo, sft) only — music3 does not use it; for music3 put the tempo in the prompt instead. Beats per minute / tempo. Default: 120. Range: 30-300. Slow ballad: 60-80. Mid-tempo: 90-120. Upbeat: 120-140. Fast dance: 140-180. Very fast: 180+.",
351
351
  "minimum": 30,
352
352
  "maximum": 300
353
353
  },
354
354
  "keyscale": {
355
355
  "type": "string",
356
- "description": "Musical key and scale. E.g., \"C major\", \"A minor\", \"F# minor\", \"Bb major\". Default: \"C major\". Only set when the user specifies a key or when a particular mood calls for it (minor keys for sad/dark, major for happy/bright)."
356
+ "description": "ACE-Step (turbo, sft) only — music3 does not use it; for music3 put the key in the prompt instead. Musical key and scale. E.g., \"C major\", \"A minor\", \"F# minor\", \"Bb major\". Default: \"C major\". Only set when the user specifies a key or when a particular mood calls for it (minor keys for sad/dark, major for happy/bright)."
357
357
  },
358
358
  "lyrics": {
359
359
  "type": "string",
@@ -362,13 +362,13 @@ export const SOGNI_HOSTED_TOOLS_MANIFEST: unknown = {
362
362
  "model": {
363
363
  "type": "string",
364
364
  "enum": [
365
+ "minimax_music3",
365
366
  "ace_step_1.5_xl_turbo",
366
367
  "ace_step_1.5_xl_sft",
367
368
  "ace_step_1.5_turbo",
368
- "ace_step_1.5_sft",
369
- "minimax_music3"
369
+ "ace_step_1.5_sft"
370
370
  ],
371
- "description": "Canonical music model ID. Default: ace_step_1.5_xl_turbo. Use minimax_music3 (MiniMax Music 3, premium autoregressive composer, ~20x cost, duration is a ceiling) when the user asks for the best quality, realistic vocals, or full songs. Use ace_step_1.5_xl_sft only when the user explicitly requests XL SFT. Use legacy ace_step_1.5_turbo or ace_step_1.5_sft only when the user explicitly requests a legacy model."
371
+ "description": "Canonical music model ID. Default: minimax_music3 (MiniMax Music 3, premium autoregressive composer with the best vocals, lyric adherence and song structure; 10-300 s, and duration is a ceiling, so the song may end earlier at a musical resolution). Music 3 takes tempo and key in the prompt text; bpm, keyscale and timesig apply to ACE-Step only. Use ace_step_1.5_xl_turbo only when the user asks for a quick, cheap or draft track, names ACE-Step, or wants a track longer than 300 s (with no model named, a duration over 300 s uses ACE-Step XL Turbo). Use ace_step_1.5_xl_sft only when the user explicitly requests XL SFT. Use legacy ace_step_1.5_turbo or ace_step_1.5_sft only when the user explicitly requests a legacy model."
372
372
  },
373
373
  "timesig": {
374
374
  "type": "number",
@@ -378,7 +378,7 @@ export const SOGNI_HOSTED_TOOLS_MANIFEST: unknown = {
378
378
  4,
379
379
  6
380
380
  ],
381
- "description": "Time signature (beats per measure). 4 = 4/4 time (default, most common). 3 = 3/4 time (waltz). 2 = 2/4 time (march). 6 = 6/8 time (compound). Default: 4."
381
+ "description": "ACE-Step (turbo, sft) only — music3 does not use it; for music3 put the time signature in the prompt instead. Time signature (beats per measure). 4 = 4/4 time (default, most common). 3 = 3/4 time (waltz). 2 = 2/4 time (march). 6 = 6/8 time (compound). Default: 4."
382
382
  },
383
383
  "numberOfVariations": {
384
384
  "type": "number",
@@ -165,11 +165,13 @@ export const PREFERRED_MODEL_IDS = {
165
165
  animateReplace: 'wan_v2.2-14b-fp8_animate-replace_lightx2v'
166
166
  },
167
167
  audio: {
168
+ // Music, in preference order: MiniMax Music 3 is the default music model;
169
+ // ACE-Step is the explicit draft or legacy choice.
170
+ minimaxMusic3: 'minimax_music3',
168
171
  aceStepXlTurbo: 'ace_step_1.5_xl_turbo',
169
172
  aceStepXlSft: 'ace_step_1.5_xl_sft',
170
173
  aceStepTurbo: 'ace_step_1.5_turbo',
171
174
  aceStepSft: 'ace_step_1.5_sft',
172
- minimaxMusic3: 'minimax_music3',
173
175
  // Speech, not music: the same audio media type, a different job entirely.
174
176
  qwen3TtsCustomVoice: 'qwen3_tts_1.7b_custom_voice_bf16',
175
177
  qwen3TtsVoiceClone: 'qwen3_tts_1.7b_voice_clone_bf16',
@@ -177,6 +179,21 @@ export const PREFERRED_MODEL_IDS = {
177
179
  }
178
180
  } as const;
179
181
 
182
+ /**
183
+ * Music models in preference order for a model-less generate_music call:
184
+ * MiniMax Music 3 first, then ACE-Step. Speech models are deliberately absent.
185
+ */
186
+ export const MUSIC_MODEL_IDS: string[] = [
187
+ PREFERRED_MODEL_IDS.audio.minimaxMusic3,
188
+ PREFERRED_MODEL_IDS.audio.aceStepXlTurbo,
189
+ PREFERRED_MODEL_IDS.audio.aceStepXlSft,
190
+ PREFERRED_MODEL_IDS.audio.aceStepTurbo,
191
+ PREFERRED_MODEL_IDS.audio.aceStepSft
192
+ ];
193
+
194
+ /** MiniMax Music 3's longest track, in seconds (ACE-Step renders up to 600). */
195
+ export const MINIMAX_MUSIC3_MAX_DURATION_SECONDS = 300;
196
+
180
197
  const GPT_IMAGE_MODEL_ALIASES = [
181
198
  'chatgpt',
182
199
  'chatgpt-image',
@@ -1187,6 +1187,15 @@ function getControlNet(params: ControlNetParams): ControlNetParamsRaw[] {
1187
1187
  propertyName: 'guidanceEnd'
1188
1188
  });
1189
1189
  }
1190
+ if (params.preprocess !== undefined) {
1191
+ if (typeof params.preprocess !== 'boolean') {
1192
+ throw new Error('controlNet.preprocess must be a boolean');
1193
+ }
1194
+ // Sent only when true, so requests without it stay identical to before.
1195
+ if (params.preprocess) {
1196
+ cn.preprocess = true;
1197
+ }
1198
+ }
1190
1199
  return [cn];
1191
1200
  }
1192
1201
 
@@ -42,6 +42,11 @@ export interface ControlNetParamsRaw {
42
42
  controlMode?: 0 | 1 | 2;
43
43
  controlGuidanceStart?: number;
44
44
  controlGuidanceEnd?: number;
45
+ /**
46
+ * Sent only as `true`: the worker makes the control map from the uploaded image.
47
+ * Omitted: the uploaded image is the control map.
48
+ */
49
+ preprocess?: true;
45
50
  }
46
51
 
47
52
  /**
@@ -88,6 +93,19 @@ export interface ControlNetParams {
88
93
  * Must be greater than guidanceStart
89
94
  */
90
95
  guidanceEnd?: number;
96
+ /**
97
+ * Make the control map from `image` on the worker. Default `false`.
98
+ *
99
+ * - `true`: `image` is an ordinary photo. The worker generates the control map that matches `name`
100
+ * from it (edges for `canny`, a depth map for `depth`, a pose skeleton for `openpose`, and so on).
101
+ * Use this for ordinary photos.
102
+ * - `false` or omitted: `image` is used as the control map as-is, exactly as before this option existed.
103
+ * Use this for ready-made depth maps, pose skeletons, edge maps and scribbles.
104
+ *
105
+ * Only affects the Stable Diffusion ControlNet types. InstantID always uses the face photo as given,
106
+ * and `inpaint` / `instrp2p` always use the image as given.
107
+ */
108
+ preprocess?: boolean;
91
109
  }
92
110
 
93
111
  /**
package/src/version.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED by scripts/generate-version.mjs — do not edit.
2
2
  // Source of truth: package.json version.
3
- export const LIB_VERSION = '5.58.2';
3
+ export const LIB_VERSION = '5.60.0';