@dataclouder/nest-vertex 0.0.29 → 0.0.32
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/audio.utils.js +35 -2
- package/comfyui/controllers/comfy-ui.controller.js +35 -2
- package/comfyui/models/comfy.models.d.ts +1 -1
- package/comfyui/providers/comfy-services.providers.js +4 -5
- package/comfyui/services/comfy-connection.service.d.ts +1 -3
- package/comfyui/services/comfy-connection.service.js +12 -13
- package/comfyui/services/comfy-image.service.js +36 -3
- package/comfyui/services/comfy-video.service.js +36 -3
- package/controllers/vertex-comfy.controller.d.ts +1 -1
- package/controllers/vertex-image-adapter.controller.d.ts +2 -2
- package/controllers/vertex-llm-adapter.controller.d.ts +1 -1
- package/controllers/vertex-tts-adapter.controller.d.ts +3 -3
- package/controllers/vertex-veo-video.controller.d.ts +7 -0
- package/controllers/vertex-veo-video.controller.js +47 -0
- package/controllers/vertex-video-adapter.controller.d.ts +11 -2
- package/controllers/vertex-video-adapter.controller.js +44 -2
- package/dto/generate-video.dto.d.ts +1 -1
- package/dto/generate-video.dto.js +2 -2
- package/models/generated-asset.entity.d.ts +7 -6
- package/models/generated-asset.entity.js +5 -0
- package/models/generated-asset.model.d.ts +3 -2
- package/nest-vertex.module.js +4 -4
- package/package.json +1 -1
- package/services/adapter-image-gen.service.d.ts +2 -2
- package/services/adapter-llm.service.js +2 -2
- package/services/adapter-video-gen.service.d.ts +1 -0
- package/services/adapter-video-gen.service.js +2 -0
- package/services/ai-sdk-chat.service.d.ts +0 -6
- package/services/ai-sdk-chat.service.js +1 -47
- package/services/key-balancer-api.service.js +8 -8
- package/services/local-llm.service.d.ts +0 -2
- package/services/local-llm.service.js +0 -5
- package/services/vertex-gemini-chat.service.d.ts +1 -3
- package/services/vertex-gemini-chat.service.js +5 -9
- package/services/vertex-image-video.service.d.ts +1 -1
- package/services/vertex-image-video.service.js +1 -1
- package/services/vertex-image.service.js +8 -8
- package/services/vertex-veo-gcp.service.js +36 -3
- package/services/vertex-veo-genai.service.d.ts +20 -0
- package/services/vertex-veo-genai.service.js +159 -0
package/audio.utils.js
CHANGED
|
@@ -1,8 +1,41 @@
|
|
|
1
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 __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.saveAudioToFile = saveAudioToFile;
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const fs = require("fs/promises");
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs = __importStar(require("fs/promises"));
|
|
6
39
|
const common_1 = require("@nestjs/common");
|
|
7
40
|
const logger = new common_1.Logger('AudioUtils');
|
|
8
41
|
async function saveAudioToFile(audioBuffer, filename) {
|
|
@@ -1,10 +1,43 @@
|
|
|
1
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
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
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;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
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
|
+
})();
|
|
8
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
43
|
};
|
|
@@ -18,8 +51,8 @@ const common_1 = require("@nestjs/common");
|
|
|
18
51
|
const comfy_models_1 = require("../models/comfy.models");
|
|
19
52
|
const nest_core_1 = require("@dataclouder/nest-core");
|
|
20
53
|
const video_url_request_dto_1 = require("../dto/video-url-request.dto");
|
|
21
|
-
const fs = require("fs/promises");
|
|
22
|
-
const path = require("path");
|
|
54
|
+
const fs = __importStar(require("fs/promises"));
|
|
55
|
+
const path = __importStar(require("path"));
|
|
23
56
|
const comfy_image_service_1 = require("../services/comfy-image.service");
|
|
24
57
|
const comfy_video_service_1 = require("../services/comfy-video.service");
|
|
25
58
|
const generated_asset_service_1 = require("../../services/generated-asset.service");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { GeneratedImageAdapter, ImageGenAdapterResponse, ImageGenRequestAdapter } from '../../models/adapter.models';
|
|
1
|
+
export { type GeneratedImageAdapter, ImageGenAdapterResponse, ImageGenRequestAdapter } from '../../models/adapter.models';
|
|
2
2
|
export interface ComfyUIGenerateImagesResponse {
|
|
3
3
|
images: {
|
|
4
4
|
filename: string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.comfyServicesProviders = void 0;
|
|
4
|
-
const config_1 = require("@nestjs/config");
|
|
5
4
|
const comfy_connection_service_1 = require("../services/comfy-connection.service");
|
|
6
5
|
const comfy_image_service_1 = require("../services/comfy-image.service");
|
|
7
6
|
const comfy_video_service_1 = require("../services/comfy-video.service");
|
|
@@ -12,13 +11,13 @@ const event_emitter_1 = require("@nestjs/event-emitter");
|
|
|
12
11
|
exports.comfyServicesProviders = [
|
|
13
12
|
{
|
|
14
13
|
provide: comfy_connection_service_1.ComfyConnectionService,
|
|
15
|
-
useFactory: (
|
|
16
|
-
if (!
|
|
14
|
+
useFactory: (httpService, generatedAssetService, cloudStorageService, eventEmitter) => {
|
|
15
|
+
if (!process.env.COMFYUI_API_HOST) {
|
|
17
16
|
return null;
|
|
18
17
|
}
|
|
19
|
-
return new comfy_connection_service_1.ComfyConnectionService(
|
|
18
|
+
return new comfy_connection_service_1.ComfyConnectionService(httpService, generatedAssetService, cloudStorageService, eventEmitter);
|
|
20
19
|
},
|
|
21
|
-
inject: [
|
|
20
|
+
inject: [axios_1.HttpService, generated_asset_service_1.GeneratedAssetService, nest_storage_1.CloudStorageService, event_emitter_1.EventEmitter2],
|
|
22
21
|
},
|
|
23
22
|
{
|
|
24
23
|
provide: comfy_image_service_1.ComfyImageService,
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
2
|
-
import { ConfigService } from '@nestjs/config';
|
|
3
2
|
import { Client as ComfyUIClient } from '@stable-canvas/comfyui-client';
|
|
4
3
|
import { HttpService } from '@nestjs/axios';
|
|
5
4
|
import { GeneratedAssetService } from '../../services/generated-asset.service';
|
|
6
5
|
import { CloudStorageService } from '@dataclouder/nest-storage';
|
|
7
6
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
8
7
|
export declare class ComfyConnectionService implements OnModuleInit, OnModuleDestroy {
|
|
9
|
-
private readonly configService;
|
|
10
8
|
private readonly httpService;
|
|
11
9
|
private readonly generatedAssetService;
|
|
12
10
|
private readonly cloudStorageService;
|
|
@@ -17,7 +15,7 @@ export declare class ComfyConnectionService implements OnModuleInit, OnModuleDes
|
|
|
17
15
|
private comfyApiHost;
|
|
18
16
|
private clientId;
|
|
19
17
|
private pendingPrompts;
|
|
20
|
-
constructor(
|
|
18
|
+
constructor(httpService: HttpService, generatedAssetService: GeneratedAssetService, cloudStorageService: CloudStorageService, eventEmitter: EventEmitter2);
|
|
21
19
|
onModuleInit(): Promise<void>;
|
|
22
20
|
onModuleDestroy(): Promise<void>;
|
|
23
21
|
private checkApiStatus;
|
|
@@ -11,11 +11,13 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
14
17
|
var ComfyConnectionService_1;
|
|
15
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
19
|
exports.ComfyConnectionService = void 0;
|
|
17
20
|
const common_1 = require("@nestjs/common");
|
|
18
|
-
const config_1 = require("@nestjs/config");
|
|
19
21
|
const comfyui_client_1 = require("@stable-canvas/comfyui-client");
|
|
20
22
|
const ws_1 = require("ws");
|
|
21
23
|
const axios_1 = require("@nestjs/axios");
|
|
@@ -23,9 +25,8 @@ const rxjs_1 = require("rxjs");
|
|
|
23
25
|
const generated_asset_service_1 = require("../../services/generated-asset.service");
|
|
24
26
|
const nest_storage_1 = require("@dataclouder/nest-storage");
|
|
25
27
|
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
26
|
-
const
|
|
28
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
27
29
|
let ComfyConnectionService = ComfyConnectionService_1 = class ComfyConnectionService {
|
|
28
|
-
configService;
|
|
29
30
|
httpService;
|
|
30
31
|
generatedAssetService;
|
|
31
32
|
cloudStorageService;
|
|
@@ -36,8 +37,7 @@ let ComfyConnectionService = ComfyConnectionService_1 = class ComfyConnectionSer
|
|
|
36
37
|
comfyApiHost;
|
|
37
38
|
clientId;
|
|
38
39
|
pendingPrompts = new Map();
|
|
39
|
-
constructor(
|
|
40
|
-
this.configService = configService;
|
|
40
|
+
constructor(httpService, generatedAssetService, cloudStorageService, eventEmitter) {
|
|
41
41
|
this.httpService = httpService;
|
|
42
42
|
this.generatedAssetService = generatedAssetService;
|
|
43
43
|
this.cloudStorageService = cloudStorageService;
|
|
@@ -45,7 +45,7 @@ let ComfyConnectionService = ComfyConnectionService_1 = class ComfyConnectionSer
|
|
|
45
45
|
this.clientId = `nest-comfy-client-${Date.now()}`;
|
|
46
46
|
}
|
|
47
47
|
async onModuleInit() {
|
|
48
|
-
this.comfyApiHost =
|
|
48
|
+
this.comfyApiHost = process.env.COMFYUI_API_HOST || '';
|
|
49
49
|
if (!this.comfyApiHost) {
|
|
50
50
|
this.logger.warn('COMFYUI_API_HOST environment variable not set. ComfyConnectionService will not be initialized.');
|
|
51
51
|
return;
|
|
@@ -118,7 +118,7 @@ let ComfyConnectionService = ComfyConnectionService_1 = class ComfyConnectionSer
|
|
|
118
118
|
this.logger.log(`Workflow ${prompt_id} executed. Processing output...`);
|
|
119
119
|
if (this.pendingPrompts.has(prompt_id)) {
|
|
120
120
|
const pending = this.pendingPrompts.get(prompt_id);
|
|
121
|
-
pending
|
|
121
|
+
pending?.resolve(output);
|
|
122
122
|
this.pendingPrompts.delete(prompt_id);
|
|
123
123
|
this.logger.log(`Resolved pending promise for prompt ${prompt_id}.`);
|
|
124
124
|
return;
|
|
@@ -137,9 +137,9 @@ let ComfyConnectionService = ComfyConnectionService_1 = class ComfyConnectionSer
|
|
|
137
137
|
videoFilename = video.filename;
|
|
138
138
|
this.logger.log(`Found video output: ${videoFilename}`);
|
|
139
139
|
if (videoBuffer) {
|
|
140
|
-
const uploadResult = await this.cloudStorageService.uploadFileAndMakePublic(process.env.STORAGE_BUCKET, `generated-videos/${generatedAsset.id}.mp4`, videoBuffer, 'video/mp4');
|
|
140
|
+
const uploadResult = await this.cloudStorageService.uploadFileAndMakePublic(process.env.STORAGE_BUCKET || '', `generated-videos/${generatedAsset.id}.mp4`, videoBuffer, 'video/mp4');
|
|
141
141
|
this.logger.log(`Successfully uploaded video to: ${uploadResult.url}`);
|
|
142
|
-
generatedAsset.url = uploadResult
|
|
142
|
+
generatedAsset.url = uploadResult?.url || '';
|
|
143
143
|
generatedAsset.result = uploadResult;
|
|
144
144
|
generatedAsset.status = 'completed';
|
|
145
145
|
await this.generatedAssetService.update(generatedAsset.id, generatedAsset);
|
|
@@ -181,7 +181,7 @@ let ComfyConnectionService = ComfyConnectionService_1 = class ComfyConnectionSer
|
|
|
181
181
|
}
|
|
182
182
|
async uploadImage(imageBuffer, filename) {
|
|
183
183
|
const url = `http://${this.comfyApiHost}/upload/image`;
|
|
184
|
-
const form = new
|
|
184
|
+
const form = new form_data_1.default();
|
|
185
185
|
form.append('image', imageBuffer, { filename });
|
|
186
186
|
form.append('overwrite', 'true');
|
|
187
187
|
const response = await (0, rxjs_1.firstValueFrom)(this.httpService.post(url, form, {
|
|
@@ -219,9 +219,8 @@ let ComfyConnectionService = ComfyConnectionService_1 = class ComfyConnectionSer
|
|
|
219
219
|
exports.ComfyConnectionService = ComfyConnectionService;
|
|
220
220
|
exports.ComfyConnectionService = ComfyConnectionService = ComfyConnectionService_1 = __decorate([
|
|
221
221
|
(0, common_1.Injectable)(),
|
|
222
|
-
__param(
|
|
223
|
-
__metadata("design:paramtypes", [
|
|
224
|
-
axios_1.HttpService,
|
|
222
|
+
__param(0, (0, common_1.Inject)(axios_1.HttpService)),
|
|
223
|
+
__metadata("design:paramtypes", [axios_1.HttpService,
|
|
225
224
|
generated_asset_service_1.GeneratedAssetService,
|
|
226
225
|
nest_storage_1.CloudStorageService,
|
|
227
226
|
event_emitter_1.EventEmitter2])
|
|
@@ -1,10 +1,43 @@
|
|
|
1
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
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
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;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
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
|
+
})();
|
|
8
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
43
|
};
|
|
@@ -13,8 +46,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
46
|
exports.ComfyImageService = void 0;
|
|
14
47
|
const common_1 = require("@nestjs/common");
|
|
15
48
|
const comfyui_client_1 = require("@stable-canvas/comfyui-client");
|
|
16
|
-
const fs = require("fs/promises");
|
|
17
|
-
const path = require("path");
|
|
49
|
+
const fs = __importStar(require("fs/promises"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
18
51
|
const comfy_connection_service_1 = require("./comfy-connection.service");
|
|
19
52
|
let ComfyImageService = ComfyImageService_1 = class ComfyImageService {
|
|
20
53
|
connectionService;
|
|
@@ -47,7 +80,7 @@ let ComfyImageService = ComfyImageService_1 = class ComfyImageService {
|
|
|
47
80
|
const { model, negativePrompt, width, height, steps, cfg, seed, samplerName, scheduler } = imageDto;
|
|
48
81
|
try {
|
|
49
82
|
const client = this.connectionService.getClient();
|
|
50
|
-
const pipe = new comfyui_client_1.BasePipe().with(client).model(model).prompt(imageDto.prompt).size(width, height);
|
|
83
|
+
const pipe = new comfyui_client_1.BasePipe().with(client).model(model || '').prompt(imageDto.prompt).size(width || 512, height || 512);
|
|
51
84
|
if (negativePrompt)
|
|
52
85
|
pipe.negative(negativePrompt);
|
|
53
86
|
if (steps)
|
|
@@ -1,10 +1,43 @@
|
|
|
1
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
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
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;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
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
|
+
})();
|
|
8
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
43
|
};
|
|
@@ -12,8 +45,8 @@ var ComfyVideoService_1;
|
|
|
12
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
46
|
exports.ComfyVideoService = void 0;
|
|
14
47
|
const common_1 = require("@nestjs/common");
|
|
15
|
-
const fs = require("fs/promises");
|
|
16
|
-
const path = require("path");
|
|
48
|
+
const fs = __importStar(require("fs/promises"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
17
50
|
const comfy_connection_service_1 = require("./comfy-connection.service");
|
|
18
51
|
const generated_asset_service_1 = require("../../services/generated-asset.service");
|
|
19
52
|
const axios_1 = require("@nestjs/axios");
|
|
@@ -43,7 +76,7 @@ let ComfyVideoService = ComfyVideoService_1 = class ComfyVideoService {
|
|
|
43
76
|
}
|
|
44
77
|
async runVideoGenerationFromWorkflow(videoRequest, assetId) {
|
|
45
78
|
const { inputImage, positivePrompt, negativePrompt } = videoRequest;
|
|
46
|
-
const workflow = await this.updateWorkflow(videoRequest.width, videoRequest.height, videoRequest.seconds);
|
|
79
|
+
const workflow = await this.updateWorkflow(videoRequest.width || 512, videoRequest.height || 512, videoRequest.seconds || 15);
|
|
47
80
|
workflow['6'].inputs.text = positivePrompt;
|
|
48
81
|
workflow['7'].inputs.text = negativePrompt;
|
|
49
82
|
const uploadResponse = await this.comfyConnectionService.uploadImage(inputImage, 'input_image.jpg');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GeneratedAssetService } from '../services/generated-asset.service';
|
|
2
|
-
import { Response } from 'express';
|
|
2
|
+
import { type Response } from 'express';
|
|
3
3
|
import { ComfyStatusDto } from '../dto/comfy-status.dto';
|
|
4
4
|
import { ComfyImageService } from '../comfyui/services/comfy-image.service';
|
|
5
5
|
import { ComfyVideoService } from '../comfyui/services/comfy-video.service';
|
|
@@ -9,6 +9,6 @@ export declare class VertexImageVideoAdapterController {
|
|
|
9
9
|
listModels(provider?: string): Promise<{
|
|
10
10
|
name: string;
|
|
11
11
|
id: string;
|
|
12
|
-
}[]>;
|
|
13
|
-
generateImage(generateImageDto: ImageGenRequestAdapter): Promise<ImageGenAdapterResponse>;
|
|
12
|
+
}[] | undefined>;
|
|
13
|
+
generateImage(generateImageDto: ImageGenRequestAdapter): Promise<ImageGenAdapterResponse | null>;
|
|
14
14
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChatLLMRequestAdapter, DescribeImageRequestAdapter } from '../models/adapter.models';
|
|
1
|
+
import { type ChatLLMRequestAdapter, DescribeImageRequestAdapter } from '../models/adapter.models';
|
|
2
2
|
import { LLMAdapterService } from '../services/adapter-llm.service';
|
|
3
3
|
export declare class VertexAdapterLLMController {
|
|
4
4
|
private readonly llmAdapterService;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { google } from '@google-cloud/text-to-speech/build/protos/protos';
|
|
2
|
-
import { FastifyReply } from 'fastify';
|
|
3
|
-
import { NestTtsService, SynthesizeSpeechInput } from '../services/vertex-tts.service';
|
|
2
|
+
import { type FastifyReply } from 'fastify';
|
|
3
|
+
import { NestTtsService, type SynthesizeSpeechInput } from '../services/vertex-tts.service';
|
|
4
4
|
export declare class VertexTtsAdapterController {
|
|
5
5
|
private readonly nestTtsService;
|
|
6
6
|
private readonly logger;
|
|
7
7
|
constructor(nestTtsService: NestTtsService);
|
|
8
|
-
synthesizeSpeech(body: SynthesizeSpeechInput, res: FastifyReply): Promise<Buffer
|
|
8
|
+
synthesizeSpeech(body: SynthesizeSpeechInput, res: FastifyReply): Promise<Buffer<ArrayBufferLike>>;
|
|
9
9
|
listVoices(languageCode?: string): Promise<google.cloud.texttospeech.v1.IVoice[]>;
|
|
10
10
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { VertexVeoGenaiService } from '../services/vertex-veo-genai.service';
|
|
2
|
+
export declare class VertexVeoGenerationController {
|
|
3
|
+
private readonly vertexVeoGcpService;
|
|
4
|
+
private readonly logger;
|
|
5
|
+
constructor(vertexVeoGcpService: VertexVeoGenaiService);
|
|
6
|
+
generateVeoVideo(): Promise<any>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
var VertexVeoGenerationController_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.VertexVeoGenerationController = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
16
|
+
const vertex_veo_genai_service_1 = require("../services/vertex-veo-genai.service");
|
|
17
|
+
let VertexVeoGenerationController = VertexVeoGenerationController_1 = class VertexVeoGenerationController {
|
|
18
|
+
vertexVeoGcpService;
|
|
19
|
+
logger = new common_1.Logger(VertexVeoGenerationController_1.name);
|
|
20
|
+
constructor(vertexVeoGcpService) {
|
|
21
|
+
this.vertexVeoGcpService = vertexVeoGcpService;
|
|
22
|
+
}
|
|
23
|
+
async generateVeoVideo() {
|
|
24
|
+
this.logger.log(`Received request to generate VEO video`);
|
|
25
|
+
try {
|
|
26
|
+
const assetGenerated = await this.vertexVeoGcpService.generateVideo();
|
|
27
|
+
return assetGenerated;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
this.logger.error('Error in generateVeoVideo endpoint:', error);
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.VertexVeoGenerationController = VertexVeoGenerationController;
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, common_1.Get)('generate-veo-video'),
|
|
38
|
+
__metadata("design:type", Function),
|
|
39
|
+
__metadata("design:paramtypes", []),
|
|
40
|
+
__metadata("design:returntype", Promise)
|
|
41
|
+
], VertexVeoGenerationController.prototype, "generateVeoVideo", null);
|
|
42
|
+
exports.VertexVeoGenerationController = VertexVeoGenerationController = VertexVeoGenerationController_1 = __decorate([
|
|
43
|
+
(0, swagger_1.ApiTags)('Vertex Image/video Adapter'),
|
|
44
|
+
(0, common_1.Controller)('api/vertex-veo/video'),
|
|
45
|
+
__metadata("design:paramtypes", [vertex_veo_genai_service_1.VertexVeoGenaiService])
|
|
46
|
+
], VertexVeoGenerationController);
|
|
47
|
+
//# sourceMappingURL=vertex-veo-video.controller.js.map
|
|
@@ -4,16 +4,25 @@ import { GetVeoVideoStatusDto } from '../dto/get-veo-video-status.dto';
|
|
|
4
4
|
import { GenerateVideosOperation } from '@google/genai';
|
|
5
5
|
import { VertexVeoGcpService } from '../services/vertex-veo-gcp.service';
|
|
6
6
|
import { GeneratedAsset } from '../models/generated-asset.entity';
|
|
7
|
+
import { GeneratedAssetService } from '../services/generated-asset.service';
|
|
8
|
+
import { ComfyVideoService } from '../comfyui/services/comfy-video.service';
|
|
9
|
+
import { VertexVeoGenaiService } from '../services/vertex-veo-genai.service';
|
|
7
10
|
export declare class VertexVideoImageAdapterController {
|
|
8
11
|
private readonly vertexImageVideoService;
|
|
9
12
|
private readonly vertexVeoGcpService;
|
|
13
|
+
private readonly generatedAssetService;
|
|
14
|
+
private readonly comfyVideoService;
|
|
15
|
+
private readonly vertexVeoGenaiService;
|
|
10
16
|
private readonly logger;
|
|
11
|
-
constructor(vertexImageVideoService: VertexImageVideoService, vertexVeoGcpService: VertexVeoGcpService);
|
|
17
|
+
constructor(vertexImageVideoService: VertexImageVideoService, vertexVeoGcpService: VertexVeoGcpService, generatedAssetService: GeneratedAssetService, comfyVideoService: ComfyVideoService, vertexVeoGenaiService: VertexVeoGenaiService);
|
|
12
18
|
listModels(provider?: string): Promise<{
|
|
13
19
|
name: string;
|
|
14
20
|
id: string;
|
|
15
|
-
}[]>;
|
|
21
|
+
}[] | undefined>;
|
|
16
22
|
generateVideo(generateVideoDto: GenerateVideoDto, provider?: string): Promise<any>;
|
|
23
|
+
generateVideoFromAsset(id: string): Promise<{
|
|
24
|
+
prompt_id: string;
|
|
25
|
+
} | null>;
|
|
17
26
|
listModelsVertex(): Promise<any>;
|
|
18
27
|
testVideo(): Promise<any>;
|
|
19
28
|
generateVeoVideo(generateVideoDto: GenerateVideoDto): Promise<GeneratedAsset>;
|
|
@@ -20,13 +20,22 @@ const generate_video_dto_1 = require("../dto/generate-video.dto");
|
|
|
20
20
|
const get_veo_video_status_dto_1 = require("../dto/get-veo-video-status.dto");
|
|
21
21
|
const vertex_veo_gcp_service_1 = require("../services/vertex-veo-gcp.service");
|
|
22
22
|
const swagger_1 = require("@nestjs/swagger");
|
|
23
|
+
const generated_asset_service_1 = require("../services/generated-asset.service");
|
|
24
|
+
const comfy_video_service_1 = require("../comfyui/services/comfy-video.service");
|
|
25
|
+
const vertex_veo_genai_service_1 = require("../services/vertex-veo-genai.service");
|
|
23
26
|
let VertexVideoImageAdapterController = VertexVideoImageAdapterController_1 = class VertexVideoImageAdapterController {
|
|
24
27
|
vertexImageVideoService;
|
|
25
28
|
vertexVeoGcpService;
|
|
29
|
+
generatedAssetService;
|
|
30
|
+
comfyVideoService;
|
|
31
|
+
vertexVeoGenaiService;
|
|
26
32
|
logger = new common_1.Logger(VertexVideoImageAdapterController_1.name);
|
|
27
|
-
constructor(vertexImageVideoService, vertexVeoGcpService) {
|
|
33
|
+
constructor(vertexImageVideoService, vertexVeoGcpService, generatedAssetService, comfyVideoService, vertexVeoGenaiService) {
|
|
28
34
|
this.vertexImageVideoService = vertexImageVideoService;
|
|
29
35
|
this.vertexVeoGcpService = vertexVeoGcpService;
|
|
36
|
+
this.generatedAssetService = generatedAssetService;
|
|
37
|
+
this.comfyVideoService = comfyVideoService;
|
|
38
|
+
this.vertexVeoGenaiService = vertexVeoGenaiService;
|
|
30
39
|
}
|
|
31
40
|
async listModels(provider) {
|
|
32
41
|
this.logger.log(`List models with provider: ${provider}`);
|
|
@@ -48,6 +57,29 @@ let VertexVideoImageAdapterController = VertexVideoImageAdapterController_1 = cl
|
|
|
48
57
|
throw error;
|
|
49
58
|
}
|
|
50
59
|
}
|
|
60
|
+
async generateVideoFromAsset(id) {
|
|
61
|
+
this.logger.log(`Received request to generate video from asset with id: ${id}`);
|
|
62
|
+
try {
|
|
63
|
+
const asset = await this.generatedAssetService.findOne(id);
|
|
64
|
+
if (!asset || !asset.assets?.firstFrame?.url) {
|
|
65
|
+
throw new common_1.NotFoundException(`Asset with id ${id} not found or does not have a valid image url.`);
|
|
66
|
+
}
|
|
67
|
+
if (asset.provider === 'comfy') {
|
|
68
|
+
const videoResponse = await this.comfyVideoService.runVideoGenerationForAssetId(id);
|
|
69
|
+
this.logger.log(`ComfyUI video generation started. Response: ${JSON.stringify(videoResponse)}`);
|
|
70
|
+
return videoResponse;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.logger.log(`Starting Generation with VEO.`);
|
|
74
|
+
this.vertexVeoGenaiService.generateVideoFromAssetId(id);
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
this.logger.error('Error in generateVideoFromAsset endpoint:', error);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
51
83
|
async listModelsVertex() {
|
|
52
84
|
return this.vertexImageVideoService.listModelsVertex();
|
|
53
85
|
}
|
|
@@ -121,6 +153,13 @@ __decorate([
|
|
|
121
153
|
__metadata("design:paramtypes", [generate_video_dto_1.GenerateVideoDto, String]),
|
|
122
154
|
__metadata("design:returntype", Promise)
|
|
123
155
|
], VertexVideoImageAdapterController.prototype, "generateVideo", null);
|
|
156
|
+
__decorate([
|
|
157
|
+
(0, common_1.Post)('generate-video-from-asset'),
|
|
158
|
+
__param(0, (0, common_1.Body)('id')),
|
|
159
|
+
__metadata("design:type", Function),
|
|
160
|
+
__metadata("design:paramtypes", [String]),
|
|
161
|
+
__metadata("design:returntype", Promise)
|
|
162
|
+
], VertexVideoImageAdapterController.prototype, "generateVideoFromAsset", null);
|
|
124
163
|
__decorate([
|
|
125
164
|
(0, common_1.Get)('list-models-vertex'),
|
|
126
165
|
(0, swagger_1.ApiQuery)({ name: 'provider', required: false, type: String, description: 'The provider for the service (e.g., "local", "google")' }),
|
|
@@ -162,6 +201,9 @@ exports.VertexVideoImageAdapterController = VertexVideoImageAdapterController =
|
|
|
162
201
|
(0, swagger_1.ApiTags)('Vertex Image/video Adapter'),
|
|
163
202
|
(0, common_1.Controller)('api/vertex-adapter/video'),
|
|
164
203
|
__metadata("design:paramtypes", [vertex_image_video_service_1.VertexImageVideoService,
|
|
165
|
-
vertex_veo_gcp_service_1.VertexVeoGcpService
|
|
204
|
+
vertex_veo_gcp_service_1.VertexVeoGcpService,
|
|
205
|
+
generated_asset_service_1.GeneratedAssetService,
|
|
206
|
+
comfy_video_service_1.ComfyVideoService,
|
|
207
|
+
vertex_veo_genai_service_1.VertexVeoGenaiService])
|
|
166
208
|
], VertexVideoImageAdapterController);
|
|
167
209
|
//# sourceMappingURL=vertex-video-adapter.controller.js.map
|
|
@@ -41,14 +41,14 @@ __decorate([
|
|
|
41
41
|
class GenerateVideoDto {
|
|
42
42
|
prompt = 'A cinamatic shot of siamese cat ridding a horse in the galaxy';
|
|
43
43
|
model = gemini_models_1.GeminiVideoModels.Veo2;
|
|
44
|
-
image =
|
|
44
|
+
image = undefined;
|
|
45
45
|
durationSeconds = 8;
|
|
46
46
|
aspectRatio = '16:9';
|
|
47
47
|
negativePrompt;
|
|
48
48
|
personGeneration = 'allow_all';
|
|
49
49
|
sampleCount = 1;
|
|
50
50
|
seed;
|
|
51
|
-
storageUri
|
|
51
|
+
storageUri;
|
|
52
52
|
enhancePrompt = true;
|
|
53
53
|
}
|
|
54
54
|
exports.GenerateVideoDto = GenerateVideoDto;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Document } from 'mongoose';
|
|
2
|
-
import { IAuditable } from '@dataclouder/nest-core';
|
|
3
|
-
import { IAssetsGeneration, IGeneratedAsset } from './generated-asset.model';
|
|
4
|
-
import { CloudFileStorage } from '@dataclouder/nest-storage';
|
|
1
|
+
import type { Document } from 'mongoose';
|
|
2
|
+
import { type IAuditable } from '@dataclouder/nest-core';
|
|
3
|
+
import type { IAssetsGeneration, IGeneratedAsset } from './generated-asset.model';
|
|
4
|
+
import type { CloudFileStorage } from '@dataclouder/nest-storage';
|
|
5
5
|
export type GeneratedAssetDocument = GeneratedAsset & Document;
|
|
6
6
|
export declare class GeneratedAsset implements IGeneratedAsset {
|
|
7
7
|
_id?: string;
|
|
@@ -12,6 +12,7 @@ export declare class GeneratedAsset implements IGeneratedAsset {
|
|
|
12
12
|
auditable: IAuditable;
|
|
13
13
|
url: string;
|
|
14
14
|
model: string;
|
|
15
|
+
provider: 'vertex' | 'comfy';
|
|
15
16
|
request: any;
|
|
16
17
|
response: any;
|
|
17
18
|
status: 'pending' | 'completed' | 'failed';
|
|
@@ -21,11 +22,11 @@ export declare class GeneratedAsset implements IGeneratedAsset {
|
|
|
21
22
|
description: string;
|
|
22
23
|
metadata: any;
|
|
23
24
|
}
|
|
24
|
-
export declare const GeneratedAssetSchema: import("mongoose").Schema<GeneratedAsset, import("mongoose").Model<GeneratedAsset, any, any, any, Document<unknown, any, GeneratedAsset, any> & GeneratedAsset & Required<{
|
|
25
|
+
export declare const GeneratedAssetSchema: import("mongoose").Schema<GeneratedAsset, import("mongoose").Model<GeneratedAsset, any, any, any, Document<unknown, any, GeneratedAsset, any, {}> & GeneratedAsset & Required<{
|
|
25
26
|
_id: string;
|
|
26
27
|
}> & {
|
|
27
28
|
__v: number;
|
|
28
|
-
}, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, GeneratedAsset, Document<unknown, {}, import("mongoose").FlatRecord<GeneratedAsset>, {}
|
|
29
|
+
}, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, GeneratedAsset, Document<unknown, {}, import("mongoose").FlatRecord<GeneratedAsset>, {}, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & import("mongoose").FlatRecord<GeneratedAsset> & Required<{
|
|
29
30
|
_id: string;
|
|
30
31
|
}> & {
|
|
31
32
|
__v: number;
|