briyah 1.0.7 → 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.
- package/README.md +31 -21
- package/dist/server/src/ai/LLM/anthropic.service.js +16 -8
- package/dist/server/src/ai/LLM/base-ai.service.js +5 -4
- package/dist/server/src/ai/LLM/deepseek.service.js +8 -6
- package/dist/server/src/ai/LLM/fal.service.js +15 -14
- package/dist/server/src/ai/LLM/googleai.service.js +10 -8
- package/dist/server/src/ai/LLM/grok.service.js +9 -7
- package/dist/server/src/ai/LLM/mock.service.js +7 -6
- package/dist/server/src/ai/LLM/openai.service.js +15 -13
- package/dist/server/src/ai/LLM/together.service.js +10 -8
- package/dist/server/src/ai/LLM/vertexai.service.js +10 -9
- package/dist/server/src/ai/agent-store.service.js +12 -11
- package/dist/server/src/ai/artifact.service.js +7 -6
- package/dist/server/src/ai/attached-file.service.js +8 -7
- package/dist/server/src/ai/published-agents.service.js +5 -4
- package/dist/server/src/app/balance.service.js +7 -6
- package/dist/server/src/app/stripe.controller.js +12 -11
- package/dist/server/src/app/stripe.service.js +20 -19
- package/dist/server/src/app/transaction.service.js +6 -5
- package/dist/server/src/app/user-service-manager.js +6 -5
- package/dist/server/src/app.controller.js +95 -94
- package/dist/server/src/app.service.js +31 -30
- package/dist/server/src/auth/auth.controller.js +21 -20
- package/dist/server/src/auth/jwt-auth.guard.js +4 -3
- package/dist/server/src/auth/rate-limit.service.d.ts +0 -1
- package/dist/server/src/auth/rate-limit.service.js +6 -7
- package/dist/server/src/auth/twilio.service.js +4 -3
- package/dist/server/src/auth/users.service.js +5 -4
- package/dist/server/src/common/logger.d.ts +21 -0
- package/dist/server/src/common/logger.js +83 -0
- package/dist/server/src/room/artifact-store.service.d.ts +0 -1
- package/dist/server/src/room/artifact-store.service.js +16 -17
- package/dist/server/src/room/published-rooms.service.js +3 -2
- package/dist/server/src/room/room-store.service.js +17 -16
- package/dist/server/src/room/room.js +14 -13
- package/dist/server/src/sdk/briyah-config.d.ts +7 -0
- package/dist/server/src/sdk/briyah-config.js +1 -0
- package/dist/server/src/sdk/briyah.js +13 -4
- package/dist/server/src/sdk/index.d.ts +2 -1
- package/dist/server/src/story/story-progress.service.js +2 -1
- package/dist/server/src/story/story-store.service.js +28 -27
- package/dist/server/src/story/story.service.js +113 -112
- package/docs/.nojekyll +1 -0
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/highlight.css +106 -0
- package/docs/assets/icons.js +18 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +60 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1633 -0
- package/docs/classes/Agent.html +87 -0
- package/docs/classes/Briyah.html +64 -0
- package/docs/classes/BriyahConfigService.html +12 -0
- package/docs/classes/Room.html +119 -0
- package/docs/enums/MessageAction.html +13 -0
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +136 -0
- package/docs/interfaces/AgentInfo.html +17 -0
- package/docs/interfaces/AgentMessagesResponse.html +5 -0
- package/docs/interfaces/AppService.html +680 -0
- package/docs/interfaces/ArtifactMetadata.html +8 -0
- package/docs/interfaces/AttachDocumentResponse.html +3 -0
- package/docs/interfaces/BriyahConfigOptions.html +16 -0
- package/docs/interfaces/ChapterInfo.html +3 -0
- package/docs/interfaces/Character.html +7 -0
- package/docs/interfaces/CreateAgentResponse.html +2 -0
- package/docs/interfaces/CreateRoomResponse.html +3 -0
- package/docs/interfaces/CreateStoryResponse.html +2 -0
- package/docs/interfaces/FileList.html +2 -0
- package/docs/interfaces/LoggingOptions.html +9 -0
- package/docs/interfaces/Message.html +6 -0
- package/docs/interfaces/ModelInfo.html +5 -0
- package/docs/interfaces/PreparedPromptResponse.html +3 -0
- package/docs/interfaces/ProcessTextResponse.html +7 -0
- package/docs/interfaces/PromptFile.html +3 -0
- package/docs/interfaces/PromptFileContent.html +3 -0
- package/docs/interfaces/PromptFilesResponse.html +2 -0
- package/docs/interfaces/PromptFolder.html +3 -0
- package/docs/interfaces/PromptFoldersResponse.html +2 -0
- package/docs/interfaces/RoomDetails.html +9 -0
- package/docs/interfaces/RoomInfo.html +5 -0
- package/docs/interfaces/RoomMessagesResponse.html +3 -0
- package/docs/interfaces/StoryIdea.html +5 -0
- package/docs/interfaces/StoryInfo.html +21 -0
- package/docs/interfaces/StoryState.html +9 -0
- package/docs/modules.html +1 -0
- package/docs/types/PromptScope.html +1 -0
- package/package.json +6 -3
- package/data/common/config/story_ideas.txt +0 -6
|
@@ -16,6 +16,7 @@ const base_ai_service_1 = require("./base-ai.service");
|
|
|
16
16
|
const openai_2 = require("openai");
|
|
17
17
|
const model_prices_1 = require("../model_prices");
|
|
18
18
|
const errors_1 = require("../../common/errors");
|
|
19
|
+
const logger_1 = require("../../common/logger");
|
|
19
20
|
let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService {
|
|
20
21
|
openai;
|
|
21
22
|
constructor() {
|
|
@@ -35,9 +36,10 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
35
36
|
options.organization = process.env.OPENAI_ORGANIZATION_ID;
|
|
36
37
|
}
|
|
37
38
|
this.openai = new openai_2.OpenAI(options);
|
|
39
|
+
logger_1.logger.debug('OpenAI service initialized successfully');
|
|
38
40
|
}
|
|
39
41
|
catch (error) {
|
|
40
|
-
|
|
42
|
+
logger_1.logger.error('Error initializing OpenAI service:', error);
|
|
41
43
|
this._isAvailable = false;
|
|
42
44
|
}
|
|
43
45
|
}
|
|
@@ -67,10 +69,10 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
67
69
|
if (agent.vectorStore) {
|
|
68
70
|
try {
|
|
69
71
|
await this.openai.vectorStores.delete(agent.vectorStore.id);
|
|
70
|
-
|
|
72
|
+
logger_1.logger.log(`Deleted vector store for agent ${agent.id}`);
|
|
71
73
|
}
|
|
72
74
|
catch (error) {
|
|
73
|
-
|
|
75
|
+
logger_1.logger.error(`Error deleting vector store for agent ${agent.id}:`, error);
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
78
|
for (const metadata of agent.attachedFiles) {
|
|
@@ -78,10 +80,10 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
78
80
|
metadata.serviceMetadata?.resourceId) {
|
|
79
81
|
try {
|
|
80
82
|
await this.openai.files.delete(metadata.serviceMetadata.resourceId);
|
|
81
|
-
|
|
83
|
+
logger_1.logger.log(`Deleted OpenAI file ${metadata.serviceMetadata.resourceId} for agent ${agent.id}`);
|
|
82
84
|
}
|
|
83
85
|
catch (error) {
|
|
84
|
-
|
|
86
|
+
logger_1.logger.error(`Error deleting OpenAI file ${metadata.serviceMetadata.resourceId}:`, error);
|
|
85
87
|
}
|
|
86
88
|
}
|
|
87
89
|
}
|
|
@@ -185,7 +187,7 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
185
187
|
}
|
|
186
188
|
}
|
|
187
189
|
catch (error) {
|
|
188
|
-
|
|
190
|
+
logger_1.logger.error(error);
|
|
189
191
|
throw error;
|
|
190
192
|
}
|
|
191
193
|
if (saveResponse) {
|
|
@@ -292,7 +294,7 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
292
294
|
const outputTokens = usage.output_tokens || 0;
|
|
293
295
|
const modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
|
|
294
296
|
if (!modelInfo) {
|
|
295
|
-
|
|
297
|
+
logger_1.logger.error(`No price info found for model ${agent.modelName}`);
|
|
296
298
|
return;
|
|
297
299
|
}
|
|
298
300
|
const uncachedCost = uncachedInputTokens * modelInfo.input_cost_per_token;
|
|
@@ -305,9 +307,9 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
305
307
|
agent.totalOutputTokens += outputTokens;
|
|
306
308
|
agent.totalCost += cost;
|
|
307
309
|
agent.totalMarkup += markup;
|
|
308
|
-
|
|
310
|
+
logger_1.logger.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
|
|
309
311
|
if (cachedTokens > 0) {
|
|
310
|
-
|
|
312
|
+
logger_1.logger.log(`Cache metrics for ${agent.agentName}: cached=${cachedTokens}, uncached=${uncachedInputTokens}`);
|
|
311
313
|
}
|
|
312
314
|
if (agent.balanceService && cost > 0) {
|
|
313
315
|
agent.balanceService.decrementBalance(cost, markup);
|
|
@@ -316,7 +318,7 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
316
318
|
computeImageCost(agent, usage) {
|
|
317
319
|
const modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
|
|
318
320
|
if (!modelInfo) {
|
|
319
|
-
|
|
321
|
+
logger_1.logger.error(`No price info found for model ${agent.modelName}`);
|
|
320
322
|
return;
|
|
321
323
|
}
|
|
322
324
|
const inputImageTokens = usage.input_tokens_details?.image_tokens || 0;
|
|
@@ -361,7 +363,7 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
361
363
|
const cost = inputCost + outputCost + markup;
|
|
362
364
|
agent.totalCost += cost;
|
|
363
365
|
agent.totalMarkup += markup;
|
|
364
|
-
|
|
366
|
+
logger_1.logger.log(`Cost for image generation: ${cost} (markup: ${markup.toFixed(4)})`);
|
|
365
367
|
if (agent.balanceService && cost > 0) {
|
|
366
368
|
agent.balanceService.decrementBalance(cost, markup);
|
|
367
369
|
}
|
|
@@ -404,8 +406,8 @@ let OpenAiService = class OpenAiService extends base_ai_service_1.BaseAiService
|
|
|
404
406
|
return { artifactId };
|
|
405
407
|
}
|
|
406
408
|
catch (error) {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
+
logger_1.logger.error('Error generating image:', error);
|
|
410
|
+
logger_1.logger.log(prompt);
|
|
409
411
|
return { error };
|
|
410
412
|
}
|
|
411
413
|
}
|
|
@@ -18,6 +18,7 @@ const together_ai_1 = __importDefault(require("together-ai"));
|
|
|
18
18
|
const base_ai_service_1 = require("./base-ai.service");
|
|
19
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() {
|
|
@@ -33,9 +34,10 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
|
|
|
33
34
|
timeout: 600000,
|
|
34
35
|
maxRetries: 3,
|
|
35
36
|
});
|
|
37
|
+
logger_1.logger.debug('TogetherAI service initialized successfully');
|
|
36
38
|
}
|
|
37
39
|
catch (error) {
|
|
38
|
-
|
|
40
|
+
logger_1.logger.error('Error initializing Together AI service:', error);
|
|
39
41
|
this._isAvailable = false;
|
|
40
42
|
}
|
|
41
43
|
}
|
|
@@ -141,7 +143,7 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
|
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
145
|
catch (error) {
|
|
144
|
-
|
|
146
|
+
logger_1.logger.error('Error calling Together AI:', error);
|
|
145
147
|
throw error;
|
|
146
148
|
}
|
|
147
149
|
if (saveResponse) {
|
|
@@ -161,7 +163,7 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
|
|
|
161
163
|
modelInfo = (0, model_prices_1.getModelPrices)()[`together_ai/${agent.modelName}`];
|
|
162
164
|
}
|
|
163
165
|
if (!modelInfo) {
|
|
164
|
-
|
|
166
|
+
logger_1.logger.error(`No price info found for model ${agent.modelName} or together_ai/${agent.modelName}`);
|
|
165
167
|
return;
|
|
166
168
|
}
|
|
167
169
|
const inputCost = promptTokens * modelInfo.input_cost_per_token;
|
|
@@ -172,7 +174,7 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
|
|
|
172
174
|
agent.totalOutputTokens += completionTokens;
|
|
173
175
|
agent.totalCost += cost;
|
|
174
176
|
agent.totalMarkup += markup;
|
|
175
|
-
|
|
177
|
+
logger_1.logger.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
|
|
176
178
|
if (agent.balanceService && cost > 0) {
|
|
177
179
|
agent.balanceService.decrementBalance(cost, markup);
|
|
178
180
|
}
|
|
@@ -180,7 +182,7 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
|
|
|
180
182
|
computeImageCost(agent, usage) {
|
|
181
183
|
const modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
|
|
182
184
|
if (!modelInfo) {
|
|
183
|
-
|
|
185
|
+
logger_1.logger.error(`No price info found for model ${agent.modelName}`);
|
|
184
186
|
return;
|
|
185
187
|
}
|
|
186
188
|
const inputImageTokens = usage.input_tokens_details?.image_tokens || 0;
|
|
@@ -225,7 +227,7 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
|
|
|
225
227
|
const cost = inputCost + outputCost + markup;
|
|
226
228
|
agent.totalCost += cost;
|
|
227
229
|
agent.totalMarkup += markup;
|
|
228
|
-
|
|
230
|
+
logger_1.logger.log(`Cost for image generation: ${cost} (markup: ${markup.toFixed(4)})`);
|
|
229
231
|
if (agent.balanceService && cost > 0) {
|
|
230
232
|
agent.balanceService.decrementBalance(cost, markup);
|
|
231
233
|
}
|
|
@@ -271,8 +273,8 @@ let TogetherAiService = class TogetherAiService extends base_ai_service_1.BaseAi
|
|
|
271
273
|
return { artifactId };
|
|
272
274
|
}
|
|
273
275
|
catch (error) {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
+
logger_1.logger.error('Error generating image:', error.error?.message || error.message);
|
|
277
|
+
logger_1.logger.log(prompt);
|
|
276
278
|
return { error };
|
|
277
279
|
}
|
|
278
280
|
}
|
|
@@ -17,13 +17,13 @@ const crypto_1 = require("crypto");
|
|
|
17
17
|
const base_ai_service_1 = require("./base-ai.service");
|
|
18
18
|
const model_prices_1 = require("../model_prices");
|
|
19
19
|
const errors_1 = require("../../common/errors");
|
|
20
|
+
const logger_1 = require("../../common/logger");
|
|
20
21
|
let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiService {
|
|
21
22
|
vertexAI = null;
|
|
22
23
|
constructor() {
|
|
23
24
|
super();
|
|
24
25
|
try {
|
|
25
26
|
if (!process.env.GOOGLE_PROJECT_ID || !process.env.GOOGLE_CLOUD_LOCATION) {
|
|
26
|
-
console.warn('GOOGLE_PROJECT_ID and GOOGLE_CLOUD_LOCATION environment variables are required for Vertex AI service. Service will not be available.');
|
|
27
27
|
this._isAvailable = false;
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
@@ -31,9 +31,10 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
|
|
|
31
31
|
project: process.env.GOOGLE_PROJECT_ID,
|
|
32
32
|
location: process.env.GOOGLE_CLOUD_LOCATION,
|
|
33
33
|
});
|
|
34
|
+
logger_1.logger.debug('Vertex AI service initialized successfully');
|
|
34
35
|
}
|
|
35
36
|
catch (error) {
|
|
36
|
-
|
|
37
|
+
logger_1.logger.error('Error initializing Vertex AI service:', error);
|
|
37
38
|
this._isAvailable = false;
|
|
38
39
|
}
|
|
39
40
|
}
|
|
@@ -89,7 +90,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
|
|
|
89
90
|
await file.save(Buffer.from(fileContents), {
|
|
90
91
|
metadata: { contentType: 'application/octet-stream' },
|
|
91
92
|
});
|
|
92
|
-
|
|
93
|
+
logger_1.logger.log(`Successfully uploaded ${fileName} to ${bucketName}`);
|
|
93
94
|
return `gs://${bucketName}/${fileName}`;
|
|
94
95
|
}
|
|
95
96
|
addToConversationHistory(agent, message, fromSelf = false) {
|
|
@@ -186,7 +187,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
|
|
|
186
187
|
resp = await generativeModel.generateContent({ contents: messages });
|
|
187
188
|
}
|
|
188
189
|
catch (error) {
|
|
189
|
-
|
|
190
|
+
logger_1.logger.error(error);
|
|
190
191
|
return error.message;
|
|
191
192
|
}
|
|
192
193
|
let responseText = resp.response.candidates[0].content.parts[0].text;
|
|
@@ -212,7 +213,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
|
|
|
212
213
|
const outputTokens = usage.candidatesTokenCount || 0;
|
|
213
214
|
const modelInfo = (0, model_prices_1.getModelPrices)()[agent.modelName];
|
|
214
215
|
if (!modelInfo) {
|
|
215
|
-
|
|
216
|
+
logger_1.logger.error(`No price info found for model ${agent.modelName}`);
|
|
216
217
|
return;
|
|
217
218
|
}
|
|
218
219
|
const inputCost = inputTokens * modelInfo.input_cost_per_token;
|
|
@@ -223,7 +224,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
|
|
|
223
224
|
agent.totalOutputTokens += outputTokens;
|
|
224
225
|
agent.totalCost += cost;
|
|
225
226
|
agent.totalMarkup += markup;
|
|
226
|
-
|
|
227
|
+
logger_1.logger.log(`Cost for ${agent.agentName} message: ${cost} (markup: ${markup.toFixed(4)})`);
|
|
227
228
|
if (agent.balanceService && cost > 0) {
|
|
228
229
|
agent.balanceService.decrementBalance(cost, markup);
|
|
229
230
|
}
|
|
@@ -242,7 +243,7 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
|
|
|
242
243
|
let gsUri;
|
|
243
244
|
if (existingMetadata?.serviceMetadata?.uri) {
|
|
244
245
|
gsUri = existingMetadata.serviceMetadata.uri;
|
|
245
|
-
|
|
246
|
+
logger_1.logger.log(`Using existing Google Cloud Storage file: ${gsUri}`);
|
|
246
247
|
}
|
|
247
248
|
else {
|
|
248
249
|
gsUri = await this.uploadFile(fileData);
|
|
@@ -303,11 +304,11 @@ let VertexAiService = class VertexAiService extends base_ai_service_1.BaseAiServ
|
|
|
303
304
|
const bucket = storage.bucket(bucketName);
|
|
304
305
|
const file = bucket.file(fileName);
|
|
305
306
|
await file.delete();
|
|
306
|
-
|
|
307
|
+
logger_1.logger.log(`Deleted Google Cloud Storage file ${uri} for agent ${agent.id}`);
|
|
307
308
|
}
|
|
308
309
|
}
|
|
309
310
|
catch (error) {
|
|
310
|
-
|
|
311
|
+
logger_1.logger.error(`Error deleting Google Cloud Storage file ${metadata.serviceMetadata.uri}:`, error);
|
|
311
312
|
}
|
|
312
313
|
}
|
|
313
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
274
|
+
logger_1.logger.log(`Loaded agent: ${config.agentName} (${config.id}) with ${agent.history.length} history items`);
|
|
274
275
|
}
|
|
275
276
|
catch (error) {
|
|
276
|
-
|
|
277
|
+
logger_1.logger.error(`Error loading agent from file ${file}:`, error);
|
|
277
278
|
}
|
|
278
279
|
}
|
|
279
280
|
}
|
|
280
281
|
catch (error) {
|
|
281
|
-
|
|
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
|
-
|
|
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
|
-
|
|
343
|
+
logger_1.logger.log(`Deleted agent file: ${filePath}`);
|
|
343
344
|
}
|
|
344
345
|
}
|
|
345
346
|
catch (error) {
|
|
346
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
212
|
+
logger_1.logger.error(`Error deleting artifact ${artifactId}:`, error);
|
|
212
213
|
return false;
|
|
213
214
|
}
|
|
214
215
|
}
|
|
@@ -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 AttachedFileService = class AttachedFileService {
|
|
52
53
|
configService;
|
|
53
54
|
attachedFilesDir;
|
|
@@ -64,7 +65,7 @@ let AttachedFileService = class AttachedFileService {
|
|
|
64
65
|
storeFile(ownerId, fileName, fileData, additionalMetadata = {}) {
|
|
65
66
|
const existingMetadata = this.getFileMetadataByName(ownerId, fileName);
|
|
66
67
|
if (existingMetadata) {
|
|
67
|
-
|
|
68
|
+
logger_1.logger.log(`File "${fileName}" already exists for owner ${ownerId}, returning existing fileId: ${existingMetadata.fileId}`);
|
|
68
69
|
if (Object.keys(additionalMetadata).length > 0) {
|
|
69
70
|
this.updateFileMetadata(ownerId, existingMetadata.fileId, additionalMetadata);
|
|
70
71
|
}
|
|
@@ -84,7 +85,7 @@ let AttachedFileService = class AttachedFileService {
|
|
|
84
85
|
metadataMap = JSON.parse(fs.readFileSync(metadataPath, 'utf8'));
|
|
85
86
|
}
|
|
86
87
|
catch (error) {
|
|
87
|
-
|
|
88
|
+
logger_1.logger.error('Error loading file metadata:', error);
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
const metadata = {
|
|
@@ -134,7 +135,7 @@ let AttachedFileService = class AttachedFileService {
|
|
|
134
135
|
return true;
|
|
135
136
|
}
|
|
136
137
|
catch (error) {
|
|
137
|
-
|
|
138
|
+
logger_1.logger.error('Error updating file metadata:', error);
|
|
138
139
|
return false;
|
|
139
140
|
}
|
|
140
141
|
}
|
|
@@ -148,7 +149,7 @@ let AttachedFileService = class AttachedFileService {
|
|
|
148
149
|
return metadataMap[fileId] || null;
|
|
149
150
|
}
|
|
150
151
|
catch (error) {
|
|
151
|
-
|
|
152
|
+
logger_1.logger.error('Error getting file metadata:', error);
|
|
152
153
|
return null;
|
|
153
154
|
}
|
|
154
155
|
}
|
|
@@ -166,7 +167,7 @@ let AttachedFileService = class AttachedFileService {
|
|
|
166
167
|
}
|
|
167
168
|
}
|
|
168
169
|
catch (error) {
|
|
169
|
-
|
|
170
|
+
logger_1.logger.error('Error getting file metadata by name:', error);
|
|
170
171
|
}
|
|
171
172
|
return null;
|
|
172
173
|
}
|
|
@@ -184,7 +185,7 @@ let AttachedFileService = class AttachedFileService {
|
|
|
184
185
|
return Object.values(metadataMap);
|
|
185
186
|
}
|
|
186
187
|
catch (error) {
|
|
187
|
-
|
|
188
|
+
logger_1.logger.error('Error listing file metadata:', error);
|
|
188
189
|
return [];
|
|
189
190
|
}
|
|
190
191
|
}
|
|
@@ -208,7 +209,7 @@ let AttachedFileService = class AttachedFileService {
|
|
|
208
209
|
}
|
|
209
210
|
}
|
|
210
211
|
catch (error) {
|
|
211
|
-
|
|
212
|
+
logger_1.logger.error('Error updating file metadata:', error);
|
|
212
213
|
}
|
|
213
214
|
}
|
|
214
215
|
return true;
|
|
@@ -46,6 +46,7 @@ exports.PublishedAgentsService = void 0;
|
|
|
46
46
|
const common_1 = require("@nestjs/common");
|
|
47
47
|
const fs = __importStar(require("fs"));
|
|
48
48
|
const path = __importStar(require("path"));
|
|
49
|
+
const logger_1 = require("../common/logger");
|
|
49
50
|
let PublishedAgentsService = class PublishedAgentsService {
|
|
50
51
|
mapping = new Map();
|
|
51
52
|
mappingFile;
|
|
@@ -77,7 +78,7 @@ let PublishedAgentsService = class PublishedAgentsService {
|
|
|
77
78
|
load() {
|
|
78
79
|
try {
|
|
79
80
|
if (!fs.existsSync(this.mappingFile)) {
|
|
80
|
-
|
|
81
|
+
logger_1.logger.log('[PublishedAgentsService] No published agents file found, starting fresh');
|
|
81
82
|
this.mapping = new Map();
|
|
82
83
|
this.save();
|
|
83
84
|
return;
|
|
@@ -92,8 +93,8 @@ let PublishedAgentsService = class PublishedAgentsService {
|
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
95
|
catch (error) {
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
logger_1.logger.error('[PublishedAgentsService] Error loading published agents:', error);
|
|
97
|
+
logger_1.logger.log('[PublishedAgentsService] Starting with empty mapping');
|
|
97
98
|
this.mapping = new Map();
|
|
98
99
|
this.save();
|
|
99
100
|
}
|
|
@@ -107,7 +108,7 @@ let PublishedAgentsService = class PublishedAgentsService {
|
|
|
107
108
|
fs.writeFileSync(this.mappingFile, JSON.stringify(data, null, 2), 'utf-8');
|
|
108
109
|
}
|
|
109
110
|
catch (error) {
|
|
110
|
-
|
|
111
|
+
logger_1.logger.error('[PublishedAgentsService] Error saving published agents:', error);
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
114
|
};
|
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.BalanceService = void 0;
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
+
const logger_1 = require("../common/logger");
|
|
39
40
|
class BalanceService {
|
|
40
41
|
userId;
|
|
41
42
|
configService;
|
|
@@ -71,14 +72,14 @@ class BalanceService {
|
|
|
71
72
|
const balanceStr = fs.readFileSync(this.balanceFilePath, 'utf-8').trim();
|
|
72
73
|
const balance = parseFloat(balanceStr);
|
|
73
74
|
if (isNaN(balance)) {
|
|
74
|
-
|
|
75
|
+
logger_1.logger.error(`Balance file corrupted for user ${this.userId}, resetting to starting balance`);
|
|
75
76
|
this.saveBalance(this.startingBalance);
|
|
76
77
|
return this.startingBalance;
|
|
77
78
|
}
|
|
78
79
|
return balance;
|
|
79
80
|
}
|
|
80
81
|
catch (error) {
|
|
81
|
-
|
|
82
|
+
logger_1.logger.error(`Error reading balance for user ${this.userId}:`, error);
|
|
82
83
|
return this.startingBalance;
|
|
83
84
|
}
|
|
84
85
|
}
|
|
@@ -91,14 +92,14 @@ class BalanceService {
|
|
|
91
92
|
const markupStr = fs.readFileSync(this.markupFilePath, 'utf-8').trim();
|
|
92
93
|
const markup = parseFloat(markupStr);
|
|
93
94
|
if (isNaN(markup)) {
|
|
94
|
-
|
|
95
|
+
logger_1.logger.error(`Markup file corrupted, resetting to 0`);
|
|
95
96
|
this.saveMarkup(0);
|
|
96
97
|
return 0;
|
|
97
98
|
}
|
|
98
99
|
return markup;
|
|
99
100
|
}
|
|
100
101
|
catch (error) {
|
|
101
|
-
|
|
102
|
+
logger_1.logger.error(`Error reading markup:`, error);
|
|
102
103
|
return 0;
|
|
103
104
|
}
|
|
104
105
|
}
|
|
@@ -137,7 +138,7 @@ class BalanceService {
|
|
|
137
138
|
}
|
|
138
139
|
}
|
|
139
140
|
catch (error) {
|
|
140
|
-
|
|
141
|
+
logger_1.logger.error(`Error saving balance for user ${this.userId}:`, error);
|
|
141
142
|
throw error;
|
|
142
143
|
}
|
|
143
144
|
}
|
|
@@ -150,7 +151,7 @@ class BalanceService {
|
|
|
150
151
|
fs.writeFileSync(this.markupFilePath, markup.toString(), 'utf-8');
|
|
151
152
|
}
|
|
152
153
|
catch (error) {
|
|
153
|
-
|
|
154
|
+
logger_1.logger.error(`Error saving markup:`, error);
|
|
154
155
|
throw error;
|
|
155
156
|
}
|
|
156
157
|
}
|
|
@@ -18,6 +18,7 @@ const stripe_service_1 = require("./stripe.service");
|
|
|
18
18
|
const user_service_manager_1 = require("./user-service-manager");
|
|
19
19
|
const jwt_auth_guard_1 = require("../auth/jwt-auth.guard");
|
|
20
20
|
const public_decorator_1 = require("../auth/public.decorator");
|
|
21
|
+
const logger_1 = require("../common/logger");
|
|
21
22
|
let StripeController = class StripeController {
|
|
22
23
|
stripeService;
|
|
23
24
|
userServiceManager;
|
|
@@ -45,26 +46,26 @@ let StripeController = class StripeController {
|
|
|
45
46
|
return this.stripeService.getStripeConfig();
|
|
46
47
|
}
|
|
47
48
|
async handleWebhook(req, signature) {
|
|
48
|
-
|
|
49
|
+
logger_1.logger.log('[Stripe Webhook] Received webhook request');
|
|
49
50
|
if (!signature) {
|
|
50
|
-
|
|
51
|
+
logger_1.logger.error('[Stripe Webhook] Missing stripe-signature header');
|
|
51
52
|
throw new common_1.BadRequestException('Missing stripe-signature header');
|
|
52
53
|
}
|
|
53
54
|
const rawBody = req.rawBody;
|
|
54
55
|
if (!rawBody) {
|
|
55
|
-
|
|
56
|
+
logger_1.logger.error('[Stripe Webhook] Missing request body');
|
|
56
57
|
throw new common_1.BadRequestException('Missing request body');
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
+
logger_1.logger.log('[Stripe Webhook] Verifying webhook signature...');
|
|
59
60
|
const event = this.stripeService.verifyWebhookSignature(rawBody, signature);
|
|
60
|
-
|
|
61
|
+
logger_1.logger.log(`[Stripe Webhook] Event type: ${event.type}, Event ID: ${event.id}`);
|
|
61
62
|
switch (event.type) {
|
|
62
63
|
case 'payment_intent.succeeded': {
|
|
63
|
-
|
|
64
|
+
logger_1.logger.log('[Stripe Webhook] Matched payment_intent.succeeded case');
|
|
64
65
|
const paymentIntent = event.data.object;
|
|
65
66
|
const userId = paymentIntent.metadata.userId;
|
|
66
67
|
if (!userId) {
|
|
67
|
-
|
|
68
|
+
logger_1.logger.error('Payment Intent missing userId in metadata');
|
|
68
69
|
return { received: true };
|
|
69
70
|
}
|
|
70
71
|
const appService = this.userServiceManager.getAppService(userId);
|
|
@@ -72,11 +73,11 @@ let StripeController = class StripeController {
|
|
|
72
73
|
break;
|
|
73
74
|
}
|
|
74
75
|
case 'payment_intent.payment_failed': {
|
|
75
|
-
|
|
76
|
+
logger_1.logger.log('[Stripe Webhook] Matched payment_intent.payment_failed case');
|
|
76
77
|
const paymentIntent = event.data.object;
|
|
77
78
|
const userId = paymentIntent.metadata.userId;
|
|
78
79
|
if (!userId) {
|
|
79
|
-
|
|
80
|
+
logger_1.logger.error('[Stripe Webhook] Payment Intent missing userId in metadata');
|
|
80
81
|
return { received: true };
|
|
81
82
|
}
|
|
82
83
|
const appService = this.userServiceManager.getAppService(userId);
|
|
@@ -84,9 +85,9 @@ let StripeController = class StripeController {
|
|
|
84
85
|
break;
|
|
85
86
|
}
|
|
86
87
|
default:
|
|
87
|
-
|
|
88
|
+
logger_1.logger.log(`[Stripe Webhook] Unhandled event type: ${event.type}`);
|
|
88
89
|
}
|
|
89
|
-
|
|
90
|
+
logger_1.logger.log('[Stripe Webhook] Webhook processed successfully');
|
|
90
91
|
return { received: true };
|
|
91
92
|
}
|
|
92
93
|
async getTransactionHistory(req, limit, offset) {
|