@sogni-ai/sogni-client 5.74.0 → 5.75.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.
- package/CHANGELOG.md +25 -0
- package/README.md +32 -0
- package/dist/Chat/_hostedToolsManifest.generated.js +44 -5
- package/dist/Chat/_hostedToolsManifest.generated.js.map +1 -1
- package/dist/Chat/modelRouting.d.ts +2 -0
- package/dist/Chat/modelRouting.js +2 -0
- package/dist/Chat/modelRouting.js.map +1 -1
- package/dist/Projects/createJobRequestMessage.js +11 -1
- package/dist/Projects/createJobRequestMessage.js.map +1 -1
- package/dist/Projects/index.d.ts +1 -1
- package/dist/Projects/index.js +13 -1
- package/dist/Projects/index.js.map +1 -1
- package/dist/Projects/types/index.d.ts +13 -1
- package/dist/Projects/types/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/gptImageGif.d.ts +26 -0
- package/dist/lib/gptImageGif.js +92 -0
- package/dist/lib/gptImageGif.js.map +1 -0
- package/dist/lib/validation.d.ts +1 -1
- package/dist/lib/validation.js +55 -5
- package/dist/lib/validation.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist-esm/Chat/_hostedToolsManifest.generated.js +44 -5
- package/dist-esm/Chat/_hostedToolsManifest.generated.js.map +1 -1
- package/dist-esm/Chat/modelRouting.js +2 -0
- package/dist-esm/Chat/modelRouting.js.map +1 -1
- package/dist-esm/Projects/createJobRequestMessage.js +12 -2
- package/dist-esm/Projects/createJobRequestMessage.js.map +1 -1
- package/dist-esm/Projects/index.js +14 -2
- package/dist-esm/Projects/index.js.map +1 -1
- package/dist-esm/Projects/types/index.js.map +1 -1
- package/dist-esm/index.js +1 -0
- package/dist-esm/index.js.map +1 -1
- package/dist-esm/lib/gptImageGif.js +86 -0
- package/dist-esm/lib/gptImageGif.js.map +1 -0
- package/dist-esm/lib/validation.js +53 -4
- package/dist-esm/lib/validation.js.map +1 -1
- package/dist-esm/version.js +1 -1
- package/package.json +4 -3
- package/src/Chat/_hostedToolsManifest.generated.ts +44 -5
- package/src/Chat/modelRouting.ts +2 -0
- package/src/Projects/createJobRequestMessage.ts +10 -1
- package/src/Projects/index.ts +13 -1
- package/src/Projects/types/index.ts +13 -1
- package/src/index.ts +9 -1
- package/src/lib/gptImageGif.ts +110 -0
- package/src/lib/validation.ts +69 -2
- package/src/version.ts +1 -1
package/src/lib/validation.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { resolveGptImageGifSize } from './gptImageGif.js';
|
|
2
|
+
export { resolveGptImageGifSize } from './gptImageGif.js';
|
|
1
3
|
import { ApiError } from '../ApiClient/index.js';
|
|
2
4
|
import { ModelOptions } from '../Projects/types/ModelOptions.js';
|
|
3
5
|
import type { ImageProjectParams } from '../Projects/types/index.js';
|
|
@@ -5,7 +7,9 @@ import type { ImageProjectParams } from '../Projects/types/index.js';
|
|
|
5
7
|
const GPT_IMAGE_MODEL_IDS = new Set([
|
|
6
8
|
'gpt-image-2',
|
|
7
9
|
'gpt-image-2.5-sunburst',
|
|
8
|
-
'gpt-image-2.5-flare'
|
|
10
|
+
'gpt-image-2.5-flare',
|
|
11
|
+
'gpt-image-2.6-sunburst',
|
|
12
|
+
'gpt-image-2.6-flare'
|
|
9
13
|
]);
|
|
10
14
|
|
|
11
15
|
export function isGptImageModel(modelId?: string): boolean {
|
|
@@ -13,6 +17,68 @@ export function isGptImageModel(modelId?: string): boolean {
|
|
|
13
17
|
}
|
|
14
18
|
|
|
15
19
|
export function validateGptImageOptions(params: ImageProjectParams): void {
|
|
20
|
+
const is26 =
|
|
21
|
+
params.modelId === 'gpt-image-2.6-sunburst' || params.modelId === 'gpt-image-2.6-flare';
|
|
22
|
+
const advancedFormat = params.outputFormat === 'gif';
|
|
23
|
+
if (
|
|
24
|
+
!is26 &&
|
|
25
|
+
(advancedFormat ||
|
|
26
|
+
params.gptImageComplexity !== undefined ||
|
|
27
|
+
params.gptImageFrameCount !== undefined ||
|
|
28
|
+
params.gptImageFrameDurationMs !== undefined ||
|
|
29
|
+
params.gptImageMarkupUrl !== undefined)
|
|
30
|
+
) {
|
|
31
|
+
throw new Error('GIF, complexity and markup options require GPT Image 2.6');
|
|
32
|
+
}
|
|
33
|
+
if (is26) {
|
|
34
|
+
if (
|
|
35
|
+
params.outputFormat === 'gif' &&
|
|
36
|
+
(!params.sizePreset || params.sizePreset === 'custom' || params.width || params.height)
|
|
37
|
+
)
|
|
38
|
+
resolveGptImageGifSize(params.width, params.height, params.gptImageFrameCount);
|
|
39
|
+
if (
|
|
40
|
+
params.gptImageComplexity !== undefined &&
|
|
41
|
+
!['low', 'medium', 'high'].includes(params.gptImageComplexity)
|
|
42
|
+
)
|
|
43
|
+
throw new Error('Unsupported GPT Image complexity');
|
|
44
|
+
if (
|
|
45
|
+
advancedFormat &&
|
|
46
|
+
(params.contextImages?.length ||
|
|
47
|
+
params.gptImageMask ||
|
|
48
|
+
params.gptImageMaskUrl ||
|
|
49
|
+
params.gptImageMarkupUrl)
|
|
50
|
+
)
|
|
51
|
+
throw new Error('GIF output require text-to-image generation');
|
|
52
|
+
if (
|
|
53
|
+
params.outputFormat !== 'gif' &&
|
|
54
|
+
(params.gptImageFrameCount !== undefined || params.gptImageFrameDurationMs !== undefined)
|
|
55
|
+
)
|
|
56
|
+
throw new Error('Frame options require GIF output');
|
|
57
|
+
if (
|
|
58
|
+
params.gptImageFrameCount !== undefined &&
|
|
59
|
+
(!Number.isInteger(params.gptImageFrameCount) ||
|
|
60
|
+
params.gptImageFrameCount < 2 ||
|
|
61
|
+
params.gptImageFrameCount > 16)
|
|
62
|
+
)
|
|
63
|
+
throw new Error('GIF frame count must be an integer from 2 to 16');
|
|
64
|
+
if (
|
|
65
|
+
params.gptImageFrameDurationMs !== undefined &&
|
|
66
|
+
(!Number.isInteger(params.gptImageFrameDurationMs) ||
|
|
67
|
+
params.gptImageFrameDurationMs < 20 ||
|
|
68
|
+
params.gptImageFrameDurationMs > 2000)
|
|
69
|
+
)
|
|
70
|
+
throw new Error('GIF frame duration must be an integer from 20 to 2000 ms');
|
|
71
|
+
if (
|
|
72
|
+
params.gptImageMarkupUrl !== undefined &&
|
|
73
|
+
(!params.gptImageMarkupUrl.trim() ||
|
|
74
|
+
!params.contextImages?.length ||
|
|
75
|
+
params.gptImageMask ||
|
|
76
|
+
params.gptImageMaskUrl)
|
|
77
|
+
)
|
|
78
|
+
throw new Error('Markup requires a first edit reference and cannot combine with a mask');
|
|
79
|
+
if (params.gptImageBackground === 'transparent' && advancedFormat)
|
|
80
|
+
throw new Error('Transparent output requires PNG or WebP');
|
|
81
|
+
}
|
|
16
82
|
if (!isGptImageModel(params.modelId)) {
|
|
17
83
|
if (params.gptImageMask || params.gptImageMaskUrl)
|
|
18
84
|
throw new Error('GPT Image masks require a GPT Image model');
|
|
@@ -314,7 +380,8 @@ export function isComfyModel(modelId: string): boolean {
|
|
|
314
380
|
* - Default: 3 images
|
|
315
381
|
*/
|
|
316
382
|
export function getMaxContextImages(modelId: string): number {
|
|
317
|
-
if (['moss_image_sft_int8_convrot', 'moss_image_sft_dmd8_int8_convrot'].includes(modelId || ''))
|
|
383
|
+
if (['moss_image_sft_int8_convrot', 'moss_image_sft_dmd8_int8_convrot'].includes(modelId || ''))
|
|
384
|
+
return 0;
|
|
318
385
|
if (isGptImageModel(modelId)) {
|
|
319
386
|
return 16;
|
|
320
387
|
}
|
package/src/version.ts
CHANGED