@clipform/mcp-server 4.2.1 → 4.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-client.d.ts +0 -12
- package/dist/api-client.js +1 -1
- package/dist/{chunk-O4LOUBGW.js → chunk-E7C34M2J.js} +14 -2
- package/dist/chunk-E7C34M2J.js.map +1 -0
- package/dist/{chunk-RKMGVU57.js → chunk-MO3ABORB.js} +3 -3
- package/dist/{chunk-QG354AVT.js → chunk-UYJLVVM3.js} +6 -6
- package/dist/{chunk-QG354AVT.js.map → chunk-UYJLVVM3.js.map} +1 -1
- package/dist/{chunk-BKTCQ5HS.js → chunk-XFGQP52H.js} +93 -33
- package/dist/{chunk-BKTCQ5HS.js.map → chunk-XFGQP52H.js.map} +1 -1
- package/dist/{chunk-GZZGKW5A.js → chunk-ZRBMT7BF.js} +4 -2
- package/dist/{chunk-GZZGKW5A.js.map → chunk-ZRBMT7BF.js.map} +1 -1
- package/dist/index.js +5 -5
- package/dist/prompts.js +3 -3
- package/dist/resources.js +3 -3
- package/dist/server.js +5 -5
- package/package.json +3 -3
- package/server.json +2 -2
- package/dist/chunk-O4LOUBGW.js.map +0 -1
- /package/dist/{chunk-RKMGVU57.js.map → chunk-MO3ABORB.js.map} +0 -0
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
union,
|
|
30
30
|
unknown,
|
|
31
31
|
url
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-UYJLVVM3.js";
|
|
33
33
|
import {
|
|
34
34
|
GUIDE_TYPES,
|
|
35
35
|
QUIZ_VARIANTS,
|
|
@@ -38,13 +38,18 @@ import {
|
|
|
38
38
|
getGuideUri,
|
|
39
39
|
guideFallbackText,
|
|
40
40
|
registerResources
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-MO3ABORB.js";
|
|
42
42
|
import {
|
|
43
|
+
ANON_PREVIEW_LINK_LABEL,
|
|
43
44
|
ANON_PREVIEW_NOTICE,
|
|
45
|
+
ANON_PREVIEW_ONLY_NOTICE,
|
|
46
|
+
CLAIM_URL_DESCRIPTION,
|
|
44
47
|
FULL_CAPS,
|
|
48
|
+
PREVIEW_URL_DESCRIPTION,
|
|
45
49
|
anonPreviewNotice,
|
|
46
|
-
capsFromToolsets
|
|
47
|
-
|
|
50
|
+
capsFromToolsets,
|
|
51
|
+
isPreviewViewerUrl
|
|
52
|
+
} from "./chunk-E7C34M2J.js";
|
|
48
53
|
import {
|
|
49
54
|
ACTIVE_NODE_TYPES,
|
|
50
55
|
CONTACT_FIELDS,
|
|
@@ -66,7 +71,7 @@ import {
|
|
|
66
71
|
resolveFormType,
|
|
67
72
|
structuredResult,
|
|
68
73
|
textResult
|
|
69
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-ZRBMT7BF.js";
|
|
70
75
|
import {
|
|
71
76
|
getMcpAuth,
|
|
72
77
|
runWithMcpAuth,
|
|
@@ -16314,7 +16319,7 @@ function registerCreateFormTool(server) {
|
|
|
16314
16319
|
"clipform_create_form",
|
|
16315
16320
|
{
|
|
16316
16321
|
title: "Create Clipform",
|
|
16317
|
-
description: `Create a new Clipform (interactive video-style form). Returns a viewer URL and form ID. When connected via an authenticated MCP client (e.g. claude.ai), the form lands directly in the user's workspace. Anonymous sessions build into a temporary account of their own: forms stay drafts with a private preview link. Some results also include a one-time claim URL that signs the user into that account; relay it when present.
|
|
16322
|
+
description: `Create a new Clipform (interactive video-style form). Returns a viewer URL and form ID (an anonymous build's link is a private preview where answers are not saved). When connected via an authenticated MCP client (e.g. claude.ai), the form lands directly in the user's workspace. Anonymous sessions build into a temporary account of their own: forms stay drafts with a private preview link. Some results also include a one-time claim URL that signs the user into that account; relay it when present.
|
|
16318
16323
|
|
|
16319
16324
|
${ONBOARDING_OFFER_TOOL_CUE}
|
|
16320
16325
|
|
|
@@ -16344,12 +16349,20 @@ Example: A form that asks a question, collects contact info, then finishes:
|
|
|
16344
16349
|
}),
|
|
16345
16350
|
outputSchema: external_exports.object({
|
|
16346
16351
|
form_id: external_exports.string().describe("Form UUID - pass to follow-up tools"),
|
|
16347
|
-
// #
|
|
16348
|
-
//
|
|
16349
|
-
//
|
|
16350
|
-
//
|
|
16351
|
-
|
|
16352
|
-
|
|
16352
|
+
// #4845 expand/contract. The deployed ChatGPT schema is
|
|
16353
|
+
// additionalProperties:false, so emitting a field it does not declare
|
|
16354
|
+
// is invalid until the Rescan approves a schema that declares it.
|
|
16355
|
+
// Order: (a) deploy the schema declaring preview_url / claim_url /
|
|
16356
|
+
// is_preview as optional, emitting NOTHING new (this step);
|
|
16357
|
+
// (b) Rescan; (c) once approved, emit them; (d) a later Rescan-approved
|
|
16358
|
+
// CONTRACT step drops the anonymous viewer_url / dashboard_url
|
|
16359
|
+
// duplicates. See SUBMISSION.md. Until (c), structuredContent stays
|
|
16360
|
+
// key-for-key what origin/main emitted (approved-schema.test.ts).
|
|
16361
|
+
viewer_url: external_exports.string().describe("Form URL for respondents - the live public URL. For an anonymous build this is a private preview link: answers are not saved, do not share it with respondents."),
|
|
16362
|
+
dashboard_url: external_exports.string().optional().describe("Builder URL (sign in to edit). For an anonymous build this is a one-time claim link, not an editor."),
|
|
16363
|
+
is_preview: external_exports.boolean().optional().describe("True when this is an anonymous preview build (answers are not saved), false otherwise."),
|
|
16364
|
+
preview_url: external_exports.string().optional().describe(`Anonymous builds only. ${PREVIEW_URL_DESCRIPTION}`),
|
|
16365
|
+
claim_url: external_exports.string().optional().describe(`Anonymous builds only. ${CLAIM_URL_DESCRIPTION}`),
|
|
16353
16366
|
nodes: external_exports.array(external_exports.object({ id: external_exports.string(), type: external_exports.string(), prompt: external_exports.string() })).describe("Created nodes in order - IDs for attach_node_media / update_node"),
|
|
16354
16367
|
plan: external_exports.object({ name: external_exports.string(), auth_mode: external_exports.string() }).optional().describe("Plan and auth context for this session"),
|
|
16355
16368
|
workspace_name: external_exports.string().optional().describe("Name of the workspace the form was created in")
|
|
@@ -16442,7 +16455,7 @@ Example: A form that asks a question, collects contact info, then finishes:
|
|
|
16442
16455
|
});
|
|
16443
16456
|
if (!createResult.ok) {
|
|
16444
16457
|
const message = `Form NOT created (nothing was saved): ${createResult.error}`;
|
|
16445
|
-
return isAnonymousAccountRequired(createResult) ? errorResult(message, authChallengeMeta("
|
|
16458
|
+
return isAnonymousAccountRequired(createResult) ? errorResult(message, authChallengeMeta("insufficient_scope", createResult.apiMessage ?? message)) : errorResult(message);
|
|
16446
16459
|
}
|
|
16447
16460
|
const { data } = createResult;
|
|
16448
16461
|
const formId = data.form_id;
|
|
@@ -16464,6 +16477,8 @@ Example: A form that asks a question, collects contact info, then finishes:
|
|
|
16464
16477
|
const truncate2 = (s, n = 60) => s.length > n ? `${s.slice(0, n - 1)}\u2026` : s;
|
|
16465
16478
|
const lines = [
|
|
16466
16479
|
isPreview ? `Form created as a preview draft.` : `Form created and live.`,
|
|
16480
|
+
// #4845: lead with the in-chat path (wording defined once in lib/anon-notice.ts).
|
|
16481
|
+
...isPreview ? [``, ANON_PREVIEW_ONLY_NOTICE] : [],
|
|
16467
16482
|
``,
|
|
16468
16483
|
`Title: ${title}`,
|
|
16469
16484
|
...planContext?.is_authenticated && planContext.workspace_name ? [`Workspace: ${planContext.workspace_name}`] : [],
|
|
@@ -16472,18 +16487,18 @@ Example: A form that asks a question, collects contact info, then finishes:
|
|
|
16472
16487
|
`Node IDs (use directly with attach_node_media / update_node - no get_form round-trip needed):`,
|
|
16473
16488
|
...createdNodes.map((n) => `- [${n.type}] "${truncate2(n.prompt)}": ${n.id}`),
|
|
16474
16489
|
``,
|
|
16475
|
-
isPreview ? `PREVIEW URL (draft - only you can open this, not
|
|
16490
|
+
isPreview ? `PREVIEW URL (draft - answers are not saved, only you can open this, not for respondents): ${data.viewer_url}` : `FORM URL (live - share this with respondents): ${data.viewer_url}`
|
|
16476
16491
|
];
|
|
16477
16492
|
if (formUrl) {
|
|
16478
16493
|
lines.push(
|
|
16479
|
-
isPreview ? `CLAIM URL (one-time
|
|
16494
|
+
isPreview ? `CLAIM URL (fallback - or open this one-time link to sign up in the browser): ${formUrl}` : `DASHBOARD URL (sign in to edit and manage): ${formUrl}`
|
|
16480
16495
|
);
|
|
16481
16496
|
}
|
|
16482
16497
|
const firstUrlLabel = isPreview ? "PREVIEW" : "FORM";
|
|
16483
16498
|
const secondUrlLabel = isPreview ? "CLAIM" : "DASHBOARD";
|
|
16484
16499
|
lines.push(
|
|
16485
16500
|
``,
|
|
16486
|
-
isPreview ? `This form is a preview
|
|
16501
|
+
isPreview ? `This form is a preview, not live. When the user says "publish it", call clipform_update_form (is_live: true); it prompts them to sign in. The PREVIEW URL never becomes public on its own.` : `The form is live and accessible at the FORM URL above. Edits and media attached AFTER this point are NOT visible to respondents until you re-send is_live: true via clipform_update_form - republishing is the expected final step of a build, never skip it after attaching media/narration.`,
|
|
16487
16502
|
formUrl ? `The URLs above are exact values; constructed or guessed URLs return 404. Use the ${firstUrlLabel} URL and ${secondUrlLabel} URL as shown.` : `The ${firstUrlLabel} URL above is an exact value; constructed or guessed URLs return 404.`,
|
|
16488
16503
|
`Pass form_id on follow-up tools (get_form, add_node, attach_node_media, etc.).`
|
|
16489
16504
|
);
|
|
@@ -16954,7 +16969,11 @@ function formatFormState(data) {
|
|
|
16954
16969
|
const urls = projectUrls(data);
|
|
16955
16970
|
if (urls) {
|
|
16956
16971
|
lines.push(``, `Links (exact values - constructed or guessed URLs return 404):`);
|
|
16957
|
-
if (urls.viewer)
|
|
16972
|
+
if (urls.viewer) {
|
|
16973
|
+
lines.push(
|
|
16974
|
+
isPreviewViewerUrl(urls.viewer) ? ` ${ANON_PREVIEW_LINK_LABEL}: ${urls.viewer}` : ` Viewer (respondent view): ${urls.viewer}`
|
|
16975
|
+
);
|
|
16976
|
+
}
|
|
16958
16977
|
if (urls.builder) lines.push(` Builder: ${urls.builder}`);
|
|
16959
16978
|
if (urls.summary) lines.push(` Summary: ${urls.summary}`);
|
|
16960
16979
|
if (urls.responses) lines.push(` Responses: ${urls.responses}`);
|
|
@@ -16963,6 +16982,7 @@ function formatFormState(data) {
|
|
|
16963
16982
|
if (urls.embed) lines.push(` Embed: ${urls.embed}`);
|
|
16964
16983
|
if (urls.dynamic_link) lines.push(` Dynamic link: ${urls.dynamic_link}`);
|
|
16965
16984
|
}
|
|
16985
|
+
if (isPreviewViewerUrl(urls?.viewer)) lines.push(``, ANON_PREVIEW_ONLY_NOTICE);
|
|
16966
16986
|
lines.push(``, `Nodes (in order):`);
|
|
16967
16987
|
for (let i = 0; i < nodes.length; i++) {
|
|
16968
16988
|
const q = nodes[i];
|
|
@@ -17003,7 +17023,7 @@ function registerGetFormTool(server) {
|
|
|
17003
17023
|
is_live: external_exports.boolean().describe("Whether the form is published"),
|
|
17004
17024
|
has_unpublished_changes: external_exports.boolean().describe("Live form has edits not yet republished"),
|
|
17005
17025
|
urls: external_exports.object({
|
|
17006
|
-
viewer: external_exports.string().optional().describe("Live respondent link, or
|
|
17026
|
+
viewer: external_exports.string().optional().describe("Live respondent link, or - for an anonymous caller's draft - a private preview link where answers are not saved (do not share it with respondents). Omitted for a non-anonymous caller's unpublished draft."),
|
|
17007
17027
|
builder: external_exports.string().optional().describe("Build tab - the node/canvas editor. Not present for an anonymous caller."),
|
|
17008
17028
|
summary: external_exports.string().optional().describe("Summary tab - form overview and key stats. Not present for an anonymous caller."),
|
|
17009
17029
|
responses: external_exports.string().optional().describe("Responses tab - individual submissions. Not present for an anonymous caller."),
|
|
@@ -17112,7 +17132,7 @@ function registerUpdateFormTool(server) {
|
|
|
17112
17132
|
if (!result.ok) {
|
|
17113
17133
|
return isAnonymousAccountRequired(result) ? errorResult(
|
|
17114
17134
|
result.error,
|
|
17115
|
-
authChallengeMeta("
|
|
17135
|
+
authChallengeMeta("insufficient_scope", result.apiMessage ?? result.error)
|
|
17116
17136
|
) : errorResult(result.error);
|
|
17117
17137
|
}
|
|
17118
17138
|
}
|
|
@@ -17124,7 +17144,7 @@ function registerUpdateFormTool(server) {
|
|
|
17124
17144
|
if (!tagResult.ok) {
|
|
17125
17145
|
return isAnonymousAccountRequired(tagResult) ? errorResult(
|
|
17126
17146
|
tagResult.error,
|
|
17127
|
-
authChallengeMeta("
|
|
17147
|
+
authChallengeMeta("insufficient_scope", tagResult.apiMessage ?? tagResult.error)
|
|
17128
17148
|
) : errorResult(tagResult.error);
|
|
17129
17149
|
}
|
|
17130
17150
|
}
|
|
@@ -18853,6 +18873,37 @@ function resolveCaptionRef(explicit, audioUrl) {
|
|
|
18853
18873
|
if (explicit) return explicit;
|
|
18854
18874
|
return typeof audioUrl === "string" && audioUrl ? audioUrl : void 0;
|
|
18855
18875
|
}
|
|
18876
|
+
function soundNarration(inputProps) {
|
|
18877
|
+
const sound = inputProps?.sound;
|
|
18878
|
+
const narration = sound && typeof sound === "object" && sound.enabled !== false ? sound.narration : void 0;
|
|
18879
|
+
if (typeof narration === "string" && narration) return narration;
|
|
18880
|
+
const audioUrl = inputProps?.audioUrl;
|
|
18881
|
+
return typeof audioUrl === "string" && audioUrl ? audioUrl : void 0;
|
|
18882
|
+
}
|
|
18883
|
+
var VOICEOVER_PROP_NAMES = [
|
|
18884
|
+
"narration",
|
|
18885
|
+
"audioUrl",
|
|
18886
|
+
"narrationSrc",
|
|
18887
|
+
"answerNarration",
|
|
18888
|
+
"introNarration",
|
|
18889
|
+
"outroNarration"
|
|
18890
|
+
];
|
|
18891
|
+
var VOICEOVER_CONTROL_NAMES = ["audio_url"];
|
|
18892
|
+
function nonEmpty(v) {
|
|
18893
|
+
if (typeof v === "string") return v.length > 0;
|
|
18894
|
+
if (Array.isArray(v)) return v.length > 0;
|
|
18895
|
+
return typeof v === "object" && v !== null;
|
|
18896
|
+
}
|
|
18897
|
+
function renderHasNarration(input) {
|
|
18898
|
+
if (input.captions && input.captions.length > 0) return true;
|
|
18899
|
+
if (input.captionRef) return true;
|
|
18900
|
+
const sound = input.inputProps?.sound;
|
|
18901
|
+
const soundBlock = sound && typeof sound === "object" && sound.enabled !== false ? sound : void 0;
|
|
18902
|
+
for (const name of VOICEOVER_PROP_NAMES) {
|
|
18903
|
+
if (nonEmpty(input.inputProps?.[name]) || nonEmpty(soundBlock?.[name])) return true;
|
|
18904
|
+
}
|
|
18905
|
+
return VOICEOVER_CONTROL_NAMES.some((name) => nonEmpty(input.controls?.[name]));
|
|
18906
|
+
}
|
|
18856
18907
|
async function createRenderPlaceholder(input) {
|
|
18857
18908
|
try {
|
|
18858
18909
|
const me = await callApi("/me", { method: "GET" });
|
|
@@ -18873,7 +18924,7 @@ async function createRenderPlaceholder(input) {
|
|
|
18873
18924
|
if (!attached.ok) return void 0;
|
|
18874
18925
|
await callApi(`/forms/${input.formId}/nodes/${input.nodeId}/media`, {
|
|
18875
18926
|
method: "PATCH",
|
|
18876
|
-
body: { fit_media: true, show_captions:
|
|
18927
|
+
body: { fit_media: true, show_captions: input.narrated !== false }
|
|
18877
18928
|
}).catch(() => void 0);
|
|
18878
18929
|
return { workspaceId, assetId };
|
|
18879
18930
|
} catch {
|
|
@@ -18901,6 +18952,7 @@ async function completeViaPlaceholder(placeholder, input) {
|
|
|
18901
18952
|
const body = { url: input.publicUrl };
|
|
18902
18953
|
if (input.captions?.length) body.captions = input.captions;
|
|
18903
18954
|
if (input.captionRef) body.caption_ref = input.captionRef;
|
|
18955
|
+
if (input.narrated === false) body.transcribe = false;
|
|
18904
18956
|
const completed = await callApi(`/workspaces/${placeholder.workspaceId}/media/${placeholder.assetId}/complete`, {
|
|
18905
18957
|
method: "POST",
|
|
18906
18958
|
body
|
|
@@ -18930,6 +18982,7 @@ async function legacyAutoAttach(input) {
|
|
|
18930
18982
|
};
|
|
18931
18983
|
if (input.captions?.length) createBody.captions = input.captions;
|
|
18932
18984
|
if (input.captionRef) createBody.caption_ref = input.captionRef;
|
|
18985
|
+
if (input.narrated === false) createBody.transcribe = false;
|
|
18933
18986
|
const created = await callApi(`/workspaces/${workspaceId}/media`, { method: "POST", body: createBody });
|
|
18934
18987
|
if (!created.ok) return { attached: false, error: `Failed to create media asset: ${created.error}` };
|
|
18935
18988
|
const mediaAssetId = created.data?.media_asset_id;
|
|
@@ -18943,7 +18996,7 @@ async function legacyAutoAttach(input) {
|
|
|
18943
18996
|
}
|
|
18944
18997
|
await callApi(`/forms/${input.formId}/nodes/${input.nodeId}/media`, {
|
|
18945
18998
|
method: "PATCH",
|
|
18946
|
-
body: { fit_media: true, show_captions:
|
|
18999
|
+
body: { fit_media: true, show_captions: input.narrated !== false }
|
|
18947
19000
|
}).catch(() => void 0);
|
|
18948
19001
|
let republished = false;
|
|
18949
19002
|
const form = await callApi(`/forms/${input.formId}`, { method: "GET" });
|
|
@@ -18981,7 +19034,9 @@ var RenderItemSchema = external_exports.object({
|
|
|
18981
19034
|
function fireRender(item, formId) {
|
|
18982
19035
|
const job = createJob("clipform_render_composition");
|
|
18983
19036
|
const mediaType = item.outputFormat === "png" ? "still" : "video";
|
|
18984
|
-
const
|
|
19037
|
+
const captionRef = resolveCaptionRef(item.caption_ref, soundNarration(item.inputProps));
|
|
19038
|
+
const narrated = renderHasNarration({ captions: item.captions, captionRef, inputProps: item.inputProps });
|
|
19039
|
+
const placeholderPromise = item.node_id && formId ? createRenderPlaceholder({ formId, nodeId: item.node_id, mediaType, narrated }) : Promise.resolve(void 0);
|
|
18985
19040
|
callApi("/internal/render", {
|
|
18986
19041
|
timeoutMs: 3e5,
|
|
18987
19042
|
// local renders pay a cold webpack bundle; Lambda is fast but bursty
|
|
@@ -19008,8 +19063,9 @@ function fireRender(item, formId) {
|
|
|
19008
19063
|
publicUrl,
|
|
19009
19064
|
mediaType,
|
|
19010
19065
|
captions: item.captions,
|
|
19011
|
-
captionRef
|
|
19012
|
-
placeholder
|
|
19066
|
+
captionRef,
|
|
19067
|
+
placeholder,
|
|
19068
|
+
narrated
|
|
19013
19069
|
});
|
|
19014
19070
|
} else {
|
|
19015
19071
|
const message = "Render completed without a public_url; nothing to attach.";
|
|
@@ -19121,7 +19177,9 @@ ${RENDER_ATTACH_RULE} In batch mode, set node_id per item (see items) and form_i
|
|
|
19121
19177
|
);
|
|
19122
19178
|
}
|
|
19123
19179
|
const mediaTypeSingle = outputFormat === "png" ? "still" : "video";
|
|
19124
|
-
const
|
|
19180
|
+
const captionRefSingle = resolveCaptionRef(caption_ref, soundNarration(inputProps));
|
|
19181
|
+
const narrated = renderHasNarration({ captions, captionRef: captionRefSingle, inputProps });
|
|
19182
|
+
const placeholderPromise = node_id && form_id ? createRenderPlaceholder({ formId: form_id, nodeId: node_id, mediaType: mediaTypeSingle, narrated }) : Promise.resolve(void 0);
|
|
19125
19183
|
const result = await callApi("/internal/render", {
|
|
19126
19184
|
timeoutMs: 3e5,
|
|
19127
19185
|
body: { compositionId, outputFormat, inputProps: inputProps ?? {} }
|
|
@@ -19142,8 +19200,9 @@ ${RENDER_ATTACH_RULE} In batch mode, set node_id per item (see items) and form_i
|
|
|
19142
19200
|
publicUrl: data.public_url,
|
|
19143
19201
|
mediaType: mediaTypeSingle,
|
|
19144
19202
|
captions,
|
|
19145
|
-
captionRef:
|
|
19146
|
-
placeholder
|
|
19203
|
+
captionRef: captionRefSingle,
|
|
19204
|
+
placeholder,
|
|
19205
|
+
narrated
|
|
19147
19206
|
});
|
|
19148
19207
|
} else if (placeholder) {
|
|
19149
19208
|
await failPlaceholder(placeholder, "Render completed without a public_url; nothing to attach.");
|
|
@@ -19424,11 +19483,12 @@ ${RENDER_ATTACH_RULE}`,
|
|
|
19424
19483
|
return errorResult("form_id is required when node_id is set.");
|
|
19425
19484
|
}
|
|
19426
19485
|
const captionRef = resolveCaptionRef(caption_ref, controls?.audio_url);
|
|
19486
|
+
const narrated = renderHasNarration({ captions, captionRef, controls });
|
|
19427
19487
|
const renderBody = { template, controls: controls ?? {}, outputFormat };
|
|
19428
19488
|
const mediaType = outputFormat === "png" ? "still" : "video";
|
|
19429
19489
|
if (wait === false) {
|
|
19430
19490
|
const job = createJob("clipform_render_video_template");
|
|
19431
|
-
const placeholderPromise2 = node_id && form_id ? createRenderPlaceholder({ formId: form_id, nodeId: node_id, mediaType }) : Promise.resolve(void 0);
|
|
19491
|
+
const placeholderPromise2 = node_id && form_id ? createRenderPlaceholder({ formId: form_id, nodeId: node_id, mediaType, narrated }) : Promise.resolve(void 0);
|
|
19432
19492
|
callApi("/internal/render-template", {
|
|
19433
19493
|
timeoutMs: 3e5,
|
|
19434
19494
|
body: renderBody
|
|
@@ -19444,7 +19504,7 @@ ${RENDER_ATTACH_RULE}`,
|
|
|
19444
19504
|
const publicUrl = r.data.public_url;
|
|
19445
19505
|
const placeholder = await placeholderPromise2;
|
|
19446
19506
|
if (publicUrl) {
|
|
19447
|
-
attach2 = await autoAttachRender({ formId: form_id, nodeId: node_id, publicUrl, mediaType, captions, captionRef, placeholder });
|
|
19507
|
+
attach2 = await autoAttachRender({ formId: form_id, nodeId: node_id, publicUrl, mediaType, captions, captionRef, placeholder, narrated });
|
|
19448
19508
|
} else {
|
|
19449
19509
|
const message = "Render completed without a public_url; nothing to attach.";
|
|
19450
19510
|
attach2 = { attached: false, error: message };
|
|
@@ -19467,7 +19527,7 @@ ${RENDER_ATTACH_RULE}`,
|
|
|
19467
19527
|
{ status: "rendering", job_id: job.id, template, output_format: outputFormat }
|
|
19468
19528
|
);
|
|
19469
19529
|
}
|
|
19470
|
-
const placeholderPromise = node_id && form_id ? createRenderPlaceholder({ formId: form_id, nodeId: node_id, mediaType }) : Promise.resolve(void 0);
|
|
19530
|
+
const placeholderPromise = node_id && form_id ? createRenderPlaceholder({ formId: form_id, nodeId: node_id, mediaType, narrated }) : Promise.resolve(void 0);
|
|
19471
19531
|
const result = await callApi("/internal/render-template", {
|
|
19472
19532
|
timeoutMs: 3e5,
|
|
19473
19533
|
body: renderBody
|
|
@@ -19482,7 +19542,7 @@ ${RENDER_ATTACH_RULE}`,
|
|
|
19482
19542
|
if (node_id && form_id) {
|
|
19483
19543
|
const placeholder = await placeholderPromise;
|
|
19484
19544
|
if (data.public_url) {
|
|
19485
|
-
attach = await autoAttachRender({ formId: form_id, nodeId: node_id, publicUrl: data.public_url, mediaType, captions, captionRef, placeholder });
|
|
19545
|
+
attach = await autoAttachRender({ formId: form_id, nodeId: node_id, publicUrl: data.public_url, mediaType, captions, captionRef, placeholder, narrated });
|
|
19486
19546
|
} else if (placeholder) {
|
|
19487
19547
|
await failPlaceholder(placeholder, "Render completed without a public_url; nothing to attach.");
|
|
19488
19548
|
}
|
|
@@ -20147,4 +20207,4 @@ export {
|
|
|
20147
20207
|
* MIT Licensed
|
|
20148
20208
|
*)
|
|
20149
20209
|
*/
|
|
20150
|
-
//# sourceMappingURL=chunk-
|
|
20210
|
+
//# sourceMappingURL=chunk-XFGQP52H.js.map
|