briyah 1.0.6 → 1.0.8

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 (93) hide show
  1. package/README.md +32 -22
  2. package/dist/server/src/ai/LLM/anthropic.service.js +19 -15
  3. package/dist/server/src/ai/LLM/base-ai.service.js +5 -4
  4. package/dist/server/src/ai/LLM/deepseek.service.js +11 -13
  5. package/dist/server/src/ai/LLM/fal.service.js +20 -24
  6. package/dist/server/src/ai/LLM/googleai.service.js +13 -15
  7. package/dist/server/src/ai/LLM/grok.service.js +12 -14
  8. package/dist/server/src/ai/LLM/mock.service.js +9 -11
  9. package/dist/server/src/ai/LLM/openai.service.js +18 -20
  10. package/dist/server/src/ai/LLM/together.service.js +14 -13
  11. package/dist/server/src/ai/LLM/vertexai.service.js +12 -14
  12. package/dist/server/src/ai/agent-store.service.js +12 -11
  13. package/dist/server/src/ai/artifact.service.js +7 -6
  14. package/dist/server/src/ai/attached-file.service.js +8 -7
  15. package/dist/server/src/ai/model_prices.d.ts +1 -2
  16. package/dist/server/src/ai/model_prices.js +15 -14
  17. package/dist/server/src/ai/published-agents.service.js +6 -5
  18. package/dist/server/src/app/balance.service.js +7 -6
  19. package/dist/server/src/app/stripe.controller.js +12 -11
  20. package/dist/server/src/app/stripe.service.js +20 -19
  21. package/dist/server/src/app/transaction.service.js +6 -5
  22. package/dist/server/src/app/user-service-manager.js +6 -5
  23. package/dist/server/src/app.controller.js +95 -94
  24. package/dist/server/src/app.service.js +31 -30
  25. package/dist/server/src/auth/auth.controller.js +21 -20
  26. package/dist/server/src/auth/jwt-auth.guard.js +4 -3
  27. package/dist/server/src/auth/rate-limit.service.d.ts +0 -1
  28. package/dist/server/src/auth/rate-limit.service.js +6 -7
  29. package/dist/server/src/auth/twilio.service.js +4 -3
  30. package/dist/server/src/auth/users.service.js +6 -5
  31. package/dist/server/src/common/logger.d.ts +21 -0
  32. package/dist/server/src/common/logger.js +83 -0
  33. package/dist/server/src/config/configuration.service.js +1 -1
  34. package/dist/server/src/room/artifact-store.service.d.ts +0 -1
  35. package/dist/server/src/room/artifact-store.service.js +16 -17
  36. package/dist/server/src/room/published-rooms.service.js +5 -3
  37. package/dist/server/src/room/room-store.service.js +17 -16
  38. package/dist/server/src/room/room.js +14 -13
  39. package/dist/server/src/sdk/briyah-config.d.ts +7 -0
  40. package/dist/server/src/sdk/briyah-config.js +2 -0
  41. package/dist/server/src/sdk/briyah.js +14 -5
  42. package/dist/server/src/sdk/index.d.ts +2 -1
  43. package/dist/server/src/story/story-progress.service.js +2 -1
  44. package/dist/server/src/story/story-store.service.js +28 -27
  45. package/dist/server/src/story/story.service.js +113 -112
  46. package/docs/.nojekyll +1 -0
  47. package/docs/assets/hierarchy.js +1 -0
  48. package/docs/assets/highlight.css +106 -0
  49. package/docs/assets/icons.js +18 -0
  50. package/docs/assets/icons.svg +1 -0
  51. package/docs/assets/main.js +60 -0
  52. package/docs/assets/navigation.js +1 -0
  53. package/docs/assets/search.js +1 -0
  54. package/docs/assets/style.css +1633 -0
  55. package/docs/classes/Agent.html +87 -0
  56. package/docs/classes/Briyah.html +64 -0
  57. package/docs/classes/BriyahConfigService.html +12 -0
  58. package/docs/classes/Room.html +119 -0
  59. package/docs/enums/MessageAction.html +13 -0
  60. package/docs/hierarchy.html +1 -0
  61. package/docs/index.html +136 -0
  62. package/docs/interfaces/AgentInfo.html +17 -0
  63. package/docs/interfaces/AgentMessagesResponse.html +5 -0
  64. package/docs/interfaces/AppService.html +680 -0
  65. package/docs/interfaces/ArtifactMetadata.html +8 -0
  66. package/docs/interfaces/AttachDocumentResponse.html +3 -0
  67. package/docs/interfaces/BriyahConfigOptions.html +16 -0
  68. package/docs/interfaces/ChapterInfo.html +3 -0
  69. package/docs/interfaces/Character.html +7 -0
  70. package/docs/interfaces/CreateAgentResponse.html +2 -0
  71. package/docs/interfaces/CreateRoomResponse.html +3 -0
  72. package/docs/interfaces/CreateStoryResponse.html +2 -0
  73. package/docs/interfaces/FileList.html +2 -0
  74. package/docs/interfaces/LoggingOptions.html +9 -0
  75. package/docs/interfaces/Message.html +6 -0
  76. package/docs/interfaces/ModelInfo.html +5 -0
  77. package/docs/interfaces/PreparedPromptResponse.html +3 -0
  78. package/docs/interfaces/ProcessTextResponse.html +7 -0
  79. package/docs/interfaces/PromptFile.html +3 -0
  80. package/docs/interfaces/PromptFileContent.html +3 -0
  81. package/docs/interfaces/PromptFilesResponse.html +2 -0
  82. package/docs/interfaces/PromptFolder.html +3 -0
  83. package/docs/interfaces/PromptFoldersResponse.html +2 -0
  84. package/docs/interfaces/RoomDetails.html +9 -0
  85. package/docs/interfaces/RoomInfo.html +5 -0
  86. package/docs/interfaces/RoomMessagesResponse.html +3 -0
  87. package/docs/interfaces/StoryIdea.html +5 -0
  88. package/docs/interfaces/StoryInfo.html +21 -0
  89. package/docs/interfaces/StoryState.html +9 -0
  90. package/docs/modules.html +1 -0
  91. package/docs/types/PromptScope.html +1 -0
  92. package/package.json +6 -3
  93. package/data/common/config/story_ideas.txt +0 -6
@@ -8,17 +8,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.GrokAiService = void 0;
16
13
  const common_1 = require("@nestjs/common");
17
14
  const openai_1 = require("openai");
18
15
  const openai_2 = require("openai");
19
16
  const base_ai_service_1 = require("./base-ai.service");
20
- const model_prices_1 = __importDefault(require("../model_prices"));
17
+ const model_prices_1 = require("../model_prices");
21
18
  const errors_1 = require("../../common/errors");
19
+ const logger_1 = require("../../common/logger");
22
20
  let GrokAiService = class GrokAiService extends base_ai_service_1.BaseAiService {
23
21
  openai;
24
22
  constructor() {
@@ -26,7 +24,6 @@ let GrokAiService = class GrokAiService extends base_ai_service_1.BaseAiService
26
24
  try {
27
25
  const apiKey = process.env['XAI_API_KEY'];
28
26
  if (!apiKey) {
29
- console.warn('XAI_API_KEY environment variable not set. Grok service will not be available.');
30
27
  this._isAvailable = false;
31
28
  return;
32
29
  }
@@ -37,9 +34,10 @@ let GrokAiService = class GrokAiService extends base_ai_service_1.BaseAiService
37
34
  maxRetries: 3,
38
35
  };
39
36
  this.openai = new openai_1.OpenAI(options);
37
+ logger_1.logger.debug('Grok service initialized successfully');
40
38
  }
41
39
  catch (error) {
42
- console.error('Error initializing Grok service:', error);
40
+ logger_1.logger.error('Error initializing Grok service:', error);
43
41
  this._isAvailable = false;
44
42
  }
45
43
  }
@@ -96,10 +94,10 @@ let GrokAiService = class GrokAiService extends base_ai_service_1.BaseAiService
96
94
  metadata.serviceMetadata?.resourceId) {
97
95
  try {
98
96
  await this.openai.files.delete(metadata.serviceMetadata.resourceId);
99
- console.log(`Deleted Grok file ${metadata.serviceMetadata.resourceId} for agent ${agent.id}`);
97
+ logger_1.logger.log(`Deleted Grok file ${metadata.serviceMetadata.resourceId} for agent ${agent.id}`);
100
98
  }
101
99
  catch (error) {
102
- console.error(`Error deleting Grok file ${metadata.serviceMetadata.resourceId}:`, error);
100
+ logger_1.logger.error(`Error deleting Grok file ${metadata.serviceMetadata.resourceId}:`, error);
103
101
  }
104
102
  }
105
103
  }
@@ -198,7 +196,7 @@ let GrokAiService = class GrokAiService extends base_ai_service_1.BaseAiService
198
196
  }
199
197
  }
200
198
  catch (error) {
201
- console.error(error);
199
+ logger_1.logger.error(error);
202
200
  throw error;
203
201
  }
204
202
  if (saveResponse) {
@@ -229,12 +227,12 @@ let GrokAiService = class GrokAiService extends base_ai_service_1.BaseAiService
229
227
  const cachedTokens = usage.prompt_tokens_details?.cached_tokens || 0;
230
228
  const uncachedPromptTokens = totalPromptTokens - cachedTokens;
231
229
  const completionTokens = usage.completion_tokens || 0;
232
- let modelInfo = model_prices_1.default[agent.modelName];
230
+ let modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
233
231
  if (!modelInfo && !agent.modelName.startsWith('xai/')) {
234
- modelInfo = model_prices_1.default[`xai/${agent.modelName}`];
232
+ modelInfo = (0, model_prices_1.getModelPrices)()[`xai/${agent.modelName}`];
235
233
  }
236
234
  if (!modelInfo) {
237
- console.error(`No price info found for model ${agent.modelName} or xai/${agent.modelName}`);
235
+ logger_1.logger.error(`No price info found for model ${agent.modelName} or xai/${agent.modelName}`);
238
236
  return;
239
237
  }
240
238
  const uncachedCost = uncachedPromptTokens * modelInfo.input_cost_per_token;
@@ -247,9 +245,9 @@ let GrokAiService = class GrokAiService extends base_ai_service_1.BaseAiService
247
245
  agent.totalOutputTokens += completionTokens;
248
246
  agent.totalCost += cost;
249
247
  agent.totalMarkup += markup;
250
- console.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
248
+ logger_1.logger.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
251
249
  if (cachedTokens > 0) {
252
- console.log(`Cache metrics for ${agent.agentName}: cached=${cachedTokens}, uncached=${uncachedPromptTokens}`);
250
+ logger_1.logger.log(`Cache metrics for ${agent.agentName}: cached=${cachedTokens}, uncached=${uncachedPromptTokens}`);
253
251
  }
254
252
  if (agent.balanceService && cost > 0) {
255
253
  agent.balanceService.decrementBalance(cost, markup);
@@ -41,15 +41,13 @@ var __importStar = (this && this.__importStar) || (function () {
41
41
  var __metadata = (this && this.__metadata) || function (k, v) {
42
42
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
43
  };
44
- var __importDefault = (this && this.__importDefault) || function (mod) {
45
- return (mod && mod.__esModule) ? mod : { "default": mod };
46
- };
47
44
  Object.defineProperty(exports, "__esModule", { value: true });
48
45
  exports.MockAiService = void 0;
49
46
  const common_1 = require("@nestjs/common");
50
47
  const base_ai_service_1 = require("./base-ai.service");
51
48
  const fs = __importStar(require("fs"));
52
- const model_prices_1 = __importDefault(require("../model_prices"));
49
+ const model_prices_1 = require("../model_prices");
50
+ const logger_1 = require("../../common/logger");
53
51
  let MockAiService = class MockAiService extends base_ai_service_1.BaseAiService {
54
52
  constructor() {
55
53
  super();
@@ -72,7 +70,7 @@ let MockAiService = class MockAiService extends base_ai_service_1.BaseAiService
72
70
  async preparedPrompt(agent, promptFileName, variables, saveResponse = true, _cacheConfig = null) {
73
71
  const mockFile = this.findPromptFile(agent, promptFileName, '.mock');
74
72
  if (!mockFile) {
75
- console.warn(`Mock file '${promptFileName}.mock' not found for agent '${agent.agentName}'. Using generic response.`);
73
+ logger_1.logger.warn(`Mock file '${promptFileName}.mock' not found for agent '${agent.agentName}'. Using generic response.`);
76
74
  const preparedPrompt = this.getPreparedPrompt(agent, promptFileName, variables);
77
75
  const jsonSchema = this.getPreparedSchema(agent, promptFileName);
78
76
  return this.textPrompt(agent, preparedPrompt, jsonSchema, saveResponse);
@@ -91,7 +89,7 @@ let MockAiService = class MockAiService extends base_ai_service_1.BaseAiService
91
89
  return parsedResponse;
92
90
  }
93
91
  catch (error) {
94
- console.error(`Error parsing mock JSON response from ${mockFile}:`, error);
92
+ logger_1.logger.error(`Error parsing mock JSON response from ${mockFile}:`, error);
95
93
  throw new Error(`Invalid JSON in mock file: ${mockFile}`);
96
94
  }
97
95
  }
@@ -125,7 +123,7 @@ let MockAiService = class MockAiService extends base_ai_service_1.BaseAiService
125
123
  const mockFileBaseName = this.getMockFile(promptFileName, prompt, variables);
126
124
  const mockFile = this.findPromptFile(agent, mockFileBaseName, '.mock');
127
125
  if (!mockFile) {
128
- console.warn(`Mock file '${mockFile}' not found for agent '${agent.agentName}'. Using generic response.`);
126
+ logger_1.logger.warn(`Mock file '${mockFile}' not found for agent '${agent.agentName}'. Using generic response.`);
129
127
  return this.textPrompt(agent, prompt || 'Mock prompt', null, saveResponse, cacheConfig);
130
128
  }
131
129
  const mockResponse = fs.readFileSync(mockFile).toString('utf8');
@@ -141,7 +139,7 @@ let MockAiService = class MockAiService extends base_ai_service_1.BaseAiService
141
139
  return parsedResponse;
142
140
  }
143
141
  catch (error) {
144
- console.error(`Error parsing mock JSON response from ${mockFile}:`, error);
142
+ logger_1.logger.error(`Error parsing mock JSON response from ${mockFile}:`, error);
145
143
  throw new Error(`Invalid JSON in mock file: ${mockFile}`);
146
144
  }
147
145
  }
@@ -168,9 +166,9 @@ let MockAiService = class MockAiService extends base_ai_service_1.BaseAiService
168
166
  async trackMockCosts(agent, prompt, response) {
169
167
  const inputTokens = Math.max(100, Math.floor(prompt.length / 4));
170
168
  const outputTokens = Math.max(50, Math.floor(response.length / 4));
171
- const modelInfo = model_prices_1.default['mock-fast-v1'];
169
+ const modelInfo = (0, model_prices_1.getModelPrices)()['mock-fast-v1'];
172
170
  if (!modelInfo) {
173
- console.warn('Mock model pricing not found in model_prices.ts');
171
+ logger_1.logger.warn('Mock model pricing not found in model_prices.ts');
174
172
  return;
175
173
  }
176
174
  const inputCost = inputTokens * modelInfo.input_cost_per_token;
@@ -181,7 +179,7 @@ let MockAiService = class MockAiService extends base_ai_service_1.BaseAiService
181
179
  agent.totalInputTokens += inputTokens;
182
180
  agent.totalOutputTokens += outputTokens;
183
181
  agent.totalMarkup += markup;
184
- console.log(`Cost for ${agent.agentName} message: ${totalCost} (markup: ${markup.toFixed(4)})`);
182
+ logger_1.logger.log(`Cost for ${agent.agentName} message: ${totalCost} (markup: ${markup.toFixed(4)})`);
185
183
  if (agent.balanceService) {
186
184
  await agent.balanceService.decrementBalance(totalCost, markup);
187
185
  }
@@ -8,17 +8,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.OpenAiService = void 0;
16
13
  const common_1 = require("@nestjs/common");
17
14
  const openai_1 = require("openai");
18
15
  const base_ai_service_1 = require("./base-ai.service");
19
16
  const openai_2 = require("openai");
20
- const model_prices_1 = __importDefault(require("../model_prices"));
17
+ const model_prices_1 = require("../model_prices");
21
18
  const errors_1 = require("../../common/errors");
19
+ const logger_1 = require("../../common/logger");
22
20
  let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService {
23
21
  openai;
24
22
  constructor() {
@@ -26,7 +24,6 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
26
24
  try {
27
25
  const apiKey = process.env['OPENAI_API_KEY'];
28
26
  if (!apiKey) {
29
- console.warn('OPENAI_API_KEY environment variable not set. OpenAI service will not be available.');
30
27
  this._isAvailable = false;
31
28
  return;
32
29
  }
@@ -39,9 +36,10 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
39
36
  options.organization = process.env.OPENAI_ORGANIZATION_ID;
40
37
  }
41
38
  this.openai = new openai_2.OpenAI(options);
39
+ logger_1.logger.debug('OpenAI service initialized successfully');
42
40
  }
43
41
  catch (error) {
44
- console.error('Error initializing OpenAI service:', error);
42
+ logger_1.logger.error('Error initializing OpenAI service:', error);
45
43
  this._isAvailable = false;
46
44
  }
47
45
  }
@@ -71,10 +69,10 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
71
69
  if (agent.vectorStore) {
72
70
  try {
73
71
  await this.openai.vectorStores.delete(agent.vectorStore.id);
74
- console.log(`Deleted vector store for agent ${agent.id}`);
72
+ logger_1.logger.log(`Deleted vector store for agent ${agent.id}`);
75
73
  }
76
74
  catch (error) {
77
- console.error(`Error deleting vector store for agent ${agent.id}:`, error);
75
+ logger_1.logger.error(`Error deleting vector store for agent ${agent.id}:`, error);
78
76
  }
79
77
  }
80
78
  for (const metadata of agent.attachedFiles) {
@@ -82,10 +80,10 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
82
80
  metadata.serviceMetadata?.resourceId) {
83
81
  try {
84
82
  await this.openai.files.delete(metadata.serviceMetadata.resourceId);
85
- console.log(`Deleted OpenAI file ${metadata.serviceMetadata.resourceId} for agent ${agent.id}`);
83
+ logger_1.logger.log(`Deleted OpenAI file ${metadata.serviceMetadata.resourceId} for agent ${agent.id}`);
86
84
  }
87
85
  catch (error) {
88
- console.error(`Error deleting OpenAI file ${metadata.serviceMetadata.resourceId}:`, error);
86
+ logger_1.logger.error(`Error deleting OpenAI file ${metadata.serviceMetadata.resourceId}:`, error);
89
87
  }
90
88
  }
91
89
  }
@@ -189,7 +187,7 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
189
187
  }
190
188
  }
191
189
  catch (error) {
192
- console.error(error);
190
+ logger_1.logger.error(error);
193
191
  throw error;
194
192
  }
195
193
  if (saveResponse) {
@@ -294,9 +292,9 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
294
292
  const cachedTokens = usage.input_tokens_details?.cached_tokens || 0;
295
293
  const uncachedInputTokens = totalInputTokens - cachedTokens;
296
294
  const outputTokens = usage.output_tokens || 0;
297
- const modelInfo = model_prices_1.default[agent.modelName];
295
+ const modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
298
296
  if (!modelInfo) {
299
- console.error(`No price info found for model ${agent.modelName}`);
297
+ logger_1.logger.error(`No price info found for model ${agent.modelName}`);
300
298
  return;
301
299
  }
302
300
  const uncachedCost = uncachedInputTokens * modelInfo.input_cost_per_token;
@@ -309,18 +307,18 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
309
307
  agent.totalOutputTokens += outputTokens;
310
308
  agent.totalCost += cost;
311
309
  agent.totalMarkup += markup;
312
- console.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
310
+ logger_1.logger.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
313
311
  if (cachedTokens > 0) {
314
- console.log(`Cache metrics for ${agent.agentName}: cached=${cachedTokens}, uncached=${uncachedInputTokens}`);
312
+ logger_1.logger.log(`Cache metrics for ${agent.agentName}: cached=${cachedTokens}, uncached=${uncachedInputTokens}`);
315
313
  }
316
314
  if (agent.balanceService && cost > 0) {
317
315
  agent.balanceService.decrementBalance(cost, markup);
318
316
  }
319
317
  }
320
318
  computeImageCost(agent, usage) {
321
- const modelInfo = model_prices_1.default[agent.modelName];
319
+ const modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
322
320
  if (!modelInfo) {
323
- console.error(`No price info found for model ${agent.modelName}`);
321
+ logger_1.logger.error(`No price info found for model ${agent.modelName}`);
324
322
  return;
325
323
  }
326
324
  const inputImageTokens = usage.input_tokens_details?.image_tokens || 0;
@@ -365,7 +363,7 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
365
363
  const cost = inputCost + outputCost + markup;
366
364
  agent.totalCost += cost;
367
365
  agent.totalMarkup += markup;
368
- console.log(`Cost for image generation: ${cost} (markup: ${markup.toFixed(4)})`);
366
+ logger_1.logger.log(`Cost for image generation: ${cost} (markup: ${markup.toFixed(4)})`);
369
367
  if (agent.balanceService && cost > 0) {
370
368
  agent.balanceService.decrementBalance(cost, markup);
371
369
  }
@@ -408,8 +406,8 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
408
406
  return { artifactId };
409
407
  }
410
408
  catch (error) {
411
- console.error('Error generating image:', error);
412
- console.log(prompt);
409
+ logger_1.logger.error('Error generating image:', error);
410
+ logger_1.logger.log(prompt);
413
411
  return { error };
414
412
  }
415
413
  }
@@ -16,8 +16,9 @@ exports.TogetherAiService = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const together_ai_1 = __importDefault(require("together-ai"));
18
18
  const base_ai_service_1 = require("./base-ai.service");
19
- const model_prices_1 = __importDefault(require("../model_prices"));
19
+ const model_prices_1 = require("../model_prices");
20
20
  const errors_1 = require("../../common/errors");
21
+ const logger_1 = require("../../common/logger");
21
22
  let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAiService {
22
23
  togetherClient;
23
24
  constructor() {
@@ -25,7 +26,6 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
25
26
  try {
26
27
  const apiKey = process.env['TOGETHER_API_KEY'];
27
28
  if (!apiKey) {
28
- console.warn('TOGETHER_API_KEY environment variable not set. Together AI service will not be available.');
29
29
  this._isAvailable = false;
30
30
  return;
31
31
  }
@@ -34,9 +34,10 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
34
34
  timeout: 600000,
35
35
  maxRetries: 3,
36
36
  });
37
+ logger_1.logger.debug('TogetherAI service initialized successfully');
37
38
  }
38
39
  catch (error) {
39
- console.error('Error initializing Together AI service:', error);
40
+ logger_1.logger.error('Error initializing Together AI service:', error);
40
41
  this._isAvailable = false;
41
42
  }
42
43
  }
@@ -142,7 +143,7 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
142
143
  }
143
144
  }
144
145
  catch (error) {
145
- console.error('Error calling Together AI:', error);
146
+ logger_1.logger.error('Error calling Together AI:', error);
146
147
  throw error;
147
148
  }
148
149
  if (saveResponse) {
@@ -157,12 +158,12 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
157
158
  computeMessageCost(agent, usage) {
158
159
  const promptTokens = usage.prompt_tokens || 0;
159
160
  const completionTokens = usage.completion_tokens || 0;
160
- let modelInfo = model_prices_1.default[agent.modelName];
161
+ let modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
161
162
  if (!modelInfo && !agent.modelName.startsWith('together_ai/')) {
162
- modelInfo = model_prices_1.default[`together_ai/${agent.modelName}`];
163
+ modelInfo = (0, model_prices_1.getModelPrices)()[`together_ai/${agent.modelName}`];
163
164
  }
164
165
  if (!modelInfo) {
165
- console.error(`No price info found for model ${agent.modelName} or together_ai/${agent.modelName}`);
166
+ logger_1.logger.error(`No price info found for model ${agent.modelName} or together_ai/${agent.modelName}`);
166
167
  return;
167
168
  }
168
169
  const inputCost = promptTokens * modelInfo.input_cost_per_token;
@@ -173,15 +174,15 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
173
174
  agent.totalOutputTokens += completionTokens;
174
175
  agent.totalCost += cost;
175
176
  agent.totalMarkup += markup;
176
- console.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
177
+ logger_1.logger.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
177
178
  if (agent.balanceService && cost > 0) {
178
179
  agent.balanceService.decrementBalance(cost, markup);
179
180
  }
180
181
  }
181
182
  computeImageCost(agent, usage) {
182
- const modelInfo = model_prices_1.default[agent.modelName];
183
+ const modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
183
184
  if (!modelInfo) {
184
- console.error(`No price info found for model ${agent.modelName}`);
185
+ logger_1.logger.error(`No price info found for model ${agent.modelName}`);
185
186
  return;
186
187
  }
187
188
  const inputImageTokens = usage.input_tokens_details?.image_tokens || 0;
@@ -226,7 +227,7 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
226
227
  const cost = inputCost + outputCost + markup;
227
228
  agent.totalCost += cost;
228
229
  agent.totalMarkup += markup;
229
- console.log(`Cost for image generation: ${cost} (markup: ${markup.toFixed(4)})`);
230
+ logger_1.logger.log(`Cost for image generation: ${cost} (markup: ${markup.toFixed(4)})`);
230
231
  if (agent.balanceService && cost > 0) {
231
232
  agent.balanceService.decrementBalance(cost, markup);
232
233
  }
@@ -272,8 +273,8 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
272
273
  return { artifactId };
273
274
  }
274
275
  catch (error) {
275
- console.error('Error generating image:', error.error?.message || error.message);
276
- console.log(prompt);
276
+ logger_1.logger.error('Error generating image:', error.error?.message || error.message);
277
+ logger_1.logger.log(prompt);
277
278
  return { error };
278
279
  }
279
280
  }
@@ -8,9 +8,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.VertexAiService = void 0;
16
13
  const common_1 = require("@nestjs/common");
@@ -18,15 +15,15 @@ const vertexai_1 = require("@google-cloud/vertexai");
18
15
  const storage_1 = require("@google-cloud/storage");
19
16
  const crypto_1 = require("crypto");
20
17
  const base_ai_service_1 = require("./base-ai.service");
21
- const model_prices_1 = __importDefault(require("../model_prices"));
18
+ const model_prices_1 = require("../model_prices");
22
19
  const errors_1 = require("../../common/errors");
20
+ const logger_1 = require("../../common/logger");
23
21
  let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiService {
24
22
  vertexAI = null;
25
23
  constructor() {
26
24
  super();
27
25
  try {
28
26
  if (!process.env.GOOGLE_PROJECT_ID || !process.env.GOOGLE_CLOUD_LOCATION) {
29
- console.warn('GOOGLE_PROJECT_ID and GOOGLE_CLOUD_LOCATION environment variables are required for Vertex AI service. Service will not be available.');
30
27
  this._isAvailable = false;
31
28
  return;
32
29
  }
@@ -34,9 +31,10 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
34
31
  project: process.env.GOOGLE_PROJECT_ID,
35
32
  location: process.env.GOOGLE_CLOUD_LOCATION,
36
33
  });
34
+ logger_1.logger.debug('Vertex AI service initialized successfully');
37
35
  }
38
36
  catch (error) {
39
- console.error('Error initializing Vertex AI service:', error);
37
+ logger_1.logger.error('Error initializing Vertex AI service:', error);
40
38
  this._isAvailable = false;
41
39
  }
42
40
  }
@@ -92,7 +90,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
92
90
  await file.save(Buffer.from(fileContents), {
93
91
  metadata: { contentType: 'application/octet-stream' },
94
92
  });
95
- console.log(`Successfully uploaded ${fileName} to ${bucketName}`);
93
+ logger_1.logger.log(`Successfully uploaded ${fileName} to ${bucketName}`);
96
94
  return `gs://${bucketName}/${fileName}`;
97
95
  }
98
96
  addToConversationHistory(agent, message, fromSelf = false) {
@@ -189,7 +187,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
189
187
  resp = await generativeModel.generateContent({ contents: messages });
190
188
  }
191
189
  catch (error) {
192
- console.error(error);
190
+ logger_1.logger.error(error);
193
191
  return error.message;
194
192
  }
195
193
  let responseText = resp.response.candidates[0].content.parts[0].text;
@@ -213,9 +211,9 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
213
211
  computeMessageCost(agent, usage) {
214
212
  const inputTokens = usage.promptTokenCount || 0;
215
213
  const outputTokens = usage.candidatesTokenCount || 0;
216
- const modelInfo = model_prices_1.default[agent.modelName];
214
+ const modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
217
215
  if (!modelInfo) {
218
- console.error(`No price info found for model ${agent.modelName}`);
216
+ logger_1.logger.error(`No price info found for model ${agent.modelName}`);
219
217
  return;
220
218
  }
221
219
  const inputCost = inputTokens * modelInfo.input_cost_per_token;
@@ -226,7 +224,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
226
224
  agent.totalOutputTokens += outputTokens;
227
225
  agent.totalCost += cost;
228
226
  agent.totalMarkup += markup;
229
- console.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
227
+ logger_1.logger.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
230
228
  if (agent.balanceService && cost > 0) {
231
229
  agent.balanceService.decrementBalance(cost, markup);
232
230
  }
@@ -245,7 +243,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
245
243
  let gsUri;
246
244
  if (existingMetadata?.serviceMetadata?.uri) {
247
245
  gsUri = existingMetadata.serviceMetadata.uri;
248
- console.log(`Using existing Google Cloud Storage file: ${gsUri}`);
246
+ logger_1.logger.log(`Using existing Google Cloud Storage file: ${gsUri}`);
249
247
  }
250
248
  else {
251
249
  gsUri = await this.uploadFile(fileData);
@@ -306,11 +304,11 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
306
304
  const bucket = storage.bucket(bucketName);
307
305
  const file = bucket.file(fileName);
308
306
  await file.delete();
309
- console.log(`Deleted Google Cloud Storage file ${uri} for agent ${agent.id}`);
307
+ logger_1.logger.log(`Deleted Google Cloud Storage file ${uri} for agent ${agent.id}`);
310
308
  }
311
309
  }
312
310
  catch (error) {
313
- console.error(`Error deleting Google Cloud Storage file ${metadata.serviceMetadata.uri}:`, error);
311
+ logger_1.logger.error(`Error deleting Google Cloud Storage file ${metadata.serviceMetadata.uri}:`, error);
314
312
  }
315
313
  }
316
314
  }
@@ -53,6 +53,7 @@ const artifact_service_1 = require("./artifact.service");
53
53
  const configuration_service_1 = require("../config/configuration.service");
54
54
  const attached_file_service_1 = require("./attached-file.service");
55
55
  const balance_service_1 = require("../app/balance.service");
56
+ const logger_1 = require("../common/logger");
56
57
  let AgentStoreService = class AgentStoreService {
57
58
  aiFactoryService;
58
59
  configService;
@@ -103,7 +104,7 @@ let AgentStoreService = class AgentStoreService {
103
104
  agent.aiService.finishAgent(agent);
104
105
  }
105
106
  catch (error) {
106
- console.error(`Error finishing agent ${id}:`, error);
107
+ logger_1.logger.error(`Error finishing agent ${id}:`, error);
107
108
  }
108
109
  }
109
110
  this.attachedFileService.deleteAllFiles(agent.id);
@@ -212,20 +213,20 @@ let AgentStoreService = class AgentStoreService {
212
213
  await fs.promises.access(storageDir);
213
214
  }
214
215
  catch {
215
- console.log(`Agent storage directory not found: ${storageDir}`);
216
+ logger_1.logger.log(`Agent storage directory not found: ${storageDir}`);
216
217
  await fs.promises.mkdir(storageDir, { recursive: true });
217
218
  return;
218
219
  }
219
220
  const allFiles = await fs.promises.readdir(storageDir);
220
221
  const files = allFiles.filter((file) => file.endsWith('.json'));
221
- console.log(`Loading ${files.length} agents from ${storageDir}`);
222
+ logger_1.logger.log(`Loading ${files.length} agents from ${storageDir}`);
222
223
  for (const file of files) {
223
224
  try {
224
225
  const filePath = path.join(storageDir, file);
225
226
  const fileContent = await fs.promises.readFile(filePath, 'utf-8');
226
227
  const config = JSON.parse(fileContent);
227
228
  if (this.agents.has(config.id)) {
228
- console.log(`Agent ${config.agentName} (${config.id}) already loaded, skipping`);
229
+ logger_1.logger.log(`Agent ${config.agentName} (${config.id}) already loaded, skipping`);
229
230
  continue;
230
231
  }
231
232
  const aiService = this.aiFactoryService.createAiService(config.serviceName);
@@ -264,21 +265,21 @@ let AgentStoreService = class AgentStoreService {
264
265
  const fileData = this.attachedFileService.getFile(agent.id, metadata.fileId);
265
266
  if (fileData && metadata.serviceMetadata && agent.fullContextFiles) {
266
267
  metadata.serviceMetadata.fileData = Array.from(fileData);
267
- console.log(`Restored fileData for ${metadata.fileName} (fullContextFiles=true)`);
268
+ logger_1.logger.log(`Restored fileData for ${metadata.fileName} (fullContextFiles=true)`);
268
269
  }
269
270
  }
270
271
  if (config.attachedArtifacts && config.attachedArtifacts.length > 0) {
271
272
  agent.attachedArtifacts = config.attachedArtifacts;
272
273
  }
273
- console.log(`Loaded agent: ${config.agentName} (${config.id}) with ${agent.history.length} history items`);
274
+ logger_1.logger.log(`Loaded agent: ${config.agentName} (${config.id}) with ${agent.history.length} history items`);
274
275
  }
275
276
  catch (error) {
276
- console.error(`Error loading agent from file ${file}:`, error);
277
+ logger_1.logger.error(`Error loading agent from file ${file}:`, error);
277
278
  }
278
279
  }
279
280
  }
280
281
  catch (error) {
281
- console.error(`Error loading agents from directory ${storageDir}:`, error);
282
+ logger_1.logger.error(`Error loading agents from directory ${storageDir}:`, error);
282
283
  }
283
284
  }
284
285
  saveAgentToFile(agent, storageDir) {
@@ -331,7 +332,7 @@ let AgentStoreService = class AgentStoreService {
331
332
  fs.writeFileSync(filePath, JSON.stringify(config, null, 2), 'utf-8');
332
333
  }
333
334
  catch (error) {
334
- console.error(`Error saving agent ${agent.id} to file:`, error);
335
+ logger_1.logger.error(`Error saving agent ${agent.id} to file:`, error);
335
336
  }
336
337
  }
337
338
  deleteAgentFile(agentId, storageDir) {
@@ -339,11 +340,11 @@ let AgentStoreService = class AgentStoreService {
339
340
  const filePath = path.join(storageDir, `${agentId}.json`);
340
341
  if (fs.existsSync(filePath)) {
341
342
  fs.unlinkSync(filePath);
342
- console.log(`Deleted agent file: ${filePath}`);
343
+ logger_1.logger.log(`Deleted agent file: ${filePath}`);
343
344
  }
344
345
  }
345
346
  catch (error) {
346
- console.error(`Error deleting agent file ${agentId}:`, error);
347
+ logger_1.logger.error(`Error deleting agent file ${agentId}:`, error);
347
348
  }
348
349
  }
349
350
  };
@@ -48,6 +48,7 @@ const fs = __importStar(require("fs"));
48
48
  const path = __importStar(require("path"));
49
49
  const crypto_1 = require("crypto");
50
50
  const configuration_service_1 = require("../config/configuration.service");
51
+ const logger_1 = require("../common/logger");
51
52
  let ArtifactService = class ArtifactService {
52
53
  configService;
53
54
  artifactsDir;
@@ -77,7 +78,7 @@ let ArtifactService = class ArtifactService {
77
78
  return JSON.parse(content);
78
79
  }
79
80
  catch (error) {
80
- console.error('Error loading artifact metadata:', error);
81
+ logger_1.logger.error('Error loading artifact metadata:', error);
81
82
  return {};
82
83
  }
83
84
  }
@@ -130,7 +131,7 @@ let ArtifactService = class ArtifactService {
130
131
  }
131
132
  }
132
133
  catch (error) {
133
- console.error(`Error reading artifact ${artifactId}:`, error);
134
+ logger_1.logger.error(`Error reading artifact ${artifactId}:`, error);
134
135
  return null;
135
136
  }
136
137
  }
@@ -157,7 +158,7 @@ let ArtifactService = class ArtifactService {
157
158
  return true;
158
159
  }
159
160
  catch (error) {
160
- console.error(`Error updating artifact ${artifactId}:`, error);
161
+ logger_1.logger.error(`Error updating artifact ${artifactId}:`, error);
161
162
  return false;
162
163
  }
163
164
  }
@@ -172,7 +173,7 @@ let ArtifactService = class ArtifactService {
172
173
  return true;
173
174
  }
174
175
  catch (error) {
175
- console.error(`Error renaming artifact ${artifactId}:`, error);
176
+ logger_1.logger.error(`Error renaming artifact ${artifactId}:`, error);
176
177
  return false;
177
178
  }
178
179
  }
@@ -187,7 +188,7 @@ let ArtifactService = class ArtifactService {
187
188
  return true;
188
189
  }
189
190
  catch (error) {
190
- console.error(`Error updating artifact description ${artifactId}:`, error);
191
+ logger_1.logger.error(`Error updating artifact description ${artifactId}:`, error);
191
192
  return false;
192
193
  }
193
194
  }
@@ -208,7 +209,7 @@ let ArtifactService = class ArtifactService {
208
209
  return true;
209
210
  }
210
211
  catch (error) {
211
- console.error(`Error deleting artifact ${artifactId}:`, error);
212
+ logger_1.logger.error(`Error deleting artifact ${artifactId}:`, error);
212
213
  return false;
213
214
  }
214
215
  }