@futdevpro/nts-dynamo 1.15.3 → 1.15.6

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 (78) hide show
  1. package/.cursor/rules/__main.mdc +3 -1
  2. package/.cursor/rules/default-command.mdc +324 -88
  3. package/_specifications/BACKLOG.md +15 -0
  4. package/_specifications/TODO.md +15 -0
  5. package/build/_modules/ai/_models/ai-test-generation-result.interface.d.ts +17 -0
  6. package/build/_modules/ai/_models/ai-test-generation-result.interface.d.ts.map +1 -0
  7. package/build/_modules/ai/_models/ai-test-generation-result.interface.js +3 -0
  8. package/build/_modules/ai/_models/ai-test-generation-result.interface.js.map +1 -0
  9. package/build/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.d.ts +36 -0
  10. package/build/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.d.ts.map +1 -0
  11. package/build/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.js +118 -0
  12. package/build/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.js.map +1 -0
  13. package/build/_modules/ai/_modules/anthropic/index.d.ts +3 -0
  14. package/build/_modules/ai/_modules/anthropic/index.d.ts.map +1 -0
  15. package/build/_modules/ai/_modules/anthropic/index.js +8 -0
  16. package/build/_modules/ai/_modules/anthropic/index.js.map +1 -0
  17. package/build/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.d.ts +35 -0
  18. package/build/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.d.ts.map +1 -0
  19. package/build/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.js +129 -0
  20. package/build/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.js.map +1 -0
  21. package/build/_modules/ai/_modules/fdp-ai/index.d.ts +3 -0
  22. package/build/_modules/ai/_modules/fdp-ai/index.d.ts.map +1 -0
  23. package/build/_modules/ai/_modules/fdp-ai/index.js +8 -0
  24. package/build/_modules/ai/_modules/fdp-ai/index.js.map +1 -0
  25. package/build/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.d.ts +40 -0
  26. package/build/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.d.ts.map +1 -0
  27. package/build/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.js +111 -0
  28. package/build/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.js.map +1 -0
  29. package/build/_modules/ai/_modules/open-ai/index.d.ts +1 -0
  30. package/build/_modules/ai/_modules/open-ai/index.d.ts.map +1 -1
  31. package/build/_modules/ai/_modules/open-ai/index.js +1 -0
  32. package/build/_modules/ai/_modules/open-ai/index.js.map +1 -1
  33. package/build/_modules/ai/_services/ai-user-key.service-base.d.ts +45 -0
  34. package/build/_modules/ai/_services/ai-user-key.service-base.d.ts.map +1 -0
  35. package/build/_modules/ai/_services/ai-user-key.service-base.js +15 -0
  36. package/build/_modules/ai/_services/ai-user-key.service-base.js.map +1 -0
  37. package/build/_modules/ai/index.d.ts +2 -0
  38. package/build/_modules/ai/index.d.ts.map +1 -1
  39. package/build/_modules/ai/index.js +2 -0
  40. package/build/_modules/ai/index.js.map +1 -1
  41. package/build/_modules/socket/_services/socket-client.service.d.ts.map +1 -1
  42. package/build/_modules/socket/_services/socket-client.service.js +2 -1
  43. package/build/_modules/socket/_services/socket-client.service.js.map +1 -1
  44. package/build/_modules/socket/app-extended.server.js +1 -1
  45. package/build/_modules/socket/app-extended.server.js.map +1 -1
  46. package/build/_services/base/data.service.d.ts +1 -1
  47. package/build/_services/base/data.service.js +1 -1
  48. package/build/_services/base/db.service.d.ts +1 -1
  49. package/build/_services/base/db.service.js +1 -1
  50. package/build/_services/core/auth.service.d.ts +2 -2
  51. package/build/_services/core/auth.service.js +1 -1
  52. package/build/_services/core/email.service.js +1 -1
  53. package/build/_services/core/email.service.js.map +1 -1
  54. package/build/_services/core/global.service.d.ts +1 -1
  55. package/build/_services/core/global.service.js +2 -2
  56. package/build/_services/core/global.service.js.map +1 -1
  57. package/build/_services/server/app.server.d.ts.map +1 -1
  58. package/build/_services/server/app.server.js +11 -1
  59. package/build/_services/server/app.server.js.map +1 -1
  60. package/package.json +17 -4
  61. package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -0
  62. package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -0
  63. package/src/_modules/ai/_modules/anthropic/index.ts +5 -0
  64. package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -0
  65. package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -0
  66. package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -0
  67. package/src/_modules/ai/_modules/open-ai/index.ts +1 -0
  68. package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -0
  69. package/src/_modules/ai/index.ts +2 -0
  70. package/src/_modules/socket/_services/socket-client.service.ts +2 -1
  71. package/src/_modules/socket/app-extended.server.ts +1 -1
  72. package/src/_services/base/data.service.ts +1 -1
  73. package/src/_services/base/db.service.ts +1 -1
  74. package/src/_services/core/auth.service.ts +2 -2
  75. package/src/_services/core/email.service.ts +1 -1
  76. package/src/_services/core/global.service.ts +2 -2
  77. package/src/_services/route/controller.service.ts +1 -1
  78. package/src/_services/server/app.server.ts +17 -1
@@ -0,0 +1,36 @@
1
+ import { DyFM_AI_Provider, DyFM_AI_Config } from '@futdevpro/fsm-dynamo/ai';
2
+ import { DyFM_AI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai';
3
+ import { DyNTS_AI_UserKey_ServiceBase } from '../../../_services/ai-user-key.service-base';
4
+ import { DyNTS_AI_TestGeneration_Result } from '../../../_models/ai-test-generation-result.interface';
5
+ /**
6
+ * Anthropic-specifikus user API key kezelo service
7
+ *
8
+ * A visszafejtett API kulcsbol Anthropic-specifikus konfigot allit ossze,
9
+ * es teszteli a kapcsolatot az Anthropic API-val.
10
+ */
11
+ export declare class DyNTS_AAI_UserKey_ControlService extends DyNTS_AI_UserKey_ServiceBase {
12
+ static getInstance(): DyNTS_AAI_UserKey_ControlService;
13
+ readonly aiProvider: DyFM_AI_Provider;
14
+ /**
15
+ * Anthropic config osszeallitasa a visszafejtett kulcsbol
16
+ */
17
+ resolveConfig(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): DyFM_AI_Config;
18
+ /**
19
+ * Anthropic kapcsolat tesztelese egy minimal messages.create() hivassal
20
+ */
21
+ testConnection(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): Promise<boolean>;
22
+ /**
23
+ * Elerheto Anthropic modellek lekerdezese
24
+ * Az Anthropic API nem ad model list endpoint-ot, ezert a DyFM_AAI_Model enum-bol szolgalja ki
25
+ */
26
+ listAvailableModels(_userProviderConfig: DyFM_AI_UserProviderConfig, _decryptedApiKey: string): Promise<string[]>;
27
+ /**
28
+ * Teszt generalas az Anthropic API-val
29
+ */
30
+ testGeneration(set: {
31
+ userProviderConfig: DyFM_AI_UserProviderConfig;
32
+ decryptedApiKey: string;
33
+ model: string;
34
+ }): Promise<DyNTS_AI_TestGeneration_Result>;
35
+ }
36
+ //# sourceMappingURL=aai-user-key.control-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aai-user-key.control-service.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAItE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AAEtG;;;;;GAKG;AACH,qBAAa,gCAAiC,SAAQ,4BAA4B;IAEhF,MAAM,CAAC,WAAW,IAAI,gCAAgC;IAItD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAA8B;IAEnE;;OAEG;IACH,aAAa,CACX,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,cAAc;IAUjB;;OAEG;IACG,cAAc,CAClB,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IA6BnB;;;OAGG;IACG,mBAAmB,CACvB,mBAAmB,EAAE,0BAA0B,EAC/C,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpB;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE;QACxB,kBAAkB,EAAE,0BAA0B,CAAC;QAC/C,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,8BAA8B,CAAC;CA8C5C"}
@@ -0,0 +1,118 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.DyNTS_AAI_UserKey_ControlService = void 0;
27
+ const ai_1 = require("@futdevpro/fsm-dynamo/ai");
28
+ const anthropic_1 = require("@futdevpro/fsm-dynamo/ai/anthropic");
29
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
30
+ const ai_user_key_service_base_1 = require("../../../_services/ai-user-key.service-base");
31
+ /**
32
+ * Anthropic-specifikus user API key kezelo service
33
+ *
34
+ * A visszafejtett API kulcsbol Anthropic-specifikus konfigot allit ossze,
35
+ * es teszteli a kapcsolatot az Anthropic API-val.
36
+ */
37
+ class DyNTS_AAI_UserKey_ControlService extends ai_user_key_service_base_1.DyNTS_AI_UserKey_ServiceBase {
38
+ static getInstance() {
39
+ return DyNTS_AAI_UserKey_ControlService.getSingletonInstance();
40
+ }
41
+ aiProvider = ai_1.DyFM_AI_Provider.Anthropic;
42
+ /**
43
+ * Anthropic config osszeallitasa a visszafejtett kulcsbol
44
+ */
45
+ resolveConfig(userProviderConfig, decryptedApiKey) {
46
+ const aaiConfig = userProviderConfig;
47
+ return {
48
+ apiKey: decryptedApiKey,
49
+ baseURL: aaiConfig.baseURL,
50
+ };
51
+ }
52
+ /**
53
+ * Anthropic kapcsolat tesztelese egy minimal messages.create() hivassal
54
+ */
55
+ async testConnection(userProviderConfig, decryptedApiKey) {
56
+ try {
57
+ const Anthropic = await Promise.resolve().then(() => __importStar(require('@anthropic-ai/sdk')));
58
+ const config = this.resolveConfig(userProviderConfig, decryptedApiKey);
59
+ const client = new Anthropic.default({
60
+ apiKey: config.apiKey,
61
+ baseURL: config.baseURL || undefined,
62
+ });
63
+ await client.messages.create({
64
+ model: anthropic_1.DyFM_AAI_Model.claude_3_haiku_latest,
65
+ max_tokens: 5,
66
+ messages: [{ role: 'user', content: 'test' }],
67
+ });
68
+ return true;
69
+ }
70
+ catch (error) {
71
+ fsm_dynamo_1.DyFM_Log.error('DyNTS_AAI_UserKey_ControlService', 'testConnection', 'Anthropic connection test failed', { error: error });
72
+ return false;
73
+ }
74
+ }
75
+ /**
76
+ * Elerheto Anthropic modellek lekerdezese
77
+ * Az Anthropic API nem ad model list endpoint-ot, ezert a DyFM_AAI_Model enum-bol szolgalja ki
78
+ */
79
+ async listAvailableModels(_userProviderConfig, _decryptedApiKey) {
80
+ return Object.values(anthropic_1.DyFM_AAI_Model);
81
+ }
82
+ /**
83
+ * Teszt generalas az Anthropic API-val
84
+ */
85
+ async testGeneration(set) {
86
+ const startTime = Date.now();
87
+ try {
88
+ const Anthropic = await Promise.resolve().then(() => __importStar(require('@anthropic-ai/sdk')));
89
+ const config = this.resolveConfig(set.userProviderConfig, set.decryptedApiKey);
90
+ const client = new Anthropic.default({
91
+ apiKey: config.apiKey,
92
+ baseURL: config.baseURL || undefined,
93
+ });
94
+ const response = await client.messages.create({
95
+ model: set.model,
96
+ max_tokens: 10,
97
+ messages: [{ role: 'user', content: 'Hello, this is a test. Reply with "OK".' }],
98
+ });
99
+ const textContent = response.content.find((block) => block.type === 'text');
100
+ return {
101
+ success: true,
102
+ response: textContent?.text,
103
+ model: set.model,
104
+ latencyMs: Date.now() - startTime,
105
+ };
106
+ }
107
+ catch (error) {
108
+ fsm_dynamo_1.DyFM_Log.error('DyNTS_AAI_UserKey_ControlService', 'testGeneration', 'Anthropic test generation failed', { error: error });
109
+ return {
110
+ success: false,
111
+ model: set.model,
112
+ latencyMs: Date.now() - startTime,
113
+ };
114
+ }
115
+ }
116
+ }
117
+ exports.DyNTS_AAI_UserKey_ControlService = DyNTS_AAI_UserKey_ControlService;
118
+ //# sourceMappingURL=aai-user-key.control-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aai-user-key.control-service.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from '@futdevpro/fsm-dynamo/ai/anthropic';
2
+ export * from './_services/aai-user-key.control-service';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/ai/_modules/anthropic/index.ts"],"names":[],"mappings":"AACA,cAAc,oCAAoC,CAAC;AAGnD,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ // Re-export from FSM
5
+ tslib_1.__exportStar(require("@futdevpro/fsm-dynamo/ai/anthropic"), exports);
6
+ // SERVICES
7
+ tslib_1.__exportStar(require("./_services/aai-user-key.control-service"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/_modules/ai/_modules/anthropic/index.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,6EAAmD;AAEnD,WAAW;AACX,mFAAyD"}
@@ -0,0 +1,35 @@
1
+ import { DyFM_AI_Provider, DyFM_AI_Config } from '@futdevpro/fsm-dynamo/ai';
2
+ import { DyFM_AI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai';
3
+ import { DyNTS_AI_UserKey_ServiceBase } from '../../../_services/ai-user-key.service-base';
4
+ import { DyNTS_AI_TestGeneration_Result } from '../../../_models/ai-test-generation-result.interface';
5
+ /**
6
+ * FDP-AI-specifikus user API key kezelo service
7
+ *
8
+ * A visszafejtett API kulcsbol FDP-AI-specifikus konfigot allit ossze,
9
+ * es teszteli a kapcsolatot az FDP-AI endpoint-tal.
10
+ */
11
+ export declare class DyNTS_FdpAI_UserKey_ControlService extends DyNTS_AI_UserKey_ServiceBase {
12
+ static getInstance(): DyNTS_FdpAI_UserKey_ControlService;
13
+ readonly aiProvider: DyFM_AI_Provider;
14
+ /**
15
+ * FDP-AI config osszeallitasa a visszafejtett kulcsbol
16
+ */
17
+ resolveConfig(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): DyFM_AI_Config;
18
+ /**
19
+ * FDP-AI kapcsolat tesztelese a health endpoint hivassal
20
+ */
21
+ testConnection(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): Promise<boolean>;
22
+ /**
23
+ * Elerheto FDP-AI modellek lekerdezese a /models endpoint-rol
24
+ */
25
+ listAvailableModels(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): Promise<string[]>;
26
+ /**
27
+ * Teszt generalas az FDP-AI endpoint-on
28
+ */
29
+ testGeneration(set: {
30
+ userProviderConfig: DyFM_AI_UserProviderConfig;
31
+ decryptedApiKey: string;
32
+ model: string;
33
+ }): Promise<DyNTS_AI_TestGeneration_Result>;
34
+ }
35
+ //# sourceMappingURL=fdpai-user-key.control-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fdpai-user-key.control-service.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAItE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AAEtG;;;;;GAKG;AACH,qBAAa,kCAAmC,SAAQ,4BAA4B;IAElF,MAAM,CAAC,WAAW,IAAI,kCAAkC;IAIxD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAA0B;IAE/D;;OAEG;IACH,aAAa,CACX,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,cAAc;IAUjB;;OAEG;IACG,cAAc,CAClB,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IAkCnB;;OAEG;IACG,mBAAmB,CACvB,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAkCpB;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE;QACxB,kBAAkB,EAAE,0BAA0B,CAAC;QAC/C,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,8BAA8B,CAAC;CA+D5C"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyNTS_FdpAI_UserKey_ControlService = void 0;
4
+ const ai_1 = require("@futdevpro/fsm-dynamo/ai");
5
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
6
+ const ai_user_key_service_base_1 = require("../../../_services/ai-user-key.service-base");
7
+ /**
8
+ * FDP-AI-specifikus user API key kezelo service
9
+ *
10
+ * A visszafejtett API kulcsbol FDP-AI-specifikus konfigot allit ossze,
11
+ * es teszteli a kapcsolatot az FDP-AI endpoint-tal.
12
+ */
13
+ class DyNTS_FdpAI_UserKey_ControlService extends ai_user_key_service_base_1.DyNTS_AI_UserKey_ServiceBase {
14
+ static getInstance() {
15
+ return DyNTS_FdpAI_UserKey_ControlService.getSingletonInstance();
16
+ }
17
+ aiProvider = ai_1.DyFM_AI_Provider.FdpAI;
18
+ /**
19
+ * FDP-AI config osszeallitasa a visszafejtett kulcsbol
20
+ */
21
+ resolveConfig(userProviderConfig, decryptedApiKey) {
22
+ const fdpAiConfig = userProviderConfig;
23
+ return {
24
+ apiKey: decryptedApiKey,
25
+ baseURL: fdpAiConfig.baseURL,
26
+ };
27
+ }
28
+ /**
29
+ * FDP-AI kapcsolat tesztelese a health endpoint hivassal
30
+ */
31
+ async testConnection(userProviderConfig, decryptedApiKey) {
32
+ try {
33
+ const config = this.resolveConfig(userProviderConfig, decryptedApiKey);
34
+ if (!config.baseURL) {
35
+ fsm_dynamo_1.DyFM_Log.error('DyNTS_FdpAI_UserKey_ControlService', 'testConnection', 'FDP-AI baseURL is required');
36
+ return false;
37
+ }
38
+ const response = await fetch(`${config.baseURL}/health`, {
39
+ method: 'GET',
40
+ headers: {
41
+ 'Authorization': `Bearer ${config.apiKey}`,
42
+ },
43
+ });
44
+ return response.ok;
45
+ }
46
+ catch (error) {
47
+ fsm_dynamo_1.DyFM_Log.error('DyNTS_FdpAI_UserKey_ControlService', 'testConnection', 'FDP-AI connection test failed', { error: error });
48
+ return false;
49
+ }
50
+ }
51
+ /**
52
+ * Elerheto FDP-AI modellek lekerdezese a /models endpoint-rol
53
+ */
54
+ async listAvailableModels(userProviderConfig, decryptedApiKey) {
55
+ try {
56
+ const config = this.resolveConfig(userProviderConfig, decryptedApiKey);
57
+ if (!config.baseURL) {
58
+ return [];
59
+ }
60
+ const response = await fetch(`${config.baseURL}/models`, {
61
+ method: 'GET',
62
+ headers: {
63
+ 'Authorization': `Bearer ${config.apiKey}`,
64
+ },
65
+ });
66
+ if (!response.ok) {
67
+ return [];
68
+ }
69
+ const data = await response.json();
70
+ return data.models ?? [];
71
+ }
72
+ catch (error) {
73
+ fsm_dynamo_1.DyFM_Log.error('DyNTS_FdpAI_UserKey_ControlService', 'listAvailableModels', 'FDP-AI model list failed', { error: error });
74
+ return [];
75
+ }
76
+ }
77
+ /**
78
+ * Teszt generalas az FDP-AI endpoint-on
79
+ */
80
+ async testGeneration(set) {
81
+ const startTime = Date.now();
82
+ try {
83
+ const config = this.resolveConfig(set.userProviderConfig, set.decryptedApiKey);
84
+ if (!config.baseURL) {
85
+ return {
86
+ success: false,
87
+ model: set.model,
88
+ latencyMs: Date.now() - startTime,
89
+ };
90
+ }
91
+ const response = await fetch(`${config.baseURL}/chat/completions`, {
92
+ method: 'POST',
93
+ headers: {
94
+ 'Authorization': `Bearer ${config.apiKey}`,
95
+ 'Content-Type': 'application/json',
96
+ },
97
+ body: JSON.stringify({
98
+ model: set.model,
99
+ messages: [{ role: 'user', content: 'Hello, this is a test. Reply with "OK".' }],
100
+ max_tokens: 10,
101
+ }),
102
+ });
103
+ if (!response.ok) {
104
+ return {
105
+ success: false,
106
+ model: set.model,
107
+ latencyMs: Date.now() - startTime,
108
+ };
109
+ }
110
+ const data = await response.json();
111
+ return {
112
+ success: true,
113
+ response: data?.choices?.[0]?.message?.content,
114
+ model: set.model,
115
+ latencyMs: Date.now() - startTime,
116
+ };
117
+ }
118
+ catch (error) {
119
+ fsm_dynamo_1.DyFM_Log.error('DyNTS_FdpAI_UserKey_ControlService', 'testGeneration', 'FDP-AI test generation failed', { error: error });
120
+ return {
121
+ success: false,
122
+ model: set.model,
123
+ latencyMs: Date.now() - startTime,
124
+ };
125
+ }
126
+ }
127
+ }
128
+ exports.DyNTS_FdpAI_UserKey_ControlService = DyNTS_FdpAI_UserKey_ControlService;
129
+ //# sourceMappingURL=fdpai-user-key.control-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fdpai-user-key.control-service.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts"],"names":[],"mappings":";;;AAAA,iDAA4E;AAG5E,sDAAiD;AAEjD,0FAA2F;AAG3F;;;;;GAKG;AACH,MAAa,kCAAmC,SAAQ,uDAA4B;IAElF,MAAM,CAAC,WAAW;QAChB,OAAO,kCAAkC,CAAC,oBAAoB,EAAE,CAAC;IACnE,CAAC;IAEQ,UAAU,GAAqB,qBAAgB,CAAC,KAAK,CAAC;IAE/D;;OAEG;IACH,aAAa,CACX,kBAA8C,EAC9C,eAAuB;QAEvB,MAAM,WAAW,GACf,kBAAmD,CAAC;QAEtD,OAAO;YACL,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,kBAA8C,EAC9C,eAAuB;QAEvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAmB,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;YAEvF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,qBAAQ,CAAC,KAAK,CACZ,oCAAoC,EACpC,gBAAgB,EAChB,4BAA4B,CAC7B,CAAC;gBAEF,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,SAAS,EAAE;gBACvD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;iBAC3C;aACF,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAQ,CAAC,KAAK,CACZ,oCAAoC,EACpC,gBAAgB,EAChB,+BAA+B,EAC/B,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YAEF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,kBAA8C,EAC9C,eAAuB;QAEvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAmB,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;YAEvF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,SAAS,EAAE;gBACvD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;iBAC3C;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,IAAI,GAAyB,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;YAEjF,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAQ,CAAC,KAAK,CACZ,oCAAoC,EACpC,qBAAqB,EACrB,0BAA0B,EAC1B,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YAEF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,GAIpB;QACC,MAAM,SAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,MAAM,GAAmB,IAAI,CAAC,aAAa,CAC/C,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,eAAe,CACpB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBAClC,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,mBAAmB,EAAE;gBACjE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;oBAC1C,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;oBAChF,UAAU,EAAE,EAAE;iBACf,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBAClC,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAE/B,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO;gBAC9C,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aAClC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAQ,CAAC,KAAK,CACZ,oCAAoC,EACpC,gBAAgB,EAChB,+BAA+B,EAC/B,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aAClC,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA9KD,gFA8KC"}
@@ -0,0 +1,3 @@
1
+ export * from '@futdevpro/fsm-dynamo/ai/fdp-ai';
2
+ export * from './_services/fdpai-user-key.control-service';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/ai/_modules/fdp-ai/index.ts"],"names":[],"mappings":"AACA,cAAc,iCAAiC,CAAC;AAGhD,cAAc,4CAA4C,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ // Re-export from FSM
5
+ tslib_1.__exportStar(require("@futdevpro/fsm-dynamo/ai/fdp-ai"), exports);
6
+ // SERVICES
7
+ tslib_1.__exportStar(require("./_services/fdpai-user-key.control-service"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/_modules/ai/_modules/fdp-ai/index.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,0EAAgD;AAEhD,WAAW;AACX,qFAA2D"}
@@ -0,0 +1,40 @@
1
+ import { DyFM_AI_Provider, DyFM_AI_Config } from '@futdevpro/fsm-dynamo/ai';
2
+ import { DyFM_AI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai';
3
+ import { DyNTS_AI_UserKey_ServiceBase } from '../../../_services/ai-user-key.service-base';
4
+ import { DyNTS_AI_TestGeneration_Result } from '../../../_models/ai-test-generation-result.interface';
5
+ /**
6
+ * OpenAI-specifikus user API key kezelo service
7
+ *
8
+ * A visszafejtett API kulcsbol OpenAI-specifikus konfigot allit ossze,
9
+ * es teszteli a kapcsolatot az OpenAI API-val.
10
+ */
11
+ export declare class DyNTS_OAI_UserKey_ControlService extends DyNTS_AI_UserKey_ServiceBase {
12
+ static getInstance(): DyNTS_OAI_UserKey_ControlService;
13
+ readonly aiProvider: DyFM_AI_Provider;
14
+ /**
15
+ * OpenAI config osszeallitasa a visszafejtett kulcsbol
16
+ */
17
+ resolveConfig(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): DyFM_AI_Config;
18
+ /**
19
+ * OpenAI kapcsolat tesztelese a models.list() hivassal
20
+ */
21
+ testConnection(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): Promise<boolean>;
22
+ /**
23
+ * Elerheto OpenAI modellek lekerdezese
24
+ * Szuri a chat/LLM modelleket (nem embedding, nem whisper stb.)
25
+ */
26
+ listAvailableModels(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): Promise<string[]>;
27
+ /**
28
+ * Teszt generalas az OpenAI API-val
29
+ */
30
+ testGeneration(set: {
31
+ userProviderConfig: DyFM_AI_UserProviderConfig;
32
+ decryptedApiKey: string;
33
+ model: string;
34
+ }): Promise<DyNTS_AI_TestGeneration_Result>;
35
+ /**
36
+ * LLM/Chat modell szures -- kiszuri az embedding, whisper, tts stb. modelleket
37
+ */
38
+ private isLLMModel;
39
+ }
40
+ //# sourceMappingURL=oai-user-key.control-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oai-user-key.control-service.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAItE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AAEtG;;;;;GAKG;AACH,qBAAa,gCAAiC,SAAQ,4BAA4B;IAEhF,MAAM,CAAC,WAAW,IAAI,gCAAgC;IAItD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAA2B;IAEhE;;OAEG;IACH,aAAa,CACX,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,cAAc;IAWjB;;OAEG;IACG,cAAc,CAClB,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IAwBnB;;;OAGG;IACG,mBAAmB,CACvB,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBpB;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE;QACxB,kBAAkB,EAAE,0BAA0B,CAAC;QAC/C,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,8BAA8B,CAAC;IA0C3C;;OAEG;IACH,OAAO,CAAC,UAAU;CAUnB"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyNTS_OAI_UserKey_ControlService = void 0;
4
+ const openai_1 = require("openai");
5
+ const ai_1 = require("@futdevpro/fsm-dynamo/ai");
6
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
7
+ const ai_user_key_service_base_1 = require("../../../_services/ai-user-key.service-base");
8
+ /**
9
+ * OpenAI-specifikus user API key kezelo service
10
+ *
11
+ * A visszafejtett API kulcsbol OpenAI-specifikus konfigot allit ossze,
12
+ * es teszteli a kapcsolatot az OpenAI API-val.
13
+ */
14
+ class DyNTS_OAI_UserKey_ControlService extends ai_user_key_service_base_1.DyNTS_AI_UserKey_ServiceBase {
15
+ static getInstance() {
16
+ return DyNTS_OAI_UserKey_ControlService.getSingletonInstance();
17
+ }
18
+ aiProvider = ai_1.DyFM_AI_Provider.OpenAI;
19
+ /**
20
+ * OpenAI config osszeallitasa a visszafejtett kulcsbol
21
+ */
22
+ resolveConfig(userProviderConfig, decryptedApiKey) {
23
+ const oaiConfig = userProviderConfig;
24
+ return {
25
+ apiKey: decryptedApiKey,
26
+ organization: oaiConfig.organization,
27
+ project: oaiConfig.project,
28
+ };
29
+ }
30
+ /**
31
+ * OpenAI kapcsolat tesztelese a models.list() hivassal
32
+ */
33
+ async testConnection(userProviderConfig, decryptedApiKey) {
34
+ try {
35
+ const config = this.resolveConfig(userProviderConfig, decryptedApiKey);
36
+ const openai = new openai_1.OpenAI({
37
+ apiKey: config.apiKey,
38
+ organization: config.organization,
39
+ project: config.project,
40
+ });
41
+ await openai.models.list();
42
+ return true;
43
+ }
44
+ catch (error) {
45
+ fsm_dynamo_1.DyFM_Log.error('DyNTS_OAI_UserKey_ControlService', 'testConnection', 'OpenAI connection test failed', { error: error });
46
+ return false;
47
+ }
48
+ }
49
+ /**
50
+ * Elerheto OpenAI modellek lekerdezese
51
+ * Szuri a chat/LLM modelleket (nem embedding, nem whisper stb.)
52
+ */
53
+ async listAvailableModels(userProviderConfig, decryptedApiKey) {
54
+ const config = this.resolveConfig(userProviderConfig, decryptedApiKey);
55
+ const openai = new openai_1.OpenAI({
56
+ apiKey: config.apiKey,
57
+ organization: config.organization,
58
+ project: config.project,
59
+ });
60
+ const models = await openai.models.list();
61
+ return models.data
62
+ .map((m) => m.id)
63
+ .filter((id) => this.isLLMModel(id))
64
+ .sort();
65
+ }
66
+ /**
67
+ * Teszt generalas az OpenAI API-val
68
+ */
69
+ async testGeneration(set) {
70
+ const startTime = Date.now();
71
+ try {
72
+ const config = this.resolveConfig(set.userProviderConfig, set.decryptedApiKey);
73
+ const openai = new openai_1.OpenAI({
74
+ apiKey: config.apiKey,
75
+ organization: config.organization,
76
+ project: config.project,
77
+ });
78
+ const response = await openai.chat.completions.create({
79
+ model: set.model,
80
+ messages: [{ role: 'user', content: 'Hello, this is a test. Reply with "OK".' }],
81
+ max_tokens: 10,
82
+ });
83
+ return {
84
+ success: true,
85
+ response: response.choices[0]?.message?.content,
86
+ model: set.model,
87
+ latencyMs: Date.now() - startTime,
88
+ };
89
+ }
90
+ catch (error) {
91
+ fsm_dynamo_1.DyFM_Log.error('DyNTS_OAI_UserKey_ControlService', 'testGeneration', 'OpenAI test generation failed', { error: error });
92
+ return {
93
+ success: false,
94
+ model: set.model,
95
+ latencyMs: Date.now() - startTime,
96
+ };
97
+ }
98
+ }
99
+ /**
100
+ * LLM/Chat modell szures -- kiszuri az embedding, whisper, tts stb. modelleket
101
+ */
102
+ isLLMModel(modelId) {
103
+ const excludePatterns = [
104
+ 'embedding', 'whisper', 'tts', 'dall-e',
105
+ 'moderation', 'davinci', 'babbage', 'ada',
106
+ ];
107
+ return !excludePatterns.some((pattern) => modelId.includes(pattern));
108
+ }
109
+ }
110
+ exports.DyNTS_OAI_UserKey_ControlService = DyNTS_OAI_UserKey_ControlService;
111
+ //# sourceMappingURL=oai-user-key.control-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oai-user-key.control-service.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export * from './_models/interfaces/oai-llm-predefined-requests.interface';
7
7
  export * from './_services/oai-embedding.control-service';
8
8
  export * from './_services/oai-llm-chat.service-base';
9
9
  export * from './_services/oai-llm.service-base';
10
+ export * from './_services/oai-user-key.control-service';
10
11
  export * from './_services/data-services/oai-doc-chunk-data.service';
11
12
  export * from './_services/data-services/oai-doc-page.data-service';
12
13
  export * from './_services/data-services/oai-document.data-service';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/ai/_modules/open-ai/index.ts"],"names":[],"mappings":"AAyBA,cAAc,kCAAkC,CAAC;AASjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AAepE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,4DAA4D,CAAC;AAW3E,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/ai/_modules/open-ai/index.ts"],"names":[],"mappings":"AAyBA,cAAc,kCAAkC,CAAC;AASjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AAepE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,4DAA4D,CAAC;AAW3E,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AAEzD,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC"}
@@ -46,6 +46,7 @@ export * from './_services/oai-embedding.service'; */
46
46
  tslib_1.__exportStar(require("./_services/oai-embedding.control-service"), exports);
47
47
  tslib_1.__exportStar(require("./_services/oai-llm-chat.service-base"), exports);
48
48
  tslib_1.__exportStar(require("./_services/oai-llm.service-base"), exports);
49
+ tslib_1.__exportStar(require("./_services/oai-user-key.control-service"), exports);
49
50
  // services/DATA-SERVICES
50
51
  tslib_1.__exportStar(require("./_services/data-services/oai-doc-chunk-data.service"), exports);
51
52
  tslib_1.__exportStar(require("./_services/data-services/oai-doc-page.data-service"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/_modules/ai/_modules/open-ai/index.ts"],"names":[],"mappings":";AAQA;;;;;;IAMI;;;AAEJ,EAAE;AACF,gBAAgB;AAChB,EAAE;AACF,6DAA6D;AAC7D,+DAA+D;AAC/D,EAAE;AAGF,qBAAqB;AACrB,2EAAiD;AAEjD,6BAA6B;AAC7B,iDAAiD;AAGjD,cAAc;AACd;oDACoD;AACpD,mFAAyD;AACzD,2FAAiE;AACjE,8FAAoE;AAGpE,QAAQ;AACR,wDAAwD;AACxD,yDAAyD;AAGzD,SAAS;AACT,sEAAsE;AAEtE,oBAAoB;AACpB;2FAC2F;AAC3F,oFAAoF;AACpF,6FAAmE;AACnE,qEAAqE;AACrE,qGAA2E;AAC3E,8FAA8F;AAG9F,iCAAiC;AACjC;;qDAEqD;AACrD,wDAAwD;AAExD,WAAW;AACX,oFAA0D;AAC1D,gFAAsD;AACtD,2EAAiD;AACjD,yBAAyB;AACzB,+FAAqE;AACrE,8FAAoE;AACpE,8FAAoE;AACpE,4FAAkE;AAClE,6DAA6D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/_modules/ai/_modules/open-ai/index.ts"],"names":[],"mappings":";AAQA;;;;;;IAMI;;;AAEJ,EAAE;AACF,gBAAgB;AAChB,EAAE;AACF,6DAA6D;AAC7D,+DAA+D;AAC/D,EAAE;AAGF,qBAAqB;AACrB,2EAAiD;AAEjD,6BAA6B;AAC7B,iDAAiD;AAGjD,cAAc;AACd;oDACoD;AACpD,mFAAyD;AACzD,2FAAiE;AACjE,8FAAoE;AAGpE,QAAQ;AACR,wDAAwD;AACxD,yDAAyD;AAGzD,SAAS;AACT,sEAAsE;AAEtE,oBAAoB;AACpB;2FAC2F;AAC3F,oFAAoF;AACpF,6FAAmE;AACnE,qEAAqE;AACrE,qGAA2E;AAC3E,8FAA8F;AAG9F,iCAAiC;AACjC;;qDAEqD;AACrD,wDAAwD;AAExD,WAAW;AACX,oFAA0D;AAC1D,gFAAsD;AACtD,2EAAiD;AACjD,mFAAyD;AACzD,yBAAyB;AACzB,+FAAqE;AACrE,8FAAoE;AACpE,8FAAoE;AACpE,4FAAkE;AAClE,6DAA6D"}
@@ -0,0 +1,45 @@
1
+ import { DyFM_AI_Provider, DyFM_AI_Config } from '@futdevpro/fsm-dynamo/ai';
2
+ import { DyFM_AI_UserProviderConfig } from '@futdevpro/fsm-dynamo/ai';
3
+ import { DyNTS_SingletonService } from '../../../_services/base/singleton.service';
4
+ import { DyNTS_AI_TestGeneration_Result } from '../_models/ai-test-generation-result.interface';
5
+ /**
6
+ * Absztrakt bazis osztaly a user AI provider kulcs kezeleshez
7
+ *
8
+ * A titkositas/visszafejtes NEM itt tortenik -- azt az fdp-auth-service Auth_ControlService-e vegzi.
9
+ * Ezek a service-ek a mar visszafejtett config-ot es API kulcsot kapjak,
10
+ * es abbol allitjak ossze a provider-specifikus konfigot.
11
+ */
12
+ export declare abstract class DyNTS_AI_UserKey_ServiceBase extends DyNTS_SingletonService {
13
+ /** melyik provider-hez tartozik ez a service */
14
+ abstract readonly aiProvider: DyFM_AI_Provider;
15
+ /**
16
+ * Visszafejtett user config + kulcs -> provider-specifikus AI config osszeallitas
17
+ * @param userProviderConfig - a user provider konfiguracioja
18
+ * @param decryptedApiKey - a mar visszafejtett API kulcs
19
+ */
20
+ abstract resolveConfig(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): DyFM_AI_Config;
21
+ /**
22
+ * Kapcsolat tesztelese a provider-rel a visszafejtett kulccsal
23
+ * @param userProviderConfig - a user provider konfiguracioja
24
+ * @param decryptedApiKey - a mar visszafejtett API kulcs
25
+ */
26
+ abstract testConnection(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): Promise<boolean>;
27
+ /**
28
+ * Elerheto modellek lekerdezese a provider API-rol
29
+ * @param userProviderConfig - a user provider konfiguracioja
30
+ * @param decryptedApiKey - a mar visszafejtett API kulcs
31
+ */
32
+ abstract listAvailableModels(userProviderConfig: DyFM_AI_UserProviderConfig, decryptedApiKey: string): Promise<string[]>;
33
+ /**
34
+ * Teszt generalas a provider-rel
35
+ * @param set.userProviderConfig - a user provider konfiguracioja
36
+ * @param set.decryptedApiKey - a mar visszafejtett API kulcs
37
+ * @param set.model - a hasznalando modell
38
+ */
39
+ abstract testGeneration(set: {
40
+ userProviderConfig: DyFM_AI_UserProviderConfig;
41
+ decryptedApiKey: string;
42
+ model: string;
43
+ }): Promise<DyNTS_AI_TestGeneration_Result>;
44
+ }
45
+ //# sourceMappingURL=ai-user-key.service-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-user-key.service-base.d.ts","sourceRoot":"","sources":["../../../../src/_modules/ai/_services/ai-user-key.service-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAEhG;;;;;;GAMG;AACH,8BAAsB,4BAA6B,SAAQ,sBAAsB;IAC/E,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAE/C;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CACpB,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,cAAc;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CACrB,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IAEnB;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAC1B,kBAAkB,EAAE,0BAA0B,EAC9C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAEpB;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE;QAC3B,kBAAkB,EAAE,0BAA0B,CAAC;QAC/C,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,8BAA8B,CAAC;CAC5C"}