@sogni-ai/sogni-client 4.0.0-alpha.3 → 4.0.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/README.md +41 -2
- package/dist/Projects/createJobRequestMessage.js +3 -3
- package/dist/Projects/createJobRequestMessage.js.map +1 -1
- package/dist/Projects/types/SamplerParams.d.ts +15 -0
- package/dist/Projects/types/SamplerParams.js +21 -0
- package/dist/Projects/types/SamplerParams.js.map +1 -0
- package/dist/Projects/types/SchedulerParams.d.ts +13 -0
- package/dist/Projects/types/SchedulerParams.js +19 -0
- package/dist/Projects/types/SchedulerParams.js.map +1 -0
- package/dist/Projects/types/index.d.ts +6 -5
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/validation.d.ts +2 -0
- package/dist/lib/validation.js +22 -0
- package/dist/lib/validation.js.map +1 -1
- package/package.json +1 -1
- package/src/Projects/createJobRequestMessage.ts +11 -5
- package/src/Projects/types/SamplerParams.ts +19 -0
- package/src/Projects/types/SchedulerParams.ts +17 -0
- package/src/Projects/types/index.ts +6 -12
- package/src/index.ts +3 -9
- package/src/lib/validation.ts +27 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
# [4.0.0-alpha.5](https://github.com/Sogni-AI/sogni-client/compare/v4.0.0-alpha.4...v4.0.0-alpha.5) (2025-10-17)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* Code cleanup ([7b482dd](https://github.com/Sogni-AI/sogni-client/commit/7b482dd5c0667b3ad57e0fec75811f8bf5a14bee))
|
|
7
|
+
|
|
8
|
+
# [4.0.0-alpha.4](https://github.com/Sogni-AI/sogni-client/compare/v4.0.0-alpha.3...v4.0.0-alpha.4) (2025-10-17)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* Update schedulers and samplers options. ([7971cdc](https://github.com/Sogni-AI/sogni-client/commit/7971cdc7b1114840196fdada5adbf22cf867053e))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### BREAKING CHANGES
|
|
17
|
+
|
|
18
|
+
* `scheduler` and `timeStepSpacing` options renamed
|
|
19
|
+
|
|
20
|
+
- `scheduler` option renamed to `sampler`
|
|
21
|
+
- `timeStepSpacing` is now `scheduler`
|
|
22
|
+
- Options are now referenced by short aliases
|
|
23
|
+
|
|
1
24
|
# [4.0.0-alpha.3](https://github.com/Sogni-AI/sogni-client/compare/v4.0.0-alpha.2...v4.0.0-alpha.3) (2025-10-02)
|
|
2
25
|
|
|
3
26
|
|
package/README.md
CHANGED
|
@@ -182,8 +182,8 @@ Turbo and LCM models are designed for quality output in as little as 1 step. ([M
|
|
|
182
182
|
- `disableNSFWFilter` - disable NSFW filter for this project. NSFW filter is enabled by default and workers won't upload resulting images if they are detected as NSFW.
|
|
183
183
|
- `seed` - uint32 number to use as seed. If not provided, random seed will be used. If `numberOfImages` is greater than 1, provided seed will be user only for one of them. ([More info](https://docs.sogni.ai/learn/basics/generation-seed)).
|
|
184
184
|
- `numberOfPreviews` - number of preview images to generate. If not provided, no preview images will be generated.
|
|
185
|
-
- `
|
|
186
|
-
- `
|
|
185
|
+
- `sampler` - time step spacing algorithm ([More info](https://docs.sogni.ai/sogni-studio/advanced/samplers-and-schedulers)). For available options, see the **"Samplers"** section below.
|
|
186
|
+
- `scheduler` - scheduler to use ([More info](https://docs.sogni.ai/sogni-studio/advanced/samplers-and-schedulers)). For available options, see the **"Schedulers"** section below.
|
|
187
187
|
- `startingImage` - guide image in PNG format. Can be [File](https://developer.mozilla.org/en-US/docs/Web/API/File), [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) or [Buffer](https://nodejs.org/api/buffer.html)
|
|
188
188
|
- `startingImageStrength` - strong effect of starting image should be. From 0 to 1, default 0.5.
|
|
189
189
|
- `controlNet` - Stable Diffusion ControlNet parameters. See **ControlNets** section below for more info.
|
|
@@ -282,6 +282,45 @@ Sample response:
|
|
|
282
282
|
}
|
|
283
283
|
]
|
|
284
284
|
```
|
|
285
|
+
|
|
286
|
+
### Samplers
|
|
287
|
+
Samplers control the denoising process — the sequence of steps that transforms random noise into your final image.
|
|
288
|
+
|
|
289
|
+
Available sampler options:
|
|
290
|
+
|
|
291
|
+
| Option | Description |
|
|
292
|
+
|-----------------|-------------------------------------|
|
|
293
|
+
| `dfs_sd3` | Discrete Flow Scheduler (SD3) |
|
|
294
|
+
| `dpm_pp` | DPM Solver Multistep (DPM-Solver++) |
|
|
295
|
+
| `dpm_pp_sde` | DPM++ SDE |
|
|
296
|
+
| `dpm_pp_2m` | DPM++ 2M |
|
|
297
|
+
| `dpm_pp_2m_sde` | DPM++ 2M SDE |
|
|
298
|
+
| `euler` | Euler |
|
|
299
|
+
| `euler_a` | Euler a |
|
|
300
|
+
| `heun` | Heun |
|
|
301
|
+
| `lcm` | LCM (Latent Consistency Model) |
|
|
302
|
+
| `pndm_plms` | PNDM (Pseudo-linear multi-step) |
|
|
303
|
+
| `uni_pc` | UniPC |
|
|
304
|
+
|
|
305
|
+
**IMPORTANT:** Sampler compatibility depends on model and network. See [Samplers and Schedulers](https://docs.sogni.ai/sogni-studio/advanced/samplers-and-schedulers) docs for more info.
|
|
306
|
+
|
|
307
|
+
### Schedulers
|
|
308
|
+
Control how steps are distributed. For more info see [Schedulers and Samplers](https://docs.sogni.ai/sogni-studio/advanced/samplers-and-schedulers#schedulers) docs.
|
|
309
|
+
|
|
310
|
+
Available scheduler options:
|
|
311
|
+
|
|
312
|
+
| Option | Description |
|
|
313
|
+
|---------------|-------------|
|
|
314
|
+
| `beta` | Beta |
|
|
315
|
+
| `ddim` | DDIM |
|
|
316
|
+
| `karras` | Karras |
|
|
317
|
+
| `kl_optimal` | KL Optimal |
|
|
318
|
+
| `leading` | Automatic |
|
|
319
|
+
| `linear` | Automatic |
|
|
320
|
+
| `normal` | Normal |
|
|
321
|
+
| `sgm_uniform` | SGM Uniform |
|
|
322
|
+
| `simple` | Simple |
|
|
323
|
+
|
|
285
324
|
### ControlNets
|
|
286
325
|
**EXPERIMENTAL FEATURE:** This feature is still in development and may not work as expected. Use at your own risk.
|
|
287
326
|
|
|
@@ -25,8 +25,8 @@ function getTemplate() {
|
|
|
25
25
|
guidanceScaleIsEnabled: true,
|
|
26
26
|
siImageBackgroundColor: 'black',
|
|
27
27
|
cnDragOffset: [0, 0],
|
|
28
|
-
scheduler:
|
|
29
|
-
timeStepSpacing:
|
|
28
|
+
scheduler: null,
|
|
29
|
+
timeStepSpacing: null,
|
|
30
30
|
steps: 20,
|
|
31
31
|
cnRotation: 0,
|
|
32
32
|
guidanceScale: 7.5,
|
|
@@ -114,7 +114,7 @@ function createJobRequestMessage(id, params) {
|
|
|
114
114
|
var _a, _b;
|
|
115
115
|
const template = getTemplate();
|
|
116
116
|
const jobRequest = Object.assign(Object.assign({}, template), { keyFrames: [
|
|
117
|
-
Object.assign(Object.assign({}, template.keyFrames[0]), { scheduler: params.
|
|
117
|
+
Object.assign(Object.assign({}, template.keyFrames[0]), { scheduler: (0, validation_1.validateSampler)(params.sampler), timeStepSpacing: (0, validation_1.validateScheduler)(params.scheduler), steps: params.steps, guidanceScale: params.guidance, modelID: params.modelId, negativePrompt: params.negativePrompt, seed: params.seed, positivePrompt: params.positivePrompt, stylePrompt: params.stylePrompt, hasStartingImage: !!params.startingImage, hasContextImage1: !!((_a = params.contextImages) === null || _a === void 0 ? void 0 : _a[0]), hasContextImage2: !!((_b = params.contextImages) === null || _b === void 0 ? void 0 : _b[1]), strengthIsEnabled: !!params.startingImage, strength: !!params.startingImage
|
|
118
118
|
? 1 - (Number(params.startingImageStrength) || 0.5)
|
|
119
119
|
: undefined, sizePreset: params.sizePreset })
|
|
120
120
|
], previews: params.numberOfPreviews || 0, numberOfImages: params.numberOfImages, jobID: id, disableSafety: !!params.disableNSFWFilter, tokenType: params.tokenType, outputFormat: params.outputFormat || 'png' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createJobRequestMessage.js","sourceRoot":"","sources":["../../src/Projects/createJobRequestMessage.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"createJobRequestMessage.js","sourceRoot":"","sources":["../../src/Projects/createJobRequestMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const SamplerMap: {
|
|
2
|
+
dfs_sd3: string;
|
|
3
|
+
dpm_pp: string;
|
|
4
|
+
dpm_pp_sde: string;
|
|
5
|
+
dpm_pp_2m: string;
|
|
6
|
+
dpm_pp_2m_sde: string;
|
|
7
|
+
euler: string;
|
|
8
|
+
euler_a: string;
|
|
9
|
+
heun: string;
|
|
10
|
+
lcm: string;
|
|
11
|
+
pndm_plms: string;
|
|
12
|
+
uni_pc: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function isSampler(sampler: string): sampler is Sampler;
|
|
15
|
+
export type Sampler = keyof typeof SamplerMap;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SamplerMap = void 0;
|
|
4
|
+
exports.isSampler = isSampler;
|
|
5
|
+
exports.SamplerMap = {
|
|
6
|
+
dfs_sd3: 'Discrete Flow Scheduler (SD3)',
|
|
7
|
+
dpm_pp: 'DPM Solver Multistep (DPM-Solver++)',
|
|
8
|
+
dpm_pp_sde: 'DPM++ SDE',
|
|
9
|
+
dpm_pp_2m: 'DPM++ 2M',
|
|
10
|
+
dpm_pp_2m_sde: 'DPM++ 2M SDE',
|
|
11
|
+
euler: 'Euler',
|
|
12
|
+
euler_a: 'Euler a',
|
|
13
|
+
heun: 'Heun',
|
|
14
|
+
lcm: 'LCM (Latent Consistency Model)',
|
|
15
|
+
pndm_plms: 'PNDM (Pseudo-linear multi-step)',
|
|
16
|
+
uni_pc: 'UniPC'
|
|
17
|
+
};
|
|
18
|
+
function isSampler(sampler) {
|
|
19
|
+
return sampler in exports.SamplerMap;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=SamplerParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SamplerParams.js","sourceRoot":"","sources":["../../../src/Projects/types/SamplerParams.ts"],"names":[],"mappings":";;;AAcA,8BAEC;AAhBY,QAAA,UAAU,GAAG;IACxB,OAAO,EAAE,+BAA+B;IACxC,MAAM,EAAE,qCAAqC;IAC7C,UAAU,EAAE,WAAW;IACvB,SAAS,EAAE,UAAU;IACrB,aAAa,EAAE,cAAc;IAC7B,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,gCAAgC;IACrC,SAAS,EAAE,iCAAiC;IAC5C,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF,SAAgB,SAAS,CAAC,OAAe;IACvC,OAAO,OAAO,IAAI,kBAAU,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const SchedulerMap: {
|
|
2
|
+
beta: string;
|
|
3
|
+
ddim: string;
|
|
4
|
+
karras: string;
|
|
5
|
+
kl_optimal: string;
|
|
6
|
+
leading: string;
|
|
7
|
+
linear: string;
|
|
8
|
+
normal: string;
|
|
9
|
+
sgm_uniform: string;
|
|
10
|
+
simple: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function isScheduler(scheduler: string): scheduler is Scheduler;
|
|
13
|
+
export type Scheduler = keyof typeof SchedulerMap;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SchedulerMap = void 0;
|
|
4
|
+
exports.isScheduler = isScheduler;
|
|
5
|
+
exports.SchedulerMap = {
|
|
6
|
+
beta: 'Beta',
|
|
7
|
+
ddim: 'DDIM',
|
|
8
|
+
karras: 'Karras',
|
|
9
|
+
kl_optimal: 'KL Optimal',
|
|
10
|
+
leading: 'Automatic',
|
|
11
|
+
linear: 'Automatic',
|
|
12
|
+
normal: 'Normal',
|
|
13
|
+
sgm_uniform: 'SGM Uniform',
|
|
14
|
+
simple: 'Simple'
|
|
15
|
+
};
|
|
16
|
+
function isScheduler(scheduler) {
|
|
17
|
+
return scheduler in exports.SchedulerMap;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=SchedulerParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchedulerParams.js","sourceRoot":"","sources":["../../../src/Projects/types/SchedulerParams.ts"],"names":[],"mappings":";;;AAYA,kCAEC;AAdY,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,SAAgB,WAAW,CAAC,SAAiB;IAC3C,OAAO,SAAS,IAAI,oBAAY,CAAC;AACnC,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SupernetType } from '../../ApiClient/WebSocketClient/types';
|
|
2
2
|
import { ControlNetParams } from './ControlNetParams';
|
|
3
3
|
import { TokenType } from '../../types/token';
|
|
4
|
+
import { Sampler } from './SamplerParams';
|
|
5
|
+
import { Scheduler } from './SchedulerParams';
|
|
4
6
|
export interface SupportedModel {
|
|
5
7
|
id: string;
|
|
6
8
|
name: string;
|
|
@@ -19,8 +21,7 @@ export interface SizePreset {
|
|
|
19
21
|
ratio: string;
|
|
20
22
|
aspect: string;
|
|
21
23
|
}
|
|
22
|
-
export type
|
|
23
|
-
export type TimeStepSpacing = 'Leading' | 'Linear' | 'Karras' | 'Simple' | 'SGM Uniform';
|
|
24
|
+
export type { Sampler, Scheduler };
|
|
24
25
|
export type OutputFormat = 'png' | 'jpg';
|
|
25
26
|
export type InputImage = File | Buffer | Blob | boolean;
|
|
26
27
|
export interface ProjectParams {
|
|
@@ -94,11 +95,11 @@ export interface ProjectParams {
|
|
|
94
95
|
/**
|
|
95
96
|
* Scheduler to use
|
|
96
97
|
*/
|
|
97
|
-
|
|
98
|
+
sampler?: Sampler;
|
|
98
99
|
/**
|
|
99
100
|
* Time step spacing method
|
|
100
101
|
*/
|
|
101
|
-
|
|
102
|
+
scheduler?: Scheduler;
|
|
102
103
|
/**
|
|
103
104
|
* Size preset ID to use. You can query available size presets
|
|
104
105
|
* from `client.projects.sizePresets(network, modelId)`
|
|
@@ -187,7 +188,7 @@ export interface EstimateRequest {
|
|
|
187
188
|
/**
|
|
188
189
|
* Scheduler
|
|
189
190
|
*/
|
|
190
|
-
scheduler?:
|
|
191
|
+
scheduler?: Sampler;
|
|
191
192
|
/**
|
|
192
193
|
* Number of context images to use (for Flux Kontext).
|
|
193
194
|
* Note that this parameter is ignored if `scheduler` is not provided
|
package/dist/index.d.ts
CHANGED
|
@@ -6,12 +6,12 @@ import { Logger, LogLevel } from './lib/DefaultLogger';
|
|
|
6
6
|
import ProjectsApi from './Projects';
|
|
7
7
|
import Job, { JobStatus } from './Projects/Job';
|
|
8
8
|
import Project, { ProjectStatus } from './Projects/Project';
|
|
9
|
-
import { AvailableModel, OutputFormat, ProjectParams,
|
|
9
|
+
import { AvailableModel, OutputFormat, ProjectParams, Sampler, Scheduler } from './Projects/types';
|
|
10
10
|
import StatsApi from './Stats';
|
|
11
11
|
import ErrorData from './types/ErrorData';
|
|
12
12
|
import { TokenType } from './types/token';
|
|
13
13
|
import { TokenAuthData } from './lib/AuthManager';
|
|
14
|
-
export type { AvailableModel, ErrorData, JobStatus, Logger, LogLevel, OutputFormat, ProjectParams, ProjectStatus,
|
|
14
|
+
export type { AvailableModel, ErrorData, JobStatus, Logger, LogLevel, OutputFormat, ProjectParams, ProjectStatus, Sampler, SupernetType, Scheduler, TokenType };
|
|
15
15
|
export { ApiError, CurrentAccount, Job, Project };
|
|
16
16
|
export interface SogniClientConfig {
|
|
17
17
|
/**
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,wDAAmC;AACnC,8EAAsD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/validation.d.ts
CHANGED
|
@@ -6,4 +6,6 @@ interface NumberValidationOptions {
|
|
|
6
6
|
defaultValue?: number;
|
|
7
7
|
}
|
|
8
8
|
export declare function validateNumber(value: any, { min, max, propertyName, defaultValue }?: NumberValidationOptions): number;
|
|
9
|
+
export declare function validateSampler(value?: string): string | null;
|
|
10
|
+
export declare function validateScheduler(value?: string): string | null;
|
|
9
11
|
export {};
|
package/dist/lib/validation.js
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateCustomImageSize = validateCustomImageSize;
|
|
4
4
|
exports.validateNumber = validateNumber;
|
|
5
|
+
exports.validateSampler = validateSampler;
|
|
6
|
+
exports.validateScheduler = validateScheduler;
|
|
7
|
+
const SamplerParams_1 = require("../Projects/types/SamplerParams");
|
|
8
|
+
const SchedulerParams_1 = require("../Projects/types/SchedulerParams");
|
|
5
9
|
function validateCustomImageSize(value) {
|
|
6
10
|
return validateNumber(value, { min: 256, max: 2048, propertyName: 'Width and height' });
|
|
7
11
|
}
|
|
@@ -31,4 +35,22 @@ function validateNumber(value, { min, max, propertyName, defaultValue } = {}) {
|
|
|
31
35
|
}
|
|
32
36
|
return number;
|
|
33
37
|
}
|
|
38
|
+
function validateSampler(value) {
|
|
39
|
+
if (!value) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
if (!(0, SamplerParams_1.isSampler)(value)) {
|
|
43
|
+
throw new Error(`Invalid sampler: ${value}. Supported options: ${Object.keys(SamplerParams_1.SamplerMap).join(', ')}`);
|
|
44
|
+
}
|
|
45
|
+
return SamplerParams_1.SamplerMap[value];
|
|
46
|
+
}
|
|
47
|
+
function validateScheduler(value) {
|
|
48
|
+
if (!value) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
if (!(0, SchedulerParams_1.isScheduler)(value)) {
|
|
52
|
+
throw new Error(`Invalid scheduler: ${value}. Supported options: ${Object.keys(SchedulerParams_1.SchedulerMap).join(', ')}`);
|
|
53
|
+
}
|
|
54
|
+
return SchedulerParams_1.SchedulerMap[value];
|
|
55
|
+
}
|
|
34
56
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":";;AAGA,0DAEC;AASD,wCA4BC;AAED,0CAUC;AAED,8CAUC;AAlED,mEAAwE;AACxE,uEAA8E;AAE9E,SAAgB,uBAAuB,CAAC,KAAU;IAChD,OAAO,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC1F,CAAC;AASD,SAAgB,cAAc,CAC5B,KAAU,EACV,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,KAA8B,EAAE;IAEtE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,eAAe,GAAG,YAAY,KAAK,SAAS,CAAC;IACnD,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,0BAA0B,KAAK,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACtC,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,0BAA0B,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACtC,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,0BAA0B,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,IAAA,yBAAS,EAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,oBAAoB,KAAK,wBAAwB,MAAM,CAAC,IAAI,CAAC,0BAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtF,CAAC;IACJ,CAAC;IACD,OAAO,0BAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,IAAA,6BAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,wBAAwB,MAAM,CAAC,IAAI,CAAC,8BAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,8BAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { ProjectParams } from './types';
|
|
2
2
|
import { ControlNetParams, ControlNetParamsRaw } from './types/ControlNetParams';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
validateNumber,
|
|
5
|
+
validateCustomImageSize,
|
|
6
|
+
validateSampler,
|
|
7
|
+
validateScheduler
|
|
8
|
+
} from '../lib/validation';
|
|
9
|
+
|
|
4
10
|
// Mac worker can't process the data if some of the fields are missing, so we need to provide a default template
|
|
5
11
|
function getTemplate() {
|
|
6
12
|
return {
|
|
@@ -25,8 +31,8 @@ function getTemplate() {
|
|
|
25
31
|
guidanceScaleIsEnabled: true,
|
|
26
32
|
siImageBackgroundColor: 'black',
|
|
27
33
|
cnDragOffset: [0, 0],
|
|
28
|
-
scheduler:
|
|
29
|
-
timeStepSpacing:
|
|
34
|
+
scheduler: null,
|
|
35
|
+
timeStepSpacing: null,
|
|
30
36
|
steps: 20,
|
|
31
37
|
cnRotation: 0,
|
|
32
38
|
guidanceScale: 7.5,
|
|
@@ -119,8 +125,8 @@ function createJobRequestMessage(id: string, params: ProjectParams) {
|
|
|
119
125
|
keyFrames: [
|
|
120
126
|
{
|
|
121
127
|
...template.keyFrames[0],
|
|
122
|
-
scheduler: params.
|
|
123
|
-
timeStepSpacing: params.
|
|
128
|
+
scheduler: validateSampler(params.sampler),
|
|
129
|
+
timeStepSpacing: validateScheduler(params.scheduler),
|
|
124
130
|
steps: params.steps,
|
|
125
131
|
guidanceScale: params.guidance,
|
|
126
132
|
modelID: params.modelId,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const SamplerMap = {
|
|
2
|
+
dfs_sd3: 'Discrete Flow Scheduler (SD3)',
|
|
3
|
+
dpm_pp: 'DPM Solver Multistep (DPM-Solver++)',
|
|
4
|
+
dpm_pp_sde: 'DPM++ SDE',
|
|
5
|
+
dpm_pp_2m: 'DPM++ 2M',
|
|
6
|
+
dpm_pp_2m_sde: 'DPM++ 2M SDE',
|
|
7
|
+
euler: 'Euler',
|
|
8
|
+
euler_a: 'Euler a',
|
|
9
|
+
heun: 'Heun',
|
|
10
|
+
lcm: 'LCM (Latent Consistency Model)',
|
|
11
|
+
pndm_plms: 'PNDM (Pseudo-linear multi-step)',
|
|
12
|
+
uni_pc: 'UniPC'
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export function isSampler(sampler: string): sampler is Sampler {
|
|
16
|
+
return sampler in SamplerMap;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type Sampler = keyof typeof SamplerMap;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const SchedulerMap = {
|
|
2
|
+
beta: 'Beta',
|
|
3
|
+
ddim: 'DDIM',
|
|
4
|
+
karras: 'Karras',
|
|
5
|
+
kl_optimal: 'KL Optimal',
|
|
6
|
+
leading: 'Automatic',
|
|
7
|
+
linear: 'Automatic',
|
|
8
|
+
normal: 'Normal',
|
|
9
|
+
sgm_uniform: 'SGM Uniform',
|
|
10
|
+
simple: 'Simple'
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export function isScheduler(scheduler: string): scheduler is Scheduler {
|
|
14
|
+
return scheduler in SchedulerMap;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type Scheduler = keyof typeof SchedulerMap;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SupernetType } from '../../ApiClient/WebSocketClient/types';
|
|
2
2
|
import { ControlNetParams } from './ControlNetParams';
|
|
3
3
|
import { TokenType } from '../../types/token';
|
|
4
|
+
import { Sampler } from './SamplerParams';
|
|
5
|
+
import { Scheduler } from './SchedulerParams';
|
|
4
6
|
|
|
5
7
|
export interface SupportedModel {
|
|
6
8
|
id: string;
|
|
@@ -23,15 +25,7 @@ export interface SizePreset {
|
|
|
23
25
|
aspect: string;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
export type Scheduler
|
|
27
|
-
| 'DPM Solver Multistep (DPM-Solver++)'
|
|
28
|
-
| 'PNDM (Pseudo-linear multi-step)'
|
|
29
|
-
| 'LCM (Latent Consistency Model)'
|
|
30
|
-
| 'Discrete Flow Scheduler (SD3)'
|
|
31
|
-
| 'Euler' // Used by Flux
|
|
32
|
-
| 'Euler a'; // Used by Flux
|
|
33
|
-
|
|
34
|
-
export type TimeStepSpacing = 'Leading' | 'Linear' | 'Karras' | 'Simple' | 'SGM Uniform';
|
|
28
|
+
export type { Sampler, Scheduler };
|
|
35
29
|
|
|
36
30
|
export type OutputFormat = 'png' | 'jpg';
|
|
37
31
|
|
|
@@ -108,11 +102,11 @@ export interface ProjectParams {
|
|
|
108
102
|
/**
|
|
109
103
|
* Scheduler to use
|
|
110
104
|
*/
|
|
111
|
-
|
|
105
|
+
sampler?: Sampler;
|
|
112
106
|
/**
|
|
113
107
|
* Time step spacing method
|
|
114
108
|
*/
|
|
115
|
-
|
|
109
|
+
scheduler?: Scheduler;
|
|
116
110
|
/**
|
|
117
111
|
* Size preset ID to use. You can query available size presets
|
|
118
112
|
* from `client.projects.sizePresets(network, modelId)`
|
|
@@ -204,7 +198,7 @@ export interface EstimateRequest {
|
|
|
204
198
|
/**
|
|
205
199
|
* Scheduler
|
|
206
200
|
*/
|
|
207
|
-
scheduler?:
|
|
201
|
+
scheduler?: Sampler;
|
|
208
202
|
/**
|
|
209
203
|
* Number of context images to use (for Flux Kontext).
|
|
210
204
|
* Note that this parameter is ignored if `scheduler` is not provided
|
package/src/index.ts
CHANGED
|
@@ -12,13 +12,7 @@ import EIP712Helper from './lib/EIP712Helper';
|
|
|
12
12
|
import ProjectsApi from './Projects';
|
|
13
13
|
import Job, { JobStatus } from './Projects/Job';
|
|
14
14
|
import Project, { ProjectStatus } from './Projects/Project';
|
|
15
|
-
import {
|
|
16
|
-
AvailableModel,
|
|
17
|
-
OutputFormat,
|
|
18
|
-
ProjectParams,
|
|
19
|
-
Scheduler,
|
|
20
|
-
TimeStepSpacing
|
|
21
|
-
} from './Projects/types';
|
|
15
|
+
import { AvailableModel, OutputFormat, ProjectParams, Sampler, Scheduler } from './Projects/types';
|
|
22
16
|
// Stats API
|
|
23
17
|
import StatsApi from './Stats';
|
|
24
18
|
// Base Types
|
|
@@ -36,9 +30,9 @@ export type {
|
|
|
36
30
|
OutputFormat,
|
|
37
31
|
ProjectParams,
|
|
38
32
|
ProjectStatus,
|
|
39
|
-
|
|
33
|
+
Sampler,
|
|
40
34
|
SupernetType,
|
|
41
|
-
|
|
35
|
+
Scheduler,
|
|
42
36
|
TokenType
|
|
43
37
|
};
|
|
44
38
|
|
package/src/lib/validation.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { isSampler, SamplerMap } from '../Projects/types/SamplerParams';
|
|
2
|
+
import { isScheduler, SchedulerMap } from '../Projects/types/SchedulerParams';
|
|
3
|
+
|
|
1
4
|
export function validateCustomImageSize(value: any): number {
|
|
2
5
|
return validateNumber(value, { min: 256, max: 2048, propertyName: 'Width and height' });
|
|
3
6
|
}
|
|
@@ -38,3 +41,27 @@ export function validateNumber(
|
|
|
38
41
|
}
|
|
39
42
|
return number;
|
|
40
43
|
}
|
|
44
|
+
|
|
45
|
+
export function validateSampler(value?: string) {
|
|
46
|
+
if (!value) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
if (!isSampler(value)) {
|
|
50
|
+
throw new Error(
|
|
51
|
+
`Invalid sampler: ${value}. Supported options: ${Object.keys(SamplerMap).join(', ')}`
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
return SamplerMap[value];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function validateScheduler(value?: string) {
|
|
58
|
+
if (!value) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (!isScheduler(value)) {
|
|
62
|
+
throw new Error(
|
|
63
|
+
`Invalid scheduler: ${value}. Supported options: ${Object.keys(SchedulerMap).join(', ')}`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
return SchedulerMap[value];
|
|
67
|
+
}
|