vidspotai-shared 1.0.100 → 1.0.101
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/lib/globals/aiModels/enums.d.ts +1 -0
- package/lib/globals/aiModels/enums.d.ts.map +1 -1
- package/lib/globals/aiModels/enums.js +3 -0
- package/lib/globals/aiModels/extendCapability.d.ts +26 -0
- package/lib/globals/aiModels/extendCapability.d.ts.map +1 -0
- package/lib/globals/aiModels/extendCapability.js +42 -0
- package/lib/globals/aiModels/index.d.ts +1 -0
- package/lib/globals/aiModels/index.d.ts.map +1 -1
- package/lib/globals/aiModels/index.js +1 -0
- package/lib/globals/aiModels/providers/hostedAvatars.js +10 -10
- package/lib/globals/types.d.ts +34 -2
- package/lib/globals/types.d.ts.map +1 -1
- package/lib/globals/types.js +37 -0
- package/lib/models/demoVideoProject.model.d.ts +213 -0
- package/lib/models/demoVideoProject.model.d.ts.map +1 -1
- package/lib/models/index.d.ts +2 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/index.js +2 -0
- package/lib/models/mediaUpload.model.d.ts +25 -0
- package/lib/models/mediaUpload.model.d.ts.map +1 -1
- package/lib/models/productConnection.model.d.ts +57 -0
- package/lib/models/productConnection.model.d.ts.map +1 -0
- package/lib/models/productConnection.model.js +7 -0
- package/lib/models/video.model.d.ts +11 -0
- package/lib/models/video.model.d.ts.map +1 -1
- package/lib/models/videoQaJob.model.d.ts +61 -0
- package/lib/models/videoQaJob.model.d.ts.map +1 -0
- package/lib/models/videoQaJob.model.js +16 -0
- package/lib/schemas/brandKit.schema.d.ts +3 -1
- package/lib/schemas/brandKit.schema.d.ts.map +1 -1
- package/lib/schemas/brandKit.schema.js +9 -0
- package/lib/schemas/brief.schema.d.ts +5 -4
- package/lib/schemas/brief.schema.d.ts.map +1 -1
- package/lib/schemas/brief.schema.js +23 -1
- package/lib/schemas/demoQuestion.schema.d.ts +24 -4
- package/lib/schemas/demoQuestion.schema.d.ts.map +1 -1
- package/lib/schemas/demoQuestion.schema.js +8 -2
- package/lib/schemas/demoSpec.schema.d.ts +40 -6
- package/lib/schemas/demoSpec.schema.d.ts.map +1 -1
- package/lib/schemas/demoSpec.schema.js +46 -1
- package/lib/schemas/project.schema.d.ts +33 -3
- package/lib/schemas/project.schema.d.ts.map +1 -1
- package/lib/schemas/project.schema.js +22 -0
- package/lib/schemas/social.schema.d.ts +1 -1
- package/lib/schemas/videoPlan.schema.d.ts +22 -20
- package/lib/schemas/videoPlan.schema.d.ts.map +1 -1
- package/lib/schemas/videoPlan.schema.js +19 -0
- package/lib/services/agent/editClassifier.d.ts +10 -10
- package/lib/services/agent/eval/types.d.ts +3 -2
- package/lib/services/agent/eval/types.d.ts.map +1 -1
- package/lib/services/agent/executor/core.d.ts.map +1 -1
- package/lib/services/agent/executor/core.js +11 -0
- package/lib/services/agent/planner/Planner.d.ts.map +1 -1
- package/lib/services/agent/planner/Planner.js +5 -0
- package/lib/services/agent/planner/overlayRegen.d.ts.map +1 -1
- package/lib/services/agent/planner/overlayRegen.js +5 -0
- package/lib/services/agent/planner/plannerMessages.d.ts.map +1 -1
- package/lib/services/agent/planner/plannerMessages.js +10 -1
- package/lib/services/agent/planner/scriptFirstPlanner.d.ts.map +1 -1
- package/lib/services/agent/planner/scriptFirstPlanner.js +2 -0
- package/lib/services/agent/regenCore.d.ts.map +1 -1
- package/lib/services/agent/regenCore.js +11 -1
- package/lib/services/agent/runHelpers.d.ts +8 -0
- package/lib/services/agent/runHelpers.d.ts.map +1 -1
- package/lib/services/agent/runHelpers.js +5 -1
- package/lib/services/agent/tools/chapterOutline.tool.d.ts +8 -0
- package/lib/services/agent/tools/chapterOutline.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/chapterOutline.tool.js +21 -8
- package/lib/services/agent/tools/composeScene.tool.d.ts +32 -2
- package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/estimateCost.tool.d.ts +11 -1
- package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/extendVideo.tool.d.ts +9 -3
- package/lib/services/agent/tools/extendVideo.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/extendVideo.tool.js +12 -27
- package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +1 -1
- package/lib/services/agent/tools/generateScript.tool.d.ts +3 -2
- package/lib/services/agent/tools/generateScript.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/generateScript.tool.js +16 -7
- package/lib/services/agent/tools/generateVoiceover.tool.d.ts +1 -1
- package/lib/services/agent/tools/planVideo.tool.d.ts +11 -8
- package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/render.tool.d.ts +11 -1
- package/lib/services/agent/tools/render.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/searchStock.tool.d.ts +1 -1
- package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +4 -4
- package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/kling.service.js +22 -3
- package/lib/services/aiGen/providers/kling/klingStatus.d.ts +7 -0
- package/lib/services/aiGen/providers/kling/klingStatus.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/klingStatus.js +41 -4
- package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/pixverse/pixverse.service.js +25 -0
- package/lib/services/aiGen/providers/types.d.ts +20 -0
- package/lib/services/aiGen/providers/types.d.ts.map +1 -1
- package/lib/services/avatarGen/avatarProviderFactory.d.ts.map +1 -1
- package/lib/services/avatarGen/avatarProviderFactory.js +3 -0
- package/lib/services/avatarGen/index.d.ts +1 -0
- package/lib/services/avatarGen/index.d.ts.map +1 -1
- package/lib/services/avatarGen/index.js +1 -0
- package/lib/services/avatarGen/providers/synthesiaAvatarProvider.d.ts +53 -0
- package/lib/services/avatarGen/providers/synthesiaAvatarProvider.d.ts.map +1 -0
- package/lib/services/avatarGen/providers/synthesiaAvatarProvider.js +176 -0
- package/lib/services/demo/demoAuthor.d.ts +7 -0
- package/lib/services/demo/demoAuthor.d.ts.map +1 -1
- package/lib/services/demo/demoAuthor.js +2 -0
- package/lib/services/demo/demoAuthorPrompt.d.ts +6 -0
- package/lib/services/demo/demoAuthorPrompt.d.ts.map +1 -1
- package/lib/services/demo/demoAuthorPrompt.js +24 -2
- package/lib/services/demo/demoCaptions.d.ts +69 -0
- package/lib/services/demo/demoCaptions.d.ts.map +1 -0
- package/lib/services/demo/demoCaptions.js +152 -0
- package/lib/services/demo/demoMusic.d.ts +8 -1
- package/lib/services/demo/demoMusic.d.ts.map +1 -1
- package/lib/services/demo/demoMusic.js +32 -16
- package/lib/services/demo/demoScriptPrompt.d.ts +2 -1
- package/lib/services/demo/demoScriptPrompt.d.ts.map +1 -1
- package/lib/services/demo/demoScriptPrompt.js +29 -2
- package/lib/services/demo/demoStockAssets.d.ts +29 -0
- package/lib/services/demo/demoStockAssets.d.ts.map +1 -0
- package/lib/services/demo/demoStockAssets.js +107 -0
- package/lib/services/demo/index.d.ts +3 -0
- package/lib/services/demo/index.d.ts.map +1 -1
- package/lib/services/demo/index.js +3 -0
- package/lib/services/demo/productConnection.service.d.ts +78 -0
- package/lib/services/demo/productConnection.service.d.ts.map +1 -0
- package/lib/services/demo/productConnection.service.js +125 -0
- package/lib/services/editor/planToProject.d.ts.map +1 -1
- package/lib/services/editor/planToProject.helpers.d.ts +1 -0
- package/lib/services/editor/planToProject.helpers.d.ts.map +1 -1
- package/lib/services/editor/planToProject.helpers.js +3 -0
- package/lib/services/editor/planToProject.js +39 -0
- package/lib/services/editor/projectToDesign.js +13 -1
- package/lib/services/firestore.service.d.ts +14 -0
- package/lib/services/firestore.service.d.ts.map +1 -1
- package/lib/services/firestore.service.js +16 -0
- package/lib/services/translation/index.d.ts +1 -0
- package/lib/services/translation/index.d.ts.map +1 -1
- package/lib/services/translation/index.js +8 -1
- package/lib/services/translation/outputLanguage.d.ts +75 -0
- package/lib/services/translation/outputLanguage.d.ts.map +1 -0
- package/lib/services/translation/outputLanguage.js +190 -0
- package/lib/services/translation/translation.service.d.ts +13 -2
- package/lib/services/translation/translation.service.d.ts.map +1 -1
- package/lib/services/translation/translation.service.js +66 -5
- package/lib/services/tts/index.d.ts +1 -0
- package/lib/services/tts/index.d.ts.map +1 -1
- package/lib/services/tts/index.js +1 -0
- package/lib/services/tts/providers/elevenlabs.service.d.ts +7 -0
- package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
- package/lib/services/tts/providers/elevenlabs.service.js +69 -13
- package/lib/services/tts/types.d.ts +29 -0
- package/lib/services/tts/types.d.ts.map +1 -1
- package/lib/services/tts/wordTimings.d.ts +27 -0
- package/lib/services/tts/wordTimings.d.ts.map +1 -0
- package/lib/services/tts/wordTimings.js +57 -0
- package/lib/utils/billableDuration.d.ts +11 -0
- package/lib/utils/billableDuration.d.ts.map +1 -0
- package/lib/utils/billableDuration.js +91 -0
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +3 -0
- package/lib/utils/mp4Duration.d.ts +38 -0
- package/lib/utils/mp4Duration.d.ts.map +1 -0
- package/lib/utils/mp4Duration.js +164 -0
- package/lib/utils/socialEntitlements.d.ts +51 -0
- package/lib/utils/socialEntitlements.d.ts.map +1 -0
- package/lib/utils/socialEntitlements.js +65 -0
- package/package.json +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extendVideoTool = void 0;
|
|
4
|
-
exports.modelSupportsExtend = modelSupportsExtend;
|
|
3
|
+
exports.extendVideoTool = exports.modelSupportsExtend = exports.EXTEND_CAPABLE_MODELS = void 0;
|
|
5
4
|
const zod_1 = require("zod");
|
|
6
5
|
const aiModels_1 = require("../../../globals/aiModels");
|
|
7
6
|
const logger_1 = require("../../../utils/logger");
|
|
@@ -9,31 +8,17 @@ const aiGenFactory_service_1 = require("../../aiGen/aiGenFactory.service");
|
|
|
9
8
|
const rateLimiter_1 = require("../../rateLimiter");
|
|
10
9
|
const toolRegistry_1 = require("../toolRegistry");
|
|
11
10
|
/**
|
|
12
|
-
* AG-2:
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* Kling variants (avatar, omni-video, motion-control, lip-sync) are excluded —
|
|
19
|
-
* the generic video-extend endpoint does not accept their tasks.
|
|
11
|
+
* AG-2: the extend-capable model list moved to
|
|
12
|
+
* `globals/aiModels/extendCapability.ts` so the HTTP request schema can consult
|
|
13
|
+
* it too — it previously lived here, which meant only the agent enforced it and
|
|
14
|
+
* `POST /v1/video/generate` accepted `endpoint:"extend"` for ANY model.
|
|
15
|
+
* Re-exported so `extendChain.ts` and `planner/validators.ts` keep importing
|
|
16
|
+
* `modelSupportsExtend` from this module unchanged.
|
|
20
17
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
aiModels_1.EVideoGenModels.KLING_V2_5_TURBO,
|
|
26
|
-
aiModels_1.EVideoGenModels.KLING_V2_6,
|
|
27
|
-
aiModels_1.EVideoGenModels.KLING_V3_0,
|
|
28
|
-
aiModels_1.EVideoGenModels.PIXVERSE_V5,
|
|
29
|
-
aiModels_1.EVideoGenModels.PIXVERSE_V5_5,
|
|
30
|
-
aiModels_1.EVideoGenModels.PIXVERSE_V5_6,
|
|
31
|
-
aiModels_1.EVideoGenModels.PIXVERSE_V6,
|
|
32
|
-
]);
|
|
33
|
-
/** Whether a model key can be extended via its provider's extend endpoint. */
|
|
34
|
-
function modelSupportsExtend(modelKey) {
|
|
35
|
-
return EXTEND_CAPABLE_MODELS.has(modelKey);
|
|
36
|
-
}
|
|
18
|
+
var extendCapability_1 = require("../../../globals/aiModels/extendCapability");
|
|
19
|
+
Object.defineProperty(exports, "EXTEND_CAPABLE_MODELS", { enumerable: true, get: function () { return extendCapability_1.EXTEND_CAPABLE_MODELS; } });
|
|
20
|
+
Object.defineProperty(exports, "modelSupportsExtend", { enumerable: true, get: function () { return extendCapability_1.modelSupportsExtend; } });
|
|
21
|
+
const extendCapability_2 = require("../../../globals/aiModels/extendCapability");
|
|
37
22
|
const InputSchema = zod_1.z.object({
|
|
38
23
|
previousTaskId: zod_1.z
|
|
39
24
|
.string()
|
|
@@ -98,7 +83,7 @@ exports.extendVideoTool = {
|
|
|
98
83
|
return Math.ceil(input.extraDurationSec * (isPremium ? 12 : 4));
|
|
99
84
|
},
|
|
100
85
|
handler: async (input) => {
|
|
101
|
-
if (!modelSupportsExtend(input.modelKey)) {
|
|
86
|
+
if (!(0, extendCapability_2.modelSupportsExtend)(input.modelKey)) {
|
|
102
87
|
throw new Error(`extend_video: model "${input.modelKey}" has no extension endpoint. ` +
|
|
103
88
|
"Extend-capable: Kling (v2-master/v2.1/v2.1-master/v2.5-turbo/v2.6/v3.0), " +
|
|
104
89
|
"Pixverse (v5/v5.5/v5.6/v6).");
|
|
@@ -29,8 +29,8 @@ declare const InputSchema: z.ZodObject<{
|
|
|
29
29
|
voiceId: z.ZodOptional<z.ZodString>;
|
|
30
30
|
languageCode: z.ZodOptional<z.ZodString>;
|
|
31
31
|
mode: z.ZodDefault<z.ZodEnum<{
|
|
32
|
-
pro: "pro";
|
|
33
32
|
std: "std";
|
|
33
|
+
pro: "pro";
|
|
34
34
|
}>>;
|
|
35
35
|
prompt: z.ZodOptional<z.ZodString>;
|
|
36
36
|
}, z.core.$strip>;
|
|
@@ -60,8 +60,8 @@ declare const InputSchema: z.ZodObject<{
|
|
|
60
60
|
"voiceover-only": "voiceover-only";
|
|
61
61
|
}>>;
|
|
62
62
|
pacing: z.ZodOptional<z.ZodEnum<{
|
|
63
|
-
medium: "medium";
|
|
64
63
|
fast: "fast";
|
|
64
|
+
medium: "medium";
|
|
65
65
|
slow: "slow";
|
|
66
66
|
"very-fast": "very-fast";
|
|
67
67
|
}>>;
|
|
@@ -80,6 +80,7 @@ declare const InputSchema: z.ZodObject<{
|
|
|
80
80
|
L2: "L2";
|
|
81
81
|
L3: "L3";
|
|
82
82
|
}>>;
|
|
83
|
+
outputLanguage: z.ZodOptional<z.ZodString>;
|
|
83
84
|
voice: z.ZodOptional<z.ZodObject<{
|
|
84
85
|
gender: z.ZodOptional<z.ZodEnum<{
|
|
85
86
|
male: "male";
|
|
@@ -94,7 +95,7 @@ declare const InputSchema: z.ZodObject<{
|
|
|
94
95
|
senior: "senior";
|
|
95
96
|
}>>;
|
|
96
97
|
accent: z.ZodOptional<z.ZodString>;
|
|
97
|
-
language: z.
|
|
98
|
+
language: z.ZodOptional<z.ZodString>;
|
|
98
99
|
voiceId: z.ZodOptional<z.ZodString>;
|
|
99
100
|
style: z.ZodOptional<z.ZodEnum<{
|
|
100
101
|
energetic: "energetic";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateScript.tool.d.ts","sourceRoot":"","sources":["../../../../src/services/agent/tools/generateScript.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAoB,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAgB,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"generateScript.tool.d.ts","sourceRoot":"","sources":["../../../../src/services/agent/tools/generateScript.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAoB,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAgB,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG/D;;;;;;;;;;;;;;;GAeG;AAEH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUf,CAAC;AAeH,QAAA,MAAM,YAAY;;;;;;;;iBAGhB,CAAC;AAEH;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,UAAU,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoEtD;AAED,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAC7C,OAAO,WAAW,EAClB,OAAO,YAAY,CAcpB,CAAC"}
|
|
@@ -9,6 +9,7 @@ const llmCallerRegistry_1 = require("../llmCallerRegistry");
|
|
|
9
9
|
const modelRouter_1 = require("../modelRouter");
|
|
10
10
|
const ttsDuration_1 = require("../ttsDuration");
|
|
11
11
|
const toolRegistry_1 = require("../toolRegistry");
|
|
12
|
+
const outputLanguage_1 = require("../../translation/outputLanguage");
|
|
12
13
|
/**
|
|
13
14
|
* Stream L (L-4) — generate_script. Script-first authoring for long-form (L1+):
|
|
14
15
|
* the FIRST pass of L-3's two-pass flow. Produces the full spoken narration for
|
|
@@ -61,13 +62,21 @@ async function generateScriptCore(llm, brief, wpmOverride) {
|
|
|
61
62
|
const durationSec = brief.durationSec ?? 300;
|
|
62
63
|
const targetWords = Math.max(80, Math.round((durationSec / 60) * wpm));
|
|
63
64
|
const system = [
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
[
|
|
66
|
+
"You are a senior long-form video scriptwriter (YouTube essays, explainers,",
|
|
67
|
+
"documentaries). Write spoken narration that one narrator reads start to",
|
|
68
|
+
"finish: a strong hook, a clear through-line, signposted transitions between",
|
|
69
|
+
"ideas, and a payoff/CTA at the end. Use natural spoken rhythm and normal",
|
|
70
|
+
"punctuation. Do NOT write scene directions, shot lists, headings, or",
|
|
71
|
+
"bracketed visual notes — ONLY the words spoken aloud.",
|
|
72
|
+
].join(" "),
|
|
73
|
+
// "" on English. The word-count budget below is language-agnostic — it's
|
|
74
|
+
// computed from wpm, and the ±15% band absorbs the density differences
|
|
75
|
+
// between languages well enough that no per-language wpm table is needed.
|
|
76
|
+
(0, outputLanguage_1.buildOutputLanguageSection)(brief.outputLanguage, "the narration and the suggested title"),
|
|
77
|
+
]
|
|
78
|
+
.filter(Boolean)
|
|
79
|
+
.join("\n");
|
|
71
80
|
const user = [
|
|
72
81
|
`Topic / request: ${brief.rawPrompt}`,
|
|
73
82
|
brief.goal ? `Goal: ${brief.goal}` : "",
|
|
@@ -27,9 +27,9 @@ declare const InputSchema: z.ZodObject<{
|
|
|
27
27
|
previousRequestIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
28
28
|
nextRequestIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
29
29
|
applyTextNormalization: z.ZodOptional<z.ZodEnum<{
|
|
30
|
+
auto: "auto";
|
|
30
31
|
on: "on";
|
|
31
32
|
off: "off";
|
|
32
|
-
auto: "auto";
|
|
33
33
|
}>>;
|
|
34
34
|
applyLanguageTextNormalization: z.ZodOptional<z.ZodBoolean>;
|
|
35
35
|
optimizeStreamingLatency: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
|
|
@@ -43,8 +43,8 @@ declare const InputSchema: z.ZodObject<{
|
|
|
43
43
|
"voiceover-only": "voiceover-only";
|
|
44
44
|
}>>;
|
|
45
45
|
pacing: z.ZodOptional<z.ZodEnum<{
|
|
46
|
-
medium: "medium";
|
|
47
46
|
fast: "fast";
|
|
47
|
+
medium: "medium";
|
|
48
48
|
slow: "slow";
|
|
49
49
|
"very-fast": "very-fast";
|
|
50
50
|
}>>;
|
|
@@ -63,6 +63,7 @@ declare const InputSchema: z.ZodObject<{
|
|
|
63
63
|
L2: "L2";
|
|
64
64
|
L3: "L3";
|
|
65
65
|
}>>;
|
|
66
|
+
outputLanguage: z.ZodOptional<z.ZodString>;
|
|
66
67
|
voice: z.ZodOptional<z.ZodObject<{
|
|
67
68
|
gender: z.ZodOptional<z.ZodEnum<{
|
|
68
69
|
male: "male";
|
|
@@ -77,7 +78,7 @@ declare const InputSchema: z.ZodObject<{
|
|
|
77
78
|
senior: "senior";
|
|
78
79
|
}>>;
|
|
79
80
|
accent: z.ZodOptional<z.ZodString>;
|
|
80
|
-
language: z.
|
|
81
|
+
language: z.ZodOptional<z.ZodString>;
|
|
81
82
|
voiceId: z.ZodOptional<z.ZodString>;
|
|
82
83
|
style: z.ZodOptional<z.ZodEnum<{
|
|
83
84
|
energetic: "energetic";
|
|
@@ -213,8 +214,8 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
213
214
|
overlays: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
214
215
|
text: z.ZodString;
|
|
215
216
|
role: z.ZodEnum<{
|
|
216
|
-
body: "body";
|
|
217
217
|
watermark: "watermark";
|
|
218
|
+
body: "body";
|
|
218
219
|
cta: "cta";
|
|
219
220
|
headline: "headline";
|
|
220
221
|
subheadline: "subheadline";
|
|
@@ -222,8 +223,8 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
222
223
|
label: "label";
|
|
223
224
|
}>;
|
|
224
225
|
position: z.ZodOptional<z.ZodEnum<{
|
|
225
|
-
center: "center";
|
|
226
226
|
top: "top";
|
|
227
|
+
center: "center";
|
|
227
228
|
"top-left": "top-left";
|
|
228
229
|
"top-right": "top-right";
|
|
229
230
|
"top-banner": "top-banner";
|
|
@@ -242,10 +243,10 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
242
243
|
fontSize: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>>;
|
|
243
244
|
sizePct: z.ZodOptional<z.ZodNumber>;
|
|
244
245
|
weight: z.ZodOptional<z.ZodEnum<{
|
|
245
|
-
regular: "regular";
|
|
246
246
|
bold: "bold";
|
|
247
|
-
black: "black";
|
|
248
247
|
medium: "medium";
|
|
248
|
+
regular: "regular";
|
|
249
|
+
black: "black";
|
|
249
250
|
}>>;
|
|
250
251
|
color: z.ZodOptional<z.ZodString>;
|
|
251
252
|
bgColor: z.ZodOptional<z.ZodString>;
|
|
@@ -257,8 +258,8 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
257
258
|
outline: "outline";
|
|
258
259
|
}>>;
|
|
259
260
|
animation: z.ZodOptional<z.ZodEnum<{
|
|
260
|
-
type: "type";
|
|
261
261
|
pop: "pop";
|
|
262
|
+
type: "type";
|
|
262
263
|
none: "none";
|
|
263
264
|
fade: "fade";
|
|
264
265
|
"slide-up": "slide-up";
|
|
@@ -318,8 +319,8 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
318
319
|
broll: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
319
320
|
assetUrl: z.ZodString;
|
|
320
321
|
kind: z.ZodDefault<z.ZodEnum<{
|
|
321
|
-
image: "image";
|
|
322
322
|
video: "video";
|
|
323
|
+
image: "image";
|
|
323
324
|
}>>;
|
|
324
325
|
startMs: z.ZodDefault<z.ZodNumber>;
|
|
325
326
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
@@ -355,7 +356,9 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
355
356
|
}, z.core.$strip>>;
|
|
356
357
|
voiceId: z.ZodOptional<z.ZodString>;
|
|
357
358
|
voiceStyle: z.ZodOptional<z.ZodString>;
|
|
359
|
+
outputLanguage: z.ZodOptional<z.ZodString>;
|
|
358
360
|
notes: z.ZodOptional<z.ZodString>;
|
|
361
|
+
brandLogoUrl: z.ZodOptional<z.ZodString>;
|
|
359
362
|
captionStyle: z.ZodOptional<z.ZodObject<{
|
|
360
363
|
fontFamily: z.ZodOptional<z.ZodString>;
|
|
361
364
|
fontSize: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planVideo.tool.d.ts","sourceRoot":"","sources":["../../../../src/services/agent/tools/planVideo.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAQ/D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAExD;AAED,QAAA,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"planVideo.tool.d.ts","sourceRoot":"","sources":["../../../../src/services/agent/tools/planVideo.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAQ/D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAExD;AAED,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIf,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEhB,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,cAAc,CACxC,OAAO,WAAW,EAClB,OAAO,YAAY,CAuBpB,CAAC"}
|
|
@@ -44,8 +44,8 @@ declare const InputSchema: z.ZodObject<{
|
|
|
44
44
|
tracks: z.ZodArray<z.ZodObject<{
|
|
45
45
|
id: z.ZodString;
|
|
46
46
|
kind: z.ZodEnum<{
|
|
47
|
-
audio: "audio";
|
|
48
47
|
video: "video";
|
|
48
|
+
audio: "audio";
|
|
49
49
|
text: "text";
|
|
50
50
|
caption: "caption";
|
|
51
51
|
fx: "fx";
|
|
@@ -139,6 +139,16 @@ declare const InputSchema: z.ZodObject<{
|
|
|
139
139
|
saturation: z.ZodDefault<z.ZodNumber>;
|
|
140
140
|
warmth: z.ZodDefault<z.ZodNumber>;
|
|
141
141
|
}, z.core.$strip>>;
|
|
142
|
+
box: z.ZodOptional<z.ZodObject<{
|
|
143
|
+
left: z.ZodNumber;
|
|
144
|
+
top: z.ZodNumber;
|
|
145
|
+
width: z.ZodNumber;
|
|
146
|
+
height: z.ZodNumber;
|
|
147
|
+
}, z.core.$strip>>;
|
|
148
|
+
fit: z.ZodOptional<z.ZodEnum<{
|
|
149
|
+
cover: "cover";
|
|
150
|
+
contain: "contain";
|
|
151
|
+
}>>;
|
|
142
152
|
id: z.ZodString;
|
|
143
153
|
trackId: z.ZodString;
|
|
144
154
|
display: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.tool.d.ts","sourceRoot":"","sources":["../../../../src/services/agent/tools/render.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;IACvC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;CAC3C,KAAK,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAGvC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,CAE5D;AAED,QAAA,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"render.tool.d.ts","sourceRoot":"","sources":["../../../../src/services/agent/tools/render.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;IACvC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;CAC3C,KAAK,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAGvC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,CAE5D;AAED,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQf,CAAC;AAEH,QAAA,MAAM,YAAY;;;iBAGhB,CAAC;AAEH,eAAO,MAAM,UAAU,EAAE,cAAc,CACrC,OAAO,WAAW,EAClB,OAAO,YAAY,CA2BpB,CAAC"}
|
|
@@ -5,8 +5,8 @@ export declare function _clearStockDedupForTesting(): void;
|
|
|
5
5
|
declare const InputSchema: z.ZodObject<{
|
|
6
6
|
query: z.ZodString;
|
|
7
7
|
kind: z.ZodEnum<{
|
|
8
|
-
image: "image";
|
|
9
8
|
video: "video";
|
|
9
|
+
image: "image";
|
|
10
10
|
}>;
|
|
11
11
|
aspectRatio: z.ZodOptional<z.ZodEnum<{
|
|
12
12
|
"9:16": "9:16";
|
|
@@ -28,9 +28,9 @@ export declare function setUserLibrarySearch(fn: UserLibrarySearchFn): void;
|
|
|
28
28
|
declare const InputSchema: z.ZodObject<{
|
|
29
29
|
query: z.ZodString;
|
|
30
30
|
kind: z.ZodOptional<z.ZodEnum<{
|
|
31
|
-
audio: "audio";
|
|
32
|
-
image: "image";
|
|
33
31
|
video: "video";
|
|
32
|
+
image: "image";
|
|
33
|
+
audio: "audio";
|
|
34
34
|
"stock-video": "stock-video";
|
|
35
35
|
"stock-image": "stock-image";
|
|
36
36
|
}>>;
|
|
@@ -40,9 +40,9 @@ declare const OutputSchema: z.ZodObject<{
|
|
|
40
40
|
assets: z.ZodArray<z.ZodObject<{
|
|
41
41
|
id: z.ZodString;
|
|
42
42
|
kind: z.ZodEnum<{
|
|
43
|
-
audio: "audio";
|
|
44
|
-
image: "image";
|
|
45
43
|
video: "video";
|
|
44
|
+
image: "image";
|
|
45
|
+
audio: "audio";
|
|
46
46
|
"stock-video": "stock-video";
|
|
47
47
|
"stock-image": "stock-image";
|
|
48
48
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kling.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/kling.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kling.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/kling.service.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAyBlB;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE7C;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,wBAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IASxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAC9E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;;YAWlE,OAAO;IAiCf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IA+EjC;;;;;;;;OAQG;YACW,kBAAkB;IAgChC;;;;OAIG;YACW,WAAW;YA6BX,iBAAiB;YA6BjB,qBAAqB;YAgCrB,eAAe;YAkDf,mBAAmB;YAgCnB,uBAAuB;IAsI/B,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiB7E;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAiBxB,cAAc,IAAI,MAAM;IAexB,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;CAGjD"}
|
|
@@ -64,6 +64,28 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
64
64
|
}
|
|
65
65
|
async generateVideo(params) {
|
|
66
66
|
(0, helpers_1.validateParams)(params);
|
|
67
|
+
// Extend is dispatched FIRST, and never silently downgrades.
|
|
68
|
+
//
|
|
69
|
+
// This check used to sit below the special-endpoint branches (avatar,
|
|
70
|
+
// lip-sync, motion-control, omni-video, turbo), so an extend request on any
|
|
71
|
+
// of those models fell into that model's own generate path and produced a
|
|
72
|
+
// BRAND-NEW clip while ignoring sourceTaskId — a silent wrong result, billed
|
|
73
|
+
// in full. kling-v3.0-turbo was the live example: it sits on the API 2.0
|
|
74
|
+
// /tasks surface, which has no video-extend equivalent at all.
|
|
75
|
+
//
|
|
76
|
+
// None of those endpoints accept a generic video-extend task, so the correct
|
|
77
|
+
// behaviour is to reject, not to reinterpret. The request schema already
|
|
78
|
+
// blocks this at the HTTP door; this is the provider-level backstop for the
|
|
79
|
+
// agent and any other in-process caller.
|
|
80
|
+
if (params.endpoint === "extend") {
|
|
81
|
+
if (!(0, aiModels_1.modelSupportsExtend)(params.modelKey)) {
|
|
82
|
+
throw new Error(`${params.modelKey} has no Kling video-extend endpoint — ` +
|
|
83
|
+
"avatar, lip-sync, motion-control, omni-video and v3.0-turbo tasks " +
|
|
84
|
+
"are not accepted by /v1/videos/video-extend. " +
|
|
85
|
+
`Extend-capable: ${[...aiModels_1.EXTEND_CAPABLE_MODELS].join(", ")}.`);
|
|
86
|
+
}
|
|
87
|
+
return this.extendVideo(params);
|
|
88
|
+
}
|
|
67
89
|
if (params.modelKey === "kling-avatar") {
|
|
68
90
|
return this.generateAvatarVideo(params);
|
|
69
91
|
}
|
|
@@ -80,9 +102,6 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
80
102
|
if (params.modelKey === "kling-v3.0-turbo") {
|
|
81
103
|
return this.generateTurboVideo(params);
|
|
82
104
|
}
|
|
83
|
-
if (params.endpoint === "extend") {
|
|
84
|
-
return this.extendVideo(params);
|
|
85
|
-
}
|
|
86
105
|
const modelId = aiModels_1.aiModelConfigs[params.modelKey]?.modelId;
|
|
87
106
|
if (!modelId)
|
|
88
107
|
throw new Error(`Unknown modelKey: ${params.modelKey}`);
|
|
@@ -6,6 +6,13 @@ import type { KlingAuthMode } from "./kling.service";
|
|
|
6
6
|
* service's bound requestWithTimeoutRetry) plus the submit timeout, so they
|
|
7
7
|
* reuse the JWT auth + IPv4-pinned agents without holding a class reference.
|
|
8
8
|
*/
|
|
9
|
+
/**
|
|
10
|
+
* Kling reports clip length as seconds-in-a-string ("5", "10.1"). Parse it
|
|
11
|
+
* defensively: a malformed or absent value must yield `undefined` (billing then
|
|
12
|
+
* falls back to the requested duration) rather than NaN, which would poison
|
|
13
|
+
* every downstream cost calculation. See VideoStatusResult.durationSec.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseKlingDurationSec(raw: unknown): number | undefined;
|
|
9
16
|
export interface KlingStatusDeps {
|
|
10
17
|
/** Bound KlingService.requestWithTimeoutRetry. */
|
|
11
18
|
request: <T>(endpoint: string, method: "POST" | "GET", body?: any, maxAttempts?: number, timeout?: number,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"klingStatus.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/klingStatus.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,OAAO,EAAE,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,KAAK,EACtB,IAAI,CAAC,EAAE,GAAG,EACV,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,aAAa,KACrB,OAAO,CAAC,CAAC,CAAC,CAAC;IAChB,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;CACzB;AA4ED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,eAAe,EACrB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAyB,EAAE,EAAE,iBAAiB,GACrE,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"klingStatus.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/klingStatus.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD;;;;;GAKG;AACH;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAItE;AAED,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,OAAO,EAAE,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,KAAK,EACtB,IAAI,CAAC,EAAE,GAAG,EACV,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,aAAa,KACrB,OAAO,CAAC,CAAC,CAAC,CAAC;IAChB,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;CACzB;AA4ED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,eAAe,EACrB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAyB,EAAE,EAAE,iBAAiB,GACrE,OAAO,CAAC,iBAAiB,CAAC,CA4D5B;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,eAAe,EACrB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAyB,EAAE,EAAE,iBAAiB,GACrE,OAAO,CAAC,iBAAiB,CAAC,CAgF5B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,eAAe,EACrB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAyB,EAAE,EAAE,iBAAiB,GACrE,OAAO,CAAC,iBAAiB,CAAC,CA2G5B"}
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseKlingDurationSec = parseKlingDurationSec;
|
|
6
7
|
exports.checkTurboVideoStatus = checkTurboVideoStatus;
|
|
7
8
|
exports.checkRegularVideoStatus = checkRegularVideoStatus;
|
|
8
9
|
exports.checkAvatarVideoStatus = checkAvatarVideoStatus;
|
|
@@ -12,6 +13,24 @@ const https_1 = __importDefault(require("https"));
|
|
|
12
13
|
const types_1 = require("../../../../globals/types");
|
|
13
14
|
const firebase_1 = require("../../../../libs/firebase");
|
|
14
15
|
const logger_1 = require("../../../../utils/logger");
|
|
16
|
+
/**
|
|
17
|
+
* Kling status polling + result stashing. Extracted from KlingService so the
|
|
18
|
+
* class stays a thin transport/dispatch layer. These take a `request` dep (the
|
|
19
|
+
* service's bound requestWithTimeoutRetry) plus the submit timeout, so they
|
|
20
|
+
* reuse the JWT auth + IPv4-pinned agents without holding a class reference.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Kling reports clip length as seconds-in-a-string ("5", "10.1"). Parse it
|
|
24
|
+
* defensively: a malformed or absent value must yield `undefined` (billing then
|
|
25
|
+
* falls back to the requested duration) rather than NaN, which would poison
|
|
26
|
+
* every downstream cost calculation. See VideoStatusResult.durationSec.
|
|
27
|
+
*/
|
|
28
|
+
function parseKlingDurationSec(raw) {
|
|
29
|
+
if (typeof raw !== "string" && typeof raw !== "number")
|
|
30
|
+
return undefined;
|
|
31
|
+
const parsed = typeof raw === "number" ? raw : Number.parseFloat(raw);
|
|
32
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
|
|
33
|
+
}
|
|
15
34
|
/**
|
|
16
35
|
* Download a finished Kling video and re-host it in GCS, returning a signed
|
|
17
36
|
* URL. Bounded retry + IPv4 pinning: Kling's CDN hostnames frequently resolve
|
|
@@ -102,7 +121,12 @@ async function checkTurboVideoStatus(deps, { task, outputFilename, outputFilePat
|
|
|
102
121
|
};
|
|
103
122
|
}
|
|
104
123
|
if (taskData.status === "succeeded") {
|
|
105
|
-
const
|
|
124
|
+
const videoOutput = taskData.outputs?.find((o) => o.type === "video");
|
|
125
|
+
const videoUrl = videoOutput?.url;
|
|
126
|
+
// Turbo is priced `perSecond * duration` with NO duration table, and accepts
|
|
127
|
+
// any length 3–15s, so a requested-vs-delivered mismatch bills wrong at
|
|
128
|
+
// every second of drift rather than being absorbed by a {5,10} table.
|
|
129
|
+
const durationSec = parseKlingDurationSec(videoOutput?.duration);
|
|
106
130
|
if (!videoUrl) {
|
|
107
131
|
return {
|
|
108
132
|
status: types_1.EVideoSceneStatus.FAILED,
|
|
@@ -110,7 +134,7 @@ async function checkTurboVideoStatus(deps, { task, outputFilename, outputFilePat
|
|
|
110
134
|
};
|
|
111
135
|
}
|
|
112
136
|
const signedUrl = await stashVideoToGcs(videoUrl, outputFilePath, outputFilename, deps.generateTimeout, { task, surface: "turbo" });
|
|
113
|
-
return { videoUrl: signedUrl, status: types_1.EVideoSceneStatus.COMPLETED };
|
|
137
|
+
return { videoUrl: signedUrl, status: types_1.EVideoSceneStatus.COMPLETED, durationSec };
|
|
114
138
|
}
|
|
115
139
|
if (taskData.status === "failed") {
|
|
116
140
|
return {
|
|
@@ -154,7 +178,13 @@ async function checkRegularVideoStatus(deps, { task, outputFilename, outputFileP
|
|
|
154
178
|
}
|
|
155
179
|
logger_1.logger.info("Kling checkVideoStatus polled", { task, durationMs: Date.now() - startTime, status: result.data.task_status });
|
|
156
180
|
if (result.data.task_status === "succeed") {
|
|
157
|
-
const
|
|
181
|
+
const video = result.data.task_result?.videos?.[0];
|
|
182
|
+
const videoUrl = video?.url;
|
|
183
|
+
// Kling reports how long the clip ACTUALLY is; this was previously read for
|
|
184
|
+
// `.url` only and the length discarded. Carrying it out lets billing
|
|
185
|
+
// reconcile on the delivered length instead of the requested one — the fix
|
|
186
|
+
// for extend overcharging (see VideoStatusResult.durationSec).
|
|
187
|
+
const durationSec = parseKlingDurationSec(video?.duration);
|
|
158
188
|
if (!videoUrl) {
|
|
159
189
|
return {
|
|
160
190
|
status: types_1.EVideoSceneStatus.FAILED,
|
|
@@ -177,6 +207,7 @@ async function checkRegularVideoStatus(deps, { task, outputFilename, outputFileP
|
|
|
177
207
|
return {
|
|
178
208
|
videoUrl: signedUrl,
|
|
179
209
|
status: types_1.EVideoSceneStatus.COMPLETED,
|
|
210
|
+
durationSec,
|
|
180
211
|
};
|
|
181
212
|
}
|
|
182
213
|
if (result.data.task_status === "failed") {
|
|
@@ -198,7 +229,12 @@ async function checkAvatarVideoStatus(deps, { task, outputFilename, outputFilePa
|
|
|
198
229
|
};
|
|
199
230
|
}
|
|
200
231
|
if (result.data.task_status === "succeed") {
|
|
201
|
-
const
|
|
232
|
+
const video = result.data.task_result?.videos?.[0];
|
|
233
|
+
const videoUrl = video?.url;
|
|
234
|
+
// Avatar/lip-sync length is driven by the driving AUDIO, not by a requested
|
|
235
|
+
// duration — and klingCredits bills it in 5s increments. Reporting the real
|
|
236
|
+
// length is what makes that calculation correct.
|
|
237
|
+
const durationSec = parseKlingDurationSec(video?.duration);
|
|
202
238
|
if (!videoUrl) {
|
|
203
239
|
return {
|
|
204
240
|
status: types_1.EVideoSceneStatus.FAILED,
|
|
@@ -246,6 +282,7 @@ async function checkAvatarVideoStatus(deps, { task, outputFilename, outputFilePa
|
|
|
246
282
|
return {
|
|
247
283
|
videoUrl: signedUrl,
|
|
248
284
|
status: types_1.EVideoSceneStatus.COMPLETED,
|
|
285
|
+
durationSec,
|
|
249
286
|
};
|
|
250
287
|
}
|
|
251
288
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixverse.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/pixverse/pixverse.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"pixverse.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/pixverse/pixverse.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AA+FlB,qBAAa,eAAgB,SAAQ,wBAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkD;IAK1E;;;;;;OAMG;YACW,WAAW;IA6CnB,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAyL3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+GjD,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;CAkDjD"}
|
|
@@ -11,6 +11,7 @@ const aiModels_1 = require("../../../../globals/aiModels");
|
|
|
11
11
|
const types_1 = require("../../../../globals/types");
|
|
12
12
|
const firebase_1 = require("../../../../libs/firebase");
|
|
13
13
|
const helpers_2 = require("../../../../utils/helpers");
|
|
14
|
+
const mp4Duration_1 = require("../../../../utils/mp4Duration");
|
|
14
15
|
const logger_1 = require("../../../../utils/logger");
|
|
15
16
|
const errors_1 = require("../../../../utils/errors");
|
|
16
17
|
const transientRetry_1 = require("../../transientRetry");
|
|
@@ -138,6 +139,13 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
|
|
|
138
139
|
// Extend a previously-generated PixVerse video. Takes the prior video_id;
|
|
139
140
|
// returns a new task whose status is polled via the same /result/{id} endpoint.
|
|
140
141
|
if (params.endpoint === "extend") {
|
|
142
|
+
// Backstop matching kling.service: reject rather than silently falling
|
|
143
|
+
// through to plain generation, which would return a brand-new clip while
|
|
144
|
+
// the caller believed their video had been continued.
|
|
145
|
+
if (!(0, aiModels_1.modelSupportsExtend)(params.modelKey)) {
|
|
146
|
+
throw new Error(`${params.modelKey} has no PixVerse video-extend endpoint. ` +
|
|
147
|
+
`Extend-capable: ${[...aiModels_1.EXTEND_CAPABLE_MODELS].join(", ")}.`);
|
|
148
|
+
}
|
|
141
149
|
if (!params.sourceTaskId) {
|
|
142
150
|
throw new Error("sourceTaskId (prior PixVerse video_id) is required for video extension");
|
|
143
151
|
}
|
|
@@ -320,6 +328,12 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
|
|
|
320
328
|
errorMessage: `Unknown PixVerse status: ${status}`,
|
|
321
329
|
};
|
|
322
330
|
}
|
|
331
|
+
// NOTE: unlike Kling, PixVerse's /video/result payload carries NO clip
|
|
332
|
+
// length. Verified against the official docs 2026-07-24 — the whole Resp
|
|
333
|
+
// object is {create_time, id, modify_time, negative_prompt, outputHeight,
|
|
334
|
+
// outputWidth, prompt, resolution_ratio, seed, size, status, style, url},
|
|
335
|
+
// and `size` is bytes. So there is no field to read: the delivered length
|
|
336
|
+
// is measured from the downloaded file below (see readMp4DurationSec).
|
|
323
337
|
const sourceVideoUrl = data?.Resp?.url;
|
|
324
338
|
if (!sourceVideoUrl) {
|
|
325
339
|
return {
|
|
@@ -333,6 +347,16 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
|
|
|
333
347
|
throw new Error(`Failed to download PixVerse video (${videoResp.status})`);
|
|
334
348
|
}
|
|
335
349
|
const buffer = Buffer.from(await videoResp.arrayBuffer());
|
|
350
|
+
// Measure the DELIVERED length off the bytes we already hold, since the
|
|
351
|
+
// API never reports it. Matters most for `endpoint:"extend"`, where the
|
|
352
|
+
// extend body deliberately sends no duration and PixVerse appends a fixed
|
|
353
|
+
// native increment — billing the requested duration there over-charges.
|
|
354
|
+
// Returns undefined for anything unreadable, in which case finalization
|
|
355
|
+
// keeps billing the requested duration exactly as before.
|
|
356
|
+
const durationSec = (0, mp4Duration_1.readMp4DurationSec)(buffer);
|
|
357
|
+
if (durationSec === undefined) {
|
|
358
|
+
logger_1.logger.warn("PixVerse: could not read delivered duration from the downloaded clip — billing will use the requested duration", { task, bytes: buffer.length });
|
|
359
|
+
}
|
|
336
360
|
// ---- Upload to Firebase ----
|
|
337
361
|
const filePath = `${outputFilePath}/${outputFilename}.mp4`;
|
|
338
362
|
const bucket = (0, firebase_1.getBucket)();
|
|
@@ -353,6 +377,7 @@ class PixVerseService extends baseAiGenProvider_service_1.BaseAiGenProviderServi
|
|
|
353
377
|
return {
|
|
354
378
|
videoUrl: publicVideoUrl,
|
|
355
379
|
status: types_1.EVideoSceneStatus.COMPLETED,
|
|
380
|
+
durationSec,
|
|
356
381
|
};
|
|
357
382
|
}
|
|
358
383
|
// =========================================================
|
|
@@ -102,6 +102,26 @@ export interface VideoStatusResult {
|
|
|
102
102
|
status: EVideoSceneStatus;
|
|
103
103
|
videoUrl?: string;
|
|
104
104
|
errorMessage?: string;
|
|
105
|
+
/**
|
|
106
|
+
* ACTUAL length of the delivered clip, in seconds, when the provider reports
|
|
107
|
+
* it. Billing must prefer this over the REQUESTED duration: the two diverge
|
|
108
|
+
* whenever a provider ignores or clamps the requested value.
|
|
109
|
+
*
|
|
110
|
+
* The motivating case is video-extend. `buildExtendBody()` (Kling) and the
|
|
111
|
+
* Pixverse `/extend/generate` body deliberately send no `duration` — both
|
|
112
|
+
* providers append a fixed native increment (~5s / ~5-8s) — yet every billing
|
|
113
|
+
* site priced from the requested duration, so `endpoint:"extend"` with
|
|
114
|
+
* `duration:10` charged for 10s of generation and delivered ~5s. On
|
|
115
|
+
* kling-v2-master that is 28 credits for a 14-credit clip.
|
|
116
|
+
*
|
|
117
|
+
* Kling already returns this (`task_result.videos[].duration`, seconds as a
|
|
118
|
+
* string); it was parsed for `.url` only and discarded. Providers that don't
|
|
119
|
+
* report a length leave this undefined and billing falls back to the
|
|
120
|
+
* requested duration, exactly as before.
|
|
121
|
+
*
|
|
122
|
+
* See notes/UTILITY_TOOLS_LAUNCH_PLAN.md §1.5.1.
|
|
123
|
+
*/
|
|
124
|
+
durationSec?: number;
|
|
105
125
|
}
|
|
106
126
|
export interface VideoStatusParams {
|
|
107
127
|
task: TVideoJobTask;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IAEpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IAE7D;;;;;OAKG;IACH,QAAQ,CAAC,EACL,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,WAAW,GACX,gBAAgB,CAAC;IAGrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uGAAuG;IACvG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAG9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6FAA6F;IAC7F,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,YAAY,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IAG/C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,KAAK,CAAC;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/C,CAAC,CAAC;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAGtB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;IAC9D,iCAAiC;IACjC,qBAAqB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAGvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/types.ts"],"names":[],"mappings":"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"}
|