@sogni-ai/sogni-intelligence-client 3.14.4 → 3.15.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/dist/client/SogniClientWrapper.js +1 -1
- package/dist/client/SogniClientWrapper.js.map +1 -1
- package/dist/contracts/data/promptContracts.d.ts.map +1 -1
- package/dist/contracts/data/promptContracts.js +12 -11
- package/dist/contracts/data/promptContracts.js.map +1 -1
- package/dist/contracts/hostedToolValidation.d.ts.map +1 -1
- package/dist/contracts/hostedToolValidation.js +7 -2
- package/dist/contracts/hostedToolValidation.js.map +1 -1
- package/dist/media/videoAppSettings.d.ts +10 -10
- package/dist/media/videoAppSettings.d.ts.map +1 -1
- package/dist/media/videoAppSettings.js +10 -10
- package/dist/media/videoAppSettings.js.map +1 -1
- package/dist/media/videoSettings.d.ts +8 -1
- package/dist/media/videoSettings.d.ts.map +1 -1
- package/dist/media/videoSettings.js +223 -2
- package/dist/media/videoSettings.js.map +1 -1
- package/dist/public-skill-runtime/index.d.ts +18 -2
- package/dist/public-skill-runtime/index.d.ts.map +1 -1
- package/dist/public-skill-runtime/index.js +103 -17
- package/dist/public-skill-runtime/index.js.map +1 -1
- package/dist/skills/asset_reference_management/modelRefRegistry.d.ts.map +1 -1
- package/dist/skills/asset_reference_management/modelRefRegistry.js +3 -0
- package/dist/skills/asset_reference_management/modelRefRegistry.js.map +1 -1
- package/dist/skills/asset_reference_management/types.d.ts +1 -1
- package/dist/skills/asset_reference_management/types.d.ts.map +1 -1
- package/dist/tools/definitions/animate-photo/definition.d.ts.map +1 -1
- package/dist/tools/definitions/animate-photo/definition.js +10 -6
- package/dist/tools/definitions/animate-photo/definition.js.map +1 -1
- package/dist/tools/definitions/extend-video/definition.d.ts.map +1 -1
- package/dist/tools/definitions/extend-video/definition.js +3 -4
- package/dist/tools/definitions/extend-video/definition.js.map +1 -1
- package/dist/tools/definitions/generate-video/definition.d.ts.map +1 -1
- package/dist/tools/definitions/generate-video/definition.js +6 -4
- package/dist/tools/definitions/generate-video/definition.js.map +1 -1
- package/dist/tools/definitions/replace-video-segment/definition.js +3 -3
- package/dist/tools/definitions/replace-video-segment/definition.js.map +1 -1
- package/dist/tools/definitions/sound-to-video/definition.d.ts.map +1 -1
- package/dist/tools/definitions/sound-to-video/definition.js +9 -4
- package/dist/tools/definitions/sound-to-video/definition.js.map +1 -1
- package/dist/tools/definitions/video-to-video/definition.js +14 -14
- package/dist/tools/definitions/video-to-video/definition.js.map +1 -1
- package/dist/tools/shared/modelRegistry.d.ts.map +1 -1
- package/dist/tools/shared/modelRegistry.js +14 -1
- package/dist/tools/shared/modelRegistry.js.map +1 -1
- package/dist/utils/helpers.js +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/dist-esm/client/SogniClientWrapper.js +1 -1
- package/dist-esm/client/SogniClientWrapper.js.map +1 -1
- package/dist-esm/contracts/data/promptContracts.js +12 -11
- package/dist-esm/contracts/data/promptContracts.js.map +1 -1
- package/dist-esm/contracts/hostedToolValidation.js +7 -2
- package/dist-esm/contracts/hostedToolValidation.js.map +1 -1
- package/dist-esm/media/videoAppSettings.js +11 -11
- package/dist-esm/media/videoAppSettings.js.map +1 -1
- package/dist-esm/media/videoSettings.js +219 -1
- package/dist-esm/media/videoSettings.js.map +1 -1
- package/dist-esm/public-skill-runtime/index.js +101 -16
- package/dist-esm/public-skill-runtime/index.js.map +1 -1
- package/dist-esm/skills/asset_reference_management/modelRefRegistry.js +3 -0
- package/dist-esm/skills/asset_reference_management/modelRefRegistry.js.map +1 -1
- package/dist-esm/tools/definitions/animate-photo/definition.js +10 -6
- package/dist-esm/tools/definitions/animate-photo/definition.js.map +1 -1
- package/dist-esm/tools/definitions/extend-video/definition.js +3 -4
- package/dist-esm/tools/definitions/extend-video/definition.js.map +1 -1
- package/dist-esm/tools/definitions/generate-video/definition.js +6 -4
- package/dist-esm/tools/definitions/generate-video/definition.js.map +1 -1
- package/dist-esm/tools/definitions/replace-video-segment/definition.js +3 -3
- package/dist-esm/tools/definitions/replace-video-segment/definition.js.map +1 -1
- package/dist-esm/tools/definitions/sound-to-video/definition.js +9 -4
- package/dist-esm/tools/definitions/sound-to-video/definition.js.map +1 -1
- package/dist-esm/tools/definitions/video-to-video/definition.js +14 -14
- package/dist-esm/tools/definitions/video-to-video/definition.js.map +1 -1
- package/dist-esm/tools/shared/modelRegistry.js +14 -1
- package/dist-esm/tools/shared/modelRegistry.js.map +1 -1
- package/dist-esm/utils/helpers.js +1 -1
- package/dist-esm/utils/helpers.js.map +1 -1
- package/package.json +3 -3
|
@@ -932,6 +932,29 @@ const PUBLIC_GPT_IMAGE_2_ADAPTER = {
|
|
|
932
932
|
return 'GPT IMAGE 2 ROUTING: When the user asks for a ChatGPT, OpenAI, GPT, GPT-2, GPT Image, or gpt-image-2 image/model, use model="gpt-image-2". Use generate_image for text-to-image requests. If uploaded/reference/persona images must guide identity, likeness, composition, style, or objects, use edit_image with model="gpt-image-2" instead of forcing generate_image.';
|
|
933
933
|
},
|
|
934
934
|
};
|
|
935
|
+
const PUBLIC_LTX25_ADAPTER = {
|
|
936
|
+
modelId: 'ltx25',
|
|
937
|
+
name: 'LTX 2.5',
|
|
938
|
+
supportedStages: ['scene_clip'],
|
|
939
|
+
compile(storyboard, input) {
|
|
940
|
+
if (input.stage !== 'scene_clip')
|
|
941
|
+
throw new StoryboardAdapterUnsupportedStageError('ltx25', input.stage);
|
|
942
|
+
const scene = requireStoryboardScene('LTX25_ADAPTER', input);
|
|
943
|
+
const referenceTag = input.primaryReferenceTag ?? 'context_image_0';
|
|
944
|
+
return {
|
|
945
|
+
stage: 'scene_clip',
|
|
946
|
+
prompt: compactSceneVideoPrompt(storyboard, scene, referenceTag),
|
|
947
|
+
args: {
|
|
948
|
+
videoModel: 'ltx25',
|
|
949
|
+
duration: clampSeedanceStoryboardDuration(scene.durationSec ?? 5),
|
|
950
|
+
aspectRatio: storyboard.targetVideoAspectRatio,
|
|
951
|
+
},
|
|
952
|
+
};
|
|
953
|
+
},
|
|
954
|
+
getSystemPromptGuidance() {
|
|
955
|
+
return 'LTX 2.5 VIDEO PROMPTING: For image-to-video, describe motion, action, camera, dialogue, and sound not already obvious in the reference frame. Keep recurring character names and visual anchors stable across scenes. Use LTX 2.3 only for explicit rollback or its ID-LoRA/transition/10Eros-only paths.';
|
|
956
|
+
},
|
|
957
|
+
};
|
|
935
958
|
const PUBLIC_LTX23_ADAPTER = {
|
|
936
959
|
modelId: 'ltx23',
|
|
937
960
|
name: 'LTX-2.3',
|
|
@@ -983,6 +1006,7 @@ const PUBLIC_WAN_ADAPTER = {
|
|
|
983
1006
|
const PUBLIC_STORYBOARD_ADAPTERS = [
|
|
984
1007
|
PUBLIC_SEEDANCE_ADAPTER,
|
|
985
1008
|
PUBLIC_GPT_IMAGE_2_ADAPTER,
|
|
1009
|
+
PUBLIC_LTX25_ADAPTER,
|
|
986
1010
|
PUBLIC_LTX23_ADAPTER,
|
|
987
1011
|
PUBLIC_WAN_ADAPTER,
|
|
988
1012
|
];
|
|
@@ -1040,8 +1064,12 @@ export const storyboardAdapterRegistry = {
|
|
|
1040
1064
|
return PUBLIC_SEEDANCE_ADAPTER;
|
|
1041
1065
|
if (trimmed.startsWith('gpt-image'))
|
|
1042
1066
|
return PUBLIC_GPT_IMAGE_2_ADAPTER;
|
|
1043
|
-
if (trimmed.startsWith('
|
|
1067
|
+
if (trimmed.startsWith('ltx25'))
|
|
1068
|
+
return PUBLIC_LTX25_ADAPTER;
|
|
1069
|
+
if (trimmed.startsWith('ltx23') || trimmed.startsWith('ltx2-'))
|
|
1044
1070
|
return PUBLIC_LTX23_ADAPTER;
|
|
1071
|
+
if (trimmed.startsWith('ltx'))
|
|
1072
|
+
return PUBLIC_LTX25_ADAPTER;
|
|
1045
1073
|
if (trimmed.startsWith('wan'))
|
|
1046
1074
|
return PUBLIC_WAN_ADAPTER;
|
|
1047
1075
|
return null;
|
|
@@ -1134,6 +1162,25 @@ export const LTX23_DEV_WORKFLOW_MODELS = Object.freeze({
|
|
|
1134
1162
|
ia2v: 'ltx23-22b-fp8_ia2v_dev',
|
|
1135
1163
|
a2v: 'ltx23-22b-fp8_a2v_dev'
|
|
1136
1164
|
});
|
|
1165
|
+
export const LTX25_WORKFLOW_MODELS = Object.freeze({
|
|
1166
|
+
t2v: 'ltx25-22b-int8_t2v_distilled',
|
|
1167
|
+
i2v: 'ltx25-22b-int8_i2v_distilled',
|
|
1168
|
+
ia2v: 'ltx25-22b-int8_ia2v_distilled',
|
|
1169
|
+
a2v: 'ltx25-22b-int8_a2v_distilled',
|
|
1170
|
+
v2v: 'ltx25-22b-int8_v2v_distilled'
|
|
1171
|
+
});
|
|
1172
|
+
export const LTX25_DEV_WORKFLOW_MODELS = Object.freeze({
|
|
1173
|
+
t2v: 'ltx25-22b-int8_t2v_dev',
|
|
1174
|
+
i2v: 'ltx25-22b-int8_i2v_dev',
|
|
1175
|
+
ia2v: 'ltx25-22b-int8_ia2v_dev',
|
|
1176
|
+
a2v: 'ltx25-22b-int8_a2v_dev',
|
|
1177
|
+
v2v: 'ltx25-22b-int8_v2v_dev'
|
|
1178
|
+
});
|
|
1179
|
+
export function resolveLtx25WorkflowModelForQuality(workflow, qualityTier) {
|
|
1180
|
+
return qualityTier === 'pro'
|
|
1181
|
+
? LTX25_DEV_WORKFLOW_MODELS[workflow]
|
|
1182
|
+
: LTX25_WORKFLOW_MODELS[workflow];
|
|
1183
|
+
}
|
|
1137
1184
|
export function resolveLtx23WorkflowModelForQuality(workflow, qualityTier) {
|
|
1138
1185
|
if (qualityTier === 'pro' && workflow !== 'v2v') {
|
|
1139
1186
|
return LTX23_DEV_WORKFLOW_MODELS[workflow];
|
|
@@ -1401,6 +1448,30 @@ export const VIDEO_MODEL_REGISTRY = Object.freeze({
|
|
|
1401
1448
|
});
|
|
1402
1449
|
export const EXPANDED_VIDEO_MODEL_REGISTRY = (() => {
|
|
1403
1450
|
const registry = { ...VIDEO_MODEL_REGISTRY };
|
|
1451
|
+
for (const workflow of ['t2v', 'i2v', 'ia2v', 'a2v', 'v2v']) {
|
|
1452
|
+
const base = registry[LTX23_WORKFLOW_MODELS[workflow]];
|
|
1453
|
+
if (!base)
|
|
1454
|
+
continue;
|
|
1455
|
+
const ltx25Base = {
|
|
1456
|
+
...base,
|
|
1457
|
+
family: 'ltx25',
|
|
1458
|
+
maxDimension: 3840,
|
|
1459
|
+
fps: 24,
|
|
1460
|
+
sampler: 'euler_ancestral',
|
|
1461
|
+
scheduler: 'manual_sigmas',
|
|
1462
|
+
supportsNativeAudio: true
|
|
1463
|
+
};
|
|
1464
|
+
registry[LTX25_WORKFLOW_MODELS[workflow]] = {
|
|
1465
|
+
...ltx25Base,
|
|
1466
|
+
steps: 8,
|
|
1467
|
+
guidance: 1.0
|
|
1468
|
+
};
|
|
1469
|
+
registry[LTX25_DEV_WORKFLOW_MODELS[workflow]] = {
|
|
1470
|
+
...ltx25Base,
|
|
1471
|
+
steps: 30,
|
|
1472
|
+
guidance: 3.0
|
|
1473
|
+
};
|
|
1474
|
+
}
|
|
1404
1475
|
for (const workflow of ['t2v', 'i2v', 'ia2v', 'a2v']) {
|
|
1405
1476
|
const base = registry[LTX23_WORKFLOW_MODELS[workflow]];
|
|
1406
1477
|
if (!base)
|
|
@@ -1434,16 +1505,22 @@ export const EXPANDED_VIDEO_MODEL_REGISTRY = (() => {
|
|
|
1434
1505
|
return Object.freeze(registry);
|
|
1435
1506
|
})();
|
|
1436
1507
|
export const VIDEO_WORKFLOW_DEFAULT_MODELS = Object.freeze({
|
|
1437
|
-
t2v:
|
|
1438
|
-
i2v:
|
|
1508
|
+
t2v: LTX25_WORKFLOW_MODELS.t2v,
|
|
1509
|
+
i2v: LTX25_WORKFLOW_MODELS.i2v,
|
|
1439
1510
|
s2v: 'wan_v2.2-14b-fp8_s2v_lightx2v',
|
|
1440
|
-
ia2v:
|
|
1441
|
-
a2v:
|
|
1511
|
+
ia2v: LTX25_WORKFLOW_MODELS.ia2v,
|
|
1512
|
+
a2v: LTX25_WORKFLOW_MODELS.a2v,
|
|
1442
1513
|
'animate-move': 'wan_v2.2-14b-fp8_animate-move_lightx2v',
|
|
1443
1514
|
'animate-replace': 'wan_v2.2-14b-fp8_animate-replace_lightx2v',
|
|
1444
|
-
v2v:
|
|
1515
|
+
v2v: LTX25_WORKFLOW_MODELS.v2v
|
|
1445
1516
|
});
|
|
1446
1517
|
export const VIDEO_MODEL_ALIASES = Object.freeze({
|
|
1518
|
+
ltx25: LTX25_WORKFLOW_MODELS.t2v,
|
|
1519
|
+
'ltx25-t2v': LTX25_WORKFLOW_MODELS.t2v,
|
|
1520
|
+
'ltx25-i2v': LTX25_WORKFLOW_MODELS.i2v,
|
|
1521
|
+
'ltx25-ia2v': LTX25_WORKFLOW_MODELS.ia2v,
|
|
1522
|
+
'ltx25-a2v': LTX25_WORKFLOW_MODELS.a2v,
|
|
1523
|
+
'ltx25-v2v': LTX25_WORKFLOW_MODELS.v2v,
|
|
1447
1524
|
ltx23: LTX23_WORKFLOW_MODELS.t2v,
|
|
1448
1525
|
'ltx23-t2v': LTX23_WORKFLOW_MODELS.t2v,
|
|
1449
1526
|
'ltx23-i2v': LTX23_WORKFLOW_MODELS.i2v,
|
|
@@ -1533,7 +1610,7 @@ export const IMAGE_MODEL_ALIASES = Object.freeze({
|
|
|
1533
1610
|
'dark-beast-krea-2-identity-edit-lora-v1-2': 'dark_beast_krea2_identity_edit_v1_2'
|
|
1534
1611
|
});
|
|
1535
1612
|
export function isLtx2Model(modelId) {
|
|
1536
|
-
return modelId?.startsWith('ltx2-') || modelId?.startsWith('ltx23-') || false;
|
|
1613
|
+
return modelId?.startsWith('ltx2-') || modelId?.startsWith('ltx23-') || modelId?.startsWith('ltx25-') || false;
|
|
1537
1614
|
}
|
|
1538
1615
|
export function isWanModel(modelId) {
|
|
1539
1616
|
return modelId?.startsWith('wan_') || false;
|
|
@@ -1553,6 +1630,11 @@ export function resolveVideoModelAlias(modelId, workflow) {
|
|
|
1553
1630
|
if (!modelId)
|
|
1554
1631
|
return modelId;
|
|
1555
1632
|
const key = String(modelId).trim().toLowerCase();
|
|
1633
|
+
if (key === 'ltx25') {
|
|
1634
|
+
if (workflow && isLtxWorkflow(workflow)) {
|
|
1635
|
+
return LTX25_WORKFLOW_MODELS[workflow];
|
|
1636
|
+
}
|
|
1637
|
+
}
|
|
1556
1638
|
if (key === 'ltx23' && isLtxWorkflow(workflow)) {
|
|
1557
1639
|
return LTX23_WORKFLOW_MODELS[workflow];
|
|
1558
1640
|
}
|
|
@@ -1588,6 +1670,9 @@ export function getBuiltinVideoModelConfig(modelId) {
|
|
|
1588
1670
|
if (id.startsWith('ltx23-') && isLtxWorkflow(workflow)) {
|
|
1589
1671
|
return EXPANDED_VIDEO_MODEL_REGISTRY[LTX23_WORKFLOW_MODELS[workflow]] || null;
|
|
1590
1672
|
}
|
|
1673
|
+
if (id.startsWith('ltx25-') && isLtxWorkflow(workflow)) {
|
|
1674
|
+
return EXPANDED_VIDEO_MODEL_REGISTRY[LTX25_WORKFLOW_MODELS[workflow]] || null;
|
|
1675
|
+
}
|
|
1591
1676
|
if (id.startsWith('ltx2-')) {
|
|
1592
1677
|
return {
|
|
1593
1678
|
workflow,
|
|
@@ -1853,15 +1938,15 @@ export function selectDefaultVideoModel(workflow, opts = {}, config) {
|
|
|
1853
1938
|
if (configured)
|
|
1854
1939
|
return resolveVideoModelAlias(configured, workflow) || null;
|
|
1855
1940
|
if (workflow === 'ia2v')
|
|
1856
|
-
return
|
|
1941
|
+
return resolveLtx25WorkflowModelForQuality('ia2v', opts.quality);
|
|
1857
1942
|
if (workflow === 'a2v')
|
|
1858
|
-
return
|
|
1943
|
+
return resolveLtx25WorkflowModelForQuality('a2v', opts.quality);
|
|
1859
1944
|
if (workflow === 'v2v')
|
|
1860
|
-
return
|
|
1945
|
+
return resolveLtx25WorkflowModelForQuality('v2v', opts.quality);
|
|
1861
1946
|
if (workflow === 't2v')
|
|
1862
|
-
return
|
|
1947
|
+
return resolveLtx25WorkflowModelForQuality('t2v', opts.quality);
|
|
1863
1948
|
if (workflow === 'i2v' && (opts.referenceAudioIdentity || promptNeedsLtxNativeAudio(opts.prompt) || opts.quality === 'hq' || opts.quality === 'pro')) {
|
|
1864
|
-
return
|
|
1949
|
+
return resolveLtx25WorkflowModelForQuality('i2v', opts.quality);
|
|
1865
1950
|
}
|
|
1866
1951
|
return VIDEO_WORKFLOW_DEFAULT_MODELS[workflow] || null;
|
|
1867
1952
|
}
|
|
@@ -4013,7 +4098,7 @@ function extractStoryboardRequiredText(text) {
|
|
|
4013
4098
|
}
|
|
4014
4099
|
const labeledTextPattern = /\b(?:on[-\s]?screen\s+text|visible\s+text|text\s+only|text|end\s+card\s+text|final\s+text|tagline|cta|headline|title\s+card|copy)\s*:\s*([^\n]{1,260})/gi;
|
|
4015
4100
|
for (const match of text.matchAll(labeledTextPattern)) {
|
|
4016
|
-
const value = match[1] || '';
|
|
4101
|
+
const value = (match[1] || '').split('|')[0];
|
|
4017
4102
|
const matchStartInText = match.index ?? 0;
|
|
4018
4103
|
const lineStart = text.lastIndexOf('\n', matchStartInText) + 1;
|
|
4019
4104
|
const valueStartInMatch = match[0].indexOf(value);
|
|
@@ -4716,7 +4801,7 @@ function splitStoryboardTableSections(text) {
|
|
|
4716
4801
|
return sections;
|
|
4717
4802
|
}
|
|
4718
4803
|
function splitStoryboardSceneSections(text) {
|
|
4719
|
-
const matches = Array.from(text.matchAll(/^\s*(?:[-*+>#_]{1,6}\s*)*(?:[*_]{1,3})?\s*(?:Scene|Shot|Beat|Panel|Frame)\s*(\d{1,2})\b\s*(?:[-:.)|]\s*)?([^\n]*)/gim));
|
|
4804
|
+
const matches = Array.from(text.matchAll(/^\s*(?:[-*+>#_]{1,6}\s*)*(?:[*_]{1,3})?\s*(?:Scene|Shot|Beat|Panel|Frame)\s*_?\s*(\d{1,2})\b\s*(?:[-:.)|]\s*)?([^\n]*)/gim));
|
|
4720
4805
|
if (matches.length === 0)
|
|
4721
4806
|
return [];
|
|
4722
4807
|
return matches.map((match, index) => {
|
|
@@ -4782,7 +4867,7 @@ function splitStoryboardNumberedListSceneSections(text) {
|
|
|
4782
4867
|
return [];
|
|
4783
4868
|
}
|
|
4784
4869
|
function splitStoryboardInlineSceneSections(text) {
|
|
4785
|
-
const markerPattern = /(^|[\s.;])((?:Scene|Shot|Beat|Panel|Frame)\s*(\d{1,2})(?:\s*,\s*(?:Scene|Shot|Beat|Panel|Frame)\s*\d{1,2})?\s*(?:\([^)]{0,120}\))?\s*(?:[:\-–—]\s*)?)/gi;
|
|
4870
|
+
const markerPattern = /(^|[\s.;])((?:Scene|Shot|Beat|Panel|Frame)\s*_?\s*(\d{1,2})(?:\s*,\s*(?:Scene|Shot|Beat|Panel|Frame)\s*_?\s*\d{1,2})?\s*(?:\([^)]{0,120}\))?\s*(?:[:\-–—]\s*)?)/gi;
|
|
4786
4871
|
const matches = Array.from(text.matchAll(markerPattern))
|
|
4787
4872
|
.map(match => {
|
|
4788
4873
|
const leading = match[1] || '';
|
|
@@ -5840,7 +5925,7 @@ export function buildStoryboardProject(options) {
|
|
|
5840
5925
|
if (Number.isInteger(value) && value >= 1 && value <= 64)
|
|
5841
5926
|
numbersSeen.add(value);
|
|
5842
5927
|
}
|
|
5843
|
-
for (const match of text.matchAll(/^\s*(?:[-*+>#_]{1,6}\s*)*(?:[*_]{1,3})?\s*(?:Scene|Shot|Beat|Panel|Frame)\s*(\d{1,2})\b/gim)) {
|
|
5928
|
+
for (const match of text.matchAll(/^\s*(?:[-*+>#_]{1,6}\s*)*(?:[*_]{1,3})?\s*(?:Scene|Shot|Beat|Panel|Frame)\s*_?\s*(\d{1,2})\b/gim)) {
|
|
5844
5929
|
const value = Number(match[1]);
|
|
5845
5930
|
if (Number.isInteger(value) && value >= 1 && value <= 64)
|
|
5846
5931
|
numbersSeen.add(value);
|