vidspotai-shared 1.0.53 → 1.0.55
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/providers/alibaba.d.ts +4 -0
- package/lib/globals/aiModels/providers/alibaba.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/alibaba.js +183 -0
- package/lib/globals/aiModels/providers/elevenlabs.d.ts +13 -0
- package/lib/globals/aiModels/providers/elevenlabs.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/elevenlabs.js +25 -0
- package/lib/globals/aiModels/providers/pixverseTemplates.d.ts +36 -0
- package/lib/globals/aiModels/providers/pixverseTemplates.d.ts.map +1 -0
- package/lib/globals/aiModels/providers/pixverseTemplates.js +42 -0
- package/lib/globals/aiModels/tierHelpers.d.ts +27 -0
- package/lib/globals/aiModels/tierHelpers.d.ts.map +1 -0
- package/lib/globals/aiModels/tierHelpers.js +73 -0
- package/lib/globals/ttsModels/providers/minimax.d.ts +8 -0
- package/lib/globals/ttsModels/providers/minimax.d.ts.map +1 -0
- package/lib/globals/ttsModels/providers/minimax.js +18 -0
- package/lib/globals/ttsModels/providers/openai.d.ts +8 -0
- package/lib/globals/ttsModels/providers/openai.d.ts.map +1 -0
- package/lib/globals/ttsModels/providers/openai.js +18 -0
- package/lib/globals/types.d.ts +2 -1
- package/lib/globals/types.d.ts.map +1 -1
- package/lib/globals/types.js +1 -0
- package/lib/models/agent.model.d.ts +117 -0
- package/lib/models/agent.model.d.ts.map +1 -0
- package/lib/models/agent.model.js +13 -0
- package/lib/models/analytics.model.d.ts +4 -0
- package/lib/models/analytics.model.d.ts.map +1 -1
- package/lib/models/cachedAsset.model.d.ts +18 -0
- package/lib/models/cachedAsset.model.d.ts.map +1 -0
- package/lib/models/cachedAsset.model.js +2 -0
- package/lib/models/cachedRawAsset.model.d.ts +20 -0
- package/lib/models/cachedRawAsset.model.d.ts.map +1 -0
- package/lib/models/cachedRawAsset.model.js +2 -0
- package/lib/models/video.model.d.ts +1 -0
- package/lib/models/video.model.d.ts.map +1 -1
- package/lib/schemas/agentPersona.schema.d.ts +10 -0
- package/lib/schemas/agentPersona.schema.d.ts.map +1 -0
- package/lib/schemas/agentPersona.schema.js +11 -0
- package/lib/schemas/brandKit.schema.d.ts +101 -0
- package/lib/schemas/brandKit.schema.d.ts.map +1 -0
- package/lib/schemas/brandKit.schema.js +46 -0
- package/lib/schemas/brief.schema.d.ts +216 -0
- package/lib/schemas/brief.schema.d.ts.map +1 -0
- package/lib/schemas/brief.schema.js +118 -0
- package/lib/schemas/index.d.ts +6 -0
- package/lib/schemas/index.d.ts.map +1 -0
- package/lib/schemas/index.js +21 -0
- package/lib/schemas/project.schema.d.ts +1005 -0
- package/lib/schemas/project.schema.d.ts.map +1 -0
- package/lib/schemas/project.schema.js +238 -0
- package/lib/schemas/videoPlan.schema.d.ts +145 -0
- package/lib/schemas/videoPlan.schema.d.ts.map +1 -0
- package/lib/schemas/videoPlan.schema.js +109 -0
- package/lib/services/agent/beatSnap.d.ts +10 -0
- package/lib/services/agent/beatSnap.d.ts.map +1 -0
- package/lib/services/agent/beatSnap.js +128 -0
- package/lib/services/agent/costPreflight.d.ts +22 -0
- package/lib/services/agent/costPreflight.d.ts.map +1 -0
- package/lib/services/agent/costPreflight.js +75 -0
- package/lib/services/agent/critic.d.ts +103 -0
- package/lib/services/agent/critic.d.ts.map +1 -0
- package/lib/services/agent/critic.js +132 -0
- package/lib/services/agent/eval/index.d.ts +5 -0
- package/lib/services/agent/eval/index.d.ts.map +1 -0
- package/lib/services/agent/eval/index.js +20 -0
- package/lib/services/agent/eval/judge.d.ts +14 -0
- package/lib/services/agent/eval/judge.d.ts.map +1 -0
- package/lib/services/agent/eval/judge.js +95 -0
- package/lib/services/agent/eval/recorder.d.ts +17 -0
- package/lib/services/agent/eval/recorder.d.ts.map +1 -0
- package/lib/services/agent/eval/recorder.js +65 -0
- package/lib/services/agent/eval/seedBriefs.d.ts +16 -0
- package/lib/services/agent/eval/seedBriefs.d.ts.map +1 -0
- package/lib/services/agent/eval/seedBriefs.js +1188 -0
- package/lib/services/agent/eval/types.d.ts +196 -0
- package/lib/services/agent/eval/types.d.ts.map +1 -0
- package/lib/services/agent/eval/types.js +65 -0
- package/lib/services/agent/executor.d.ts +50 -0
- package/lib/services/agent/executor.d.ts.map +1 -0
- package/lib/services/agent/executor.js +188 -0
- package/lib/services/agent/index.d.ts +15 -0
- package/lib/services/agent/index.d.ts.map +1 -0
- package/lib/services/agent/index.js +30 -0
- package/lib/services/agent/llmCaller.d.ts +77 -0
- package/lib/services/agent/llmCaller.d.ts.map +1 -0
- package/lib/services/agent/llmCaller.js +16 -0
- package/lib/services/agent/llmCallerGateway.d.ts +39 -0
- package/lib/services/agent/llmCallerGateway.d.ts.map +1 -0
- package/lib/services/agent/llmCallerGateway.js +246 -0
- package/lib/services/agent/llmCallerRegistry.d.ts +4 -0
- package/lib/services/agent/llmCallerRegistry.d.ts.map +1 -0
- package/lib/services/agent/llmCallerRegistry.js +19 -0
- package/lib/services/agent/modelRouter.d.ts +41 -0
- package/lib/services/agent/modelRouter.d.ts.map +1 -0
- package/lib/services/agent/modelRouter.js +57 -0
- package/lib/services/agent/musicSelect.d.ts +23 -0
- package/lib/services/agent/musicSelect.d.ts.map +1 -0
- package/lib/services/agent/musicSelect.js +65 -0
- package/lib/services/agent/personas.d.ts +60 -0
- package/lib/services/agent/personas.d.ts.map +1 -0
- package/lib/services/agent/personas.js +156 -0
- package/lib/services/agent/planner.d.ts +56 -0
- package/lib/services/agent/planner.d.ts.map +1 -0
- package/lib/services/agent/planner.js +237 -0
- package/lib/services/agent/toolRegistry.d.ts +64 -0
- package/lib/services/agent/toolRegistry.d.ts.map +1 -0
- package/lib/services/agent/toolRegistry.js +78 -0
- package/lib/services/agent/tools/analyzeReference.tool.d.ts +36 -0
- package/lib/services/agent/tools/analyzeReference.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/analyzeReference.tool.js +44 -0
- package/lib/services/agent/tools/animateImage.tool.d.ts +23 -0
- package/lib/services/agent/tools/animateImage.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/animateImage.tool.js +58 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts +30 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/animateImageWithMotionBrush.tool.js +90 -0
- package/lib/services/agent/tools/composeScene.tool.d.ts +948 -0
- package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/composeScene.tool.js +90 -0
- package/lib/services/agent/tools/estimateCost.tool.d.ts +342 -0
- package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/estimateCost.tool.js +62 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +32 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateAvatarVideo.tool.js +112 -0
- package/lib/services/agent/tools/generateImage.tool.d.ts +28 -0
- package/lib/services/agent/tools/generateImage.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateImage.tool.js +97 -0
- package/lib/services/agent/tools/generateVideo.tool.d.ts +30 -0
- package/lib/services/agent/tools/generateVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateVideo.tool.js +84 -0
- package/lib/services/agent/tools/generateVoiceover.tool.d.ts +18 -0
- package/lib/services/agent/tools/generateVoiceover.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/generateVoiceover.tool.js +72 -0
- package/lib/services/agent/tools/index.d.ts +19 -0
- package/lib/services/agent/tools/index.d.ts.map +1 -0
- package/lib/services/agent/tools/index.js +34 -0
- package/lib/services/agent/tools/planVideo.tool.d.ts +191 -0
- package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/planVideo.tool.js +46 -0
- package/lib/services/agent/tools/render.tool.d.ts +357 -0
- package/lib/services/agent/tools/render.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/render.tool.js +48 -0
- package/lib/services/agent/tools/searchMusic.tool.d.ts +49 -0
- package/lib/services/agent/tools/searchMusic.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchMusic.tool.js +74 -0
- package/lib/services/agent/tools/searchStock.tool.d.ts +37 -0
- package/lib/services/agent/tools/searchStock.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchStock.tool.js +101 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +59 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.d.ts.map +1 -0
- package/lib/services/agent/tools/searchUserLibrary.tool.js +58 -0
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts +31 -0
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/cameraControl.types.js +2 -0
- package/lib/services/aiGen/canonicalAdapters/index.d.ts +3 -0
- package/lib/services/aiGen/canonicalAdapters/index.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/index.js +18 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts +23 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts.map +1 -0
- package/lib/services/aiGen/canonicalAdapters/multiShot.types.js +12 -0
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts +18 -0
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.js +100 -0
- package/lib/services/aiGen/providers/fal/falImage.service.d.ts +9 -0
- package/lib/services/aiGen/providers/fal/falImage.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/fal/falImage.service.js +102 -0
- package/lib/services/aiGen/providers/fal/index.d.ts +2 -0
- package/lib/services/aiGen/providers/fal/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/fal/index.js +17 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts +4 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts.map +1 -0
- package/lib/services/aiGen/providers/kling/cameraAdapter.js +53 -0
- package/lib/services/aiGen/providers/pexels/index.d.ts +2 -0
- package/lib/services/aiGen/providers/pexels/index.d.ts.map +1 -0
- package/lib/services/aiGen/providers/pexels/index.js +17 -0
- package/lib/services/aiGen/providers/pexels/pexels.service.d.ts +11 -0
- package/lib/services/aiGen/providers/pexels/pexels.service.d.ts.map +1 -0
- package/lib/services/aiGen/providers/pexels/pexels.service.js +118 -0
- package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts +3 -0
- package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts.map +1 -0
- package/lib/services/aiGen/providers/runway/cameraAdapter.js +46 -0
- package/lib/services/analytics.service.d.ts +10 -0
- package/lib/services/analytics.service.d.ts.map +1 -1
- package/lib/services/analytics.service.js +27 -0
- package/lib/services/asr/assemblyai.service.d.ts +72 -0
- package/lib/services/asr/assemblyai.service.d.ts.map +1 -0
- package/lib/services/asr/assemblyai.service.js +89 -0
- package/lib/services/asr/index.d.ts +2 -0
- package/lib/services/asr/index.d.ts.map +1 -0
- package/lib/services/asr/index.js +17 -0
- package/lib/services/assetCache.service.d.ts +54 -0
- package/lib/services/assetCache.service.d.ts.map +1 -0
- package/lib/services/assetCache.service.js +96 -0
- package/lib/services/audioAnalysis/index.d.ts +2 -0
- package/lib/services/audioAnalysis/index.d.ts.map +1 -0
- package/lib/services/audioAnalysis/index.js +17 -0
- package/lib/services/audioAnalysis/onsetDetection.service.d.ts +50 -0
- package/lib/services/audioAnalysis/onsetDetection.service.d.ts.map +1 -0
- package/lib/services/audioAnalysis/onsetDetection.service.js +136 -0
- package/lib/services/editor/designToProject.d.ts +60 -0
- package/lib/services/editor/designToProject.d.ts.map +1 -0
- package/lib/services/editor/designToProject.js +194 -0
- package/lib/services/musicGen/index.d.ts +6 -0
- package/lib/services/musicGen/index.d.ts.map +1 -0
- package/lib/services/musicGen/index.js +26 -0
- package/lib/services/musicGen/musicSearchFactory.service.d.ts +14 -0
- package/lib/services/musicGen/musicSearchFactory.service.d.ts.map +1 -0
- package/lib/services/musicGen/musicSearchFactory.service.js +59 -0
- package/lib/services/musicGen/providers/curated.service.d.ts +22 -0
- package/lib/services/musicGen/providers/curated.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/curated.service.js +171 -0
- package/lib/services/musicGen/providers/jamendo.service.d.ts +8 -0
- package/lib/services/musicGen/providers/jamendo.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/jamendo.service.js +93 -0
- package/lib/services/musicGen/providers/mubert.service.d.ts +9 -0
- package/lib/services/musicGen/providers/mubert.service.d.ts.map +1 -0
- package/lib/services/musicGen/providers/mubert.service.js +113 -0
- package/lib/services/musicGen/types.d.ts +42 -0
- package/lib/services/musicGen/types.d.ts.map +1 -0
- package/lib/services/musicGen/types.js +10 -0
- package/lib/services/tts/providers/minimax.service.d.ts +14 -0
- package/lib/services/tts/providers/minimax.service.d.ts.map +1 -0
- package/lib/services/tts/providers/minimax.service.js +78 -0
- package/lib/services/tts/providers/openai.service.d.ts +14 -0
- package/lib/services/tts/providers/openai.service.d.ts.map +1 -0
- package/lib/services/tts/providers/openai.service.js +71 -0
- package/lib/utils/helpers.d.ts +1 -0
- package/lib/utils/helpers.d.ts.map +1 -1
- package/lib/utils/helpers.js +26 -12
- package/package.json +1 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ToolDefinition } from "../toolRegistry";
|
|
3
|
+
/**
|
|
4
|
+
* Per-user asset library search — massive cost saver and consistency boost
|
|
5
|
+
* for serial creators. Looks across previously generated images, voiceovers,
|
|
6
|
+
* stock pulls, and uploads owned by the requesting user.
|
|
7
|
+
*
|
|
8
|
+
* The actual library backing (Firestore + GCS index, vector embeddings for
|
|
9
|
+
* semantic search) is host-side; tool layer accepts an injected searcher.
|
|
10
|
+
*/
|
|
11
|
+
export interface UserLibraryAsset {
|
|
12
|
+
id: string;
|
|
13
|
+
kind: "image" | "video" | "audio" | "stock-image" | "stock-video";
|
|
14
|
+
url: string;
|
|
15
|
+
prompt?: string;
|
|
16
|
+
width?: number;
|
|
17
|
+
height?: number;
|
|
18
|
+
durationMs?: number;
|
|
19
|
+
createdAt: string;
|
|
20
|
+
}
|
|
21
|
+
export type UserLibrarySearchFn = (params: {
|
|
22
|
+
userId: string;
|
|
23
|
+
query: string;
|
|
24
|
+
kind?: UserLibraryAsset["kind"];
|
|
25
|
+
limit: number;
|
|
26
|
+
}) => Promise<UserLibraryAsset[]>;
|
|
27
|
+
export declare function setUserLibrarySearch(fn: UserLibrarySearchFn): void;
|
|
28
|
+
declare const InputSchema: z.ZodObject<{
|
|
29
|
+
query: z.ZodString;
|
|
30
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
31
|
+
audio: "audio";
|
|
32
|
+
video: "video";
|
|
33
|
+
image: "image";
|
|
34
|
+
"stock-video": "stock-video";
|
|
35
|
+
"stock-image": "stock-image";
|
|
36
|
+
}>>;
|
|
37
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
declare const OutputSchema: z.ZodObject<{
|
|
40
|
+
assets: z.ZodArray<z.ZodObject<{
|
|
41
|
+
id: z.ZodString;
|
|
42
|
+
kind: z.ZodEnum<{
|
|
43
|
+
audio: "audio";
|
|
44
|
+
video: "video";
|
|
45
|
+
image: "image";
|
|
46
|
+
"stock-video": "stock-video";
|
|
47
|
+
"stock-image": "stock-image";
|
|
48
|
+
}>;
|
|
49
|
+
url: z.ZodString;
|
|
50
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
51
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
53
|
+
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
54
|
+
createdAt: z.ZodString;
|
|
55
|
+
}, z.core.$strip>>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
export declare const searchUserLibraryTool: ToolDefinition<typeof InputSchema, typeof OutputSchema>;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=searchUserLibrary.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchUserLibrary.tool.d.ts","sourceRoot":"","sources":["../../../../src/services/agent/tools/searchUserLibrary.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE/D;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,CAAC;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAGlC,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI,CAElE;AAED,QAAA,MAAM,WAAW;;;;;;;;;;iBASf,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;iBAahB,CAAC;AAEH,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,OAAO,WAAW,EAClB,OAAO,YAAY,CA2BpB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.searchUserLibraryTool = void 0;
|
|
4
|
+
exports.setUserLibrarySearch = setUserLibrarySearch;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const toolRegistry_1 = require("../toolRegistry");
|
|
7
|
+
let injectedSearch = null;
|
|
8
|
+
function setUserLibrarySearch(fn) {
|
|
9
|
+
injectedSearch = fn;
|
|
10
|
+
}
|
|
11
|
+
const InputSchema = zod_1.z.object({
|
|
12
|
+
query: zod_1.z
|
|
13
|
+
.string()
|
|
14
|
+
.min(1)
|
|
15
|
+
.describe("Free-text query — semantic match against asset prompts and tags."),
|
|
16
|
+
kind: zod_1.z
|
|
17
|
+
.enum(["image", "video", "audio", "stock-image", "stock-video"])
|
|
18
|
+
.optional(),
|
|
19
|
+
limit: zod_1.z.number().int().min(1).max(20).default(8),
|
|
20
|
+
});
|
|
21
|
+
const OutputSchema = zod_1.z.object({
|
|
22
|
+
assets: zod_1.z.array(zod_1.z.object({
|
|
23
|
+
id: zod_1.z.string(),
|
|
24
|
+
kind: zod_1.z.enum(["image", "video", "audio", "stock-image", "stock-video"]),
|
|
25
|
+
url: zod_1.z.string().url(),
|
|
26
|
+
prompt: zod_1.z.string().optional(),
|
|
27
|
+
width: zod_1.z.number().optional(),
|
|
28
|
+
height: zod_1.z.number().optional(),
|
|
29
|
+
durationMs: zod_1.z.number().optional(),
|
|
30
|
+
createdAt: zod_1.z.string(),
|
|
31
|
+
})),
|
|
32
|
+
});
|
|
33
|
+
exports.searchUserLibraryTool = {
|
|
34
|
+
name: "search_user_library",
|
|
35
|
+
description: [
|
|
36
|
+
"Search the requesting user's previously-generated/uploaded assets before",
|
|
37
|
+
"spending credits to make a new one. Always try this BEFORE generate_image",
|
|
38
|
+
"or search_stock when the brief calls for something the user has likely",
|
|
39
|
+
"produced before (their product photos, recurring characters, brand b-roll).",
|
|
40
|
+
"Returns ranked candidates; the agent picks the best fit by prompt/durationMs/aspect.",
|
|
41
|
+
].join(" "),
|
|
42
|
+
inputSchema: InputSchema,
|
|
43
|
+
outputSchema: OutputSchema,
|
|
44
|
+
idempotent: true,
|
|
45
|
+
handler: async (input, ctx) => {
|
|
46
|
+
if (!injectedSearch) {
|
|
47
|
+
throw new Error("search_user_library: no searcher wired. Host must call setUserLibrarySearch() at boot.");
|
|
48
|
+
}
|
|
49
|
+
const assets = await injectedSearch({
|
|
50
|
+
userId: ctx.userId,
|
|
51
|
+
query: input.query,
|
|
52
|
+
kind: input.kind,
|
|
53
|
+
limit: input.limit,
|
|
54
|
+
});
|
|
55
|
+
return { assets };
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
(0, toolRegistry_1.registerTool)(exports.searchUserLibraryTool);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical camera-control schema. Translated per-provider by adapters that
|
|
3
|
+
* live alongside each provider's service. The set is the union of camera
|
|
4
|
+
* primitives across Kling (typed presets + vector), Runway (named presets +
|
|
5
|
+
* motion intensity), MiniMax Director (in-prompt commands), Seedance (in-prompt),
|
|
6
|
+
* and Pixverse V6 (lens-control prompt vocabulary).
|
|
7
|
+
*
|
|
8
|
+
* Providers that don't expose camera control (Veo, OpenAI, Wan T2V) ignore the
|
|
9
|
+
* field with a logged warning rather than throwing.
|
|
10
|
+
*/
|
|
11
|
+
export type CameraPreset = "static" | "pan_left" | "pan_right" | "tilt_up" | "tilt_down" | "zoom_in" | "zoom_out" | "dolly_in" | "dolly_out" | "orbit_left" | "orbit_right" | "roll_left" | "roll_right" | "tracking" | "handheld" | "push_in" | "pull_out";
|
|
12
|
+
/**
|
|
13
|
+
* Six-axis vector control (mirrors Kling's `camera_control.config` shape).
|
|
14
|
+
* Each axis is in [-10, 10]. Adapters that don't support fine-grained vector
|
|
15
|
+
* control fall back to the closest preset.
|
|
16
|
+
*/
|
|
17
|
+
export interface CameraVector {
|
|
18
|
+
horizontal?: number;
|
|
19
|
+
vertical?: number;
|
|
20
|
+
pan?: number;
|
|
21
|
+
tilt?: number;
|
|
22
|
+
roll?: number;
|
|
23
|
+
zoom?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CameraControl {
|
|
26
|
+
preset?: CameraPreset;
|
|
27
|
+
vector?: CameraVector;
|
|
28
|
+
/** 0..1 — strength of the camera move; provider-mapped. */
|
|
29
|
+
intensity?: number;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=cameraControl.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraControl.types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/canonicalAdapters/cameraControl.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,GACT,WAAW,GACX,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,GACX,YAAY,GACZ,aAAa,GACb,WAAW,GACX,YAAY,GACZ,UAAU,GACV,UAAU,GACV,SAAS,GACT,UAAU,CAAC;AAEf;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/canonicalAdapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./cameraControl.types"), exports);
|
|
18
|
+
__exportStar(require("./multiShot.types"), exports);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical multi-shot schema. Per-provider adapters translate this into:
|
|
3
|
+
* Kling v3.0 → `multi_prompt[]` (per-shot prompts) + companion `shot_type`
|
|
4
|
+
* (v3.0 only — v2.x has no public multi-shot API)
|
|
5
|
+
* Seedance → concatenated prompt with "--- CUT ---" separators
|
|
6
|
+
* Pixverse → `generate_multi_clip_switch=true` + concatenated prompt (≤2 shots)
|
|
7
|
+
* others → throw UnsupportedCapabilityError (gated by IModelSchema.fields.multiShot)
|
|
8
|
+
*/
|
|
9
|
+
export interface Shot {
|
|
10
|
+
prompt: string;
|
|
11
|
+
/** Seconds. Sum of all shot durations should match the request `duration`. */
|
|
12
|
+
duration?: number;
|
|
13
|
+
/** Optional first-frame image for this shot (Kling supports per-shot start frames). */
|
|
14
|
+
startFrame?: string;
|
|
15
|
+
}
|
|
16
|
+
/** 1..6 shots. Providers enforce their own caps in the adapter. */
|
|
17
|
+
export type MultiShot = Shot[];
|
|
18
|
+
export declare class UnsupportedCapabilityError extends Error {
|
|
19
|
+
readonly capability: string;
|
|
20
|
+
readonly modelKey: string;
|
|
21
|
+
constructor(capability: string, modelKey: string);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=multiShot.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiShot.types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/canonicalAdapters/multiShot.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC;AAE/B,qBAAa,0BAA2B,SAAQ,KAAK;aAEjC,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;gBADhB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;CAKnC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnsupportedCapabilityError = void 0;
|
|
4
|
+
class UnsupportedCapabilityError extends Error {
|
|
5
|
+
constructor(capability, modelKey) {
|
|
6
|
+
super(`Capability "${capability}" is not supported by model "${modelKey}".`);
|
|
7
|
+
this.capability = capability;
|
|
8
|
+
this.modelKey = modelKey;
|
|
9
|
+
this.name = "UnsupportedCapabilityError";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.UnsupportedCapabilityError = UnsupportedCapabilityError;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseAiGenProviderService } from "../baseAiGenProvider.service";
|
|
2
|
+
import { CreditUsageParams, SfxGenerationParams, SfxGenerationResult } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* ElevenLabs aiGen provider — currently only sound-effects.
|
|
5
|
+
* (TTS lives in the separate `services/tts/` subsystem.)
|
|
6
|
+
*/
|
|
7
|
+
export declare class ElevenLabsAiGenService extends BaseAiGenProviderService {
|
|
8
|
+
private readonly baseUrl;
|
|
9
|
+
private readonly apiKey;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* ElevenLabs Sound Effects. Sync — POST /v1/sound-generation returns mp3 binary.
|
|
13
|
+
* Body: { text, duration_seconds?, prompt_influence?, loop? }
|
|
14
|
+
*/
|
|
15
|
+
generateSoundEffects(params: SfxGenerationParams): Promise<SfxGenerationResult>;
|
|
16
|
+
getCreditUsed({ modelKey, duration, multiClip }: CreditUsageParams): number;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=elevenlabs.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elevenlabs.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/elevenlabs/elevenlabs.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAGlB;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,wBAAwB;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAWhC;;;OAGG;IACG,oBAAoB,CACxB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAwD/B,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAiB,EAAE,EAAE,iBAAiB,GAAG,MAAM;CAkBpF"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ElevenLabsAiGenService = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const aiModels_1 = require("../../../../globals/aiModels");
|
|
9
|
+
const firebase_1 = require("../../../../libs/firebase");
|
|
10
|
+
const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
|
|
11
|
+
const helpers_1 = require("../../../../utils/helpers");
|
|
12
|
+
/**
|
|
13
|
+
* ElevenLabs aiGen provider — currently only sound-effects.
|
|
14
|
+
* (TTS lives in the separate `services/tts/` subsystem.)
|
|
15
|
+
*/
|
|
16
|
+
class ElevenLabsAiGenService extends baseAiGenProvider_service_1.BaseAiGenProviderService {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this.baseUrl = "https://api.elevenlabs.io/v1";
|
|
20
|
+
const raw = process.env.ELEVENLABS_API_KEY?.trim();
|
|
21
|
+
if (!raw) {
|
|
22
|
+
throw new Error("Missing ELEVENLABS_API_KEY in environment variables");
|
|
23
|
+
}
|
|
24
|
+
this.apiKey = raw;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* ElevenLabs Sound Effects. Sync — POST /v1/sound-generation returns mp3 binary.
|
|
28
|
+
* Body: { text, duration_seconds?, prompt_influence?, loop? }
|
|
29
|
+
*/
|
|
30
|
+
async generateSoundEffects(params) {
|
|
31
|
+
const body = {
|
|
32
|
+
text: params.prompt,
|
|
33
|
+
...(params.durationSec !== undefined
|
|
34
|
+
? { duration_seconds: params.durationSec }
|
|
35
|
+
: {}),
|
|
36
|
+
...(params.promptInfluence !== undefined
|
|
37
|
+
? { prompt_influence: params.promptInfluence }
|
|
38
|
+
: {}),
|
|
39
|
+
...(params.loop !== undefined ? { loop: params.loop } : {}),
|
|
40
|
+
};
|
|
41
|
+
try {
|
|
42
|
+
const resp = await axios_1.default.post(`${this.baseUrl}/sound-generation`, body, {
|
|
43
|
+
headers: {
|
|
44
|
+
"xi-api-key": this.apiKey,
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
Accept: "audio/mpeg",
|
|
47
|
+
},
|
|
48
|
+
responseType: "arraybuffer",
|
|
49
|
+
timeout: 120000,
|
|
50
|
+
});
|
|
51
|
+
const buffer = Buffer.from(resp.data);
|
|
52
|
+
const path = `sfx/elevenlabs/${params.outputFilename}.mp3`;
|
|
53
|
+
const file = (0, firebase_1.getBucket)().file(path);
|
|
54
|
+
await file.save(buffer, { contentType: "audio/mpeg" });
|
|
55
|
+
const [signed] = await file.getSignedUrl({
|
|
56
|
+
action: "read",
|
|
57
|
+
expires: "03-09-2491",
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
audioUrl: signed,
|
|
61
|
+
mimeType: "audio/mpeg",
|
|
62
|
+
extension: "mp3",
|
|
63
|
+
durationSec: params.durationSec,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
if (err.response?.data) {
|
|
68
|
+
let detail = "";
|
|
69
|
+
try {
|
|
70
|
+
const bodyStr = Buffer.from(err.response.data).toString("utf8");
|
|
71
|
+
const parsed = JSON.parse(bodyStr);
|
|
72
|
+
detail = parsed?.detail?.message ?? parsed?.detail ?? bodyStr;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
detail = Buffer.from(err.response.data).toString("utf8");
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`ElevenLabs SFX ${err.response.status}: ${detail} [promptLen=${params.prompt?.length ?? 0}]`);
|
|
78
|
+
}
|
|
79
|
+
throw err;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
getCreditUsed({ modelKey, duration, multiClip = false }) {
|
|
83
|
+
const modelConfig = aiModels_1.aiModelConfigs[modelKey];
|
|
84
|
+
const isSfx = modelConfig?.type?.some((t) => t === "sound-effects");
|
|
85
|
+
if (isSfx && modelConfig?.cost) {
|
|
86
|
+
const perSecond = modelConfig.cost.perSecond;
|
|
87
|
+
const fixed = modelConfig.cost.fixed;
|
|
88
|
+
// Prefer per-second when caller knows the requested duration; otherwise
|
|
89
|
+
// fall back to the worst-case fixed ceiling so we never under-charge.
|
|
90
|
+
const cost = typeof duration === "number" && typeof perSecond === "number"
|
|
91
|
+
? perSecond * duration
|
|
92
|
+
: fixed;
|
|
93
|
+
if (typeof cost === "number") {
|
|
94
|
+
return (0, helpers_1.getCreditsFromCost)(cost, !multiClip);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return (0, helpers_1.getCreditsFromCost)(0.08, !multiClip);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.ElevenLabsAiGenService = ElevenLabsAiGenService;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseAiGenProviderService } from "../baseAiGenProvider.service";
|
|
2
|
+
import { CreditUsageParams, ImageGenerationParams, ImageGenerationResult } from "../types";
|
|
3
|
+
export declare class FalImageProviderService extends BaseAiGenProviderService {
|
|
4
|
+
private readonly apiKey;
|
|
5
|
+
generateImage(params: ImageGenerationParams): Promise<ImageGenerationResult>;
|
|
6
|
+
getCreditUsed(params: CreditUsageParams): number;
|
|
7
|
+
private mapAspectToImageSize;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=falImage.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"falImage.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/fal/falImage.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAkClB,qBAAa,uBAAwB,SAAQ,wBAAwB;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IAEhE,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IA8CjC,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAiBhD,OAAO,CAAC,oBAAoB;CAwB7B"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FalImageProviderService = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
|
|
9
|
+
/**
|
|
10
|
+
* fal.ai image-generation provider.
|
|
11
|
+
*
|
|
12
|
+
* Wraps the synchronous fal subscription API. Supports Flux 1.1 Pro and other
|
|
13
|
+
* fal-hosted image models — the model id is passed via params.modelKey and
|
|
14
|
+
* mapped to the fal endpoint via FAL_MODEL_ENDPOINTS below.
|
|
15
|
+
*
|
|
16
|
+
* NOTE: this is a thin wrapper. Production hardening (retries, structured
|
|
17
|
+
* errors, signed URL refresh, queue mode for slow models) is intentionally
|
|
18
|
+
* deferred until after the agent tool layer is wired and we have eval data.
|
|
19
|
+
*/
|
|
20
|
+
const FAL_MODEL_ENDPOINTS = {
|
|
21
|
+
"fal-flux-1.1-pro": "https://fal.run/fal-ai/flux-pro/v1.1",
|
|
22
|
+
"fal-flux-1.1-pro-ultra": "https://fal.run/fal-ai/flux-pro/v1.1-ultra",
|
|
23
|
+
"fal-flux-schnell": "https://fal.run/fal-ai/flux/schnell",
|
|
24
|
+
};
|
|
25
|
+
class FalImageProviderService extends baseAiGenProvider_service_1.BaseAiGenProviderService {
|
|
26
|
+
constructor() {
|
|
27
|
+
super(...arguments);
|
|
28
|
+
this.apiKey = process.env.FAL_API_KEY;
|
|
29
|
+
}
|
|
30
|
+
async generateImage(params) {
|
|
31
|
+
if (!this.apiKey) {
|
|
32
|
+
throw new Error("FAL_API_KEY not set — fal image provider cannot generate");
|
|
33
|
+
}
|
|
34
|
+
const endpoint = FAL_MODEL_ENDPOINTS[params.modelKey];
|
|
35
|
+
if (!endpoint) {
|
|
36
|
+
throw new Error(`Unknown fal model key: ${params.modelKey}`);
|
|
37
|
+
}
|
|
38
|
+
const payload = {
|
|
39
|
+
prompt: params.prompt,
|
|
40
|
+
image_size: this.mapAspectToImageSize(params.dimensions, params.aspectRatio),
|
|
41
|
+
};
|
|
42
|
+
const headers = {
|
|
43
|
+
Authorization: `Key ${this.apiKey}`,
|
|
44
|
+
"Content-Type": "application/json",
|
|
45
|
+
};
|
|
46
|
+
if (params.idempotencyKey) {
|
|
47
|
+
headers["X-Fal-Idempotency-Key"] = params.idempotencyKey;
|
|
48
|
+
}
|
|
49
|
+
const { data } = await axios_1.default.post(endpoint, payload, {
|
|
50
|
+
headers,
|
|
51
|
+
timeout: 60000,
|
|
52
|
+
});
|
|
53
|
+
const first = data.images?.[0];
|
|
54
|
+
if (!first?.url) {
|
|
55
|
+
throw new Error("fal returned no image");
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
imageUrl: first.url,
|
|
59
|
+
width: first.width,
|
|
60
|
+
height: first.height,
|
|
61
|
+
providerRequestId: data.request_id,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
getCreditUsed(params) {
|
|
65
|
+
// Image-gen models live outside the existing video/text enum tables until
|
|
66
|
+
// the EImageGenModels enum is promoted to a real enum and registered in
|
|
67
|
+
// aiModelConfigs. Until then, key off the raw string.
|
|
68
|
+
const key = params.modelKey;
|
|
69
|
+
switch (key) {
|
|
70
|
+
case "fal-flux-1.1-pro-ultra":
|
|
71
|
+
return 6;
|
|
72
|
+
case "fal-flux-1.1-pro":
|
|
73
|
+
return 4;
|
|
74
|
+
case "fal-flux-schnell":
|
|
75
|
+
return 1;
|
|
76
|
+
default:
|
|
77
|
+
return 4;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
mapAspectToImageSize(dimensions, aspectRatio) {
|
|
81
|
+
if (dimensions) {
|
|
82
|
+
const parts = dimensions.split("x").map((n) => parseInt(n, 10));
|
|
83
|
+
const w = parts[0];
|
|
84
|
+
const h = parts[1];
|
|
85
|
+
if (Number.isFinite(w) && Number.isFinite(h)) {
|
|
86
|
+
return { width: w, height: h };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
switch (aspectRatio) {
|
|
90
|
+
case "9:16":
|
|
91
|
+
return "portrait_16_9";
|
|
92
|
+
case "16:9":
|
|
93
|
+
return "landscape_16_9";
|
|
94
|
+
case "4:5":
|
|
95
|
+
return "portrait_4_3";
|
|
96
|
+
case "1:1":
|
|
97
|
+
default:
|
|
98
|
+
return "square_hd";
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.FalImageProviderService = FalImageProviderService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/fal/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./falImage.service"), exports);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CameraControl as CanonicalCameraControl } from "../../canonicalAdapters/cameraControl.types";
|
|
2
|
+
import type { CameraControl as KlingCameraControl } from "./types";
|
|
3
|
+
export declare function toKlingCameraControl(c: CanonicalCameraControl): KlingCameraControl | undefined;
|
|
4
|
+
//# sourceMappingURL=cameraAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/cameraAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,IAAI,sBAAsB,EAExC,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,IAAI,kBAAkB,EAAc,MAAM,SAAS,CAAC;AAgC/E,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,sBAAsB,GACxB,kBAAkB,GAAG,SAAS,CAsBhC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toKlingCameraControl = toKlingCameraControl;
|
|
4
|
+
/**
|
|
5
|
+
* Map canonical camera presets → Kling's small named-type vocabulary.
|
|
6
|
+
* Kling exposes only 5 named types (down_back, forward_up, right_turn_forward,
|
|
7
|
+
* left_turn_forward, simple); everything else falls through to "simple" + a
|
|
8
|
+
* synthesized vector that approximates the move.
|
|
9
|
+
*/
|
|
10
|
+
const PRESET_TO_KLING_TYPE = {
|
|
11
|
+
pull_out: "down_back",
|
|
12
|
+
push_in: "forward_up",
|
|
13
|
+
orbit_right: "right_turn_forward",
|
|
14
|
+
orbit_left: "left_turn_forward",
|
|
15
|
+
};
|
|
16
|
+
/** Synth a vector for presets that don't have a Kling named type. */
|
|
17
|
+
const PRESET_TO_VECTOR = {
|
|
18
|
+
static: { horizontal: 0, vertical: 0, pan: 0, tilt: 0, roll: 0, zoom: 0 },
|
|
19
|
+
pan_left: { pan: -8 },
|
|
20
|
+
pan_right: { pan: 8 },
|
|
21
|
+
tilt_up: { tilt: 8 },
|
|
22
|
+
tilt_down: { tilt: -8 },
|
|
23
|
+
zoom_in: { zoom: 8 },
|
|
24
|
+
zoom_out: { zoom: -8 },
|
|
25
|
+
dolly_in: { vertical: 8 },
|
|
26
|
+
dolly_out: { vertical: -8 },
|
|
27
|
+
roll_left: { roll: -8 },
|
|
28
|
+
roll_right: { roll: 8 },
|
|
29
|
+
tracking: { horizontal: 6 },
|
|
30
|
+
handheld: { vertical: 2, horizontal: 2 },
|
|
31
|
+
};
|
|
32
|
+
function toKlingCameraControl(c) {
|
|
33
|
+
// Direct vector takes precedence — caller knows what they want.
|
|
34
|
+
if (c.vector) {
|
|
35
|
+
return { type: "simple", config: c.vector };
|
|
36
|
+
}
|
|
37
|
+
if (c.preset) {
|
|
38
|
+
const namedType = PRESET_TO_KLING_TYPE[c.preset];
|
|
39
|
+
if (namedType)
|
|
40
|
+
return { type: namedType };
|
|
41
|
+
const baseVec = PRESET_TO_VECTOR[c.preset];
|
|
42
|
+
if (baseVec) {
|
|
43
|
+
const intensity = Math.max(0, Math.min(1, c.intensity ?? 1));
|
|
44
|
+
const scaled = {};
|
|
45
|
+
for (const [k, v] of Object.entries(baseVec)) {
|
|
46
|
+
if (typeof v === "number")
|
|
47
|
+
scaled[k] = Math.round(v * intensity * 10) / 10;
|
|
48
|
+
}
|
|
49
|
+
return { type: "simple", config: scaled };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/pexels/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./pexels.service"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseAiGenProviderService } from "../baseAiGenProvider.service";
|
|
2
|
+
import { CreditUsageParams, StockSearchParams, StockSearchResult } from "../types";
|
|
3
|
+
export declare class PexelsProviderService extends BaseAiGenProviderService {
|
|
4
|
+
private readonly apiKey;
|
|
5
|
+
searchStock(params: StockSearchParams): Promise<StockSearchResult>;
|
|
6
|
+
/** Free assets — registers as 0 credits regardless of model. */
|
|
7
|
+
getCreditUsed(_params: CreditUsageParams): number;
|
|
8
|
+
private aspectToOrientation;
|
|
9
|
+
private pickBestVideoFile;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=pexels.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pexels.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/pexels/pexels.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAwDlB,qBAAa,qBAAsB,SAAQ,wBAAwB;IACjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkD;IAEnE,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuExE,gEAAgE;IAChE,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM;IAIjD,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,iBAAiB;CAY1B"}
|