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.
Files changed (90) hide show
  1. package/README.md +31 -21
  2. package/dist/server/src/ai/LLM/anthropic.service.js +16 -8
  3. package/dist/server/src/ai/LLM/base-ai.service.js +5 -4
  4. package/dist/server/src/ai/LLM/deepseek.service.js +8 -6
  5. package/dist/server/src/ai/LLM/fal.service.js +15 -14
  6. package/dist/server/src/ai/LLM/googleai.service.js +10 -8
  7. package/dist/server/src/ai/LLM/grok.service.js +9 -7
  8. package/dist/server/src/ai/LLM/mock.service.js +7 -6
  9. package/dist/server/src/ai/LLM/openai.service.js +15 -13
  10. package/dist/server/src/ai/LLM/together.service.js +10 -8
  11. package/dist/server/src/ai/LLM/vertexai.service.js +10 -9
  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/published-agents.service.js +5 -4
  16. package/dist/server/src/app/balance.service.js +7 -6
  17. package/dist/server/src/app/stripe.controller.js +12 -11
  18. package/dist/server/src/app/stripe.service.js +20 -19
  19. package/dist/server/src/app/transaction.service.js +6 -5
  20. package/dist/server/src/app/user-service-manager.js +6 -5
  21. package/dist/server/src/app.controller.js +95 -94
  22. package/dist/server/src/app.service.js +31 -30
  23. package/dist/server/src/auth/auth.controller.js +21 -20
  24. package/dist/server/src/auth/jwt-auth.guard.js +4 -3
  25. package/dist/server/src/auth/rate-limit.service.d.ts +0 -1
  26. package/dist/server/src/auth/rate-limit.service.js +6 -7
  27. package/dist/server/src/auth/twilio.service.js +4 -3
  28. package/dist/server/src/auth/users.service.js +5 -4
  29. package/dist/server/src/common/logger.d.ts +21 -0
  30. package/dist/server/src/common/logger.js +83 -0
  31. package/dist/server/src/room/artifact-store.service.d.ts +0 -1
  32. package/dist/server/src/room/artifact-store.service.js +16 -17
  33. package/dist/server/src/room/published-rooms.service.js +3 -2
  34. package/dist/server/src/room/room-store.service.js +17 -16
  35. package/dist/server/src/room/room.js +14 -13
  36. package/dist/server/src/sdk/briyah-config.d.ts +7 -0
  37. package/dist/server/src/sdk/briyah-config.js +1 -0
  38. package/dist/server/src/sdk/briyah.js +13 -4
  39. package/dist/server/src/sdk/index.d.ts +2 -1
  40. package/dist/server/src/story/story-progress.service.js +2 -1
  41. package/dist/server/src/story/story-store.service.js +28 -27
  42. package/dist/server/src/story/story.service.js +113 -112
  43. package/docs/.nojekyll +1 -0
  44. package/docs/assets/hierarchy.js +1 -0
  45. package/docs/assets/highlight.css +106 -0
  46. package/docs/assets/icons.js +18 -0
  47. package/docs/assets/icons.svg +1 -0
  48. package/docs/assets/main.js +60 -0
  49. package/docs/assets/navigation.js +1 -0
  50. package/docs/assets/search.js +1 -0
  51. package/docs/assets/style.css +1633 -0
  52. package/docs/classes/Agent.html +87 -0
  53. package/docs/classes/Briyah.html +64 -0
  54. package/docs/classes/BriyahConfigService.html +12 -0
  55. package/docs/classes/Room.html +119 -0
  56. package/docs/enums/MessageAction.html +13 -0
  57. package/docs/hierarchy.html +1 -0
  58. package/docs/index.html +136 -0
  59. package/docs/interfaces/AgentInfo.html +17 -0
  60. package/docs/interfaces/AgentMessagesResponse.html +5 -0
  61. package/docs/interfaces/AppService.html +680 -0
  62. package/docs/interfaces/ArtifactMetadata.html +8 -0
  63. package/docs/interfaces/AttachDocumentResponse.html +3 -0
  64. package/docs/interfaces/BriyahConfigOptions.html +16 -0
  65. package/docs/interfaces/ChapterInfo.html +3 -0
  66. package/docs/interfaces/Character.html +7 -0
  67. package/docs/interfaces/CreateAgentResponse.html +2 -0
  68. package/docs/interfaces/CreateRoomResponse.html +3 -0
  69. package/docs/interfaces/CreateStoryResponse.html +2 -0
  70. package/docs/interfaces/FileList.html +2 -0
  71. package/docs/interfaces/LoggingOptions.html +9 -0
  72. package/docs/interfaces/Message.html +6 -0
  73. package/docs/interfaces/ModelInfo.html +5 -0
  74. package/docs/interfaces/PreparedPromptResponse.html +3 -0
  75. package/docs/interfaces/ProcessTextResponse.html +7 -0
  76. package/docs/interfaces/PromptFile.html +3 -0
  77. package/docs/interfaces/PromptFileContent.html +3 -0
  78. package/docs/interfaces/PromptFilesResponse.html +2 -0
  79. package/docs/interfaces/PromptFolder.html +3 -0
  80. package/docs/interfaces/PromptFoldersResponse.html +2 -0
  81. package/docs/interfaces/RoomDetails.html +9 -0
  82. package/docs/interfaces/RoomInfo.html +5 -0
  83. package/docs/interfaces/RoomMessagesResponse.html +3 -0
  84. package/docs/interfaces/StoryIdea.html +5 -0
  85. package/docs/interfaces/StoryInfo.html +21 -0
  86. package/docs/interfaces/StoryState.html +9 -0
  87. package/docs/modules.html +1 -0
  88. package/docs/types/PromptScope.html +1 -0
  89. package/package.json +6 -3
  90. package/data/common/config/story_ideas.txt +0 -6
@@ -63,6 +63,7 @@ const archiver_1 = __importDefault(require("archiver"));
63
63
  const yauzl = __importStar(require("yauzl"));
64
64
  const message_1 = require("../room/message");
65
65
  const errors_1 = require("../common/errors");
66
+ const logger_1 = require("../common/logger");
66
67
  let StoryService = class StoryService {
67
68
  storyStore;
68
69
  agentStore;
@@ -108,19 +109,19 @@ let StoryService = class StoryService {
108
109
  try {
109
110
  let story = await this.ensureStoryLoaded(storyId);
110
111
  if (!story) {
111
- console.error(`Story ${storyId} not found for state update`);
112
+ logger_1.logger.error(`Story ${storyId} not found for state update`);
112
113
  return;
113
114
  }
114
115
  const room = await this.roomStore.getRoom(story.roomId);
115
116
  if (!room) {
116
- console.error(`Room ${story.roomId} not found for story ${storyId}`);
117
+ logger_1.logger.error(`Room ${story.roomId} not found for story ${storyId}`);
117
118
  return;
118
119
  }
119
120
  await this.updateStoryCost(storyId);
120
121
  story = await this.getStoryInfo(storyId);
121
122
  const humanAgent = room.getAgents().find((agent) => agent.isControlledByHuman);
122
123
  if (!humanAgent) {
123
- console.error(`No human agent found for story ${storyId}`);
124
+ logger_1.logger.error(`No human agent found for story ${storyId}`);
124
125
  return;
125
126
  }
126
127
  const roomMessages = room.getLatestRoomMessages(0, true);
@@ -143,7 +144,7 @@ let StoryService = class StoryService {
143
144
  });
144
145
  }
145
146
  catch (error) {
146
- console.error(`Error emitting story state update for ${storyId}:`, error);
147
+ logger_1.logger.error(`Error emitting story state update for ${storyId}:`, error);
147
148
  }
148
149
  }
149
150
  getHumanPrompt(room) {
@@ -165,7 +166,7 @@ let StoryService = class StoryService {
165
166
  }
166
167
  }
167
168
  handleRoomError(storyId, error) {
168
- console.log(`Room error for story ${storyId}: ${error.name} - ${error.message}`);
169
+ logger_1.logger.log(`Room error for story ${storyId}: ${error.name} - ${error.message}`);
169
170
  this.messageService.emitError(storyId, error);
170
171
  }
171
172
  getRandomWord() {
@@ -194,11 +195,11 @@ let StoryService = class StoryService {
194
195
  model: modelConfig.model,
195
196
  };
196
197
  }
197
- console.warn(`Story model "${storyModel}" not found in story_models.json`);
198
+ logger_1.logger.warn(`Story model "${storyModel}" not found in story_models.json`);
198
199
  return null;
199
200
  }
200
201
  catch (error) {
201
- console.error(`Error reading story_models.json:`, error);
202
+ logger_1.logger.error(`Error reading story_models.json:`, error);
202
203
  return null;
203
204
  }
204
205
  }
@@ -218,7 +219,7 @@ let StoryService = class StoryService {
218
219
  if (!story)
219
220
  return null;
220
221
  if (!story.roomId) {
221
- console.error(`Story ${storyId} has no roomId. Deleting story from storage...`);
222
+ logger_1.logger.error(`Story ${storyId} has no roomId. Deleting story from storage...`);
222
223
  this.storyStore.removeStory(storyId);
223
224
  return null;
224
225
  }
@@ -279,7 +280,7 @@ let StoryService = class StoryService {
279
280
  moderator.ownerRoomId = storyInfo.id;
280
281
  moderator.markupRate = 0;
281
282
  moderator.save();
282
- console.log(`Created moderator agent: ${moderator.agentName}`);
283
+ logger_1.logger.log(`Created moderator agent: ${moderator.agentName}`);
283
284
  const artist = this.createArtistAgent(storyInfo.id, storyAgentsDir, storyArtifactService, imageModelName);
284
285
  let illustrator = null;
285
286
  if (artist) {
@@ -288,7 +289,7 @@ let StoryService = class StoryService {
288
289
  illustrator.promptCacheTTL = 60;
289
290
  illustrator.ownerRoomId = storyInfo.id;
290
291
  illustrator.save();
291
- console.log(`Created illustrator agent: ${illustrator.agentName}`);
292
+ logger_1.logger.log(`Created illustrator agent: ${illustrator.agentName}`);
292
293
  }
293
294
  let narrator = this.agentFactory.createAgent(aiServiceName, 'Narrator', '', 'Story narrator. Should receive all messages where a character wants to perform an action or PASS or INTRODUCE a new character. Responds to all dialog with characters not listed in Available Agents.', 'narrator', aiModelName, storyAgentsDir, storyArtifactService);
294
295
  narrator.reasoningEffort = 'low';
@@ -296,7 +297,7 @@ let StoryService = class StoryService {
296
297
  narrator.promptCacheTTL = 60;
297
298
  narrator.ownerRoomId = storyInfo.id;
298
299
  narrator.save();
299
- console.log(`Created narrator agent: ${narrator.agentName}`);
300
+ logger_1.logger.log(`Created narrator agent: ${narrator.agentName}`);
300
301
  narrator.disableMarkup = true;
301
302
  narrator.disableBalanceCheck = true;
302
303
  narrator.save();
@@ -319,7 +320,7 @@ let StoryService = class StoryService {
319
320
  if (isImport) {
320
321
  importedStoryText = idea;
321
322
  }
322
- console.log(`Story framework extracted: ${otherCharactersInfo.length} other characters`);
323
+ logger_1.logger.log(`Story framework extracted: ${otherCharactersInfo.length} other characters`);
323
324
  const characters = [
324
325
  {
325
326
  name: userCharacterInfo.name,
@@ -349,13 +350,13 @@ let StoryService = class StoryService {
349
350
  userAgent.isControlledByHuman = true;
350
351
  userAgent.ownerRoomId = storyInfo.id;
351
352
  userAgent.save();
352
- console.log(`Created human-controlled character agent: ${userCharacterName}`);
353
+ logger_1.logger.log(`Created human-controlled character agent: ${userCharacterName}`);
353
354
  userAgent.disableMarkup = true;
354
355
  userAgent.disableBalanceCheck = true;
355
356
  userAgent.save();
356
357
  }
357
358
  catch (error) {
358
- console.error('Error creating user character:', error);
359
+ logger_1.logger.error('Error creating user character:', error);
359
360
  throw error;
360
361
  }
361
362
  const characterAgents = [];
@@ -367,17 +368,17 @@ let StoryService = class StoryService {
367
368
  agent.promptCacheTTL = 60;
368
369
  agent.ownerRoomId = storyInfo.id;
369
370
  agent.save();
370
- console.log(`Created character agent: ${charInfo.name}`);
371
+ logger_1.logger.log(`Created character agent: ${charInfo.name}`);
371
372
  agent.disableMarkup = true;
372
373
  agent.disableBalanceCheck = true;
373
374
  agent.save();
374
375
  characterAgents.push(agent);
375
376
  }
376
377
  catch (error) {
377
- console.error(`Error creating character ${charInfo.name}:`, error);
378
+ logger_1.logger.error(`Error creating character ${charInfo.name}:`, error);
378
379
  }
379
380
  }
380
- console.log(`Created ${characterAgents.length + (userAgent ? 1 : 0)} character agents`);
381
+ logger_1.logger.log(`Created ${characterAgents.length + (userAgent ? 1 : 0)} character agents`);
381
382
  const room = this.roomFactory.createRoom(`Story: ${name}`, scenario, '', storyRoomsDir);
382
383
  room.arrive(moderator);
383
384
  room.arrive(narrator);
@@ -396,7 +397,7 @@ let StoryService = class StoryService {
396
397
  ]);
397
398
  this.populateStoryHistory(room, openingScene);
398
399
  const totalCharacters = (userAgent ? 1 : 0) + characterAgents.length;
399
- console.log(`Created story room: ${roomId} with moderator, narrator, and ${totalCharacters} character agents`);
400
+ logger_1.logger.log(`Created story room: ${roomId} with moderator, narrator, and ${totalCharacters} character agents`);
400
401
  if (userAgent) {
401
402
  room.setCurrentSpeaker(userAgent.agentNickname);
402
403
  }
@@ -422,18 +423,18 @@ let StoryService = class StoryService {
422
423
  room.ready();
423
424
  setImmediate(() => {
424
425
  this.createStoryAsync(storyInfo.id, name, importedStoryText, isImport).catch((error) => {
425
- console.error('Error in async story creation:', error);
426
+ logger_1.logger.error('Error in async story creation:', error);
426
427
  this.progressService.emitProgress(storyInfo.id, 'error', `Error: ${error.message}`);
427
428
  this.progressService.cleanup(storyInfo.id);
428
429
  this.deleteStory(storyInfo.id).catch((cleanupError) => {
429
- console.error('Error cleaning up story after async failure:', cleanupError);
430
+ logger_1.logger.error('Error cleaning up story after async failure:', cleanupError);
430
431
  });
431
432
  });
432
433
  });
433
434
  return storyInfo;
434
435
  }
435
436
  catch (error) {
436
- console.error('Error creating story:', error);
437
+ logger_1.logger.error('Error creating story:', error);
437
438
  this.progressService.emitProgress(storyInfo.id, 'error', `Error: ${error.message}`);
438
439
  this.progressService.cleanup(storyInfo.id);
439
440
  await this.deleteStory(storyInfo.id);
@@ -471,13 +472,13 @@ let StoryService = class StoryService {
471
472
  room.publishArtifact('Plot Plan', narrator.agentNickname, cleanedPlotPlan, [
472
473
  narrator.agentNickname,
473
474
  ]);
474
- console.log(`Published plot plan artifact to narrator`);
475
+ logger_1.logger.log(`Published plot plan artifact to narrator`);
475
476
  this.progressService.emitProgress(storyInfo.id, 'profiles', 'Finished creating detailed plot plan.');
476
477
  }
477
478
  return { type: 'plot', success: !!response };
478
479
  })
479
480
  .catch((error) => {
480
- console.error('Error generating/publishing plot plan:', error);
481
+ logger_1.logger.error('Error generating/publishing plot plan:', error);
481
482
  return { type: 'plot', success: false, error };
482
483
  }),
483
484
  ]);
@@ -495,7 +496,7 @@ let StoryService = class StoryService {
495
496
  .then((response) => {
496
497
  if (response.character?.character_profile) {
497
498
  room.publishArtifact(`Character Profile - ${userAgent.agentNickname}`, userAgent.agentNickname, response.character.character_profile, [narrator.agentNickname, userAgent.agentNickname]);
498
- console.log(`Published character profile for ${userCharacter.name} (human-controlled)`);
499
+ logger_1.logger.log(`Published character profile for ${userCharacter.name} (human-controlled)`);
499
500
  this.progressService.emitProgress(storyInfo.id, 'profiles', `Finished creating character profile for ${userCharacter.name}`);
500
501
  }
501
502
  else {
@@ -504,7 +505,7 @@ let StoryService = class StoryService {
504
505
  return { type: 'userCharacter', success: true };
505
506
  })
506
507
  .catch((error) => {
507
- console.error(`Error generating/publishing user character profile:`, error);
508
+ logger_1.logger.error(`Error generating/publishing user character profile:`, error);
508
509
  return { type: 'userCharacter', success: false, error };
509
510
  }));
510
511
  }
@@ -531,7 +532,7 @@ let StoryService = class StoryService {
531
532
  .then((response) => {
532
533
  if (response.character?.character_profile) {
533
534
  room.publishArtifact(`Character Profile - ${agent.agentNickname}`, agent.agentNickname, response.character.character_profile, [agent.agentNickname]);
534
- console.log(`Published character profile for ${charInfo.name}`);
535
+ logger_1.logger.log(`Published character profile for ${charInfo.name}`);
535
536
  this.progressService.emitProgress(storyInfo.id, 'profiles', `Finished creating character profile for ${charInfo.name}`);
536
537
  }
537
538
  else {
@@ -540,7 +541,7 @@ let StoryService = class StoryService {
540
541
  return { type: 'character', name: charInfo.name, success: true };
541
542
  })
542
543
  .catch((error) => {
543
- console.error(`Error generating/publishing profile for ${charInfo.name}:`, error);
544
+ logger_1.logger.error(`Error generating/publishing profile for ${charInfo.name}:`, error);
544
545
  return {
545
546
  type: 'character',
546
547
  name: charInfo.name,
@@ -554,7 +555,7 @@ let StoryService = class StoryService {
554
555
  const profileResults = [...phase1Results, ...phase2Results, openingSceneResult];
555
556
  const failedProfiles = profileResults.filter((r) => !r.success);
556
557
  if (failedProfiles.length > 0) {
557
- console.warn(`${failedProfiles.length} profile(s) failed to generate`);
558
+ logger_1.logger.warn(`${failedProfiles.length} profile(s) failed to generate`);
558
559
  }
559
560
  narrator.allowSearch = false;
560
561
  narrator.save();
@@ -564,15 +565,15 @@ let StoryService = class StoryService {
564
565
  agent.disableMarkup = false;
565
566
  agent.disableBalanceCheck = false;
566
567
  agent.save();
567
- console.log(`Re-enabled markup and balance checks for ${agent.agentName}`);
568
+ logger_1.logger.log(`Re-enabled markup and balance checks for ${agent.agentName}`);
568
569
  }
569
570
  }
570
- console.log(`Generated and published ${profileResults.length} profiles in parallel (each agent created its own profile)`);
571
+ logger_1.logger.log(`Generated and published ${profileResults.length} profiles in parallel (each agent created its own profile)`);
571
572
  room.saveMetadata();
572
573
  this.progressService.emitProgress(storyInfo.id, 'complete', 'Story plot creation complete');
573
574
  }
574
575
  catch (error) {
575
- console.error('Error creating story:', error);
576
+ logger_1.logger.error('Error creating story:', error);
576
577
  this.progressService.emitProgress(storyId, 'error', `Error: ${error.message}`);
577
578
  }
578
579
  finally {
@@ -584,13 +585,13 @@ let StoryService = class StoryService {
584
585
  }
585
586
  }
586
587
  catch (finallyError) {
587
- console.error('Error in finally block disabling flags:', finallyError);
588
+ logger_1.logger.error('Error in finally block disabling flags:', finallyError);
588
589
  }
589
590
  }
590
591
  }
591
592
  generateCharacterPortraits(storyInfo, room) {
592
593
  if (!storyInfo.artistAgentId) {
593
- console.log('Skipping character portrait generation: no artist agent');
594
+ logger_1.logger.log('Skipping character portrait generation: no artist agent');
594
595
  return [];
595
596
  }
596
597
  this.progressService.emitProgress(storyInfo.id, 'portraits', 'Generating character portraits...');
@@ -606,7 +607,7 @@ let StoryService = class StoryService {
606
607
  });
607
608
  }
608
609
  catch (error) {
609
- console.error(`Portrait error for ${characterAgent.agentNickname}:`, error);
610
+ logger_1.logger.error(`Portrait error for ${characterAgent.agentNickname}:`, error);
610
611
  }
611
612
  });
612
613
  }
@@ -701,7 +702,7 @@ let StoryService = class StoryService {
701
702
  }
702
703
  const storyCreationPath = path.join(importDir, 'story_creation.json');
703
704
  if (!fs.existsSync(storyCreationPath)) {
704
- console.warn('story_creation.json not found (non-fatal)');
705
+ logger_1.logger.warn('story_creation.json not found (non-fatal)');
705
706
  }
706
707
  return {
707
708
  valid: errors.length === 0,
@@ -784,7 +785,7 @@ let StoryService = class StoryService {
784
785
  throw new Error(`Story with ID ${metadata.id} already exists (name: '${metadata.name}')`);
785
786
  }
786
787
  fs.renameSync(importDir, finalStoryPath);
787
- console.log(`Successfully imported story: ${metadata.name} (${metadata.id})`);
788
+ logger_1.logger.log(`Successfully imported story: ${metadata.name} (${metadata.id})`);
788
789
  return metadata;
789
790
  }
790
791
  catch (error) {
@@ -809,7 +810,7 @@ let StoryService = class StoryService {
809
810
  ]);
810
811
  }
811
812
  catch (error) {
812
- console.error('Error populating imported story history:', error);
813
+ logger_1.logger.error('Error populating imported story history:', error);
813
814
  throw error;
814
815
  }
815
816
  }
@@ -858,7 +859,7 @@ let StoryService = class StoryService {
858
859
  }));
859
860
  }
860
861
  catch (error) {
861
- console.error('Error listing characters:', error);
862
+ logger_1.logger.error('Error listing characters:', error);
862
863
  return [];
863
864
  }
864
865
  }
@@ -884,7 +885,7 @@ let StoryService = class StoryService {
884
885
  return content;
885
886
  }
886
887
  catch (error) {
887
- console.error('Error getting character:', error);
888
+ logger_1.logger.error('Error getting character:', error);
888
889
  throw new Error(`Error getting character: ${error.message}`);
889
890
  }
890
891
  }
@@ -979,17 +980,17 @@ let StoryService = class StoryService {
979
980
  try {
980
981
  const artifactId = await this.generateCharacterPortrait(room, characterAgent, storyId);
981
982
  if (artifactId) {
982
- console.log(`Generated portrait for newly introduced character: ${characterName}`);
983
+ logger_1.logger.log(`Generated portrait for newly introduced character: ${characterName}`);
983
984
  }
984
985
  }
985
986
  catch (error) {
986
- console.error(`Error generating portrait for introduced character ${characterName}:`, error);
987
+ logger_1.logger.error(`Error generating portrait for introduced character ${characterName}:`, error);
987
988
  }
988
989
  if (!fromNarratorSuggestion) {
989
990
  room.addPendingMessage(new message_1.RoomMessage('system', app_types_1.MessageAction.MODERATE, `INTRODUCE ${characterName}`));
990
991
  }
991
992
  else {
992
- console.log(`Skipping INTRODUCE message for ${characterName} (already introduced by narrator)`);
993
+ logger_1.logger.log(`Skipping INTRODUCE message for ${characterName} (already introduced by narrator)`);
993
994
  }
994
995
  }
995
996
  async declineCharacter(storyId, characterName) {
@@ -1003,7 +1004,7 @@ let StoryService = class StoryService {
1003
1004
  if (!story.declinedCharacters.includes(characterName)) {
1004
1005
  story.declinedCharacters.push(characterName);
1005
1006
  this.storyStore.updateStoryMetadata(storyId, story);
1006
- console.log(`Recorded declined character: ${characterName} for story ${storyId}`);
1007
+ logger_1.logger.log(`Recorded declined character: ${characterName} for story ${storyId}`);
1007
1008
  }
1008
1009
  }
1009
1010
  async deleteCharacter(storyId, characterName) {
@@ -1033,7 +1034,7 @@ let StoryService = class StoryService {
1033
1034
  this.agentStore.removeAgent(agent.id);
1034
1035
  }
1035
1036
  async deleteStory(storyId) {
1036
- console.log(`Deleting story ${storyId}...`);
1037
+ logger_1.logger.log(`Deleting story ${storyId}...`);
1037
1038
  const story = this.storyStore.getStory(storyId);
1038
1039
  if (story?.roomId) {
1039
1040
  try {
@@ -1045,39 +1046,39 @@ let StoryService = class StoryService {
1045
1046
  await agent.deleteAgent();
1046
1047
  }
1047
1048
  catch (error) {
1048
- console.warn(`Error deleting agent ${agent.id}:`, error);
1049
+ logger_1.logger.warn(`Error deleting agent ${agent.id}:`, error);
1049
1050
  }
1050
1051
  }));
1051
1052
  room.deleteRoom();
1052
- console.log(`Deleted room ${story.roomId} for story ${storyId}`);
1053
+ logger_1.logger.log(`Deleted room ${story.roomId} for story ${storyId}`);
1053
1054
  }
1054
1055
  else {
1055
- console.warn(`Room ${story.roomId} not found for story ${storyId}`);
1056
+ logger_1.logger.warn(`Room ${story.roomId} not found for story ${storyId}`);
1056
1057
  }
1057
1058
  }
1058
1059
  catch (error) {
1059
- console.warn(`Error cleaning up room for story ${storyId}:`, error);
1060
+ logger_1.logger.warn(`Error cleaning up room for story ${storyId}:`, error);
1060
1061
  }
1061
1062
  }
1062
1063
  else {
1063
- console.warn(`Story ${storyId} has no roomId, skipping room cleanup`);
1064
+ logger_1.logger.warn(`Story ${storyId} has no roomId, skipping room cleanup`);
1064
1065
  }
1065
1066
  if (story?.artistAgentId) {
1066
1067
  try {
1067
1068
  this.agentStore.removeAgent(story.artistAgentId);
1068
- console.log(`Deleted artist agent ${story.artistAgentId}`);
1069
+ logger_1.logger.log(`Deleted artist agent ${story.artistAgentId}`);
1069
1070
  }
1070
1071
  catch (error) {
1071
- console.warn(`Error deleting artist agent ${story.artistAgentId}:`, error);
1072
+ logger_1.logger.warn(`Error deleting artist agent ${story.artistAgentId}:`, error);
1072
1073
  }
1073
1074
  }
1074
1075
  if (story?.illustratorAgentId) {
1075
1076
  try {
1076
1077
  this.agentStore.removeAgent(story.illustratorAgentId);
1077
- console.log(`Deleted illustrator agent ${story.illustratorAgentId}`);
1078
+ logger_1.logger.log(`Deleted illustrator agent ${story.illustratorAgentId}`);
1078
1079
  }
1079
1080
  catch (error) {
1080
- console.warn(`Error deleting illustrator agent ${story.illustratorAgentId}:`, error);
1081
+ logger_1.logger.warn(`Error deleting illustrator agent ${story.illustratorAgentId}:`, error);
1081
1082
  }
1082
1083
  }
1083
1084
  try {
@@ -1085,16 +1086,16 @@ let StoryService = class StoryService {
1085
1086
  this.cleanupMessageEmitter(storyId);
1086
1087
  }
1087
1088
  catch (error) {
1088
- console.warn(`Error cleaning up emitters for story ${storyId}:`, error);
1089
+ logger_1.logger.warn(`Error cleaning up emitters for story ${storyId}:`, error);
1089
1090
  }
1090
1091
  try {
1091
1092
  this.storyStore.removeStory(storyId);
1092
- console.log(`Deleted story ${storyId} from store`);
1093
+ logger_1.logger.log(`Deleted story ${storyId} from store`);
1093
1094
  }
1094
1095
  catch (error) {
1095
- console.warn(`Error removing story ${storyId} from store:`, error);
1096
+ logger_1.logger.warn(`Error removing story ${storyId} from store:`, error);
1096
1097
  }
1097
- console.log(`Story ${storyId} deletion complete`);
1098
+ logger_1.logger.log(`Story ${storyId} deletion complete`);
1098
1099
  }
1099
1100
  disableStoryAgentFlags(agents, reason = 'operation') {
1100
1101
  for (const agent of agents) {
@@ -1102,7 +1103,7 @@ let StoryService = class StoryService {
1102
1103
  agent.disableMarkup = true;
1103
1104
  agent.disableBalanceCheck = true;
1104
1105
  agent.save();
1105
- console.log(`Disabled markup/balance checks for ${agent.agentName} (${reason})`);
1106
+ logger_1.logger.log(`Disabled markup/balance checks for ${agent.agentName} (${reason})`);
1106
1107
  }
1107
1108
  }
1108
1109
  }
@@ -1112,7 +1113,7 @@ let StoryService = class StoryService {
1112
1113
  agent.disableMarkup = false;
1113
1114
  agent.disableBalanceCheck = false;
1114
1115
  agent.save();
1115
- console.log(`Re-enabled markup/balance checks for ${agent.agentName} (${reason})`);
1116
+ logger_1.logger.log(`Re-enabled markup/balance checks for ${agent.agentName} (${reason})`);
1116
1117
  }
1117
1118
  }
1118
1119
  }
@@ -1124,7 +1125,7 @@ let StoryService = class StoryService {
1124
1125
  if (agents.length === 0) {
1125
1126
  throw new Error('No agents in story room');
1126
1127
  }
1127
- console.log(`Compacting ${agents.length} agents in parallel`);
1128
+ logger_1.logger.log(`Compacting ${agents.length} agents in parallel`);
1128
1129
  const agentsToCompact = agents.filter(agent => agent !== room.getModeratorAgent());
1129
1130
  this.disableStoryAgentFlags(agentsToCompact, 'compaction');
1130
1131
  const compactionPromises = agents.map(async (agent) => {
@@ -1137,15 +1138,15 @@ let StoryService = class StoryService {
1137
1138
  await this.compactAgentHistory(agent);
1138
1139
  }
1139
1140
  catch (error) {
1140
- console.error(`Error compacting ${agent.agentName}:`, error);
1141
+ logger_1.logger.error(`Error compacting ${agent.agentName}:`, error);
1141
1142
  }
1142
1143
  });
1143
1144
  await Promise.all(compactionPromises);
1144
- console.log(`Finished compacting ${agents.length} agents in parallel`);
1145
+ logger_1.logger.log(`Finished compacting ${agents.length} agents in parallel`);
1145
1146
  return { success: true };
1146
1147
  }
1147
1148
  catch (error) {
1148
- console.error('Error compacting story:', error);
1149
+ logger_1.logger.error('Error compacting story:', error);
1149
1150
  return { success: false, message: error.message };
1150
1151
  }
1151
1152
  finally {
@@ -1184,7 +1185,7 @@ let StoryService = class StoryService {
1184
1185
  this.progressService.emitProgress(storyId, 'ready', 'Chapter opening is ready! Continuing chapter progression in the background...');
1185
1186
  setImmediate(() => {
1186
1187
  this.progressStoryToNextChapterAsync(storyId).catch((error) => {
1187
- console.error('Error in async chapter progression:', error);
1188
+ logger_1.logger.error('Error in async chapter progression:', error);
1188
1189
  this.progressService.emitProgress(storyId, 'error', `Error: ${error.message}`);
1189
1190
  });
1190
1191
  });
@@ -1218,7 +1219,7 @@ let StoryService = class StoryService {
1218
1219
  this.progressService.emitProgress(storyId, 'complete', 'Chapter progression complete!');
1219
1220
  }
1220
1221
  catch (error) {
1221
- console.error('Error in async chapter progression:', error);
1222
+ logger_1.logger.error('Error in async chapter progression:', error);
1222
1223
  throw error;
1223
1224
  }
1224
1225
  finally {
@@ -1281,7 +1282,7 @@ let StoryService = class StoryService {
1281
1282
  const summary = summaryResponse?.summary || summaryResponse;
1282
1283
  agent.addToConversationHistory(`[CONVERSATION HISTORY SUMMARY]\n\n${summary}`, true);
1283
1284
  const newLength = agent.history.length;
1284
- console.log(`Compacted ${agent.agentName}: ${originalLength} messages`);
1285
+ logger_1.logger.log(`Compacted ${agent.agentName}: ${originalLength} messages`);
1285
1286
  agent.save();
1286
1287
  return {
1287
1288
  success: true,
@@ -1293,7 +1294,7 @@ let StoryService = class StoryService {
1293
1294
  }
1294
1295
  catch (error) {
1295
1296
  agent.history = originalHistory;
1296
- console.error(`Error compacting ${agent.agentName}:`, error);
1297
+ logger_1.logger.error(`Error compacting ${agent.agentName}:`, error);
1297
1298
  throw error;
1298
1299
  }
1299
1300
  }
@@ -1319,12 +1320,12 @@ let StoryService = class StoryService {
1319
1320
  room.publishArtifact('Plot Plan', narrator.agentNickname, cleanedPlotPlan, [
1320
1321
  narrator.agentNickname,
1321
1322
  ]);
1322
- console.log(`Updated plot plan`);
1323
+ logger_1.logger.log(`Updated plot plan`);
1323
1324
  return cleanedPlotPlan;
1324
1325
  }
1325
1326
  }
1326
1327
  catch (error) {
1327
- console.error(`Error updating plot plan:`, error);
1328
+ logger_1.logger.error(`Error updating plot plan:`, error);
1328
1329
  }
1329
1330
  return '';
1330
1331
  }
@@ -1356,18 +1357,18 @@ let StoryService = class StoryService {
1356
1357
  room.publishArtifact(`Character Profile - ${character.agentNickname}`, character.agentNickname, progressCharacterResponse.character_profile, [character.agentNickname]);
1357
1358
  }
1358
1359
  catch (error) {
1359
- console.error(`Error updating character profile for ${character.agentNickname}:`, error);
1360
+ logger_1.logger.error(`Error updating character profile for ${character.agentNickname}:`, error);
1360
1361
  }
1361
1362
  });
1362
1363
  await Promise.all(updatePromises);
1363
- console.log(`Updated ${characterAgents.length} character profiles in parallel`);
1364
+ logger_1.logger.log(`Updated ${characterAgents.length} character profiles in parallel`);
1364
1365
  const portraitPromises = characterAgents.map(async (characterAgent) => {
1365
1366
  try {
1366
1367
  const pathParts = room.getStorageDir().split(path.sep);
1367
1368
  const storiesIndex = pathParts.findIndex((p) => p === 'stories');
1368
1369
  const storyId = storiesIndex >= 0 ? pathParts[storiesIndex + 1] : null;
1369
1370
  if (!storyId) {
1370
- console.error('Could not extract story ID from room path');
1371
+ logger_1.logger.error('Could not extract story ID from room path');
1371
1372
  return { character: characterAgent.agentNickname, success: false };
1372
1373
  }
1373
1374
  const storyArtifactService = this.getStoryArtifactService(storyId);
@@ -1376,7 +1377,7 @@ let StoryService = class StoryService {
1376
1377
  const oldPortrait = oldArtifacts.find((a) => a.name === oldPortraitName);
1377
1378
  if (oldPortrait) {
1378
1379
  storyArtifactService.deleteArtifact(oldPortrait.artifactId);
1379
- console.log(`Deleted old portrait for ${characterAgent.agentName}`);
1380
+ logger_1.logger.log(`Deleted old portrait for ${characterAgent.agentName}`);
1380
1381
  }
1381
1382
  const artifactId = await this.generateCharacterPortrait(room, characterAgent, storyId);
1382
1383
  return {
@@ -1386,12 +1387,12 @@ let StoryService = class StoryService {
1386
1387
  };
1387
1388
  }
1388
1389
  catch (error) {
1389
- console.error(`Error regenerating portrait for ${characterAgent.agentName}:`, error);
1390
+ logger_1.logger.error(`Error regenerating portrait for ${characterAgent.agentName}:`, error);
1390
1391
  return { character: characterAgent.agentNickname, success: false, error };
1391
1392
  }
1392
1393
  });
1393
1394
  await Promise.all(portraitPromises);
1394
- console.log(`Regenerated portraits for ${characterAgents.length} characters`);
1395
+ logger_1.logger.log(`Regenerated portraits for ${characterAgents.length} characters`);
1395
1396
  }
1396
1397
  getImageModelConfig(modelName) {
1397
1398
  try {
@@ -1402,31 +1403,31 @@ let StoryService = class StoryService {
1402
1403
  const imageModels = JSON.parse(fs.readFileSync(imageModelsPath, 'utf8'));
1403
1404
  const modelConfig = imageModels.find((m) => m.name === modelName);
1404
1405
  if (!modelConfig) {
1405
- console.warn(`Image model not found: ${modelName}`);
1406
+ logger_1.logger.warn(`Image model not found: ${modelName}`);
1406
1407
  return null;
1407
1408
  }
1408
1409
  if (!modelConfig.service || !modelConfig.model) {
1409
- console.log(`Images disabled: selected "${modelName}"`);
1410
+ logger_1.logger.log(`Images disabled: selected "${modelName}"`);
1410
1411
  return null;
1411
1412
  }
1412
1413
  return { service: modelConfig.service, model: modelConfig.model };
1413
1414
  }
1414
1415
  catch (error) {
1415
- console.error('Error loading image model config:', error);
1416
+ logger_1.logger.error('Error loading image model config:', error);
1416
1417
  return null;
1417
1418
  }
1418
1419
  }
1419
1420
  createArtistAgent(storyId, storyAgentsDir, storyArtifactService, imageModelName) {
1420
1421
  const imageConfig = this.getImageModelConfig(imageModelName);
1421
1422
  if (!imageConfig) {
1422
- console.log('Artist agent creation skipped: images disabled');
1423
+ logger_1.logger.log('Artist agent creation skipped: images disabled');
1423
1424
  return null;
1424
1425
  }
1425
1426
  const artistAgent = this.agentFactory.createAgent(imageConfig.service, 'Artist', '', 'AI artist for generating character portraits and scene illustrations', 'default', imageConfig.model, storyAgentsDir, storyArtifactService);
1426
1427
  artistAgent.maxHistoryMessages = 10;
1427
1428
  artistAgent.promptCacheTTL = 0;
1428
1429
  artistAgent.save();
1429
- console.log(`Created artist agent: ${artistAgent.agentName} (${imageConfig.service}/${imageConfig.model})`);
1430
+ logger_1.logger.log(`Created artist agent: ${artistAgent.agentName} (${imageConfig.service}/${imageConfig.model})`);
1430
1431
  return artistAgent;
1431
1432
  }
1432
1433
  async generateCharacterPortrait(room, characterAgent, storyId) {
@@ -1438,12 +1439,12 @@ let StoryService = class StoryService {
1438
1439
  const character = storyInfo.characters.find((c) => c.name === characterAgent.agentNickname);
1439
1440
  let characterDescription = profileArtifact?.body || character?.description || '';
1440
1441
  if (!characterDescription) {
1441
- console.warn(`No profile for ${characterAgent.agentNickname}, skipping portrait`);
1442
+ logger_1.logger.warn(`No profile for ${characterAgent.agentNickname}, skipping portrait`);
1442
1443
  return null;
1443
1444
  }
1444
1445
  const artistAgent = await this.agentStore.getAgent(storyInfo.artistAgentId);
1445
1446
  if (!artistAgent) {
1446
- console.warn(`Artist agent not found: ${storyInfo.artistAgentId}`);
1447
+ logger_1.logger.warn(`Artist agent not found: ${storyInfo.artistAgentId}`);
1447
1448
  return null;
1448
1449
  }
1449
1450
  const visualDescription = await characterAgent.preparedPrompt('describe_character', {
@@ -1452,7 +1453,7 @@ let StoryService = class StoryService {
1452
1453
  scenario: scenario,
1453
1454
  }, false);
1454
1455
  if (!visualDescription || typeof visualDescription !== 'string') {
1455
- console.warn(`Failed to generate visual description for ${characterAgent.agentNickname}`);
1456
+ logger_1.logger.warn(`Failed to generate visual description for ${characterAgent.agentNickname}`);
1456
1457
  return null;
1457
1458
  }
1458
1459
  const imageResult = await artistAgent.generateImage(visualDescription, 1024, 1536, 'high');
@@ -1464,11 +1465,11 @@ let StoryService = class StoryService {
1464
1465
  let storyArtifactService = this.getStoryArtifactService(storyId);
1465
1466
  storyArtifactService.renameArtifact(artifactId, `Portrait - ${characterAgent.agentNickname}`);
1466
1467
  storyArtifactService.updateArtifactDescription(artifactId, visualDescription);
1467
- console.log(`Generated portrait for ${characterAgent.agentNickname}: ${artifactId}`);
1468
+ logger_1.logger.log(`Generated portrait for ${characterAgent.agentNickname}: ${artifactId}`);
1468
1469
  return artifactId;
1469
1470
  }
1470
1471
  catch (error) {
1471
- console.error(`Error generating portrait for ${characterAgent.agentNickname}:`, error);
1472
+ logger_1.logger.error(`Error generating portrait for ${characterAgent.agentNickname}:`, error);
1472
1473
  return null;
1473
1474
  }
1474
1475
  }
@@ -1476,7 +1477,7 @@ let StoryService = class StoryService {
1476
1477
  try {
1477
1478
  const story = this.storyStore.getStory(storyId);
1478
1479
  if (!story?.illustratorAgentId) {
1479
- console.log('No illustrator configured');
1480
+ logger_1.logger.log('No illustrator configured');
1480
1481
  return;
1481
1482
  }
1482
1483
  const illustrator = await this.agentStore.getAgent(story.illustratorAgentId);
@@ -1486,7 +1487,7 @@ let StoryService = class StoryService {
1486
1487
  const allMessages = room.getLatestRoomMessages(0, true);
1487
1488
  const latestMessage = allMessages[allMessages.length - 1];
1488
1489
  if (!latestMessage) {
1489
- console.warn('No messages in room');
1490
+ logger_1.logger.warn('No messages in room');
1490
1491
  return;
1491
1492
  }
1492
1493
  illustrator.addToConversationHistory(latestMessage.content, false);
@@ -1510,7 +1511,7 @@ let StoryService = class StoryService {
1510
1511
  }, true, true);
1511
1512
  illustrator.save();
1512
1513
  if (!sceneAnalysis || !sceneAnalysis.createImage) {
1513
- console.log('Illustrator decided not to create an image for this situation');
1514
+ logger_1.logger.log('Illustrator decided not to create an image for this situation');
1514
1515
  return;
1515
1516
  }
1516
1517
  if (sceneAnalysis.isReference) {
@@ -1522,25 +1523,25 @@ let StoryService = class StoryService {
1522
1523
  }
1523
1524
  }
1524
1525
  catch (error) {
1525
- console.error('Scene illustration error:', error);
1526
+ logger_1.logger.error('Scene illustration error:', error);
1526
1527
  }
1527
1528
  }
1528
1529
  async generateSceneReference(storyId, sceneName, sceneDescription) {
1529
1530
  try {
1530
- console.log(`Generating scene reference: ${sceneName}`);
1531
+ logger_1.logger.log(`Generating scene reference: ${sceneName}`);
1531
1532
  const storyInfo = this.storyStore.getStory(storyId);
1532
1533
  if (!storyInfo || !storyInfo.artistAgentId) {
1533
- console.error(`Cannot generate scene reference: story ${storyId} has no artist agent`);
1534
+ logger_1.logger.error(`Cannot generate scene reference: story ${storyId} has no artist agent`);
1534
1535
  return;
1535
1536
  }
1536
1537
  const artistAgent = await this.agentStore.getAgent(storyInfo.artistAgentId);
1537
1538
  if (!artistAgent) {
1538
- console.error(`Artist agent not found: ${storyInfo.artistAgentId}`);
1539
+ logger_1.logger.error(`Artist agent not found: ${storyInfo.artistAgentId}`);
1539
1540
  return;
1540
1541
  }
1541
1542
  let storyArtifactService = this.getStoryArtifactService(storyId);
1542
1543
  if (!storyArtifactService) {
1543
- console.error(`Story artifact service not found: ${storyId}`);
1544
+ logger_1.logger.error(`Story artifact service not found: ${storyId}`);
1544
1545
  return;
1545
1546
  }
1546
1547
  const imageResult = await artistAgent.generateImage(sceneDescription, 1024, 1024, 'auto');
@@ -1551,20 +1552,20 @@ let StoryService = class StoryService {
1551
1552
  const artifactId = imageResult.artifactId;
1552
1553
  storyArtifactService.renameArtifact(artifactId, `Scene - ${sceneName}`);
1553
1554
  storyArtifactService.updateArtifactDescription(artifactId, sceneDescription);
1554
- console.log(`Generated scene reference: ${sceneName} (${artifactId})`);
1555
+ logger_1.logger.log(`Generated scene reference: ${sceneName} (${artifactId})`);
1555
1556
  }
1556
1557
  catch (error) {
1557
- console.error('Scene reference generation error:', error);
1558
+ logger_1.logger.error('Scene reference generation error:', error);
1558
1559
  }
1559
1560
  }
1560
1561
  async generateStoryImage(storyId, turnNumber, imageCaption, sceneName, sceneDescription, characterNames) {
1561
1562
  try {
1562
- console.log(`Generating story image for turn ${turnNumber}`);
1563
+ logger_1.logger.log(`Generating story image for turn ${turnNumber}`);
1563
1564
  const storyArtifactService = this.getStoryArtifactService(storyId);
1564
1565
  const allArtifacts = storyArtifactService.listArtifacts();
1565
1566
  const sceneArtifact = allArtifacts.find((a) => a.name === `Scene - ${sceneName}`);
1566
1567
  if (!sceneArtifact) {
1567
- console.warn(`Scene not found: ${sceneName}`);
1568
+ logger_1.logger.warn(`Scene not found: ${sceneName}`);
1568
1569
  return;
1569
1570
  }
1570
1571
  const characterPortraitIds = [];
@@ -1574,18 +1575,18 @@ let StoryService = class StoryService {
1574
1575
  characterPortraitIds.push(portrait.artifactId);
1575
1576
  }
1576
1577
  else {
1577
- console.warn(`Portrait not found: ${charName}`);
1578
+ logger_1.logger.warn(`Portrait not found: ${charName}`);
1578
1579
  }
1579
1580
  }
1580
1581
  const referenceImageIds = [sceneArtifact.artifactId, ...characterPortraitIds];
1581
1582
  const storyInfo = this.storyStore.getStory(storyId);
1582
1583
  if (!storyInfo || !storyInfo.artistAgentId) {
1583
- console.error(`Cannot generate story image: story ${storyId} has no artist agent`);
1584
+ logger_1.logger.error(`Cannot generate story image: story ${storyId} has no artist agent`);
1584
1585
  return;
1585
1586
  }
1586
1587
  const artistAgent = await this.agentStore.getAgent(storyInfo.artistAgentId);
1587
1588
  if (!artistAgent) {
1588
- console.error(`Artist agent not found: ${storyInfo.artistAgentId}`);
1589
+ logger_1.logger.error(`Artist agent not found: ${storyInfo.artistAgentId}`);
1589
1590
  return;
1590
1591
  }
1591
1592
  let quality = 'high';
@@ -1598,21 +1599,21 @@ let StoryService = class StoryService {
1598
1599
  const artifactId = imageResult.artifactId;
1599
1600
  storyArtifactService.renameArtifact(artifactId, `Story image - ${turnNumber}`);
1600
1601
  storyArtifactService.updateArtifactDescription(artifactId, imageCaption);
1601
- console.log(`Generated story image: ${imageCaption} (${artifactId})`);
1602
+ logger_1.logger.log(`Generated story image: ${imageCaption} (${artifactId})`);
1602
1603
  try {
1603
1604
  const room = await this.getStoryRoom(storyId);
1604
1605
  const imgUrl = `/api/stories/${storyId}/artifacts/${artifactId}`;
1605
1606
  const imageMarkdown = `![${imageCaption}](${imgUrl})`;
1606
1607
  const imageMessage = new message_1.RoomMessage(imageCaption, app_types_1.MessageAction.SYSTEM, imageMarkdown);
1607
1608
  room.addRoomMessage(imageMessage);
1608
- console.log(`Added story image message to room`);
1609
+ logger_1.logger.log(`Added story image message to room`);
1609
1610
  }
1610
1611
  catch (error) {
1611
- console.error('Error adding image message to room:', error);
1612
+ logger_1.logger.error('Error adding image message to room:', error);
1612
1613
  }
1613
1614
  }
1614
1615
  catch (error) {
1615
- console.error('Story image generation error:', error);
1616
+ logger_1.logger.error('Story image generation error:', error);
1616
1617
  }
1617
1618
  }
1618
1619
  async updateStorySituation(storyId, situation) {
@@ -1643,7 +1644,7 @@ let StoryService = class StoryService {
1643
1644
  if (newCharacterName) {
1644
1645
  const declinedCharacters = story?.declinedCharacters || [];
1645
1646
  if (declinedCharacters.includes(newCharacterName)) {
1646
- console.log(`Character ${newCharacterName} was declined, skipping prompt`);
1647
+ logger_1.logger.log(`Character ${newCharacterName} was declined, skipping prompt`);
1647
1648
  return;
1648
1649
  }
1649
1650
  this.messageService.emitUpdate(storyId, {
@@ -1659,9 +1660,9 @@ let StoryService = class StoryService {
1659
1660
  }
1660
1661
  story.situation = situation;
1661
1662
  this.storyStore.updateStoryMetadata(storyId, story);
1662
- console.log(`Updated story ${storyId} situation: ${situation}`);
1663
+ logger_1.logger.log(`Updated story ${storyId} situation: ${situation}`);
1663
1664
  this.generateSceneIllustration(storyId, situation).catch((error) => {
1664
- console.error('Illustration generation error:', error);
1665
+ logger_1.logger.error('Illustration generation error:', error);
1665
1666
  });
1666
1667
  }
1667
1668
  async generateStoryMarkdown(storyId) {
@@ -1734,12 +1735,12 @@ let StoryService = class StoryService {
1734
1735
  try {
1735
1736
  const storyInfo = this.storyStore.getStory(storyId);
1736
1737
  if (!storyInfo || !storyInfo.roomId) {
1737
- console.warn(`Cannot update story cost: story ${storyId} not found or has no room`);
1738
+ logger_1.logger.warn(`Cannot update story cost: story ${storyId} not found or has no room`);
1738
1739
  return;
1739
1740
  }
1740
1741
  const room = await this.roomStore.getRoom(storyInfo.roomId);
1741
1742
  if (!room) {
1742
- console.warn(`Cannot update story cost: room ${storyInfo.roomId} not found`);
1743
+ logger_1.logger.warn(`Cannot update story cost: room ${storyInfo.roomId} not found`);
1743
1744
  return;
1744
1745
  }
1745
1746
  let totalCost = 0;
@@ -1759,7 +1760,7 @@ let StoryService = class StoryService {
1759
1760
  totalOutputTokens += illustratorAgent.totalOutputTokens || 0;
1760
1761
  }
1761
1762
  else {
1762
- console.warn(`Illustrator agent not found: ${storyInfo.illustratorAgentId}`);
1763
+ logger_1.logger.warn(`Illustrator agent not found: ${storyInfo.illustratorAgentId}`);
1763
1764
  }
1764
1765
  }
1765
1766
  if (storyInfo.artistAgentId) {
@@ -1770,7 +1771,7 @@ let StoryService = class StoryService {
1770
1771
  totalOutputTokens += artistAgent.totalOutputTokens || 0;
1771
1772
  }
1772
1773
  else {
1773
- console.warn(`Artist agent not found: ${storyInfo.artistAgentId}`);
1774
+ logger_1.logger.warn(`Artist agent not found: ${storyInfo.artistAgentId}`);
1774
1775
  }
1775
1776
  }
1776
1777
  storyInfo.totalCost = totalCost;
@@ -1779,7 +1780,7 @@ let StoryService = class StoryService {
1779
1780
  this.storyStore.updateStoryMetadata(storyId, storyInfo);
1780
1781
  }
1781
1782
  catch (error) {
1782
- console.error(`Error updating story cost for ${storyId}:`, error);
1783
+ logger_1.logger.error(`Error updating story cost for ${storyId}:`, error);
1783
1784
  }
1784
1785
  }
1785
1786
  };