@yrpri/api 9.0.138 → 9.0.140

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 (320) 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.d.ts +2 -0
  19. package/agents/controllers/policySynthAgents.js +63 -31
  20. package/agents/managers/emailInvitesManager.js +4 -3
  21. package/agents/managers/newAiModelSetup.js +57 -132
  22. package/agents/managers/notificationAgentQueueManager.js +55 -54
  23. package/agents/managers/subscriptionManager.js +24 -23
  24. package/agents/models/agentProduct.js +2 -1
  25. package/agents/models/agentProductBoosterPurchase.js +2 -1
  26. package/agents/models/testData/createEvolyAgentProduct.js +7 -6
  27. package/agents/models/testData/old/updateAgentWorkflowConfiguration.js +5 -4
  28. package/agents/models/testData/updateAgentWorkflowConfiguration.js +5 -4
  29. package/agents/tools/setTemplateWorkflowCommunityId.js +6 -5
  30. package/app.d.ts +2 -1
  31. package/app.js +60 -34
  32. package/authorization.cjs +4 -4
  33. package/controllers/allOurIdeas.js +45 -44
  34. package/controllers/groups.cjs +4 -9
  35. package/controllers/images.cjs +8 -8
  36. package/controllers/index.cjs +1 -1
  37. package/controllers/points.cjs +1 -1
  38. package/controllers/posts.cjs +3 -3
  39. package/deleteUnwantedDeclerations.cjs +5 -5
  40. package/models/community.cjs +1 -1
  41. package/models/domain.cjs +7 -7
  42. package/models/image.cjs +2 -2
  43. package/models/index.cjs +8 -4
  44. package/models/post.cjs +10 -10
  45. package/models/user.cjs +1 -1
  46. package/models/video.cjs +4 -4
  47. package/package.json +5 -5
  48. package/scripts/addRatingUsersToGroup.js +1 -1
  49. package/scripts/addUserToOrganization.js +8 -8
  50. package/scripts/agents/changeModelForWorkflowGroupTemplate.js +13 -12
  51. package/scripts/agents/generateAgentWorkflowTemplateFromAgentClass.js +8 -7
  52. package/scripts/analyseRatingsForCommunity.js +2 -2
  53. package/scripts/analyzeAndFixBrokenPointUsers.js +3 -3
  54. package/scripts/analyzeEndorsementsByCountry.js +7 -7
  55. package/scripts/analyzePostsForCommunity.js +1 -1
  56. package/scripts/bulkStatusUpdates/listUpdates.js +2 -2
  57. package/scripts/bulkStatusUpdates/mergeLatestPostsToUpdate.js +5 -5
  58. package/scripts/bulkStatusUpdates/performUpdate.js +9 -9
  59. package/scripts/bulkStatusUpdates/performUpdateForGroup.cjs +11 -11
  60. package/scripts/bulkStatusUpdates/performUpdateForStatus.js +15 -15
  61. package/scripts/change/changeVideoAspectTo.js +3 -3
  62. package/scripts/change/setUseNewVersion.cjs +4 -4
  63. package/scripts/changeCommunityGroupcount.js +3 -3
  64. package/scripts/changeCommunityPostCount.js +3 -3
  65. package/scripts/changeGroupPostCount.js +3 -3
  66. package/scripts/changeLanguage.js +4 -4
  67. package/scripts/changeOfficalStatus.js +3 -3
  68. package/scripts/cleanups/deleteAnonNotifications.cjs +7 -7
  69. package/scripts/cleanups/deleteLinkGroupsWithDeletedCommunities.js +8 -8
  70. package/scripts/cleanups/deleteYearOldNotifications.cjs +5 -5
  71. package/scripts/cleanups/removeAllUsersFromHiddenPublicGroup.js +5 -5
  72. package/scripts/clearAllEndorsementInGroup.js +5 -5
  73. package/scripts/cloning/clearUsersForCommunitiesFromUrl.js +3 -3
  74. package/scripts/cloning/cloneFromUrlScript.js +4 -4
  75. package/scripts/cloning/cloneWBFromUrlScriptAndCreateLinks.js +6 -6
  76. package/scripts/cloning/cloneWBFromUrlScriptNoUsersOrPoints.js +6 -6
  77. package/scripts/cloning/cloneWBSerbianFromUrlScriptAndCreateLinks.js +6 -6
  78. package/scripts/cloning/copyCommunityConfigAndTranslationsFromURL.js +3 -3
  79. package/scripts/cloning/copyCommunityOneGroupToDomainNoUsersNoEndorsements.js +2 -2
  80. package/scripts/cloning/copyCommunityToDomainNoUsersNoEndorsements.js +2 -2
  81. package/scripts/cloning/copyCommunityToDomainWithEverything.js +2 -2
  82. package/scripts/cloning/copyCommunityToDomainWithOnlyGroups.js +3 -3
  83. package/scripts/cloning/copyGroupConfigAndTranslationsFromURL.js +3 -3
  84. package/scripts/cloning/copyPostToGroupOld.js +12 -12
  85. package/scripts/cloning/copyPostVideosFromURL.js +3 -3
  86. package/scripts/cloning/copyPostWithOutAnyVotingOrActivities.js +2 -2
  87. package/scripts/cloning/deepCloneSerbianWBFromUrlScriptAndCreateLinks.js +7 -7
  88. package/scripts/cloning/deepCloneWBFromUrlScriptAndCreateLinks.js +6 -6
  89. package/scripts/cloning/setAdminsFromURL.js +5 -5
  90. package/scripts/cloning/setExternalIdsFromURL.js +3 -3
  91. package/scripts/countCommunity.js +11 -11
  92. package/scripts/countCommunityUsers.js +4 -4
  93. package/scripts/countDelayedNotifications.js +3 -3
  94. package/scripts/countGroup.js +11 -11
  95. package/scripts/countStuff.js +3 -3
  96. package/scripts/countUniqueVotersInAGroup.js +3 -3
  97. package/scripts/createInvitesAndShow.js +2 -2
  98. package/scripts/database/sync_database.js +2 -2
  99. package/scripts/database/sync_dev_database.js +3 -3
  100. package/scripts/debugNotifications.js +5 -5
  101. package/scripts/deleteAllNewsFeeds.js +2 -2
  102. package/scripts/deleteCategory.js +1 -1
  103. package/scripts/deleteOldAppActivities.js +5 -4
  104. package/scripts/deletePostContactDataForCommunity.js +5 -4
  105. package/scripts/destroy/destroy_all_but_one_domain.js +59 -59
  106. package/scripts/displayAuthorForPost.js +1 -1
  107. package/scripts/domains/createDomain.js +5 -4
  108. package/scripts/domains/importDomainsFromXls.js +7 -6
  109. package/scripts/endorsementFraudDetection/analyseEndorsementsForCommunity.js +2 -2
  110. package/scripts/endorsementFraudDetection/bulkDeleteDuplicateEndorsmentsFromUrl.js +9 -9
  111. package/scripts/exportAllStatusChanges.js +5 -5
  112. package/scripts/exportEndorsementsForCommunity.js +5 -5
  113. package/scripts/exportPointQualitiesForCommunity.js +5 -5
  114. package/scripts/exportPostsAndPointsForCommunity.js +9 -9
  115. package/scripts/exportPostsDataSetForDomain.js +12 -12
  116. package/scripts/exportPostsForGroup.js +7 -7
  117. package/scripts/exportRatingsForPost.js +2 -2
  118. package/scripts/exportUserEndorsementsWithUserAnalysis.js +6 -6
  119. package/scripts/exportUsersForCommunity.js +3 -3
  120. package/scripts/exportUsersForDomain.js +3 -3
  121. package/scripts/exportUsersForGroup.js +3 -3
  122. package/scripts/exports/ratingDistribution.js +6 -6
  123. package/scripts/exports/whoEndorsedWhatByCommunity.js +2 -2
  124. package/scripts/findUnusedClientImports.js +2 -2
  125. package/scripts/fixAllPostPointCounts.js +1 -1
  126. package/scripts/fixAnonNotificationsSettings.js +5 -5
  127. package/scripts/fixCountKopavogur.js +1 -1
  128. package/scripts/fixEndorsementsAfterCopyPostToGroup.js +10 -10
  129. package/scripts/fixExternalUserId.js +2 -2
  130. package/scripts/fixGroupAccess.js +3 -3
  131. package/scripts/fixGroupIdeasAndPointsCount.js +2 -2
  132. package/scripts/fixNotificationSettings.js +4 -4
  133. package/scripts/fixSurveyRadioBakedInSubCodes.js +6 -6
  134. package/scripts/fixWrongUserIdForStatusUpdates.js +6 -5
  135. package/scripts/gallery/exportGalleryData.js +2 -2
  136. package/scripts/gallery/importGalleryForCommunity.js +14 -14
  137. package/scripts/gallery/readJsonAndDownloadImagesVersion2.js +6 -6
  138. package/scripts/gallery/refreshAcApiPostIdsForCommunity.js +5 -5
  139. package/scripts/genderAnalysis.js +10 -10
  140. package/scripts/genderAnalysisByStatus.js +4 -4
  141. package/scripts/importAllLocalesFromLocalFolders.js +7 -7
  142. package/scripts/importDomain.js +131 -131
  143. package/scripts/keys/addOidcToDomain.cjs +9 -9
  144. package/scripts/landUseGame/export3Ddata.js +15 -15
  145. package/scripts/listLanguagesForGroup.js +6 -6
  146. package/scripts/loadTestCreateDummyContentForGroup.js +2 -2
  147. package/scripts/makeRecursiveMapData.js +4 -4
  148. package/scripts/mapping/community_map_csv.js +5 -5
  149. package/scripts/moveCommunityToDomain.js +3 -3
  150. package/scripts/moveGroupToCommunity.js +3 -3
  151. package/scripts/movePostToGroup.js +5 -5
  152. package/scripts/movePostsToGroupsRecountGroupFromUrl.js +6 -6
  153. package/scripts/oldMovePostToGroup.js +9 -9
  154. package/scripts/processCsvForPdfUrls.js +2 -2
  155. package/scripts/processCsvForTranslationAndToxicity.js +10 -10
  156. package/scripts/recount/recount_recursive_communities.js +6 -6
  157. package/scripts/recountALLCommunityGroupCounts.js +4 -4
  158. package/scripts/recountAll.js +3 -3
  159. package/scripts/recountCommunitesFromUrl.js +3 -3
  160. package/scripts/recountCommunity.js +2 -2
  161. package/scripts/recountGroup.js +5 -5
  162. package/scripts/recountGroupNoUserChange.js +5 -5
  163. package/scripts/resetAllEndorsementsForGroup.js +3 -3
  164. package/scripts/resetEnTranslationForGroup.js +5 -5
  165. package/scripts/setAdminOnAll.cjs +14 -14
  166. package/scripts/setDomainAdmin.cjs +6 -6
  167. package/scripts/setDomainLocales.js +2 -2
  168. package/scripts/setEarlQuestionIdOnGroup.cjs +4 -4
  169. package/scripts/setLanguageOnGroupCommunitesFromUrl.js +3 -3
  170. package/scripts/setMemberOfAll.js +14 -14
  171. package/scripts/setNewUserForContentOfCommunity.js +9 -9
  172. package/scripts/setOfficialStatusOnAllPostsForCommunity.js +1 -1
  173. package/scripts/setUserOnAll.js +14 -14
  174. package/scripts/showCategoryForGroup.js +1 -1
  175. package/scripts/showOldActivityTypes.js +3 -3
  176. package/scripts/showPostsMissingCategoryForGroup.js +2 -2
  177. package/scripts/showStatuses.js +4 -4
  178. package/scripts/showUniqueVotersInCommunity.js +4 -4
  179. package/scripts/showUserAgentsAndIpsForEmails.js +4 -4
  180. package/scripts/simpleExportForGroupsForCommunity.js +5 -5
  181. package/scripts/simpleExportForPointsForCommunity.js +5 -5
  182. package/scripts/simpleExportForPostsForCommunity.js +5 -5
  183. package/scripts/testForEndorsments.js +4 -4
  184. package/scripts/undeleteGroupAndAllContent.js +8 -8
  185. package/scripts/undeletePost.js +7 -7
  186. package/scripts/unlinkSsn.js +4 -4
  187. package/scripts/updateFromAlthingi.js +8 -8
  188. package/scripts/users/createUserAddDomain.js +6 -5
  189. package/scripts/users/importUsersForDomainsFromXls.js +4 -3
  190. package/scripts/users/listDomainUsersWithSsn.js +6 -5
  191. package/scripts/users/removeUserFromDomain.js +6 -5
  192. package/scripts/users/updatePasswordFromSsn.js +5 -4
  193. package/scripts/users/updateUserSsnFromEmail.js +5 -4
  194. package/services/controllers/activities.cjs +1 -1
  195. package/services/controllers/news_feeds.cjs +1 -1
  196. package/services/controllers/notifications.cjs +1 -1
  197. package/services/controllers/recommendations.cjs +1 -1
  198. package/services/engine/allOurIdeas/aiHelper.js +10 -9
  199. package/services/engine/analytics/export_anon_community_activities.js +3 -3
  200. package/services/engine/analytics/importer.js +10 -10
  201. package/services/engine/analytics/plausible/manager.cjs +4 -4
  202. package/services/engine/analytics/statsCalc.cjs +1 -1
  203. package/services/engine/analytics/utils.cjs +10 -10
  204. package/services/engine/moderation/fraud/CreateFraudAuditReport.cjs +2 -1
  205. package/services/engine/moderation/fraud/FraudBase.cjs +2 -2
  206. package/services/engine/moderation/fraud/FraudDeleteBase.cjs +4 -4
  207. package/services/engine/moderation/fraud/FraudGetBase.cjs +1 -1
  208. package/services/engine/moderation/fraud/FraudGetEndorsements.cjs +1 -1
  209. package/services/engine/moderation/fraud/FraudGetPointQualities.cjs +1 -1
  210. package/services/engine/moderation/fraud/FraudGetPoints.cjs +1 -1
  211. package/services/engine/moderation/fraud/FraudGetPosts.cjs +1 -1
  212. package/services/engine/moderation/fraud/FraudGetRatings.cjs +1 -1
  213. package/services/engine/moderation/fraud/FraudScannerNotifier.cjs +9 -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/old/exporters/categories_dataset.js +11 -11
  225. package/services/engine/old/exporters/sentiment_dataset.js +12 -12
  226. package/services/engine/recommendations/events_importer.cjs +5 -5
  227. package/services/engine/recommendations/events_manager.cjs +1 -1
  228. package/services/engine/reports/add_points_to_sheet.cjs +2 -2
  229. package/services/engine/reports/commonUtils.js +3 -2
  230. package/services/engine/reports/common_utils.cjs +8 -8
  231. package/services/engine/reports/docx_group_report.cjs +1 -1
  232. package/services/engine/reports/xlsAllOurIdeasExport.js +16 -15
  233. package/services/engine/reports/xls_community_users_report.cjs +2 -2
  234. package/services/engine/reports/xls_group_report.cjs +1 -1
  235. package/services/llms/baseChatBot.js +12 -11
  236. package/services/llms/imageGeneration/chatGptImageGenerator.js +3 -2
  237. package/services/llms/imageGeneration/collectionImageGenerator.js +7 -6
  238. package/services/llms/imageGeneration/dalleImageGenerator.js +6 -5
  239. package/services/llms/imageGeneration/fluxImageGenerator.js +5 -4
  240. package/services/llms/imageGeneration/imageProcessorService.js +2 -1
  241. package/services/llms/imageGeneration/imagenImageGenerator.js +8 -7
  242. package/services/llms/imageGeneration/s3Service.js +12 -11
  243. package/services/llms/llmTranslation.js +30 -29
  244. package/services/models/ac_activity.cjs +1 -1
  245. package/services/models/ac_notification.cjs +1 -1
  246. package/services/models/ac_translation_cache.cjs +11 -11
  247. package/services/scripts/analytics/setup_all_plausible_goals.cjs +2 -2
  248. package/services/scripts/fix_old_delayed_notifications.js +3 -3
  249. package/services/scripts/kue_status.js +11 -11
  250. package/services/scripts/kue_watch_stuck_jobs.js +6 -6
  251. package/services/scripts/translation_clear_language.js +21 -21
  252. package/services/scripts/translation_delete.js +4 -4
  253. package/services/scripts/translation_replace_text_from_url.js +4 -4
  254. package/services/scripts/translation_update.js +4 -4
  255. package/services/scripts/translations_list.js +5 -5
  256. package/services/utils/airbrake.cjs +2 -1
  257. package/services/utils/redisConnection.cjs +6 -5
  258. package/services/utils/translation_helpers.cjs +3 -2
  259. package/services/utils/updateAllLocalesFromEn.js +20 -19
  260. package/services/utils/updateLocaleFolders.js +7 -6
  261. package/services/workers/activity.cjs +1 -1
  262. package/services/workers/anonymizations.cjs +1 -1
  263. package/services/workers/bulk_status_update.cjs +2 -2
  264. package/services/workers/delayed_jobs.cjs +1 -1
  265. package/services/workers/deletions.cjs +1 -1
  266. package/services/workers/email.cjs +1 -1
  267. package/services/workers/fraud_management.cjs +3 -3
  268. package/services/workers/generativeAi.js +6 -5
  269. package/services/workers/main.cjs +1 -1
  270. package/services/workers/marketing.cjs +1 -1
  271. package/services/workers/moderation.cjs +1 -1
  272. package/services/workers/notification_delivery.cjs +1 -1
  273. package/services/workers/notification_news_feed.cjs +1 -1
  274. package/services/workers/queue.cjs +2 -2
  275. package/services/workers/recount.cjs +1 -1
  276. package/services/workers/reports.cjs +1 -1
  277. package/services/workers/similarities.cjs +4 -2
  278. package/services/workers/speech_to_text.cjs +1 -1
  279. package/utils/airbrake.cjs +1 -1
  280. package/utils/cjsCodeReview.js +7 -6
  281. package/utils/community_mapping_tools.cjs +2 -2
  282. package/utils/copy_utils.cjs +31 -31
  283. package/utils/export_utils.cjs +7 -7
  284. package/utils/generateDocumentation.js +10 -9
  285. package/utils/logger.cjs +2 -23
  286. package/utils/logger.d.cts +1 -1
  287. package/utils/loggerAirbrakeTransport.cjs +52 -0
  288. package/utils/loggerAirbrakeTransport.d.cts +15 -0
  289. package/utils/loggerAirbrakeTransportTs.d.ts +15 -0
  290. package/utils/loggerAirbrakeTransportTs.js +45 -0
  291. package/utils/loggerCore.cjs +29 -0
  292. package/utils/loggerCore.d.cts +2 -0
  293. package/utils/loggerCoreTs.d.ts +2 -0
  294. package/utils/loggerCoreTs.js +23 -0
  295. package/utils/loggerTs.d.ts +1 -2
  296. package/utils/loggerTs.js +2 -25
  297. package/utils/recount_utils.cjs +5 -5
  298. package/utils/seedModels.js +50 -49
  299. package/utils/sitemap_generator.cjs +4 -4
  300. package/utils/ypLanguages.js +2 -2
  301. package/webSockets.js +8 -7
  302. package/services/utils/logger.cjs +0 -25
  303. package/services/utils/logger.d.cts +0 -2
  304. package/src/agents/assistants/assistant.d.ts +0 -156
  305. package/src/controllers/audios.d.ts +0 -5
  306. package/src/controllers/categories.d.ts +0 -5
  307. package/src/controllers/communities.d.ts +0 -5
  308. package/src/controllers/domains.d.ts +0 -5
  309. package/src/controllers/groups.d.ts +0 -5
  310. package/src/controllers/images.d.ts +0 -5
  311. package/src/controllers/points.d.ts +0 -5
  312. package/src/controllers/posts.d.ts +0 -5
  313. package/src/controllers/ratings.d.ts +0 -5
  314. package/src/controllers/users.d.ts +0 -5
  315. package/src/controllers/videos.d.ts +0 -5
  316. package/src/models/index.d.ts +0 -84
  317. package/src/services/controllers/activities.d.ts +0 -5
  318. package/src/services/controllers/notifications.d.ts +0 -5
  319. package/src/utils/copy_utils.d.ts +0 -4
  320. package/src/utils/manifest_generator.d.ts +0 -18
package/models/post.cjs CHANGED
@@ -212,10 +212,10 @@ module.exports = (sequelize, DataTypes) => {
212
212
  };
213
213
  Post.addFullTextIndex = () => {
214
214
  if (sequelize.options.dialect !== 'postgres') {
215
- console.log('Not creating search index, must be using POSTGRES to do this');
215
+ log.info('Not creating search index, must be using POSTGRES to do this');
216
216
  return;
217
217
  }
218
- console.log("Adding full text index");
218
+ log.debug("Adding full text index");
219
219
  const searchFields = ['name', 'description'];
220
220
  const vectorName = sequelize.models.Post.getSearchVector();
221
221
  sequelize.queryInterface.describeTable("posts").then((data) => {
@@ -223,30 +223,30 @@ module.exports = (sequelize, DataTypes) => {
223
223
  sequelize
224
224
  .query('ALTER TABLE "' + sequelize.models.Post.tableName + '" ADD COLUMN "' + vectorName + '" TSVECTOR')
225
225
  .then(() => {
226
- console.log("addFullTextIndex: 1");
226
+ log.info("addFullTextIndex: 1");
227
227
  return sequelize
228
228
  .query('UPDATE "' + sequelize.models.Post.tableName + '" SET "' + vectorName + '" = to_tsvector(\'english\', ' + searchFields.join(' || \' \' || ') + ')');
229
229
  }).then(() => {
230
- console.log("addFullTextIndex: 2");
230
+ log.info("addFullTextIndex: 2");
231
231
  return sequelize
232
232
  .query('CREATE INDEX post_search_idx ON "' + sequelize.models.Post.tableName + '" USING gin("' + vectorName + '");');
233
233
  }).then(() => {
234
- console.log("addFullTextIndex: 3");
234
+ log.info("addFullTextIndex: 3");
235
235
  return sequelize
236
236
  .query('CREATE TRIGGER post_vector_update BEFORE INSERT OR UPDATE ON "' + sequelize.models.Post.tableName + '" FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger("' + vectorName + '", \'pg_catalog.english\', ' + searchFields.join(', ') + ')');
237
237
  }).catch(error => {
238
- console.log(error);
238
+ log.info(error);
239
239
  });
240
240
  }
241
241
  else {
242
- log.info("PostText search index is already setup");
242
+ log.debug("PostText search index is already setup");
243
243
  }
244
244
  });
245
245
  };
246
246
  Post.search = (query, groupId, modelCategory) => {
247
- console.log("In search for " + query);
247
+ log.info("In search for " + query);
248
248
  if (sequelize.options.dialect !== 'postgres') {
249
- console.log('Search is only implemented on POSTGRES database');
249
+ log.info('Search is only implemented on POSTGRES database');
250
250
  return;
251
251
  }
252
252
  if (query) {
@@ -254,7 +254,7 @@ module.exports = (sequelize, DataTypes) => {
254
254
  term = term.replace(/'/g, "''"); // Escape single quotes
255
255
  return term + ':*';
256
256
  }).join(' & ');
257
- console.log("Using tsQuery: " + tsQuery);
257
+ log.info("Using tsQuery: " + tsQuery);
258
258
  return sequelize.models.Post.findAll({
259
259
  order: [
260
260
  ["created_at", "DESC"],
package/models/user.cjs CHANGED
@@ -587,7 +587,7 @@ module.exports = (sequelize, DataTypes) => {
587
587
  User.prototype.validatePassword = function (password, done) {
588
588
  let verified = this.encrypted_password ? bcrypt.compareSync(password, this.encrypted_password) : null;
589
589
  if (verified) {
590
- console.log(`User ${this.id} has verified password`);
590
+ log.info(`User ${this.id} has verified password`);
591
591
  done(null, this);
592
592
  }
593
593
  else {
package/models/video.cjs CHANGED
@@ -580,7 +580,7 @@ module.exports = (sequelize, DataTypes) => {
580
580
  }
581
581
  }
582
582
  else {
583
- console.error("Can't find collection for Ziggeo video");
583
+ log.error("Can't find collection for Ziggeo video");
584
584
  }
585
585
  resolve();
586
586
  });
@@ -606,7 +606,7 @@ module.exports = (sequelize, DataTypes) => {
606
606
  resolve();
607
607
  }
608
608
  catch (error) {
609
- console.error(error);
609
+ log.error(error);
610
610
  res.sendStatus(500);
611
611
  reject();
612
612
  }
@@ -830,11 +830,11 @@ module.exports = (sequelize, DataTypes) => {
830
830
  }
831
831
  log.info("foramts", { formats });
832
832
  await mediaManager.deleteMediaFormatsUrls(formats);
833
- console.log("Deleted video", { videoId: req.params.videoId });
833
+ log.info("Deleted video", { videoId: req.params.videoId });
834
834
  res.sendStatus(200);
835
835
  }
836
836
  catch (error) {
837
- console.error("Could not delete video", { error, video });
837
+ log.error("Could not delete video", { error, video });
838
838
  res.sendStatus(500);
839
839
  }
840
840
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yrpri/api",
3
- "version": "9.0.138",
3
+ "version": "9.0.140",
4
4
  "license": "MIT",
5
5
  "author": "Robert Bjarnason & Citizens Foundation",
6
6
  "repository": {
@@ -25,7 +25,7 @@
25
25
  "@google-cloud/vertexai": "^1.10.0",
26
26
  "@google-cloud/vision": "^5.1.0",
27
27
  "@node-saml/passport-saml": "^5.0.1",
28
- "@policysynth/agents": "^1.3.105",
28
+ "@policysynth/agents": "^1.3.110",
29
29
  "async": "^3.2.6",
30
30
  "authorized": "^1.0.0",
31
31
  "aws-sdk": "^2.1692.0",
@@ -138,12 +138,12 @@
138
138
  "publish_live": "npm run build:dev;npm pack && node repack && node publish.js https://registry.npmjs.org/",
139
139
  "publish_local": "npm run build;npm pack && node repack && node publish.js http://localhost:4873",
140
140
  "start": "nodemon -e ts ts-out/server.js",
141
- "watch-start": "DEBUG=router:* tsc --project ./src --outDir ./ts-out -w & nodemon -q ./ts-out/server.js",
141
+ "watch-start": "DEBUG=router:* tsc --outDir ./ts-out -w & nodemon -q ./ts-out/server.js",
142
142
  "dev": "nodemon --config nodemon.json ./ts-out/server.js",
143
143
  "heroku-postbuild": "echo 'Skipping build'",
144
144
  "dev:debug": "nodemon --config nodemon.json --inspect-brk api_app.ts",
145
- "build": "tsc --project ./src --outDir ./dist && ncp src/views dist/views && ncp config dist/config && ncp src/services/email_templates dist/services/email_templates && ncp src/services/locales dist/services/locales",
146
- "build:dev": "tsc --project ./src --outDir ./ts-out && ncp src/views ts-out/views && ncp config ts-out/config && ncp src/services/email_templates ts-out/services/email_templates && ncp src/services/locales ts-out/services/locales"
145
+ "build": "tsc --outDir ./dist && ncp src/views dist/views && ncp config dist/config && ncp src/services/email_templates dist/services/email_templates && ncp src/services/locales dist/services/locales",
146
+ "build:dev": "tsc --outDir ./ts-out && ncp src/views ts-out/views && ncp config ts-out/config && ncp src/services/email_templates ts-out/services/email_templates && ncp src/services/locales ts-out/services/locales"
147
147
  },
148
148
  "cacheDirectories": [
149
149
  "node_modules"
@@ -44,7 +44,7 @@ models.Rating.findAll({
44
44
  callback();
45
45
  });
46
46
  }, (error) => {
47
- error ? console.error(error) : console.log("Done");
47
+ error ? log.error(error) : log.info("Done");
48
48
  process.exit();
49
49
  });
50
50
  });
@@ -48,23 +48,23 @@ var getOrganizationAndUser = function (organizationId, userId, callback) {
48
48
  }
49
49
  });
50
50
  };
51
- console.log(userIdArg);
52
- console.log(organizationIdArg);
51
+ log.info(userIdArg);
52
+ log.info(organizationIdArg);
53
53
  getOrganizationAndUser(organizationIdArg, userIdArg, function (error, organization, user) {
54
- console.log(error);
55
- console.log(user);
56
- console.log(organization);
54
+ log.info(error);
55
+ log.info(user);
56
+ log.info(organization);
57
57
  if (error) {
58
- console.error(error);
58
+ log.error(error);
59
59
  }
60
60
  else if (user && organization) {
61
61
  organization.addOrganizationUsers(user).then(function (results) {
62
- console.log("Completed");
62
+ log.info("Completed");
63
63
  process.exit();
64
64
  });
65
65
  }
66
66
  else {
67
- console.error("Not found");
67
+ log.error("Not found");
68
68
  process.exit();
69
69
  }
70
70
  });
@@ -2,15 +2,16 @@ import { initializeModels, PsAgent, PsAiModel, } from "@policysynth/agents/dbMod
2
2
  import { PsAiModelSize, PsAiModelType, } from "@policysynth/agents/aiModelTypes.js";
3
3
  import models from "../../models/index.cjs";
4
4
  import { NewAiModelSetup } from "../../agents/managers/newAiModelSetup.js";
5
+ import log from "../../utils/loggerTs.js";
5
6
  (async () => {
6
7
  const [groupIdArg, sizeArg, typeArg, modelNameArg] = process.argv.slice(2);
7
8
  if (!groupIdArg || !sizeArg || !typeArg || !modelNameArg) {
8
- console.error("Usage: ts-node changeModelForWorkflowGroupTemplate.ts <groupId> <modelSize (small, medium, large)> <modeltype: text, textReasoning> <model_name>");
9
+ log.error("Usage: ts-node changeModelForWorkflowGroupTemplate.ts <groupId> <modelSize (small, medium, large)> <modeltype: text, textReasoning> <model_name>");
9
10
  process.exit(1);
10
11
  }
11
12
  const groupId = Number(groupIdArg);
12
13
  if (isNaN(groupId)) {
13
- console.error("groupId must be a number");
14
+ log.error("groupId must be a number");
14
15
  process.exit(1);
15
16
  }
16
17
  const sizeMap = {
@@ -25,11 +26,11 @@ import { NewAiModelSetup } from "../../agents/managers/newAiModelSetup.js";
25
26
  const size = sizeMap[sizeArg.toLowerCase()];
26
27
  const modelType = typeMap[typeArg.toLowerCase()];
27
28
  if (!size) {
28
- console.error("modelSize must be one of small, medium or large");
29
+ log.error("modelSize must be one of small, medium or large");
29
30
  process.exit(1);
30
31
  }
31
32
  if (!modelType) {
32
- console.error("modeltype must be text or textReasoning");
33
+ log.error("modeltype must be text or textReasoning");
33
34
  process.exit(1);
34
35
  }
35
36
  try {
@@ -64,20 +65,20 @@ import { NewAiModelSetup } from "../../agents/managers/newAiModelSetup.js";
64
65
  await NewAiModelSetup.setupApiKeysForGroup(group);
65
66
  const privateConfig = (group.private_access_configuration ?? []);
66
67
  for (const agent of subAgents) {
67
- console.log(`Updating agent ${agent.id} to use model ${newModel.name}`);
68
+ log.info(`Updating agent ${agent.id} to use model ${newModel.name}`);
68
69
  const currentModels = await agent.getAiModels();
69
- console.log(`Current models: ${currentModels.length}`);
70
+ log.info(`Current models: ${currentModels.length}`);
70
71
  for (const current of currentModels) {
71
72
  const cfg = current.configuration || {};
72
73
  if (cfg.modelSize === size && cfg.type === modelType) {
73
74
  await agent.removeAiModel(current);
74
75
  const entry = privateConfig.find((p) => p.aiModelId === current.id);
75
76
  if (entry) {
76
- console.log(`Updating entry ${entry.id} to use model ${newModel.name}`);
77
+ log.info(`Updating entry ${entry.id} to use model ${newModel.name}`);
77
78
  entry.aiModelId = newModel.id;
78
79
  }
79
80
  else {
80
- console.log(`Adding entry for agent ${agent.id} to use model ${newModel.name}`);
81
+ log.info(`Adding entry for agent ${agent.id} to use model ${newModel.name}`);
81
82
  privateConfig.push({
82
83
  aiModelId: newModel.id,
83
84
  agentId: agent.id,
@@ -85,19 +86,19 @@ import { NewAiModelSetup } from "../../agents/managers/newAiModelSetup.js";
85
86
  }
86
87
  }
87
88
  else {
88
- console.log(`Skipping model ${current.name} for agent ${agent.id} because it does not match size ${size} and type ${modelType}`);
89
+ log.info(`Skipping model ${current.name} for agent ${agent.id} because it does not match size ${size} and type ${modelType}`);
89
90
  }
90
91
  }
91
92
  await agent.addAiModel(newModel);
92
- console.log(`Updated agent ${agent.id} to use model ${newModel.name}`);
93
+ log.info(`Updated agent ${agent.id} to use model ${newModel.name}`);
93
94
  }
94
95
  group.set("private_access_configuration", privateConfig);
95
96
  group.changed("private_access_configuration", true);
96
97
  await group.save();
97
- console.log(`Group ${groupId} updated successfully`);
98
+ log.info(`Group ${groupId} updated successfully`);
98
99
  }
99
100
  catch (error) {
100
- console.error(error);
101
+ log.error(error);
101
102
  }
102
103
  finally {
103
104
  await models.sequelize.close();
@@ -1,16 +1,17 @@
1
1
  import { initializeModels, PsAgentClass, PsAgent, PsAiModel, } from "@policysynth/agents/dbModels/index.js";
2
2
  import models from "../../models/index.cjs";
3
3
  import { NewAiModelSetup } from "../../agents/managers/newAiModelSetup.js";
4
+ import log from "../../utils/loggerTs.js";
4
5
  (async () => {
5
6
  const [domainIdArg, agentClassIdArg] = process.argv.slice(2);
6
7
  if (!domainIdArg || !agentClassIdArg) {
7
- console.error("Usage: ts-node generateAgentWorkflowTemplateFromAgentClass.ts <domainId> <psAgentClassId>");
8
+ log.error("Usage: ts-node generateAgentWorkflowTemplateFromAgentClass.ts <domainId> <psAgentClassId>");
8
9
  process.exit(1);
9
10
  }
10
11
  const domainId = Number(domainIdArg);
11
12
  const agentClassId = Number(agentClassIdArg);
12
13
  if (isNaN(domainId) || isNaN(agentClassId)) {
13
- console.error("Both domainId and psAgentClassId must be valid numbers");
14
+ log.error("Both domainId and psAgentClassId must be valid numbers");
14
15
  process.exit(1);
15
16
  }
16
17
  try {
@@ -75,15 +76,15 @@ import { NewAiModelSetup } from "../../agents/managers/newAiModelSetup.js";
75
76
  parent_agent_id: topLevelAgent.id,
76
77
  configuration: {},
77
78
  });
78
- // Add Gemini 2.5 Pro Preview 2 model
79
+ // Add Gemini 2.5 Pro model
79
80
  const geminiReasoning = await PsAiModel.findOne({
80
- where: { name: "Gemini 2.5 Pro Preview 2" },
81
+ where: { name: "Gemini 2.5 Pro" },
81
82
  });
82
83
  if (geminiReasoning) {
83
84
  await psAgent.addAiModel(geminiReasoning);
84
85
  }
85
86
  else {
86
- throw new Error("Gemini 2.5 Pro Preview 2 model not found");
87
+ throw new Error("Gemini 2.5 Pro model not found");
87
88
  }
88
89
  // Add Gemini 2.0 Flash model
89
90
  const geminiFlash = await PsAiModel.findOne({
@@ -95,10 +96,10 @@ import { NewAiModelSetup } from "../../agents/managers/newAiModelSetup.js";
95
96
  else {
96
97
  throw new Error("Gemini 2.0 Flash model not found");
97
98
  }
98
- console.log(`Created community ${community.id}, group ${group.id}, top-level agent ${topLevelAgent.id}, working agent ${psAgent.id}`);
99
+ log.info(`Created community ${community.id}, group ${group.id}, top-level agent ${topLevelAgent.id}, working agent ${psAgent.id}`);
99
100
  }
100
101
  catch (error) {
101
- console.error(error);
102
+ log.error(error);
102
103
  }
103
104
  finally {
104
105
  await models.sequelize.close();
@@ -142,9 +142,9 @@ async.series([
142
142
  }*/
143
143
  ], function (error) {
144
144
  if (error) {
145
- console.error(error);
145
+ log.error(error);
146
146
  }
147
- console.log(csvOut);
147
+ log.info(csvOut);
148
148
  process.exit();
149
149
  });
150
150
  export {};
@@ -6,11 +6,11 @@ models.Point.findAll({
6
6
  models.PointRevision
7
7
  ]
8
8
  }).then(function (points) {
9
- console.log("Points count " + points.length);
9
+ log.info("Points count " + points.length);
10
10
  var counter = 0;
11
11
  async.eachSeries(points, function (point, callback) {
12
12
  if (point.user_id != point.PointRevisions[0].user_id) {
13
- console.log("Not matching for post_id " + point.post_id + " Revision count " + point.PointRevisions.length + " date" + point.created_at);
13
+ log.info("Not matching for post_id " + point.post_id + " Revision count " + point.PointRevisions.length + " date" + point.created_at);
14
14
  counter += 1;
15
15
  point.user_id = point.PointRevisions[0].user_id;
16
16
  point.save().then(function () {
@@ -21,7 +21,7 @@ models.Point.findAll({
21
21
  callback();
22
22
  }
23
23
  }, function () {
24
- console.log("Done, counted " + counter);
24
+ log.info("Done, counted " + counter);
25
25
  process.exit();
26
26
  });
27
27
  });
@@ -8,7 +8,7 @@ const mmDbPath = process.argv[3];
8
8
  const clean = (text) => {
9
9
  if (text) {
10
10
  var newText = text.replace('"', "'").replace('\n', '').replace('\r', '').replace(/(\r\n|\n|\r)/gm, "").replace(/"/gm, "'").replace(',', ';').trim();
11
- //console.log("After:" + newText);
11
+ //log.info("After:" + newText);
12
12
  return newText.replace(/´/g, '');
13
13
  }
14
14
  else {
@@ -52,17 +52,17 @@ Reader.open(mmDbPath, {}).then(reader => {
52
52
  countriesDownCount[country] += 1;
53
53
  }
54
54
  }
55
- console.log("All count");
55
+ log.info("All count");
56
56
  for (const property in countriesCount) {
57
- console.log(`${property},${countriesCount[property]}`);
57
+ log.info(`${property},${countriesCount[property]}`);
58
58
  }
59
- console.log("\n\nUp votes count");
59
+ log.info("\n\nUp votes count");
60
60
  for (const property in countriesUpCount) {
61
- console.log(`${property},${countriesUpCount[property]}`);
61
+ log.info(`${property},${countriesUpCount[property]}`);
62
62
  }
63
- console.log("\n\nDown votes count");
63
+ log.info("\n\nDown votes count");
64
64
  for (const property in countriesDownCount) {
65
- console.log(`${property},${countriesDownCount[property]}`);
65
+ log.info(`${property},${countriesDownCount[property]}`);
66
66
  }
67
67
  process.exit();
68
68
  });
@@ -179,7 +179,7 @@ async.series([
179
179
  });
180
180
  }
181
181
  ], function () {
182
- console.log(csv);
182
+ log.info(csv);
183
183
  process.exit();
184
184
  });
185
185
  export {};
@@ -5,10 +5,10 @@ var moment = require('moment');
5
5
  var id = process.argv[2];
6
6
  models.BulkStatusUpdate.findAll({}).then(function (bulkStatusUpdates) {
7
7
  _.forEach(bulkStatusUpdates, function (update) {
8
- console.log("Update: " + update.id + " name: " + update.name);
8
+ log.info("Update: " + update.id + " name: " + update.name);
9
9
  });
10
10
  process.exit();
11
11
  }).catch(function (error) {
12
- console.error(error);
12
+ log.error(error);
13
13
  });
14
14
  export {};
@@ -12,7 +12,7 @@ const getUpdatedPostsForGroup = (groupId) => {
12
12
  return updatedConfig.groups[i].posts;
13
13
  }
14
14
  }
15
- console.error("Found no posts for group id: " + groupId);
15
+ log.error("Found no posts for group id: " + groupId);
16
16
  return [];
17
17
  };
18
18
  const hasPost = (updatePosts, post) => {
@@ -30,13 +30,13 @@ const getUpdatedPosts = (currentPosts, updatedPosts, currentGroupName) => {
30
30
  posts.push(currentPosts[i]);
31
31
  }
32
32
  else {
33
- console.log(`Post removed from ${currentGroupName}: ${currentPosts[i].name}`);
33
+ log.info(`Post removed from ${currentGroupName}: ${currentPosts[i].name}`);
34
34
  }
35
35
  }
36
36
  for (let i = 0; i < updatedPosts.length; i++) {
37
37
  if (!hasPost(currentPosts, updatedPosts[i])) {
38
38
  posts.push(updatedPosts[i]);
39
- console.log(`Post added to ${currentGroupName}: ${updatedPosts[i].name}`);
39
+ log.info(`Post added to ${currentGroupName}: ${updatedPosts[i].name}`);
40
40
  }
41
41
  }
42
42
  return posts;
@@ -102,9 +102,9 @@ async.series([
102
102
  },
103
103
  ], error => {
104
104
  if (error)
105
- console.error();
105
+ log.error();
106
106
  else
107
- console.log("Completed");
107
+ log.info("Completed");
108
108
  process.exit();
109
109
  });
110
110
  export {};
@@ -8,7 +8,7 @@ var getTemplate = function (templates, title) {
8
8
  var returnTemplate;
9
9
  if (title) {
10
10
  _.forEach(templates, function (template) {
11
- // console.log(template);
11
+ // log.info(template);
12
12
  if (title == template.title) {
13
13
  returnTemplate = template;
14
14
  }
@@ -21,14 +21,14 @@ models.BulkStatusUpdate.findOne({
21
21
  id: id
22
22
  }
23
23
  }).then(function (update) {
24
- console.log("Update: " + update.id + " name: " + update.name);
25
- console.log(update.config);
26
- console.log(update.templates);
24
+ log.info("Update: " + update.id + " name: " + update.name);
25
+ log.info(update.config);
26
+ log.info(update.templates);
27
27
  if (update.config.groups) {
28
28
  async.eachSeries(update.config.groups, function (group, groupCallback) {
29
29
  if (group.posts) {
30
30
  async.eachSeries(group.posts, function (post, postCallback) {
31
- // console.log("New status: "+post.newOfficialStatus+" template: "+post.selectedTemplateName+ " content: "+getTemplateContent(update.templates,post.selectedTemplateName));
31
+ // log.info("New status: "+post.newOfficialStatus+" template: "+post.selectedTemplateName+ " content: "+getTemplateContent(update.templates,post.selectedTemplateName));
32
32
  if (post.newOfficialStatus) {
33
33
  var template = getTemplate(update.templates, post.selectedTemplateName);
34
34
  var templateContent = template ? template.content : null;
@@ -36,7 +36,7 @@ models.BulkStatusUpdate.findOne({
36
36
  templateContent = post.uniqueStatusMessage;
37
37
  }
38
38
  if (templateContent) {
39
- console.log(post.id + ": " + templateContent);
39
+ log.info(post.id + ": " + templateContent);
40
40
  async.series([
41
41
  function (doCallback) {
42
42
  models.User.findOne({
@@ -104,13 +104,13 @@ models.BulkStatusUpdate.findOne({
104
104
  }
105
105
  }, function (error) {
106
106
  if (error) {
107
- console.error(error);
107
+ log.error(error);
108
108
  }
109
- console.log("Bulk status update has been applied.");
109
+ log.info("Bulk status update has been applied.");
110
110
  process.exit();
111
111
  });
112
112
  }
113
113
  }).catch(function (error) {
114
- console.error(error);
114
+ log.error(error);
115
115
  });
116
116
  export {};
@@ -10,7 +10,7 @@ var getTemplate = function (templates, title) {
10
10
  var returnTemplate;
11
11
  if (title) {
12
12
  _.forEach(templates, function (template) {
13
- // console.log(template);
13
+ // log.info(template);
14
14
  if (title == template.title) {
15
15
  returnTemplate = template;
16
16
  }
@@ -23,15 +23,15 @@ models.BulkStatusUpdate.findOne({
23
23
  id: id
24
24
  }
25
25
  }).then(function (update) {
26
- console.log("Update: " + update.id + " name: " + update.name);
27
- console.log(update.config);
28
- console.log(update.templates);
26
+ log.info("Update: " + update.id + " name: " + update.name);
27
+ log.info(update.config);
28
+ log.info(update.templates);
29
29
  if (update.config.groups) {
30
30
  async.eachSeries(update.config.groups, function (group, groupCallback) {
31
31
  if (group.id == groupId) {
32
32
  if (group.posts) {
33
33
  async.eachSeries(group.posts, function (post, postCallback) {
34
- // console.log("New status: "+post.newOfficialStatus+" template: "+post.selectedTemplateName+ " content: "+getTemplateContent(update.templates,post.selectedTemplateName));
34
+ // log.info("New status: "+post.newOfficialStatus+" template: "+post.selectedTemplateName+ " content: "+getTemplateContent(update.templates,post.selectedTemplateName));
35
35
  if (post.newOfficialStatus) {
36
36
  var template = getTemplate(update.templates, post.selectedTemplateName);
37
37
  var templateContent = template ? template.content : null;
@@ -39,7 +39,7 @@ models.BulkStatusUpdate.findOne({
39
39
  templateContent = post.uniqueStatusMessage;
40
40
  }
41
41
  if (templateContent) {
42
- console.log(post.id + ": " + templateContent);
42
+ log.info(post.id + ": " + templateContent);
43
43
  async.series([
44
44
  function (doCallback) {
45
45
  models.User.findOne({
@@ -103,22 +103,22 @@ models.BulkStatusUpdate.findOne({
103
103
  });
104
104
  }
105
105
  else {
106
- console.log("No posts group id: " + group.id);
106
+ log.info("No posts group id: " + group.id);
107
107
  groupCallback();
108
108
  }
109
109
  }
110
110
  else {
111
- console.log("Not performing group id: " + group.id);
111
+ log.info("Not performing group id: " + group.id);
112
112
  groupCallback();
113
113
  }
114
114
  }, function (error) {
115
115
  if (error) {
116
- console.error(error);
116
+ log.error(error);
117
117
  }
118
- console.log("Bulk status update has been applied.");
118
+ log.info("Bulk status update has been applied.");
119
119
  process.exit();
120
120
  });
121
121
  }
122
122
  }).catch(function (error) {
123
- console.error(error);
123
+ log.error(error);
124
124
  });