@sogni-ai/sogni-client 4.0.0-alpha.3 → 4.0.0-alpha.30
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 +213 -0
- package/README.md +279 -28
- package/dist/Account/index.d.ts +18 -16
- package/dist/Account/index.js +31 -20
- package/dist/Account/index.js.map +1 -1
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.d.ts +66 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js +332 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js.map +1 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.d.ts +28 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +203 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -0
- package/dist/ApiClient/WebSocketClient/events.d.ts +11 -0
- package/dist/ApiClient/WebSocketClient/index.d.ts +2 -2
- package/dist/ApiClient/WebSocketClient/index.js +13 -3
- package/dist/ApiClient/WebSocketClient/index.js.map +1 -1
- package/dist/ApiClient/WebSocketClient/types.d.ts +13 -0
- package/dist/ApiClient/index.d.ts +4 -4
- package/dist/ApiClient/index.js +23 -4
- package/dist/ApiClient/index.js.map +1 -1
- package/dist/Projects/Job.d.ts +24 -4
- package/dist/Projects/Job.js +58 -16
- package/dist/Projects/Job.js.map +1 -1
- package/dist/Projects/Project.d.ts +8 -0
- package/dist/Projects/Project.js +27 -6
- package/dist/Projects/Project.js.map +1 -1
- package/dist/Projects/createJobRequestMessage.js +109 -15
- package/dist/Projects/createJobRequestMessage.js.map +1 -1
- package/dist/Projects/index.d.ts +110 -11
- package/dist/Projects/index.js +412 -42
- package/dist/Projects/index.js.map +1 -1
- package/dist/Projects/types/EstimationResponse.d.ts +2 -0
- package/dist/Projects/types/SamplerParams.d.ts +13 -0
- package/dist/Projects/types/SamplerParams.js +26 -0
- package/dist/Projects/types/SamplerParams.js.map +1 -0
- package/dist/Projects/types/SchedulerParams.d.ts +14 -0
- package/dist/Projects/types/SchedulerParams.js +24 -0
- package/dist/Projects/types/SchedulerParams.js.map +1 -0
- package/dist/Projects/types/events.d.ts +5 -1
- package/dist/Projects/types/index.d.ts +150 -39
- package/dist/Projects/types/index.js +13 -0
- package/dist/Projects/types/index.js.map +1 -1
- package/dist/Projects/utils.d.ts +19 -1
- package/dist/Projects/utils.js +68 -0
- package/dist/Projects/utils.js.map +1 -1
- package/dist/index.d.ts +12 -4
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/AuthManager/TokenAuthManager.js +0 -2
- package/dist/lib/AuthManager/TokenAuthManager.js.map +1 -1
- package/dist/lib/DataEntity.js +4 -2
- package/dist/lib/DataEntity.js.map +1 -1
- package/dist/lib/validation.d.ts +7 -0
- package/dist/lib/validation.js +36 -0
- package/dist/lib/validation.js.map +1 -1
- package/package.json +4 -4
- package/src/Account/index.ts +30 -19
- package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.ts +426 -0
- package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +237 -0
- package/src/ApiClient/WebSocketClient/events.ts +13 -0
- package/src/ApiClient/WebSocketClient/index.ts +15 -5
- package/src/ApiClient/WebSocketClient/types.ts +16 -0
- package/src/ApiClient/index.ts +30 -8
- package/src/Projects/Job.ts +64 -16
- package/src/Projects/Project.ts +29 -9
- package/src/Projects/createJobRequestMessage.ts +155 -36
- package/src/Projects/index.ts +437 -46
- package/src/Projects/types/EstimationResponse.ts +2 -0
- package/src/Projects/types/SamplerParams.ts +24 -0
- package/src/Projects/types/SchedulerParams.ts +22 -0
- package/src/Projects/types/events.ts +6 -0
- package/src/Projects/types/index.ts +181 -47
- package/src/Projects/utils.ts +66 -1
- package/src/index.ts +38 -11
- package/src/lib/AuthManager/TokenAuthManager.ts +0 -2
- package/src/lib/DataEntity.ts +4 -2
- package/src/lib/validation.ts +41 -0
|
@@ -1,6 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const types_1 = require("./types");
|
|
3
4
|
const validation_1 = require("../lib/validation");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
const ApiClient_1 = require("../ApiClient");
|
|
7
|
+
/**
|
|
8
|
+
* Validate that the provided assets match the workflow requirements.
|
|
9
|
+
* Throws an error if required assets are missing or forbidden assets are provided.
|
|
10
|
+
*/
|
|
11
|
+
function validateVideoWorkflowAssets(params) {
|
|
12
|
+
const workflowType = (0, utils_1.getVideoWorkflowType)(params.modelId);
|
|
13
|
+
if (!workflowType)
|
|
14
|
+
return;
|
|
15
|
+
const requirements = utils_1.VIDEO_WORKFLOW_ASSETS[workflowType];
|
|
16
|
+
if (!requirements)
|
|
17
|
+
return;
|
|
18
|
+
// Check for missing required assets
|
|
19
|
+
for (const [asset, requirement] of Object.entries(requirements)) {
|
|
20
|
+
const assetKey = asset;
|
|
21
|
+
const hasAsset = !!params[assetKey];
|
|
22
|
+
if (requirement === 'required' && !hasAsset) {
|
|
23
|
+
throw new ApiClient_1.ApiError(400, {
|
|
24
|
+
status: 'error',
|
|
25
|
+
errorCode: 0,
|
|
26
|
+
message: `${workflowType} workflow requires ${assetKey}. Please provide this asset.`
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
if (requirement === 'forbidden' && hasAsset) {
|
|
30
|
+
throw new ApiClient_1.ApiError(400, {
|
|
31
|
+
status: 'error',
|
|
32
|
+
errorCode: 0,
|
|
33
|
+
message: `${workflowType} workflow does not support ${assetKey}. Please remove this asset.`
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
4
38
|
// Mac worker can't process the data if some of the fields are missing, so we need to provide a default template
|
|
5
39
|
function getTemplate() {
|
|
6
40
|
return {
|
|
@@ -25,8 +59,8 @@ function getTemplate() {
|
|
|
25
59
|
guidanceScaleIsEnabled: true,
|
|
26
60
|
siImageBackgroundColor: 'black',
|
|
27
61
|
cnDragOffset: [0, 0],
|
|
28
|
-
scheduler:
|
|
29
|
-
timeStepSpacing:
|
|
62
|
+
scheduler: null,
|
|
63
|
+
timeStepSpacing: null,
|
|
30
64
|
steps: 20,
|
|
31
65
|
cnRotation: 0,
|
|
32
66
|
guidanceScale: 7.5,
|
|
@@ -110,23 +144,83 @@ function getControlNet(params) {
|
|
|
110
144
|
}
|
|
111
145
|
return [cn];
|
|
112
146
|
}
|
|
113
|
-
function
|
|
114
|
-
var _a, _b;
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
], previews: params.numberOfPreviews || 0, numberOfImages: params.numberOfImages, jobID: id, disableSafety: !!params.disableNSFWFilter, tokenType: params.tokenType, outputFormat: params.outputFormat || 'png' });
|
|
121
|
-
if (params.network) {
|
|
122
|
-
jobRequest.network = params.network;
|
|
147
|
+
function applyImageParams(inputKeyframe, params) {
|
|
148
|
+
var _a, _b, _c;
|
|
149
|
+
const keyFrame = Object.assign(Object.assign({}, inputKeyframe), { scheduler: (0, validation_1.validateSampler)(params.sampler), timeStepSpacing: (0, validation_1.validateScheduler)(params.scheduler), sizePreset: params.sizePreset, hasContextImage1: !!((_a = params.contextImages) === null || _a === void 0 ? void 0 : _a[0]), hasContextImage2: !!((_b = params.contextImages) === null || _b === void 0 ? void 0 : _b[1]), hasContextImage3: !!((_c = params.contextImages) === null || _c === void 0 ? void 0 : _c[2]) });
|
|
150
|
+
if (params.startingImage) {
|
|
151
|
+
keyFrame.hasStartingImage = true;
|
|
152
|
+
keyFrame.strengthIsEnabled = true;
|
|
153
|
+
keyFrame.strength = 1 - (Number(params.startingImageStrength) || 0.5);
|
|
123
154
|
}
|
|
124
155
|
if (params.controlNet) {
|
|
125
|
-
|
|
156
|
+
keyFrame.currentControlNetsJob = getControlNet(params.controlNet);
|
|
126
157
|
}
|
|
127
158
|
if (params.sizePreset === 'custom') {
|
|
128
|
-
|
|
129
|
-
|
|
159
|
+
keyFrame.width = (0, validation_1.validateCustomImageSize)(params.width);
|
|
160
|
+
keyFrame.height = (0, validation_1.validateCustomImageSize)(params.height);
|
|
161
|
+
}
|
|
162
|
+
return keyFrame;
|
|
163
|
+
}
|
|
164
|
+
function applyVideoParams(inputKeyframe, params) {
|
|
165
|
+
if (!(0, utils_1.isVideoModel)(params.modelId)) {
|
|
166
|
+
throw new ApiClient_1.ApiError(400, {
|
|
167
|
+
status: 'error',
|
|
168
|
+
errorCode: 0,
|
|
169
|
+
message: 'Video generation is only supported for video models.'
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
validateVideoWorkflowAssets(params);
|
|
173
|
+
const keyFrame = Object.assign({}, inputKeyframe);
|
|
174
|
+
if (params.referenceImage) {
|
|
175
|
+
keyFrame.hasReferenceImage = true;
|
|
176
|
+
}
|
|
177
|
+
if (params.referenceImageEnd) {
|
|
178
|
+
keyFrame.hasReferenceImageEnd = true;
|
|
179
|
+
}
|
|
180
|
+
if (params.referenceAudio) {
|
|
181
|
+
keyFrame.hasReferenceAudio = true;
|
|
182
|
+
}
|
|
183
|
+
if (params.referenceVideo) {
|
|
184
|
+
keyFrame.hasReferenceVideo = true;
|
|
185
|
+
}
|
|
186
|
+
// Video generation parameters
|
|
187
|
+
if (params.frames !== undefined) {
|
|
188
|
+
keyFrame.frames = params.frames;
|
|
189
|
+
}
|
|
190
|
+
if (params.fps !== undefined) {
|
|
191
|
+
keyFrame.fps = params.fps;
|
|
192
|
+
}
|
|
193
|
+
if (params.shift !== undefined) {
|
|
194
|
+
keyFrame.shift = params.shift;
|
|
195
|
+
}
|
|
196
|
+
// Validate and set video dimensions (minimum 480px for Wan 2.2 models)
|
|
197
|
+
if (params.width && params.height) {
|
|
198
|
+
keyFrame.width = (0, validation_1.validateVideoSize)(params.width, 'width');
|
|
199
|
+
keyFrame.height = (0, validation_1.validateVideoSize)(params.height, 'height');
|
|
200
|
+
}
|
|
201
|
+
return keyFrame;
|
|
202
|
+
}
|
|
203
|
+
function createJobRequestMessage(id, params) {
|
|
204
|
+
const template = getTemplate();
|
|
205
|
+
// Base keyFrame with common params
|
|
206
|
+
let keyFrame = Object.assign(Object.assign({}, template.keyFrames[0]), { steps: params.steps, guidanceScale: params.guidance, modelID: params.modelId, negativePrompt: params.negativePrompt, seed: params.seed, positivePrompt: params.positivePrompt, stylePrompt: params.stylePrompt });
|
|
207
|
+
switch (params.type) {
|
|
208
|
+
case 'image':
|
|
209
|
+
keyFrame = applyImageParams(keyFrame, params);
|
|
210
|
+
break;
|
|
211
|
+
case 'video':
|
|
212
|
+
keyFrame = applyVideoParams(keyFrame, params);
|
|
213
|
+
break;
|
|
214
|
+
default:
|
|
215
|
+
throw new ApiClient_1.ApiError(400, {
|
|
216
|
+
status: 'error',
|
|
217
|
+
errorCode: 0,
|
|
218
|
+
message: 'Invalid project type. Must be "image" or "video".'
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
const jobRequest = Object.assign(Object.assign({}, template), { keyFrames: [keyFrame], previews: (0, types_1.isImageParams)(params) ? params.numberOfPreviews || 0 : 0, numberOfImages: params.numberOfMedia || 1, jobID: id, disableSafety: !!params.disableNSFWFilter, tokenType: params.tokenType, outputFormat: params.outputFormat || ((0, types_1.isVideoParams)(params) ? 'mp4' : 'png') });
|
|
222
|
+
if (params.network) {
|
|
223
|
+
jobRequest.network = params.network;
|
|
130
224
|
}
|
|
131
225
|
return jobRequest;
|
|
132
226
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createJobRequestMessage.js","sourceRoot":"","sources":["../../src/Projects/createJobRequestMessage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"createJobRequestMessage.js","sourceRoot":"","sources":["../../src/Projects/createJobRequestMessage.ts"],"names":[],"mappings":";;AAAA,mCAMiB;AAEjB,kDAM2B;AAC3B,mCAAoF;AACpF,4CAAwC;AAExC;;;GAGG;AACH,SAAS,2BAA2B,CAAC,MAA0B;IAC7D,MAAM,YAAY,GAAG,IAAA,4BAAoB,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,MAAM,YAAY,GAAG,6BAAqB,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,CAAC,YAAY;QAAE,OAAO;IAC1B,oCAAoC;IACpC,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,KAAiC,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,WAAW,KAAK,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,oBAAQ,CAAC,GAAG,EAAE;gBACtB,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,GAAG,YAAY,sBAAsB,QAAQ,8BAA8B;aACrF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,WAAW,KAAK,WAAW,IAAI,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,oBAAQ,CAAC,GAAG,EAAE;gBACtB,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,GAAG,YAAY,8BAA8B,QAAQ,6BAA6B;aAC5F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,gHAAgH;AAChH,SAAS,WAAW;IAClB,OAAO;QACL,sBAAsB,EAAE,KAAK;QAC7B,mBAAmB,EAAE,EAAE;QACvB,6BAA6B,EAAE,EAAE;QACjC,iBAAiB,EAAE,EAAE;QACrB,gBAAgB,EAAE,KAAK;QACvB,aAAa,EAAE,KAAK;QACpB,iBAAiB,EAAE,EAAE;QACrB,kBAAkB,EAAE,EAAE;QACtB,SAAS,EAAE;YACT;gBACE,cAAc,EAAE,IAAI;gBACpB,UAAU,EAAE,CAAC;gBACb,qBAAqB,EAAE,IAAI;gBAC3B,QAAQ,EAAE,GAAG;gBACb,oBAAoB,EAAE,IAAI;gBAC1B,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,UAAU;gBACtB,mCAAmC,EAAE,IAAI;gBACzC,sBAAsB,EAAE,IAAI;gBAC5B,sBAAsB,EAAE,OAAO;gBAC/B,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,SAAS,EAAE,IAAI;gBACf,eAAe,EAAE,IAAI;gBACrB,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,CAAC;gBACb,aAAa,EAAE,GAAG;gBAClB,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,EAAE;gBACX,mBAAmB,EAAE,IAAI;gBACzB,cAAc,EAAE,EAAE;gBAClB,wBAAwB,EAAE,KAAK;gBAC/B,IAAI,EAAE,SAAS;gBACf,mBAAmB,EAAE,IAAI;gBACzB,sBAAsB,EAAE,OAAO;gBAC/B,iBAAiB,EAAE,IAAI;gBACvB,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,gCAAgC,EAAE,KAAK;gBACvC,cAAc,EAAE,EAAE;gBAClB,qBAAqB,EAAE,KAAK;gBAC5B,oBAAoB,EAAE,IAAI;gBAC1B,kBAAkB,EAAE,IAAI;gBACxB,WAAW,EAAE,EAAE;gBACf,qBAAqB,EAAE,IAAI;gBAC3B,UAAU,EAAE,CAAC;gBACb,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,CAAC;aACf;SACF;QACD,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,EAAE;QACb,qBAAqB,EAAE,EAAE;QACzB,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,KAAK;QACpB,gCAAgC,EAAE,EAAE;QACpC,sBAAsB,EAAE,EAAE;QAC1B,cAAc,EAAE,CAAC;QACjB,iBAAiB,EAAE,EAAE;QACrB,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAwB;IAC7C,MAAM,EAAE,GAAwB;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,YAAY,EAAE,UAAU;QACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;KACzB,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,EAAE,CAAC,eAAe,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,QAAQ,EAAE;YACnD,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,YAAY,EAAE,UAAU;SACzB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,UAAU;gBACb,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;gBACnB,MAAM;YACR,KAAK,iBAAiB;gBACpB,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;gBACnB,MAAM;YACR,KAAK,aAAa;gBAChB,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;gBACnB,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,EAAE,CAAC,oBAAoB,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,aAAa,EAAE;YAC7D,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,YAAY,EAAE,eAAe;SAC9B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,EAAE,CAAC,kBAAkB,GAAG,IAAA,2BAAc,EAAC,MAAM,CAAC,WAAW,EAAE;YACzD,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAkC,EAAE,MAA0B;;IACtF,MAAM,QAAQ,mCACT,aAAa,KAChB,SAAS,EAAE,IAAA,4BAAe,EAAC,MAAM,CAAC,OAAO,CAAC,EAC1C,eAAe,EAAE,IAAA,8BAAiB,EAAC,MAAM,CAAC,SAAS,CAAC,EACpD,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,gBAAgB,EAAE,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,aAAa,0CAAG,CAAC,CAAC,CAAA,EAC7C,gBAAgB,EAAE,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,aAAa,0CAAG,CAAC,CAAC,CAAA,EAC7C,gBAAgB,EAAE,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,aAAa,0CAAG,CAAC,CAAC,CAAA,GAC9C,CAAC;IAEF,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACjC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,QAAQ,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,QAAQ,CAAC,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,QAAQ,CAAC,KAAK,GAAG,IAAA,oCAAuB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,QAAQ,CAAC,MAAM,GAAG,IAAA,oCAAuB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAkC,EAAE,MAA0B;IACtF,IAAI,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,oBAAQ,CAAC,GAAG,EAAE;YACtB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,sDAAsD;SAChE,CAAC,CAAC;IACL,CAAC;IACD,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,QAAQ,qBAA6B,aAAa,CAAE,CAAC;IAC3D,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAChC,CAAC;IAED,uEAAuE;IACvE,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1D,QAAQ,CAAC,MAAM,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAU,EAAE,MAAqB;IAChE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,mCAAmC;IACnC,IAAI,QAAQ,mCACP,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KACxB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,aAAa,EAAE,MAAM,CAAC,QAAQ,EAC9B,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,cAAc,EAAE,MAAM,CAAC,cAAc,EACrC,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,cAAc,EAAE,MAAM,CAAC,cAAc,EACrC,WAAW,EAAE,MAAM,CAAC,WAAW,GAChC,CAAC;IAEF,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO;YACV,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM;QACR,KAAK,OAAO;YACV,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM;QACR;YACE,MAAM,IAAI,oBAAQ,CAAC,GAAG,EAAE;gBACtB,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,mDAAmD;aAC7D,CAAC,CAAC;IACP,CAAC;IAED,MAAM,UAAU,mCACX,QAAQ,KACX,SAAS,EAAE,CAAC,QAAQ,CAAC,EACrB,QAAQ,EAAE,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAClE,cAAc,EAAE,MAAM,CAAC,aAAa,IAAI,CAAC,EACzC,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,EACzC,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAC7E,CAAC;IAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAID,kBAAe,uBAAuB,CAAC"}
|
package/dist/Projects/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ApiGroup, { ApiConfig } from '../ApiGroup';
|
|
2
|
-
import { AvailableModel, EnhancementStrength, EstimateRequest, ImageUrlParams, ProjectParams, SizePreset, SupportedModel } from './types';
|
|
2
|
+
import { AvailableModel, EnhancementStrength, EstimateRequest, ImageUrlParams, MediaUrlParams, CostEstimation, ProjectParams, SizePreset, SupportedModel, VideoEstimateRequest } from './types';
|
|
3
3
|
import Project from './Project';
|
|
4
4
|
import { ProjectApiEvents } from './types/events';
|
|
5
5
|
import { RawProject } from './types/RawProject';
|
|
@@ -10,11 +10,26 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
|
|
|
10
10
|
private projects;
|
|
11
11
|
private _supportedModels;
|
|
12
12
|
get availableModels(): AvailableModel[];
|
|
13
|
+
/**
|
|
14
|
+
* Check if a model produces video output using the cached models list.
|
|
15
|
+
* Uses the `media` property from the models API when available,
|
|
16
|
+
* falls back to model ID prefix check if models aren't loaded yet.
|
|
17
|
+
*/
|
|
18
|
+
isVideoModelId(modelId: string): boolean;
|
|
13
19
|
constructor(config: ApiConfig);
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves a list of projects created and tracked by this SogniClient instance.
|
|
22
|
+
*
|
|
23
|
+
* Note: When a project is finished, it will be removed from this list after 30 seconds
|
|
24
|
+
*
|
|
25
|
+
* @return {Array} A copy of the array containing the tracked projects.
|
|
26
|
+
*/
|
|
27
|
+
get trackedProjects(): Project[];
|
|
14
28
|
private handleChangeNetwork;
|
|
15
29
|
private handleSwarmModels;
|
|
16
30
|
private handleJobState;
|
|
17
31
|
private handleJobProgress;
|
|
32
|
+
private handleJobETA;
|
|
18
33
|
private handleJobResult;
|
|
19
34
|
private handleJobError;
|
|
20
35
|
private handleProjectEvent;
|
|
@@ -28,10 +43,12 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
|
|
|
28
43
|
waitForModels(timeout?: number): Promise<AvailableModel[]>;
|
|
29
44
|
/**
|
|
30
45
|
* Send new project request to the network. Returns project instance which can be used to track
|
|
31
|
-
* progress and get resulting images.
|
|
46
|
+
* progress and get resulting images or videos.
|
|
32
47
|
* @param data
|
|
33
48
|
*/
|
|
34
49
|
create(data: ProjectParams): Promise<Project>;
|
|
50
|
+
private _processImageAssets;
|
|
51
|
+
private _processVideoAssets;
|
|
35
52
|
/**
|
|
36
53
|
* Get project by id, this API returns project data from the server only if the project is
|
|
37
54
|
* completed or failed. If the project is still processing, it will throw 404 error.
|
|
@@ -50,35 +67,87 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
|
|
|
50
67
|
private uploadCNImage;
|
|
51
68
|
private uploadContextImage;
|
|
52
69
|
/**
|
|
53
|
-
*
|
|
70
|
+
* Upload reference image for WAN video workflows
|
|
71
|
+
* @internal
|
|
54
72
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
73
|
+
private uploadReferenceImage;
|
|
74
|
+
/**
|
|
75
|
+
* Upload reference image end for i2v interpolation
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
private uploadReferenceImageEnd;
|
|
79
|
+
/**
|
|
80
|
+
* Upload reference audio for s2v workflows
|
|
81
|
+
* Supported formats: mp3, m4a, wav
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
private uploadReferenceAudio;
|
|
85
|
+
/**
|
|
86
|
+
* Upload reference video for animate workflows
|
|
87
|
+
* Supported formats: mp4, mov
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
90
|
+
private uploadReferenceVideo;
|
|
91
|
+
/**
|
|
92
|
+
* Estimate image project cost
|
|
93
|
+
*/
|
|
94
|
+
estimateCost({ network, tokenType, model, imageCount, stepCount, previewCount, cnEnabled, startingImageStrength, width, height, sizePreset, guidance, sampler, contextImages }: EstimateRequest): Promise<CostEstimation>;
|
|
95
|
+
/**
|
|
96
|
+
* Estimate image enhancement cost
|
|
97
|
+
* @param strength
|
|
98
|
+
* @param tokenType
|
|
99
|
+
*/
|
|
100
|
+
estimateEnhancementCost(strength: EnhancementStrength, tokenType?: TokenType): Promise<CostEstimation>;
|
|
101
|
+
/**
|
|
102
|
+
* Estimates the cost of generating a video based on the provided parameters.
|
|
103
|
+
*
|
|
104
|
+
* @param {VideoEstimateRequest} params - The parameters required for video cost estimation. This includes:
|
|
105
|
+
* - tokenType: The type of token to be used for generation.
|
|
106
|
+
* - model: The model to be used for video generation.
|
|
107
|
+
* - width: The width of the video in pixels.
|
|
108
|
+
* - height: The height of the video in pixels.
|
|
109
|
+
* - frames: The total number of frames in the video.
|
|
110
|
+
* - fps: The frames per second for the video.
|
|
111
|
+
* - steps: Number of steps.
|
|
112
|
+
* @return {Promise<Object>} Returns an object containing the estimated costs for the video in different units:
|
|
113
|
+
* - token: Cost in tokens.
|
|
114
|
+
* - usd: Cost in USD.
|
|
115
|
+
* - spark: Cost in Spark.
|
|
116
|
+
* - sogni: Cost in Sogni.
|
|
117
|
+
*/
|
|
118
|
+
estimateVideoCost(params: VideoEstimateRequest): Promise<{
|
|
60
119
|
token: string;
|
|
61
120
|
usd: string;
|
|
121
|
+
spark: string;
|
|
122
|
+
sogni: string;
|
|
62
123
|
}>;
|
|
63
124
|
/**
|
|
64
125
|
* Get upload URL for image
|
|
65
126
|
* @internal
|
|
66
|
-
* @param params
|
|
67
127
|
*/
|
|
68
128
|
uploadUrl(params: ImageUrlParams): Promise<string>;
|
|
69
129
|
/**
|
|
70
130
|
* Get download URL for image
|
|
71
131
|
* @internal
|
|
72
|
-
* @param params
|
|
73
132
|
*/
|
|
74
133
|
downloadUrl(params: ImageUrlParams): Promise<string>;
|
|
134
|
+
/**
|
|
135
|
+
* Get upload URL for media (video/audio)
|
|
136
|
+
* @internal
|
|
137
|
+
*/
|
|
138
|
+
mediaUploadUrl(params: MediaUrlParams): Promise<string>;
|
|
139
|
+
/**
|
|
140
|
+
* Get download URL for media (video/audio)
|
|
141
|
+
* @internal
|
|
142
|
+
*/
|
|
143
|
+
mediaDownloadUrl(params: MediaUrlParams): Promise<string>;
|
|
75
144
|
getSupportedModels(forceRefresh?: boolean): Promise<SupportedModel[]>;
|
|
76
145
|
/**
|
|
77
146
|
* Get supported size presets for the model and network. Size presets are cached for 10 minutes.
|
|
78
147
|
*
|
|
79
148
|
* @example
|
|
80
149
|
* ```ts
|
|
81
|
-
* const presets = await
|
|
150
|
+
* const presets = await sogni.projects.getSizePresets('fast', 'flux1-schnell-fp8');
|
|
82
151
|
* console.log(presets);
|
|
83
152
|
* ```
|
|
84
153
|
*
|
|
@@ -95,6 +164,36 @@ declare class ProjectsApi extends ApiGroup<ProjectApiEvents> {
|
|
|
95
164
|
* }[]>}
|
|
96
165
|
*/
|
|
97
166
|
getSizePresets(network: SupernetType, modelId: string, forceRefresh?: boolean): Promise<SizePreset[]>;
|
|
167
|
+
/**
|
|
168
|
+
* Retrieves the video asset configuration for a given video model identifier.
|
|
169
|
+
* Validates whether the provided model ID corresponds to a video model. If it does,
|
|
170
|
+
* returns the appropriate video asset configuration based on the workflow type.
|
|
171
|
+
*
|
|
172
|
+
* @example Returned object for a model that implements image to video workflow:
|
|
173
|
+
* ```json
|
|
174
|
+
* {
|
|
175
|
+
* "workflowType": "i2v",
|
|
176
|
+
* "assets": {
|
|
177
|
+
* "referenceImage": "required",
|
|
178
|
+
* "referenceImageEnd": "optional",
|
|
179
|
+
* "referenceAudio": "forbidden",
|
|
180
|
+
* "referenceVideo": "forbidden"
|
|
181
|
+
* }
|
|
182
|
+
* }
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* @param {string} modelId - The identifier of the video model to retrieve the configuration for.
|
|
186
|
+
* @return {Object} The video asset configuration object where key is asset field and value is
|
|
187
|
+
* either `required`, `forbidden` or `optional`. Returns `null` if no rules defined for the model.
|
|
188
|
+
* @throws {ApiError} Throws an error if the provided model ID is not a video model.
|
|
189
|
+
*/
|
|
190
|
+
getVideoAssetConfig(modelId: string): Promise<{
|
|
191
|
+
workflowType: null;
|
|
192
|
+
assets?: undefined;
|
|
193
|
+
} | {
|
|
194
|
+
workflowType: "t2v" | "i2v" | "s2v" | "animate-move" | "animate-replace";
|
|
195
|
+
assets: Record<import("./types").VideoAssetKey, import("./types").AssetRequirement>;
|
|
196
|
+
}>;
|
|
98
197
|
/**
|
|
99
198
|
* Get available models and their worker counts. Normally, you would get list once you connect
|
|
100
199
|
* to the server, but you can also call this method to get the list of available models manually.
|