briyah 1.1.0 → 1.1.2

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 (239) hide show
  1. package/README.md +6 -4
  2. package/data/common/config/markup +1 -0
  3. package/data/common/config/model_prices.json +5153 -3680
  4. package/data/common/config/story_models.json +10 -2
  5. package/data/common/config/story_models_full.json +2 -2
  6. package/data/common/prompts/compact_agent.prompt +16 -0
  7. package/data/common/prompts/narrator/perceive.prompt +30 -28
  8. package/data/common/prompts/story_moderator/moderate.prompt +12 -8
  9. package/{dist → dist-sdk}/server/src/ai/LLM/anthropic.service.js +22 -12
  10. package/{dist → dist-sdk}/server/src/ai/LLM/base-ai.service.d.ts +1 -0
  11. package/{dist → dist-sdk}/server/src/ai/LLM/base-ai.service.js +8 -0
  12. package/{dist → dist-sdk}/server/src/ai/LLM/deepseek.service.d.ts +1 -0
  13. package/{dist → dist-sdk}/server/src/ai/LLM/deepseek.service.js +3 -0
  14. package/{dist → dist-sdk}/server/src/ai/LLM/fal.service.d.ts +1 -0
  15. package/{dist → dist-sdk}/server/src/ai/LLM/fal.service.js +3 -0
  16. package/{dist → dist-sdk}/server/src/ai/LLM/grok.service.d.ts +1 -0
  17. package/{dist → dist-sdk}/server/src/ai/LLM/grok.service.js +3 -0
  18. package/{dist → dist-sdk}/server/src/ai/LLM/together.service.d.ts +1 -0
  19. package/{dist → dist-sdk}/server/src/ai/LLM/together.service.js +3 -0
  20. package/{dist → dist-sdk}/server/src/ai/agent.d.ts +7 -0
  21. package/{dist → dist-sdk}/server/src/ai/agent.js +32 -0
  22. package/{dist → dist-sdk}/server/src/ai/ai-factory.module.js +0 -2
  23. package/{dist → dist-sdk}/server/src/ai/ai-factory.service.d.ts +1 -3
  24. package/{dist → dist-sdk}/server/src/ai/ai-factory.service.js +1 -8
  25. package/dist-sdk/server/src/ai/model_prices.d.ts +3 -0
  26. package/{dist → dist-sdk}/server/src/ai/model_prices.js +19 -1
  27. package/{dist → dist-sdk}/server/src/ai/published-agents.service.js +1 -1
  28. package/{dist → dist-sdk}/server/src/app/stripe.controller.d.ts +3 -0
  29. package/{dist → dist-sdk}/server/src/app/stripe.controller.js +13 -0
  30. package/{dist → dist-sdk}/server/src/app/stripe.service.d.ts +4 -0
  31. package/{dist → dist-sdk}/server/src/app/stripe.service.js +16 -0
  32. package/{dist → dist-sdk}/server/src/app.controller.d.ts +1 -0
  33. package/{dist → dist-sdk}/server/src/app.controller.js +41 -0
  34. package/{dist → dist-sdk}/server/src/app.service.d.ts +1 -0
  35. package/{dist → dist-sdk}/server/src/app.service.js +7 -0
  36. package/{dist → dist-sdk}/server/src/auth/users.service.js +1 -1
  37. package/{dist → dist-sdk}/server/src/config/configuration.service.d.ts +0 -2
  38. package/{dist → dist-sdk}/server/src/config/configuration.service.js +1 -9
  39. package/{dist → dist-sdk}/server/src/room/published-rooms.service.js +1 -1
  40. package/{dist → dist-sdk}/server/src/room/room.js +1 -0
  41. package/{dist → dist-sdk}/server/src/sdk/briyah-config.js +2 -2
  42. package/{dist → dist-sdk}/server/src/sdk/briyah.js +7 -9
  43. package/{dist → dist-sdk}/server/src/story/story-message.service.js +24 -32
  44. package/{dist → dist-sdk}/server/src/story/story.service.d.ts +1 -1
  45. package/{dist → dist-sdk}/server/src/story/story.service.js +103 -76
  46. package/{dist → dist-sdk}/shared/types/app.types.d.ts +1 -0
  47. package/docs/assets/hierarchy.js +1 -1
  48. package/docs/assets/search.js +1 -1
  49. package/docs/classes/Agent.html +18 -13
  50. package/docs/classes/Briyah.html +12 -12
  51. package/docs/classes/BriyahConfigService.html +5 -5
  52. package/docs/classes/Room.html +23 -23
  53. package/docs/classes/RoomMessage.html +10 -10
  54. package/docs/enums/MessageAction.html +3 -3
  55. package/docs/hierarchy.html +1 -1
  56. package/docs/index.html +7 -6
  57. package/docs/interfaces/AgentInfo.html +2 -2
  58. package/docs/interfaces/AgentMessagesResponse.html +2 -2
  59. package/docs/interfaces/AppService.html +150 -145
  60. package/docs/interfaces/Artifact.html +3 -3
  61. package/docs/interfaces/ArtifactMetadata.html +2 -2
  62. package/docs/interfaces/AttachDocumentResponse.html +2 -2
  63. package/docs/interfaces/BriyahConfigOptions.html +6 -6
  64. package/docs/interfaces/ChapterInfo.html +2 -2
  65. package/docs/interfaces/Character.html +2 -2
  66. package/docs/interfaces/CreateAgentResponse.html +2 -2
  67. package/docs/interfaces/CreateRoomResponse.html +2 -2
  68. package/docs/interfaces/CreateStoryResponse.html +2 -2
  69. package/docs/interfaces/FileList.html +2 -2
  70. package/docs/interfaces/LoggingOptions.html +5 -5
  71. package/docs/interfaces/Message.html +2 -2
  72. package/docs/interfaces/ModelInfo.html +2 -2
  73. package/docs/interfaces/PreparedPromptResponse.html +2 -2
  74. package/docs/interfaces/ProcessTextResponse.html +2 -2
  75. package/docs/interfaces/PromptFile.html +2 -2
  76. package/docs/interfaces/PromptFileContent.html +2 -2
  77. package/docs/interfaces/PromptFilesResponse.html +2 -2
  78. package/docs/interfaces/PromptFolder.html +2 -2
  79. package/docs/interfaces/PromptFoldersResponse.html +2 -2
  80. package/docs/interfaces/RoomDetails.html +2 -2
  81. package/docs/interfaces/RoomInfo.html +2 -2
  82. package/docs/interfaces/RoomMessagesResponse.html +2 -2
  83. package/docs/interfaces/StoryErrorEvent.html +3 -3
  84. package/docs/interfaces/StoryIdea.html +2 -2
  85. package/docs/interfaces/StoryInfo.html +6 -2
  86. package/docs/interfaces/StoryIntroduceCharacterEvent.html +3 -3
  87. package/docs/interfaces/StoryProgressChapterEvent.html +3 -3
  88. package/docs/interfaces/StoryState.html +5 -5
  89. package/docs/interfaces/StoryStateEvent.html +3 -3
  90. package/docs/interfaces/Transaction.html +2 -2
  91. package/docs/interfaces/TransactionHistoryResponse.html +2 -2
  92. package/docs/modules.html +1 -1
  93. package/docs/types/PromptScope.html +1 -1
  94. package/package.json +8 -11
  95. package/dist/server/src/ai/LLM/vertexai.module.d.ts +0 -2
  96. package/dist/server/src/ai/LLM/vertexai.module.js +0 -21
  97. package/dist/server/src/ai/LLM/vertexai.service.d.ts +0 -17
  98. package/dist/server/src/ai/LLM/vertexai.service.js +0 -321
  99. package/dist/server/src/ai/model_prices.d.ts +0 -1
  100. /package/data/common/prompts/character/{compact_story.json → compact_agent.json} +0 -0
  101. /package/data/common/prompts/character/{compact_story.prompt → compact_agent.prompt} +0 -0
  102. /package/data/common/prompts/narrator/{compact_story.json → compact_agent.json} +0 -0
  103. /package/data/common/prompts/narrator/{compact_story.prompt → compact_agent.prompt} +0 -0
  104. /package/{dist → dist-sdk}/server/src/ai/LLM/anthropic.module.d.ts +0 -0
  105. /package/{dist → dist-sdk}/server/src/ai/LLM/anthropic.module.js +0 -0
  106. /package/{dist → dist-sdk}/server/src/ai/LLM/anthropic.service.d.ts +0 -0
  107. /package/{dist → dist-sdk}/server/src/ai/LLM/deepseek.module.d.ts +0 -0
  108. /package/{dist → dist-sdk}/server/src/ai/LLM/deepseek.module.js +0 -0
  109. /package/{dist → dist-sdk}/server/src/ai/LLM/fal.module.d.ts +0 -0
  110. /package/{dist → dist-sdk}/server/src/ai/LLM/fal.module.js +0 -0
  111. /package/{dist → dist-sdk}/server/src/ai/LLM/googleai.module.d.ts +0 -0
  112. /package/{dist → dist-sdk}/server/src/ai/LLM/googleai.module.js +0 -0
  113. /package/{dist → dist-sdk}/server/src/ai/LLM/googleai.service.d.ts +0 -0
  114. /package/{dist → dist-sdk}/server/src/ai/LLM/googleai.service.js +0 -0
  115. /package/{dist → dist-sdk}/server/src/ai/LLM/grok.module.d.ts +0 -0
  116. /package/{dist → dist-sdk}/server/src/ai/LLM/grok.module.js +0 -0
  117. /package/{dist → dist-sdk}/server/src/ai/LLM/mock.module.d.ts +0 -0
  118. /package/{dist → dist-sdk}/server/src/ai/LLM/mock.module.js +0 -0
  119. /package/{dist → dist-sdk}/server/src/ai/LLM/mock.service.d.ts +0 -0
  120. /package/{dist → dist-sdk}/server/src/ai/LLM/mock.service.js +0 -0
  121. /package/{dist → dist-sdk}/server/src/ai/LLM/openai.module.d.ts +0 -0
  122. /package/{dist → dist-sdk}/server/src/ai/LLM/openai.module.js +0 -0
  123. /package/{dist → dist-sdk}/server/src/ai/LLM/openai.service.d.ts +0 -0
  124. /package/{dist → dist-sdk}/server/src/ai/LLM/openai.service.js +0 -0
  125. /package/{dist → dist-sdk}/server/src/ai/LLM/together.module.d.ts +0 -0
  126. /package/{dist → dist-sdk}/server/src/ai/LLM/together.module.js +0 -0
  127. /package/{dist → dist-sdk}/server/src/ai/agent-config.d.ts +0 -0
  128. /package/{dist → dist-sdk}/server/src/ai/agent-config.js +0 -0
  129. /package/{dist → dist-sdk}/server/src/ai/agent-factory.d.ts +0 -0
  130. /package/{dist → dist-sdk}/server/src/ai/agent-factory.js +0 -0
  131. /package/{dist → dist-sdk}/server/src/ai/agent-message.service.d.ts +0 -0
  132. /package/{dist → dist-sdk}/server/src/ai/agent-message.service.js +0 -0
  133. /package/{dist → dist-sdk}/server/src/ai/agent-store.module.d.ts +0 -0
  134. /package/{dist → dist-sdk}/server/src/ai/agent-store.module.js +0 -0
  135. /package/{dist → dist-sdk}/server/src/ai/agent-store.service.d.ts +0 -0
  136. /package/{dist → dist-sdk}/server/src/ai/agent-store.service.js +0 -0
  137. /package/{dist → dist-sdk}/server/src/ai/ai-factory.module.d.ts +0 -0
  138. /package/{dist → dist-sdk}/server/src/ai/artifact.module.d.ts +0 -0
  139. /package/{dist → dist-sdk}/server/src/ai/artifact.module.js +0 -0
  140. /package/{dist → dist-sdk}/server/src/ai/artifact.service.d.ts +0 -0
  141. /package/{dist → dist-sdk}/server/src/ai/artifact.service.js +0 -0
  142. /package/{dist → dist-sdk}/server/src/ai/attached-file.module.d.ts +0 -0
  143. /package/{dist → dist-sdk}/server/src/ai/attached-file.module.js +0 -0
  144. /package/{dist → dist-sdk}/server/src/ai/attached-file.service.d.ts +0 -0
  145. /package/{dist → dist-sdk}/server/src/ai/attached-file.service.js +0 -0
  146. /package/{dist → dist-sdk}/server/src/ai/published-agents.service.d.ts +0 -0
  147. /package/{dist → dist-sdk}/server/src/app/balance-message.service.d.ts +0 -0
  148. /package/{dist → dist-sdk}/server/src/app/balance-message.service.js +0 -0
  149. /package/{dist → dist-sdk}/server/src/app/balance.module.d.ts +0 -0
  150. /package/{dist → dist-sdk}/server/src/app/balance.module.js +0 -0
  151. /package/{dist → dist-sdk}/server/src/app/balance.service.d.ts +0 -0
  152. /package/{dist → dist-sdk}/server/src/app/balance.service.js +0 -0
  153. /package/{dist → dist-sdk}/server/src/app/stripe.module.d.ts +0 -0
  154. /package/{dist → dist-sdk}/server/src/app/stripe.module.js +0 -0
  155. /package/{dist → dist-sdk}/server/src/app/transaction.service.d.ts +0 -0
  156. /package/{dist → dist-sdk}/server/src/app/transaction.service.js +0 -0
  157. /package/{dist → dist-sdk}/server/src/app/user-service-factory.d.ts +0 -0
  158. /package/{dist → dist-sdk}/server/src/app/user-service-factory.js +0 -0
  159. /package/{dist → dist-sdk}/server/src/app/user-service-manager.d.ts +0 -0
  160. /package/{dist → dist-sdk}/server/src/app/user-service-manager.js +0 -0
  161. /package/{dist → dist-sdk}/server/src/app.module.d.ts +0 -0
  162. /package/{dist → dist-sdk}/server/src/app.module.js +0 -0
  163. /package/{dist → dist-sdk}/server/src/auth/agent-access.decorator.d.ts +0 -0
  164. /package/{dist → dist-sdk}/server/src/auth/agent-access.decorator.js +0 -0
  165. /package/{dist → dist-sdk}/server/src/auth/auth.controller.d.ts +0 -0
  166. /package/{dist → dist-sdk}/server/src/auth/auth.controller.js +0 -0
  167. /package/{dist → dist-sdk}/server/src/auth/auth.module.d.ts +0 -0
  168. /package/{dist → dist-sdk}/server/src/auth/auth.module.js +0 -0
  169. /package/{dist → dist-sdk}/server/src/auth/auth.service.d.ts +0 -0
  170. /package/{dist → dist-sdk}/server/src/auth/auth.service.js +0 -0
  171. /package/{dist → dist-sdk}/server/src/auth/dto/bot-login.dto.d.ts +0 -0
  172. /package/{dist → dist-sdk}/server/src/auth/dto/bot-login.dto.js +0 -0
  173. /package/{dist → dist-sdk}/server/src/auth/dto/password-reset.dto.d.ts +0 -0
  174. /package/{dist → dist-sdk}/server/src/auth/dto/password-reset.dto.js +0 -0
  175. /package/{dist → dist-sdk}/server/src/auth/dto/phone-login.dto.d.ts +0 -0
  176. /package/{dist → dist-sdk}/server/src/auth/dto/phone-login.dto.js +0 -0
  177. /package/{dist → dist-sdk}/server/src/auth/dto/phone-verification.dto.d.ts +0 -0
  178. /package/{dist → dist-sdk}/server/src/auth/dto/phone-verification.dto.js +0 -0
  179. /package/{dist → dist-sdk}/server/src/auth/jwt-auth.guard.d.ts +0 -0
  180. /package/{dist → dist-sdk}/server/src/auth/jwt-auth.guard.js +0 -0
  181. /package/{dist → dist-sdk}/server/src/auth/jwt.strategy.d.ts +0 -0
  182. /package/{dist → dist-sdk}/server/src/auth/jwt.strategy.js +0 -0
  183. /package/{dist → dist-sdk}/server/src/auth/phone-validation.service.d.ts +0 -0
  184. /package/{dist → dist-sdk}/server/src/auth/phone-validation.service.js +0 -0
  185. /package/{dist → dist-sdk}/server/src/auth/public.decorator.d.ts +0 -0
  186. /package/{dist → dist-sdk}/server/src/auth/public.decorator.js +0 -0
  187. /package/{dist → dist-sdk}/server/src/auth/rate-limit.service.d.ts +0 -0
  188. /package/{dist → dist-sdk}/server/src/auth/rate-limit.service.js +0 -0
  189. /package/{dist → dist-sdk}/server/src/auth/room-access.decorator.d.ts +0 -0
  190. /package/{dist → dist-sdk}/server/src/auth/room-access.decorator.js +0 -0
  191. /package/{dist → dist-sdk}/server/src/auth/scopes.decorator.d.ts +0 -0
  192. /package/{dist → dist-sdk}/server/src/auth/scopes.decorator.js +0 -0
  193. /package/{dist → dist-sdk}/server/src/auth/scopes.guard.d.ts +0 -0
  194. /package/{dist → dist-sdk}/server/src/auth/scopes.guard.js +0 -0
  195. /package/{dist → dist-sdk}/server/src/auth/session.guard.d.ts +0 -0
  196. /package/{dist → dist-sdk}/server/src/auth/session.guard.js +0 -0
  197. /package/{dist → dist-sdk}/server/src/auth/twilio.service.d.ts +0 -0
  198. /package/{dist → dist-sdk}/server/src/auth/twilio.service.js +0 -0
  199. /package/{dist → dist-sdk}/server/src/auth/users.service.d.ts +0 -0
  200. /package/{dist → dist-sdk}/server/src/common/errors.d.ts +0 -0
  201. /package/{dist → dist-sdk}/server/src/common/errors.js +0 -0
  202. /package/{dist → dist-sdk}/server/src/common/logger.d.ts +0 -0
  203. /package/{dist → dist-sdk}/server/src/common/logger.js +0 -0
  204. /package/{dist → dist-sdk}/server/src/config/configuration.module.d.ts +0 -0
  205. /package/{dist → dist-sdk}/server/src/config/configuration.module.js +0 -0
  206. /package/{dist → dist-sdk}/server/src/room/artifact-store.service.d.ts +0 -0
  207. /package/{dist → dist-sdk}/server/src/room/artifact-store.service.js +0 -0
  208. /package/{dist → dist-sdk}/server/src/room/artifact.d.ts +0 -0
  209. /package/{dist → dist-sdk}/server/src/room/artifact.js +0 -0
  210. /package/{dist → dist-sdk}/server/src/room/message.d.ts +0 -0
  211. /package/{dist → dist-sdk}/server/src/room/message.js +0 -0
  212. /package/{dist → dist-sdk}/server/src/room/published-rooms.service.d.ts +0 -0
  213. /package/{dist → dist-sdk}/server/src/room/room-config.d.ts +0 -0
  214. /package/{dist → dist-sdk}/server/src/room/room-config.js +0 -0
  215. /package/{dist → dist-sdk}/server/src/room/room-factory.d.ts +0 -0
  216. /package/{dist → dist-sdk}/server/src/room/room-factory.js +0 -0
  217. /package/{dist → dist-sdk}/server/src/room/room-message.module.d.ts +0 -0
  218. /package/{dist → dist-sdk}/server/src/room/room-message.module.js +0 -0
  219. /package/{dist → dist-sdk}/server/src/room/room-message.service.d.ts +0 -0
  220. /package/{dist → dist-sdk}/server/src/room/room-message.service.js +0 -0
  221. /package/{dist → dist-sdk}/server/src/room/room-store.module.d.ts +0 -0
  222. /package/{dist → dist-sdk}/server/src/room/room-store.module.js +0 -0
  223. /package/{dist → dist-sdk}/server/src/room/room-store.service.d.ts +0 -0
  224. /package/{dist → dist-sdk}/server/src/room/room-store.service.js +0 -0
  225. /package/{dist → dist-sdk}/server/src/room/room.d.ts +0 -0
  226. /package/{dist → dist-sdk}/server/src/sdk/briyah-config.d.ts +0 -0
  227. /package/{dist → dist-sdk}/server/src/sdk/briyah.d.ts +0 -0
  228. /package/{dist → dist-sdk}/server/src/sdk/index.d.ts +0 -0
  229. /package/{dist → dist-sdk}/server/src/sdk/index.js +0 -0
  230. /package/{dist → dist-sdk}/server/src/shared/shared.module.d.ts +0 -0
  231. /package/{dist → dist-sdk}/server/src/shared/shared.module.js +0 -0
  232. /package/{dist → dist-sdk}/server/src/story/story-message.service.d.ts +0 -0
  233. /package/{dist → dist-sdk}/server/src/story/story-progress.service.d.ts +0 -0
  234. /package/{dist → dist-sdk}/server/src/story/story-progress.service.js +0 -0
  235. /package/{dist → dist-sdk}/server/src/story/story-store.module.d.ts +0 -0
  236. /package/{dist → dist-sdk}/server/src/story/story-store.module.js +0 -0
  237. /package/{dist → dist-sdk}/server/src/story/story-store.service.d.ts +0 -0
  238. /package/{dist → dist-sdk}/server/src/story/story-store.service.js +0 -0
  239. /package/{dist → dist-sdk}/shared/types/app.types.js +0 -0
@@ -74,6 +74,7 @@ let StoryService = class StoryService {
74
74
  agentFactory;
75
75
  roomFactory;
76
76
  storyArtifactServices = new Map();
77
+ chaptersInProgress = new Set();
77
78
  constructor(storyStore, agentStore, roomStore, progressService, messageService, configService, agentFactory, roomFactory) {
78
79
  this.storyStore = storyStore;
79
80
  this.agentStore = agentStore;
@@ -254,6 +255,7 @@ let StoryService = class StoryService {
254
255
  }
255
256
  const storyInfo = this.storyStore.createStory(name);
256
257
  storyInfo.turnNumber = 0;
258
+ let storyTitle = name;
257
259
  try {
258
260
  this.progressService.createProgressEmitter(storyInfo.id);
259
261
  this.progressService.emitProgress(storyInfo.id, 'start', 'Starting story creation...');
@@ -270,7 +272,7 @@ let StoryService = class StoryService {
270
272
  }
271
273
  if (!aiServiceName || !aiModelName)
272
274
  throw new Error(`Failed to find model config for "${storyModel}"`);
273
- let moderator = this.agentFactory.createAgent(process.env.MODERATOR_AI_SERVICE || aiServiceName, 'Moderator', '', 'Story moderator responsible for message routing and conversation flow', 'story_moderator', process.env.MODERATOR_AI_MODEL || aiModelName, storyAgentsDir, storyArtifactService);
275
+ let moderator = this.agentFactory.createAgent(process.env.MODERATOR_AI_SERVICE || aiServiceName, `${storyTitle} - Moderator`, 'Moderator', 'Story moderator responsible for message routing and conversation flow', 'story_moderator', process.env.MODERATOR_AI_MODEL || aiModelName, storyAgentsDir, storyArtifactService);
274
276
  moderator.maxHistoryMessages = 16;
275
277
  moderator.reasoningEffort = 'low';
276
278
  moderator.promptCacheTTL = 60;
@@ -281,14 +283,14 @@ let StoryService = class StoryService {
281
283
  const artist = this.createArtistAgent(storyInfo.id, storyAgentsDir, storyArtifactService, imageModelName);
282
284
  let illustrator = null;
283
285
  if (artist) {
284
- illustrator = this.agentFactory.createAgent(process.env.MODERATOR_AI_SERVICE || aiServiceName, 'Illustrator', '', 'Visual artist for generating scene illustrations', 'illustrator', process.env.MODERATOR_AI_MODEL || aiModelName, storyAgentsDir, storyArtifactService);
286
+ illustrator = this.agentFactory.createAgent(process.env.MODERATOR_AI_SERVICE || aiServiceName, `${storyTitle} - Illustrator`, 'Illustrator', 'Visual artist for generating scene illustrations', 'illustrator', process.env.MODERATOR_AI_MODEL || aiModelName, storyAgentsDir, storyArtifactService);
285
287
  illustrator.maxHistoryMessages = 10;
286
288
  illustrator.promptCacheTTL = 60;
287
289
  illustrator.ownerRoomId = storyInfo.id;
288
290
  illustrator.save();
289
291
  logger_1.logger.log(`Created illustrator agent: ${illustrator.agentName}`);
290
292
  }
291
- 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);
293
+ let narrator = this.agentFactory.createAgent(aiServiceName, `${storyTitle} - Narrator`, '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);
292
294
  narrator.reasoningEffort = 'low';
293
295
  narrator.allowSearch = true;
294
296
  narrator.promptCacheTTL = 60;
@@ -974,6 +976,21 @@ let StoryService = class StoryService {
974
976
  const introducedCharPlotPlanArtifact = introducedCharArtifacts.find((a) => a.name === 'Plot Plan');
975
977
  const introducedCharPlotPlan = introducedCharPlotPlanArtifact?.body || '';
976
978
  await this.updateCharacterProfiles(room, [characterAgent], introducedCharPlotPlan);
979
+ if (!story.characters) {
980
+ story.characters = [];
981
+ }
982
+ if (!story.characters.some((c) => c.name === characterName)) {
983
+ story.characters.push({
984
+ name: characterName,
985
+ description: characterAgent.description,
986
+ isControlledByHuman: false,
987
+ });
988
+ }
989
+ if (story.pendingSuggestion?.type === 'suggest-introduce-character' &&
990
+ story.pendingSuggestion.characterName === characterName) {
991
+ story.pendingSuggestion = undefined;
992
+ }
993
+ this.storyStore.updateStoryMetadata(storyId, story);
977
994
  try {
978
995
  const artifactId = await this.generateCharacterPortrait(room, characterAgent, storyId);
979
996
  if (artifactId) {
@@ -1000,9 +1017,13 @@ let StoryService = class StoryService {
1000
1017
  }
1001
1018
  if (!story.declinedCharacters.includes(characterName)) {
1002
1019
  story.declinedCharacters.push(characterName);
1003
- this.storyStore.updateStoryMetadata(storyId, story);
1004
1020
  logger_1.logger.log(`Recorded declined character: ${characterName} for story ${storyId}`);
1005
1021
  }
1022
+ if (story.pendingSuggestion?.type === 'suggest-introduce-character' &&
1023
+ story.pendingSuggestion.characterName === characterName) {
1024
+ story.pendingSuggestion = undefined;
1025
+ }
1026
+ this.storyStore.updateStoryMetadata(storyId, story);
1006
1027
  }
1007
1028
  async deleteCharacter(storyId, characterName) {
1008
1029
  let room;
@@ -1029,6 +1050,17 @@ let StoryService = class StoryService {
1029
1050
  room.setAgents(filteredAgents);
1030
1051
  room.saveMetadata();
1031
1052
  this.agentStore.removeAgent(agent.id);
1053
+ const story = this.storyStore.getStory(storyId);
1054
+ if (story?.characters) {
1055
+ const filtered = story.characters.filter((c) => {
1056
+ const firstWord = c.name.trim().split(/\s+/)[0];
1057
+ return c.name !== characterName && firstWord !== characterName;
1058
+ });
1059
+ if (filtered.length !== story.characters.length) {
1060
+ story.characters = filtered;
1061
+ this.storyStore.updateStoryMetadata(storyId, story);
1062
+ }
1063
+ }
1032
1064
  }
1033
1065
  async deleteStory(storyId) {
1034
1066
  logger_1.logger.log(`Deleting story ${storyId}...`);
@@ -1132,7 +1164,7 @@ let StoryService = class StoryService {
1132
1164
  return;
1133
1165
  }
1134
1166
  try {
1135
- await this.compactAgentHistory(agent);
1167
+ await agent.compact();
1136
1168
  }
1137
1169
  catch (error) {
1138
1170
  logger_1.logger.error(`Error compacting ${agent.agentName}:`, error);
@@ -1157,36 +1189,54 @@ let StoryService = class StoryService {
1157
1189
  if (!story) {
1158
1190
  throw new Error('Story not found');
1159
1191
  }
1160
- const existingEmitter = this.progressService.getProgressEmitter(storyId);
1161
- if (!existingEmitter) {
1162
- this.progressService.createProgressEmitter(storyId);
1192
+ if (this.chaptersInProgress.has(storyId)) {
1193
+ throw new errors_1.OperationFailedError('Chapter progression is already in progress for this story');
1163
1194
  }
1164
- const room = await this.getStoryRoom(storyId);
1165
- room.setCurrentSpeaker('system');
1166
- this.progressService.emitProgress(storyId, 'opening-scene', 'Generating opening scene of chapter...');
1167
- const agents = room.getAgents();
1168
- const narrator = agents.find((agent) => agent.promptFolder === 'narrator');
1169
- const { openingScene, chapterTitle } = await this.generateOpeningScene(room, narrator);
1170
- this.progressService.emitProgress(storyId, 'chapter-backup', `Saving previous chapter: "${chapterTitle}"...`);
1171
- const chapterIndex = this.storyStore.getNextChapterIndex(storyId);
1172
- const backupSuccess = this.storyStore.createChapterBackup(storyId, chapterIndex, chapterTitle);
1173
- if (!backupSuccess) {
1174
- throw new Error('Failed to backup chapter');
1175
- }
1176
- room.clearRoomMessages();
1177
- this.populateStoryHistory(room, openingScene);
1178
- const humanAgent = room.getAgents().find((a) => a.isControlledByHuman);
1179
- if (humanAgent) {
1180
- room.setCurrentSpeaker(humanAgent.agentNickname);
1181
- }
1182
- this.progressService.emitProgress(storyId, 'ready', 'Chapter opening is ready! Continuing chapter progression in the background...');
1183
- setImmediate(() => {
1184
- this.progressStoryToNextChapterAsync(storyId).catch((error) => {
1185
- logger_1.logger.error('Error in async chapter progression:', error);
1186
- this.progressService.emitProgress(storyId, 'error', `Error: ${error.message}`);
1195
+ this.chaptersInProgress.add(storyId);
1196
+ try {
1197
+ if (story.pendingSuggestion?.type === 'suggest-progress-chapter') {
1198
+ story.pendingSuggestion = undefined;
1199
+ this.storyStore.updateStoryMetadata(storyId, story);
1200
+ }
1201
+ const existingEmitter = this.progressService.getProgressEmitter(storyId);
1202
+ if (!existingEmitter) {
1203
+ this.progressService.createProgressEmitter(storyId);
1204
+ }
1205
+ const room = await this.getStoryRoom(storyId);
1206
+ room.setCurrentSpeaker('system');
1207
+ this.progressService.emitProgress(storyId, 'opening-scene', 'Generating opening scene of chapter...');
1208
+ const agents = room.getAgents();
1209
+ const narrator = agents.find((agent) => agent.promptFolder === 'narrator');
1210
+ const { openingScene, chapterTitle } = await this.generateOpeningScene(room, narrator);
1211
+ this.progressService.emitProgress(storyId, 'chapter-backup', `Saving previous chapter: "${chapterTitle}"...`);
1212
+ const chapterIndex = this.storyStore.getNextChapterIndex(storyId);
1213
+ const backupSuccess = this.storyStore.createChapterBackup(storyId, chapterIndex, chapterTitle);
1214
+ if (!backupSuccess) {
1215
+ throw new Error('Failed to backup chapter');
1216
+ }
1217
+ room.clearRoomMessages();
1218
+ this.populateStoryHistory(room, openingScene);
1219
+ const humanAgent = room.getAgents().find((a) => a.isControlledByHuman);
1220
+ if (humanAgent) {
1221
+ room.setCurrentSpeaker(humanAgent.agentNickname);
1222
+ }
1223
+ this.progressService.emitProgress(storyId, 'ready', 'Chapter opening is ready! Continuing chapter progression in the background...');
1224
+ setImmediate(() => {
1225
+ this.progressStoryToNextChapterAsync(storyId)
1226
+ .catch((error) => {
1227
+ logger_1.logger.error('Error in async chapter progression:', error);
1228
+ this.progressService.emitProgress(storyId, 'error', `Error: ${error.message}`);
1229
+ })
1230
+ .finally(() => {
1231
+ this.chaptersInProgress.delete(storyId);
1232
+ });
1187
1233
  });
1188
- });
1189
- return { chapterIndex };
1234
+ return { chapterIndex };
1235
+ }
1236
+ catch (err) {
1237
+ this.chaptersInProgress.delete(storyId);
1238
+ throw err;
1239
+ }
1190
1240
  }
1191
1241
  async progressStoryToNextChapterAsync(storyId) {
1192
1242
  let room = null;
@@ -1251,50 +1301,16 @@ let StoryService = class StoryService {
1251
1301
  await Promise.all(agents.map(async (agent) => {
1252
1302
  let numMessageChars = agent.history?.map((m) => m.content?.length).reduce((a, b) => a + b, 0);
1253
1303
  if (numMessageChars > threshold) {
1254
- await this.compactAgentHistory(agent);
1255
- }
1256
- else {
1257
- return Promise.resolve();
1304
+ try {
1305
+ await agent.compact();
1306
+ }
1307
+ catch (error) {
1308
+ logger_1.logger.error(`Error compacting ${agent.agentName}:`, error);
1309
+ throw error;
1310
+ }
1258
1311
  }
1259
1312
  }));
1260
1313
  }
1261
- async compactAgentHistory(agent) {
1262
- const originalHistory = [...agent.history];
1263
- const originalLength = originalHistory.length;
1264
- if (originalHistory.length == 0) {
1265
- return {
1266
- success: true,
1267
- originalLength: originalLength,
1268
- newLength: originalLength,
1269
- message: 'No conversation history to compact',
1270
- };
1271
- }
1272
- const formattedHistory = agent.getFormattedMessages(0);
1273
- try {
1274
- agent.history = [];
1275
- const summaryResponse = await agent.preparedPrompt('compact_story', {
1276
- agentName: agent.agentNickname,
1277
- formattedHistory: formattedHistory,
1278
- }, false);
1279
- const summary = summaryResponse?.summary || summaryResponse;
1280
- agent.addToConversationHistory(`[CONVERSATION HISTORY SUMMARY]\n\n${summary}`, true);
1281
- const newLength = agent.history.length;
1282
- logger_1.logger.log(`Compacted ${agent.agentName}: ${originalLength} messages`);
1283
- agent.save();
1284
- return {
1285
- success: true,
1286
- originalLength: originalLength,
1287
- newLength: newLength,
1288
- message: `${originalLength} messages -> ${newLength} messages`,
1289
- summary: summary,
1290
- };
1291
- }
1292
- catch (error) {
1293
- agent.history = originalHistory;
1294
- logger_1.logger.error(`Error compacting ${agent.agentName}:`, error);
1295
- throw error;
1296
- }
1297
- }
1298
1314
  extractMarkdownContent(response) {
1299
1315
  const fenceMatch = response.match(/```(?:markdown)?\s*\n([\s\S]*?)```/);
1300
1316
  if (fenceMatch) {
@@ -1415,12 +1431,13 @@ let StoryService = class StoryService {
1415
1431
  }
1416
1432
  }
1417
1433
  createArtistAgent(storyId, storyAgentsDir, storyArtifactService, imageModelName) {
1434
+ const storyInfo = this.storyStore.getStory(storyId);
1418
1435
  const imageConfig = this.getImageModelConfig(imageModelName);
1419
1436
  if (!imageConfig) {
1420
1437
  logger_1.logger.log('Artist agent creation skipped: images disabled');
1421
1438
  return null;
1422
1439
  }
1423
- const artistAgent = this.agentFactory.createAgent(imageConfig.service, 'Artist', '', 'AI artist for generating character portraits and scene illustrations', 'default', imageConfig.model, storyAgentsDir, storyArtifactService);
1440
+ const artistAgent = this.agentFactory.createAgent(imageConfig.service, `${storyInfo.name} - Artist`, 'Artist', 'AI artist for generating character portraits and scene illustrations', 'default', imageConfig.model, storyAgentsDir, storyArtifactService);
1424
1441
  artistAgent.maxHistoryMessages = 10;
1425
1442
  artistAgent.promptCacheTTL = 0;
1426
1443
  artistAgent.save();
@@ -1622,8 +1639,12 @@ let StoryService = class StoryService {
1622
1639
  if (progressChapter) {
1623
1640
  if (story) {
1624
1641
  story.declinedCharacters = [];
1625
- this.storyStore.updateStoryMetadata(storyId, story);
1626
1642
  }
1643
+ story.pendingSuggestion = {
1644
+ type: 'suggest-progress-chapter',
1645
+ timestamp: Date.now(),
1646
+ };
1647
+ this.storyStore.updateStoryMetadata(storyId, story);
1627
1648
  this.messageService.emitProgressChapter(storyId);
1628
1649
  return;
1629
1650
  }
@@ -1638,6 +1659,12 @@ let StoryService = class StoryService {
1638
1659
  logger_1.logger.log(`Character ${newCharacterName} was declined, skipping prompt`);
1639
1660
  return;
1640
1661
  }
1662
+ story.pendingSuggestion = {
1663
+ type: 'suggest-introduce-character',
1664
+ characterName: newCharacterName,
1665
+ timestamp: Date.now(),
1666
+ };
1667
+ this.storyStore.updateStoryMetadata(storyId, story);
1641
1668
  this.messageService.emitIntroduceCharacter(storyId, newCharacterName);
1642
1669
  }
1643
1670
  return;
@@ -220,6 +220,7 @@ export interface StoryInfo {
220
220
  totalOutputTokens: number;
221
221
  turnNumber: number;
222
222
  declinedCharacters?: string[];
223
+ pendingSuggestion?: StoryIntroduceCharacterEvent | StoryProgressChapterEvent;
223
224
  }
224
225
  export interface CreateStoryResponse {
225
226
  storyId: string;
@@ -1 +1 @@
1
- window.hierarchyData = "eJx1jc0KwjAQhN9lzqklLRbdd/DitfQQ2tUG0wSy8VTy7hL/KIKngZ1v51sRQ0gC6jvdDgqRL47HZIMX0IpOtyW8WRiEE4uYK0PhZv0Eavadwj06EKxPHC9mZKnf1G5Oi4PC6IwICEmmqrxVX7SUs3VTZA/qtdbHISuU3DjPISy/Xt0cPt7nOku9wf6KX4ec8wP/YVA+"
1
+ window.hierarchyData = "eJx1jc0KwjAQhN9lzqkliq3sO3jxWnoI7dYG0wSy8VTy7hL/KIKngZ1v51sRQ0gC6hrd9gqRJ8dDssELaEWj2xLeLAzCmUXMlaFws34E7Y+Nwj06EKxPHCczsNRvajenxUFhcEYEhCRjVd6qL1rK2boxsgd1Wh90nxVKbpyXEJZfr96fPt7nOku9wf6KX4ec8wMBuFA6"
@@ -1 +1 @@
1
- window.searchData = "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";
1
+ window.searchData = "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";