@dataclouder/nest-vertex 0.0.4 → 0.0.7

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.
@@ -0,0 +1,51 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var GeminiChatController_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.GeminiChatController = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const gemini_chat_service_1 = require("../services/gemini-chat.service");
19
+ const swagger_1 = require("@nestjs/swagger");
20
+ let GeminiChatController = GeminiChatController_1 = class GeminiChatController {
21
+ geminiChatService;
22
+ logger = new common_1.Logger(GeminiChatController_1.name);
23
+ constructor(geminiChatService) {
24
+ this.geminiChatService = geminiChatService;
25
+ }
26
+ async generateText(messages) {
27
+ this.logger.log('Received request for text generation');
28
+ try {
29
+ const result = await this.geminiChatService.chat(messages);
30
+ return result;
31
+ }
32
+ catch (error) {
33
+ this.logger.error(`Error generating text: ${error.message}`, error.stack);
34
+ throw error;
35
+ }
36
+ }
37
+ };
38
+ exports.GeminiChatController = GeminiChatController;
39
+ __decorate([
40
+ (0, common_1.Post)('generate-text'),
41
+ __param(0, (0, common_1.Body)()),
42
+ __metadata("design:type", Function),
43
+ __metadata("design:paramtypes", [Array]),
44
+ __metadata("design:returntype", Promise)
45
+ ], GeminiChatController.prototype, "generateText", null);
46
+ exports.GeminiChatController = GeminiChatController = GeminiChatController_1 = __decorate([
47
+ (0, swagger_1.ApiTags)('Vertex Gemini'),
48
+ (0, common_1.Controller)('api/vertex/gemini'),
49
+ __metadata("design:paramtypes", [gemini_chat_service_1.GeminiChatService])
50
+ ], GeminiChatController);
51
+ //# sourceMappingURL=gemini-chat.controller.js.map
@@ -0,0 +1,112 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.NestTtsController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const nest_tts_service_1 = require("../services/nest-tts.service");
19
+ let NestTtsController = class NestTtsController {
20
+ nestTtsService;
21
+ logger = new common_1.Logger('VertexTtsController');
22
+ constructor(nestTtsService) {
23
+ this.nestTtsService = nestTtsService;
24
+ }
25
+ ping() {
26
+ this.logger.log('Received ping request');
27
+ return this.nestTtsService.getHello();
28
+ }
29
+ async synthesizeSpeech(body, res) {
30
+ console.log('Received synthesize request', body);
31
+ this.logger.log(`Received synthesize request for text: "${body.text.substring(0, 50)}..."`);
32
+ try {
33
+ const audioBuffer = await this.nestTtsService.synthesizeSpeech(body);
34
+ if (!audioBuffer) {
35
+ this.logger.error('Synthesis resulted in null buffer');
36
+ throw new common_1.NotFoundException('Could not generate audio for the given input.');
37
+ }
38
+ res.header('Content-Length', audioBuffer.length.toString());
39
+ this.logger.log(`Successfully synthesized audio (${audioBuffer.length} bytes)`);
40
+ return audioBuffer;
41
+ }
42
+ catch (error) {
43
+ this.logger.error(`Synthesis failed: ${error.message}`, error.stack);
44
+ throw new common_1.InternalServerErrorException(`Speech synthesis failed: ${error.message}`);
45
+ }
46
+ }
47
+ async listVoices(languageCode) {
48
+ this.logger.log(`Received request to list voices${languageCode ? ` for language ${languageCode}` : ''}`);
49
+ try {
50
+ const voices = await this.nestTtsService.listVoices(languageCode);
51
+ this.logger.log(`Returning ${voices.length} voice${voices.length === 1 ? '' : 's'}.`);
52
+ return voices;
53
+ }
54
+ catch (error) {
55
+ this.logger.error(`Failed to list voices: ${error.message}`, error.stack);
56
+ throw new common_1.InternalServerErrorException(`Failed to list voices: ${error.message}`);
57
+ }
58
+ }
59
+ };
60
+ exports.NestTtsController = NestTtsController;
61
+ __decorate([
62
+ (0, common_1.Get)('ping'),
63
+ (0, swagger_1.ApiOperation)({ summary: 'Ping the TTS service' }),
64
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Service is available' }),
65
+ __metadata("design:type", Function),
66
+ __metadata("design:paramtypes", []),
67
+ __metadata("design:returntype", String)
68
+ ], NestTtsController.prototype, "ping", null);
69
+ __decorate([
70
+ (0, common_1.Post)('synthesize'),
71
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
72
+ (0, swagger_1.ApiOperation)({ summary: 'Synthesize speech from text' }),
73
+ (0, swagger_1.ApiBody)({
74
+ description: 'Text and configuration for speech synthesis',
75
+ schema: {
76
+ type: 'object',
77
+ properties: {
78
+ text: { type: 'string', example: 'Hello world' },
79
+ languageCode: { type: 'string', example: 'en-US', description: 'Optional language code (default: en-US)' },
80
+ ssmlGender: { type: 'string', example: 'NEUTRAL', description: 'Optional SSML gender (default: NEUTRAL)' },
81
+ voiceName: { type: 'string', example: 'en-US-Neural2-F', description: 'Optional specific voice name' },
82
+ audioEncoding: { type: 'string', example: 'MP3', description: 'Optional audio encoding (default: MP3)' },
83
+ },
84
+ required: ['text'],
85
+ },
86
+ }),
87
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Returns the synthesized audio file (e.g., MP3)' }),
88
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Internal server error during synthesis' }),
89
+ (0, common_1.Header)('Content-Type', 'audio/mpeg'),
90
+ __param(0, (0, common_1.Body)()),
91
+ __param(1, (0, common_1.Res)({ passthrough: true })),
92
+ __metadata("design:type", Function),
93
+ __metadata("design:paramtypes", [Object, Object]),
94
+ __metadata("design:returntype", Promise)
95
+ ], NestTtsController.prototype, "synthesizeSpeech", null);
96
+ __decorate([
97
+ (0, common_1.Get)('voices'),
98
+ (0, swagger_1.ApiOperation)({ summary: 'List available TTS voices, optionally filtered by language' }),
99
+ (0, swagger_1.ApiQuery)({ name: 'languageCode', required: false, type: String, description: 'Optional language code (e.g., en-US) to filter voices' }),
100
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Returns a list of available voices', type: [Object] }),
101
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Internal server error while fetching voices' }),
102
+ __param(0, (0, common_1.Query)('languageCode')),
103
+ __metadata("design:type", Function),
104
+ __metadata("design:paramtypes", [String]),
105
+ __metadata("design:returntype", Promise)
106
+ ], NestTtsController.prototype, "listVoices", null);
107
+ exports.NestTtsController = NestTtsController = __decorate([
108
+ (0, swagger_1.ApiTags)('Vertex TTS'),
109
+ (0, common_1.Controller)('api/vertex/tts'),
110
+ __metadata("design:paramtypes", [nest_tts_service_1.NestTtsService])
111
+ ], NestTtsController);
112
+ //# sourceMappingURL=nest-tts.controller.js.map
@@ -0,0 +1,88 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var NestVertexController_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.NestVertexController = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const nest_vertex_service_1 = require("../services/nest-vertex.service");
19
+ const generate_video_dto_1 = require("../dto/generate-video.dto");
20
+ const generate_image_dto_1 = require("../dto/generate-image.dto");
21
+ const swagger_1 = require("@nestjs/swagger");
22
+ let NestVertexController = NestVertexController_1 = class NestVertexController {
23
+ nestVertexService;
24
+ logger = new common_1.Logger(NestVertexController_1.name);
25
+ constructor(nestVertexService) {
26
+ this.nestVertexService = nestVertexService;
27
+ }
28
+ async generateVideo(generateVideoDto) {
29
+ this.logger.log(`Received request to generate video: ${JSON.stringify(generateVideoDto)}`);
30
+ try {
31
+ const operation = await this.nestVertexService.startVideoGeneration(generateVideoDto);
32
+ return { operationName: operation.name };
33
+ }
34
+ catch (error) {
35
+ this.logger.error('Error in generateVideo endpoint:', error);
36
+ throw error;
37
+ }
38
+ }
39
+ async getVideoStatus(operationName) {
40
+ this.logger.log(`Received request to check status for operation: ${operationName}`);
41
+ try {
42
+ return await this.nestVertexService.checkVideoOperationStatus(operationName);
43
+ }
44
+ catch (error) {
45
+ this.logger.error(`Error checking status for operation ${operationName}:`, error);
46
+ throw error;
47
+ }
48
+ }
49
+ async generateImage(generateImageDto) {
50
+ this.logger.log(`Received request to generate image: ${JSON.stringify(generateImageDto)}`);
51
+ try {
52
+ const response = await this.nestVertexService.startImageGeneration(generateImageDto);
53
+ return response;
54
+ }
55
+ catch (error) {
56
+ this.logger.error('Error in generateImage endpoint:', error);
57
+ throw error;
58
+ }
59
+ }
60
+ };
61
+ exports.NestVertexController = NestVertexController;
62
+ __decorate([
63
+ (0, common_1.Post)('generate-video'),
64
+ __param(0, (0, common_1.Body)(new common_1.ValidationPipe({ transform: true, whitelist: true }))),
65
+ __metadata("design:type", Function),
66
+ __metadata("design:paramtypes", [generate_video_dto_1.GenerateVideoDto]),
67
+ __metadata("design:returntype", Promise)
68
+ ], NestVertexController.prototype, "generateVideo", null);
69
+ __decorate([
70
+ (0, common_1.Get)('video-status/:operationName'),
71
+ __param(0, (0, common_1.Param)('operationName')),
72
+ __metadata("design:type", Function),
73
+ __metadata("design:paramtypes", [String]),
74
+ __metadata("design:returntype", Promise)
75
+ ], NestVertexController.prototype, "getVideoStatus", null);
76
+ __decorate([
77
+ (0, common_1.Post)('generate-image'),
78
+ __param(0, (0, common_1.Body)(new common_1.ValidationPipe({ transform: true, whitelist: true }))),
79
+ __metadata("design:type", Function),
80
+ __metadata("design:paramtypes", [generate_image_dto_1.GenerateImageDto]),
81
+ __metadata("design:returntype", Promise)
82
+ ], NestVertexController.prototype, "generateImage", null);
83
+ exports.NestVertexController = NestVertexController = NestVertexController_1 = __decorate([
84
+ (0, swagger_1.ApiTags)('Vertex Image/video'),
85
+ (0, common_1.Controller)('api/vertex'),
86
+ __metadata("design:paramtypes", [nest_vertex_service_1.NestVertexService])
87
+ ], NestVertexController);
88
+ //# sourceMappingURL=nest-vertex.controller.js.map
@@ -0,0 +1,51 @@
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.GenerateImageDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ class GenerateImageDto {
15
+ prompt;
16
+ numberOfImages = 1;
17
+ aspectRatio = '1:1';
18
+ negativePrompt;
19
+ seed;
20
+ }
21
+ exports.GenerateImageDto = GenerateImageDto;
22
+ __decorate([
23
+ (0, class_validator_1.IsString)(),
24
+ (0, class_validator_1.IsNotEmpty)(),
25
+ __metadata("design:type", String)
26
+ ], GenerateImageDto.prototype, "prompt", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsOptional)(),
29
+ (0, class_validator_1.IsInt)(),
30
+ (0, class_validator_1.Min)(1),
31
+ (0, class_validator_1.Max)(8),
32
+ __metadata("design:type", Number)
33
+ ], GenerateImageDto.prototype, "numberOfImages", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.IsOptional)(),
36
+ (0, class_validator_1.IsEnum)(['1:1', '16:9', '9:16', '3:4', '4:3'], { message: 'aspectRatio must be one of "1:1", "16:9", "9:16", "3:4", "4:3"' }),
37
+ __metadata("design:type", String)
38
+ ], GenerateImageDto.prototype, "aspectRatio", void 0);
39
+ __decorate([
40
+ (0, class_validator_1.IsOptional)(),
41
+ (0, class_validator_1.IsString)(),
42
+ __metadata("design:type", String)
43
+ ], GenerateImageDto.prototype, "negativePrompt", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.IsOptional)(),
46
+ (0, class_validator_1.IsInt)(),
47
+ (0, class_validator_1.Min)(0),
48
+ (0, class_validator_1.Max)(4294967295),
49
+ __metadata("design:type", Number)
50
+ ], GenerateImageDto.prototype, "seed", void 0);
51
+ //# sourceMappingURL=generate-image.dto.js.map
@@ -0,0 +1,112 @@
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.GenerateVideoDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ class ImageInputDto {
16
+ bytesBase64Encoded;
17
+ gcsUri;
18
+ mimeType;
19
+ }
20
+ __decorate([
21
+ (0, class_validator_1.IsOptional)(),
22
+ (0, class_validator_1.IsBase64)(),
23
+ (0, class_validator_1.ValidateIf)((o) => !o.gcsUri),
24
+ (0, class_validator_1.IsNotEmpty)({ message: 'Either bytesBase64Encoded or gcsUri must be provided in image object' }),
25
+ __metadata("design:type", String)
26
+ ], ImageInputDto.prototype, "bytesBase64Encoded", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsOptional)(),
29
+ (0, class_validator_1.IsString)(),
30
+ (0, class_validator_1.Matches)(/^gs:\/\/.+/, { message: 'gcsUri must be a valid Cloud Storage URI (gs://...)' }),
31
+ (0, class_validator_1.ValidateIf)((o) => !o.bytesBase64Encoded),
32
+ (0, class_validator_1.IsNotEmpty)({ message: 'Either bytesBase64Encoded or gcsUri must be provided in image object' }),
33
+ __metadata("design:type", String)
34
+ ], ImageInputDto.prototype, "gcsUri", void 0);
35
+ __decorate([
36
+ (0, class_validator_1.IsString)(),
37
+ (0, class_validator_1.IsNotEmpty)(),
38
+ __metadata("design:type", String)
39
+ ], ImageInputDto.prototype, "mimeType", void 0);
40
+ class GenerateVideoDto {
41
+ prompt;
42
+ image;
43
+ durationSeconds = 8;
44
+ aspectRatio = '16:9';
45
+ negativePrompt;
46
+ personGeneration = 'allow_adult';
47
+ sampleCount = 1;
48
+ seed;
49
+ storageUri;
50
+ enhancePrompt = true;
51
+ }
52
+ exports.GenerateVideoDto = GenerateVideoDto;
53
+ __decorate([
54
+ (0, class_validator_1.IsOptional)(),
55
+ (0, class_validator_1.IsString)(),
56
+ (0, class_validator_1.ValidateIf)((o) => !o.image),
57
+ (0, class_validator_1.IsNotEmpty)({ message: 'prompt is required if image is not provided' }),
58
+ __metadata("design:type", String)
59
+ ], GenerateVideoDto.prototype, "prompt", void 0);
60
+ __decorate([
61
+ (0, class_validator_1.IsOptional)(),
62
+ (0, class_validator_1.ValidateNested)(),
63
+ (0, class_transformer_1.Type)(() => ImageInputDto),
64
+ __metadata("design:type", ImageInputDto)
65
+ ], GenerateVideoDto.prototype, "image", void 0);
66
+ __decorate([
67
+ (0, class_validator_1.IsInt)(),
68
+ (0, class_validator_1.Min)(5),
69
+ (0, class_validator_1.Max)(8),
70
+ __metadata("design:type", Number)
71
+ ], GenerateVideoDto.prototype, "durationSeconds", void 0);
72
+ __decorate([
73
+ (0, class_validator_1.IsOptional)(),
74
+ (0, class_validator_1.IsEnum)(['16:9', '9:16'], { message: 'aspectRatio must be either "16:9" or "9:16"' }),
75
+ __metadata("design:type", String)
76
+ ], GenerateVideoDto.prototype, "aspectRatio", void 0);
77
+ __decorate([
78
+ (0, class_validator_1.IsOptional)(),
79
+ (0, class_validator_1.IsString)(),
80
+ __metadata("design:type", String)
81
+ ], GenerateVideoDto.prototype, "negativePrompt", void 0);
82
+ __decorate([
83
+ (0, class_validator_1.IsOptional)(),
84
+ (0, class_validator_1.IsEnum)(['allow_adult', 'disallow'], { message: 'personGeneration must be either "allow_adult" or "disallow"' }),
85
+ __metadata("design:type", String)
86
+ ], GenerateVideoDto.prototype, "personGeneration", void 0);
87
+ __decorate([
88
+ (0, class_validator_1.IsOptional)(),
89
+ (0, class_validator_1.IsInt)(),
90
+ (0, class_validator_1.Min)(1),
91
+ (0, class_validator_1.Max)(4),
92
+ __metadata("design:type", Number)
93
+ ], GenerateVideoDto.prototype, "sampleCount", void 0);
94
+ __decorate([
95
+ (0, class_validator_1.IsOptional)(),
96
+ (0, class_validator_1.IsInt)(),
97
+ (0, class_validator_1.Min)(0),
98
+ (0, class_validator_1.Max)(4294967295),
99
+ __metadata("design:type", Number)
100
+ ], GenerateVideoDto.prototype, "seed", void 0);
101
+ __decorate([
102
+ (0, class_validator_1.IsOptional)(),
103
+ (0, class_validator_1.IsString)(),
104
+ (0, class_validator_1.Matches)(/^gs:\/\/.+\/.+/, { message: 'storageUri must be a valid Cloud Storage URI (gs://BUCKET_NAME/SUBDIRECTORY)' }),
105
+ __metadata("design:type", String)
106
+ ], GenerateVideoDto.prototype, "storageUri", void 0);
107
+ __decorate([
108
+ (0, class_validator_1.IsOptional)(),
109
+ (0, class_validator_1.IsBoolean)(),
110
+ __metadata("design:type", Boolean)
111
+ ], GenerateVideoDto.prototype, "enhancePrompt", void 0);
112
+ //# sourceMappingURL=generate-video.dto.js.map