Skip to content

Commit f63a646

Browse files
Merge branch 'main' into saas-and-mobile-fixes
2 parents 00ff8b3 + 8363e3c commit f63a646

File tree

13 files changed

+2427
-3828
lines changed

13 files changed

+2427
-3828
lines changed

backend/eslint.config.mjs

Lines changed: 0 additions & 59 deletions
This file was deleted.

backend/package.json

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
"scripts": {
1010
"prebuild": "rimraf dist",
1111
"build": "nest build",
12-
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
1312
"start": "nest start",
1413
"start:dev": "nest start --watch --preserveWatchOutput",
1514
"start:debug": "nest start --debug --watch",
@@ -62,7 +61,6 @@
6261
"crypto-js": "4.2.0",
6362
"csv": "^6.4.1",
6463
"dotenv": "17.2.3",
65-
"eslint-plugin-security": "3.0.1",
6664
"express": "5.2.1",
6765
"fetch-blob": "^4.0.0",
6866
"helmet": "8.1.0",
@@ -111,15 +109,9 @@
111109
"@types/supertest": "^6.0.3",
112110
"@types/uuid": "^11.0.0",
113111
"@types/validator": "^13.15.10",
114-
"@typescript-eslint/eslint-plugin": "^8.50.0",
115-
"@typescript-eslint/parser": "^8.50.0",
116112
"ava": "6.4.1",
117-
"eslint": "^9.39.2",
118-
"eslint-config-prettier": "^10.1.8",
119-
"eslint-plugin-import": "^2.32.0",
120113
"knip": "^5.75.0",
121114
"nock": "^14.0.10",
122-
"prettier": "^3.7.4",
123115
"supertest": "^7.1.4",
124116
"ts-loader": "^9.5.4",
125117
"ts-node": "^10.9.2",

backend/src/app.controller.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
import { Controller, Get, Inject, UseInterceptors } from '@nestjs/common';
2+
import { ApiTags } from '@nestjs/swagger';
23
import { UseCaseType } from './common/data-injection.tokens.js';
34
import { InTransactionEnum } from './enums/index.js';
45
import { SentryInterceptor } from './interceptors/index.js';
56
import { IGetHello } from './use-cases-app/use-cases-app.interface.js';
6-
import { ApiTags } from '@nestjs/swagger';
77

88
@UseInterceptors(SentryInterceptor)
99
@Controller()
1010
@ApiTags('app')
1111
export class AppController {
12-
constructor(
13-
@Inject(UseCaseType.GET_HELLO)
14-
private readonly getHelloUseCase: IGetHello,
15-
) {}
12+
constructor(
13+
@Inject(UseCaseType.GET_HELLO)
14+
private readonly getHelloUseCase: IGetHello,
15+
) {}
1616

17-
@Get('/hello')
18-
async getHello(): Promise<string> {
19-
return this.getHelloUseCase.execute(undefined, InTransactionEnum.OFF);
20-
}
17+
@Get('/hello')
18+
async getHello(): Promise<string> {
19+
return this.getHelloUseCase.execute(undefined, InTransactionEnum.OFF);
20+
}
2121
}
22-
Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,36 @@
1-
import { Injectable } from '@nestjs/common';
21
import { BedrockRuntimeClient, ConverseCommand } from '@aws-sdk/client-bedrock-runtime';
2+
import { Injectable } from '@nestjs/common';
33
import { IAIProvider } from './ai-provider.interface.js';
44

55
@Injectable()
66
export class AmazonBedrockAiProvider implements IAIProvider {
7-
private readonly bedrockRuntimeClient: BedrockRuntimeClient;
8-
private readonly modelId: string = 'global.anthropic.claude-sonnet-4-5-20250929-v1:0';
9-
private readonly temperature: number = 0.7;
10-
private readonly maxTokens: number = 1024;
11-
private readonly region: string = 'us-west-2';
12-
private readonly topP: number = 0.9;
7+
private readonly bedrockRuntimeClient: BedrockRuntimeClient;
8+
private readonly modelId: string = 'global.anthropic.claude-sonnet-4-5-20250929-v1:0';
139

14-
constructor() {
15-
this.bedrockRuntimeClient = new BedrockRuntimeClient({
16-
region: this.region,
17-
credentials: {
18-
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
19-
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
20-
},
21-
});
22-
}
23-
public async generateResponse(prompt: string): Promise<string> {
24-
const conversation = [
25-
{
26-
role: 'user' as const,
27-
content: [{ text: prompt }],
28-
},
29-
];
10+
constructor() {
11+
this.bedrockRuntimeClient = new BedrockRuntimeClient();
12+
}
13+
public async generateResponse(prompt: string): Promise<string> {
14+
const conversation = [
15+
{
16+
role: 'user' as const,
17+
content: [{ text: prompt }],
18+
},
19+
];
3020

31-
const command = new ConverseCommand({
32-
modelId: this.modelId,
33-
messages: conversation,
34-
inferenceConfig: { maxTokens: this.maxTokens, temperature: this.temperature, topP: this.topP },
35-
});
36-
try {
37-
const response = await this.bedrockRuntimeClient.send(command);
38-
const responseText = response.output.message?.content[0].text;
39-
return responseText || 'No response generated.';
40-
} catch (error) {
41-
console.error('Error generating AI response:', error);
42-
throw new Error('Failed to generate AI response.');
43-
}
44-
}
21+
const command = new ConverseCommand({
22+
modelId: this.modelId,
23+
messages: conversation,
24+
});
25+
try {
26+
const response = await this.bedrockRuntimeClient.send(command);
27+
console.info('AI response received from Amazon Bedrock.');
28+
const responseText = response.output.message?.content[0].text;
29+
console.info('AI response text. ', responseText);
30+
return responseText || 'No response generated.';
31+
} catch (error) {
32+
console.error('Error generating AI response:', error);
33+
throw new Error('Failed to generate AI response.');
34+
}
35+
}
4536
}

0 commit comments

Comments
 (0)