@sogni-ai/sogni-client 4.0.0-alpha.3 → 4.0.0-alpha.31

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.
Files changed (76) hide show
  1. package/CHANGELOG.md +220 -0
  2. package/README.md +279 -28
  3. package/dist/Account/index.d.ts +18 -16
  4. package/dist/Account/index.js +31 -20
  5. package/dist/Account/index.js.map +1 -1
  6. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.d.ts +66 -0
  7. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js +332 -0
  8. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js.map +1 -0
  9. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.d.ts +28 -0
  10. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +203 -0
  11. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -0
  12. package/dist/ApiClient/WebSocketClient/events.d.ts +11 -0
  13. package/dist/ApiClient/WebSocketClient/index.d.ts +2 -2
  14. package/dist/ApiClient/WebSocketClient/index.js +13 -3
  15. package/dist/ApiClient/WebSocketClient/index.js.map +1 -1
  16. package/dist/ApiClient/WebSocketClient/types.d.ts +13 -0
  17. package/dist/ApiClient/index.d.ts +4 -4
  18. package/dist/ApiClient/index.js +23 -4
  19. package/dist/ApiClient/index.js.map +1 -1
  20. package/dist/Projects/Job.d.ts +44 -4
  21. package/dist/Projects/Job.js +83 -16
  22. package/dist/Projects/Job.js.map +1 -1
  23. package/dist/Projects/Project.d.ts +18 -0
  24. package/dist/Projects/Project.js +34 -6
  25. package/dist/Projects/Project.js.map +1 -1
  26. package/dist/Projects/createJobRequestMessage.js +109 -15
  27. package/dist/Projects/createJobRequestMessage.js.map +1 -1
  28. package/dist/Projects/index.d.ts +110 -11
  29. package/dist/Projects/index.js +423 -42
  30. package/dist/Projects/index.js.map +1 -1
  31. package/dist/Projects/types/EstimationResponse.d.ts +2 -0
  32. package/dist/Projects/types/SamplerParams.d.ts +13 -0
  33. package/dist/Projects/types/SamplerParams.js +26 -0
  34. package/dist/Projects/types/SamplerParams.js.map +1 -0
  35. package/dist/Projects/types/SchedulerParams.d.ts +14 -0
  36. package/dist/Projects/types/SchedulerParams.js +24 -0
  37. package/dist/Projects/types/SchedulerParams.js.map +1 -0
  38. package/dist/Projects/types/events.d.ts +5 -1
  39. package/dist/Projects/types/index.d.ts +150 -39
  40. package/dist/Projects/types/index.js +13 -0
  41. package/dist/Projects/types/index.js.map +1 -1
  42. package/dist/Projects/utils.d.ts +19 -1
  43. package/dist/Projects/utils.js +68 -0
  44. package/dist/Projects/utils.js.map +1 -1
  45. package/dist/index.d.ts +12 -4
  46. package/dist/index.js +12 -4
  47. package/dist/index.js.map +1 -1
  48. package/dist/lib/AuthManager/TokenAuthManager.js +0 -2
  49. package/dist/lib/AuthManager/TokenAuthManager.js.map +1 -1
  50. package/dist/lib/DataEntity.js +4 -2
  51. package/dist/lib/DataEntity.js.map +1 -1
  52. package/dist/lib/validation.d.ts +7 -0
  53. package/dist/lib/validation.js +36 -0
  54. package/dist/lib/validation.js.map +1 -1
  55. package/package.json +4 -4
  56. package/src/Account/index.ts +30 -19
  57. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.ts +426 -0
  58. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +237 -0
  59. package/src/ApiClient/WebSocketClient/events.ts +13 -0
  60. package/src/ApiClient/WebSocketClient/index.ts +15 -5
  61. package/src/ApiClient/WebSocketClient/types.ts +16 -0
  62. package/src/ApiClient/index.ts +30 -8
  63. package/src/Projects/Job.ts +97 -16
  64. package/src/Projects/Project.ts +42 -9
  65. package/src/Projects/createJobRequestMessage.ts +155 -36
  66. package/src/Projects/index.ts +447 -46
  67. package/src/Projects/types/EstimationResponse.ts +2 -0
  68. package/src/Projects/types/SamplerParams.ts +24 -0
  69. package/src/Projects/types/SchedulerParams.ts +22 -0
  70. package/src/Projects/types/events.ts +6 -0
  71. package/src/Projects/types/index.ts +181 -47
  72. package/src/Projects/utils.ts +66 -1
  73. package/src/index.ts +38 -11
  74. package/src/lib/AuthManager/TokenAuthManager.ts +0 -2
  75. package/src/lib/DataEntity.ts +4 -2
  76. 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: 'DPM Solver Multistep (DPM-Solver++)',
29
- timeStepSpacing: 'Linear',
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 createJobRequestMessage(id, params) {
114
- var _a, _b;
115
- const template = getTemplate();
116
- const jobRequest = Object.assign(Object.assign({}, template), { keyFrames: [
117
- Object.assign(Object.assign({}, template.keyFrames[0]), { scheduler: params.scheduler || null, timeStepSpacing: params.timeStepSpacing || null, 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
- ? 1 - (Number(params.startingImageStrength) || 0.5)
119
- : undefined, sizePreset: params.sizePreset })
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
- jobRequest.keyFrames[0].currentControlNetsJob = getControlNet(params.controlNet);
156
+ keyFrame.currentControlNetsJob = getControlNet(params.controlNet);
126
157
  }
127
158
  if (params.sizePreset === 'custom') {
128
- jobRequest.keyFrames[0].width = (0, validation_1.validateCustomImageSize)(params.width);
129
- jobRequest.keyFrames[0].height = (0, validation_1.validateCustomImageSize)(params.height);
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":"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"}
1
+ {"version":3,"file":"createJobRequestMessage.js","sourceRoot":"","sources":["../../src/Projects/createJobRequestMessage.ts"],"names":[],"mappings":"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"}
@@ -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
- * Estimate project cost
70
+ * Upload reference image for WAN video workflows
71
+ * @internal
54
72
  */
55
- estimateCost({ network, tokenType, model, imageCount, stepCount, previewCount, cnEnabled, startingImageStrength, width, height, sizePreset, guidance, scheduler, contextImages }: EstimateRequest): Promise<{
56
- token: string;
57
- usd: string;
58
- }>;
59
- estimateEnhancementCost(strength: EnhancementStrength, tokenType?: TokenType): Promise<{
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 client.projects.getSizePresets('fast', 'flux1-schnell-fp8');
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.