ugcinc 4.1.45 → 4.1.48
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.
|
@@ -25,7 +25,7 @@ declare const definition: import("./types").NodeDefinition<"generator", {
|
|
|
25
25
|
maxWidth: number | undefined;
|
|
26
26
|
wordsPerSubtitle: number | undefined;
|
|
27
27
|
enableAnimation: boolean | undefined;
|
|
28
|
-
language: string
|
|
28
|
+
language: string;
|
|
29
29
|
outputMode: OutputMode;
|
|
30
30
|
selectionMode: null;
|
|
31
31
|
}, AutoCaptionNodeInputs, AutoCaptionNodeOutputs, false>;
|
|
@@ -28,7 +28,7 @@ export declare const nodeDefinitions: {
|
|
|
28
28
|
maxWidth: number | undefined;
|
|
29
29
|
wordsPerSubtitle: number | undefined;
|
|
30
30
|
enableAnimation: boolean | undefined;
|
|
31
|
-
language: string
|
|
31
|
+
language: string;
|
|
32
32
|
outputMode: import("./types").OutputMode;
|
|
33
33
|
selectionMode: null;
|
|
34
34
|
}, import("./auto-caption").AutoCaptionNodeInputs, import("./auto-caption").AutoCaptionNodeOutputs, false> & {
|
package/dist/render.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ApiResponse } from './types';
|
|
2
2
|
import type { VideoEditorNodeConfig, DeduplicationInput } from './render/types';
|
|
3
3
|
import type { ImageEditorNodeConfig } from './automations/nodes/image-composer';
|
|
4
|
+
import type { CreateDmMessage } from './automations/nodes/create-dm';
|
|
4
5
|
export interface RenderJobResponse {
|
|
5
6
|
job_id: string;
|
|
6
7
|
status: string;
|
|
@@ -60,12 +61,13 @@ export interface SubmitScreenshotAnimationRenderJobParams {
|
|
|
60
61
|
/** Duration to hold at end after animation completes (ms) - default 500 */
|
|
61
62
|
holdDurationMs?: number;
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
interface IgDmMessageInternal {
|
|
64
65
|
text: string;
|
|
65
66
|
sender: 'user' | 'recipient';
|
|
66
67
|
isStoryReply?: boolean;
|
|
67
68
|
groupWithPrevious?: boolean;
|
|
68
69
|
}
|
|
70
|
+
export type IgDmMessage = IgDmMessageInternal;
|
|
69
71
|
export interface SubmitInstagramDmRenderJobParams {
|
|
70
72
|
/** Receiver's username (shown in header) */
|
|
71
73
|
receiverUsername: string;
|
|
@@ -74,17 +76,18 @@ export interface SubmitInstagramDmRenderJobParams {
|
|
|
74
76
|
/** Theme - light or dark mode */
|
|
75
77
|
theme: 'light' | 'dark';
|
|
76
78
|
/** Messages in the conversation */
|
|
77
|
-
messages:
|
|
78
|
-
/**
|
|
79
|
-
|
|
79
|
+
messages: CreateDmMessage[];
|
|
80
|
+
/** Image attachment URL (used for story reply) */
|
|
81
|
+
imageAttachmentUrl?: string;
|
|
80
82
|
}
|
|
81
|
-
|
|
83
|
+
interface ImDmMessageInternal {
|
|
82
84
|
id: string;
|
|
83
85
|
sender: 'user' | 'recipient';
|
|
84
86
|
text: string;
|
|
85
87
|
imageUrl?: string;
|
|
86
88
|
groupWithPrevious?: boolean;
|
|
87
89
|
}
|
|
90
|
+
export type ImDmMessage = ImDmMessageInternal;
|
|
88
91
|
export interface SubmitIMessageDmRenderJobParams {
|
|
89
92
|
/** Username displayed in header */
|
|
90
93
|
username: string;
|
|
@@ -95,7 +98,9 @@ export interface SubmitIMessageDmRenderJobParams {
|
|
|
95
98
|
/** Status bar time */
|
|
96
99
|
time: string;
|
|
97
100
|
/** Messages in the conversation */
|
|
98
|
-
messages:
|
|
101
|
+
messages: CreateDmMessage[];
|
|
102
|
+
/** Image attachment URL (used for sender images with hasImage flag) */
|
|
103
|
+
imageAttachmentUrl?: string;
|
|
99
104
|
/** Sender bubble color (default blue) */
|
|
100
105
|
senderBubbleColor?: string;
|
|
101
106
|
/** Whether to show read receipt */
|
|
@@ -146,3 +151,4 @@ export declare class RenderClient {
|
|
|
146
151
|
*/
|
|
147
152
|
submitIMessageDmRenderJob(params: SubmitIMessageDmRenderJobParams): Promise<ApiResponse<RenderJobResponse>>;
|
|
148
153
|
}
|
|
154
|
+
export {};
|
package/dist/render.js
CHANGED
|
@@ -4,6 +4,56 @@ exports.RenderClient = void 0;
|
|
|
4
4
|
// Modal renderer endpoints
|
|
5
5
|
const RENDER_SUBMIT_URL = "https://aidangollan--ugcinc-render-renderer-submit-job.modal.run";
|
|
6
6
|
const RENDER_STATUS_URL = "https://aidangollan--ugcinc-render-renderer-get-status.modal.run";
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// DM Message Transformation Helpers
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Auto-detect groupWithPrevious for messages based on consecutive same-sender
|
|
12
|
+
*/
|
|
13
|
+
function addGroupWithPrevious(messages) {
|
|
14
|
+
return messages.map((msg, index) => {
|
|
15
|
+
if (index === 0) {
|
|
16
|
+
return { ...msg, groupWithPrevious: false };
|
|
17
|
+
}
|
|
18
|
+
const prevMsg = messages[index - 1];
|
|
19
|
+
const shouldGroup = prevMsg !== undefined && msg.sender === prevMsg.sender;
|
|
20
|
+
return { ...msg, groupWithPrevious: shouldGroup };
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Generate unique message IDs for iMessage messages
|
|
25
|
+
*/
|
|
26
|
+
function generateMessageId(index) {
|
|
27
|
+
return `msg-${index}-${Date.now()}`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Transform CreateDmMessage[] to IgDmMessageInternal[] for Instagram DM
|
|
31
|
+
*/
|
|
32
|
+
function transformToInstagramMessages(messages, imageAttachmentUrl) {
|
|
33
|
+
const processedMessages = addGroupWithPrevious(messages);
|
|
34
|
+
return processedMessages.map((msg) => ({
|
|
35
|
+
text: msg.text,
|
|
36
|
+
sender: msg.sender,
|
|
37
|
+
isStoryReply: msg.hasImage && imageAttachmentUrl ? true : false,
|
|
38
|
+
groupWithPrevious: msg.groupWithPrevious,
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Transform CreateDmMessage[] to ImDmMessageInternal[] for iMessage DM
|
|
43
|
+
*/
|
|
44
|
+
function transformToIMessageMessages(messages, imageAttachmentUrl) {
|
|
45
|
+
const processedMessages = addGroupWithPrevious(messages);
|
|
46
|
+
return processedMessages.map((msg, index) => ({
|
|
47
|
+
id: generateMessageId(index),
|
|
48
|
+
sender: msg.sender,
|
|
49
|
+
text: msg.text,
|
|
50
|
+
imageUrl: msg.hasImage && msg.sender === 'user' ? imageAttachmentUrl : undefined,
|
|
51
|
+
groupWithPrevious: msg.groupWithPrevious,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
// =============================================================================
|
|
55
|
+
// Render Client
|
|
56
|
+
// =============================================================================
|
|
7
57
|
/**
|
|
8
58
|
* Client for rendering operations
|
|
9
59
|
* Note: This calls Modal endpoints directly, not the UGC Inc API
|
|
@@ -311,6 +361,9 @@ class RenderClient {
|
|
|
311
361
|
*/
|
|
312
362
|
async submitInstagramDmRenderJob(params) {
|
|
313
363
|
try {
|
|
364
|
+
// Transform CreateDmMessage[] to internal format
|
|
365
|
+
const transformedMessages = transformToInstagramMessages(params.messages, params.imageAttachmentUrl);
|
|
366
|
+
const hasStoryReply = params.messages.some(msg => msg.hasImage);
|
|
314
367
|
const response = await fetch(RENDER_SUBMIT_URL, {
|
|
315
368
|
method: 'POST',
|
|
316
369
|
headers: {
|
|
@@ -323,8 +376,8 @@ class RenderClient {
|
|
|
323
376
|
receiverUsername: params.receiverUsername,
|
|
324
377
|
receiverProfilePicUrl: params.receiverProfilePicUrl,
|
|
325
378
|
theme: params.theme,
|
|
326
|
-
messages:
|
|
327
|
-
storyImageUrl: params.
|
|
379
|
+
messages: transformedMessages,
|
|
380
|
+
storyImageUrl: hasStoryReply ? params.imageAttachmentUrl : undefined,
|
|
328
381
|
},
|
|
329
382
|
},
|
|
330
383
|
output_type: 'image',
|
|
@@ -374,6 +427,8 @@ class RenderClient {
|
|
|
374
427
|
*/
|
|
375
428
|
async submitIMessageDmRenderJob(params) {
|
|
376
429
|
try {
|
|
430
|
+
// Transform CreateDmMessage[] to internal format
|
|
431
|
+
const transformedMessages = transformToIMessageMessages(params.messages, params.imageAttachmentUrl);
|
|
377
432
|
const response = await fetch(RENDER_SUBMIT_URL, {
|
|
378
433
|
method: 'POST',
|
|
379
434
|
headers: {
|
|
@@ -387,7 +442,7 @@ class RenderClient {
|
|
|
387
442
|
profilePicUrl: params.profilePicUrl,
|
|
388
443
|
theme: params.theme,
|
|
389
444
|
time: params.time,
|
|
390
|
-
messages:
|
|
445
|
+
messages: transformedMessages,
|
|
391
446
|
senderBubbleColor: params.senderBubbleColor,
|
|
392
447
|
showReadReceipt: params.showReadReceipt,
|
|
393
448
|
readReceiptText: params.readReceiptText,
|