@sogni-ai/sogni-client 4.0.0-alpha.9 → 4.0.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.
Files changed (95) hide show
  1. package/CHANGELOG.md +268 -0
  2. package/README.md +262 -27
  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 +12 -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 +38 -10
  25. package/dist/Projects/Project.js.map +1 -1
  26. package/dist/Projects/createJobRequestMessage.js +170 -13
  27. package/dist/Projects/createJobRequestMessage.js.map +1 -1
  28. package/dist/Projects/index.d.ts +112 -11
  29. package/dist/Projects/index.js +473 -45
  30. package/dist/Projects/index.js.map +1 -1
  31. package/dist/Projects/types/ComfySamplerParams.d.ts +28 -0
  32. package/dist/Projects/types/ComfySamplerParams.js +36 -0
  33. package/dist/Projects/types/ComfySamplerParams.js.map +1 -0
  34. package/dist/Projects/types/ComfySchedulerParams.d.ts +17 -0
  35. package/dist/Projects/types/ComfySchedulerParams.js +23 -0
  36. package/dist/Projects/types/ComfySchedulerParams.js.map +1 -0
  37. package/dist/Projects/types/EstimationResponse.d.ts +2 -0
  38. package/dist/Projects/types/ForgeSamplerParams.d.ts +27 -0
  39. package/dist/Projects/types/ForgeSamplerParams.js +39 -0
  40. package/dist/Projects/types/ForgeSamplerParams.js.map +1 -0
  41. package/dist/Projects/types/ForgeSchedulerParams.d.ts +17 -0
  42. package/dist/Projects/types/ForgeSchedulerParams.js +28 -0
  43. package/dist/Projects/types/ForgeSchedulerParams.js.map +1 -0
  44. package/dist/Projects/types/events.d.ts +5 -1
  45. package/dist/Projects/types/index.d.ts +205 -38
  46. package/dist/Projects/types/index.js +17 -0
  47. package/dist/Projects/types/index.js.map +1 -1
  48. package/dist/Projects/utils.d.ts +19 -1
  49. package/dist/Projects/utils.js +68 -0
  50. package/dist/Projects/utils.js.map +1 -1
  51. package/dist/index.d.ts +12 -4
  52. package/dist/index.js +14 -4
  53. package/dist/index.js.map +1 -1
  54. package/dist/lib/AuthManager/TokenAuthManager.js +0 -2
  55. package/dist/lib/AuthManager/TokenAuthManager.js.map +1 -1
  56. package/dist/lib/DataEntity.js +4 -2
  57. package/dist/lib/DataEntity.js.map +1 -1
  58. package/dist/lib/RestClient.js +15 -2
  59. package/dist/lib/RestClient.js.map +1 -1
  60. package/dist/lib/validation.d.ts +26 -2
  61. package/dist/lib/validation.js +95 -10
  62. package/dist/lib/validation.js.map +1 -1
  63. package/package.json +4 -4
  64. package/src/Account/index.ts +30 -19
  65. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.ts +426 -0
  66. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +237 -0
  67. package/src/ApiClient/WebSocketClient/events.ts +14 -0
  68. package/src/ApiClient/WebSocketClient/index.ts +15 -5
  69. package/src/ApiClient/WebSocketClient/types.ts +16 -0
  70. package/src/ApiClient/index.ts +30 -8
  71. package/src/Projects/Job.ts +97 -16
  72. package/src/Projects/Project.ts +46 -13
  73. package/src/Projects/createJobRequestMessage.ts +222 -35
  74. package/src/Projects/index.ts +504 -49
  75. package/src/Projects/types/ComfySamplerParams.ts +34 -0
  76. package/src/Projects/types/ComfySchedulerParams.ts +21 -0
  77. package/src/Projects/types/EstimationResponse.ts +2 -0
  78. package/src/Projects/types/ForgeSamplerParams.ts +37 -0
  79. package/src/Projects/types/ForgeSchedulerParams.ts +26 -0
  80. package/src/Projects/types/events.ts +6 -0
  81. package/src/Projects/types/index.ts +243 -39
  82. package/src/Projects/utils.ts +66 -1
  83. package/src/index.ts +60 -8
  84. package/src/lib/AuthManager/TokenAuthManager.ts +0 -2
  85. package/src/lib/DataEntity.ts +4 -2
  86. package/src/lib/RestClient.ts +16 -2
  87. package/src/lib/validation.ts +111 -14
  88. package/dist/Projects/types/SamplerParams.d.ts +0 -12
  89. package/dist/Projects/types/SamplerParams.js +0 -21
  90. package/dist/Projects/types/SamplerParams.js.map +0 -1
  91. package/dist/Projects/types/SchedulerParams.d.ts +0 -13
  92. package/dist/Projects/types/SchedulerParams.js +0 -19
  93. package/dist/Projects/types/SchedulerParams.js.map +0 -1
  94. package/src/Projects/types/SamplerParams.ts +0 -19
  95. package/src/Projects/types/SchedulerParams.ts +0 -17
@@ -34,7 +34,20 @@ class RestClient extends TypedEventEmitter_1.default {
34
34
  request(url_1) {
35
35
  return __awaiter(this, arguments, void 0, function* (url, options = {}) {
36
36
  const init = yield this.auth.authenticateRequest(options);
37
- return fetch(url, init).then((r) => this.processResponse(r));
37
+ // Add a timeout to detect hanging requests
38
+ const controller = new AbortController();
39
+ const timeoutId = setTimeout(() => {
40
+ controller.abort();
41
+ }, 30000);
42
+ try {
43
+ const response = yield fetch(url, Object.assign(Object.assign({}, init), { signal: controller.signal }));
44
+ clearTimeout(timeoutId);
45
+ return this.processResponse(response);
46
+ }
47
+ catch (fetchError) {
48
+ clearTimeout(timeoutId);
49
+ throw fetchError;
50
+ }
38
51
  });
39
52
  }
40
53
  processResponse(response) {
@@ -58,7 +71,7 @@ class RestClient extends TypedEventEmitter_1.default {
58
71
  });
59
72
  }
60
73
  get(path, query = {}) {
61
- return this.request(this.formatUrl(path, query), query);
74
+ return this.request(this.formatUrl(path, query));
62
75
  }
63
76
  post(path, body = {}) {
64
77
  return this.request(this.formatUrl(path), {
@@ -1 +1 @@
1
- {"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../src/lib/RestClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAA0D;AAC1D,4EAAkE;AAKlE,MAAM,UAAuC,SAAQ,2BAAoB;IAKvE,YAAY,OAAe,EAAE,IAAiB,EAAE,MAAc;QAC5D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,SAAS,CAAC,WAAmB,EAAE,QAAgC,EAAE;QACvE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEa,OAAO;6DAAgB,GAAW,EAAE,UAAuB,EAAE;YACzE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC1D,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAM,CAAC,CAAC;QACpE,CAAC;KAAA;IAEa,eAAe,CAAC,QAAkB;;YAC9C,IAAI,YAAY,CAAC;YACjB,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YACD,0FAA0F;YAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,oBAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAgC,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,YAAyB,CAAC;QACnC,CAAC;KAAA;IAED,GAAG,CAAgB,IAAY,EAAE,QAA6B,EAAE;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAgB,IAAY,EAAE,OAAgC,EAAE;QAClE,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF;AAED,kBAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../src/lib/RestClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAA0D;AAC1D,4EAAkE;AAKlE,MAAM,UAAuC,SAAQ,2BAAoB;IAKvE,YAAY,OAAe,EAAE,IAAiB,EAAE,MAAc;QAC5D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,SAAS,CAAC,WAAmB,EAAE,QAAgC,EAAE;QACvE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEa,OAAO;6DAAgB,GAAW,EAAE,UAAuB,EAAE;YACzE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAE1D,2CAA2C;YAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC,EAAE,KAAK,CAAC,CAAC;YAEV,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,kCAAO,IAAI,KAAE,MAAM,EAAE,UAAU,CAAC,MAAM,IAAG,CAAC;gBAC1E,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAM,CAAC;YAC7C,CAAC;YAAC,OAAO,UAAe,EAAE,CAAC;gBACzB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM,UAAU,CAAC;YACnB,CAAC;QACH,CAAC;KAAA;IAEa,eAAe,CAAC,QAAkB;;YAC9C,IAAI,YAAY,CAAC;YACjB,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YACD,0FAA0F;YAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,oBAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAgC,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,YAAyB,CAAC;QACnC,CAAC;KAAA;IAED,GAAG,CAAgB,IAAY,EAAE,QAA6B,EAAE;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAgB,IAAY,EAAE,OAAgC,EAAE;QAClE,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF;AAED,kBAAe,UAAU,CAAC"}
@@ -1,4 +1,10 @@
1
1
  export declare function validateCustomImageSize(value: any): number;
2
+ /**
3
+ * Validate video dimensions for Wan 2.2 models.
4
+ * Minimum dimension is 480px for both width and height.
5
+ */
6
+ export declare function validateVideoSize(value: any, propertyName: 'width' | 'height'): number;
7
+ export declare function validateVideoDuration(value: any): number;
2
8
  interface NumberValidationOptions {
3
9
  min?: number;
4
10
  max?: number;
@@ -6,6 +12,24 @@ interface NumberValidationOptions {
6
12
  defaultValue?: number;
7
13
  }
8
14
  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;
15
+ export declare function validateForgeSampler(value?: string): string | null;
16
+ export declare function validateForgeScheduler(value?: string): string | null;
17
+ /**
18
+ * Validate teacacheThreshold for T2V and I2V models.
19
+ * Range: 0.0-1.0. 0.0 = disabled.
20
+ */
21
+ export declare function validateTeacacheThreshold(value?: number): number | undefined;
22
+ /**
23
+ * Validate ComfyUI sampler for video models.
24
+ * Returns the sampler string directly (no mapping needed).
25
+ */
26
+ export declare function validateComfySampler(value?: string): string | undefined;
27
+ /**
28
+ * Validate ComfyUI scheduler for video models.
29
+ * Returns the scheduler string directly (no mapping needed).
30
+ */
31
+ export declare function validateComfyScheduler(value?: string): string | undefined;
32
+ export declare function isComfyModel(modelId: string): boolean;
33
+ export declare function validateSampler(modelId: string, sampler: string): string | null | undefined;
34
+ export declare function validateScheduler(modelId: string, scheduler: string): string | null | undefined;
11
35
  export {};
@@ -1,14 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateCustomImageSize = validateCustomImageSize;
4
+ exports.validateVideoSize = validateVideoSize;
5
+ exports.validateVideoDuration = validateVideoDuration;
4
6
  exports.validateNumber = validateNumber;
7
+ exports.validateForgeSampler = validateForgeSampler;
8
+ exports.validateForgeScheduler = validateForgeScheduler;
9
+ exports.validateTeacacheThreshold = validateTeacacheThreshold;
10
+ exports.validateComfySampler = validateComfySampler;
11
+ exports.validateComfyScheduler = validateComfyScheduler;
12
+ exports.isComfyModel = isComfyModel;
5
13
  exports.validateSampler = validateSampler;
6
14
  exports.validateScheduler = validateScheduler;
7
- const SamplerParams_1 = require("../Projects/types/SamplerParams");
8
- const SchedulerParams_1 = require("../Projects/types/SchedulerParams");
15
+ const ForgeSamplerParams_1 = require("../Projects/types/ForgeSamplerParams");
16
+ const ForgeSchedulerParams_1 = require("../Projects/types/ForgeSchedulerParams");
17
+ const ComfySamplerParams_1 = require("../Projects/types/ComfySamplerParams");
18
+ const ComfySchedulerParams_1 = require("../Projects/types/ComfySchedulerParams");
9
19
  function validateCustomImageSize(value) {
10
20
  return validateNumber(value, { min: 256, max: 2048, propertyName: 'Width and height' });
11
21
  }
22
+ /**
23
+ * Validate video dimensions for Wan 2.2 models.
24
+ * Minimum dimension is 480px for both width and height.
25
+ */
26
+ function validateVideoSize(value, propertyName) {
27
+ return validateNumber(value, { min: 480, propertyName: `Video ${propertyName}` });
28
+ }
29
+ function validateVideoDuration(value) {
30
+ return validateNumber(value, { min: 1, max: 10, propertyName: 'Video duration' });
31
+ }
12
32
  function validateNumber(value, { min, max, propertyName, defaultValue } = {}) {
13
33
  const number = Number(value);
14
34
  const hasDefaultValue = defaultValue !== undefined;
@@ -35,22 +55,87 @@ function validateNumber(value, { min, max, propertyName, defaultValue } = {}) {
35
55
  }
36
56
  return number;
37
57
  }
38
- function validateSampler(value) {
58
+ function validateForgeSampler(value) {
39
59
  if (!value) {
40
60
  return null;
41
61
  }
42
- if (!(0, SamplerParams_1.isSampler)(value)) {
43
- throw new Error(`Invalid sampler: ${value}. Supported options: ${Object.keys(SamplerParams_1.SamplerMap).join(', ')}`);
62
+ if ((0, ForgeSamplerParams_1.isRawForgeSampler)(value)) {
63
+ return value;
64
+ }
65
+ if ((0, ForgeSamplerParams_1.isForgeSampler)(value)) {
66
+ return ForgeSamplerParams_1.SupportedForgeSamplers[value];
44
67
  }
45
- return SamplerParams_1.SamplerMap[value];
68
+ throw new Error(`Invalid sampler: ${value}. Supported options: ${Object.keys(ForgeSamplerParams_1.SupportedForgeSamplers).join(', ')}`);
46
69
  }
47
- function validateScheduler(value) {
70
+ function validateForgeScheduler(value) {
48
71
  if (!value) {
49
72
  return null;
50
73
  }
51
- if (!(0, SchedulerParams_1.isScheduler)(value)) {
52
- throw new Error(`Invalid scheduler: ${value}. Supported options: ${Object.keys(SchedulerParams_1.SchedulerMap).join(', ')}`);
74
+ if ((0, ForgeSchedulerParams_1.isRawForgeScheduler)(value)) {
75
+ return value;
76
+ }
77
+ if ((0, ForgeSchedulerParams_1.isForgeScheduler)(value)) {
78
+ return ForgeSchedulerParams_1.SupportedForgeSchedulers[value];
79
+ }
80
+ throw new Error(`Invalid scheduler: ${value}. Supported options: ${Object.keys(ForgeSchedulerParams_1.SupportedForgeSchedulers).join(', ')}`);
81
+ }
82
+ /**
83
+ * Validate teacacheThreshold for T2V and I2V models.
84
+ * Range: 0.0-1.0. 0.0 = disabled.
85
+ */
86
+ function validateTeacacheThreshold(value) {
87
+ if (value === undefined || value === null) {
88
+ return undefined;
89
+ }
90
+ const num = Number(value);
91
+ if (isNaN(num)) {
92
+ throw new Error(`teacacheThreshold must be a number, got ${value}`);
93
+ }
94
+ if (num < 0.0 || num > 1.0) {
95
+ throw new Error(`teacacheThreshold must be between 0.0 and 1.0 (got ${num})`);
96
+ }
97
+ return num;
98
+ }
99
+ /**
100
+ * Validate ComfyUI sampler for video models.
101
+ * Returns the sampler string directly (no mapping needed).
102
+ */
103
+ function validateComfySampler(value) {
104
+ if (!value) {
105
+ return undefined;
106
+ }
107
+ if ((0, ComfySamplerParams_1.isComfySampler)(value)) {
108
+ return ComfySamplerParams_1.SupportedComfySamplers[value];
109
+ }
110
+ throw new Error(`Invalid comfySampler: ${value}. Supported options: ${Object.keys(ComfySamplerParams_1.SupportedComfySamplers).join(', ')}`);
111
+ }
112
+ /**
113
+ * Validate ComfyUI scheduler for video models.
114
+ * Returns the scheduler string directly (no mapping needed).
115
+ */
116
+ function validateComfyScheduler(value) {
117
+ if (!value) {
118
+ return undefined;
119
+ }
120
+ if ((0, ComfySchedulerParams_1.isComfyScheduler)(value)) {
121
+ return ComfySchedulerParams_1.SupportedComfySchedulers[value];
122
+ }
123
+ throw new Error(`Invalid comfyScheduler: ${value}. Supported options: ${Object.keys(ComfySchedulerParams_1.SupportedComfySchedulers).join(', ')}`);
124
+ }
125
+ function isComfyModel(modelId) {
126
+ const COMFY_PREFIXES = ['z_image_', 'qwen_image_', 'flux2_', 'wan_'];
127
+ return COMFY_PREFIXES.some((prefix) => modelId.startsWith(prefix));
128
+ }
129
+ function validateSampler(modelId, sampler) {
130
+ if (isComfyModel(modelId)) {
131
+ return validateComfySampler(sampler);
132
+ }
133
+ return validateForgeSampler(sampler);
134
+ }
135
+ function validateScheduler(modelId, scheduler) {
136
+ if (isComfyModel(modelId)) {
137
+ return validateComfyScheduler(scheduler);
53
138
  }
54
- return SchedulerParams_1.SchedulerMap[value];
139
+ return validateForgeScheduler(scheduler);
55
140
  }
56
141
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":";;AAaA,0DAEC;AAMD,8CAEC;AAED,sDAEC;AASD,wCA4BC;AAED,oDAaC;AAED,wDAaC;AAMD,8DAYC;AAMD,oDAUC;AAMD,wDAUC;AAED,oCAGC;AAED,0CAKC;AAED,8CAKC;AAnKD,6EAI8C;AAC9C,iFAIgD;AAChD,6EAA8F;AAC9F,iFAAoG;AAEpG,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;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,KAAU,EAAE,YAAgC;IAC5E,OAAO,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,YAAY,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAU;IAC9C,OAAO,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACpF,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,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAA,sCAAiB,EAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAA,mCAAc,EAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,2CAAsB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,oBAAoB,KAAK,wBAAwB,MAAM,CAAC,IAAI,CAAC,2CAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClG,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAA,0CAAmB,EAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAA,uCAAgB,EAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,+CAAwB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,wBAAwB,MAAM,CAAC,IAAI,CAAC,+CAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtG,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,KAAc;IACtD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,GAAG,GAAG,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAA,mCAAc,EAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,2CAAsB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,wBAAwB,MAAM,CAAC,IAAI,CAAC,2CAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvG,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAA,uCAAgB,EAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,+CAAwB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,wBAAwB,MAAM,CAAC,IAAI,CAAC,+CAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3G,CAAC;AACJ,CAAC;AAED,SAAgB,YAAY,CAAC,OAAe;IAC1C,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,eAAe,CAAC,OAAe,EAAE,OAAe;IAC9D,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAe,EAAE,SAAiB;IAClE,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "4.0.0-alpha.9",
6
+ "version": "4.0.0",
7
7
  "description": "Sogni Supernet Client",
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
@@ -37,6 +37,9 @@
37
37
  "homepage": "https://github.com/Sogni-AI/sogni-client#readme",
38
38
  "dependencies": {
39
39
  "@lukeed/uuid": "^2.0.1",
40
+ "@types/js-cookie": "^3.0.6",
41
+ "@types/lodash": "^4.17.13",
42
+ "@types/ws": "^8.5.13",
40
43
  "ethers": "^6.13.4",
41
44
  "isomorphic-ws": "^5.0.0",
42
45
  "js-cookie": "^3.0.5",
@@ -47,9 +50,6 @@
47
50
  "devDependencies": {
48
51
  "@semantic-release/changelog": "^6.0.3",
49
52
  "@semantic-release/git": "^10.0.1",
50
- "@types/js-cookie": "^3.0.6",
51
- "@types/lodash": "^4.17.13",
52
- "@types/ws": "^8.5.13",
53
53
  "prettier": "^3.3.3",
54
54
  "rimraf": "^6.0.1",
55
55
  "semantic-release": "^24.2.1",
@@ -29,11 +29,11 @@ enum ErrorCode {
29
29
  }
30
30
  /**
31
31
  * Account API methods that let you interact with the user's account.
32
- * Can be accessed via `client.account`. Look for more samples below.
32
+ * Can be accessed via `sogni.account`. Look for more samples below.
33
33
  *
34
34
  * @example Retrieve the current account balance
35
35
  * ```typescript
36
- * const balance = await client.account.refreshBalance();
36
+ * const balance = await sogni.account.refreshBalance();
37
37
  * console.log(balance);
38
38
  * ```
39
39
  *
@@ -43,7 +43,12 @@ class AccountApi extends ApiGroup {
43
43
 
44
44
  constructor(config: ApiConfig) {
45
45
  super(config);
46
+ this.currentAccount._update({
47
+ networkStatus: this.client.socket.isConnected ? 'connected' : 'disconnected',
48
+ network: this.client.socket.supernetType
49
+ });
46
50
  this.client.socket.on('balanceUpdate', this.handleBalanceUpdate.bind(this));
51
+ this.client.socket.on('changeNetwork', this.handleChangeNetwork.bind(this));
47
52
  this.client.on('connected', this.handleServerConnected.bind(this));
48
53
  this.client.on('disconnected', this.handleServerDisconnected.bind(this));
49
54
  this.client.auth.on('updated', this.handleAuthUpdated.bind(this));
@@ -53,6 +58,10 @@ class AccountApi extends ApiGroup {
53
58
  this.currentAccount._update({ balance: data });
54
59
  }
55
60
 
61
+ private handleChangeNetwork({ network }: { network: SupernetType }) {
62
+ this.currentAccount._update({ network, networkStatus: 'connected' });
63
+ }
64
+
56
65
  private handleServerConnected({ network }: { network: SupernetType }) {
57
66
  this.currentAccount._update({
58
67
  networkStatus: 'connected',
@@ -70,6 +79,8 @@ class AccountApi extends ApiGroup {
70
79
  private handleAuthUpdated(isAuthenticated: boolean) {
71
80
  if (!isAuthenticated) {
72
81
  this.currentAccount._clear();
82
+ } else {
83
+ this.me();
73
84
  }
74
85
  }
75
86
 
@@ -92,7 +103,7 @@ class AccountApi extends ApiGroup {
92
103
  *
93
104
  * @example Create a wallet from username and password
94
105
  * ```typescript
95
- * const wallet = client.account.getWallet('username', 'password');
106
+ * const wallet = sogni.account.getWallet('username', 'password');
96
107
  * console.log(wallet.address);
97
108
  * ```
98
109
  *
@@ -137,7 +148,6 @@ class AccountApi extends ApiGroup {
137
148
  } else {
138
149
  await auth.authenticate();
139
150
  }
140
- await this.me();
141
151
  return res.data;
142
152
  }
143
153
 
@@ -146,7 +156,7 @@ class AccountApi extends ApiGroup {
146
156
  *
147
157
  * @example Login with username and password
148
158
  * ```typescript
149
- * await client.account.login('username', 'password');
159
+ * await sogni.account.login('username', 'password');
150
160
  * console.log('Logged in');
151
161
  * ```
152
162
  *
@@ -173,7 +183,6 @@ class AccountApi extends ApiGroup {
173
183
  } else {
174
184
  await auth.authenticate();
175
185
  }
176
- await this.me();
177
186
  return res.data;
178
187
  }
179
188
 
@@ -182,7 +191,7 @@ class AccountApi extends ApiGroup {
182
191
  *
183
192
  * @example Logout the user
184
193
  * ```typescript
185
- * await client.account.logout();
194
+ * await sogni.account.logout();
186
195
  * console.log('Logged out');
187
196
  * ```
188
197
  */
@@ -200,7 +209,7 @@ class AccountApi extends ApiGroup {
200
209
  *
201
210
  * @example Refresh user account balance
202
211
  * ```typescript
203
- * const balance = await client.account.refreshBalance();
212
+ * const balance = await sogni.account.refreshBalance();
204
213
  * console.log(balance);
205
214
  * ```
206
215
  */
@@ -216,7 +225,7 @@ class AccountApi extends ApiGroup {
216
225
  *
217
226
  * @example Get the account balance of the current user
218
227
  * ```typescript
219
- * const balance = await client.account.accountBalance();
228
+ * const balance = await sogni.account.accountBalance();
220
229
  * console.log(balance);
221
230
  * ```
222
231
  */
@@ -232,19 +241,21 @@ class AccountApi extends ApiGroup {
232
241
  *
233
242
  * @example Get the balance of the wallet address
234
243
  * ```typescript
235
- * const address = client.account.currentAccount.walletAddress;
236
- * const balance = await client.account.walletBalance(address);
244
+ * const address = sogni.account.currentAccount.walletAddress;
245
+ * const balance = await sogni.account.walletBalance(address);
237
246
  * console.log(balance);
238
247
  * // { token: '100.000000', ether: '0.000000' }
239
248
  * ```
240
249
  *
241
250
  * @param walletAddress
251
+ * @param provider - blockchain provider, 'base' or 'etherlink' defaults to 'base'
242
252
  */
243
- async walletBalance(walletAddress: string) {
253
+ async walletBalance(walletAddress: string, provider: 'base' | 'etherlink' = 'base') {
244
254
  const res = await this.client.rest.get<
245
255
  ApiResponse<{ sogni: string; spark: string; ether: string }>
246
256
  >('/v2/wallet/balance', {
247
- walletAddress
257
+ walletAddress,
258
+ provider
248
259
  });
249
260
  return res.data;
250
261
  }
@@ -287,9 +298,9 @@ class AccountApi extends ApiGroup {
287
298
  *
288
299
  * @example Switch to the fast network
289
300
  * ```typescript
290
- * await client.account.switchNetwork('fast');
301
+ * await sogni.account.switchNetwork('fast');
291
302
  * console.log('Switched to the fast network, now lets wait until we get list of models');
292
- * await client.projects.waitForModels();
303
+ * await sogni.projects.waitForModels();
293
304
  * ```
294
305
  * @param network - Network type to switch to
295
306
  */
@@ -311,10 +322,10 @@ class AccountApi extends ApiGroup {
311
322
  *
312
323
  * @example Get the transaction history
313
324
  * ```typescript
314
- * const { entries, next } = await client.account.transactionHistory({
325
+ * const { entries, next } = await sogni.account.transactionHistory({
315
326
  * status: 'completed',
316
327
  * limit: 10,
317
- * address: client.account.currentAccount.walletAddress
328
+ * address: sogni.account.currentAccount.walletAddress
318
329
  * });
319
330
  * ```
320
331
  *
@@ -420,7 +431,7 @@ class AccountApi extends ApiGroup {
420
431
  * Withdraw funds from the current account to wallet.
421
432
  * @example withdraw to current wallet address
422
433
  * ```typescript
423
- * await client.account.withdraw('your-account-password', 100);
434
+ * await sogni.account.withdraw('your-account-password', 100);
424
435
  * ```
425
436
  *
426
437
  * @param password - account password
@@ -452,7 +463,7 @@ class AccountApi extends ApiGroup {
452
463
  * Deposit tokens from wallet to account
453
464
  * @example withdraw to current wallet address
454
465
  * ```typescript
455
- * await client.account.deposit('your-account-password', 100);
466
+ * await sogni.account.deposit('your-account-password', 100);
456
467
  * ```
457
468
  *
458
469
  * @param password - account password