@dataclouder/nest-vertex 0.0.45 → 0.0.46
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/comfyui/comfyui.module.js +4 -2
- package/comfyui/controllers/comfy-sdk.controller.d.ts +10 -0
- package/comfyui/controllers/comfy-sdk.controller.js +45 -0
- package/comfyui/models/comfy-sdk.models.d.ts +14 -0
- package/comfyui/models/comfy-sdk.models.js +3 -0
- package/comfyui/models/comfy.models.d.ts +1 -0
- package/comfyui/services/comfy-sdk.service.d.ts +24 -0
- package/comfyui/services/comfy-sdk.service.js +226 -0
- package/comfyui/services/comfy-video.service.js +1 -0
- package/controllers/groq-stt.controller.js +2 -0
- package/controllers/{vertex-veo-video.controller.js → veo-video.controller.js} +1 -1
- package/controllers/vertex-comfy.controller.js +2 -0
- package/controllers/vertex-gemini-chat.controller.js +2 -0
- package/controllers/{vertex-video-adapter.controller.d.ts → video-gen-adapter.controller.d.ts} +6 -3
- package/controllers/{vertex-video-adapter.controller.js → video-gen-adapter.controller.js} +11 -5
- package/nest-vertex.module.js +7 -4
- package/package.json +1 -1
- /package/controllers/{vertex-veo-video.controller.d.ts → veo-video.controller.d.ts} +0 -0
|
@@ -10,6 +10,8 @@ exports.ComfyUIModule = void 0;
|
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const comfy_services_providers_1 = require("./providers/comfy-services.providers");
|
|
12
12
|
const comfy_ui_controller_1 = require("./controllers/comfy-ui.controller");
|
|
13
|
+
const comfy_sdk_controller_1 = require("./controllers/comfy-sdk.controller");
|
|
14
|
+
const comfy_sdk_service_1 = require("./services/comfy-sdk.service");
|
|
13
15
|
const axios_1 = require("@nestjs/axios");
|
|
14
16
|
const nest_storage_1 = require("@dataclouder/nest-storage");
|
|
15
17
|
const mongoose_1 = require("@nestjs/mongoose");
|
|
@@ -27,9 +29,9 @@ exports.ComfyUIModule = ComfyUIModule = __decorate([
|
|
|
27
29
|
mongoose_1.MongooseModule.forFeature([{ name: generated_asset_entity_1.GeneratedAsset.name, schema: generated_asset_entity_1.GeneratedAssetSchema }]),
|
|
28
30
|
nest_mongo_1.DCMongoDBModule,
|
|
29
31
|
],
|
|
30
|
-
providers: [...comfy_services_providers_1.comfyServicesProviders, generated_asset_service_1.GeneratedAssetService],
|
|
32
|
+
providers: [...comfy_services_providers_1.comfyServicesProviders, generated_asset_service_1.GeneratedAssetService, comfy_sdk_service_1.ComfySDKService],
|
|
31
33
|
exports: [...comfy_services_providers_1.comfyServicesProviders],
|
|
32
|
-
controllers: [comfy_ui_controller_1.ComfyUiController],
|
|
34
|
+
controllers: [comfy_ui_controller_1.ComfyUiController, comfy_sdk_controller_1.ComfySDKController],
|
|
33
35
|
})
|
|
34
36
|
], ComfyUIModule);
|
|
35
37
|
//# sourceMappingURL=comfyui.module.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComfySDKService } from '../services/comfy-sdk.service';
|
|
2
|
+
import { StatusResponse } from '../models/comfy-sdk.models';
|
|
3
|
+
export declare class ComfySDKController {
|
|
4
|
+
private readonly comfySDKService;
|
|
5
|
+
constructor(comfySDKService: ComfySDKService);
|
|
6
|
+
testEndpoint(): Promise<{
|
|
7
|
+
status: string;
|
|
8
|
+
}>;
|
|
9
|
+
statusEndpoint(): Promise<StatusResponse>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ComfySDKController = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const comfy_sdk_service_1 = require("../services/comfy-sdk.service");
|
|
15
|
+
let ComfySDKController = class ComfySDKController {
|
|
16
|
+
comfySDKService;
|
|
17
|
+
constructor(comfySDKService) {
|
|
18
|
+
this.comfySDKService = comfySDKService;
|
|
19
|
+
}
|
|
20
|
+
testEndpoint() {
|
|
21
|
+
return this.comfySDKService.testMethod();
|
|
22
|
+
}
|
|
23
|
+
async statusEndpoint() {
|
|
24
|
+
const status = await this.comfySDKService.getStatus();
|
|
25
|
+
return status;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.ComfySDKController = ComfySDKController;
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, common_1.Get)('test'),
|
|
31
|
+
__metadata("design:type", Function),
|
|
32
|
+
__metadata("design:paramtypes", []),
|
|
33
|
+
__metadata("design:returntype", void 0)
|
|
34
|
+
], ComfySDKController.prototype, "testEndpoint", null);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, common_1.Get)('status'),
|
|
37
|
+
__metadata("design:type", Function),
|
|
38
|
+
__metadata("design:paramtypes", []),
|
|
39
|
+
__metadata("design:returntype", Promise)
|
|
40
|
+
], ComfySDKController.prototype, "statusEndpoint", null);
|
|
41
|
+
exports.ComfySDKController = ComfySDKController = __decorate([
|
|
42
|
+
(0, common_1.Controller)('api/comfy-sdk'),
|
|
43
|
+
__metadata("design:paramtypes", [comfy_sdk_service_1.ComfySDKService])
|
|
44
|
+
], ComfySDKController);
|
|
45
|
+
//# sourceMappingURL=comfy-sdk.controller.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StatusResponse } from '../models/comfy-sdk.models';
|
|
2
|
+
import { GeneratedAssetService } from '../../services/generated-asset.service';
|
|
3
|
+
import { HttpService } from '@nestjs/axios';
|
|
4
|
+
import { VideoGenRequest } from '../models/comfy.models';
|
|
5
|
+
import { CloudStorageService } from '@dataclouder/nest-storage';
|
|
6
|
+
export declare class ComfySDKService {
|
|
7
|
+
private readonly generatedAssetService;
|
|
8
|
+
private readonly httpService;
|
|
9
|
+
private readonly cloudStorageService;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
private outputDirectory;
|
|
12
|
+
private api;
|
|
13
|
+
constructor(generatedAssetService: GeneratedAssetService, httpService: HttpService, cloudStorageService: CloudStorageService);
|
|
14
|
+
private init;
|
|
15
|
+
testMethod(): Promise<{
|
|
16
|
+
status: string;
|
|
17
|
+
}>;
|
|
18
|
+
getStatus(): Promise<StatusResponse>;
|
|
19
|
+
runVideoGenerationForAssetId(assetId: string, metadata?: any): Promise<import("../..").GeneratedAssetDocument | {
|
|
20
|
+
status: string;
|
|
21
|
+
message: string;
|
|
22
|
+
}>;
|
|
23
|
+
runVideoGenerationFromWorkflow(videoRequest: VideoGenRequest, assetId?: string): Promise<any>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var ComfySDKService_1;
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.ComfySDKService = void 0;
|
|
47
|
+
const common_1 = require("@nestjs/common");
|
|
48
|
+
const comfyui_sdk_1 = require("@saintno/comfyui-sdk");
|
|
49
|
+
const generated_asset_service_1 = require("../../services/generated-asset.service");
|
|
50
|
+
const axios_1 = require("@nestjs/axios");
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const fs = __importStar(require("fs/promises"));
|
|
53
|
+
const nest_storage_1 = require("@dataclouder/nest-storage");
|
|
54
|
+
let ComfySDKService = ComfySDKService_1 = class ComfySDKService {
|
|
55
|
+
generatedAssetService;
|
|
56
|
+
httpService;
|
|
57
|
+
cloudStorageService;
|
|
58
|
+
logger = new common_1.Logger(ComfySDKService_1.name);
|
|
59
|
+
outputDirectory = './comfyui_generated_images';
|
|
60
|
+
api;
|
|
61
|
+
constructor(generatedAssetService, httpService, cloudStorageService) {
|
|
62
|
+
this.generatedAssetService = generatedAssetService;
|
|
63
|
+
this.httpService = httpService;
|
|
64
|
+
this.cloudStorageService = cloudStorageService;
|
|
65
|
+
this.api = new comfyui_sdk_1.ComfyApi('http://192.168.2.224:8188').init();
|
|
66
|
+
console.log('what is in the comfy api?', this.api.apiHost);
|
|
67
|
+
}
|
|
68
|
+
init() {
|
|
69
|
+
}
|
|
70
|
+
async testMethod() {
|
|
71
|
+
this.logger.log('testMethod called');
|
|
72
|
+
const queue = await this.api.getQueue();
|
|
73
|
+
const settings = await this.api.getSettings();
|
|
74
|
+
const stats = await this.api.getSystemStats();
|
|
75
|
+
const pullStatus = await this.api.pollStatus();
|
|
76
|
+
const user = await this.api.getUserConfig();
|
|
77
|
+
console.log('what is in the comfy api?', queue, settings, stats);
|
|
78
|
+
console.log('user', user);
|
|
79
|
+
return { status: 'ok' };
|
|
80
|
+
}
|
|
81
|
+
async getStatus() {
|
|
82
|
+
const stats = await this.api.getSystemStats();
|
|
83
|
+
const devices = stats.devices.map(device => {
|
|
84
|
+
const match = device.name.match(/RTX\s(\d{4})/);
|
|
85
|
+
const model = match ? match[0] : device.name;
|
|
86
|
+
const freeVram = Number(Number(device.vram_free / 1073741824).toFixed(2));
|
|
87
|
+
const totalVram = Number(Number(device.vram_total / 1073741824).toFixed(2));
|
|
88
|
+
return {
|
|
89
|
+
device: model,
|
|
90
|
+
memory: {
|
|
91
|
+
used: totalVram - freeVram,
|
|
92
|
+
free: freeVram,
|
|
93
|
+
total: totalVram,
|
|
94
|
+
},
|
|
95
|
+
so: 'linux hardcoded',
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
console.log('Sending Stats');
|
|
99
|
+
return { status: 'ok', numAvailable: devices.length, servers: devices };
|
|
100
|
+
}
|
|
101
|
+
async runVideoGenerationForAssetId(assetId, metadata = null) {
|
|
102
|
+
try {
|
|
103
|
+
const stats = await this.api.getSystemStats();
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
this.logger.error('Error in runVideoGenerationForAssetId endpoint:', error);
|
|
107
|
+
return { status: 'error', message: 'There is not Comfy server running or is not accessible.' };
|
|
108
|
+
}
|
|
109
|
+
console.log('Running video generation for asset ID:', assetId);
|
|
110
|
+
const genAsset = await this.generatedAssetService.findOne(assetId);
|
|
111
|
+
this.logger.verbose(`Generating video for asset ${assetId} with url ${genAsset.assets.firstFrame.url} and metadata ${JSON.stringify(genAsset.request)}`);
|
|
112
|
+
if (metadata) {
|
|
113
|
+
console.log('Updating asset metadata for future retrieval:', metadata);
|
|
114
|
+
await this.generatedAssetService.partialUpdate(assetId, metadata);
|
|
115
|
+
}
|
|
116
|
+
if (!genAsset || !genAsset.assets?.firstFrame?.url) {
|
|
117
|
+
throw new common_1.NotFoundException(`Asset with id ${assetId} not found or does not have a valid image url.`);
|
|
118
|
+
}
|
|
119
|
+
const imageUrl = genAsset.assets.firstFrame.url;
|
|
120
|
+
const response = await this.httpService.axiosRef.get(imageUrl, { responseType: 'arraybuffer' });
|
|
121
|
+
const imageBuffer = Buffer.from(response.data, 'binary');
|
|
122
|
+
const videoRequest = {
|
|
123
|
+
workflowPath: path.join(process.cwd(), 'comfy_workflows', 'video-15_seconds.json'),
|
|
124
|
+
inputImage: imageBuffer,
|
|
125
|
+
positivePrompt: genAsset.prompt || genAsset?.description || 'Random movement for video',
|
|
126
|
+
negativePrompt: 'low quality, blurry, static',
|
|
127
|
+
width: genAsset.request?.width || null,
|
|
128
|
+
height: genAsset.request?.height || null,
|
|
129
|
+
seconds: genAsset.request?.seconds || null,
|
|
130
|
+
};
|
|
131
|
+
try {
|
|
132
|
+
const result = await this.runVideoGenerationFromWorkflow(videoRequest, assetId);
|
|
133
|
+
this.logger.log(`Video generation for asset ${assetId} completed successfully.`, result);
|
|
134
|
+
return await this.generatedAssetService.findOne(assetId);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
this.logger.error(`Video generation for asset ${assetId} failed.`, error);
|
|
138
|
+
await this.generatedAssetService.partialUpdate(assetId, { status: 'failed' });
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async runVideoGenerationFromWorkflow(videoRequest, assetId) {
|
|
143
|
+
return new Promise(async (resolve, reject) => {
|
|
144
|
+
const { inputImage, positivePrompt, negativePrompt, width, height, seconds } = videoRequest;
|
|
145
|
+
const workflowPath = path.join(process.cwd(), 'comfy_workflows', 'video-15_seconds.json');
|
|
146
|
+
let videoWorkflowJson;
|
|
147
|
+
try {
|
|
148
|
+
const workflowData = await fs.readFile(workflowPath, 'utf-8');
|
|
149
|
+
videoWorkflowJson = JSON.parse(workflowData);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
this.logger.error(`Failed to read or parse workflow file at ${workflowPath}`, error);
|
|
153
|
+
return reject(new Error('Could not load the video generation workflow.'));
|
|
154
|
+
}
|
|
155
|
+
const inputKeys = ['positive', 'negative', 'image', 'width', 'height', 'seconds'];
|
|
156
|
+
const outputKeys = ['video'];
|
|
157
|
+
const workflow = new comfyui_sdk_1.PromptBuilder(videoWorkflowJson, inputKeys, outputKeys)
|
|
158
|
+
.setInputNode('positive', '6.inputs.text')
|
|
159
|
+
.setInputNode('negative', '7.inputs.text')
|
|
160
|
+
.setInputNode('image', '62.inputs.image')
|
|
161
|
+
.setInputNode('width', '84.inputs.width')
|
|
162
|
+
.setInputNode('height', '84.inputs.height')
|
|
163
|
+
.setInputNode('seconds', '63.inputs.length')
|
|
164
|
+
.setOutputNode('video', '90');
|
|
165
|
+
const uploadedImage = await this.api.uploadImage(inputImage, 'input_image.jpg');
|
|
166
|
+
if (!uploadedImage) {
|
|
167
|
+
this.logger.error('Image upload failed.');
|
|
168
|
+
return reject(new Error('Image upload failed.'));
|
|
169
|
+
}
|
|
170
|
+
workflow
|
|
171
|
+
.input('positive', positivePrompt)
|
|
172
|
+
.input('negative', negativePrompt)
|
|
173
|
+
.input('image', uploadedImage.info.filename)
|
|
174
|
+
.input('width', width || 512)
|
|
175
|
+
.input('height', height || 512)
|
|
176
|
+
.input('seconds', (seconds || 15) * 16 + 1);
|
|
177
|
+
new comfyui_sdk_1.CallWrapper(this.api, workflow)
|
|
178
|
+
.onFinished(async (data) => {
|
|
179
|
+
this.logger.log('Workflow finished:', data);
|
|
180
|
+
if (assetId && data.video?.gifs?.[0]) {
|
|
181
|
+
const videoInfo = data.video.gifs[0];
|
|
182
|
+
const videoBlob = await this.api.getImage(videoInfo);
|
|
183
|
+
const videoBuffer = Buffer.from(await videoBlob.arrayBuffer());
|
|
184
|
+
if (videoBuffer) {
|
|
185
|
+
const storageFolder = videoRequest?.storagePath || `generated-videos`;
|
|
186
|
+
const storageFinalPath = `${storageFolder}/${assetId}.mp4`;
|
|
187
|
+
console.log('Saving video to storage path:', storageFinalPath);
|
|
188
|
+
const uploadResult = await this.cloudStorageService.uploadFileAndMakePublic(process.env.STORAGE_BUCKET || '', storageFinalPath, videoBuffer, 'video/mp4');
|
|
189
|
+
this.logger.log(`Successfully uploaded video to: ${uploadResult.url}`);
|
|
190
|
+
await this.generatedAssetService.partialUpdate(assetId, {
|
|
191
|
+
url: uploadResult.url,
|
|
192
|
+
result: uploadResult,
|
|
193
|
+
status: 'completed',
|
|
194
|
+
assets: {
|
|
195
|
+
video: {
|
|
196
|
+
url: uploadResult.url,
|
|
197
|
+
...videoInfo,
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
resolve(data);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
reject(new Error('Video buffer is empty.'));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
reject(new Error('Asset ID or video data is missing.'));
|
|
209
|
+
}
|
|
210
|
+
})
|
|
211
|
+
.onFailed(err => {
|
|
212
|
+
this.logger.error('Workflow failed:', err);
|
|
213
|
+
reject(err);
|
|
214
|
+
})
|
|
215
|
+
.run();
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
exports.ComfySDKService = ComfySDKService;
|
|
220
|
+
exports.ComfySDKService = ComfySDKService = ComfySDKService_1 = __decorate([
|
|
221
|
+
(0, common_1.Injectable)(),
|
|
222
|
+
__metadata("design:paramtypes", [generated_asset_service_1.GeneratedAssetService,
|
|
223
|
+
axios_1.HttpService,
|
|
224
|
+
nest_storage_1.CloudStorageService])
|
|
225
|
+
], ComfySDKService);
|
|
226
|
+
//# sourceMappingURL=comfy-sdk.service.js.map
|
|
@@ -91,6 +91,7 @@ let ComfyVideoService = ComfyVideoService_1 = class ComfyVideoService {
|
|
|
91
91
|
return response;
|
|
92
92
|
}
|
|
93
93
|
async runVideoGenerationForAssetId(assetId, metadata = null) {
|
|
94
|
+
console.log('Running video generation for asset ID:', assetId);
|
|
94
95
|
const genAsset = await this.generatedAssetService.findOne(assetId);
|
|
95
96
|
if (metadata) {
|
|
96
97
|
console.log('Updating asset metadata for future retrieval:', metadata);
|
|
@@ -18,6 +18,7 @@ const common_1 = require("@nestjs/common");
|
|
|
18
18
|
const nest_fastify_file_upload_1 = require("@webundsoehne/nest-fastify-file-upload");
|
|
19
19
|
const swagger_1 = require("@nestjs/swagger");
|
|
20
20
|
const groq_service_1 = require("../services/whisper/groq.service");
|
|
21
|
+
const nest_core_1 = require("@dataclouder/nest-core");
|
|
21
22
|
let GroqSttController = GroqSttController_1 = class GroqSttController {
|
|
22
23
|
groqService;
|
|
23
24
|
logger = new common_1.Logger(GroqSttController_1.name);
|
|
@@ -55,6 +56,7 @@ __decorate([
|
|
|
55
56
|
exports.GroqSttController = GroqSttController = GroqSttController_1 = __decorate([
|
|
56
57
|
(0, swagger_1.ApiTags)('Speech-to-Text'),
|
|
57
58
|
(0, common_1.Controller)('api/groq-stt'),
|
|
59
|
+
(0, common_1.UseFilters)(nest_core_1.AllExceptionsHandler),
|
|
58
60
|
__metadata("design:paramtypes", [groq_service_1.GroqService])
|
|
59
61
|
], GroqSttController);
|
|
60
62
|
//# sourceMappingURL=groq-stt.controller.js.map
|
|
@@ -44,4 +44,4 @@ exports.VertexVeoGenerationController = VertexVeoGenerationController = VertexVe
|
|
|
44
44
|
(0, common_1.Controller)('api/vertex-veo/video'),
|
|
45
45
|
__metadata("design:paramtypes", [vertex_veo_genai_service_1.VertexVeoGenaiService])
|
|
46
46
|
], VertexVeoGenerationController);
|
|
47
|
-
//# sourceMappingURL=
|
|
47
|
+
//# sourceMappingURL=veo-video.controller.js.map
|
|
@@ -21,6 +21,7 @@ const comfy_status_dto_1 = require("../dto/comfy-status.dto");
|
|
|
21
21
|
const comfy_image_service_1 = require("../comfyui/services/comfy-image.service");
|
|
22
22
|
const comfy_video_service_1 = require("../comfyui/services/comfy-video.service");
|
|
23
23
|
const comfy_models_1 = require("../comfyui/models/comfy.models");
|
|
24
|
+
const nest_core_1 = require("@dataclouder/nest-core");
|
|
24
25
|
let VertexComfyController = VertexComfyController_1 = class VertexComfyController {
|
|
25
26
|
comfyImageService;
|
|
26
27
|
comfyVideoService;
|
|
@@ -106,6 +107,7 @@ __decorate([
|
|
|
106
107
|
exports.VertexComfyController = VertexComfyController = VertexComfyController_1 = __decorate([
|
|
107
108
|
(0, swagger_1.ApiTags)('Vertex AI'),
|
|
108
109
|
(0, common_1.Controller)('api/vertex-comfy'),
|
|
110
|
+
(0, common_1.UseFilters)(nest_core_1.AllExceptionsHandler),
|
|
109
111
|
__metadata("design:paramtypes", [comfy_image_service_1.ComfyImageService,
|
|
110
112
|
comfy_video_service_1.ComfyVideoService,
|
|
111
113
|
generated_asset_service_1.GeneratedAssetService])
|
|
@@ -18,6 +18,7 @@ const common_1 = require("@nestjs/common");
|
|
|
18
18
|
const vertex_gemini_chat_service_1 = require("../services/vertex-gemini-chat.service");
|
|
19
19
|
const swagger_1 = require("@nestjs/swagger");
|
|
20
20
|
const generate_text_dto_1 = require("../dto/generate-text.dto");
|
|
21
|
+
const nest_core_1 = require("@dataclouder/nest-core");
|
|
21
22
|
let GeminiChatController = GeminiChatController_1 = class GeminiChatController {
|
|
22
23
|
geminiChatService;
|
|
23
24
|
logger = new common_1.Logger(GeminiChatController_1.name);
|
|
@@ -47,6 +48,7 @@ __decorate([
|
|
|
47
48
|
exports.GeminiChatController = GeminiChatController = GeminiChatController_1 = __decorate([
|
|
48
49
|
(0, swagger_1.ApiTags)('LLM Gemini '),
|
|
49
50
|
(0, common_1.Controller)('api/ai-services/gemini'),
|
|
51
|
+
(0, common_1.UseFilters)(nest_core_1.AllExceptionsHandler),
|
|
50
52
|
__metadata("design:paramtypes", [vertex_gemini_chat_service_1.GeminiChatService])
|
|
51
53
|
], GeminiChatController);
|
|
52
54
|
//# sourceMappingURL=vertex-gemini-chat.controller.js.map
|
package/controllers/{vertex-video-adapter.controller.d.ts → video-gen-adapter.controller.d.ts}
RENAMED
|
@@ -7,21 +7,24 @@ import { GeneratedAsset } from '../models/generated-asset.entity';
|
|
|
7
7
|
import { GeneratedAssetService } from '../services/generated-asset.service';
|
|
8
8
|
import { ComfyVideoService } from '../comfyui/services/comfy-video.service';
|
|
9
9
|
import { VertexVeoGenaiService } from '../services/vertex-veo-genai.service';
|
|
10
|
+
import { ComfySDKService } from '../comfyui/services/comfy-sdk.service';
|
|
10
11
|
export declare class VertexVideoImageAdapterController {
|
|
11
12
|
private readonly vertexImageVideoService;
|
|
12
13
|
private readonly vertexVeoGcpService;
|
|
13
14
|
private readonly generatedAssetService;
|
|
14
15
|
private readonly comfyVideoService;
|
|
15
16
|
private readonly vertexVeoGenaiService;
|
|
17
|
+
private readonly comfySDKService;
|
|
16
18
|
private readonly logger;
|
|
17
|
-
constructor(vertexImageVideoService: VertexImageVideoService, vertexVeoGcpService: VertexVeoGcpService, generatedAssetService: GeneratedAssetService, comfyVideoService: ComfyVideoService, vertexVeoGenaiService: VertexVeoGenaiService);
|
|
19
|
+
constructor(vertexImageVideoService: VertexImageVideoService, vertexVeoGcpService: VertexVeoGcpService, generatedAssetService: GeneratedAssetService, comfyVideoService: ComfyVideoService, vertexVeoGenaiService: VertexVeoGenaiService, comfySDKService: ComfySDKService);
|
|
18
20
|
listModels(provider?: string): Promise<{
|
|
19
21
|
name: string;
|
|
20
22
|
id: string;
|
|
21
23
|
}[] | undefined>;
|
|
22
24
|
generateVideo(generateVideoDto: GenerateVideoDto, provider?: string): Promise<any>;
|
|
23
|
-
generateVideoFromAsset(id: string): Promise<{
|
|
24
|
-
|
|
25
|
+
generateVideoFromAsset(id: string): Promise<import("../models/generated-asset.entity").GeneratedAssetDocument | {
|
|
26
|
+
status: string;
|
|
27
|
+
message: string;
|
|
25
28
|
} | null>;
|
|
26
29
|
listModelsVertex(): Promise<any>;
|
|
27
30
|
testVideo(): Promise<any>;
|
|
@@ -23,19 +23,23 @@ const swagger_1 = require("@nestjs/swagger");
|
|
|
23
23
|
const generated_asset_service_1 = require("../services/generated-asset.service");
|
|
24
24
|
const comfy_video_service_1 = require("../comfyui/services/comfy-video.service");
|
|
25
25
|
const vertex_veo_genai_service_1 = require("../services/vertex-veo-genai.service");
|
|
26
|
+
const comfy_sdk_service_1 = require("../comfyui/services/comfy-sdk.service");
|
|
27
|
+
const nest_core_1 = require("@dataclouder/nest-core");
|
|
26
28
|
let VertexVideoImageAdapterController = VertexVideoImageAdapterController_1 = class VertexVideoImageAdapterController {
|
|
27
29
|
vertexImageVideoService;
|
|
28
30
|
vertexVeoGcpService;
|
|
29
31
|
generatedAssetService;
|
|
30
32
|
comfyVideoService;
|
|
31
33
|
vertexVeoGenaiService;
|
|
34
|
+
comfySDKService;
|
|
32
35
|
logger = new common_1.Logger(VertexVideoImageAdapterController_1.name);
|
|
33
|
-
constructor(vertexImageVideoService, vertexVeoGcpService, generatedAssetService, comfyVideoService, vertexVeoGenaiService) {
|
|
36
|
+
constructor(vertexImageVideoService, vertexVeoGcpService, generatedAssetService, comfyVideoService, vertexVeoGenaiService, comfySDKService) {
|
|
34
37
|
this.vertexImageVideoService = vertexImageVideoService;
|
|
35
38
|
this.vertexVeoGcpService = vertexVeoGcpService;
|
|
36
39
|
this.generatedAssetService = generatedAssetService;
|
|
37
40
|
this.comfyVideoService = comfyVideoService;
|
|
38
41
|
this.vertexVeoGenaiService = vertexVeoGenaiService;
|
|
42
|
+
this.comfySDKService = comfySDKService;
|
|
39
43
|
}
|
|
40
44
|
async listModels(provider) {
|
|
41
45
|
this.logger.log(`List models with provider: ${provider}`);
|
|
@@ -62,10 +66,10 @@ let VertexVideoImageAdapterController = VertexVideoImageAdapterController_1 = cl
|
|
|
62
66
|
try {
|
|
63
67
|
const asset = await this.generatedAssetService.findOne(id);
|
|
64
68
|
if (!asset || !asset.assets?.firstFrame?.url) {
|
|
65
|
-
throw new common_1.NotFoundException(`Asset with id ${id}
|
|
69
|
+
throw new common_1.NotFoundException(`Asset with id ${id} Does not have FIRST FRAME image url.`);
|
|
66
70
|
}
|
|
67
71
|
if (asset.provider === 'comfy') {
|
|
68
|
-
const videoResponse = await this.
|
|
72
|
+
const videoResponse = await this.comfySDKService.runVideoGenerationForAssetId(id);
|
|
69
73
|
this.logger.log(`ComfyUI video generation started. Response: ${JSON.stringify(videoResponse)}`);
|
|
70
74
|
return videoResponse;
|
|
71
75
|
}
|
|
@@ -200,10 +204,12 @@ __decorate([
|
|
|
200
204
|
exports.VertexVideoImageAdapterController = VertexVideoImageAdapterController = VertexVideoImageAdapterController_1 = __decorate([
|
|
201
205
|
(0, swagger_1.ApiTags)('Vertex Image/video Adapter'),
|
|
202
206
|
(0, common_1.Controller)('api/vertex-adapter/video'),
|
|
207
|
+
(0, common_1.UseFilters)(nest_core_1.AllExceptionsHandler),
|
|
203
208
|
__metadata("design:paramtypes", [vertex_image_video_service_1.VertexImageVideoService,
|
|
204
209
|
vertex_veo_gcp_service_1.VertexVeoGcpService,
|
|
205
210
|
generated_asset_service_1.GeneratedAssetService,
|
|
206
211
|
comfy_video_service_1.ComfyVideoService,
|
|
207
|
-
vertex_veo_genai_service_1.VertexVeoGenaiService
|
|
212
|
+
vertex_veo_genai_service_1.VertexVeoGenaiService,
|
|
213
|
+
comfy_sdk_service_1.ComfySDKService])
|
|
208
214
|
], VertexVideoImageAdapterController);
|
|
209
|
-
//# sourceMappingURL=
|
|
215
|
+
//# sourceMappingURL=video-gen-adapter.controller.js.map
|
package/nest-vertex.module.js
CHANGED
|
@@ -19,7 +19,7 @@ const ai_sdk_chat_service_1 = require("./services/ai-sdk-chat.service");
|
|
|
19
19
|
const adapter_llm_service_1 = require("./services/adapter-llm.service");
|
|
20
20
|
const adapter_image_gen_service_1 = require("./services/adapter-image-gen.service");
|
|
21
21
|
const adapter_audio_gen_service_1 = require("./services/adapter-audio-gen.service");
|
|
22
|
-
const
|
|
22
|
+
const video_gen_adapter_controller_1 = require("./controllers/video-gen-adapter.controller");
|
|
23
23
|
const vertex_llm_adapter_controller_1 = require("./controllers/vertex-llm-adapter.controller");
|
|
24
24
|
const vertex_veo_gcp_service_1 = require("./services/vertex-veo-gcp.service");
|
|
25
25
|
const axios_1 = require("@nestjs/axios");
|
|
@@ -33,10 +33,11 @@ const vertex_comfy_controller_1 = require("./controllers/vertex-comfy.controller
|
|
|
33
33
|
const key_balancer_api_service_1 = require("./services/key-balancer-api.service");
|
|
34
34
|
const comfyui_module_1 = require("./comfyui/comfyui.module");
|
|
35
35
|
const vertex_veo_genai_service_1 = require("./services/vertex-veo-genai.service");
|
|
36
|
-
const
|
|
36
|
+
const veo_video_controller_1 = require("./controllers/veo-video.controller");
|
|
37
37
|
const google_genai_service_1 = require("./services/google-genai.service");
|
|
38
38
|
const groq_stt_controller_1 = require("./controllers/groq-stt.controller");
|
|
39
39
|
const groq_service_1 = require("./services/whisper/groq.service");
|
|
40
|
+
const comfy_sdk_service_1 = require("./comfyui/services/comfy-sdk.service");
|
|
40
41
|
let NestVertexModule = class NestVertexModule {
|
|
41
42
|
};
|
|
42
43
|
exports.NestVertexModule = NestVertexModule;
|
|
@@ -64,6 +65,7 @@ exports.NestVertexModule = NestVertexModule = __decorate([
|
|
|
64
65
|
vertex_veo_genai_service_1.VertexVeoGenaiService,
|
|
65
66
|
google_genai_service_1.GoogleGenaiService,
|
|
66
67
|
groq_service_1.GroqService,
|
|
68
|
+
comfy_sdk_service_1.ComfySDKService
|
|
67
69
|
],
|
|
68
70
|
exports: [
|
|
69
71
|
vertex_image_video_service_1.VertexImageVideoService,
|
|
@@ -81,16 +83,17 @@ exports.NestVertexModule = NestVertexModule = __decorate([
|
|
|
81
83
|
google_genai_service_1.GoogleGenaiService,
|
|
82
84
|
groq_service_1.GroqService,
|
|
83
85
|
comfyui_module_1.ComfyUIModule,
|
|
86
|
+
comfy_sdk_service_1.ComfySDKService
|
|
84
87
|
],
|
|
85
88
|
controllers: [
|
|
86
89
|
vertex_image_adapter_controller_1.VertexImageVideoAdapterController,
|
|
87
90
|
vertex_gemini_chat_controller_1.GeminiChatController,
|
|
88
|
-
|
|
91
|
+
video_gen_adapter_controller_1.VertexVideoImageAdapterController,
|
|
89
92
|
vertex_tts_adapter_controller_1.VertexTtsAdapterController,
|
|
90
93
|
vertex_llm_adapter_controller_1.VertexAdapterLLMController,
|
|
91
94
|
generated_assets_controller_1.GeneratedAssetsController,
|
|
92
95
|
vertex_comfy_controller_1.VertexComfyController,
|
|
93
|
-
|
|
96
|
+
veo_video_controller_1.VertexVeoGenerationController,
|
|
94
97
|
groq_stt_controller_1.GroqSttController,
|
|
95
98
|
],
|
|
96
99
|
})
|
package/package.json
CHANGED
|
File without changes
|