manifest 5.8.0 → 5.9.0

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.
Files changed (45) hide show
  1. package/dist/backend/analytics/controllers/agents.controller.js +3 -0
  2. package/dist/backend/analytics/controllers/agents.controller.js.map +1 -1
  3. package/dist/backend/database/database.module.js +6 -0
  4. package/dist/backend/database/database.module.js.map +1 -1
  5. package/dist/backend/database/migrations/1771700000000-EmailProviderConfigs.d.ts +6 -0
  6. package/dist/backend/database/migrations/1771700000000-EmailProviderConfigs.js +31 -0
  7. package/dist/backend/database/migrations/1771700000000-EmailProviderConfigs.js.map +1 -0
  8. package/dist/backend/database/migrations/1771800000000-AddNotificationEmailAndOptionalDomain.d.ts +6 -0
  9. package/dist/backend/database/migrations/1771800000000-AddNotificationEmailAndOptionalDomain.js +16 -0
  10. package/dist/backend/database/migrations/1771800000000-AddNotificationEmailAndOptionalDomain.js.map +1 -0
  11. package/dist/backend/entities/email-provider-config.entity.d.ts +11 -0
  12. package/dist/backend/entities/email-provider-config.entity.js +67 -0
  13. package/dist/backend/entities/email-provider-config.entity.js.map +1 -0
  14. package/dist/backend/notifications/dto/set-email-provider.dto.d.ts +12 -0
  15. package/dist/backend/notifications/dto/set-email-provider.dto.js +76 -0
  16. package/dist/backend/notifications/dto/set-email-provider.dto.js.map +1 -0
  17. package/dist/backend/notifications/notifications.controller.d.ts +36 -1
  18. package/dist/backend/notifications/notifications.controller.js +104 -4
  19. package/dist/backend/notifications/notifications.controller.js.map +1 -1
  20. package/dist/backend/notifications/notifications.module.js +2 -0
  21. package/dist/backend/notifications/notifications.module.js.map +1 -1
  22. package/dist/backend/notifications/services/email-provider-config.service.d.ts +43 -0
  23. package/dist/backend/notifications/services/email-provider-config.service.js +156 -0
  24. package/dist/backend/notifications/services/email-provider-config.service.js.map +1 -0
  25. package/dist/backend/notifications/services/email-provider-validation.d.ts +10 -0
  26. package/dist/backend/notifications/services/email-provider-validation.js +39 -0
  27. package/dist/backend/notifications/services/email-provider-validation.js.map +1 -0
  28. package/dist/backend/notifications/services/notification-cron.service.d.ts +3 -1
  29. package/dist/backend/notifications/services/notification-cron.service.js +11 -3
  30. package/dist/backend/notifications/services/notification-cron.service.js.map +1 -1
  31. package/dist/backend/notifications/services/notification-email.service.d.ts +5 -1
  32. package/dist/backend/notifications/services/notification-email.service.js +21 -2
  33. package/dist/backend/notifications/services/notification-email.service.js.map +1 -1
  34. package/dist/index.js +2 -2
  35. package/package.json +1 -1
  36. package/public/assets/index-TCQMdxIL.js +7 -0
  37. package/public/assets/index-nMEuPURg.css +1 -0
  38. package/public/index.html +2 -2
  39. package/public/logos/mailgun.svg +13 -0
  40. package/public/logos/resend.svg +4 -0
  41. package/public/logos/sendgrid.svg +18 -0
  42. package/public/assets/EmailProviderConfig-epdTuKJu.js +0 -1
  43. package/public/assets/NotificationEmailSection-BRwt_15v.js +0 -1
  44. package/public/assets/index-BZTRuQmX.css +0 -1
  45. package/public/assets/index-DFS0O5rP.js +0 -7
@@ -65,6 +65,9 @@ let AgentsController = class AgentsController {
65
65
  return { apiKey: result.apiKey };
66
66
  }
67
67
  async deleteAgent(user, agentName) {
68
+ if (process.env['MANIFEST_MODE'] === 'local') {
69
+ throw new common_1.ForbiddenException('Cannot delete agents in local mode');
70
+ }
68
71
  await this.aggregation.deleteAgent(user.id, agentName);
69
72
  return { deleted: true };
70
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agents.controller.js","sourceRoot":"","sources":["../../../src/analytics/controllers/agents.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA6F;AAC7F,yDAAiD;AACjD,2CAA+C;AAC/C,2BAA8C;AAC9C,+BAA4B;AAC5B,2BAA6B;AAC7B,uFAAkF;AAClF,yEAAqE;AACrE,yEAA6E;AAC7E,8EAAgE;AAEhE,wEAAmE;AACnE,6FAAwF;AACxF,4EAAgF;AAEhF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC;AAGnD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAER;IACA;IACA;IACA;IAJnB,YACmB,UAAoC,EACpC,WAA+B,EAC/B,eAAuC,EACvC,MAAqB;QAHrB,eAAU,GAAV,UAAU,CAA0B;QACpC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,oBAAe,GAAf,eAAe,CAAwB;QACvC,WAAM,GAAN,MAAM,CAAe;IACrC,CAAC;IAKE,AAAN,KAAK,CAAC,SAAS,CAAgB,IAAc;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAgB,IAAc,EAAU,IAAoB;QAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;YACrD,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACnF,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAgB,IAAc,EAAsB,SAAiB;QACpF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,OAAO;YACL,GAAG,OAAO;YACV,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,cAAc,CAAgB,IAAc,EAAsB,SAAiB;QACvF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACxE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAgB,IAAc,EAAsB,SAAiB;QACpF,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AAjDY,4CAAgB;AAWrB;IAHL,IAAA,YAAG,EAAC,QAAQ,CAAC;IACb,IAAA,wBAAe,EAAC,6CAAoB,CAAC;IACrC,IAAA,wBAAQ,EAAC,wCAAsB,CAAC;IAChB,WAAA,IAAA,oCAAW,GAAE,CAAA;;;;iDAG7B;AAGK;IADL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACI,WAAA,IAAA,oCAAW,GAAE,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;;6CAAO,iCAAc;;mDAO5E;AAGK;IADL,IAAA,YAAG,EAAC,uBAAuB,CAAC;IACV,WAAA,IAAA,oCAAW,GAAE,CAAA;IAAkB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;mDASnE;AAGK;IADL,IAAA,aAAI,EAAC,8BAA8B,CAAC;IACf,WAAA,IAAA,oCAAW,GAAE,CAAA;IAAkB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;sDAGtE;AAGK;IADL,IAAA,eAAM,EAAC,mBAAmB,CAAC;IACT,WAAA,IAAA,oCAAW,GAAE,CAAA;IAAkB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;mDAGnE;2BAhDU,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,QAAQ,CAAC;qCAGY,qDAAwB;QACvB,wCAAkB;QACd,wCAAsB;QAC/B,sBAAa;GAL7B,gBAAgB,CAiD5B;AAED,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"agents.controller.js","sourceRoot":"","sources":["../../../src/analytics/controllers/agents.controller.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ const agent_entity_1 = require("../entities/agent.entity");
27
27
  const agent_api_key_entity_1 = require("../entities/agent-api-key.entity");
28
28
  const notification_rule_entity_1 = require("../entities/notification-rule.entity");
29
29
  const notification_log_entity_1 = require("../entities/notification-log.entity");
30
+ const email_provider_config_entity_1 = require("../entities/email-provider-config.entity");
30
31
  const user_provider_entity_1 = require("../entities/user-provider.entity");
31
32
  const tier_assignment_entity_1 = require("../entities/tier-assignment.entity");
32
33
  const database_seeder_service_1 = require("./database-seeder.service");
@@ -35,6 +36,8 @@ const model_prices_module_1 = require("../model-prices/model-prices.module");
35
36
  const _1771464895790_InitialSchema_1 = require("./migrations/1771464895790-InitialSchema");
36
37
  const _1771500000000_HashApiKeys_1 = require("./migrations/1771500000000-HashApiKeys");
37
38
  const _1771600000000_ModelPricingImprovements_1 = require("./migrations/1771600000000-ModelPricingImprovements");
39
+ const _1771700000000_EmailProviderConfigs_1 = require("./migrations/1771700000000-EmailProviderConfigs");
40
+ const _1771800000000_AddNotificationEmailAndOptionalDomain_1 = require("./migrations/1771800000000-AddNotificationEmailAndOptionalDomain");
38
41
  const _1771600000000_AddModelCapabilities_1 = require("./migrations/1771600000000-AddModelCapabilities");
39
42
  const _1771700000000_AddRoutingTables_1 = require("./migrations/1771700000000-AddRoutingTables");
40
43
  const _1771800000000_AddQualityScore_1 = require("./migrations/1771800000000-AddQualityScore");
@@ -48,12 +51,15 @@ const entities = [
48
51
  token_usage_snapshot_entity_1.TokenUsageSnapshot, cost_snapshot_entity_1.CostSnapshot, agent_log_entity_1.AgentLog,
49
52
  api_key_entity_1.ApiKey, tenant_entity_1.Tenant, agent_entity_1.Agent, agent_api_key_entity_1.AgentApiKey,
50
53
  notification_rule_entity_1.NotificationRule, notification_log_entity_1.NotificationLog,
54
+ email_provider_config_entity_1.EmailProviderConfig,
51
55
  user_provider_entity_1.UserProvider, tier_assignment_entity_1.TierAssignment,
52
56
  ];
53
57
  const migrations = [
54
58
  _1771464895790_InitialSchema_1.InitialSchema1771464895790,
55
59
  _1771500000000_HashApiKeys_1.HashApiKeys1771500000000,
56
60
  _1771600000000_ModelPricingImprovements_1.ModelPricingImprovements1771600000000,
61
+ _1771700000000_EmailProviderConfigs_1.EmailProviderConfigs1771700000000,
62
+ _1771800000000_AddNotificationEmailAndOptionalDomain_1.AddNotificationEmailAndOptionalDomain1771800000000,
57
63
  _1771600000000_AddModelCapabilities_1.AddModelCapabilities1771600000000,
58
64
  _1771700000000_AddRoutingTables_1.AddRoutingTables1771700000000,
59
65
  _1771800000000_AddQualityScore_1.AddQualityScore1771800000000,
@@ -1 +1 @@
1
- {"version":3,"file":"database.module.js","sourceRoot":"","sources":["../../src/database/database.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.module.js","sourceRoot":"","sources":["../../src/database/database.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class EmailProviderConfigs1771700000000 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmailProviderConfigs1771700000000 = void 0;
4
+ class EmailProviderConfigs1771700000000 {
5
+ name = 'EmailProviderConfigs1771700000000';
6
+ async up(queryRunner) {
7
+ await queryRunner.query(`
8
+ CREATE TABLE "email_provider_configs" (
9
+ "id" character varying NOT NULL,
10
+ "user_id" character varying NOT NULL,
11
+ "provider" character varying NOT NULL,
12
+ "api_key_encrypted" character varying NOT NULL,
13
+ "domain" character varying NOT NULL,
14
+ "is_active" boolean NOT NULL DEFAULT true,
15
+ "created_at" TIMESTAMP NOT NULL DEFAULT NOW(),
16
+ "updated_at" TIMESTAMP NOT NULL DEFAULT NOW(),
17
+ CONSTRAINT "PK_email_provider_configs" PRIMARY KEY ("id")
18
+ )
19
+ `);
20
+ await queryRunner.query(`
21
+ CREATE UNIQUE INDEX "IDX_email_provider_configs_user_id"
22
+ ON "email_provider_configs" ("user_id")
23
+ `);
24
+ }
25
+ async down(queryRunner) {
26
+ await queryRunner.query(`DROP INDEX "IDX_email_provider_configs_user_id"`);
27
+ await queryRunner.query(`DROP TABLE "email_provider_configs"`);
28
+ }
29
+ }
30
+ exports.EmailProviderConfigs1771700000000 = EmailProviderConfigs1771700000000;
31
+ //# sourceMappingURL=1771700000000-EmailProviderConfigs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1771700000000-EmailProviderConfigs.js","sourceRoot":"","sources":["../../../src/database/migrations/1771700000000-EmailProviderConfigs.ts"],"names":[],"mappings":";;;AAEA,MAAa,iCAAiC;IAC5C,IAAI,GAAG,mCAAmC,CAAC;IAEpC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;KAYvB,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,KAAK,CAAC;;;KAGvB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC3E,MAAM,WAAW,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACjE,CAAC;CACF;AA5BD,8EA4BC"}
@@ -0,0 +1,6 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class AddNotificationEmailAndOptionalDomain1771800000000 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddNotificationEmailAndOptionalDomain1771800000000 = void 0;
4
+ class AddNotificationEmailAndOptionalDomain1771800000000 {
5
+ name = 'AddNotificationEmailAndOptionalDomain1771800000000';
6
+ async up(queryRunner) {
7
+ await queryRunner.query(`ALTER TABLE "email_provider_configs" ADD COLUMN "notification_email" character varying`);
8
+ await queryRunner.query(`ALTER TABLE "email_provider_configs" ALTER COLUMN "domain" DROP NOT NULL`);
9
+ }
10
+ async down(queryRunner) {
11
+ await queryRunner.query(`ALTER TABLE "email_provider_configs" ALTER COLUMN "domain" SET NOT NULL`);
12
+ await queryRunner.query(`ALTER TABLE "email_provider_configs" DROP COLUMN "notification_email"`);
13
+ }
14
+ }
15
+ exports.AddNotificationEmailAndOptionalDomain1771800000000 = AddNotificationEmailAndOptionalDomain1771800000000;
16
+ //# sourceMappingURL=1771800000000-AddNotificationEmailAndOptionalDomain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1771800000000-AddNotificationEmailAndOptionalDomain.js","sourceRoot":"","sources":["../../../src/database/migrations/1771800000000-AddNotificationEmailAndOptionalDomain.ts"],"names":[],"mappings":";;;AAEA,MAAa,kDAAkD;IAC7D,IAAI,GAAG,oDAAoD,CAAC;IAErD,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,wFAAwF,CACzF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,yEAAyE,CAC1E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,uEAAuE,CACxE,CAAC;IACJ,CAAC;CACF;AApBD,gHAoBC"}
@@ -0,0 +1,11 @@
1
+ export declare class EmailProviderConfig {
2
+ id: string;
3
+ user_id: string;
4
+ provider: string;
5
+ api_key_encrypted: string;
6
+ domain: string | null;
7
+ notification_email: string | null;
8
+ is_active: boolean;
9
+ created_at: string;
10
+ updated_at: string;
11
+ }
@@ -0,0 +1,67 @@
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.EmailProviderConfig = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const sql_dialect_1 = require("../common/utils/sql-dialect");
15
+ let EmailProviderConfig = class EmailProviderConfig {
16
+ id;
17
+ user_id;
18
+ provider;
19
+ api_key_encrypted;
20
+ domain;
21
+ notification_email;
22
+ is_active;
23
+ created_at;
24
+ updated_at;
25
+ };
26
+ exports.EmailProviderConfig = EmailProviderConfig;
27
+ __decorate([
28
+ (0, typeorm_1.PrimaryColumn)('varchar'),
29
+ __metadata("design:type", String)
30
+ ], EmailProviderConfig.prototype, "id", void 0);
31
+ __decorate([
32
+ (0, typeorm_1.Column)('varchar'),
33
+ __metadata("design:type", String)
34
+ ], EmailProviderConfig.prototype, "user_id", void 0);
35
+ __decorate([
36
+ (0, typeorm_1.Column)('varchar'),
37
+ __metadata("design:type", String)
38
+ ], EmailProviderConfig.prototype, "provider", void 0);
39
+ __decorate([
40
+ (0, typeorm_1.Column)('varchar'),
41
+ __metadata("design:type", String)
42
+ ], EmailProviderConfig.prototype, "api_key_encrypted", void 0);
43
+ __decorate([
44
+ (0, typeorm_1.Column)('varchar', { nullable: true }),
45
+ __metadata("design:type", Object)
46
+ ], EmailProviderConfig.prototype, "domain", void 0);
47
+ __decorate([
48
+ (0, typeorm_1.Column)('varchar', { nullable: true }),
49
+ __metadata("design:type", Object)
50
+ ], EmailProviderConfig.prototype, "notification_email", void 0);
51
+ __decorate([
52
+ (0, typeorm_1.Column)('boolean', { default: true }),
53
+ __metadata("design:type", Boolean)
54
+ ], EmailProviderConfig.prototype, "is_active", void 0);
55
+ __decorate([
56
+ (0, typeorm_1.Column)((0, sql_dialect_1.timestampType)(), { default: (0, sql_dialect_1.timestampDefault)() }),
57
+ __metadata("design:type", String)
58
+ ], EmailProviderConfig.prototype, "created_at", void 0);
59
+ __decorate([
60
+ (0, typeorm_1.Column)((0, sql_dialect_1.timestampType)(), { default: (0, sql_dialect_1.timestampDefault)() }),
61
+ __metadata("design:type", String)
62
+ ], EmailProviderConfig.prototype, "updated_at", void 0);
63
+ exports.EmailProviderConfig = EmailProviderConfig = __decorate([
64
+ (0, typeorm_1.Entity)('email_provider_configs'),
65
+ (0, typeorm_1.Index)(['user_id'], { unique: true })
66
+ ], EmailProviderConfig);
67
+ //# sourceMappingURL=email-provider-config.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-provider-config.entity.js","sourceRoot":"","sources":["../../src/entities/email-provider-config.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAKiB;AACjB,6DAA8E;AAIvE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAE9B,EAAE,CAAU;IAGZ,OAAO,CAAU;IAGjB,QAAQ,CAAU;IAGlB,iBAAiB,CAAU;IAG3B,MAAM,CAAiB;IAGvB,kBAAkB,CAAiB;IAGnC,SAAS,CAAW;IAGpB,UAAU,CAAU;IAGpB,UAAU,CAAU;CACrB,CAAA;AA3BY,kDAAmB;AAE9B;IADC,IAAA,uBAAa,EAAC,SAAS,CAAC;;+CACb;AAGZ;IADC,IAAA,gBAAM,EAAC,SAAS,CAAC;;oDACD;AAGjB;IADC,IAAA,gBAAM,EAAC,SAAS,CAAC;;qDACA;AAGlB;IADC,IAAA,gBAAM,EAAC,SAAS,CAAC;;8DACS;AAG3B;IADC,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACf;AAGvB;IADC,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+DACH;AAGnC;IADC,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;sDACjB;AAGpB;IADC,IAAA,gBAAM,EAAC,IAAA,2BAAa,GAAE,EAAE,EAAE,OAAO,EAAE,IAAA,8BAAgB,GAAE,EAAE,CAAC;;uDACrC;AAGpB;IADC,IAAA,gBAAM,EAAC,IAAA,2BAAa,GAAE,EAAE,EAAE,OAAO,EAAE,IAAA,8BAAgB,GAAE,EAAE,CAAC;;uDACrC;8BA1BT,mBAAmB;IAF/B,IAAA,gBAAM,EAAC,wBAAwB,CAAC;IAChC,IAAA,eAAK,EAAC,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;GACxB,mBAAmB,CA2B/B"}
@@ -0,0 +1,12 @@
1
+ export declare class SetEmailProviderDto {
2
+ provider: string;
3
+ apiKey?: string;
4
+ domain?: string;
5
+ notificationEmail?: string;
6
+ }
7
+ export declare class TestEmailProviderDto {
8
+ provider: string;
9
+ apiKey: string;
10
+ domain?: string;
11
+ to: string;
12
+ }
@@ -0,0 +1,76 @@
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.TestEmailProviderDto = exports.SetEmailProviderDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ class SetEmailProviderDto {
16
+ provider;
17
+ apiKey;
18
+ domain;
19
+ notificationEmail;
20
+ }
21
+ exports.SetEmailProviderDto = SetEmailProviderDto;
22
+ __decorate([
23
+ (0, class_validator_1.IsString)(),
24
+ (0, class_validator_1.IsIn)(['resend', 'mailgun', 'sendgrid']),
25
+ __metadata("design:type", String)
26
+ ], SetEmailProviderDto.prototype, "provider", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsOptional)(),
29
+ (0, class_validator_1.IsString)(),
30
+ (0, class_validator_1.MinLength)(8),
31
+ (0, class_transformer_1.Transform)(({ value }) => typeof value === 'string' ? value.trim() : value),
32
+ __metadata("design:type", String)
33
+ ], SetEmailProviderDto.prototype, "apiKey", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.ValidateIf)((o) => o.provider === 'mailgun'),
36
+ (0, class_validator_1.IsString)(),
37
+ (0, class_validator_1.MinLength)(1),
38
+ (0, class_transformer_1.Transform)(({ value }) => typeof value === 'string' ? value.trim().toLowerCase() : value),
39
+ __metadata("design:type", String)
40
+ ], SetEmailProviderDto.prototype, "domain", void 0);
41
+ __decorate([
42
+ (0, class_validator_1.IsOptional)(),
43
+ (0, class_validator_1.IsEmail)(),
44
+ (0, class_transformer_1.Transform)(({ value }) => typeof value === 'string' ? value.trim().toLowerCase() : value),
45
+ __metadata("design:type", String)
46
+ ], SetEmailProviderDto.prototype, "notificationEmail", void 0);
47
+ class TestEmailProviderDto {
48
+ provider;
49
+ apiKey;
50
+ domain;
51
+ to;
52
+ }
53
+ exports.TestEmailProviderDto = TestEmailProviderDto;
54
+ __decorate([
55
+ (0, class_validator_1.IsString)(),
56
+ (0, class_validator_1.IsIn)(['resend', 'mailgun', 'sendgrid']),
57
+ __metadata("design:type", String)
58
+ ], TestEmailProviderDto.prototype, "provider", void 0);
59
+ __decorate([
60
+ (0, class_validator_1.IsString)(),
61
+ (0, class_validator_1.MinLength)(8),
62
+ (0, class_transformer_1.Transform)(({ value }) => typeof value === 'string' ? value.trim() : value),
63
+ __metadata("design:type", String)
64
+ ], TestEmailProviderDto.prototype, "apiKey", void 0);
65
+ __decorate([
66
+ (0, class_validator_1.ValidateIf)((o) => o.provider === 'mailgun'),
67
+ (0, class_validator_1.IsString)(),
68
+ (0, class_validator_1.MinLength)(1),
69
+ (0, class_transformer_1.Transform)(({ value }) => typeof value === 'string' ? value.trim().toLowerCase() : value),
70
+ __metadata("design:type", String)
71
+ ], TestEmailProviderDto.prototype, "domain", void 0);
72
+ __decorate([
73
+ (0, class_validator_1.IsString)(),
74
+ __metadata("design:type", String)
75
+ ], TestEmailProviderDto.prototype, "to", void 0);
76
+ //# sourceMappingURL=set-email-provider.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-email-provider.dto.js","sourceRoot":"","sources":["../../../src/notifications/dto/set-email-provider.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA6F;AAC7F,yDAA8C;AAE9C,MAAa,mBAAmB;IAG9B,QAAQ,CAAU;IAMlB,MAAM,CAAU;IAMhB,MAAM,CAAU;IAKhB,iBAAiB,CAAU;CAC5B;AArBD,kDAqBC;AAlBC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,sBAAI,EAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;;qDACtB;AAMlB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;;mDAC3D;AAMhB;IAJC,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC3C,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;;mDACzE;AAKhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;;8DAC9D;AAG7B,MAAa,oBAAoB;IAG/B,QAAQ,CAAU;IAKlB,MAAM,CAAU;IAMhB,MAAM,CAAU;IAGhB,EAAE,CAAU;CACb;AAlBD,oDAkBC;AAfC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,sBAAI,EAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;;sDACtB;AAKlB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;;oDAC3D;AAMhB;IAJC,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC3C,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;;oDACzE;AAGhB;IADC,IAAA,0BAAQ,GAAE;;gDACC"}
@@ -1,9 +1,44 @@
1
1
  import { AuthUser } from '../auth/auth.instance';
2
2
  import { NotificationRulesService } from './services/notification-rules.service';
3
+ import { EmailProviderConfigService } from './services/email-provider-config.service';
4
+ import { NotificationCronService } from './services/notification-cron.service';
3
5
  import { CreateNotificationRuleDto, UpdateNotificationRuleDto } from './dto/notification-rule.dto';
6
+ import { SetEmailProviderDto, TestEmailProviderDto } from './dto/set-email-provider.dto';
4
7
  export declare class NotificationsController {
5
8
  private readonly rulesService;
6
- constructor(rulesService: NotificationRulesService);
9
+ private readonly emailProviderConfigService;
10
+ private readonly cronService;
11
+ private readonly logger;
12
+ constructor(rulesService: NotificationRulesService, emailProviderConfigService: EmailProviderConfigService, cronService: NotificationCronService);
13
+ getEmailProvider(user: AuthUser): Promise<import("./services/email-provider-config.service").EmailProviderPublicConfig | {
14
+ configured: boolean;
15
+ }>;
16
+ testEmailProvider(user: AuthUser, body: TestEmailProviderDto): Promise<{
17
+ success: boolean;
18
+ error?: string;
19
+ }>;
20
+ testSavedEmailProvider(user: AuthUser, body: {
21
+ to: string;
22
+ }): Promise<{
23
+ success: boolean;
24
+ error?: string;
25
+ }>;
26
+ setEmailProvider(user: AuthUser, body: SetEmailProviderDto): Promise<import("./services/email-provider-config.service").EmailProviderPublicConfig>;
27
+ removeEmailProvider(user: AuthUser): Promise<{
28
+ ok: boolean;
29
+ }>;
30
+ getNotificationEmail(user: AuthUser): Promise<{
31
+ email: string | null;
32
+ }>;
33
+ setNotificationEmail(user: AuthUser, body: {
34
+ email: string;
35
+ }): Promise<{
36
+ saved: boolean;
37
+ }>;
38
+ triggerCheck(): Promise<{
39
+ triggered: number;
40
+ message: string;
41
+ }>;
7
42
  listRules(agentName: string, user: AuthUser): Promise<any>;
8
43
  createRule(dto: CreateNotificationRuleDto, user: AuthUser): Promise<any>;
9
44
  updateRule(id: string, dto: UpdateNotificationRuleDto, user: AuthUser): Promise<any>;
@@ -11,16 +11,55 @@ 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 NotificationsController_1;
14
15
  Object.defineProperty(exports, "__esModule", { value: true });
15
16
  exports.NotificationsController = void 0;
16
17
  const common_1 = require("@nestjs/common");
17
18
  const current_user_decorator_1 = require("../auth/current-user.decorator");
18
19
  const notification_rules_service_1 = require("./services/notification-rules.service");
20
+ const email_provider_config_service_1 = require("./services/email-provider-config.service");
21
+ const notification_cron_service_1 = require("./services/notification-cron.service");
19
22
  const notification_rule_dto_1 = require("./dto/notification-rule.dto");
20
- let NotificationsController = class NotificationsController {
23
+ const set_email_provider_dto_1 = require("./dto/set-email-provider.dto");
24
+ let NotificationsController = NotificationsController_1 = class NotificationsController {
21
25
  rulesService;
22
- constructor(rulesService) {
26
+ emailProviderConfigService;
27
+ cronService;
28
+ logger = new common_1.Logger(NotificationsController_1.name);
29
+ constructor(rulesService, emailProviderConfigService, cronService) {
23
30
  this.rulesService = rulesService;
31
+ this.emailProviderConfigService = emailProviderConfigService;
32
+ this.cronService = cronService;
33
+ }
34
+ async getEmailProvider(user) {
35
+ const config = await this.emailProviderConfigService.getConfig(user.id);
36
+ return config ?? { configured: false };
37
+ }
38
+ async testEmailProvider(user, body) {
39
+ return this.emailProviderConfigService.testConfig({ provider: body.provider, apiKey: body.apiKey, domain: body.domain }, body.to);
40
+ }
41
+ async testSavedEmailProvider(user, body) {
42
+ return this.emailProviderConfigService.testSavedConfig(user.id, body.to);
43
+ }
44
+ async setEmailProvider(user, body) {
45
+ return this.emailProviderConfigService.upsert(user.id, body);
46
+ }
47
+ async removeEmailProvider(user) {
48
+ await this.emailProviderConfigService.remove(user.id);
49
+ return { ok: true };
50
+ }
51
+ async getNotificationEmail(user) {
52
+ const email = await this.emailProviderConfigService.getNotificationEmail(user.id);
53
+ return { email };
54
+ }
55
+ async setNotificationEmail(user, body) {
56
+ await this.emailProviderConfigService.setNotificationEmail(user.id, body.email);
57
+ return { saved: true };
58
+ }
59
+ async triggerCheck() {
60
+ this.logger.log('Manual notification check triggered');
61
+ const triggered = await this.cronService.checkThresholds();
62
+ return { triggered, message: `${triggered} notification(s) triggered` };
24
63
  }
25
64
  async listRules(agentName, user) {
26
65
  return this.rulesService.listRules(user.id, agentName);
@@ -37,6 +76,65 @@ let NotificationsController = class NotificationsController {
37
76
  }
38
77
  };
39
78
  exports.NotificationsController = NotificationsController;
79
+ __decorate([
80
+ (0, common_1.Get)('email-provider'),
81
+ __param(0, (0, current_user_decorator_1.CurrentUser)()),
82
+ __metadata("design:type", Function),
83
+ __metadata("design:paramtypes", [Object]),
84
+ __metadata("design:returntype", Promise)
85
+ ], NotificationsController.prototype, "getEmailProvider", null);
86
+ __decorate([
87
+ (0, common_1.Post)('email-provider/test'),
88
+ __param(0, (0, current_user_decorator_1.CurrentUser)()),
89
+ __param(1, (0, common_1.Body)()),
90
+ __metadata("design:type", Function),
91
+ __metadata("design:paramtypes", [Object, set_email_provider_dto_1.TestEmailProviderDto]),
92
+ __metadata("design:returntype", Promise)
93
+ ], NotificationsController.prototype, "testEmailProvider", null);
94
+ __decorate([
95
+ (0, common_1.Post)('email-provider/test-saved'),
96
+ __param(0, (0, current_user_decorator_1.CurrentUser)()),
97
+ __param(1, (0, common_1.Body)()),
98
+ __metadata("design:type", Function),
99
+ __metadata("design:paramtypes", [Object, Object]),
100
+ __metadata("design:returntype", Promise)
101
+ ], NotificationsController.prototype, "testSavedEmailProvider", null);
102
+ __decorate([
103
+ (0, common_1.Post)('email-provider'),
104
+ __param(0, (0, current_user_decorator_1.CurrentUser)()),
105
+ __param(1, (0, common_1.Body)()),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", [Object, set_email_provider_dto_1.SetEmailProviderDto]),
108
+ __metadata("design:returntype", Promise)
109
+ ], NotificationsController.prototype, "setEmailProvider", null);
110
+ __decorate([
111
+ (0, common_1.Delete)('email-provider'),
112
+ __param(0, (0, current_user_decorator_1.CurrentUser)()),
113
+ __metadata("design:type", Function),
114
+ __metadata("design:paramtypes", [Object]),
115
+ __metadata("design:returntype", Promise)
116
+ ], NotificationsController.prototype, "removeEmailProvider", null);
117
+ __decorate([
118
+ (0, common_1.Get)('notification-email'),
119
+ __param(0, (0, current_user_decorator_1.CurrentUser)()),
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", [Object]),
122
+ __metadata("design:returntype", Promise)
123
+ ], NotificationsController.prototype, "getNotificationEmail", null);
124
+ __decorate([
125
+ (0, common_1.Post)('notification-email'),
126
+ __param(0, (0, current_user_decorator_1.CurrentUser)()),
127
+ __param(1, (0, common_1.Body)()),
128
+ __metadata("design:type", Function),
129
+ __metadata("design:paramtypes", [Object, Object]),
130
+ __metadata("design:returntype", Promise)
131
+ ], NotificationsController.prototype, "setNotificationEmail", null);
132
+ __decorate([
133
+ (0, common_1.Post)('trigger-check'),
134
+ __metadata("design:type", Function),
135
+ __metadata("design:paramtypes", []),
136
+ __metadata("design:returntype", Promise)
137
+ ], NotificationsController.prototype, "triggerCheck", null);
40
138
  __decorate([
41
139
  (0, common_1.Get)(),
42
140
  __param(0, (0, common_1.Query)('agent_name')),
@@ -70,8 +168,10 @@ __decorate([
70
168
  __metadata("design:paramtypes", [String, Object]),
71
169
  __metadata("design:returntype", Promise)
72
170
  ], NotificationsController.prototype, "deleteRule", null);
73
- exports.NotificationsController = NotificationsController = __decorate([
171
+ exports.NotificationsController = NotificationsController = NotificationsController_1 = __decorate([
74
172
  (0, common_1.Controller)('api/v1/notifications'),
75
- __metadata("design:paramtypes", [notification_rules_service_1.NotificationRulesService])
173
+ __metadata("design:paramtypes", [notification_rules_service_1.NotificationRulesService,
174
+ email_provider_config_service_1.EmailProviderConfigService,
175
+ notification_cron_service_1.NotificationCronService])
76
176
  ], NotificationsController);
77
177
  //# sourceMappingURL=notifications.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.controller.js","sourceRoot":"","sources":["../../src/notifications/notifications.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA0F;AAC1F,2EAA6D;AAE7D,sFAAiF;AACjF,uEAAmG;AAG5F,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACL;IAA7B,YAA6B,YAAsC;QAAtC,iBAAY,GAAZ,YAAY,CAA0B;IAAG,CAAC;IAGjE,AAAN,KAAK,CAAC,SAAS,CACQ,SAAiB,EACvB,IAAc;QAE7B,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CACN,GAA8B,EACvB,IAAc;QAE7B,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CACD,EAAU,EACf,GAA8B,EACvB,IAAc;QAE7B,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CACD,EAAU,EACR,IAAc;QAE7B,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AApCY,0DAAuB;AAI5B;IADL,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;IACnB,WAAA,IAAA,oCAAW,GAAE,CAAA;;;;wDAGf;AAGK;IADL,IAAA,aAAI,GAAE;IAEJ,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,oCAAW,GAAE,CAAA;;qCADD,iDAAyB;;yDAIvC;AAGK;IADL,IAAA,cAAK,EAAC,KAAK,CAAC;IAEV,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACX,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,oCAAW,GAAE,CAAA;;6CADD,iDAAyB;;yDAIvC;AAGK;IADL,IAAA,eAAM,EAAC,KAAK,CAAC;IAEX,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACX,WAAA,IAAA,oCAAW,GAAE,CAAA;;;;yDAIf;kCAnCU,uBAAuB;IADnC,IAAA,mBAAU,EAAC,sBAAsB,CAAC;qCAEU,qDAAwB;GADxD,uBAAuB,CAoCnC"}
1
+ {"version":3,"file":"notifications.controller.js","sourceRoot":"","sources":["../../src/notifications/notifications.controller.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ const notification_cron_service_1 = require("./services/notification-cron.servic
15
15
  const notification_email_service_1 = require("./services/notification-email.service");
16
16
  const email_config_service_1 = require("./services/email-config.service");
17
17
  const notification_email_address_service_1 = require("./services/notification-email-address.service");
18
+ const email_provider_config_service_1 = require("./services/email-provider-config.service");
18
19
  let NotificationsModule = class NotificationsModule {
19
20
  };
20
21
  exports.NotificationsModule = NotificationsModule;
@@ -27,6 +28,7 @@ exports.NotificationsModule = NotificationsModule = __decorate([
27
28
  notification_email_service_1.NotificationEmailService,
28
29
  email_config_service_1.EmailConfigService,
29
30
  notification_email_address_service_1.NotificationEmailAddressService,
31
+ email_provider_config_service_1.EmailProviderConfigService,
30
32
  ],
31
33
  })
32
34
  ], NotificationsModule);
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.module.js","sourceRoot":"","sources":["../../src/notifications/notifications.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yEAAqE;AACrE,uEAAkE;AAClE,sFAAiF;AACjF,oFAA+E;AAC/E,sFAAiF;AACjF,0EAAqE;AACrE,sGAAgG;AAYzF,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAV/B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,kDAAuB,EAAE,+CAAqB,CAAC;QAC7D,SAAS,EAAE;YACT,qDAAwB;YACxB,mDAAuB;YACvB,qDAAwB;YACxB,yCAAkB;YAClB,oEAA+B;SAChC;KACF,CAAC;GACW,mBAAmB,CAAG"}
1
+ {"version":3,"file":"notifications.module.js","sourceRoot":"","sources":["../../src/notifications/notifications.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yEAAqE;AACrE,uEAAkE;AAClE,sFAAiF;AACjF,oFAA+E;AAC/E,sFAAiF;AACjF,0EAAqE;AACrE,sGAAgG;AAChG,4FAAsF;AAa/E,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAX/B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,kDAAuB,EAAE,+CAAqB,CAAC;QAC7D,SAAS,EAAE;YACT,qDAAwB;YACxB,mDAAuB;YACvB,qDAAwB;YACxB,yCAAkB;YAClB,oEAA+B;YAC/B,0DAA0B;SAC3B;KACF,CAAC;GACW,mBAAmB,CAAG"}
@@ -0,0 +1,43 @@
1
+ import { DataSource } from 'typeorm';
2
+ export interface EmailProviderPublicConfig {
3
+ provider: string;
4
+ domain: string | null;
5
+ keyPrefix: string;
6
+ is_active: boolean;
7
+ notificationEmail: string | null;
8
+ }
9
+ export interface EmailProviderFullConfig {
10
+ provider: string;
11
+ apiKey: string;
12
+ domain: string | null;
13
+ notificationEmail: string | null;
14
+ }
15
+ export declare class EmailProviderConfigService {
16
+ private readonly ds;
17
+ private readonly dialect;
18
+ constructor(ds: DataSource);
19
+ private sql;
20
+ getConfig(userId: string): Promise<EmailProviderPublicConfig | null>;
21
+ upsert(userId: string, dto: {
22
+ provider: string;
23
+ apiKey?: string;
24
+ domain?: string;
25
+ notificationEmail?: string;
26
+ }): Promise<EmailProviderPublicConfig>;
27
+ remove(userId: string): Promise<void>;
28
+ getFullConfig(userId: string): Promise<EmailProviderFullConfig | null>;
29
+ getNotificationEmail(userId: string): Promise<string | null>;
30
+ setNotificationEmail(userId: string, email: string): Promise<void>;
31
+ testSavedConfig(userId: string, toEmail: string): Promise<{
32
+ success: boolean;
33
+ error?: string;
34
+ }>;
35
+ testConfig(dto: {
36
+ provider: string;
37
+ apiKey: string;
38
+ domain?: string;
39
+ }, toEmail: string): Promise<{
40
+ success: boolean;
41
+ error?: string;
42
+ }>;
43
+ }