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
@@ -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
- console.log(`File "${fileName}" already exists for owner ${ownerId}, returning existing fileId: ${existingMetadata.fileId}`);
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
- console.error('Error loading file metadata:', error);
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
- console.error('Error updating file metadata:', error);
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
- console.error('Error getting file metadata:', error);
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
- console.error('Error getting file metadata by name:', error);
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
- console.error('Error listing file metadata:', error);
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
- console.error('Error updating file metadata:', error);
212
+ logger_1.logger.error('Error updating file metadata:', error);
212
213
  }
213
214
  }
214
215
  return true;
@@ -1,2 +1 @@
1
- declare let modelPrices: any;
2
- export default modelPrices;
1
+ export declare function getModelPrices(): any;
@@ -33,22 +33,23 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getModelPrices = getModelPrices;
36
37
  const fs = __importStar(require("fs"));
37
38
  const path = __importStar(require("path"));
38
- const dataDir = path.resolve(process.cwd(), 'data');
39
- const configDir = path.resolve(dataDir, 'common', 'config');
40
- const pricesFilePath = path.join(configDir, 'model_prices.json');
41
- let modelPrices = {};
42
- try {
43
- if (fs.existsSync(pricesFilePath)) {
44
- const fileContent = fs.readFileSync(pricesFilePath, 'utf8');
45
- modelPrices = JSON.parse(fileContent);
39
+ let _modelPrices = null;
40
+ function getModelPrices() {
41
+ if (_modelPrices !== null)
42
+ return _modelPrices;
43
+ const dataDir = process.env.SERVER_DATA_PATH || path.resolve(process.cwd(), 'briyah-data');
44
+ const pricesFilePath = path.join(dataDir, 'common', 'config', 'model_prices.json');
45
+ if (!fs.existsSync(pricesFilePath)) {
46
+ throw new Error(`Model prices file not found at ${pricesFilePath}. Cannot proceed without pricing data.`);
46
47
  }
47
- else {
48
- console.warn('Model prices file not found at', pricesFilePath);
48
+ try {
49
+ _modelPrices = JSON.parse(fs.readFileSync(pricesFilePath, 'utf8'));
49
50
  }
51
+ catch (error) {
52
+ throw new Error(`Failed to load model prices from ${pricesFilePath}: ${error}`);
53
+ }
54
+ return _modelPrices;
50
55
  }
51
- catch (error) {
52
- console.error('Error loading model prices:', error);
53
- }
54
- exports.default = modelPrices;
@@ -46,11 +46,12 @@ 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;
52
53
  constructor() {
53
- const dataPath = process.env.SERVER_DATA_PATH || path.resolve(process.cwd(), 'data');
54
+ const dataPath = process.env.SERVER_DATA_PATH || path.resolve(process.cwd(), 'briyah-data');
54
55
  const dataDir = path.resolve(dataPath, 'common');
55
56
  if (!fs.existsSync(dataDir)) {
56
57
  fs.mkdirSync(dataDir, { recursive: true });
@@ -77,7 +78,7 @@ let PublishedAgentsService = class PublishedAgentsService {
77
78
  load() {
78
79
  try {
79
80
  if (!fs.existsSync(this.mappingFile)) {
80
- console.log('[PublishedAgentsService] No published agents file found, starting fresh');
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
- console.error('[PublishedAgentsService] Error loading published agents:', error);
96
- console.log('[PublishedAgentsService] Starting with empty mapping');
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
- console.error('[PublishedAgentsService] Error saving published agents:', error);
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
- console.error(`Balance file corrupted for user ${this.userId}, resetting to starting balance`);
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
- console.error(`Error reading balance for user ${this.userId}:`, error);
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
- console.error(`Markup file corrupted, resetting to 0`);
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
- console.error(`Error reading markup:`, error);
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
- console.error(`Error saving balance for user ${this.userId}:`, error);
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
- console.error(`Error saving markup:`, error);
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
- console.log('[Stripe Webhook] Received webhook request');
49
+ logger_1.logger.log('[Stripe Webhook] Received webhook request');
49
50
  if (!signature) {
50
- console.error('[Stripe Webhook] Missing stripe-signature header');
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
- console.error('[Stripe Webhook] Missing request body');
56
+ logger_1.logger.error('[Stripe Webhook] Missing request body');
56
57
  throw new common_1.BadRequestException('Missing request body');
57
58
  }
58
- console.log('[Stripe Webhook] Verifying webhook signature...');
59
+ logger_1.logger.log('[Stripe Webhook] Verifying webhook signature...');
59
60
  const event = this.stripeService.verifyWebhookSignature(rawBody, signature);
60
- console.log(`[Stripe Webhook] Event type: ${event.type}, Event ID: ${event.id}`);
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
- console.log('[Stripe Webhook] Matched payment_intent.succeeded case');
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
- console.error('Payment Intent missing userId in metadata');
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
- console.log('[Stripe Webhook] Matched payment_intent.payment_failed case');
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
- console.error('[Stripe Webhook] Payment Intent missing userId in metadata');
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
- console.log(`[Stripe Webhook] Unhandled event type: ${event.type}`);
88
+ logger_1.logger.log(`[Stripe Webhook] Unhandled event type: ${event.type}`);
88
89
  }
89
- console.log('[Stripe Webhook] Webhook processed successfully');
90
+ logger_1.logger.log('[Stripe Webhook] Webhook processed successfully');
90
91
  return { received: true };
91
92
  }
92
93
  async getTransactionHistory(req, limit, offset) {
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.StripeService = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const stripe_1 = __importDefault(require("stripe"));
18
+ const logger_1 = require("../common/logger");
18
19
  let StripeService = class StripeService {
19
20
  stripe;
20
21
  minPaymentAmount;
@@ -68,7 +69,7 @@ let StripeService = class StripeService {
68
69
  };
69
70
  }
70
71
  catch (error) {
71
- console.error('Error creating Payment Intent:', error);
72
+ logger_1.logger.error('Error creating Payment Intent:', error);
72
73
  throw new common_1.InternalServerErrorException('Failed to create payment intent');
73
74
  }
74
75
  }
@@ -119,7 +120,7 @@ let StripeService = class StripeService {
119
120
  };
120
121
  }
121
122
  catch (error) {
122
- console.error('Error creating Checkout Session:', error);
123
+ logger_1.logger.error('Error creating Checkout Session:', error);
123
124
  throw new common_1.InternalServerErrorException('Failed to create checkout session');
124
125
  }
125
126
  }
@@ -133,44 +134,44 @@ let StripeService = class StripeService {
133
134
  return this.stripe.webhooks.constructEvent(rawBody, signature, this.webhookSecret);
134
135
  }
135
136
  catch (error) {
136
- console.error('Webhook signature verification failed:', error);
137
+ logger_1.logger.error('Webhook signature verification failed:', error);
137
138
  throw new common_1.BadRequestException('Invalid webhook signature');
138
139
  }
139
140
  }
140
141
  async handlePaymentIntentSucceeded(paymentIntent, appService) {
141
142
  try {
142
143
  const userId = paymentIntent.metadata.userId;
143
- console.log(`[Stripe Webhook] Processing payment_intent.succeeded for user ${userId}, payment ${paymentIntent.id}`);
144
+ logger_1.logger.log(`[Stripe Webhook] Processing payment_intent.succeeded for user ${userId}, payment ${paymentIntent.id}`);
144
145
  if (!userId) {
145
- console.error('Payment Intent missing userId in metadata:', paymentIntent.id);
146
+ logger_1.logger.error('Payment Intent missing userId in metadata:', paymentIntent.id);
146
147
  return;
147
148
  }
148
149
  const amount = paymentIntent.amount / 100;
149
- console.log(`[Stripe Webhook] Amount: $${amount.toFixed(2)}`);
150
+ logger_1.logger.log(`[Stripe Webhook] Amount: $${amount.toFixed(2)}`);
150
151
  const transactionService = appService.getTransactionService();
151
152
  const existingTransaction = await transactionService.getTransactionByPaymentIntent(paymentIntent.id);
152
- console.log(`[Stripe Webhook] Existing transaction:`, existingTransaction);
153
+ logger_1.logger.log(`[Stripe Webhook] Existing transaction:`, existingTransaction);
153
154
  if (existingTransaction?.status === 'succeeded') {
154
- console.log(`Transaction ${paymentIntent.id} already processed, skipping`);
155
+ logger_1.logger.log(`Transaction ${paymentIntent.id} already processed, skipping`);
155
156
  return;
156
157
  }
157
158
  const balanceBefore = await appService.getBalance();
158
- console.log(`[Stripe Webhook] Balance before: $${balanceBefore.toFixed(2)}`);
159
- console.log(`[Stripe Webhook] Adding $${amount.toFixed(2)} to balance`);
159
+ logger_1.logger.log(`[Stripe Webhook] Balance before: $${balanceBefore.toFixed(2)}`);
160
+ logger_1.logger.log(`[Stripe Webhook] Adding $${amount.toFixed(2)} to balance`);
160
161
  await appService.addBalance(amount);
161
162
  const balanceAfter = await appService.getBalance();
162
- console.log(`[Stripe Webhook] Balance after: $${balanceAfter.toFixed(2)}`);
163
- console.log(`[Stripe Webhook] Updating transaction status to 'succeeded'`);
163
+ logger_1.logger.log(`[Stripe Webhook] Balance after: $${balanceAfter.toFixed(2)}`);
164
+ logger_1.logger.log(`[Stripe Webhook] Updating transaction status to 'succeeded'`);
164
165
  await transactionService.updateTransactionStatus(paymentIntent.id, 'succeeded');
165
- console.log(`[Stripe Webhook] Checking for paused stories to resume...`);
166
+ logger_1.logger.log(`[Stripe Webhook] Checking for paused stories to resume...`);
166
167
  const resumedCount = await appService.resumePausedStories();
167
168
  if (resumedCount > 0) {
168
- console.log(`[Stripe Webhook] Resumed ${resumedCount} paused story/stories`);
169
+ logger_1.logger.log(`[Stripe Webhook] Resumed ${resumedCount} paused story/stories`);
169
170
  }
170
- console.log(`[Stripe Webhook] Payment succeeded: $${amount.toFixed(2)} added to user ${userId} (balance: ${balanceBefore.toFixed(2)} → ${balanceAfter.toFixed(2)})`);
171
+ logger_1.logger.log(`[Stripe Webhook] Payment succeeded: $${amount.toFixed(2)} added to user ${userId} (balance: ${balanceBefore.toFixed(2)} → ${balanceAfter.toFixed(2)})`);
171
172
  }
172
173
  catch (error) {
173
- console.error('[Stripe Webhook] Error handling payment success:', error);
174
+ logger_1.logger.error('[Stripe Webhook] Error handling payment success:', error);
174
175
  throw error;
175
176
  }
176
177
  }
@@ -178,15 +179,15 @@ let StripeService = class StripeService {
178
179
  try {
179
180
  const userId = paymentIntent.metadata.userId;
180
181
  if (!userId) {
181
- console.error('Payment Intent missing userId in metadata:', paymentIntent.id);
182
+ logger_1.logger.error('Payment Intent missing userId in metadata:', paymentIntent.id);
182
183
  return;
183
184
  }
184
185
  const transactionService = appService.getTransactionService();
185
186
  await transactionService.updateTransactionStatus(paymentIntent.id, 'failed');
186
- console.log(`Payment failed for user ${userId}: ${paymentIntent.id}`);
187
+ logger_1.logger.log(`Payment failed for user ${userId}: ${paymentIntent.id}`);
187
188
  }
188
189
  catch (error) {
189
- console.error('Error handling payment failure:', error);
190
+ logger_1.logger.error('Error handling payment failure:', error);
190
191
  throw error;
191
192
  }
192
193
  }
@@ -37,6 +37,7 @@ exports.TransactionService = void 0;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
39
  const zod_1 = require("zod");
40
+ const logger_1 = require("../common/logger");
40
41
  class TransactionService {
41
42
  userId;
42
43
  configService;
@@ -69,7 +70,7 @@ class TransactionService {
69
70
  return transaction;
70
71
  }
71
72
  catch (error) {
72
- console.error(`Error recording transaction for user ${this.userId}:`, error);
73
+ logger_1.logger.error(`Error recording transaction for user ${this.userId}:`, error);
73
74
  throw error;
74
75
  }
75
76
  }
@@ -77,7 +78,7 @@ class TransactionService {
77
78
  try {
78
79
  const transaction = await this.getTransactionByPaymentIntent(paymentIntentId);
79
80
  if (!transaction) {
80
- console.error(`Transaction not found for payment intent ${paymentIntentId}`);
81
+ logger_1.logger.error(`Transaction not found for payment intent ${paymentIntentId}`);
81
82
  return;
82
83
  }
83
84
  transaction.status = status;
@@ -90,7 +91,7 @@ class TransactionService {
90
91
  }
91
92
  }
92
93
  catch (error) {
93
- console.error(`Error updating transaction status for ${paymentIntentId}:`, error);
94
+ logger_1.logger.error(`Error updating transaction status for ${paymentIntentId}:`, error);
94
95
  throw error;
95
96
  }
96
97
  }
@@ -106,7 +107,7 @@ class TransactionService {
106
107
  return JSON.parse(content);
107
108
  }
108
109
  catch (error) {
109
- console.error(`Error getting transaction for payment intent ${paymentIntentId}:`, error);
110
+ logger_1.logger.error(`Error getting transaction for payment intent ${paymentIntentId}:`, error);
110
111
  return null;
111
112
  }
112
113
  }
@@ -131,7 +132,7 @@ class TransactionService {
131
132
  };
132
133
  }
133
134
  catch (error) {
134
- console.error(`Error getting transactions for user ${this.userId}:`, error);
135
+ logger_1.logger.error(`Error getting transactions for user ${this.userId}:`, error);
135
136
  return { transactions: [], total: 0 };
136
137
  }
137
138
  }
@@ -13,6 +13,7 @@ exports.UserServiceManager = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const config_1 = require("@nestjs/config");
15
15
  const user_service_factory_1 = require("./user-service-factory");
16
+ const logger_1 = require("../common/logger");
16
17
  let UserServiceManager = class UserServiceManager {
17
18
  userServiceFactory;
18
19
  configService;
@@ -36,7 +37,7 @@ let UserServiceManager = class UserServiceManager {
36
37
  clearInterval(this.cleanupIntervalId);
37
38
  this.cleanupIntervalId = null;
38
39
  this.userServices.clear();
39
- console.log('[UserServiceManager] Shutdown complete');
40
+ logger_1.logger.log('[UserServiceManager] Shutdown complete');
40
41
  }
41
42
  }
42
43
  getAppService(userId) {
@@ -49,7 +50,7 @@ let UserServiceManager = class UserServiceManager {
49
50
  return context.appService;
50
51
  }
51
52
  else {
52
- console.log(`[UserServiceManager] Cache expired for user ${userId} (${ageMinutes.toFixed(1)}min old)`);
53
+ logger_1.logger.log(`[UserServiceManager] Cache expired for user ${userId} (${ageMinutes.toFixed(1)}min old)`);
53
54
  this.userServices.delete(userId);
54
55
  }
55
56
  }
@@ -62,7 +63,7 @@ let UserServiceManager = class UserServiceManager {
62
63
  }
63
64
  removeUserService(userId) {
64
65
  if (this.userServices.delete(userId)) {
65
- console.log(`[UserServiceManager] Manually removed service for user ${userId}`);
66
+ logger_1.logger.log(`[UserServiceManager] Manually removed service for user ${userId}`);
66
67
  }
67
68
  }
68
69
  getCacheStats() {
@@ -86,11 +87,11 @@ let UserServiceManager = class UserServiceManager {
86
87
  this.userServices.delete(userId);
87
88
  removedCount++;
88
89
  const ageMinutes = age / (60 * 1000);
89
- console.log(`[UserServiceManager] Cleaned up service for user ${userId} (${ageMinutes.toFixed(1)}min inactive)`);
90
+ logger_1.logger.log(`[UserServiceManager] Cleaned up service for user ${userId} (${ageMinutes.toFixed(1)}min inactive)`);
90
91
  }
91
92
  }
92
93
  if (removedCount > 0) {
93
- console.log(`[UserServiceManager] Cleanup complete: removed ${removedCount} inactive user(s), ${this.userServices.size} remaining`);
94
+ logger_1.logger.log(`[UserServiceManager] Cleanup complete: removed ${removedCount} inactive user(s), ${this.userServices.size} remaining`);
94
95
  }
95
96
  }
96
97
  };