@sogni-ai/sogni-intelligence-client 4.1.0 → 4.2.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 (146) hide show
  1. package/dist/agent/intentInput.d.ts +1 -1
  2. package/dist/agent/intentInput.d.ts.map +1 -1
  3. package/dist/agent/intentInput.js +1 -0
  4. package/dist/agent/intentInput.js.map +1 -1
  5. package/dist/artifacts/graph.d.ts +1 -1
  6. package/dist/artifacts/graph.d.ts.map +1 -1
  7. package/dist/artifacts/graph.js +1 -0
  8. package/dist/artifacts/graph.js.map +1 -1
  9. package/dist/chatRun/index.d.ts +1 -1
  10. package/dist/chatRun/index.d.ts.map +1 -1
  11. package/dist/client/SogniClientWrapper.d.ts.map +1 -1
  12. package/dist/client/SogniClientWrapper.js +12 -10
  13. package/dist/client/SogniClientWrapper.js.map +1 -1
  14. package/dist/contracts/backboneDurableWorkflow.d.ts +1 -1
  15. package/dist/contracts/backboneDurableWorkflow.d.ts.map +1 -1
  16. package/dist/contracts/backboneToolCatalog.d.ts +2 -2
  17. package/dist/contracts/backboneToolCatalog.d.ts.map +1 -1
  18. package/dist/contracts/backboneToolCatalog.js +3 -0
  19. package/dist/contracts/backboneToolCatalog.js.map +1 -1
  20. package/dist/contracts/data/gatingPolicies.d.ts.map +1 -1
  21. package/dist/contracts/data/gatingPolicies.js +3 -0
  22. package/dist/contracts/data/gatingPolicies.js.map +1 -1
  23. package/dist/contracts/data/gatingPoliciesToolSurface.d.ts.map +1 -1
  24. package/dist/contracts/data/gatingPoliciesToolSurface.js +3 -0
  25. package/dist/contracts/data/gatingPoliciesToolSurface.js.map +1 -1
  26. package/dist/contracts/data/promptContracts.d.ts.map +1 -1
  27. package/dist/contracts/data/promptContracts.js +20 -8
  28. package/dist/contracts/data/promptContracts.js.map +1 -1
  29. package/dist/contracts/data/toolCostMetadata.d.ts.map +1 -1
  30. package/dist/contracts/data/toolCostMetadata.js +3 -0
  31. package/dist/contracts/data/toolCostMetadata.js.map +1 -1
  32. package/dist/openai-tools/_manifests.generated.d.ts.map +1 -1
  33. package/dist/openai-tools/_manifests.generated.js +263 -10
  34. package/dist/openai-tools/_manifests.generated.js.map +1 -1
  35. package/dist/openai-tools/generation-tools.json +263 -10
  36. package/dist/public-skill-runtime/index.d.ts +2 -2
  37. package/dist/public-skill-runtime/index.d.ts.map +1 -1
  38. package/dist/public-skill-runtime/index.js +45 -15
  39. package/dist/public-skill-runtime/index.js.map +1 -1
  40. package/dist/schemas/agent/intent-input.schema.json +1 -1
  41. package/dist/schemas/artifacts/artifact-node.schema.json +1 -1
  42. package/dist/schemas/events/artifact-reference.schema.json +1 -1
  43. package/dist/schemas/tools/animate_photo.schema.json +1 -1
  44. package/dist/schemas/tools/edit_image.schema.json +20 -1
  45. package/dist/schemas/tools/generate_image.schema.json +20 -1
  46. package/dist/schemas/tools/generate_speech.schema.json +26 -1
  47. package/dist/schemas/tools/generate_video.schema.json +3 -3
  48. package/dist/schemas/tools/image_to_3d.schema.json +76 -0
  49. package/dist/schemas/tools/remove_background.schema.json +24 -0
  50. package/dist/schemas/tools/segment_image.schema.json +122 -0
  51. package/dist/schemas/workflows/durable-workflow-run.schema.json +4 -0
  52. package/dist/tools/definitions/edit-image/definition.js +2 -2
  53. package/dist/tools/definitions/edit-image/definition.js.map +1 -1
  54. package/dist/tools/definitions/generate-image/definition.js +1 -1
  55. package/dist/tools/definitions/generate-image/definition.js.map +1 -1
  56. package/dist/tools/definitions/generate-speech/definition.d.ts.map +1 -1
  57. package/dist/tools/definitions/generate-speech/definition.js +4 -0
  58. package/dist/tools/definitions/generate-speech/definition.js.map +1 -1
  59. package/dist/tools/definitions/generate-video/definition.js +2 -2
  60. package/dist/tools/definitions/generate-video/definition.js.map +1 -1
  61. package/dist/tools/definitions/image-to-3d/definition.d.ts +3 -0
  62. package/dist/tools/definitions/image-to-3d/definition.d.ts.map +1 -0
  63. package/dist/tools/definitions/image-to-3d/definition.js +30 -0
  64. package/dist/tools/definitions/image-to-3d/definition.js.map +1 -0
  65. package/dist/tools/definitions/index.d.ts +5 -2
  66. package/dist/tools/definitions/index.d.ts.map +1 -1
  67. package/dist/tools/definitions/index.js +54 -45
  68. package/dist/tools/definitions/index.js.map +1 -1
  69. package/dist/tools/definitions/remove-background/definition.d.ts +3 -0
  70. package/dist/tools/definitions/remove-background/definition.d.ts.map +1 -0
  71. package/dist/tools/definitions/remove-background/definition.js +20 -0
  72. package/dist/tools/definitions/remove-background/definition.js.map +1 -0
  73. package/dist/tools/definitions/segment-image/definition.d.ts +3 -0
  74. package/dist/tools/definitions/segment-image/definition.d.ts.map +1 -0
  75. package/dist/tools/definitions/segment-image/definition.js +27 -0
  76. package/dist/tools/definitions/segment-image/definition.js.map +1 -0
  77. package/dist/tools/index.d.ts +1 -1
  78. package/dist/tools/index.d.ts.map +1 -1
  79. package/dist/tools/index.js +5 -2
  80. package/dist/tools/index.js.map +1 -1
  81. package/dist/tools/result.d.ts +1 -1
  82. package/dist/tools/result.d.ts.map +1 -1
  83. package/dist/tools/shared/loraGuidance.d.ts.map +1 -1
  84. package/dist/tools/shared/loraGuidance.js +2 -2
  85. package/dist/tools/shared/loraGuidance.js.map +1 -1
  86. package/dist/workflows/executor.d.ts.map +1 -1
  87. package/dist/workflows/executor.js +2 -0
  88. package/dist/workflows/executor.js.map +1 -1
  89. package/dist/workflows/types.d.ts +1 -1
  90. package/dist/workflows/types.d.ts.map +1 -1
  91. package/dist-esm/agent/intentInput.js +1 -0
  92. package/dist-esm/agent/intentInput.js.map +1 -1
  93. package/dist-esm/artifacts/graph.js +1 -0
  94. package/dist-esm/artifacts/graph.js.map +1 -1
  95. package/dist-esm/client/SogniClientWrapper.js +12 -10
  96. package/dist-esm/client/SogniClientWrapper.js.map +1 -1
  97. package/dist-esm/contracts/backboneToolCatalog.js +3 -0
  98. package/dist-esm/contracts/backboneToolCatalog.js.map +1 -1
  99. package/dist-esm/contracts/data/gatingPolicies.js +3 -0
  100. package/dist-esm/contracts/data/gatingPolicies.js.map +1 -1
  101. package/dist-esm/contracts/data/gatingPoliciesToolSurface.js +3 -0
  102. package/dist-esm/contracts/data/gatingPoliciesToolSurface.js.map +1 -1
  103. package/dist-esm/contracts/data/promptContracts.js +20 -8
  104. package/dist-esm/contracts/data/promptContracts.js.map +1 -1
  105. package/dist-esm/contracts/data/toolCostMetadata.js +3 -0
  106. package/dist-esm/contracts/data/toolCostMetadata.js.map +1 -1
  107. package/dist-esm/openai-tools/_manifests.generated.js +263 -10
  108. package/dist-esm/openai-tools/_manifests.generated.js.map +1 -1
  109. package/dist-esm/openai-tools/generation-tools.json +263 -10
  110. package/dist-esm/public-skill-runtime/index.js +45 -15
  111. package/dist-esm/public-skill-runtime/index.js.map +1 -1
  112. package/dist-esm/schemas/agent/intent-input.schema.json +1 -1
  113. package/dist-esm/schemas/artifacts/artifact-node.schema.json +1 -1
  114. package/dist-esm/schemas/events/artifact-reference.schema.json +1 -1
  115. package/dist-esm/schemas/tools/animate_photo.schema.json +1 -1
  116. package/dist-esm/schemas/tools/edit_image.schema.json +20 -1
  117. package/dist-esm/schemas/tools/generate_image.schema.json +20 -1
  118. package/dist-esm/schemas/tools/generate_speech.schema.json +26 -1
  119. package/dist-esm/schemas/tools/generate_video.schema.json +3 -3
  120. package/dist-esm/schemas/tools/image_to_3d.schema.json +76 -0
  121. package/dist-esm/schemas/tools/remove_background.schema.json +24 -0
  122. package/dist-esm/schemas/tools/segment_image.schema.json +122 -0
  123. package/dist-esm/schemas/workflows/durable-workflow-run.schema.json +4 -0
  124. package/dist-esm/tools/definitions/edit-image/definition.js +2 -2
  125. package/dist-esm/tools/definitions/edit-image/definition.js.map +1 -1
  126. package/dist-esm/tools/definitions/generate-image/definition.js +1 -1
  127. package/dist-esm/tools/definitions/generate-image/definition.js.map +1 -1
  128. package/dist-esm/tools/definitions/generate-speech/definition.js +4 -0
  129. package/dist-esm/tools/definitions/generate-speech/definition.js.map +1 -1
  130. package/dist-esm/tools/definitions/generate-video/definition.js +2 -2
  131. package/dist-esm/tools/definitions/generate-video/definition.js.map +1 -1
  132. package/dist-esm/tools/definitions/image-to-3d/definition.js +27 -0
  133. package/dist-esm/tools/definitions/image-to-3d/definition.js.map +1 -0
  134. package/dist-esm/tools/definitions/index.js +7 -1
  135. package/dist-esm/tools/definitions/index.js.map +1 -1
  136. package/dist-esm/tools/definitions/remove-background/definition.js +17 -0
  137. package/dist-esm/tools/definitions/remove-background/definition.js.map +1 -0
  138. package/dist-esm/tools/definitions/segment-image/definition.js +24 -0
  139. package/dist-esm/tools/definitions/segment-image/definition.js.map +1 -0
  140. package/dist-esm/tools/index.js +1 -1
  141. package/dist-esm/tools/index.js.map +1 -1
  142. package/dist-esm/tools/shared/loraGuidance.js +2 -2
  143. package/dist-esm/tools/shared/loraGuidance.js.map +1 -1
  144. package/dist-esm/workflows/executor.js +2 -0
  145. package/dist-esm/workflows/executor.js.map +1 -1
  146. package/package.json +4 -4
@@ -1004,17 +1004,32 @@ function compactSceneVideoPrompt(project, scene, referenceTag) {
1004
1004
  lines.push(`Style: ${project.creativeBrief.visualQualityBar}`);
1005
1005
  return lines.join('\n');
1006
1006
  }
1007
+ function publicSeedanceVideoModelFromInput(input) {
1008
+ const requestedModelId = String(input.options?.requestedModelId ?? '').trim().toLowerCase();
1009
+ if (!requestedModelId || requestedModelId === 'seedance')
1010
+ return 'seedance2-5';
1011
+ const resolved = resolveVideoModelAlias(requestedModelId, 't2v');
1012
+ if (resolved === exports.SEEDANCE_WORKFLOW_MODELS.t2v25)
1013
+ return 'seedance2-5';
1014
+ if (resolved === exports.SEEDANCE_WORKFLOW_MODELS.t2vMini)
1015
+ return 'seedance2-mini';
1016
+ if (resolved === exports.SEEDANCE_WORKFLOW_MODELS.t2v)
1017
+ return 'seedance2';
1018
+ throw new Error(`No Seedance storyboard execution contract is registered for model "${requestedModelId}".`);
1019
+ }
1007
1020
  const PUBLIC_SEEDANCE_ADAPTER = {
1008
1021
  modelId: 'seedance',
1009
1022
  name: 'Seedance 2.x',
1010
1023
  supportedStages: ['storyboard_image', 'scene_clip'],
1011
1024
  compile(storyboard, input) {
1025
+ const videoModel = publicSeedanceVideoModelFromInput(input);
1012
1026
  if (input.stage === 'storyboard_image') {
1013
1027
  return {
1014
1028
  stage: 'storyboard_image',
1015
1029
  prompt: compileStoryboardImagePromptFromProject(storyboard),
1016
1030
  args: {
1017
- videoModel: 'seedance2-mini',
1031
+ videoModel,
1032
+ ...(videoModel === 'seedance2-5' ? { targetResolution: 1080 } : {}),
1018
1033
  aspectRatio: storyboard.targetVideoAspectRatio,
1019
1034
  skipPromptProcessing: true,
1020
1035
  expandPrompt: false,
@@ -1024,12 +1039,14 @@ const PUBLIC_SEEDANCE_ADAPTER = {
1024
1039
  if (input.stage === 'scene_clip') {
1025
1040
  const scene = requireStoryboardScene('SEEDANCE_ADAPTER', input);
1026
1041
  const referenceTag = input.primaryReferenceTag ?? formatModelRef('seedance', 1, 'image');
1027
- const duration = clampSeedanceStoryboardDuration(scene.durationSec ?? 5);
1042
+ const maxDuration = videoModel === 'seedance2-5' ? 30 : 15;
1043
+ const duration = Math.max(4, Math.min(maxDuration, Math.round(scene.durationSec ?? 5)));
1028
1044
  return {
1029
1045
  stage: 'scene_clip',
1030
1046
  prompt: compileSeedanceSceneClipPromptFromProject(storyboard, scene, referenceTag),
1031
1047
  args: {
1032
- videoModel: 'seedance2-mini',
1048
+ videoModel,
1049
+ ...(videoModel === 'seedance2-5' ? { targetResolution: 1080 } : {}),
1033
1050
  duration,
1034
1051
  aspectRatio: storyboard.targetVideoAspectRatio,
1035
1052
  skipPromptProcessing: true,
@@ -1040,7 +1057,7 @@ const PUBLIC_SEEDANCE_ADAPTER = {
1040
1057
  throw new StoryboardAdapterUnsupportedStageError('seedance', input.stage);
1041
1058
  },
1042
1059
  getSystemPromptGuidance() {
1043
- return `SEEDANCE STORYBOARD REFERENCES: If exactly one uploaded image is an ordered storyboard/sequence sheet and the user asks for a Seedance video with only a sparse/casual prompt, use generate_video with referenceImageIndices=[-1], prompt="${exports.SEEDANCE_STORYBOARD_REFERENCE_PROMPT}", videoModel="seedance2", skipPromptProcessing=true, and expandPrompt=false. Also use videoModel="seedance2" when a generated storyboard image becomes the Seedance reference, regardless of requested resolution, unless the user explicitly asks for a draft or Mini. Do not use this fallback when the user provides a literal prompt, their own script, shot list, timecoded beats, VO/SFX notes, or other substantive video instructions.`;
1060
+ return `SEEDANCE STORYBOARD REFERENCES: If exactly one uploaded image is an ordered storyboard/sequence sheet and the user asks for a Seedance video with only a sparse/casual prompt, use generate_video with referenceImageIndices=[-1], prompt="${exports.SEEDANCE_STORYBOARD_REFERENCE_PROMPT}", videoModel="seedance2-5", targetResolution=1080, skipPromptProcessing=true, and expandPrompt=false. Also use videoModel="seedance2-5" with targetResolution=1080 when a generated storyboard image becomes the Seedance reference, unless the user explicitly asks for another Seedance model or resolution. Do not use this fallback when the user provides a literal prompt, their own script, shot list, timecoded beats, VO/SFX notes, or other substantive video instructions.`;
1044
1061
  },
1045
1062
  };
1046
1063
  const PUBLIC_GPT_IMAGE_2_GUIDANCE = '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". An explicit GPT Image 2.5, Sunburst, or Flare request follows GPT IMAGE 2.5 ROUTING instead. 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.';
@@ -1243,7 +1260,13 @@ function compileForModel(modelId, storyboard, input) {
1243
1260
  const adapter = exports.storyboardAdapterRegistry.getAdapter(modelId);
1244
1261
  if (!adapter)
1245
1262
  throw new Error(`No storyboard adapter registered for model_id "${modelId}".`);
1246
- return adapter.compile(storyboard, input);
1263
+ return adapter.compile(storyboard, {
1264
+ ...input,
1265
+ options: {
1266
+ ...input.options,
1267
+ requestedModelId: modelId,
1268
+ },
1269
+ });
1247
1270
  }
1248
1271
  const PUBLIC_SEEDANCE_PRIMARY_IMAGE_REF = formatModelRef('seedance', 1, 'image');
1249
1272
  exports.SEEDANCE_STORYBOARD_REFERENCE_PROMPT = `Create a full-screen cinematic video from the storyboard in ${PUBLIC_SEEDANCE_PRIMARY_IMAGE_REF}. Treat ${PUBLIC_SEEDANCE_PRIMARY_IMAGE_REF} as the controlling source for shot order and intent, and as a source layout reference: use the thumbnails, timing, Dialogue/VO, Audio/SFX, timecodes, camera/motion notes, transitions, and scene order as instructions, not as a visual board to reproduce. Do not display the storyboard grid, borders, caption bars, storyboard title/footer text, panel numbers, section labels, slide titles, headings, or transcribed narration. Convert the ordered thumbnails into full-screen chronological beats; do not reuse only one or two motifs while skipping panels. When the board has panel titles, captions, section numbers, slide titles, or headings but no formal Dialogue/VO labels, treat those labels as short audio-only narration/voiceover or key-message beats in order unless they are clearly visual-only metadata. Voice each label as its own brief phrase with a pause; do not concatenate labels into run-on sentences and do not speak panel numbers. Show storyboard labels as visible text only when the user explicitly asks for visible text, subtitles, a title card, lower third, signage, or a title/end frame. Preserve the story spine, character/product/reference continuity, and cause-and-effect progression between beats. Treat transitions as motion instructions, not unrelated hard cuts unless the storyboard explicitly asks for hard cuts. Use brand color, lighting, product imagery, and composition instead of invented typography. Keep visible text limited to exact copy the user or storyboard explicitly marks as on-screen text, signage, title text, or end-frame text. Use a music/SFX arc that follows the storyboard audio notes and lands the final beat. Keep unrelated UI, extra logos, microtext, subtitles, and extra scenes out of the frame.`;
@@ -7171,8 +7194,13 @@ function dimensionsForShortSideAspectRatio(aspectRatio, shortSide) {
7171
7194
  return { width: 1280, height: 720 };
7172
7195
  }
7173
7196
  const multiple = 16;
7174
- const side = Math.max(multiple, Math.round(shortSide / multiple) * multiple);
7175
- const roundLongSide = (value) => Math.max(multiple, Math.round(value / multiple) * multiple);
7197
+ const exactProviderResolution = shortSide === 1080;
7198
+ const side = exactProviderResolution
7199
+ ? shortSide
7200
+ : Math.max(multiple, Math.round(shortSide / multiple) * multiple);
7201
+ const roundLongSide = (value) => exactProviderResolution
7202
+ ? Math.max(1, Math.round(value))
7203
+ : Math.max(multiple, Math.round(value / multiple) * multiple);
7176
7204
  if (ratioWidth >= ratioHeight) {
7177
7205
  return {
7178
7206
  width: roundLongSide(side * ratioWidth / ratioHeight),
@@ -7346,8 +7374,15 @@ function buildStoryboardVideoHostedToolSequenceInput(options) {
7346
7374
  const defaultImageDimensions = defaultStoryboardImageDimensions(layout);
7347
7375
  const imageWidth = options.imageWidth ?? defaultImageDimensions.width;
7348
7376
  const imageHeight = options.imageHeight ?? defaultImageDimensions.height;
7349
- const videoDuration = clampSeedanceStoryboardDuration(options.videoDurationSec ?? project.durationSec);
7350
- const videoDimensions = dimensionsForShortSideAspectRatio(project.targetVideoAspectRatio, options.videoTargetResolution ?? 720);
7377
+ const imageModel = options.imageModel ?? 'gpt-image-2.5-sunburst';
7378
+ const imageQuality = options.imageQuality ?? 'high';
7379
+ const imageOutputFormat = options.imageOutputFormat ?? 'png';
7380
+ const videoModel = options.videoModel ?? 'seedance2-5';
7381
+ const videoMaximumDuration = videoModel === 'seedance2-5' ? 30 : 15;
7382
+ const requestedVideoDuration = options.videoDurationSec ?? project.durationSec ?? 5;
7383
+ const videoDuration = Math.max(4, Math.min(videoMaximumDuration, Math.round(requestedVideoDuration)));
7384
+ const videoTargetResolution = options.videoTargetResolution ?? (videoModel === 'seedance2-mini' ? 720 : 1080);
7385
+ const videoDimensions = dimensionsForShortSideAspectRatio(project.targetVideoAspectRatio, videoTargetResolution);
7351
7386
  const storyboardImagePrompt = compileVideoStoryboardImagePrompt(compileOptions);
7352
7387
  const seedanceVideoPrompt = compileSeedanceStoryboardPromptFromProject(project, {
7353
7388
  storyboardImageTag: PUBLIC_SEEDANCE_PRIMARY_IMAGE_REF,
@@ -7364,10 +7399,6 @@ function buildStoryboardVideoHostedToolSequenceInput(options) {
7364
7399
  ].join(' '));
7365
7400
  }
7366
7401
  const title = options.title || `${project.title} storyboard video`;
7367
- const imageModel = options.imageModel ?? 'gpt-image-2';
7368
- const imageQuality = options.imageQuality ?? 'high';
7369
- const imageOutputFormat = options.imageOutputFormat ?? 'png';
7370
- const videoModel = options.videoModel ?? 'seedance2';
7371
7402
  const generateAudio = options.generateAudio ?? true;
7372
7403
  const input = {
7373
7404
  title,
@@ -7391,8 +7422,7 @@ function buildStoryboardVideoHostedToolSequenceInput(options) {
7391
7422
  arguments: {
7392
7423
  prompt: seedanceVideoPrompt,
7393
7424
  videoModel,
7394
- width: videoDimensions.width,
7395
- height: videoDimensions.height,
7425
+ targetResolution: videoTargetResolution,
7396
7426
  duration: videoDuration,
7397
7427
  fps: 24,
7398
7428
  numberOfVariations: 1,