@sogni-ai/sogni-intelligence-client 3.0.0-alpha.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 (659) hide show
  1. package/.env.example +33 -0
  2. package/LICENSE +22 -0
  3. package/README.md +823 -0
  4. package/contracts/index.d.ts +1 -0
  5. package/contracts/index.js +2 -0
  6. package/dist/client/SogniClientWrapper.d.ts +86 -0
  7. package/dist/client/SogniClientWrapper.d.ts.map +1 -0
  8. package/dist/client/SogniClientWrapper.js +914 -0
  9. package/dist/client/SogniClientWrapper.js.map +1 -0
  10. package/dist/contracts/backboneDurableWorkflow.d.ts +82 -0
  11. package/dist/contracts/backboneDurableWorkflow.d.ts.map +1 -0
  12. package/dist/contracts/backboneDurableWorkflow.js +96 -0
  13. package/dist/contracts/backboneDurableWorkflow.js.map +1 -0
  14. package/dist/contracts/backboneToolCatalog.d.ts +7 -0
  15. package/dist/contracts/backboneToolCatalog.d.ts.map +1 -0
  16. package/dist/contracts/backboneToolCatalog.js +62 -0
  17. package/dist/contracts/backboneToolCatalog.js.map +1 -0
  18. package/dist/contracts/composeWorkflowTypes.d.ts +6 -0
  19. package/dist/contracts/composeWorkflowTypes.d.ts.map +1 -0
  20. package/dist/contracts/composeWorkflowTypes.js +3 -0
  21. package/dist/contracts/composeWorkflowTypes.js.map +1 -0
  22. package/dist/contracts/data/costEstimation.d.ts +5 -0
  23. package/dist/contracts/data/costEstimation.d.ts.map +1 -0
  24. package/dist/contracts/data/costEstimation.js +22 -0
  25. package/dist/contracts/data/costEstimation.js.map +1 -0
  26. package/dist/contracts/data/gatingPolicies.d.ts +6 -0
  27. package/dist/contracts/data/gatingPolicies.d.ts.map +1 -0
  28. package/dist/contracts/data/gatingPolicies.js +218 -0
  29. package/dist/contracts/data/gatingPolicies.js.map +1 -0
  30. package/dist/contracts/data/gatingPoliciesToolSurface.d.ts +7 -0
  31. package/dist/contracts/data/gatingPoliciesToolSurface.d.ts.map +1 -0
  32. package/dist/contracts/data/gatingPoliciesToolSurface.js +61 -0
  33. package/dist/contracts/data/gatingPoliciesToolSurface.js.map +1 -0
  34. package/dist/contracts/data/index.d.ts +14 -0
  35. package/dist/contracts/data/index.d.ts.map +1 -0
  36. package/dist/contracts/data/index.js +57 -0
  37. package/dist/contracts/data/index.js.map +1 -0
  38. package/dist/contracts/data/promptContracts.d.ts +5 -0
  39. package/dist/contracts/data/promptContracts.d.ts.map +1 -0
  40. package/dist/contracts/data/promptContracts.js +1173 -0
  41. package/dist/contracts/data/promptContracts.js.map +1 -0
  42. package/dist/contracts/data/repairRecipes.d.ts +5 -0
  43. package/dist/contracts/data/repairRecipes.d.ts.map +1 -0
  44. package/dist/contracts/data/repairRecipes.js +197 -0
  45. package/dist/contracts/data/repairRecipes.js.map +1 -0
  46. package/dist/contracts/data/toolCatalog.d.ts +31 -0
  47. package/dist/contracts/data/toolCatalog.d.ts.map +1 -0
  48. package/dist/contracts/data/toolCatalog.js +129 -0
  49. package/dist/contracts/data/toolCatalog.js.map +1 -0
  50. package/dist/contracts/data/toolCostMetadata.d.ts +16 -0
  51. package/dist/contracts/data/toolCostMetadata.d.ts.map +1 -0
  52. package/dist/contracts/data/toolCostMetadata.js +284 -0
  53. package/dist/contracts/data/toolCostMetadata.js.map +1 -0
  54. package/dist/contracts/data/toolPermissions.d.ts +27 -0
  55. package/dist/contracts/data/toolPermissions.d.ts.map +1 -0
  56. package/dist/contracts/data/toolPermissions.js +78 -0
  57. package/dist/contracts/data/toolPermissions.js.map +1 -0
  58. package/dist/contracts/evaluators.d.ts +94 -0
  59. package/dist/contracts/evaluators.d.ts.map +1 -0
  60. package/dist/contracts/evaluators.js +468 -0
  61. package/dist/contracts/evaluators.js.map +1 -0
  62. package/dist/contracts/hostedComposition.d.ts +85 -0
  63. package/dist/contracts/hostedComposition.d.ts.map +1 -0
  64. package/dist/contracts/hostedComposition.js +139 -0
  65. package/dist/contracts/hostedComposition.js.map +1 -0
  66. package/dist/contracts/hostedToolValidation.d.ts +47 -0
  67. package/dist/contracts/hostedToolValidation.d.ts.map +1 -0
  68. package/dist/contracts/hostedToolValidation.js +301 -0
  69. package/dist/contracts/hostedToolValidation.js.map +1 -0
  70. package/dist/contracts/idLoraPrompt.d.ts +13 -0
  71. package/dist/contracts/idLoraPrompt.d.ts.map +1 -0
  72. package/dist/contracts/idLoraPrompt.js +78 -0
  73. package/dist/contracts/idLoraPrompt.js.map +1 -0
  74. package/dist/contracts/imagePrompt.d.ts +16 -0
  75. package/dist/contracts/imagePrompt.d.ts.map +1 -0
  76. package/dist/contracts/imagePrompt.js +148 -0
  77. package/dist/contracts/imagePrompt.js.map +1 -0
  78. package/dist/contracts/index.d.ts +48 -0
  79. package/dist/contracts/index.d.ts.map +1 -0
  80. package/dist/contracts/index.js +156 -0
  81. package/dist/contracts/index.js.map +1 -0
  82. package/dist/contracts/index.mjs +102 -0
  83. package/dist/contracts/musicComposition.d.ts +17 -0
  84. package/dist/contracts/musicComposition.d.ts.map +1 -0
  85. package/dist/contracts/musicComposition.js +188 -0
  86. package/dist/contracts/musicComposition.js.map +1 -0
  87. package/dist/contracts/promptContract.d.ts +11 -0
  88. package/dist/contracts/promptContract.d.ts.map +1 -0
  89. package/dist/contracts/promptContract.js +37 -0
  90. package/dist/contracts/promptContract.js.map +1 -0
  91. package/dist/contracts/promptOverrideMarker.d.ts +2 -0
  92. package/dist/contracts/promptOverrideMarker.d.ts.map +1 -0
  93. package/dist/contracts/promptOverrideMarker.js +5 -0
  94. package/dist/contracts/promptOverrideMarker.js.map +1 -0
  95. package/dist/contracts/randomThemes.d.ts +5 -0
  96. package/dist/contracts/randomThemes.d.ts.map +1 -0
  97. package/dist/contracts/randomThemes.js +159 -0
  98. package/dist/contracts/randomThemes.js.map +1 -0
  99. package/dist/contracts/registry.d.ts +29 -0
  100. package/dist/contracts/registry.d.ts.map +1 -0
  101. package/dist/contracts/registry.js +104 -0
  102. package/dist/contracts/registry.js.map +1 -0
  103. package/dist/contracts/repairRecipe.d.ts +14 -0
  104. package/dist/contracts/repairRecipe.d.ts.map +1 -0
  105. package/dist/contracts/repairRecipe.js +38 -0
  106. package/dist/contracts/repairRecipe.js.map +1 -0
  107. package/dist/contracts/storyboard.d.ts +112 -0
  108. package/dist/contracts/storyboard.d.ts.map +1 -0
  109. package/dist/contracts/storyboard.js +7 -0
  110. package/dist/contracts/storyboard.js.map +1 -0
  111. package/dist/contracts/telemetry.d.ts +57 -0
  112. package/dist/contracts/telemetry.d.ts.map +1 -0
  113. package/dist/contracts/telemetry.js +37 -0
  114. package/dist/contracts/telemetry.js.map +1 -0
  115. package/dist/contracts/toolGatingPolicy.d.ts +19 -0
  116. package/dist/contracts/toolGatingPolicy.d.ts.map +1 -0
  117. package/dist/contracts/toolGatingPolicy.js +63 -0
  118. package/dist/contracts/toolGatingPolicy.js.map +1 -0
  119. package/dist/contracts/toolPromptMarkers.d.ts +9 -0
  120. package/dist/contracts/toolPromptMarkers.d.ts.map +1 -0
  121. package/dist/contracts/toolPromptMarkers.js +13 -0
  122. package/dist/contracts/toolPromptMarkers.js.map +1 -0
  123. package/dist/contracts/toolSurface.d.ts +46 -0
  124. package/dist/contracts/toolSurface.d.ts.map +1 -0
  125. package/dist/contracts/toolSurface.js +119 -0
  126. package/dist/contracts/toolSurface.js.map +1 -0
  127. package/dist/contracts/turnPolicy.d.ts +22 -0
  128. package/dist/contracts/turnPolicy.d.ts.map +1 -0
  129. package/dist/contracts/turnPolicy.js +16 -0
  130. package/dist/contracts/turnPolicy.js.map +1 -0
  131. package/dist/contracts/videoComposition.d.ts +35 -0
  132. package/dist/contracts/videoComposition.d.ts.map +1 -0
  133. package/dist/contracts/videoComposition.js +224 -0
  134. package/dist/contracts/videoComposition.js.map +1 -0
  135. package/dist/index.d.ts +8 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +46 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/media/aspectRatio.d.ts +15 -0
  140. package/dist/media/aspectRatio.d.ts.map +1 -0
  141. package/dist/media/aspectRatio.js +72 -0
  142. package/dist/media/aspectRatio.js.map +1 -0
  143. package/dist/media/audioReference.d.ts +57 -0
  144. package/dist/media/audioReference.d.ts.map +1 -0
  145. package/dist/media/audioReference.js +194 -0
  146. package/dist/media/audioReference.js.map +1 -0
  147. package/dist/media/cameraAngle.d.ts +170 -0
  148. package/dist/media/cameraAngle.d.ts.map +1 -0
  149. package/dist/media/cameraAngle.js +48 -0
  150. package/dist/media/cameraAngle.js.map +1 -0
  151. package/dist/media/characterSheet.d.ts +9 -0
  152. package/dist/media/characterSheet.d.ts.map +1 -0
  153. package/dist/media/characterSheet.js +54 -0
  154. package/dist/media/characterSheet.js.map +1 -0
  155. package/dist/media/danceMontage.d.ts +18 -0
  156. package/dist/media/danceMontage.d.ts.map +1 -0
  157. package/dist/media/danceMontage.js +34 -0
  158. package/dist/media/danceMontage.js.map +1 -0
  159. package/dist/media/enhancementProfiles.d.ts +158 -0
  160. package/dist/media/enhancementProfiles.d.ts.map +1 -0
  161. package/dist/media/enhancementProfiles.js +224 -0
  162. package/dist/media/enhancementProfiles.js.map +1 -0
  163. package/dist/media/generationJob.d.ts +81 -0
  164. package/dist/media/generationJob.d.ts.map +1 -0
  165. package/dist/media/generationJob.js +91 -0
  166. package/dist/media/generationJob.js.map +1 -0
  167. package/dist/media/gptImage.d.ts +21 -0
  168. package/dist/media/gptImage.d.ts.map +1 -0
  169. package/dist/media/gptImage.js +162 -0
  170. package/dist/media/gptImage.js.map +1 -0
  171. package/dist/media/imageDimensions.d.ts +24 -0
  172. package/dist/media/imageDimensions.d.ts.map +1 -0
  173. package/dist/media/imageDimensions.js +64 -0
  174. package/dist/media/imageDimensions.js.map +1 -0
  175. package/dist/media/index.d.ts +16 -0
  176. package/dist/media/index.d.ts.map +1 -0
  177. package/dist/media/index.js +32 -0
  178. package/dist/media/index.js.map +1 -0
  179. package/dist/media/index.mjs +116 -0
  180. package/dist/media/musicSettings.d.ts +86 -0
  181. package/dist/media/musicSettings.d.ts.map +1 -0
  182. package/dist/media/musicSettings.js +234 -0
  183. package/dist/media/musicSettings.js.map +1 -0
  184. package/dist/media/vendorModelPremium.d.ts +21 -0
  185. package/dist/media/vendorModelPremium.d.ts.map +1 -0
  186. package/dist/media/vendorModelPremium.js +89 -0
  187. package/dist/media/vendorModelPremium.js.map +1 -0
  188. package/dist/media/videoAppSettings.d.ts +41 -0
  189. package/dist/media/videoAppSettings.d.ts.map +1 -0
  190. package/dist/media/videoAppSettings.js +128 -0
  191. package/dist/media/videoAppSettings.js.map +1 -0
  192. package/dist/media/videoContentLimit.d.ts +15 -0
  193. package/dist/media/videoContentLimit.d.ts.map +1 -0
  194. package/dist/media/videoContentLimit.js +169 -0
  195. package/dist/media/videoContentLimit.js.map +1 -0
  196. package/dist/media/videoReference.d.ts +35 -0
  197. package/dist/media/videoReference.d.ts.map +1 -0
  198. package/dist/media/videoReference.js +77 -0
  199. package/dist/media/videoReference.js.map +1 -0
  200. package/dist/media/videoSettings.d.ts +50 -0
  201. package/dist/media/videoSettings.d.ts.map +1 -0
  202. package/dist/media/videoSettings.js +200 -0
  203. package/dist/media/videoSettings.js.map +1 -0
  204. package/dist/public-skill-runtime/index.d.ts +1220 -0
  205. package/dist/public-skill-runtime/index.d.ts.map +1 -0
  206. package/dist/public-skill-runtime/index.js +6396 -0
  207. package/dist/public-skill-runtime/index.js.map +1 -0
  208. package/dist/public-skill-runtime/index.mjs +141 -0
  209. package/dist/replay/index.d.ts +4 -0
  210. package/dist/replay/index.d.ts.map +1 -0
  211. package/dist/replay/index.js +12 -0
  212. package/dist/replay/index.js.map +1 -0
  213. package/dist/replay/index.mjs +12 -0
  214. package/dist/replay/redact.d.ts +7 -0
  215. package/dist/replay/redact.d.ts.map +1 -0
  216. package/dist/replay/redact.js +108 -0
  217. package/dist/replay/redact.js.map +1 -0
  218. package/dist/replay/types.d.ts +61 -0
  219. package/dist/replay/types.d.ts.map +1 -0
  220. package/dist/replay/types.js +24 -0
  221. package/dist/replay/types.js.map +1 -0
  222. package/dist/runtime/chatTypes.d.ts +47 -0
  223. package/dist/runtime/chatTypes.d.ts.map +1 -0
  224. package/dist/runtime/chatTypes.js +3 -0
  225. package/dist/runtime/chatTypes.js.map +1 -0
  226. package/dist/runtime/durableWorkflowClient.d.ts +80 -0
  227. package/dist/runtime/durableWorkflowClient.d.ts.map +1 -0
  228. package/dist/runtime/durableWorkflowClient.js +312 -0
  229. package/dist/runtime/durableWorkflowClient.js.map +1 -0
  230. package/dist/runtime/index.d.ts +3 -0
  231. package/dist/runtime/index.d.ts.map +1 -0
  232. package/dist/runtime/index.js +18 -0
  233. package/dist/runtime/index.js.map +1 -0
  234. package/dist/runtime/index.mjs +21 -0
  235. package/dist/skills/asset_reference_management/index.d.ts +6 -0
  236. package/dist/skills/asset_reference_management/index.d.ts.map +1 -0
  237. package/dist/skills/asset_reference_management/index.js +18 -0
  238. package/dist/skills/asset_reference_management/index.js.map +1 -0
  239. package/dist/skills/asset_reference_management/index.mjs +18 -0
  240. package/dist/skills/asset_reference_management/manifest.d.ts +42 -0
  241. package/dist/skills/asset_reference_management/manifest.d.ts.map +1 -0
  242. package/dist/skills/asset_reference_management/manifest.js +237 -0
  243. package/dist/skills/asset_reference_management/manifest.js.map +1 -0
  244. package/dist/skills/asset_reference_management/modelRefRegistry.d.ts +24 -0
  245. package/dist/skills/asset_reference_management/modelRefRegistry.d.ts.map +1 -0
  246. package/dist/skills/asset_reference_management/modelRefRegistry.js +136 -0
  247. package/dist/skills/asset_reference_management/modelRefRegistry.js.map +1 -0
  248. package/dist/skills/asset_reference_management/types.d.ts +31 -0
  249. package/dist/skills/asset_reference_management/types.d.ts.map +1 -0
  250. package/dist/skills/asset_reference_management/types.js +3 -0
  251. package/dist/skills/asset_reference_management/types.js.map +1 -0
  252. package/dist/tools/definitions/add-subtitles/definition.d.ts +4 -0
  253. package/dist/tools/definitions/add-subtitles/definition.d.ts.map +1 -0
  254. package/dist/tools/definitions/add-subtitles/definition.js +83 -0
  255. package/dist/tools/definitions/add-subtitles/definition.js.map +1 -0
  256. package/dist/tools/definitions/animate-photo/definition.d.ts +3 -0
  257. package/dist/tools/definitions/animate-photo/definition.d.ts.map +1 -0
  258. package/dist/tools/definitions/animate-photo/definition.js +124 -0
  259. package/dist/tools/definitions/animate-photo/definition.js.map +1 -0
  260. package/dist/tools/definitions/apply-style/definition.d.ts +3 -0
  261. package/dist/tools/definitions/apply-style/definition.d.ts.map +1 -0
  262. package/dist/tools/definitions/apply-style/definition.js +50 -0
  263. package/dist/tools/definitions/apply-style/definition.js.map +1 -0
  264. package/dist/tools/definitions/change-angle/definition.d.ts +3 -0
  265. package/dist/tools/definitions/change-angle/definition.d.ts.map +1 -0
  266. package/dist/tools/definitions/change-angle/definition.js +49 -0
  267. package/dist/tools/definitions/change-angle/definition.js.map +1 -0
  268. package/dist/tools/definitions/dance-montage/dances.d.ts +11 -0
  269. package/dist/tools/definitions/dance-montage/dances.d.ts.map +1 -0
  270. package/dist/tools/definitions/dance-montage/dances.js +90 -0
  271. package/dist/tools/definitions/dance-montage/dances.js.map +1 -0
  272. package/dist/tools/definitions/dance-montage/definition.d.ts +3 -0
  273. package/dist/tools/definitions/dance-montage/definition.d.ts.map +1 -0
  274. package/dist/tools/definitions/dance-montage/definition.js +45 -0
  275. package/dist/tools/definitions/dance-montage/definition.js.map +1 -0
  276. package/dist/tools/definitions/edit-image/definition.d.ts +3 -0
  277. package/dist/tools/definitions/edit-image/definition.d.ts.map +1 -0
  278. package/dist/tools/definitions/edit-image/definition.js +128 -0
  279. package/dist/tools/definitions/edit-image/definition.js.map +1 -0
  280. package/dist/tools/definitions/extend-video/definition.d.ts +3 -0
  281. package/dist/tools/definitions/extend-video/definition.d.ts.map +1 -0
  282. package/dist/tools/definitions/extend-video/definition.js +51 -0
  283. package/dist/tools/definitions/extend-video/definition.js.map +1 -0
  284. package/dist/tools/definitions/generate-image/definition.d.ts +3 -0
  285. package/dist/tools/definitions/generate-image/definition.d.ts.map +1 -0
  286. package/dist/tools/definitions/generate-image/definition.js +107 -0
  287. package/dist/tools/definitions/generate-image/definition.js.map +1 -0
  288. package/dist/tools/definitions/generate-music/definition.d.ts +3 -0
  289. package/dist/tools/definitions/generate-music/definition.d.ts.map +1 -0
  290. package/dist/tools/definitions/generate-music/definition.js +75 -0
  291. package/dist/tools/definitions/generate-music/definition.js.map +1 -0
  292. package/dist/tools/definitions/generate-video/definition.d.ts +3 -0
  293. package/dist/tools/definitions/generate-video/definition.d.ts.map +1 -0
  294. package/dist/tools/definitions/generate-video/definition.js +120 -0
  295. package/dist/tools/definitions/generate-video/definition.js.map +1 -0
  296. package/dist/tools/definitions/index.d.ts +25 -0
  297. package/dist/tools/definitions/index.d.ts.map +1 -0
  298. package/dist/tools/definitions/index.js +66 -0
  299. package/dist/tools/definitions/index.js.map +1 -0
  300. package/dist/tools/definitions/orbit-video/definition.d.ts +3 -0
  301. package/dist/tools/definitions/orbit-video/definition.d.ts.map +1 -0
  302. package/dist/tools/definitions/orbit-video/definition.js +103 -0
  303. package/dist/tools/definitions/orbit-video/definition.js.map +1 -0
  304. package/dist/tools/definitions/overlay-video/definition.d.ts +4 -0
  305. package/dist/tools/definitions/overlay-video/definition.d.ts.map +1 -0
  306. package/dist/tools/definitions/overlay-video/definition.js +142 -0
  307. package/dist/tools/definitions/overlay-video/definition.js.map +1 -0
  308. package/dist/tools/definitions/refine-result/definition.d.ts +3 -0
  309. package/dist/tools/definitions/refine-result/definition.d.ts.map +1 -0
  310. package/dist/tools/definitions/refine-result/definition.js +56 -0
  311. package/dist/tools/definitions/refine-result/definition.js.map +1 -0
  312. package/dist/tools/definitions/replace-video-segment/definition.d.ts +3 -0
  313. package/dist/tools/definitions/replace-video-segment/definition.d.ts.map +1 -0
  314. package/dist/tools/definitions/replace-video-segment/definition.js +65 -0
  315. package/dist/tools/definitions/replace-video-segment/definition.js.map +1 -0
  316. package/dist/tools/definitions/restore-photo/definition.d.ts +3 -0
  317. package/dist/tools/definitions/restore-photo/definition.d.ts.map +1 -0
  318. package/dist/tools/definitions/restore-photo/definition.js +58 -0
  319. package/dist/tools/definitions/restore-photo/definition.js.map +1 -0
  320. package/dist/tools/definitions/sound-to-video/definition.d.ts +3 -0
  321. package/dist/tools/definitions/sound-to-video/definition.d.ts.map +1 -0
  322. package/dist/tools/definitions/sound-to-video/definition.js +91 -0
  323. package/dist/tools/definitions/sound-to-video/definition.js.map +1 -0
  324. package/dist/tools/definitions/stitch-video/definition.d.ts +4 -0
  325. package/dist/tools/definitions/stitch-video/definition.d.ts.map +1 -0
  326. package/dist/tools/definitions/stitch-video/definition.js +89 -0
  327. package/dist/tools/definitions/stitch-video/definition.js.map +1 -0
  328. package/dist/tools/definitions/types.d.ts +15 -0
  329. package/dist/tools/definitions/types.d.ts.map +1 -0
  330. package/dist/tools/definitions/types.js +3 -0
  331. package/dist/tools/definitions/types.js.map +1 -0
  332. package/dist/tools/definitions/video-to-video/definition.d.ts +3 -0
  333. package/dist/tools/definitions/video-to-video/definition.d.ts.map +1 -0
  334. package/dist/tools/definitions/video-to-video/definition.js +101 -0
  335. package/dist/tools/definitions/video-to-video/definition.js.map +1 -0
  336. package/dist/tools/index.d.ts +19 -0
  337. package/dist/tools/index.d.ts.map +1 -0
  338. package/dist/tools/index.js +70 -0
  339. package/dist/tools/index.js.map +1 -0
  340. package/dist/tools/index.mjs +86 -0
  341. package/dist/tools/normalizeArgs.d.ts +2 -0
  342. package/dist/tools/normalizeArgs.d.ts.map +1 -0
  343. package/dist/tools/normalizeArgs.js +40 -0
  344. package/dist/tools/normalizeArgs.js.map +1 -0
  345. package/dist/tools/result.d.ts +47 -0
  346. package/dist/tools/result.d.ts.map +1 -0
  347. package/dist/tools/result.js +38 -0
  348. package/dist/tools/result.js.map +1 -0
  349. package/dist/tools/shared/downloadFilename.d.ts +18 -0
  350. package/dist/tools/shared/downloadFilename.d.ts.map +1 -0
  351. package/dist/tools/shared/downloadFilename.js +157 -0
  352. package/dist/tools/shared/downloadFilename.js.map +1 -0
  353. package/dist/tools/shared/errorClassification.d.ts +15 -0
  354. package/dist/tools/shared/errorClassification.d.ts.map +1 -0
  355. package/dist/tools/shared/errorClassification.js +78 -0
  356. package/dist/tools/shared/errorClassification.js.map +1 -0
  357. package/dist/tools/shared/imageEncoding.d.ts +2 -0
  358. package/dist/tools/shared/imageEncoding.d.ts.map +1 -0
  359. package/dist/tools/shared/imageEncoding.js +11 -0
  360. package/dist/tools/shared/imageEncoding.js.map +1 -0
  361. package/dist/tools/shared/llmHelpers.d.ts +14 -0
  362. package/dist/tools/shared/llmHelpers.d.ts.map +1 -0
  363. package/dist/tools/shared/llmHelpers.js +145 -0
  364. package/dist/tools/shared/llmHelpers.js.map +1 -0
  365. package/dist/tools/shared/modelRegistry.d.ts +10 -0
  366. package/dist/tools/shared/modelRegistry.d.ts.map +1 -0
  367. package/dist/tools/shared/modelRegistry.js +98 -0
  368. package/dist/tools/shared/modelRegistry.js.map +1 -0
  369. package/dist/tools/shared/policyChecks.d.ts +25 -0
  370. package/dist/tools/shared/policyChecks.d.ts.map +1 -0
  371. package/dist/tools/shared/policyChecks.js +79 -0
  372. package/dist/tools/shared/policyChecks.js.map +1 -0
  373. package/dist/tools/shared/promptRefinementCache.d.ts +10 -0
  374. package/dist/tools/shared/promptRefinementCache.d.ts.map +1 -0
  375. package/dist/tools/shared/promptRefinementCache.js +81 -0
  376. package/dist/tools/shared/promptRefinementCache.js.map +1 -0
  377. package/dist/tools/shared/promptSanitizer.d.ts +2 -0
  378. package/dist/tools/shared/promptSanitizer.d.ts.map +1 -0
  379. package/dist/tools/shared/promptSanitizer.js +73 -0
  380. package/dist/tools/shared/promptSanitizer.js.map +1 -0
  381. package/dist/tools/shared/seedancePolicyErrors.d.ts +33 -0
  382. package/dist/tools/shared/seedancePolicyErrors.d.ts.map +1 -0
  383. package/dist/tools/shared/seedancePolicyErrors.js +239 -0
  384. package/dist/tools/shared/seedancePolicyErrors.js.map +1 -0
  385. package/dist/tools/shared/slotFailureSummary.d.ts +7 -0
  386. package/dist/tools/shared/slotFailureSummary.d.ts.map +1 -0
  387. package/dist/tools/shared/slotFailureSummary.js +63 -0
  388. package/dist/tools/shared/slotFailureSummary.js.map +1 -0
  389. package/dist/tools/shared/visionDescriptionCache.d.ts +5 -0
  390. package/dist/tools/shared/visionDescriptionCache.d.ts.map +1 -0
  391. package/dist/tools/shared/visionDescriptionCache.js +35 -0
  392. package/dist/tools/shared/visionDescriptionCache.js.map +1 -0
  393. package/dist/types/index.d.ts +224 -0
  394. package/dist/types/index.d.ts.map +1 -0
  395. package/dist/types/index.js +34 -0
  396. package/dist/types/index.js.map +1 -0
  397. package/dist/utils/errors.d.ts +38 -0
  398. package/dist/utils/errors.d.ts.map +1 -0
  399. package/dist/utils/errors.js +99 -0
  400. package/dist/utils/errors.js.map +1 -0
  401. package/dist/utils/helpers.d.ts +36 -0
  402. package/dist/utils/helpers.d.ts.map +1 -0
  403. package/dist/utils/helpers.js +445 -0
  404. package/dist/utils/helpers.js.map +1 -0
  405. package/dist/workflows/bindings.d.ts +23 -0
  406. package/dist/workflows/bindings.d.ts.map +1 -0
  407. package/dist/workflows/bindings.js +190 -0
  408. package/dist/workflows/bindings.js.map +1 -0
  409. package/dist/workflows/executor-ports.d.ts +11 -0
  410. package/dist/workflows/executor-ports.d.ts.map +1 -0
  411. package/dist/workflows/executor-ports.js +3 -0
  412. package/dist/workflows/executor-ports.js.map +1 -0
  413. package/dist/workflows/executor.d.ts +17 -0
  414. package/dist/workflows/executor.d.ts.map +1 -0
  415. package/dist/workflows/executor.js +526 -0
  416. package/dist/workflows/executor.js.map +1 -0
  417. package/dist/workflows/index.d.ts +8 -0
  418. package/dist/workflows/index.d.ts.map +1 -0
  419. package/dist/workflows/index.js +25 -0
  420. package/dist/workflows/index.js.map +1 -0
  421. package/dist/workflows/index.mjs +22 -0
  422. package/dist/workflows/summarize.d.ts +7 -0
  423. package/dist/workflows/summarize.d.ts.map +1 -0
  424. package/dist/workflows/summarize.js +54 -0
  425. package/dist/workflows/summarize.js.map +1 -0
  426. package/dist/workflows/types.d.ts +302 -0
  427. package/dist/workflows/types.d.ts.map +1 -0
  428. package/dist/workflows/types.js +3 -0
  429. package/dist/workflows/types.js.map +1 -0
  430. package/dist/workflows/validation.d.ts +10 -0
  431. package/dist/workflows/validation.d.ts.map +1 -0
  432. package/dist/workflows/validation.js +340 -0
  433. package/dist/workflows/validation.js.map +1 -0
  434. package/dist-esm/client/SogniClientWrapper.js +877 -0
  435. package/dist-esm/client/SogniClientWrapper.js.map +1 -0
  436. package/dist-esm/contracts/backboneDurableWorkflow.js +90 -0
  437. package/dist-esm/contracts/backboneDurableWorkflow.js.map +1 -0
  438. package/dist-esm/contracts/backboneToolCatalog.js +59 -0
  439. package/dist-esm/contracts/backboneToolCatalog.js.map +1 -0
  440. package/dist-esm/contracts/composeWorkflowTypes.js +2 -0
  441. package/dist-esm/contracts/composeWorkflowTypes.js.map +1 -0
  442. package/dist-esm/contracts/data/costEstimation.js +18 -0
  443. package/dist-esm/contracts/data/costEstimation.js.map +1 -0
  444. package/dist-esm/contracts/data/gatingPolicies.js +214 -0
  445. package/dist-esm/contracts/data/gatingPolicies.js.map +1 -0
  446. package/dist-esm/contracts/data/gatingPoliciesToolSurface.js +57 -0
  447. package/dist-esm/contracts/data/gatingPoliciesToolSurface.js.map +1 -0
  448. package/dist-esm/contracts/data/index.js +23 -0
  449. package/dist-esm/contracts/data/index.js.map +1 -0
  450. package/dist-esm/contracts/data/promptContracts.js +1169 -0
  451. package/dist-esm/contracts/data/promptContracts.js.map +1 -0
  452. package/dist-esm/contracts/data/repairRecipes.js +193 -0
  453. package/dist-esm/contracts/data/repairRecipes.js.map +1 -0
  454. package/dist-esm/contracts/data/toolCatalog.js +122 -0
  455. package/dist-esm/contracts/data/toolCatalog.js.map +1 -0
  456. package/dist-esm/contracts/data/toolCostMetadata.js +277 -0
  457. package/dist-esm/contracts/data/toolCostMetadata.js.map +1 -0
  458. package/dist-esm/contracts/data/toolPermissions.js +70 -0
  459. package/dist-esm/contracts/data/toolPermissions.js.map +1 -0
  460. package/dist-esm/contracts/evaluators.js +463 -0
  461. package/dist-esm/contracts/evaluators.js.map +1 -0
  462. package/dist-esm/contracts/hostedComposition.js +128 -0
  463. package/dist-esm/contracts/hostedComposition.js.map +1 -0
  464. package/dist-esm/contracts/hostedToolValidation.js +296 -0
  465. package/dist-esm/contracts/hostedToolValidation.js.map +1 -0
  466. package/dist-esm/contracts/idLoraPrompt.js +72 -0
  467. package/dist-esm/contracts/idLoraPrompt.js.map +1 -0
  468. package/dist-esm/contracts/imagePrompt.js +143 -0
  469. package/dist-esm/contracts/imagePrompt.js.map +1 -0
  470. package/dist-esm/contracts/index.js +27 -0
  471. package/dist-esm/contracts/index.js.map +1 -0
  472. package/dist-esm/contracts/musicComposition.js +182 -0
  473. package/dist-esm/contracts/musicComposition.js.map +1 -0
  474. package/dist-esm/contracts/promptContract.js +34 -0
  475. package/dist-esm/contracts/promptContract.js.map +1 -0
  476. package/dist-esm/contracts/promptOverrideMarker.js +2 -0
  477. package/dist-esm/contracts/promptOverrideMarker.js.map +1 -0
  478. package/dist-esm/contracts/randomThemes.js +154 -0
  479. package/dist-esm/contracts/randomThemes.js.map +1 -0
  480. package/dist-esm/contracts/registry.js +100 -0
  481. package/dist-esm/contracts/registry.js.map +1 -0
  482. package/dist-esm/contracts/repairRecipe.js +35 -0
  483. package/dist-esm/contracts/repairRecipe.js.map +1 -0
  484. package/dist-esm/contracts/storyboard.js +4 -0
  485. package/dist-esm/contracts/storyboard.js.map +1 -0
  486. package/dist-esm/contracts/telemetry.js +33 -0
  487. package/dist-esm/contracts/telemetry.js.map +1 -0
  488. package/dist-esm/contracts/toolGatingPolicy.js +60 -0
  489. package/dist-esm/contracts/toolGatingPolicy.js.map +1 -0
  490. package/dist-esm/contracts/toolPromptMarkers.js +10 -0
  491. package/dist-esm/contracts/toolPromptMarkers.js.map +1 -0
  492. package/dist-esm/contracts/toolSurface.js +110 -0
  493. package/dist-esm/contracts/toolSurface.js.map +1 -0
  494. package/dist-esm/contracts/turnPolicy.js +13 -0
  495. package/dist-esm/contracts/turnPolicy.js.map +1 -0
  496. package/dist-esm/contracts/videoComposition.js +216 -0
  497. package/dist-esm/contracts/videoComposition.js.map +1 -0
  498. package/dist-esm/index.js +7 -0
  499. package/dist-esm/index.js.map +1 -0
  500. package/dist-esm/media/aspectRatio.js +65 -0
  501. package/dist-esm/media/aspectRatio.js.map +1 -0
  502. package/dist-esm/media/audioReference.js +186 -0
  503. package/dist-esm/media/audioReference.js.map +1 -0
  504. package/dist-esm/media/cameraAngle.js +41 -0
  505. package/dist-esm/media/cameraAngle.js.map +1 -0
  506. package/dist-esm/media/characterSheet.js +48 -0
  507. package/dist-esm/media/characterSheet.js.map +1 -0
  508. package/dist-esm/media/danceMontage.js +29 -0
  509. package/dist-esm/media/danceMontage.js.map +1 -0
  510. package/dist-esm/media/enhancementProfiles.js +219 -0
  511. package/dist-esm/media/enhancementProfiles.js.map +1 -0
  512. package/dist-esm/media/generationJob.js +87 -0
  513. package/dist-esm/media/generationJob.js.map +1 -0
  514. package/dist-esm/media/gptImage.js +150 -0
  515. package/dist-esm/media/gptImage.js.map +1 -0
  516. package/dist-esm/media/imageDimensions.js +59 -0
  517. package/dist-esm/media/imageDimensions.js.map +1 -0
  518. package/dist-esm/media/index.js +16 -0
  519. package/dist-esm/media/index.js.map +1 -0
  520. package/dist-esm/media/musicSettings.js +230 -0
  521. package/dist-esm/media/musicSettings.js.map +1 -0
  522. package/dist-esm/media/vendorModelPremium.js +81 -0
  523. package/dist-esm/media/vendorModelPremium.js.map +1 -0
  524. package/dist-esm/media/videoAppSettings.js +125 -0
  525. package/dist-esm/media/videoAppSettings.js.map +1 -0
  526. package/dist-esm/media/videoContentLimit.js +162 -0
  527. package/dist-esm/media/videoContentLimit.js.map +1 -0
  528. package/dist-esm/media/videoReference.js +72 -0
  529. package/dist-esm/media/videoReference.js.map +1 -0
  530. package/dist-esm/media/videoSettings.js +191 -0
  531. package/dist-esm/media/videoSettings.js.map +1 -0
  532. package/dist-esm/package.json +3 -0
  533. package/dist-esm/public-skill-runtime/index.js +6294 -0
  534. package/dist-esm/public-skill-runtime/index.js.map +1 -0
  535. package/dist-esm/replay/index.js +3 -0
  536. package/dist-esm/replay/index.js.map +1 -0
  537. package/dist-esm/replay/redact.js +102 -0
  538. package/dist-esm/replay/redact.js.map +1 -0
  539. package/dist-esm/replay/types.js +20 -0
  540. package/dist-esm/replay/types.js.map +1 -0
  541. package/dist-esm/runtime/chatTypes.js +2 -0
  542. package/dist-esm/runtime/chatTypes.js.map +1 -0
  543. package/dist-esm/runtime/durableWorkflowClient.js +295 -0
  544. package/dist-esm/runtime/durableWorkflowClient.js.map +1 -0
  545. package/dist-esm/runtime/index.js +2 -0
  546. package/dist-esm/runtime/index.js.map +1 -0
  547. package/dist-esm/skills/asset_reference_management/index.js +3 -0
  548. package/dist-esm/skills/asset_reference_management/index.js.map +1 -0
  549. package/dist-esm/skills/asset_reference_management/manifest.js +228 -0
  550. package/dist-esm/skills/asset_reference_management/manifest.js.map +1 -0
  551. package/dist-esm/skills/asset_reference_management/modelRefRegistry.js +129 -0
  552. package/dist-esm/skills/asset_reference_management/modelRefRegistry.js.map +1 -0
  553. package/dist-esm/skills/asset_reference_management/types.js +2 -0
  554. package/dist-esm/skills/asset_reference_management/types.js.map +1 -0
  555. package/dist-esm/tools/definitions/add-subtitles/definition.js +80 -0
  556. package/dist-esm/tools/definitions/add-subtitles/definition.js.map +1 -0
  557. package/dist-esm/tools/definitions/animate-photo/definition.js +121 -0
  558. package/dist-esm/tools/definitions/animate-photo/definition.js.map +1 -0
  559. package/dist-esm/tools/definitions/apply-style/definition.js +47 -0
  560. package/dist-esm/tools/definitions/apply-style/definition.js.map +1 -0
  561. package/dist-esm/tools/definitions/change-angle/definition.js +46 -0
  562. package/dist-esm/tools/definitions/change-angle/definition.js.map +1 -0
  563. package/dist-esm/tools/definitions/dance-montage/dances.js +86 -0
  564. package/dist-esm/tools/definitions/dance-montage/dances.js.map +1 -0
  565. package/dist-esm/tools/definitions/dance-montage/definition.js +42 -0
  566. package/dist-esm/tools/definitions/dance-montage/definition.js.map +1 -0
  567. package/dist-esm/tools/definitions/edit-image/definition.js +125 -0
  568. package/dist-esm/tools/definitions/edit-image/definition.js.map +1 -0
  569. package/dist-esm/tools/definitions/extend-video/definition.js +48 -0
  570. package/dist-esm/tools/definitions/extend-video/definition.js.map +1 -0
  571. package/dist-esm/tools/definitions/generate-image/definition.js +104 -0
  572. package/dist-esm/tools/definitions/generate-image/definition.js.map +1 -0
  573. package/dist-esm/tools/definitions/generate-music/definition.js +72 -0
  574. package/dist-esm/tools/definitions/generate-music/definition.js.map +1 -0
  575. package/dist-esm/tools/definitions/generate-video/definition.js +117 -0
  576. package/dist-esm/tools/definitions/generate-video/definition.js.map +1 -0
  577. package/dist-esm/tools/definitions/index.js +41 -0
  578. package/dist-esm/tools/definitions/index.js.map +1 -0
  579. package/dist-esm/tools/definitions/orbit-video/definition.js +100 -0
  580. package/dist-esm/tools/definitions/orbit-video/definition.js.map +1 -0
  581. package/dist-esm/tools/definitions/overlay-video/definition.js +139 -0
  582. package/dist-esm/tools/definitions/overlay-video/definition.js.map +1 -0
  583. package/dist-esm/tools/definitions/refine-result/definition.js +53 -0
  584. package/dist-esm/tools/definitions/refine-result/definition.js.map +1 -0
  585. package/dist-esm/tools/definitions/replace-video-segment/definition.js +62 -0
  586. package/dist-esm/tools/definitions/replace-video-segment/definition.js.map +1 -0
  587. package/dist-esm/tools/definitions/restore-photo/definition.js +55 -0
  588. package/dist-esm/tools/definitions/restore-photo/definition.js.map +1 -0
  589. package/dist-esm/tools/definitions/sound-to-video/definition.js +88 -0
  590. package/dist-esm/tools/definitions/sound-to-video/definition.js.map +1 -0
  591. package/dist-esm/tools/definitions/stitch-video/definition.js +86 -0
  592. package/dist-esm/tools/definitions/stitch-video/definition.js.map +1 -0
  593. package/dist-esm/tools/definitions/types.js +2 -0
  594. package/dist-esm/tools/definitions/types.js.map +1 -0
  595. package/dist-esm/tools/definitions/video-to-video/definition.js +98 -0
  596. package/dist-esm/tools/definitions/video-to-video/definition.js.map +1 -0
  597. package/dist-esm/tools/index.js +15 -0
  598. package/dist-esm/tools/index.js.map +1 -0
  599. package/dist-esm/tools/normalizeArgs.js +37 -0
  600. package/dist-esm/tools/normalizeArgs.js.map +1 -0
  601. package/dist-esm/tools/result.js +31 -0
  602. package/dist-esm/tools/result.js.map +1 -0
  603. package/dist-esm/tools/shared/downloadFilename.js +147 -0
  604. package/dist-esm/tools/shared/downloadFilename.js.map +1 -0
  605. package/dist-esm/tools/shared/errorClassification.js +74 -0
  606. package/dist-esm/tools/shared/errorClassification.js.map +1 -0
  607. package/dist-esm/tools/shared/imageEncoding.js +8 -0
  608. package/dist-esm/tools/shared/imageEncoding.js.map +1 -0
  609. package/dist-esm/tools/shared/llmHelpers.js +137 -0
  610. package/dist-esm/tools/shared/llmHelpers.js.map +1 -0
  611. package/dist-esm/tools/shared/modelRegistry.js +91 -0
  612. package/dist-esm/tools/shared/modelRegistry.js.map +1 -0
  613. package/dist-esm/tools/shared/policyChecks.js +73 -0
  614. package/dist-esm/tools/shared/policyChecks.js.map +1 -0
  615. package/dist-esm/tools/shared/promptRefinementCache.js +70 -0
  616. package/dist-esm/tools/shared/promptRefinementCache.js.map +1 -0
  617. package/dist-esm/tools/shared/promptSanitizer.js +70 -0
  618. package/dist-esm/tools/shared/promptSanitizer.js.map +1 -0
  619. package/dist-esm/tools/shared/seedancePolicyErrors.js +232 -0
  620. package/dist-esm/tools/shared/seedancePolicyErrors.js.map +1 -0
  621. package/dist-esm/tools/shared/slotFailureSummary.js +60 -0
  622. package/dist-esm/tools/shared/slotFailureSummary.js.map +1 -0
  623. package/dist-esm/tools/shared/visionDescriptionCache.js +29 -0
  624. package/dist-esm/tools/shared/visionDescriptionCache.js.map +1 -0
  625. package/dist-esm/types/index.js +31 -0
  626. package/dist-esm/types/index.js.map +1 -0
  627. package/dist-esm/utils/errors.js +86 -0
  628. package/dist-esm/utils/errors.js.map +1 -0
  629. package/dist-esm/utils/helpers.js +419 -0
  630. package/dist-esm/utils/helpers.js.map +1 -0
  631. package/dist-esm/workflows/bindings.js +182 -0
  632. package/dist-esm/workflows/bindings.js.map +1 -0
  633. package/dist-esm/workflows/executor-ports.js +2 -0
  634. package/dist-esm/workflows/executor-ports.js.map +1 -0
  635. package/dist-esm/workflows/executor.js +522 -0
  636. package/dist-esm/workflows/executor.js.map +1 -0
  637. package/dist-esm/workflows/index.js +7 -0
  638. package/dist-esm/workflows/index.js.map +1 -0
  639. package/dist-esm/workflows/summarize.js +51 -0
  640. package/dist-esm/workflows/summarize.js.map +1 -0
  641. package/dist-esm/workflows/types.js +2 -0
  642. package/dist-esm/workflows/types.js.map +1 -0
  643. package/dist-esm/workflows/validation.js +330 -0
  644. package/dist-esm/workflows/validation.js.map +1 -0
  645. package/media/index.d.ts +1 -0
  646. package/media/index.js +2 -0
  647. package/package.json +134 -0
  648. package/public-skill-runtime/index.d.ts +1 -0
  649. package/public-skill-runtime/index.js +2 -0
  650. package/replay/index.d.ts +1 -0
  651. package/replay/index.js +2 -0
  652. package/runtime/index.d.ts +1 -0
  653. package/runtime/index.js +2 -0
  654. package/skills/asset_reference_management/index.d.ts +1 -0
  655. package/skills/asset_reference_management/index.js +2 -0
  656. package/tools/index.d.ts +1 -0
  657. package/tools/index.js +2 -0
  658. package/workflows/index.d.ts +1 -0
  659. package/workflows/index.js +2 -0
@@ -0,0 +1,100 @@
1
+ import { isPromptContract } from './promptContract.js';
2
+ import { isToolGatingPolicy } from './toolGatingPolicy.js';
3
+ import { isRepairRecipe } from './repairRecipe.js';
4
+ function isString(value) {
5
+ return typeof value === 'string' && value.length > 0;
6
+ }
7
+ function isStringRecord(value) {
8
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
9
+ }
10
+ function isToolCostMetadata(value) {
11
+ if (!isStringRecord(value))
12
+ return false;
13
+ return isString(value.tool)
14
+ && isString(value.costClass)
15
+ && ['safe', 'paid', 'destructive'].includes(String(value.riskLevel))
16
+ && isString(value.userVisibleCost)
17
+ && isString(value.description);
18
+ }
19
+ function isToolPermission(value) {
20
+ if (!isStringRecord(value))
21
+ return false;
22
+ return isString(value.tool)
23
+ && ['allow', 'require_user_approval', 'require_explicit_intent'].includes(String(value.decision))
24
+ && ['safe', 'paid', 'destructive'].includes(String(value.riskLevel))
25
+ && typeof value.requiresUserApproval === 'boolean'
26
+ && isString(value.userVisibleCost);
27
+ }
28
+ export class ContractRegistry {
29
+ constructor() {
30
+ this.promptContracts = new Map();
31
+ this.gatingPolicies = new Map();
32
+ this.repairRecipes = new Map();
33
+ this.toolCostMetadata = new Map();
34
+ this.toolPermissions = new Map();
35
+ }
36
+ registerPromptContract(contract) {
37
+ if (!isPromptContract(contract)) {
38
+ throw new Error(`Invalid PromptContract: ${JSON.stringify(contract)}`);
39
+ }
40
+ this.promptContracts.set(contract.toolName, contract);
41
+ }
42
+ registerGatingPolicy(policy) {
43
+ if (!isToolGatingPolicy(policy)) {
44
+ throw new Error(`Invalid ToolGatingPolicy: ${JSON.stringify(policy)}`);
45
+ }
46
+ this.gatingPolicies.set(policy.policyId, policy);
47
+ }
48
+ registerRepairRecipe(recipe) {
49
+ if (!isRepairRecipe(recipe)) {
50
+ throw new Error(`Invalid RepairRecipe: ${JSON.stringify(recipe)}`);
51
+ }
52
+ this.repairRecipes.set(this.repairKey(recipe.toolName, recipe.errorCode), recipe);
53
+ }
54
+ registerToolCostMetadata(metadata) {
55
+ if (!isToolCostMetadata(metadata)) {
56
+ throw new Error(`Invalid ToolCostMetadata: ${JSON.stringify(metadata)}`);
57
+ }
58
+ this.toolCostMetadata.set(metadata.tool, metadata);
59
+ }
60
+ registerToolPermission(permission) {
61
+ if (!isToolPermission(permission)) {
62
+ throw new Error(`Invalid ToolPermission: ${JSON.stringify(permission)}`);
63
+ }
64
+ this.toolPermissions.set(permission.tool, permission);
65
+ }
66
+ getPromptContract(toolName) {
67
+ return this.promptContracts.get(toolName);
68
+ }
69
+ getGatingPolicy(policyId) {
70
+ return this.gatingPolicies.get(policyId);
71
+ }
72
+ findRepairRecipe(toolName, errorCode) {
73
+ return this.repairRecipes.get(this.repairKey(toolName, errorCode));
74
+ }
75
+ getToolCostMetadata(toolName) {
76
+ return this.toolCostMetadata.get(toolName);
77
+ }
78
+ getToolPermission(toolName) {
79
+ return this.toolPermissions.get(toolName);
80
+ }
81
+ listPromptContracts() {
82
+ return Array.from(this.promptContracts.values());
83
+ }
84
+ listGatingPolicies() {
85
+ return Array.from(this.gatingPolicies.values());
86
+ }
87
+ listRepairRecipes() {
88
+ return Array.from(this.repairRecipes.values());
89
+ }
90
+ listToolCostMetadata() {
91
+ return Array.from(this.toolCostMetadata.values());
92
+ }
93
+ listToolPermissions() {
94
+ return Array.from(this.toolPermissions.values());
95
+ }
96
+ repairKey(toolName, errorCode) {
97
+ return `${toolName}::${errorCode}`;
98
+ }
99
+ }
100
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ const VALID_MODES = new Set([
2
+ 'autoRepair',
3
+ 'suggestFollowup',
4
+ 'stopAndAsk',
5
+ ]);
6
+ export function isRepairRecipe(value) {
7
+ if (value === null || typeof value !== 'object')
8
+ return false;
9
+ const v = value;
10
+ if (typeof v.recipeId !== 'string' || v.recipeId.length === 0)
11
+ return false;
12
+ if (typeof v.version !== 'string' || v.version.length === 0)
13
+ return false;
14
+ if (typeof v.toolName !== 'string' || v.toolName.length === 0)
15
+ return false;
16
+ if (typeof v.errorCode !== 'string' || v.errorCode.length === 0)
17
+ return false;
18
+ if (typeof v.mode !== 'string' || !VALID_MODES.has(v.mode))
19
+ return false;
20
+ if (typeof v.maxRetries !== 'number' || !Number.isFinite(v.maxRetries) || v.maxRetries < 0)
21
+ return false;
22
+ if (typeof v.repairNoteTemplate !== 'string')
23
+ return false;
24
+ if (v.autoRepairFields !== undefined) {
25
+ if (!Array.isArray(v.autoRepairFields))
26
+ return false;
27
+ if (v.autoRepairFields.some((x) => typeof x !== 'string'))
28
+ return false;
29
+ }
30
+ if (v.suggestedFollowupTool !== undefined && typeof v.suggestedFollowupTool !== 'string') {
31
+ return false;
32
+ }
33
+ return true;
34
+ }
35
+ //# sourceMappingURL=repairRecipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repairRecipe.js","sourceRoot":"","sources":["../../src/contracts/repairRecipe.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAkC,IAAI,GAAG,CAAC;IACzD,YAAY;IACZ,iBAAiB;IACjB,YAAY;CACb,CAAC,CAAC;AA+BH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAwB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7F,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzG,IAAI,OAAO,CAAC,CAAC,kBAAkB,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3D,IAAI,CAAC,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QACrD,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,CAAC,qBAAqB,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,qBAAqB,KAAK,QAAQ,EAAE,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const CAMPAIGN_STORYBOARD_SCHEMA_VERSION = 'campaign-storyboard/v1';
2
+ export const CAMPAIGN_STORYBOARD_METADATA_PREFIX = 'SOGNI_CAMPAIGN_STORYBOARD_JSON:';
3
+ export const SEEDANCE_STORYBOARD_REFERENCE_PROMPT = 'Create a full-screen cinematic video from the storyboard in @Image1. Treat @Image1 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.';
4
+ //# sourceMappingURL=storyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storyboard.js","sourceRoot":"","sources":["../../src/contracts/storyboard.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,kCAAkC,GAAG,wBAAiC,CAAC;AACpF,MAAM,CAAC,MAAM,mCAAmC,GAAG,iCAAiC,CAAC;AAyIrF,MAAM,CAAC,MAAM,oCAAoC,GAC/C,iyDAAiyD,CAAC"}
@@ -0,0 +1,33 @@
1
+ const VALID_KINDS = new Set([
2
+ 'turn_classified',
3
+ 'gating_policy_applied',
4
+ 'prompt_contract_emitted',
5
+ 'tool_dispatch_resolved',
6
+ 'repair_recipe_fired',
7
+ ]);
8
+ export function isContractsTelemetryEvent(value) {
9
+ if (value === null || typeof value !== 'object')
10
+ return false;
11
+ const v = value;
12
+ if (typeof v.kind !== 'string' || !VALID_KINDS.has(v.kind))
13
+ return false;
14
+ if (typeof v.timestamp !== 'number')
15
+ return false;
16
+ if (v.payload === null || typeof v.payload !== 'object')
17
+ return false;
18
+ return true;
19
+ }
20
+ export function makeBufferedSink(capacity = 256) {
21
+ const buf = [];
22
+ return {
23
+ emit(event) {
24
+ buf.push(event);
25
+ if (buf.length > capacity)
26
+ buf.splice(0, buf.length - capacity);
27
+ },
28
+ events() {
29
+ return [...buf];
30
+ },
31
+ };
32
+ }
33
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/contracts/telemetry.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,iBAAiB;IACjB,uBAAuB;IACvB,yBAAyB;IACzB,wBAAwB;IACxB,qBAAqB;CACtB,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,MAAM,UAAU,gBAAgB,CAAC,QAAQ,GAAG,GAAG;IAG7C,MAAM,GAAG,GAA8B,EAAE,CAAC;IAC1C,OAAO;QACL,IAAI,CAAC,KAAK;YACR,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,GAAG,CAAC,MAAM,GAAG,QAAQ;gBAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM;YACJ,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,60 @@
1
+ function isStringArray(value) {
2
+ return Array.isArray(value) && value.every((v) => typeof v === 'string');
3
+ }
4
+ function isSignalSource(value) {
5
+ return value === 'planner'
6
+ || value === 'regex'
7
+ || value === 'classifier'
8
+ || value === 'session_state';
9
+ }
10
+ function isSourceConstraintMap(value) {
11
+ if (value === undefined)
12
+ return true;
13
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
14
+ return false;
15
+ return Object.values(value).every((constraint) => isSignalSource(constraint)
16
+ || (Array.isArray(constraint) && constraint.length > 0 && constraint.every(isSignalSource)));
17
+ }
18
+ function isTrigger(value) {
19
+ if (value === null || typeof value !== 'object')
20
+ return false;
21
+ const t = value;
22
+ if (!isStringArray(t.allOf))
23
+ return false;
24
+ if (t.noneOf !== undefined && !isStringArray(t.noneOf))
25
+ return false;
26
+ const hasAllOf = t.allOf.length > 0;
27
+ const hasNoneOf = Array.isArray(t.noneOf) && t.noneOf.length > 0;
28
+ if (!hasAllOf && !hasNoneOf)
29
+ return false;
30
+ if (!isSourceConstraintMap(t.sources))
31
+ return false;
32
+ return true;
33
+ }
34
+ function isEffect(value) {
35
+ if (value === null || typeof value !== 'object')
36
+ return false;
37
+ const e = value;
38
+ if (!isStringArray(e.forbid))
39
+ return false;
40
+ if (e.require !== undefined && !isStringArray(e.require))
41
+ return false;
42
+ return true;
43
+ }
44
+ export function isToolGatingPolicy(value) {
45
+ if (value === null || typeof value !== 'object')
46
+ return false;
47
+ const v = value;
48
+ if (typeof v.policyId !== 'string' || v.policyId.length === 0)
49
+ return false;
50
+ if (typeof v.version !== 'string' || v.version.length === 0)
51
+ return false;
52
+ if (!isTrigger(v.trigger))
53
+ return false;
54
+ if (!isEffect(v.effect))
55
+ return false;
56
+ if (typeof v.rationale !== 'string')
57
+ return false;
58
+ return true;
59
+ }
60
+ //# sourceMappingURL=toolGatingPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolGatingPolicy.js","sourceRoot":"","sources":["../../src/contracts/toolGatingPolicy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { LITERAL_PROMPT_OVERRIDE } from './promptOverrideMarker.js';
2
+ export const LITERAL_VIDEO_PROMPT_OVERRIDE = `${LITERAL_PROMPT_OVERRIDE} Set skipPromptProcessing=true; for Seedance also set expandPrompt=false.`;
3
+ export const SEEDANCE_EXPAND_PROMPT_DESCRIPTION = 'Seedance only. Whether to run the shared Seedance prompt shaper before dispatch. Defaults to true; set false only when the user explicitly asks to submit the compact prompt directly or not modify the prompt.';
4
+ export const GENERATE_VIDEO_SKIP_PROMPT_PROCESSING_DESCRIPTION = 'Bypass automatic prompt shaping/refinement and voice-identity prompt formatting so the prompt text is sent unchanged to the video model. Set true ONLY when the user explicitly says not to modify/rewrite/enhance/expand/change/improve the prompt, or to use/send it exactly, verbatim, or as-is, AND the provided prompt already satisfies the tool requirements. Continue to set non-prompt parameters such as model, duration, count, aspect ratio, and seed. For Seedance literal prompt requests, also set expandPrompt=false. Do not set for ordinary underspecified requests.';
5
+ export const ANIMATE_PHOTO_SKIP_PROMPT_PROCESSING_DESCRIPTION = 'Bypass automatic prompt shaping/refinement, image-description anchoring, transition-prompt rewriting, and voice-identity prompt formatting so the prompt text is sent unchanged to the video model. Set true ONLY when the user explicitly says not to modify/rewrite/enhance/expand/change/improve the prompt, or to use/send it exactly, verbatim, or as-is, AND the provided prompt already satisfies the tool requirements. Continue to set non-prompt parameters such as source indices, frameRole, model, duration, count, and aspect ratio. For Seedance literal prompt requests, also set expandPrompt=false. Do not set for ordinary underspecified requests.';
6
+ export const LITERAL_SEEDANCE_PROMPT_OVERRIDE = `${LITERAL_PROMPT_OVERRIDE} For Seedance, set expandPrompt=false.`;
7
+ export const SEEDANCE_TOOL_MULTIMODAL_REFERENCE_GUIDANCE = `Seedance supports multimodal loose reference assets: images (up to 9), videos (up to 3), and audios (up to 3), with no more than 12 asset files total. Use @Image1/@Video1/@Audio1 style references in creative briefs when assigning roles. Assign every useful reference asset a role and prefer positive preservation constraints. If an uploaded video is the source clip to transform, upscale, enhance, restyle, or remaster, use video_to_video with controlMode="seedance-v2v" instead of generate_video referenceVideoIndices.`;
8
+ export const SEEDANCE_TOOL_V2V_REFERENCE_GUIDANCE = `Seedance V2V reads @Video1 holistically. Use it for restyling, motion transfer, extension, subject replacement, or scene transformation, and assign @Video1 a clear role such as source clip, camera movement, action timing, edit rhythm, or continuation anchor.`;
9
+ export const SEEDANCE_TOOL_AUDIO_REFERENCE_GUIDANCE = `For Seedance audio-reference prompts, preserve exact spoken dialogue when the user supplied it, and assign @Image1/@Audio1 roles. If the user asks for speech without words, describe the vocal performance without inventing quoted dialogue. Treat lip-sync, voice cloning, and real-human reference behavior as provider-sensitive rather than guaranteed.`;
10
+ //# sourceMappingURL=toolPromptMarkers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolPromptMarkers.js","sourceRoot":"","sources":["../../src/contracts/toolPromptMarkers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,CAAC,MAAM,6BAA6B,GACxC,GAAG,uBAAuB,2EAA2E,CAAC;AAExG,MAAM,CAAC,MAAM,kCAAkC,GAC7C,iNAAiN,CAAC;AAEpN,MAAM,CAAC,MAAM,iDAAiD,GAC5D,wjBAAwjB,CAAC;AAE3jB,MAAM,CAAC,MAAM,gDAAgD,GAC3D,woBAAwoB,CAAC;AAE3oB,MAAM,CAAC,MAAM,gCAAgC,GAC3C,GAAG,uBAAuB,wCAAwC,CAAC;AAErE,MAAM,CAAC,MAAM,2CAA2C,GAAG,ygBAAygB,CAAC;AAErkB,MAAM,CAAC,MAAM,oCAAoC,GAAG,oQAAoQ,CAAC;AAEzT,MAAM,CAAC,MAAM,sCAAsC,GAAG,+VAA+V,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { classifyTurn, compileToolsForTurn, } from './evaluators.js';
2
+ export const DEFAULT_CONTRACT_CONTEXT_PREFIX = 'Sogni Creative Agent tool policy for this turn:';
3
+ export function normalizeContractMessages(messages) {
4
+ return messages.map((message) => ({
5
+ role: message.role,
6
+ content: contractMessageContentToText(message.content),
7
+ }));
8
+ }
9
+ export function buildContractTurnPolicy(input) {
10
+ return classifyTurn({
11
+ messages: normalizeContractMessages(input.messages ?? []),
12
+ assetManifest: input.assetManifest ?? { items: [] },
13
+ sessionState: {
14
+ hasGeneratedVideo: false,
15
+ hasUploadedVideo: false,
16
+ repairCount: 0,
17
+ ...input.sessionState,
18
+ },
19
+ availableTools: input.availableTools,
20
+ registry: input.registry,
21
+ signals: input.signals ?? [],
22
+ telemetry: input.telemetry,
23
+ });
24
+ }
25
+ export function compileContractToolSurface(input) {
26
+ const definitions = input.tools.map(normalizeContractToolDefinition);
27
+ const availableTools = definitions.map((tool) => tool.function.name);
28
+ const turnPolicy = input.turnPolicy
29
+ ? turnPolicyWithDefaultVisibleTools(input.turnPolicy, availableTools)
30
+ : buildContractTurnPolicy({
31
+ availableTools,
32
+ registry: input.registry,
33
+ messages: input.messages,
34
+ assetManifest: input.assetManifest,
35
+ sessionState: input.sessionState,
36
+ signals: input.signals,
37
+ telemetry: input.telemetry,
38
+ });
39
+ const compiled = compileToolsForTurn({
40
+ turnPolicy,
41
+ registry: input.registry,
42
+ availableToolDefinitions: definitions,
43
+ telemetry: input.telemetry,
44
+ });
45
+ return {
46
+ ...compiled,
47
+ turnPolicy,
48
+ };
49
+ }
50
+ export function formatContractsContextBlock(contextBlock, prefix = DEFAULT_CONTRACT_CONTEXT_PREFIX) {
51
+ const trimmed = contextBlock.trim();
52
+ if (!trimmed)
53
+ return '';
54
+ return `${prefix}\n${trimmed}`;
55
+ }
56
+ export function appendContractsContextToSystemContent(systemContent, contextBlock) {
57
+ const formatted = formatContractsContextBlock(contextBlock);
58
+ return formatted ? `${systemContent}\n\n${formatted}` : systemContent;
59
+ }
60
+ export function reconcileToolChoiceForCompiledTools(toolChoice, tools) {
61
+ if (!toolChoice)
62
+ return toolChoice;
63
+ if (tools.length === 0)
64
+ return undefined;
65
+ if (typeof toolChoice !== 'object' || toolChoice.type !== 'function')
66
+ return toolChoice;
67
+ const forcedToolName = toolChoice.function.name;
68
+ const isStillVisible = tools.some((tool) => tool.function.name === forcedToolName);
69
+ return isStillVisible ? toolChoice : 'auto';
70
+ }
71
+ function contractMessageContentToText(content) {
72
+ if (typeof content === 'string')
73
+ return content;
74
+ if (!Array.isArray(content))
75
+ return '';
76
+ return content
77
+ .map((part) => {
78
+ if (part && typeof part === 'object' && 'text' in part) {
79
+ const text = part.text;
80
+ return typeof text === 'string' ? text : '';
81
+ }
82
+ return '';
83
+ })
84
+ .filter(Boolean)
85
+ .join(' ');
86
+ }
87
+ function normalizeContractToolDefinition(tool) {
88
+ return {
89
+ type: 'function',
90
+ function: {
91
+ name: tool.function.name,
92
+ description: tool.function.description ?? '',
93
+ parameters: tool.function.parameters ?? { type: 'object', properties: {} },
94
+ },
95
+ };
96
+ }
97
+ function turnPolicyWithDefaultVisibleTools(turnPolicy, availableTools) {
98
+ if (turnPolicy.visibleTools.length > 0
99
+ || turnPolicy.forbiddenTools.length > 0
100
+ || turnPolicy.requiredTools.length > 0
101
+ || turnPolicy.appliedPolicies.length > 0
102
+ || turnPolicy.rationale) {
103
+ return turnPolicy;
104
+ }
105
+ return {
106
+ ...turnPolicy,
107
+ visibleTools: [...availableTools],
108
+ };
109
+ }
110
+ //# sourceMappingURL=toolSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolSurface.js","sourceRoot":"","sources":["../../src/contracts/toolSurface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export function emptyTurnPolicy() {
2
+ return {
3
+ signals: [],
4
+ visibleTools: [],
5
+ forbiddenTools: [],
6
+ forbiddenToolPolicies: {},
7
+ requiredTools: [],
8
+ contextHints: [],
9
+ appliedPolicies: [],
10
+ rationale: '',
11
+ };
12
+ }
13
+ //# sourceMappingURL=turnPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turnPolicy.js","sourceRoot":"","sources":["../../src/contracts/turnPolicy.ts"],"names":[],"mappings":"AA6CA,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;QAClB,qBAAqB,EAAE,EAAE;QACzB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;QACnB,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,216 @@
1
+ import { stripThinkBlocks } from '../tools/shared/llmHelpers.js';
2
+ import { getRandomTheme } from './randomThemes.js';
3
+ export const SCRIPT_MAX_TOKENS = 2048;
4
+ const LTX_I2V_GUIDANCE = `\n\nIMPORTANT: One or more reference frame images are attached to this message. They define the subject, costume, environment, lighting, and composition. Do NOT re-describe appearance in detail — the model sees the image. Focus the prose on motion, camera move, ambient motion, sound, and how the scene evolves over the target duration. If both a starting and an ending frame are attached, the action must believably progress from the first into the second.`;
5
+ const LTX_SYSTEM_PROMPT = `You are an expert cinematographer writing prompts for LTX-2, an AI video generation model. Expand the user's idea into a single dense paragraph of 4-8 present-tense sentences (~200 words). One continuous shot — no cuts, no montage. Return your result via the compose_script tool.
6
+
7
+ PROMPT CONSTRUCTION — include these elements in flowing prose:
8
+ 1. SHOT & STYLE: Shot scale + visual genre. "A medium close-up noir-lit shot..." Front-load this.
9
+ 2. SCENE: Environment, time of day, atmosphere, surface textures. Name light sources explicitly: "warm tungsten practicals," "golden hour backlight through dusty blinds."
10
+ 3. SUBJECT: Age (always a specific number), build, hair, clothing, distinguishing features. Be explicit and specific — use the same words the user used. Match detail to shot scale — close-ups need physical precision, wide shots need environmental richness.
11
+ 4. ACTION: One main thread of physically filmable movement evolving start to end. Use temporal connectors ("as," "then," "while"). Express emotion through visible behavior — jaw tension, grip pressure, breathing pace, posture shifts — never emotional labels.
12
+ 5. CAMERA: ONE movement only — dolly in, slow pan, tracking follow, handheld drift, etc. Stacking multiple movements causes jitter. Describe as prose: "the camera performs a slow push-in."
13
+ 6. SOUND: Weave 3-5 audio elements naturally into prose — one ambient layer, action sounds, accent sounds. Never use [AMBIENT:] or [SOUND:] tags. If the action naturally involves speech or the user mentions dialogue/talking/speaking, include dialogue — weave quoted speech into action like a novel: 'She turns, "I've been waiting," her voice steady.' Describe vocal quality (whispers, warm tone, gravelly).
14
+ 7. TECHNICAL: End with a stability anchor and lens cue: "Shot on 35mm at f/1.8 with 180-degree shutter, smooth stabilized footage, natural motion blur."
15
+
16
+ CONSTRAINTS: Present tense only. Positive phrasing — describe what IS, never what isn't. No on-screen text/logos. Dense prose, never bullet lists. No vague words ("beautiful," "nice") — be visually specific.
17
+
18
+ REFERENCE PROMPT (match this style):
19
+ "A medium close-up cinematic shot in a quiet rain-soaked alley at night, neon reflections shimmering across wet pavement. A man in his 30s with short dark hair and a worn leather jacket stands under a flickering sign, water beading on his collar. He exhales slowly, shoulders tightening as his fingers clamp around a small metal lighter, then steadies his hand and clicks it once, watching the flame struggle against the damp air, rain tapping softly against the awning while a distant car horn echoes. The camera performs a slow push-in toward his face as his jaw sets, tendons rising, weight shifting forward by half a step, breathing measured. Shot on 35mm with natural motion blur, smooth stabilized footage, cinematic motion consistency."`;
20
+ const WAN_T2V_SYSTEM_PROMPT = `You are an expert cinematographer writing prompts for Wan 2.2, an AI video generation model by Alibaba. Expand the user's idea into a single dense paragraph of flowing present-tense prose (80-120 words). One continuous shot — no cuts, no montage. Return your result via the compose_script tool.
21
+
22
+ PROMPT CONSTRUCTION — weave these elements into flowing prose:
23
+ 1. SUBJECT: Main focus with rich appearance details — age, build, clothing, distinguishing features. Be explicit and physically specific. Match detail to shot scale.
24
+ 2. SCENE: Environment, time of day, atmosphere, surface textures. Name light sources explicitly: "golden hour backlight," "warm tungsten practicals," "neon rim light," "soft overcast diffusion." Use professional lighting terms — volumetric, rim light, backlit, side light.
25
+ 3. MOTION: One primary thread of physically filmable movement evolving start to end. Use temporal connectors ("as," "then," "while"). Express emotion through visible behavior — posture, gesture, breathing — never emotional labels. Limit to 5-7 well-chosen motion descriptors. Control pacing with words like "slowly," "gently," "briskly."
26
+ 4. CAMERA: ONE movement only — dolly in, slow pan, tracking shot, orbital arc, crane up, handheld drift, push-in, pull-back. Stacking multiple movements causes jitter. Specify shot type: close-up, medium, wide, extreme wide.
27
+ 5. STYLE: End with a color/lens anchor: film stock reference (Kodak Portra, 35mm grain), color grading (teal-and-orange, warm tones, desaturated), depth of field (shallow, anamorphic bokeh), and a stability note.
28
+
29
+ CONSTRAINTS:
30
+ - Present tense only. Positive phrasing — describe what IS, never what isn't.
31
+ - No on-screen text, logos, or watermarks.
32
+ - Dense prose, never bullet lists. No vague words ("beautiful," "nice") — be visually specific.
33
+ - Avoid contradictory instructions (conflicting motion directions or styles).
34
+ - Limit style combinations to 2-3 compatible aesthetics.
35
+ - One primary subject with one main motion — avoid complex multi-subject choreography.
36
+
37
+ REFERENCE PROMPT (match this style and density):
38
+ "A young woman in a flowing ivory dress walks slowly through a field of tall golden wheat at sunset, her fingers trailing across the grain tips as warm backlight catches wisps of hair around her face. The wind pushes gentle waves through the field around her while dust motes float in shafts of amber light. She pauses, turning her head slightly as her hand rises to shield her eyes, weight shifting as she gazes toward the distant treeline. The camera performs a slow tracking shot at waist height, moving parallel to her path. Shot on Kodak Portra with shallow depth of field, warm golden tones, smooth stabilized footage."`;
39
+ const WAN_I2V_SYSTEM_PROMPT = `You are an expert cinematographer writing prompts for Wan 2.2 image-to-video generation. The user has attached the actual reference frame(s) — a starting frame, and optionally an ending frame. Your job is to write a video prompt that brings this image to life with motion. Return your result via the compose_script tool.
40
+
41
+ CRITICAL: The image already defines the subject and scene. Do NOT re-describe appearance, clothing, or environment in detail — the model sees the image. Focus entirely on MOTION, CAMERA, and TEMPORAL PROGRESSION. If an ending frame is also provided, plan the motion so the scene naturally evolves from the start frame to the end frame.
42
+
43
+ PROMPT CONSTRUCTION — weave these elements into flowing prose (60-100 words):
44
+ 1. MOTION: The primary action thread — what moves, how, at what pace. Use temporal connectors ("as," "then," "while"). Describe physically filmable movement. Limit to 5-7 well-chosen motion descriptors. Control pacing: "slowly," "gently," "briskly."
45
+ 2. CAMERA: ONE movement only — dolly in, slow pan, tracking shot, orbital arc, crane up, handheld drift, push-in, pull-back.
46
+ 3. AMBIENT MOTION: Secondary environmental movement — wind, light shifts, particles, reflections. Keep subtle.
47
+ 4. STYLE: Brief color/lens anchor if needed.
48
+
49
+ CONSTRAINTS:
50
+ - Present tense only. Positive phrasing — describe what IS, never what isn't.
51
+ - Do NOT describe the subject's appearance — the image defines that.
52
+ - One continuous shot — no cuts, no montage.
53
+ - Dense prose, never bullet lists.
54
+
55
+ REFERENCE PROMPT (for an image of a woman in a wheat field):
56
+ "She walks slowly forward, fingers trailing across the grain tips as warm backlight catches wisps of hair. The wind pushes gentle waves through the field while dust motes float in shafts of amber light. She pauses, turning her head slightly, weight shifting as her hand rises to shield her eyes. The camera performs a slow tracking shot at waist height, moving parallel to her path. Smooth stabilized footage with shallow depth of field."`;
57
+ export const CHARACTER_REFERENCE_VIDEO_COMPOSITION_SYSTEM_PROMPT = [
58
+ 'You are Sogni compose_script, a creative writing tool for polished video prompts.',
59
+ 'Return exactly one compose_script tool call. The script should be concrete, surprising, production-ready, and compact enough to become a downstream video prompt.',
60
+ 'Respect all explicit user constraints. If no exact dialogue is supplied, describe voice quality or performance without inventing quoted dialogue.',
61
+ ].join('\n');
62
+ export const SCRIPT_COMPOSITION_TOOL = {
63
+ type: 'function',
64
+ function: {
65
+ name: 'compose_script',
66
+ description: 'Output the composed video generation prompt',
67
+ parameters: {
68
+ type: 'object',
69
+ properties: {
70
+ script: {
71
+ type: 'string',
72
+ description: 'The full cinematic video prompt as dense flowing prose. The scene ends when the script ends.',
73
+ },
74
+ },
75
+ required: ['script'],
76
+ },
77
+ },
78
+ };
79
+ function imageContentPart(dataUrl) {
80
+ return { type: 'image_url', image_url: { url: dataUrl, detail: 'auto' } };
81
+ }
82
+ export function buildLtxScriptMessages(prompt, duration, options = {}) {
83
+ const { firstFrameDataUrl, lastFrameDataUrl } = options;
84
+ const hasVisionImage = !!firstFrameDataUrl || !!lastFrameDataUrl;
85
+ const systemContent = hasVisionImage ? LTX_SYSTEM_PROMPT + LTX_I2V_GUIDANCE : LTX_SYSTEM_PROMPT;
86
+ const messages = [{ role: 'system', content: systemContent }];
87
+ let userText;
88
+ if (hasVisionImage) {
89
+ if (firstFrameDataUrl && lastFrameDataUrl) {
90
+ userText =
91
+ 'Two reference frames are attached: the first image is the STARTING frame, the second is the ENDING frame.';
92
+ }
93
+ else if (lastFrameDataUrl) {
94
+ userText = 'The attached image is the ENDING frame of the video.';
95
+ }
96
+ else {
97
+ userText = 'The attached image is the STARTING frame of the video.';
98
+ }
99
+ if (prompt.trim()) {
100
+ userText += `\n\nAdditional direction: ${prompt}`;
101
+ }
102
+ }
103
+ else if (prompt.trim()) {
104
+ userText = prompt;
105
+ }
106
+ else {
107
+ const theme = options.randomTheme || getRandomTheme();
108
+ userText = `Come up with a unique, original video scene inspired by: ${theme}. Be creative and surprising — avoid clichés.`;
109
+ }
110
+ userText += `\n\nTarget video duration: ${duration} seconds.`;
111
+ if (hasVisionImage) {
112
+ const content = [];
113
+ if (firstFrameDataUrl) {
114
+ content.push(imageContentPart(firstFrameDataUrl));
115
+ }
116
+ if (lastFrameDataUrl) {
117
+ content.push(imageContentPart(lastFrameDataUrl));
118
+ }
119
+ content.push({ type: 'text', text: userText });
120
+ messages.push({ role: 'user', content });
121
+ }
122
+ else {
123
+ messages.push({ role: 'user', content: userText });
124
+ }
125
+ return messages;
126
+ }
127
+ export function buildWanScriptMessages(params) {
128
+ const { prompt, firstFrameDescription, firstFrameDataUrl, lastFrameDataUrl, duration } = params;
129
+ const hasVisionImage = !!firstFrameDataUrl || !!lastFrameDataUrl;
130
+ const isI2V = hasVisionImage || !!firstFrameDescription;
131
+ const systemPrompt = isI2V ? WAN_I2V_SYSTEM_PROMPT : WAN_T2V_SYSTEM_PROMPT;
132
+ const messages = [{ role: 'system', content: systemPrompt }];
133
+ let userText;
134
+ if (hasVisionImage) {
135
+ if (firstFrameDataUrl && lastFrameDataUrl) {
136
+ userText =
137
+ 'The two attached images are the starting frame and the ending frame of the video. Plan a single continuous shot that evolves from the first into the second.';
138
+ }
139
+ else if (lastFrameDataUrl) {
140
+ userText =
141
+ 'The attached image is the ENDING frame of the video. Plan motion that naturally arrives at this composition.';
142
+ }
143
+ else {
144
+ userText = 'The attached image is the starting frame of the video.';
145
+ }
146
+ if (prompt?.trim()) {
147
+ userText += `\n\nAdditional direction: ${prompt}`;
148
+ }
149
+ }
150
+ else if (isI2V) {
151
+ userText = `The first frame is an image described as: "${firstFrameDescription}"`;
152
+ if (prompt?.trim()) {
153
+ userText += `\n\nAdditional direction: ${prompt}`;
154
+ }
155
+ }
156
+ else if (prompt?.trim()) {
157
+ userText = prompt;
158
+ }
159
+ else {
160
+ const theme = params.randomTheme || getRandomTheme();
161
+ userText = `Come up with a unique, original video scene inspired by: ${theme}. Be creative and surprising — avoid clichés.`;
162
+ }
163
+ if (duration) {
164
+ userText += `\n\nTarget video duration: ${duration} seconds.`;
165
+ }
166
+ if (hasVisionImage) {
167
+ const content = [];
168
+ if (firstFrameDataUrl) {
169
+ content.push(imageContentPart(firstFrameDataUrl));
170
+ }
171
+ if (lastFrameDataUrl) {
172
+ content.push(imageContentPart(lastFrameDataUrl));
173
+ }
174
+ content.push({ type: 'text', text: userText });
175
+ messages.push({ role: 'user', content });
176
+ }
177
+ else {
178
+ messages.push({ role: 'user', content: userText });
179
+ }
180
+ return messages;
181
+ }
182
+ export function parseToolCallScript(args) {
183
+ return String(args.script || '').trim();
184
+ }
185
+ export function buildCharacterReferenceVideoCompositionMessages(input) {
186
+ const content = [];
187
+ if (input.imageDataUrl) {
188
+ content.push(imageContentPart(input.imageDataUrl));
189
+ }
190
+ content.push({ type: 'text', text: input.brief });
191
+ return [
192
+ { role: 'system', content: CHARACTER_REFERENCE_VIDEO_COMPOSITION_SYSTEM_PROMPT },
193
+ { role: 'user', content },
194
+ ];
195
+ }
196
+ export function parseCompositionToolScriptFromResult(result) {
197
+ const toolCalls = result?.tool_calls ?? [];
198
+ for (const call of toolCalls) {
199
+ if (call.function?.name !== 'compose_script')
200
+ continue;
201
+ try {
202
+ const parsed = JSON.parse(call.function.arguments || '{}');
203
+ const script = parseToolCallScript(parsed);
204
+ if (script)
205
+ return script;
206
+ }
207
+ catch {
208
+ continue;
209
+ }
210
+ }
211
+ const content = typeof result?.content === 'string'
212
+ ? stripThinkBlocks(result.content, false, false).cleaned.trim()
213
+ : '';
214
+ return content;
215
+ }
216
+ //# sourceMappingURL=videoComposition.js.map