@yrpri/api 9.0.139 → 9.0.141

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 (322) hide show
  1. package/agents/assistants/agentAssistant.js +4 -3
  2. package/agents/assistants/baseAssistant.js +72 -71
  3. package/agents/assistants/baseAssistantWithVoice.js +6 -5
  4. package/agents/assistants/modes/agentDirectConnection.js +8 -7
  5. package/agents/assistants/modes/agentSelectionMode.js +2 -1
  6. package/agents/assistants/modes/baseAssistantMode.js +3 -2
  7. package/agents/assistants/modes/tools/agentTools.js +11 -10
  8. package/agents/assistants/modes/tools/loginTools.js +7 -6
  9. package/agents/assistants/modes/tools/models/agents.js +6 -5
  10. package/agents/assistants/modes/tools/models/subscriptions.js +7 -6
  11. package/agents/assistants/modes/tools/navigationTools.js +7 -6
  12. package/agents/assistants/modes/tools/subscriptionTools.js +12 -11
  13. package/agents/assistants/modes/tools/workflowConverstationTools.js +7 -6
  14. package/agents/assistants/voiceAssistant.js +45 -44
  15. package/agents/controllers/agentProductController.js +8 -7
  16. package/agents/controllers/agentSubscriptionController.js +13 -12
  17. package/agents/controllers/assistantsController.js +45 -44
  18. package/agents/controllers/policySynthAgents.js +33 -32
  19. package/agents/managers/emailInvitesManager.js +4 -3
  20. package/agents/managers/newAiModelSetup.js +46 -45
  21. package/agents/managers/notificationAgentQueueManager.js +55 -54
  22. package/agents/managers/subscriptionManager.js +24 -23
  23. package/agents/models/agentProduct.js +2 -1
  24. package/agents/models/agentProductBoosterPurchase.js +2 -1
  25. package/agents/models/testData/createEvolyAgentProduct.js +7 -6
  26. package/agents/models/testData/old/updateAgentWorkflowConfiguration.js +5 -4
  27. package/agents/models/testData/updateAgentWorkflowConfiguration.js +5 -4
  28. package/agents/tools/setTemplateWorkflowCommunityId.js +6 -5
  29. package/app.d.ts +2 -1
  30. package/app.js +60 -34
  31. package/authorization.cjs +4 -4
  32. package/controllers/allOurIdeas.js +45 -44
  33. package/controllers/groups.cjs +4 -9
  34. package/controllers/images.cjs +8 -8
  35. package/controllers/index.cjs +1 -1
  36. package/controllers/points.cjs +1 -1
  37. package/controllers/posts.cjs +3 -3
  38. package/deleteUnwantedDeclerations.cjs +6 -5
  39. package/models/community.cjs +1 -1
  40. package/models/domain.cjs +7 -7
  41. package/models/image.cjs +2 -2
  42. package/models/index.cjs +8 -4
  43. package/models/post.cjs +10 -10
  44. package/models/user.cjs +1 -1
  45. package/models/video.cjs +4 -4
  46. package/package.json +5 -5
  47. package/scripts/addRatingUsersToGroup.js +1 -1
  48. package/scripts/addUserToOrganization.js +8 -8
  49. package/scripts/agents/changeModelForWorkflowGroupTemplate.js +13 -12
  50. package/scripts/agents/generateAgentWorkflowTemplateFromAgentClass.js +5 -4
  51. package/scripts/analyseRatingsForCommunity.js +2 -2
  52. package/scripts/analyzeAndFixBrokenPointUsers.js +3 -3
  53. package/scripts/analyzeEndorsementsByCountry.js +7 -7
  54. package/scripts/analyzePostsForCommunity.js +1 -1
  55. package/scripts/bulkStatusUpdates/listUpdates.js +2 -2
  56. package/scripts/bulkStatusUpdates/mergeLatestPostsToUpdate.js +5 -5
  57. package/scripts/bulkStatusUpdates/performUpdate.js +9 -9
  58. package/scripts/bulkStatusUpdates/performUpdateForGroup.cjs +12 -11
  59. package/scripts/bulkStatusUpdates/performUpdateForStatus.js +15 -15
  60. package/scripts/change/changeVideoAspectTo.js +3 -3
  61. package/scripts/change/setUseNewVersion.cjs +5 -4
  62. package/scripts/changeCommunityGroupcount.js +3 -3
  63. package/scripts/changeCommunityPostCount.js +3 -3
  64. package/scripts/changeGroupPostCount.js +3 -3
  65. package/scripts/changeLanguage.js +4 -4
  66. package/scripts/changeOfficalStatus.js +3 -3
  67. package/scripts/cleanups/deleteAnonNotifications.cjs +8 -7
  68. package/scripts/cleanups/deleteLinkGroupsWithDeletedCommunities.js +8 -8
  69. package/scripts/cleanups/deleteYearOldNotifications.cjs +6 -5
  70. package/scripts/cleanups/removeAllUsersFromHiddenPublicGroup.js +5 -5
  71. package/scripts/clearAllEndorsementInGroup.js +5 -5
  72. package/scripts/cloning/clearUsersForCommunitiesFromUrl.js +3 -3
  73. package/scripts/cloning/cloneFromUrlScript.js +4 -4
  74. package/scripts/cloning/cloneWBFromUrlScriptAndCreateLinks.js +6 -6
  75. package/scripts/cloning/cloneWBFromUrlScriptNoUsersOrPoints.js +6 -6
  76. package/scripts/cloning/cloneWBSerbianFromUrlScriptAndCreateLinks.js +6 -6
  77. package/scripts/cloning/copyCommunityConfigAndTranslationsFromURL.js +3 -3
  78. package/scripts/cloning/copyCommunityOneGroupToDomainNoUsersNoEndorsements.js +2 -2
  79. package/scripts/cloning/copyCommunityToDomainNoUsersNoEndorsements.js +2 -2
  80. package/scripts/cloning/copyCommunityToDomainWithEverything.js +2 -2
  81. package/scripts/cloning/copyCommunityToDomainWithOnlyGroups.js +3 -3
  82. package/scripts/cloning/copyGroupConfigAndTranslationsFromURL.js +3 -3
  83. package/scripts/cloning/copyPostToGroupOld.js +12 -12
  84. package/scripts/cloning/copyPostVideosFromURL.js +3 -3
  85. package/scripts/cloning/copyPostWithOutAnyVotingOrActivities.js +2 -2
  86. package/scripts/cloning/deepCloneSerbianWBFromUrlScriptAndCreateLinks.js +7 -7
  87. package/scripts/cloning/deepCloneWBFromUrlScriptAndCreateLinks.js +6 -6
  88. package/scripts/cloning/setAdminsFromURL.js +5 -5
  89. package/scripts/cloning/setExternalIdsFromURL.js +3 -3
  90. package/scripts/countCommunity.js +11 -11
  91. package/scripts/countCommunityUsers.js +4 -4
  92. package/scripts/countDelayedNotifications.js +3 -3
  93. package/scripts/countGroup.js +11 -11
  94. package/scripts/countStuff.js +3 -3
  95. package/scripts/countUniqueVotersInAGroup.js +3 -3
  96. package/scripts/createInvitesAndShow.js +2 -2
  97. package/scripts/database/sync_database.js +2 -2
  98. package/scripts/database/sync_dev_database.js +3 -3
  99. package/scripts/debugNotifications.js +5 -5
  100. package/scripts/deleteAllNewsFeeds.js +2 -2
  101. package/scripts/deleteCategory.js +1 -1
  102. package/scripts/deleteOldAppActivities.js +5 -4
  103. package/scripts/deletePostContactDataForCommunity.js +5 -4
  104. package/scripts/destroy/destroy_all_but_one_domain.js +59 -59
  105. package/scripts/displayAuthorForPost.js +1 -1
  106. package/scripts/domains/createDomain.js +5 -4
  107. package/scripts/domains/importDomainsFromXls.js +7 -6
  108. package/scripts/endorsementFraudDetection/analyseEndorsementsForCommunity.js +2 -2
  109. package/scripts/endorsementFraudDetection/bulkDeleteDuplicateEndorsmentsFromUrl.js +9 -9
  110. package/scripts/exportAllStatusChanges.js +5 -5
  111. package/scripts/exportEndorsementsForCommunity.js +5 -5
  112. package/scripts/exportPointQualitiesForCommunity.js +5 -5
  113. package/scripts/exportPostsAndPointsForCommunity.js +9 -9
  114. package/scripts/exportPostsDataSetForDomain.js +12 -12
  115. package/scripts/exportPostsForGroup.js +7 -7
  116. package/scripts/exportRatingsForPost.js +2 -2
  117. package/scripts/exportUserEndorsementsWithUserAnalysis.js +6 -6
  118. package/scripts/exportUsersForCommunity.js +3 -3
  119. package/scripts/exportUsersForDomain.js +3 -3
  120. package/scripts/exportUsersForGroup.js +3 -3
  121. package/scripts/exports/ratingDistribution.js +6 -6
  122. package/scripts/exports/whoEndorsedWhatByCommunity.js +2 -2
  123. package/scripts/findUnusedClientImports.js +2 -2
  124. package/scripts/fixAllPostPointCounts.js +1 -1
  125. package/scripts/fixAnonNotificationsSettings.js +5 -5
  126. package/scripts/fixCountKopavogur.js +1 -1
  127. package/scripts/fixEndorsementsAfterCopyPostToGroup.js +10 -10
  128. package/scripts/fixExternalUserId.js +2 -2
  129. package/scripts/fixGroupAccess.js +3 -3
  130. package/scripts/fixGroupIdeasAndPointsCount.js +2 -2
  131. package/scripts/fixNotificationSettings.js +4 -4
  132. package/scripts/fixSurveyRadioBakedInSubCodes.js +6 -6
  133. package/scripts/fixWrongUserIdForStatusUpdates.js +6 -5
  134. package/scripts/gallery/exportGalleryData.js +2 -2
  135. package/scripts/gallery/importGalleryForCommunity.js +14 -14
  136. package/scripts/gallery/readJsonAndDownloadImagesVersion2.js +6 -6
  137. package/scripts/gallery/refreshAcApiPostIdsForCommunity.js +5 -5
  138. package/scripts/genderAnalysis.js +10 -10
  139. package/scripts/genderAnalysisByStatus.js +4 -4
  140. package/scripts/importAllLocalesFromLocalFolders.js +7 -7
  141. package/scripts/importDomain.js +131 -131
  142. package/scripts/keys/addOidcToDomain.cjs +10 -9
  143. package/scripts/landUseGame/export3Ddata.js +15 -15
  144. package/scripts/listLanguagesForGroup.js +6 -6
  145. package/scripts/loadTestCreateDummyContentForGroup.js +2 -2
  146. package/scripts/makeRecursiveMapData.js +4 -4
  147. package/scripts/mapping/community_map_csv.js +5 -5
  148. package/scripts/moveCommunityToDomain.js +3 -3
  149. package/scripts/moveGroupToCommunity.js +3 -3
  150. package/scripts/movePostToGroup.js +5 -5
  151. package/scripts/movePostsToGroupsRecountGroupFromUrl.js +6 -6
  152. package/scripts/oldMovePostToGroup.js +9 -9
  153. package/scripts/processCsvForPdfUrls.js +2 -2
  154. package/scripts/processCsvForTranslationAndToxicity.js +10 -10
  155. package/scripts/recount/recount_recursive_communities.js +6 -6
  156. package/scripts/recountALLCommunityGroupCounts.js +4 -4
  157. package/scripts/recountAll.js +3 -3
  158. package/scripts/recountCommunitesFromUrl.js +3 -3
  159. package/scripts/recountCommunity.js +2 -2
  160. package/scripts/recountGroup.js +5 -5
  161. package/scripts/recountGroupNoUserChange.js +5 -5
  162. package/scripts/resetAllEndorsementsForGroup.js +3 -3
  163. package/scripts/resetEnTranslationForGroup.js +5 -5
  164. package/scripts/setAdminOnAll.cjs +15 -14
  165. package/scripts/setDomainAdmin.cjs +7 -6
  166. package/scripts/setDomainLocales.js +2 -2
  167. package/scripts/setEarlQuestionIdOnGroup.cjs +5 -4
  168. package/scripts/setLanguageOnGroupCommunitesFromUrl.js +3 -3
  169. package/scripts/setMemberOfAll.js +14 -14
  170. package/scripts/setNewUserForContentOfCommunity.js +9 -9
  171. package/scripts/setOfficialStatusOnAllPostsForCommunity.js +1 -1
  172. package/scripts/setUserOnAll.js +14 -14
  173. package/scripts/showCategoryForGroup.js +1 -1
  174. package/scripts/showOldActivityTypes.js +3 -3
  175. package/scripts/showPostsMissingCategoryForGroup.js +2 -2
  176. package/scripts/showStatuses.js +4 -4
  177. package/scripts/showUniqueVotersInCommunity.js +4 -4
  178. package/scripts/showUserAgentsAndIpsForEmails.js +4 -4
  179. package/scripts/simpleExportForGroupsForCommunity.js +5 -5
  180. package/scripts/simpleExportForPointsForCommunity.js +5 -5
  181. package/scripts/simpleExportForPostsForCommunity.js +5 -5
  182. package/scripts/testForEndorsments.js +4 -4
  183. package/scripts/undeleteGroupAndAllContent.js +8 -8
  184. package/scripts/undeletePost.js +7 -7
  185. package/scripts/unlinkSsn.js +4 -4
  186. package/scripts/updateFromAlthingi.js +8 -8
  187. package/scripts/users/createUserAddDomain.js +6 -5
  188. package/scripts/users/importUsersForDomainsFromXls.js +4 -3
  189. package/scripts/users/listDomainUsersWithSsn.js +6 -5
  190. package/scripts/users/removeUserFromDomain.js +6 -5
  191. package/scripts/users/updatePasswordFromSsn.js +5 -4
  192. package/scripts/users/updateUserSsnFromEmail.js +5 -4
  193. package/services/controllers/activities.cjs +1 -1
  194. package/services/controllers/news_feeds.cjs +1 -1
  195. package/services/controllers/notifications.cjs +1 -1
  196. package/services/controllers/recommendations.cjs +1 -1
  197. package/services/engine/allOurIdeas/aiHelper.js +10 -9
  198. package/services/engine/analytics/export_anon_community_activities.js +3 -3
  199. package/services/engine/analytics/importer.js +10 -10
  200. package/services/engine/analytics/plausible/manager.cjs +4 -4
  201. package/services/engine/analytics/statsCalc.cjs +1 -1
  202. package/services/engine/analytics/utils.cjs +11 -10
  203. package/services/engine/marketing/campaign.cjs +1 -0
  204. package/services/engine/moderation/fraud/CreateFraudAuditReport.cjs +2 -1
  205. package/services/engine/moderation/fraud/FraudBase.cjs +3 -2
  206. package/services/engine/moderation/fraud/FraudDeleteBase.cjs +5 -4
  207. package/services/engine/moderation/fraud/FraudGetBase.cjs +2 -1
  208. package/services/engine/moderation/fraud/FraudGetEndorsements.cjs +2 -1
  209. package/services/engine/moderation/fraud/FraudGetPointQualities.cjs +2 -1
  210. package/services/engine/moderation/fraud/FraudGetPoints.cjs +2 -1
  211. package/services/engine/moderation/fraud/FraudGetPosts.cjs +2 -1
  212. package/services/engine/moderation/fraud/FraudGetRatings.cjs +2 -1
  213. package/services/engine/moderation/fraud/FraudScannerNotifier.cjs +10 -9
  214. package/services/engine/moderation/get_moderation_items.cjs +1 -1
  215. package/services/engine/moderation/image_labeling/ImageLabelingBase.cjs +1 -1
  216. package/services/engine/moderation/process_moderation_items.cjs +1 -1
  217. package/services/engine/moderation/toxicity_analysis.cjs +1 -1
  218. package/services/engine/news_feeds/generate_dynamically.cjs +1 -1
  219. package/services/engine/news_feeds/generate_from_notifications.cjs +1 -1
  220. package/services/engine/notifications/emails_utils.cjs +2 -2
  221. package/services/engine/notifications/generate_point_notifications.cjs +1 -1
  222. package/services/engine/notifications/generate_post_notifications.cjs +1 -1
  223. package/services/engine/notifications/process_delayed_notifications.cjs +38 -38
  224. package/services/engine/notifications/process_general_notifications.cjs +1 -0
  225. package/services/engine/old/exporters/categories_dataset.js +11 -11
  226. package/services/engine/old/exporters/sentiment_dataset.js +12 -12
  227. package/services/engine/recommendations/events_importer.cjs +5 -5
  228. package/services/engine/recommendations/events_manager.cjs +1 -1
  229. package/services/engine/reports/add_points_to_sheet.cjs +3 -2
  230. package/services/engine/reports/commonUtils.js +3 -2
  231. package/services/engine/reports/common_utils.cjs +8 -8
  232. package/services/engine/reports/docx_group_report.cjs +1 -1
  233. package/services/engine/reports/xlsAllOurIdeasExport.js +16 -15
  234. package/services/engine/reports/xls_community_users_report.cjs +2 -2
  235. package/services/engine/reports/xls_group_report.cjs +1 -1
  236. package/services/llms/baseChatBot.js +12 -11
  237. package/services/llms/imageGeneration/chatGptImageGenerator.js +3 -2
  238. package/services/llms/imageGeneration/collectionImageGenerator.js +7 -6
  239. package/services/llms/imageGeneration/dalleImageGenerator.js +6 -5
  240. package/services/llms/imageGeneration/fluxImageGenerator.js +5 -4
  241. package/services/llms/imageGeneration/imageProcessorService.js +2 -1
  242. package/services/llms/imageGeneration/imagenImageGenerator.js +8 -7
  243. package/services/llms/imageGeneration/s3Service.js +12 -11
  244. package/services/llms/llmTranslation.js +30 -29
  245. package/services/models/ac_activity.cjs +1 -1
  246. package/services/models/ac_notification.cjs +1 -1
  247. package/services/models/ac_translation_cache.cjs +11 -11
  248. package/services/scripts/analytics/setup_all_plausible_goals.cjs +3 -2
  249. package/services/scripts/fix_old_delayed_notifications.js +3 -3
  250. package/services/scripts/kue_status.js +11 -11
  251. package/services/scripts/kue_watch_stuck_jobs.js +6 -6
  252. package/services/scripts/translation_clear_language.js +21 -21
  253. package/services/scripts/translation_delete.js +4 -4
  254. package/services/scripts/translation_replace_text_from_url.js +4 -4
  255. package/services/scripts/translation_update.js +4 -4
  256. package/services/scripts/translations_list.js +5 -5
  257. package/services/utils/airbrake.cjs +2 -1
  258. package/services/utils/redisConnection.cjs +6 -5
  259. package/services/utils/translation_helpers.cjs +3 -2
  260. package/services/utils/updateAllLocalesFromEn.js +20 -19
  261. package/services/utils/updateLocaleFolders.js +7 -6
  262. package/services/workers/activity.cjs +1 -1
  263. package/services/workers/anonymizations.cjs +1 -1
  264. package/services/workers/bulk_status_update.cjs +2 -2
  265. package/services/workers/delayed_jobs.cjs +1 -1
  266. package/services/workers/deletions.cjs +1 -1
  267. package/services/workers/email.cjs +1 -1
  268. package/services/workers/fraud_management.cjs +3 -3
  269. package/services/workers/generativeAi.js +6 -5
  270. package/services/workers/main.cjs +1 -1
  271. package/services/workers/marketing.cjs +1 -1
  272. package/services/workers/moderation.cjs +1 -1
  273. package/services/workers/notification_delivery.cjs +1 -1
  274. package/services/workers/notification_news_feed.cjs +1 -1
  275. package/services/workers/queue.cjs +2 -2
  276. package/services/workers/recount.cjs +1 -1
  277. package/services/workers/reports.cjs +1 -1
  278. package/services/workers/similarities.cjs +4 -2
  279. package/services/workers/speech_to_text.cjs +1 -1
  280. package/utils/airbrake.cjs +2 -1
  281. package/utils/cjsCodeReview.js +7 -6
  282. package/utils/community_mapping_tools.cjs +3 -2
  283. package/utils/copy_utils.cjs +32 -31
  284. package/utils/export_utils.cjs +7 -7
  285. package/utils/generateDocumentation.js +10 -9
  286. package/utils/logger.cjs +2 -23
  287. package/utils/logger.d.cts +1 -1
  288. package/utils/loggerAirbrakeTransport.cjs +52 -0
  289. package/utils/loggerAirbrakeTransport.d.cts +15 -0
  290. package/utils/loggerAirbrakeTransportTs.d.ts +15 -0
  291. package/utils/loggerAirbrakeTransportTs.js +45 -0
  292. package/utils/loggerCore.cjs +29 -0
  293. package/utils/loggerCore.d.cts +2 -0
  294. package/utils/loggerCoreTs.d.ts +2 -0
  295. package/utils/loggerCoreTs.js +23 -0
  296. package/utils/loggerTs.d.ts +1 -2
  297. package/utils/loggerTs.js +2 -25
  298. package/utils/manifest_generator.cjs +1 -0
  299. package/utils/recount_utils.cjs +6 -5
  300. package/utils/seedModels.js +50 -49
  301. package/utils/sitemap_generator.cjs +4 -4
  302. package/utils/ypLanguages.js +2 -2
  303. package/webSockets.js +8 -7
  304. package/services/utils/logger.cjs +0 -25
  305. package/services/utils/logger.d.cts +0 -2
  306. package/src/agents/assistants/assistant.d.ts +0 -156
  307. package/src/controllers/audios.d.ts +0 -5
  308. package/src/controllers/categories.d.ts +0 -5
  309. package/src/controllers/communities.d.ts +0 -5
  310. package/src/controllers/domains.d.ts +0 -5
  311. package/src/controllers/groups.d.ts +0 -5
  312. package/src/controllers/images.d.ts +0 -5
  313. package/src/controllers/points.d.ts +0 -5
  314. package/src/controllers/posts.d.ts +0 -5
  315. package/src/controllers/ratings.d.ts +0 -5
  316. package/src/controllers/users.d.ts +0 -5
  317. package/src/controllers/videos.d.ts +0 -5
  318. package/src/models/index.d.ts +0 -84
  319. package/src/services/controllers/activities.d.ts +0 -5
  320. package/src/services/controllers/notifications.d.ts +0 -5
  321. package/src/utils/copy_utils.d.ts +0 -4
  322. package/src/utils/manifest_generator.d.ts +0 -18
@@ -5,6 +5,7 @@ import crypto from "crypto";
5
5
  import bcrypt from "bcrypt";
6
6
  import { Sequelize, DataTypes, Op } from "sequelize";
7
7
  import { sequelize as psSequelize } from "@policysynth/agents/dbModels/index.js";
8
+ import log from "./loggerTs.js";
8
9
  const __filename = fileURLToPath(import.meta.url);
9
10
  const __dirname = path.dirname(__filename);
10
11
  // PolicySynth Models
@@ -53,7 +54,7 @@ const mainOperatorsAliases = {
53
54
  };
54
55
  if (env === "production") {
55
56
  if (!process.env.DATABASE_URL) {
56
- console.error("DATABASE_URL environment variable is not set for production.");
57
+ log.error("DATABASE_URL environment variable is not set for production.");
57
58
  process.exit(1);
58
59
  }
59
60
  if (process.env.DISABLE_PG_SSL) {
@@ -84,7 +85,7 @@ else {
84
85
  !process.env.YP_DEV_DATABASE_PASSWORD ||
85
86
  !process.env.YP_DEV_DATABASE_HOST ||
86
87
  !process.env.YP_DEV_DATABASE_PORT) {
87
- console.error("One or more YP_DEV_DATABASE environment variables are not set for development.");
88
+ log.error("One or more YP_DEV_DATABASE environment variables are not set for development.");
88
89
  process.exit(1);
89
90
  }
90
91
  try {
@@ -98,12 +99,12 @@ else {
98
99
  ssl: false,
99
100
  rejectUnauthorized: false,
100
101
  },
101
- logging: false, // Set to console.log for verbose output during seeding
102
+ logging: false, // Set to log.info for verbose output during seeding
102
103
  operatorsAliases: mainOperatorsAliases,
103
104
  });
104
105
  }
105
106
  catch (error) {
106
- console.error("Error initializing Sequelize for development:", error);
107
+ log.error("Error initializing Sequelize for development:", error);
107
108
  process.exit(1);
108
109
  }
109
110
  }
@@ -174,21 +175,21 @@ async function createMainCompoundIndexes(sequelizeInstance, indexCommands) {
174
175
  for (const command of indexCommands) {
175
176
  try {
176
177
  await sequelizeInstance.query(command);
177
- console.log(`Successfully created main index: ${command.substring(0, 100)}...`);
178
+ log.info(`Successfully created main index: ${command.substring(0, 100)}...`);
178
179
  }
179
180
  catch (error) {
180
181
  if (error.message && error.message.indexOf("already exists") > -1) {
181
- // console.log(`Main index already exists: ${command.substring(0,100)}...`);
182
+ // log.info(`Main index already exists: ${command.substring(0,100)}...`);
182
183
  }
183
184
  else {
184
- console.error(`Error creating main index with command: ${command}`);
185
- console.error(error.message);
185
+ log.error(`Error creating main index with command: ${command}`);
186
+ log.error(error.message);
186
187
  }
187
188
  }
188
189
  }
189
190
  }
190
191
  async function syncMainDatabase() {
191
- console.log("Starting main database synchronization...");
192
+ log.info("Starting main database synchronization...");
192
193
  const modelsPath = path.join(__dirname, "../models");
193
194
  const modelFiles = fs
194
195
  .readdirSync(modelsPath)
@@ -207,7 +208,7 @@ async function syncMainDatabase() {
207
208
  mainDb[model.name] = model;
208
209
  }
209
210
  catch (err) {
210
- console.error(`Error importing model ${file}:`, err);
211
+ log.error(`Error importing model ${file}:`, err);
211
212
  throw err; // Re-throw to stop the process if a model fails to load
212
213
  }
213
214
  }
@@ -229,13 +230,13 @@ async function syncMainDatabase() {
229
230
  mainDb[model.name] = model;
230
231
  }
231
232
  catch (err) {
232
- console.error(`Error importing services model ${file}:`, err);
233
+ log.error(`Error importing services model ${file}:`, err);
233
234
  throw err; // Re-throw to stop the process if a model fails to load
234
235
  }
235
236
  }
236
237
  }
237
238
  else {
238
- console.warn(`Directory not found, skipping services models: ${acModelsPath}`);
239
+ log.warn(`Directory not found, skipping services models: ${acModelsPath}`);
239
240
  }
240
241
  Object.keys(mainDb).forEach((modelName) => {
241
242
  if (mainDb[modelName] &&
@@ -245,50 +246,50 @@ async function syncMainDatabase() {
245
246
  });
246
247
  // This script is intended for creating a new database, so always force sync.
247
248
  await mainSequelize.sync({ force: true });
248
- console.log("Main database schema forcefully synchronized (tables dropped and recreated).");
249
+ log.info("Main database schema forcefully synchronized (tables dropped and recreated).");
249
250
  await createMainCompoundIndexes(mainSequelize, mainCompoundIndexCommands);
250
251
  if (mainDb.Post && typeof mainDb.Post.addFullTextIndex === "function") {
251
- console.log("Adding full text index for Post model...");
252
+ log.info("Adding full text index for Post model...");
252
253
  await mainDb.Post.addFullTextIndex();
253
- console.log("Full text index for Post model added.");
254
+ log.info("Full text index for Post model added.");
254
255
  }
255
256
  else {
256
- console.warn("Post model or addFullTextIndex method not found in mainDb. Skipping full text index.");
257
+ log.warn("Post model or addFullTextIndex method not found in mainDb. Skipping full text index.");
257
258
  }
258
- console.log("Main database synchronization finished.");
259
+ log.info("Main database synchronization finished.");
259
260
  }
260
261
  async function syncPolicySynthDatabase() {
261
- console.log("Starting PolicySynth database synchronization...");
262
+ log.info("Starting PolicySynth database synchronization...");
262
263
  try {
263
264
  // This script is intended for creating a new database, so always force sync.
264
265
  await psSequelize.sync({ force: false });
265
- console.log("PolicySynth database schema forcefully synchronized (tables dropped and recreated).");
266
- console.log("Associating PolicySynth models...");
266
+ log.info("PolicySynth database schema forcefully synchronized (tables dropped and recreated).");
267
+ log.info("Associating PolicySynth models...");
267
268
  for (const modelName of Object.keys(psModels)) {
268
269
  const model = psModels[modelName];
269
270
  if (model && typeof model.associate === "function") {
270
271
  model.associate(psSequelize.models);
271
272
  }
272
273
  }
273
- console.log("PolicySynth models associated successfully.");
274
+ log.info("PolicySynth models associated successfully.");
274
275
  }
275
276
  catch (error) {
276
- console.error("Error during PolicySynth database synchronization:", error);
277
+ log.error("Error during PolicySynth database synchronization:", error);
277
278
  process.exit(1);
278
279
  }
279
- console.log("PolicySynth database synchronization finished.");
280
+ log.info("PolicySynth database synchronization finished.");
280
281
  }
281
282
  async function seedAllModels() {
282
- console.log("--- Starting Database Seeding and Synchronization ---");
283
- console.log("NOTE: This script will forcefully synchronize the database (drop and recreate tables).");
284
- console.log("NODE_ENV:", env);
283
+ log.info("--- Starting Database Seeding and Synchronization ---");
284
+ log.info("NOTE: This script will forcefully synchronize the database (drop and recreate tables).");
285
+ log.info("NODE_ENV:", env);
285
286
  // The following environment variables are logged for informational purposes,
286
287
  // but this script will always force database synchronization.
287
- console.log("FORCE_DB_SYNC (ignored, always true for this script):", process.env.FORCE_DB_SYNC);
288
- console.log("FORCE_DB_INDEX_SYNC (ignored, indexes created after forced sync):", process.env.FORCE_DB_INDEX_SYNC);
288
+ log.info("FORCE_DB_SYNC (ignored, always true for this script):", process.env.FORCE_DB_SYNC);
289
+ log.info("FORCE_DB_INDEX_SYNC (ignored, indexes created after forced sync):", process.env.FORCE_DB_INDEX_SYNC);
289
290
  const args = process.argv.slice(2);
290
291
  if (args.length < 2) {
291
- console.error("Usage: node <script_path> <username/email> <password>");
292
+ log.error("Usage: node <script_path> <username/email> <password>");
292
293
  process.exit(1);
293
294
  }
294
295
  const userEmail = args[0].toLowerCase();
@@ -301,31 +302,31 @@ async function seedAllModels() {
301
302
  !process.env.YP_DEV_DATABASE_PASSWORD ||
302
303
  !process.env.YP_DEV_DATABASE_HOST ||
303
304
  !process.env.YP_DEV_DATABASE_PORT) {
304
- console.error("Missing YP_DEV_DATABASE environment variables for main database in non-production.");
305
+ log.error("Missing YP_DEV_DATABASE environment variables for main database in non-production.");
305
306
  process.exit(1);
306
307
  }
307
308
  }
308
309
  else {
309
310
  if (!process.env.DATABASE_URL) {
310
- console.error("Missing DATABASE_URL for production environment.");
311
+ log.error("Missing DATABASE_URL for production environment.");
311
312
  process.exit(1);
312
313
  }
313
314
  }
314
315
  try {
315
316
  await syncMainDatabase();
316
317
  await syncPolicySynthDatabase();
317
- console.log("--- Databases Synchronized ---");
318
- console.log("--- Creating User and Domain ---");
318
+ log.info("--- Databases Synchronized ---");
319
+ log.info("--- Creating User and Domain ---");
319
320
  if (!mainDb.User) {
320
- console.error("User model (mainDb.User) not found after sync.");
321
+ log.error("User model (mainDb.User) not found after sync.");
321
322
  process.exit(1);
322
323
  }
323
324
  if (!mainDb.Domain) {
324
- console.error("Domain model (mainDb.Domain) not found after sync.");
325
+ log.error("Domain model (mainDb.Domain) not found after sync.");
325
326
  process.exit(1);
326
327
  }
327
328
  // Create User
328
- console.log(`Attempting to create user: ${userEmail}`);
329
+ log.info(`Attempting to create user: ${userEmail}`);
329
330
  const newUser = mainDb.User.build({
330
331
  email: userEmail,
331
332
  name: userName, // Or a dedicated name argument if preferred
@@ -339,10 +340,10 @@ async function seedAllModels() {
339
340
  const salt = bcrypt.genSaltSync(10);
340
341
  newUser.encrypted_password = bcrypt.hashSync(userPassword, salt);
341
342
  await newUser.save();
342
- console.log(`User ${newUser.email} created with ID: ${newUser.id}`);
343
+ log.info(`User ${newUser.email} created with ID: ${newUser.id}`);
343
344
  // Create Domain
344
345
  const randomDomainName = crypto.randomBytes(8).toString("hex") + ".seed.local"; // Shorter and identifiable
345
- console.log(`Attempting to create domain: ${randomDomainName} for user ${newUser.id}`);
346
+ log.info(`Attempting to create domain: ${randomDomainName} for user ${newUser.id}`);
346
347
  const newDomain = mainDb.Domain.build({
347
348
  name: `Default Domain for ${userName}`,
348
349
  domain_name: randomDomainName,
@@ -363,39 +364,39 @@ async function seedAllModels() {
363
364
  // deleted: false, (already defaults to false)
364
365
  });
365
366
  await newDomain.save();
366
- console.log(`Domain ${newDomain.name} created with ID: ${newDomain.id} and domain_name: ${newDomain.domain_name}`);
367
+ log.info(`Domain ${newDomain.name} created with ID: ${newDomain.id} and domain_name: ${newDomain.domain_name}`);
367
368
  // Associate User with Domain
368
369
  if (typeof newDomain.addDomainUsers === "function") {
369
370
  await newDomain.addDomainUsers(newUser);
370
- console.log(`User ${newUser.email} added to domain ${newDomain.domain_name} as a user.`);
371
+ log.info(`User ${newUser.email} added to domain ${newDomain.domain_name} as a user.`);
371
372
  }
372
373
  else {
373
- console.warn(`newDomain.addDomainUsers is not a function. Skipping adding user to domain users.`);
374
+ log.warn(`newDomain.addDomainUsers is not a function. Skipping adding user to domain users.`);
374
375
  }
375
376
  if (typeof newDomain.addDomainAdmins === "function") {
376
377
  await newDomain.addDomainAdmins(newUser);
377
- console.log(`User ${newUser.email} added to domain ${newDomain.domain_name} as an admin.`);
378
+ log.info(`User ${newUser.email} added to domain ${newDomain.domain_name} as an admin.`);
378
379
  }
379
380
  else {
380
- console.warn(`newDomain.addDomainAdmins is not a function. Skipping adding user to domain admins.`);
381
+ log.warn(`newDomain.addDomainAdmins is not a function. Skipping adding user to domain admins.`);
381
382
  }
382
- console.log("--- User and Domain Creation Complete ---");
383
- console.log("--- All model seeding and synchronization complete. ---");
383
+ log.info("--- User and Domain Creation Complete ---");
384
+ log.info("--- All model seeding and synchronization complete. ---");
384
385
  process.exit(0);
385
386
  }
386
387
  catch (error) {
387
- console.error("Unhandled error during seeding process:", error);
388
+ log.error("Unhandled error during seeding process:", error);
388
389
  process.exit(1);
389
390
  }
390
391
  finally {
391
- console.log("Closing database connections...");
392
+ log.info("Closing database connections...");
392
393
  await mainSequelize.close();
393
394
  await psSequelize.close();
394
- console.log("Database connections closed.");
395
+ log.info("Database connections closed.");
395
396
  }
396
397
  }
397
398
  seedAllModels().catch((error) => {
398
- console.error("Fatal error running seedAllModels:", error);
399
+ log.error("Fatal error running seedAllModels:", error);
399
400
  process.exit(1);
400
401
  });
401
402
  export { seedAllModels }; // Export if you plan to import and run this elsewhere
@@ -49,7 +49,7 @@ var generateSitemap = async function (req, res) {
49
49
  cacheTime: 1,
50
50
  });
51
51
  let links = [];
52
- console.log(`generateSitemap ${domainName} ${community ? community.hostname : "noHostname"} `);
52
+ log.info(`generateSitemap ${domainName} ${community ? community.hostname : "noHostname"} `);
53
53
  async.series([
54
54
  function (seriesCallback) {
55
55
  if (community && wildCardDomainNames.indexOf(domainName) > -1) {
@@ -75,7 +75,7 @@ var generateSitemap = async function (req, res) {
75
75
  .then(function (communities) {
76
76
  _.forEach(communities, function (community) {
77
77
  if (!community) {
78
- console.error("No community found in sitemap generation");
78
+ log.error("No community found in sitemap generation");
79
79
  return;
80
80
  }
81
81
  const path = "/community/" + community.id;
@@ -145,7 +145,7 @@ var generateSitemap = async function (req, res) {
145
145
  .then(function (groups) {
146
146
  _.forEach(groups, function (group) {
147
147
  if (!group) {
148
- console.error("No group found in sitemap generation");
148
+ log.error("No group found in sitemap generation");
149
149
  return;
150
150
  }
151
151
  const path = "/group/" + group.id;
@@ -232,7 +232,7 @@ var generateSitemap = async function (req, res) {
232
232
  .then(function (posts) {
233
233
  _.forEach(posts, function (post) {
234
234
  if (!post) {
235
- console.error("No post found in sitemap generation");
235
+ log.error("No post found in sitemap generation");
236
236
  return;
237
237
  }
238
238
  links.push({ url: "/post/" + post.id });
@@ -13,7 +13,7 @@ export class YpLanguages {
13
13
  allLanguages.push(language);
14
14
  }
15
15
  else {
16
- //console.log("additionaLanguage already exists:", language.code);
16
+ //log.info("additionaLanguage already exists:", language.code);
17
17
  }
18
18
  });
19
19
  YpLanguages.googleTranslateLanguages.map((language) => {
@@ -21,7 +21,7 @@ export class YpLanguages {
21
21
  allLanguages.push(language);
22
22
  }
23
23
  else {
24
- //console.log("googleTranslateLanguages already exists:", language.code);
24
+ //log.info("googleTranslateLanguages already exists:", language.code);
25
25
  }
26
26
  });
27
27
  return allLanguages;
package/webSockets.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { WebSocketServer } from "ws";
2
2
  import { v4 as uuidv4 } from "uuid";
3
+ import log from "./utils/loggerTs.js";
3
4
  /**
4
5
  * WebSocketsManager:
5
6
  * - Maintains a Map of clientId -> WebSocket for local ownership
@@ -34,15 +35,15 @@ export class WebSocketsManager {
34
35
  ws.on("pong", () => {
35
36
  ws.isAlive = true;
36
37
  });
37
- console.log(`WebSockets: New WebSocket connection: clientId ${clientId}`);
38
+ log.info(`WebSockets: New WebSocket connection: clientId ${clientId}`);
38
39
  ws.send(JSON.stringify({ clientId }));
39
40
  ws.on("close", async () => {
40
41
  this.wsClients.delete(clientId);
41
- console.log(`WebSockets: WebSocket closed: clientId ${clientId}`);
42
+ log.info(`WebSockets: WebSocket closed: clientId ${clientId}`);
42
43
  });
43
44
  ws.on("error", (err) => {
44
45
  this.wsClients.delete(clientId);
45
- console.error(`WebSockets: WebSocket error with clientId ${clientId}:`, err);
46
+ log.error(`WebSockets: WebSocket error with clientId ${clientId}:`, err);
46
47
  });
47
48
  });
48
49
  }
@@ -51,14 +52,14 @@ export class WebSocketsManager {
51
52
  * we assume it's a stale connection and terminate it.
52
53
  */
53
54
  startPingCheck() {
54
- console.log("WebSockets: Starting ping check");
55
+ log.info("WebSockets: Starting ping check");
55
56
  this.pingInterval = setInterval(() => {
56
57
  if (this.ws.clients.size > 0) {
57
- console.log(`WebSockets: Pinging clients ${this.ws.clients.size}`);
58
+ log.info(`WebSockets: Pinging clients ${this.ws.clients.size}`);
58
59
  this.ws.clients.forEach((socket) => {
59
60
  const wsAny = socket;
60
61
  if (wsAny.isAlive === false) {
61
- console.log("WebSockets: Terminating unresponsive client");
62
+ log.info("WebSockets: Terminating unresponsive client");
62
63
  return socket.terminate();
63
64
  }
64
65
  wsAny.isAlive = false;
@@ -68,7 +69,7 @@ export class WebSocketsManager {
68
69
  }, 30000);
69
70
  // If the server closes the entire WebSocketServer
70
71
  this.ws.on("close", () => {
71
- console.log("WebSockets: WebSocket closed");
72
+ log.info("WebSockets: WebSocket closed");
72
73
  if (this.pingInterval) {
73
74
  clearInterval(this.pingInterval);
74
75
  }
@@ -1,25 +0,0 @@
1
- "use strict";
2
- var bunyan = require('bunyan');
3
- var PrettyStream = require('bunyan-prettystream');
4
- var logger;
5
- if (process.env.USE_BUNYAN_LOGGER && process.env.NODE_ENV != 'production') {
6
- var prettyStdOut = new PrettyStream({ useColor: true });
7
- prettyStdOut.pipe(process.stdout);
8
- logger = bunyan.createLogger({
9
- name: 'your-priorities',
10
- streams: [{
11
- level: 'debug',
12
- type: 'raw',
13
- stream: prettyStdOut
14
- }]
15
- });
16
- }
17
- else {
18
- if (process.env.USE_BUNYAN_LOGGER) {
19
- logger = bunyan.createLogger({ name: "your-priorities" });
20
- }
21
- else {
22
- logger = console;
23
- }
24
- }
25
- module.exports = logger;
@@ -1,2 +0,0 @@
1
- export = logger;
2
- declare var logger: any;
@@ -1,156 +0,0 @@
1
-
2
- interface UnsubscribeResult {
3
- success: boolean;
4
- error?: string;
5
- subscriptionId?: number;
6
- }
7
-
8
- interface SubscribeResult {
9
- success: boolean;
10
- error?: string;
11
- plan?: YpSubscriptionPlanAttributes;
12
- subscription?: YpSubscriptionAttributes;
13
- }
14
-
15
- interface AssistantAgent {
16
- subscriptionId: number;
17
- subscriptionPlanId: number;
18
- name: string;
19
- description: string;
20
- imageUrl: string;
21
- isRunning: boolean;
22
- }
23
-
24
- interface AssistantAgentRun {
25
- runId: number;
26
- agentProductId: number;
27
- agentRunId: number;
28
- status: string;
29
- agentName: string;
30
- workflow: any;
31
- subscriptionId: number;
32
- }
33
-
34
- interface AssistantAgentSubscriptionStatus {
35
- availableSubscriptions: Array<YpSubscriptionAttributes>;
36
- runningAgents: Array<AssistantAgentRun>;
37
- systemStatus: {
38
- healthy: boolean;
39
- lastUpdated: Date;
40
- error?: string;
41
- };
42
- }
43
-
44
- interface AssistantAgentBundle {
45
- agentBundleId: number;
46
- name: string;
47
- description: string;
48
- imageUrl: string;
49
- }
50
-
51
- interface AssistantAgentPlan {
52
- subscriptionPlanId: number;
53
- name: string;
54
- type: YpSubscriptionPlanType;
55
- description: string;
56
- imageUrl: string;
57
- price?: number;
58
- currency?: string;
59
- maxRunsPerCycle?: number;
60
- }
61
-
62
- interface AssistantAgentPlanStatus {
63
- availablePlans: Array<AssistantAgentPlan>;
64
- availableBundle: AssistantAgentBundle | string;
65
- systemStatus: {
66
- healthy: boolean;
67
- lastUpdated: Date;
68
- error?: string;
69
- };
70
- }
71
-
72
- interface ToolClientEvent {
73
- name: YpAssistantMessageType;
74
- details: any;
75
- }
76
-
77
- interface ToolClientEventUiClick {
78
- name: "ui_click";
79
- details: YpAssistantUiClickTypes;
80
- }
81
-
82
- interface ToolExecutionResult<T = unknown> {
83
- success: boolean;
84
- data?: T;
85
- html?: string;
86
- uniqueToken?: string;
87
- clientEvents?: ToolClientEvent[];
88
- error?: string;
89
- metadata?: Record<string, unknown>;
90
- }
91
-
92
- /**
93
- * Enhanced AssistantChatbotTool interface with result type
94
- */
95
- interface AssistantChatbotTool {
96
- name: string;
97
- description: string;
98
- type?: string;
99
- parameters: ToolDefinition["parameters"];
100
- handler: (params: any) => Promise<ToolExecutionResult>;
101
- resultSchema?: ToolDefinition["parameters"];
102
- }
103
-
104
- /**
105
- * Message format for tool results
106
- */
107
- interface ToolResponseMessage {
108
- role: "tool";
109
- content: string;
110
- tool_call_id: string;
111
- name: string;
112
- }
113
-
114
- interface ToolCall {
115
- id: string;
116
- name: string;
117
- arguments: string;
118
- startTime?: number; // For timeout tracking
119
- }
120
-
121
- interface AssistantChatbotMode {
122
- name: YpAssistantMode;
123
- description: string;
124
- systemPrompt: string;
125
- tools: AssistantChatbotTool[];
126
- routingRules?: string[];
127
- allowedTransitions?: YpAssistantMode[];
128
- cleanup?: () => Promise<void>;
129
- }
130
-
131
- interface YpBaseAssistantMemoryData extends YpBaseChatBotMemoryData {
132
- redisKey: string;
133
- currentMode: YpAssistantMode;
134
- currentUser?: YpUserData;
135
- haveShownLoginWidget?: boolean;
136
- haveShownConfigurationWidget?: boolean;
137
- currentAgentStatus?: {
138
- subscriptionPlanId: number;
139
- activeAgentRunId?: number;
140
- subscriptionId: number | null;
141
- subscriptionState: YpAssistantAgentSubscriptionState;
142
- configurationState: YpAssistantAgentConfigurationState;
143
- };
144
-
145
- allChatLogs?: YpSimpleChatLog[];
146
-
147
- loginState?: YpAssistantLoginState;
148
-
149
- modeData?: AssistantModeData;
150
- modeHistory?: Array<{
151
- mode: YpAssistantMode;
152
- timestamp: number;
153
- reason?: string;
154
- }>;
155
- }
156
-
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/audios.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/categories.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/communities.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/domains.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/groups.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/images.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/points.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/posts.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/ratings.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/users.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }
@@ -1,5 +0,0 @@
1
- declare module '@yrpri/api/controllers/videos.cjs' {
2
- import { Router } from 'express';
3
- const router: Router;
4
- export default router;
5
- }