@yrpri/api 9.0.103 → 9.0.105

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 (422) hide show
  1. package/package.json +1 -2
  2. package/dist/active-citizen/controllers/activities.cjs +0 -174
  3. package/dist/active-citizen/controllers/news_feeds.cjs +0 -96
  4. package/dist/active-citizen/controllers/notifications.cjs +0 -243
  5. package/dist/active-citizen/controllers/recommendations.cjs +0 -280
  6. package/dist/active-citizen/engine/allOurIdeas/aiHelper.js +0 -204
  7. package/dist/active-citizen/engine/allOurIdeas/explainAnswersAssistant.js +0 -66
  8. package/dist/active-citizen/engine/allOurIdeas/iconGenerator.js +0 -38
  9. package/dist/active-citizen/engine/analytics/export_anon_community_activities.js +0 -334
  10. package/dist/active-citizen/engine/analytics/importer.js +0 -308
  11. package/dist/active-citizen/engine/analytics/manager.cjs +0 -377
  12. package/dist/active-citizen/engine/analytics/plausible/manager.cjs +0 -500
  13. package/dist/active-citizen/engine/analytics/statsCalc.cjs +0 -194
  14. package/dist/active-citizen/engine/analytics/utils.cjs +0 -369
  15. package/dist/active-citizen/engine/marketing/campaign.cjs +0 -90
  16. package/dist/active-citizen/engine/moderation/fraud/CreateFraudAuditReport.cjs +0 -313
  17. package/dist/active-citizen/engine/moderation/fraud/FraudBase.cjs +0 -239
  18. package/dist/active-citizen/engine/moderation/fraud/FraudDeleteBase.cjs +0 -211
  19. package/dist/active-citizen/engine/moderation/fraud/FraudDeleteEndorsements.cjs +0 -120
  20. package/dist/active-citizen/engine/moderation/fraud/FraudDeletePointQualities.cjs +0 -114
  21. package/dist/active-citizen/engine/moderation/fraud/FraudDeletePoints.cjs +0 -101
  22. package/dist/active-citizen/engine/moderation/fraud/FraudDeletePosts.cjs +0 -84
  23. package/dist/active-citizen/engine/moderation/fraud/FraudDeleteRatings.cjs +0 -15
  24. package/dist/active-citizen/engine/moderation/fraud/FraudGetBase.cjs +0 -133
  25. package/dist/active-citizen/engine/moderation/fraud/FraudGetEndorsements.cjs +0 -185
  26. package/dist/active-citizen/engine/moderation/fraud/FraudGetPointQualities.cjs +0 -184
  27. package/dist/active-citizen/engine/moderation/fraud/FraudGetPoints.cjs +0 -170
  28. package/dist/active-citizen/engine/moderation/fraud/FraudGetPosts.cjs +0 -109
  29. package/dist/active-citizen/engine/moderation/fraud/FraudGetRatings.cjs +0 -140
  30. package/dist/active-citizen/engine/moderation/fraud/FraudScannerNotifier.cjs +0 -279
  31. package/dist/active-citizen/engine/moderation/get_moderation_items.cjs +0 -386
  32. package/dist/active-citizen/engine/moderation/image_labeling/CommunityLabeling.cjs +0 -49
  33. package/dist/active-citizen/engine/moderation/image_labeling/GroupLabeling.cjs +0 -68
  34. package/dist/active-citizen/engine/moderation/image_labeling/ImageLabelingBase.cjs +0 -288
  35. package/dist/active-citizen/engine/moderation/image_labeling/PointLabeling.cjs +0 -33
  36. package/dist/active-citizen/engine/moderation/image_labeling/PostLabeling.cjs +0 -56
  37. package/dist/active-citizen/engine/moderation/perspective_api_client.cjs +0 -106
  38. package/dist/active-citizen/engine/moderation/process_moderation_items.cjs +0 -344
  39. package/dist/active-citizen/engine/moderation/toxicity_analysis.cjs +0 -810
  40. package/dist/active-citizen/engine/news_feeds/activity_and_item_index_definitions.cjs +0 -15
  41. package/dist/active-citizen/engine/news_feeds/generate_dynamically.cjs +0 -362
  42. package/dist/active-citizen/engine/news_feeds/generate_from_notifications.cjs +0 -268
  43. package/dist/active-citizen/engine/news_feeds/news_feeds_utils.cjs +0 -439
  44. package/dist/active-citizen/engine/notifications/emails_utils.cjs +0 -569
  45. package/dist/active-citizen/engine/notifications/generate_point_notifications.cjs +0 -233
  46. package/dist/active-citizen/engine/notifications/generate_post_notifications.cjs +0 -118
  47. package/dist/active-citizen/engine/notifications/generate_post_status_change_notifications.cjs +0 -41
  48. package/dist/active-citizen/engine/notifications/notifications_utils.cjs +0 -148
  49. package/dist/active-citizen/engine/notifications/point_delivery.cjs +0 -54
  50. package/dist/active-citizen/engine/notifications/post_delivery.cjs +0 -31
  51. package/dist/active-citizen/engine/notifications/process_delayed_notifications.cjs +0 -471
  52. package/dist/active-citizen/engine/notifications/process_general_notifications.cjs +0 -212
  53. package/dist/active-citizen/engine/old/exporters/categories_dataset.js +0 -153
  54. package/dist/active-citizen/engine/old/exporters/dataset_tools.js +0 -80
  55. package/dist/active-citizen/engine/old/exporters/sentiment_dataset.js +0 -157
  56. package/dist/active-citizen/engine/recommendations/events_importer.cjs +0 -139
  57. package/dist/active-citizen/engine/recommendations/events_manager.cjs +0 -212
  58. package/dist/active-citizen/engine/reports/add_points_to_sheet.cjs +0 -83
  59. package/dist/active-citizen/engine/reports/commonUtils.js +0 -75
  60. package/dist/active-citizen/engine/reports/common_utils.cjs +0 -740
  61. package/dist/active-citizen/engine/reports/docx_group_report.cjs +0 -596
  62. package/dist/active-citizen/engine/reports/xlsAllOurIdeasExport.js +0 -232
  63. package/dist/active-citizen/engine/reports/xls_community_users_report.cjs +0 -277
  64. package/dist/active-citizen/engine/reports/xls_group_report.cjs +0 -718
  65. package/dist/active-citizen/llms/baseChatBot.js +0 -183
  66. package/dist/active-citizen/llms/imageGeneration/chatGptImageGenerator.js +0 -56
  67. package/dist/active-citizen/llms/imageGeneration/collectionImageGenerator.js +0 -109
  68. package/dist/active-citizen/llms/imageGeneration/dalleImageGenerator.js +0 -84
  69. package/dist/active-citizen/llms/imageGeneration/fluxImageGenerator.js +0 -49
  70. package/dist/active-citizen/llms/imageGeneration/iImageGenerator.js +0 -1
  71. package/dist/active-citizen/llms/imageGeneration/imageProcessorService.js +0 -64
  72. package/dist/active-citizen/llms/imageGeneration/imagenImageGenerator.js +0 -107
  73. package/dist/active-citizen/llms/imageGeneration/s3Service.js +0 -110
  74. package/dist/active-citizen/llms/llmTranslation.js +0 -472
  75. package/dist/active-citizen/models/ac_activity.cjs +0 -216
  76. package/dist/active-citizen/models/ac_background_job.cjs +0 -109
  77. package/dist/active-citizen/models/ac_campaign.cjs +0 -97
  78. package/dist/active-citizen/models/ac_client_activity.cjs +0 -23
  79. package/dist/active-citizen/models/ac_delayed_notification.cjs +0 -43
  80. package/dist/active-citizen/models/ac_following.cjs +0 -43
  81. package/dist/active-citizen/models/ac_list.cjs +0 -68
  82. package/dist/active-citizen/models/ac_list_users.cjs +0 -19
  83. package/dist/active-citizen/models/ac_mute.cjs +0 -27
  84. package/dist/active-citizen/models/ac_news_feed_item.cjs +0 -57
  85. package/dist/active-citizen/models/ac_news_feed_processed_range.cjs +0 -59
  86. package/dist/active-citizen/models/ac_notification.cjs +0 -292
  87. package/dist/active-citizen/models/ac_translation_cache.cjs +0 -750
  88. package/dist/active-citizen/models/ac_watching.cjs +0 -31
  89. package/dist/active-citizen/scripts/analytics/setup_all_plausible_goals.cjs +0 -13
  90. package/dist/active-citizen/scripts/fix_old_delayed_notifications.js +0 -63
  91. package/dist/active-citizen/scripts/kue_status.js +0 -31
  92. package/dist/active-citizen/scripts/kue_watch_stuck_jobs.js +0 -24
  93. package/dist/active-citizen/scripts/translation_clear_language.js +0 -117
  94. package/dist/active-citizen/scripts/translation_delete.js +0 -27
  95. package/dist/active-citizen/scripts/translation_replace_text_from_url.js +0 -180
  96. package/dist/active-citizen/scripts/translation_update.js +0 -28
  97. package/dist/active-citizen/scripts/translations_list.js +0 -27
  98. package/dist/active-citizen/utils/airbrake.cjs +0 -17
  99. package/dist/active-citizen/utils/get_anonymous_system_user.cjs +0 -21
  100. package/dist/active-citizen/utils/i18n.cjs +0 -3
  101. package/dist/active-citizen/utils/logger.cjs +0 -25
  102. package/dist/active-citizen/utils/redisConnection.cjs +0 -29
  103. package/dist/active-citizen/utils/to_json.cjs +0 -9
  104. package/dist/active-citizen/utils/translation_cloning.cjs +0 -171
  105. package/dist/active-citizen/utils/translation_helpers.cjs +0 -534
  106. package/dist/active-citizen/utils/truncate_text.cjs +0 -21
  107. package/dist/active-citizen/utils/updateAllLocalesFromEn.js +0 -253
  108. package/dist/active-citizen/utils/updateLocaleFolders.js +0 -34
  109. package/dist/active-citizen/workers/activity.cjs +0 -189
  110. package/dist/active-citizen/workers/anonymizations.cjs +0 -734
  111. package/dist/active-citizen/workers/bulk_status_update.cjs +0 -458
  112. package/dist/active-citizen/workers/delayed_jobs.cjs +0 -244
  113. package/dist/active-citizen/workers/deletions.cjs +0 -1911
  114. package/dist/active-citizen/workers/email.cjs +0 -9
  115. package/dist/active-citizen/workers/fraud_management.cjs +0 -109
  116. package/dist/active-citizen/workers/generativeAi.js +0 -56
  117. package/dist/active-citizen/workers/main.cjs +0 -89
  118. package/dist/active-citizen/workers/marketing.cjs +0 -25
  119. package/dist/active-citizen/workers/moderation.cjs +0 -73
  120. package/dist/active-citizen/workers/notification_delivery.cjs +0 -368
  121. package/dist/active-citizen/workers/notification_news_feed.cjs +0 -142
  122. package/dist/active-citizen/workers/queue.cjs +0 -99
  123. package/dist/active-citizen/workers/recount.cjs +0 -74
  124. package/dist/active-citizen/workers/reports.cjs +0 -42
  125. package/dist/active-citizen/workers/similarities.cjs +0 -21
  126. package/dist/active-citizen/workers/speech_to_text.cjs +0 -482
  127. package/dist/agents/assistants/agentAssistant.js +0 -88
  128. package/dist/agents/assistants/baseAssistant.js +0 -888
  129. package/dist/agents/assistants/baseAssistantWithVoice.js +0 -150
  130. package/dist/agents/assistants/modes/agentDirectConnection.js +0 -84
  131. package/dist/agents/assistants/modes/agentSelectionMode.js +0 -44
  132. package/dist/agents/assistants/modes/baseAssistantMode.js +0 -54
  133. package/dist/agents/assistants/modes/tools/agentTools.js +0 -447
  134. package/dist/agents/assistants/modes/tools/baseTools.js +0 -58
  135. package/dist/agents/assistants/modes/tools/loginTools.js +0 -156
  136. package/dist/agents/assistants/modes/tools/models/agents.js +0 -146
  137. package/dist/agents/assistants/modes/tools/models/subscriptions.js +0 -332
  138. package/dist/agents/assistants/modes/tools/models/users.js +0 -11
  139. package/dist/agents/assistants/modes/tools/navigationTools.js +0 -166
  140. package/dist/agents/assistants/modes/tools/subscriptionTools.js +0 -323
  141. package/dist/agents/assistants/modes/tools/workflowConverstationTools.js +0 -112
  142. package/dist/agents/assistants/voiceAssistant.js +0 -619
  143. package/dist/agents/controllers/agentProductController.js +0 -103
  144. package/dist/agents/controllers/agentSubscriptionController.js +0 -261
  145. package/dist/agents/controllers/assistantsController.js +0 -511
  146. package/dist/agents/controllers/policySynthAgents.js +0 -395
  147. package/dist/agents/managers/agentProductManager.js +0 -91
  148. package/dist/agents/managers/emailInvitesManager.js +0 -55
  149. package/dist/agents/managers/emailTemplateRenderer.js +0 -362
  150. package/dist/agents/managers/newAiModelSetup.js +0 -650
  151. package/dist/agents/managers/notificationAgentQueueManager.js +0 -510
  152. package/dist/agents/managers/subscriptionManager.js +0 -535
  153. package/dist/agents/managers/workflowConversationManager.js +0 -79
  154. package/dist/agents/models/agentProduct.js +0 -116
  155. package/dist/agents/models/agentProductBoosterPurchase.js +0 -58
  156. package/dist/agents/models/agentProductBundle.js +0 -68
  157. package/dist/agents/models/agentProductRun.js +0 -52
  158. package/dist/agents/models/discount.js +0 -88
  159. package/dist/agents/models/subscription.js +0 -79
  160. package/dist/agents/models/subscriptionPlan.js +0 -46
  161. package/dist/agents/models/subscriptionUser.js +0 -27
  162. package/dist/agents/models/testData/createEvolyAgentProduct.js +0 -477
  163. package/dist/agents/models/testData/old/updateAgentWorkflowConfiguration.js +0 -230
  164. package/dist/agents/models/testData/setupEvolyAgentProductConfig.js +0 -233
  165. package/dist/agents/models/testData/updateAgentWorkflowConfiguration.js +0 -230
  166. package/dist/agents/models/workflowConversation.js +0 -53
  167. package/dist/agents/tools/setTemplateWorkflowCommunityId.js +0 -46
  168. package/dist/app.js +0 -943
  169. package/dist/authorization.cjs +0 -1860
  170. package/dist/bot_control.js +0 -1930
  171. package/dist/config/config.cjs +0 -14
  172. package/dist/config/config.js +0 -14
  173. package/dist/controllers/allOurIdeas.js +0 -696
  174. package/dist/controllers/audios.cjs +0 -100
  175. package/dist/controllers/bulkStatusUpdates.cjs +0 -202
  176. package/dist/controllers/categories.cjs +0 -199
  177. package/dist/controllers/communities.cjs +0 -2996
  178. package/dist/controllers/domains.cjs +0 -1341
  179. package/dist/controllers/externalIds.cjs +0 -223
  180. package/dist/controllers/groups.cjs +0 -4309
  181. package/dist/controllers/images.cjs +0 -499
  182. package/dist/controllers/index.cjs +0 -449
  183. package/dist/controllers/legacyPages.cjs +0 -35
  184. package/dist/controllers/legacyPosts.cjs +0 -56
  185. package/dist/controllers/legacyUsers.cjs +0 -36
  186. package/dist/controllers/nonSpa.cjs +0 -574
  187. package/dist/controllers/organizations.cjs +0 -250
  188. package/dist/controllers/points.cjs +0 -1137
  189. package/dist/controllers/posts.cjs +0 -2036
  190. package/dist/controllers/ratings.cjs +0 -234
  191. package/dist/controllers/users.cjs +0 -2255
  192. package/dist/controllers/videos.cjs +0 -226
  193. package/dist/deleteUnwantedDeclerations.cjs +0 -55
  194. package/dist/migrations/agentAuditLogs.cjs +0 -46
  195. package/dist/migrations/agentClasses.cjs +0 -60
  196. package/dist/migrations/agentConnectorClasses.cjs +0 -61
  197. package/dist/migrations/agentConnectors.cjs +0 -50
  198. package/dist/migrations/agentEvals.cjs +0 -45
  199. package/dist/migrations/agentRegistries.cjs +0 -40
  200. package/dist/migrations/agents.cjs +0 -54
  201. package/dist/migrations/aiModels.cjs +0 -49
  202. package/dist/migrations/apiUsage.cjs +0 -47
  203. package/dist/migrations/apis.cjs +0 -49
  204. package/dist/migrations/groupPrivateData.cjs +0 -30
  205. package/dist/migrations/modelUsage.cjs +0 -60
  206. package/dist/migrations/oldMigrations/2019/20181030020612-AddActivitiesIndex.js +0 -23
  207. package/dist/migrations/oldMigrations/2019/20181102210612-AddFirstVideoFeatures.js +0 -360
  208. package/dist/migrations/oldMigrations/2019/20181212210612-ModerationFeatures.js +0 -29
  209. package/dist/migrations/oldMigrations/2019/2019010610612-CommunityFolders.js +0 -43
  210. package/dist/migrations/oldMigrations/2019/20190117020612-AddMissingIndexes.js +0 -24
  211. package/dist/migrations/oldMigrations/2019/20190117020612-RemoveUnusedIndexes.js +0 -29
  212. package/dist/migrations/oldMigrations/2019/20190127020612-RemoveUnusedIndexesPartThree.js +0 -22
  213. package/dist/migrations/oldMigrations/2019/20190127020612-RemoveUnusedIndexesPartTwo.js +0 -23
  214. package/dist/migrations/oldMigrations/2019/20190223020612-AddPrivateProfileDataToUsers.js +0 -18
  215. package/dist/migrations/oldMigrations/2019/20190706210612-AddCustomRatings.js +0 -43
  216. package/dist/migrations/oldMigrations/2019/20190829210612-AddGeneralStore.js +0 -36
  217. package/dist/migrations/oldMigrations/2019/20192811210612-AddAcClientActivities.js +0 -41
  218. package/dist/migrations/oldMigrations/2020/20190527020612-WorkOnIndexes.js +0 -88
  219. package/dist/migrations/oldMigrations/2020/20200409020612-AddBackgroundJob.js +0 -33
  220. package/dist/migrations/oldMigrations/2020/20200716210612-AddDataToCollections.js +0 -38
  221. package/dist/migrations/oldMigrations/2022/20220215100612-AddDataToEndorsements.js +0 -19
  222. package/dist/migrations/oldMigrations/2022/20220220100612-AddDataForFraudDetection.js +0 -19
  223. package/dist/migrations/oldMigrations/2022/20220903100612-AddPromotionFeatures.js +0 -127
  224. package/dist/migrations/oldMigrations/2022/onHold/20200527020612-AddCampaigns.js +0 -68
  225. package/dist/migrations/oldMigrations/2024/20241304175112-AddMediaSupportForHtmlGroups.cjs +0 -63
  226. package/dist/migrations/oldMigrations/older/20160511172514-AddNotificationFeatures.js +0 -14
  227. package/dist/migrations/oldMigrations/older/20161030020612-AddBulkStatusUpdate.js +0 -71
  228. package/dist/migrations/oldMigrations/older/20170514035258-add-metadata-to-invites.js +0 -12
  229. package/dist/migrations/oldMigrations/older/20180216020612-AddTranslationCaches.js +0 -46
  230. package/dist/migrations/oldMigrations/older/20180218210612-AddTranslationAndLanguages.js +0 -46
  231. package/dist/migrations/privateAccessStore.cjs +0 -55
  232. package/dist/migrations/zzz_associations.cjs +0 -154
  233. package/dist/migrations/zzzz_createUsersAndAdminsForClasses.cjs +0 -100
  234. package/dist/migrations/zzzzz_create_agent_runs.cjs +0 -606
  235. package/dist/migrations/zzzzzz_create_agent_runs_fix.cjs +0 -11
  236. package/dist/migrations/zzzzzzz_create_trees.cjs +0 -81
  237. package/dist/models/audio.cjs +0 -430
  238. package/dist/models/bulk_status_update.cjs +0 -58
  239. package/dist/models/campaign.cjs +0 -78
  240. package/dist/models/category.cjs +0 -94
  241. package/dist/models/community.cjs +0 -337
  242. package/dist/models/domain.cjs +0 -486
  243. package/dist/models/endorsement.cjs +0 -39
  244. package/dist/models/general_data_store.cjs +0 -20
  245. package/dist/models/group.cjs +0 -728
  246. package/dist/models/image.cjs +0 -579
  247. package/dist/models/index.cjs +0 -186
  248. package/dist/models/invite.cjs +0 -48
  249. package/dist/models/iso_country.cjs +0 -16
  250. package/dist/models/organization.cjs +0 -122
  251. package/dist/models/page.cjs +0 -273
  252. package/dist/models/point.cjs +0 -622
  253. package/dist/models/point_quality.cjs +0 -39
  254. package/dist/models/point_revision.cjs +0 -47
  255. package/dist/models/post.cjs +0 -680
  256. package/dist/models/post_revision.cjs +0 -38
  257. package/dist/models/post_status_change.cjs +0 -35
  258. package/dist/models/promotion.cjs +0 -34
  259. package/dist/models/rating.cjs +0 -51
  260. package/dist/models/relationship.cjs +0 -19
  261. package/dist/models/request_to_join.cjs +0 -20
  262. package/dist/models/user.cjs +0 -604
  263. package/dist/models/user_legacy_password.cjs +0 -13
  264. package/dist/models/video.cjs +0 -1137
  265. package/dist/publish.js +0 -40
  266. package/dist/repack.js +0 -53
  267. package/dist/scripts/addRatingUsersToGroup.js +0 -51
  268. package/dist/scripts/addUserToOrganization.js +0 -71
  269. package/dist/scripts/analyseRatingsForCommunity.js +0 -150
  270. package/dist/scripts/analyzeAndFixBrokenPointUsers.js +0 -28
  271. package/dist/scripts/analyzeEndorsementsByCountry.js +0 -70
  272. package/dist/scripts/analyzePostsForCommunity.js +0 -185
  273. package/dist/scripts/bulkStatusUpdates/listUpdates.js +0 -14
  274. package/dist/scripts/bulkStatusUpdates/mergeLatestPostsToUpdate.js +0 -110
  275. package/dist/scripts/bulkStatusUpdates/performUpdate.js +0 -116
  276. package/dist/scripts/bulkStatusUpdates/performUpdateForGroup.cjs +0 -124
  277. package/dist/scripts/bulkStatusUpdates/performUpdateForStatus.js +0 -141
  278. package/dist/scripts/change/changeVideoAspectTo.js +0 -34
  279. package/dist/scripts/change/setUseNewVersion.cjs +0 -22
  280. package/dist/scripts/changeCommunityGroupcount.js +0 -30
  281. package/dist/scripts/changeCommunityPostCount.js +0 -30
  282. package/dist/scripts/changeGroupPostCount.js +0 -30
  283. package/dist/scripts/changeLanguage.js +0 -50
  284. package/dist/scripts/changeOfficalStatus.js +0 -30
  285. package/dist/scripts/cleanups/deleteAnonNotifications.cjs +0 -91
  286. package/dist/scripts/cleanups/deleteLinkGroupsWithDeletedCommunities.js +0 -62
  287. package/dist/scripts/cleanups/deleteYearOldNotifications.cjs +0 -72
  288. package/dist/scripts/cleanups/removeAllUsersFromHiddenPublicGroup.js +0 -43
  289. package/dist/scripts/clearAllEndorsementInGroup.js +0 -50
  290. package/dist/scripts/cloning/clearUsersForCommunitiesFromUrl.js +0 -129
  291. package/dist/scripts/cloning/cloneFromUrlScript.js +0 -65
  292. package/dist/scripts/cloning/cloneWBFromUrlScriptAndCreateLinks.js +0 -140
  293. package/dist/scripts/cloning/cloneWBFromUrlScriptNoUsersOrPoints.js +0 -140
  294. package/dist/scripts/cloning/cloneWBSerbianFromUrlScriptAndCreateLinks.js +0 -131
  295. package/dist/scripts/cloning/copyCommunityConfigAndTranslationsFromURL.js +0 -173
  296. package/dist/scripts/cloning/copyCommunityOneGroupToDomainNoUsersNoEndorsements.js +0 -18
  297. package/dist/scripts/cloning/copyCommunityToDomainNoUsersNoEndorsements.js +0 -17
  298. package/dist/scripts/cloning/copyCommunityToDomainWithEverything.js +0 -17
  299. package/dist/scripts/cloning/copyCommunityToDomainWithOnlyGroups.js +0 -26
  300. package/dist/scripts/cloning/copyGroupConfigAndTranslationsFromURL.js +0 -205
  301. package/dist/scripts/cloning/copyPostToGroupOld.js +0 -397
  302. package/dist/scripts/cloning/copyPostVideosFromURL.js +0 -236
  303. package/dist/scripts/cloning/copyPostWithOutAnyVotingOrActivities.js +0 -17
  304. package/dist/scripts/cloning/deepCloneSerbianWBFromUrlScriptAndCreateLinks.js +0 -131
  305. package/dist/scripts/cloning/deepCloneWBFromUrlScriptAndCreateLinks.js +0 -139
  306. package/dist/scripts/cloning/setAdminsFromURL.js +0 -161
  307. package/dist/scripts/cloning/setExternalIdsFromURL.js +0 -129
  308. package/dist/scripts/countCommunity.js +0 -291
  309. package/dist/scripts/countCommunityUsers.js +0 -152
  310. package/dist/scripts/countDelayedNotifications.js +0 -18
  311. package/dist/scripts/countGroup.js +0 -246
  312. package/dist/scripts/countStuff.js +0 -67
  313. package/dist/scripts/countUniqueVotersInAGroup.js +0 -48
  314. package/dist/scripts/createInvitesAndShow.js +0 -75
  315. package/dist/scripts/database/sync_database.js +0 -14
  316. package/dist/scripts/database/sync_dev_database.js +0 -17
  317. package/dist/scripts/debugNotifications.js +0 -58
  318. package/dist/scripts/deleteAllNewsFeeds.js +0 -10
  319. package/dist/scripts/deleteCategory.js +0 -13
  320. package/dist/scripts/deleteOldAppActivities.js +0 -40
  321. package/dist/scripts/deletePostContactDataForCommunity.js +0 -53
  322. package/dist/scripts/destroy/destroy_all_but_one_domain.js +0 -1026
  323. package/dist/scripts/displayAuthorForPost.js +0 -16
  324. package/dist/scripts/endorsementFraudDetection/analyseEndorsementsForCommunity.js +0 -183
  325. package/dist/scripts/endorsementFraudDetection/bulkDeleteDuplicateEndorsmentsFromUrl.js +0 -208
  326. package/dist/scripts/exportAllStatusChanges.js +0 -36
  327. package/dist/scripts/exportClientAcitivity.js +0 -36
  328. package/dist/scripts/exportEndorsementsForCommunity.js +0 -79
  329. package/dist/scripts/exportPointQualitiesForCommunity.js +0 -84
  330. package/dist/scripts/exportPostsAndPointsForCommunity.js +0 -147
  331. package/dist/scripts/exportPostsDataSetForDomain.js +0 -244
  332. package/dist/scripts/exportPostsForGroup.js +0 -173
  333. package/dist/scripts/exportRatingsForPost.js +0 -15
  334. package/dist/scripts/exportUserEndorsementsWithUserAnalysis.js +0 -123
  335. package/dist/scripts/exportUsersForCommunity.js +0 -24
  336. package/dist/scripts/exportUsersForDomain.js +0 -24
  337. package/dist/scripts/exportUsersForGroup.js +0 -24
  338. package/dist/scripts/exports/ratingDistribution.js +0 -71
  339. package/dist/scripts/exports/whoEndorsedWhatByCommunity.js +0 -56
  340. package/dist/scripts/findUnusedClientImports.js +0 -56
  341. package/dist/scripts/fixAllPostPointCounts.js +0 -22
  342. package/dist/scripts/fixAnonNotificationsSettings.js +0 -48
  343. package/dist/scripts/fixCountKopavogur.js +0 -9
  344. package/dist/scripts/fixEndorsementsAfterCopyPostToGroup.js +0 -190
  345. package/dist/scripts/fixExternalUserId.js +0 -24
  346. package/dist/scripts/fixGroupAccess.js +0 -16
  347. package/dist/scripts/fixGroupIdeasAndPointsCount.js +0 -49
  348. package/dist/scripts/fixNotificationSettings.js +0 -39
  349. package/dist/scripts/fixSurveyRadioBakedInSubCodes.js +0 -64
  350. package/dist/scripts/fixWrongUserIdForStatusUpdates.js +0 -49
  351. package/dist/scripts/gallery/exportGalleryData.js +0 -40
  352. package/dist/scripts/gallery/importGalleryForCommunity.js +0 -168
  353. package/dist/scripts/gallery/readJsonAndDownloadImagesVersion2.js +0 -55
  354. package/dist/scripts/gallery/refreshAcApiPostIdsForCommunity.js +0 -58
  355. package/dist/scripts/genderAnalysis.js +0 -63
  356. package/dist/scripts/genderAnalysisByStatus.js +0 -62
  357. package/dist/scripts/importAllLocalesFromLocalFolders.js +0 -55
  358. package/dist/scripts/importDomain.js +0 -1652
  359. package/dist/scripts/keys/addOidcToDomain.cjs +0 -61
  360. package/dist/scripts/landUseGame/export3Ddata.js +0 -162
  361. package/dist/scripts/listLanguagesForGroup.js +0 -54
  362. package/dist/scripts/loadTestCreateDummyContentForGroup.js +0 -27
  363. package/dist/scripts/makeRecursiveMapData.js +0 -103
  364. package/dist/scripts/mapping/community_map_csv.js +0 -145
  365. package/dist/scripts/moveCommunityToDomain.js +0 -22
  366. package/dist/scripts/moveGroupToCommunity.js +0 -23
  367. package/dist/scripts/movePostToGroup.js +0 -101
  368. package/dist/scripts/movePostsToGroupsRecountGroupFromUrl.js +0 -297
  369. package/dist/scripts/oldMovePostToGroup.js +0 -153
  370. package/dist/scripts/processCsvForPdfUrls.js +0 -37
  371. package/dist/scripts/processCsvForTranslationAndToxicity.js +0 -125
  372. package/dist/scripts/recount/recount_recursive_communities.js +0 -125
  373. package/dist/scripts/recountALLCommunityGroupCounts.js +0 -37
  374. package/dist/scripts/recountAll.js +0 -97
  375. package/dist/scripts/recountCommunitesFromUrl.js +0 -58
  376. package/dist/scripts/recountCommunity.js +0 -19
  377. package/dist/scripts/recountGroup.js +0 -218
  378. package/dist/scripts/recountGroupNoUserChange.js +0 -219
  379. package/dist/scripts/resetAllEndorsementsForGroup.js +0 -57
  380. package/dist/scripts/resetEnTranslationForGroup.js +0 -45
  381. package/dist/scripts/setAdminOnAll.cjs +0 -107
  382. package/dist/scripts/setDomainAdmin.cjs +0 -43
  383. package/dist/scripts/setDomainLocales.js +0 -33
  384. package/dist/scripts/setEarlQuestionIdOnGroup.cjs +0 -29
  385. package/dist/scripts/setLanguageOnGroupCommunitesFromUrl.js +0 -86
  386. package/dist/scripts/setMemberOfAll.js +0 -101
  387. package/dist/scripts/setNewUserForContentOfCommunity.js +0 -189
  388. package/dist/scripts/setOfficialStatusOnAllPostsForCommunity.js +0 -35
  389. package/dist/scripts/setUserOnAll.js +0 -101
  390. package/dist/scripts/showCategoryForGroup.js +0 -18
  391. package/dist/scripts/showOldActivityTypes.js +0 -14
  392. package/dist/scripts/showPostsMissingCategoryForGroup.js +0 -17
  393. package/dist/scripts/showStatuses.js +0 -17
  394. package/dist/scripts/showUniqueVotersInCommunity.js +0 -61
  395. package/dist/scripts/showUserAgentsAndIpsForEmails.js +0 -66
  396. package/dist/scripts/simpleExportForGroupsForCommunity.js +0 -46
  397. package/dist/scripts/simpleExportForPointsForCommunity.js +0 -82
  398. package/dist/scripts/simpleExportForPostsForCommunity.js +0 -61
  399. package/dist/scripts/testForEndorsments.js +0 -21
  400. package/dist/scripts/undeleteGroupAndAllContent.js +0 -151
  401. package/dist/scripts/undeletePost.js +0 -135
  402. package/dist/scripts/unlinkSsn.js +0 -23
  403. package/dist/scripts/updateFromAlthingi.js +0 -303
  404. package/dist/server.js +0 -3
  405. package/dist/utils/airbrake.cjs +0 -17
  406. package/dist/utils/cjsCodeReview.js +0 -99
  407. package/dist/utils/community_mapping_tools.cjs +0 -124
  408. package/dist/utils/copy_utils.cjs +0 -1399
  409. package/dist/utils/docx_utils.cjs +0 -464
  410. package/dist/utils/export_utils.cjs +0 -491
  411. package/dist/utils/i18n.cjs +0 -17
  412. package/dist/utils/is_valid_db_id.cjs +0 -28
  413. package/dist/utils/logger.cjs +0 -25
  414. package/dist/utils/loggerTs.js +0 -26
  415. package/dist/utils/manifest_generator.cjs +0 -104
  416. package/dist/utils/parse_domain.cjs +0 -16
  417. package/dist/utils/recount_utils.cjs +0 -415
  418. package/dist/utils/sharing_parameters.cjs +0 -111
  419. package/dist/utils/sitemap_generator.cjs +0 -286
  420. package/dist/utils/to_json.cjs +0 -14
  421. package/dist/utils/ypLanguages.js +0 -747
  422. package/dist/webSockets.js +0 -77
@@ -1,619 +0,0 @@
1
- import { YpBaseChatBot } from "../../active-citizen/llms/baseChatBot.js";
2
- import WebSocket from "ws";
3
- // Extend the base class with voice capabilities
4
- export class YpBaseChatBotWithVoice extends YpBaseChatBot {
5
- constructor(wsClientId, wsClients, redisKey, redisConnection, voiceEnabled = false, parentAssistant) {
6
- super(wsClientId, wsClients, redisConnection, redisKey);
7
- this.voiceEnabled = false;
8
- this.VAD_TIMEOUT = 1000; // 1 second of silence for VAD
9
- this.sendTranscriptsToClient = false;
10
- this.isWaitingOnCancelResponseCompleted = false;
11
- this.lastNumberOfChatHistoryForInstructions = 15;
12
- this.DEBUG = false;
13
- this.parentAssistant = parentAssistant;
14
- this.voiceEnabled = voiceEnabled;
15
- this.voiceState = {
16
- speaking: false,
17
- listening: false,
18
- processingAudio: false,
19
- };
20
- // Default voice configuration
21
- this.voiceConfig = {
22
- model: process.env.OPENAI_VOICE_MODEL_NAME ||
23
- "gpt-4o-realtime-preview-2024-12-17",
24
- voice: "echo",
25
- modalities: ["text", "audio"],
26
- };
27
- this.parentAssistant.on("update-ai-model-session", this.updateAiModelSession.bind(this));
28
- }
29
- async updateAiModelSession(message) {
30
- console.log(`voiceAssistant: updateAiModelSession: ${message}`);
31
- console.log(`--------------------> Logged in memory user: ${this.parentAssistant.memory.currentUser
32
- ?.name}`);
33
- await new Promise((resolve) => setTimeout(resolve, 150));
34
- await this.initializeVoiceSession(message);
35
- }
36
- async initializeMainAssistantVoiceConnection() {
37
- if (!this.voiceEnabled)
38
- return;
39
- console.log("initializeVoiceConnection");
40
- const url = "wss://api.openai.com/v1/realtime";
41
- const wsConfig = {
42
- headers: {
43
- Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
44
- "OpenAI-Beta": "realtime=v1",
45
- },
46
- };
47
- try {
48
- const ws = new WebSocket(`${url}?model=${this.voiceConfig.model}`, wsConfig);
49
- ws.on("open", () => {
50
- console.log("Voice connection established");
51
- this.assistantVoiceConnection = {
52
- ws,
53
- connected: true,
54
- model: this.voiceConfig.model,
55
- voice: this.voiceConfig.voice,
56
- };
57
- this.initializeVoiceSession();
58
- });
59
- ws.on("close", () => {
60
- console.log("Voice connection to OpenAI closed");
61
- this.assistantVoiceConnection = undefined;
62
- });
63
- ws.on("error", (error) => {
64
- console.error("Voice connection error:", error);
65
- this.assistantVoiceConnection = undefined;
66
- });
67
- this.setupVoiceMessageHandlers(ws, true);
68
- }
69
- catch (error) {
70
- console.error("Failed to initialize voice connection:", error);
71
- throw error;
72
- }
73
- }
74
- async initializeDirectAgentVoiceConnection() {
75
- if (!this.voiceEnabled)
76
- return;
77
- //TODO: Wait because of Redis update or something figure it out
78
- //await new Promise((resolve) => setTimeout(resolve, 150));
79
- await this.sendCancelResponse();
80
- const subscriptionPlan = await this.parentAssistant.getCurrentSubscriptionPlan();
81
- if (!subscriptionPlan) {
82
- throw new Error("No subscription plan found");
83
- }
84
- if (subscriptionPlan?.AgentProduct.name) {
85
- this.exitMessageFromDirectAgentConversation = `Welcome the user back from their conversation with the ${subscriptionPlan.AgentProduct.name}. (it happened on a seperate channel). Now help the user with agent selection`;
86
- }
87
- this.sendToClient("assistant", "", "clear_audio_buffer");
88
- if (this.directAgentVoiceConnection) {
89
- console.log("Direct agent voice connection already initialized, closing");
90
- this.destroyDirectAgentVoiceConnection();
91
- }
92
- console.log("initializeDirectAgentVoiceConnection");
93
- const url = "wss://api.openai.com/v1/realtime";
94
- const wsConfig = {
95
- headers: {
96
- Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
97
- "OpenAI-Beta": "realtime=v1",
98
- },
99
- };
100
- try {
101
- const ws = new WebSocket(`${url}?model=${this.voiceConfig.model}`, wsConfig);
102
- ws.on("open", () => {
103
- console.log("Agent voice connection established");
104
- this.directAgentVoiceConnection = {
105
- ws,
106
- connected: true,
107
- model: this.voiceConfig.model,
108
- voice: this.voiceConfig.voice,
109
- };
110
- this.initializeVoiceSession("Say hi and welcome the user, offer to explain and show the user a workflow overview with the 'show_agent_workflow_overview_widget' function/tool you have access to call");
111
- });
112
- ws.on("close", () => {
113
- console.log("Agent voice connection to OpenAI closed");
114
- this.directAgentVoiceConnection = undefined;
115
- });
116
- ws.on("error", (error) => {
117
- console.error("Agent voice connection error:", error);
118
- this.directAgentVoiceConnection = undefined;
119
- });
120
- this.setupVoiceMessageHandlers(ws, false);
121
- }
122
- catch (error) {
123
- console.error("Failed to initialize voice connection:", error);
124
- throw error;
125
- }
126
- }
127
- async destroyDirectAgentVoiceConnection() {
128
- if (this.directAgentVoiceConnection) {
129
- await this.parentAssistant.loadMemoryAsync();
130
- this.directAgentVoiceConnection.ws.close();
131
- this.directAgentVoiceConnection.connected = false;
132
- this.directAgentVoiceConnection = undefined;
133
- this.parentAssistant.memory.chatLog.push({
134
- sender: "user",
135
- message: "Thank you for the information, I would now like to speak to the main assistant about selecting agents",
136
- });
137
- await this.parentAssistant.saveMemory();
138
- }
139
- }
140
- destroyAssistantVoiceConnection() {
141
- if (this.vadTimeout) {
142
- clearTimeout(this.vadTimeout);
143
- this.vadTimeout = undefined;
144
- }
145
- // Reset voice state
146
- this.voiceState = {
147
- speaking: false,
148
- listening: false,
149
- processingAudio: false,
150
- };
151
- // Close WebSocket connection
152
- if (this.assistantVoiceConnection?.ws) {
153
- this.assistantVoiceConnection.ws.close();
154
- this.assistantVoiceConnection.connected = false;
155
- this.assistantVoiceConnection = undefined;
156
- }
157
- }
158
- setupVoiceMessageHandlers(ws, disableWhenAgentIsSpeaking) {
159
- // Instead of an inline callback, keep a reference
160
- const handler = async (data) => {
161
- try {
162
- const event = JSON.parse(data.toString());
163
- if (disableWhenAgentIsSpeaking && this.directAgentVoiceConnection) {
164
- console.log("Voice message received but agent is speaking, ignoring", event.type);
165
- return;
166
- }
167
- if (this.DEBUG) {
168
- console.log("voiceMessage: ", event.type);
169
- }
170
- switch (event.type) {
171
- case "session.created":
172
- await this.handleVoiceSessionCreated(event);
173
- break;
174
- case "session.error":
175
- await this.handleVoiceSessionError(event);
176
- break;
177
- case "response.generating.started":
178
- this.voiceState.speaking = true;
179
- await this.handleVoiceResponseStatus(event);
180
- break;
181
- case "response.generating.completed":
182
- this.voiceState.speaking = false;
183
- await this.handleVoiceResponseStatus(event);
184
- break;
185
- case "input_audio_buffer.speech_started":
186
- this.handleSpeechStarted();
187
- break;
188
- case "input_audio_buffer.speech_stopped":
189
- await this.handleSpeechStopped();
190
- break;
191
- case "response.cancelled":
192
- console.log("response.cancelled");
193
- this.isWaitingOnCancelResponseCompleted = false;
194
- break;
195
- case "conversation.item.input_audio_transcription.completed":
196
- await this.handleAudioTranscriptDone(event);
197
- break;
198
- case "text":
199
- await this.handleTextOutput(event);
200
- break;
201
- case "input_audio_buffer.committed":
202
- await this.handleAudioBufferCommitted(event);
203
- break;
204
- case "response.audio.delta":
205
- await this.handleAudioDelta(event);
206
- break;
207
- case "response.output_item.done":
208
- await this.handleResponseDone(event);
209
- break;
210
- case "response.function_call_arguments.done":
211
- await this.callFunctionHandler(event);
212
- break;
213
- default:
214
- if (this.DEBUG) {
215
- console.log("Unhandled voice event type:", event.type);
216
- }
217
- if (event.type === "error") {
218
- console.log(JSON.stringify(event, null, 2));
219
- }
220
- break;
221
- }
222
- }
223
- catch (error) {
224
- console.error("Error handling voice message:", error);
225
- }
226
- };
227
- // Attach it
228
- ws.on("message", handler);
229
- // Store the reference so we can remove it in destroy()
230
- if (disableWhenAgentIsSpeaking) {
231
- this.voiceMainMessageHandler = handler;
232
- }
233
- else {
234
- this.voiceDirectMessageHandler = handler;
235
- }
236
- }
237
- destroy() {
238
- // 1) Remove voice message handlers from assistantVoiceConnection
239
- if (this.assistantVoiceConnection?.ws && this.voiceMainMessageHandler) {
240
- this.assistantVoiceConnection.ws.removeListener("message", this.voiceMainMessageHandler);
241
- this.voiceMainMessageHandler = undefined;
242
- }
243
- // 2) Remove voice message handlers from directAgentVoiceConnection
244
- if (this.directAgentVoiceConnection?.ws && this.voiceDirectMessageHandler) {
245
- this.directAgentVoiceConnection.ws.removeListener("message", this.voiceDirectMessageHandler);
246
- this.voiceDirectMessageHandler = undefined;
247
- }
248
- // 3) Close any open connections
249
- this.destroyAssistantVoiceConnection();
250
- this.destroyDirectAgentVoiceConnection();
251
- // 4) Call super destroy so it can remove *its* WebSocket listeners, etc.
252
- super.destroy();
253
- }
254
- async handleResponseDone(event) {
255
- if (event.item?.content && event.item.content.length > 0) {
256
- if (this.sendTranscriptsToClient) {
257
- this.sendToClient("assistant", event.item.content[0].transcript, "message");
258
- }
259
- this.parentAssistant.addAssistantMessage(event.item.content[0].transcript);
260
- }
261
- else {
262
- console.error("No text in response.done event");
263
- }
264
- }
265
- async handleAudioTranscriptDone(event) {
266
- if (event.transcript) {
267
- if (this.sendTranscriptsToClient) {
268
- this.sendToClient("user", event.transcript, "message");
269
- }
270
- this.parentAssistant.addUserMessage(event.transcript);
271
- }
272
- }
273
- //TODO: Don't have this duplicated in the voice assistant and main assistant
274
- async callFunctionHandler(event) {
275
- const tools = this.parentAssistant.getCurrentModeFunctions();
276
- if (!tools)
277
- return;
278
- //console.log("callFunctionHandler event: ", JSON.stringify(event, null, 2));
279
- const tool = tools.find((t) => t.name === event.name);
280
- if (!tool) {
281
- console.log("Tool not found: ", event.name);
282
- return;
283
- }
284
- const toolName = tool.name;
285
- console.log("Calling tool handler: ", toolName);
286
- const result = await tool.handler(event.arguments);
287
- // Store the result in memory for context
288
- if (result.success && result.data) {
289
- await this.parentAssistant.setModeData(`${toolName}_result`, result.data);
290
- }
291
- let resultData = result.data || result.error;
292
- // Generate a user-friendly message based on the tool result
293
- const resultMessage = `<contextFromRetrievedData>${JSON.stringify(resultData, null, 2)}</contextFromRetrievedData>`;
294
- if (resultData) {
295
- this.sendToClient("assistant", resultMessage, "hiddenContextMessage", result.uniqueToken, true);
296
- if (toolName === "switch_mode") {
297
- const createResponse = {
298
- type: "response.create",
299
- event_id: `switchMode_${this.getRandomStringAscii(10)}`,
300
- response: {
301
- modalities: this.voiceConfig.modalities,
302
- instructions: "Inform the user about the mode change",
303
- tools: this.parentAssistant.getCurrentModeFunctions(),
304
- },
305
- };
306
- this.assistantVoiceConnection?.ws.send(JSON.stringify(createResponse));
307
- }
308
- /*this.parentAssistant.memory.chatLog!.push({
309
- sender: "assistant",
310
- hiddenContextMessage: true,
311
- message: resultMessage,
312
- });
313
- await this.saveMemoryIfNeeded();*/
314
- }
315
- else {
316
- console.error(`No data returned from tool execution: ${event.name}`);
317
- }
318
- if (result.html) {
319
- console.log("--------------------------------============================> handleResponseDone result.html with token: ", result.uniqueToken);
320
- this.sendToClient("assistant", result.html, "html", result.uniqueToken, true);
321
- this.parentAssistant.addAssistantHtmlMessage(result.html, result.uniqueToken);
322
- }
323
- if (result.clientEvents) {
324
- console.log(`clientEvents: ${JSON.stringify(result.clientEvents, null, 2)}`);
325
- for (const clientEvent of result.clientEvents) {
326
- this.sendToClient("assistant", clientEvent.details, clientEvent.name);
327
- }
328
- }
329
- if (!result.success) {
330
- console.error(`Tool execution failed: ${event.name} ${result.error}`);
331
- }
332
- const responseEvent = {
333
- type: "conversation.item.create",
334
- event_id: `callFunctionHandler_${this.getRandomStringAscii(10)}`,
335
- item: {
336
- type: "function_call_output",
337
- call_id: event.call_id,
338
- output: JSON.stringify(resultData, null, 2),
339
- },
340
- };
341
- this.sendToVoiceConnection(responseEvent);
342
- if (result.error) {
343
- const createResponse = {
344
- type: "response.create",
345
- event_id: `callFunctionHandlerError_${this.getRandomStringAscii(10)}`,
346
- response: {
347
- modalities: this.voiceConfig.modalities,
348
- instructions: "Inform the user about the tool execution error",
349
- tools: this.parentAssistant.getCurrentModeFunctions(),
350
- },
351
- };
352
- this.sendToVoiceConnection(createResponse);
353
- }
354
- }
355
- getRandomStringAscii(length = 10) {
356
- return Array.from({ length }, () => Math.floor(Math.random() * 128))
357
- .map((n) => String.fromCharCode(n))
358
- .join("");
359
- }
360
- async proxyToClient(event) {
361
- console.log("proxyToClient: ", event.type);
362
- console.log(JSON.stringify(event, null, 2));
363
- const proxyMessage = {
364
- sender: "assistant",
365
- type: event.type,
366
- data: event,
367
- };
368
- this.wsClientSocket.send(JSON.stringify(proxyMessage));
369
- }
370
- // Handle incoming audio from client
371
- async handleIncomingAudio(audioData) {
372
- //console.log(`handleIncomingAudio: ${audioData.length} ${this.voiceEnabled} ${this.assistantVoiceConnection?.ws}`);
373
- if (!this.assistantVoiceConnection?.ws || !this.voiceEnabled)
374
- return;
375
- this.voiceState.lastAudioTimestamp = Date.now();
376
- // Reset VAD timeout
377
- if (this.vadTimeout) {
378
- clearTimeout(this.vadTimeout);
379
- }
380
- // Set new VAD timeout
381
- this.vadTimeout = setTimeout(() => {
382
- this.handleVADSilence();
383
- }, this.VAD_TIMEOUT);
384
- // Send audio to server
385
- const audioMessage = {
386
- type: "input_audio_buffer.append",
387
- event_id: `bufferAppend_${this.getRandomStringAscii(10)}`,
388
- audio: Buffer.from(audioData).toString("base64"),
389
- };
390
- //console.log("Sending audio message to server:");
391
- this.sendToVoiceConnection(audioMessage);
392
- }
393
- // Handle Voice Activity Detection silence
394
- async handleVADSilence() {
395
- if (!this.assistantVoiceConnection?.ws || !this.voiceState.listening)
396
- return;
397
- // Commit the audio buffer
398
- const commitMessage = {
399
- type: "input_audio_buffer.commit",
400
- event_id: `handleVADSilence_${this.getRandomStringAscii(10)}`,
401
- };
402
- this.sendToVoiceConnection(commitMessage);
403
- this.voiceState.processingAudio = true;
404
- }
405
- // Handle speech started event
406
- handleSpeechStarted() {
407
- this.voiceState.listening = true;
408
- this.sendToClient("assistant", "", "listening_start");
409
- }
410
- // Handle speech stopped event
411
- async handleSpeechStopped() {
412
- this.voiceState.listening = false;
413
- this.sendToClient("assistant", "", "listening_stop");
414
- // If we're not already processing, commit the buffer
415
- if (!this.voiceState.processingAudio) {
416
- await this.handleVADSilence();
417
- }
418
- }
419
- async handleAudioDelta(event) {
420
- if (!event.delta)
421
- return;
422
- const audioMessage = {
423
- sender: "assistant",
424
- type: "audio",
425
- base64Audio: event.delta, // base64 encoded audio
426
- };
427
- this.wsClientSocket.send(JSON.stringify(audioMessage));
428
- }
429
- // Handle text output from server
430
- async handleTextOutput(event) {
431
- if (!event.content)
432
- return;
433
- // Add to chat log
434
- this.parentAssistant.memory.chatLog.push({
435
- sender: "assistant",
436
- message: event.content,
437
- });
438
- // Send to client
439
- this.sendToClient("assistant", event.content);
440
- }
441
- sendToVoiceConnection(message) {
442
- if (this.directAgentVoiceConnection &&
443
- this.directAgentVoiceConnection.connected) {
444
- this.directAgentVoiceConnection.ws.send(JSON.stringify(message));
445
- }
446
- else {
447
- this.assistantVoiceConnection?.ws.send(JSON.stringify(message));
448
- }
449
- }
450
- // Handle audio buffer committed event
451
- async handleAudioBufferCommitted(event) {
452
- this.voiceState.processingAudio = false;
453
- }
454
- async waitForCancelResponseCompleted() {
455
- this.isWaitingOnCancelResponseCompleted = true;
456
- await Promise.race([
457
- new Promise((resolve) => {
458
- const checkFlag = () => {
459
- if (!this.isWaitingOnCancelResponseCompleted) {
460
- console.log("Cancel response completed from event");
461
- resolve(true);
462
- }
463
- else {
464
- setTimeout(checkFlag, 10); // Check every 10ms
465
- }
466
- };
467
- checkFlag();
468
- }),
469
- new Promise((resolve) => setTimeout(resolve, 75)),
470
- ]);
471
- console.log("Cancel response completed from timeout");
472
- }
473
- async sendCancelResponse() {
474
- const cancelResponse = {
475
- type: "response.cancel",
476
- event_id: `sendCancelResponse_${this.getRandomStringAscii(10)}`,
477
- };
478
- this.sendToVoiceConnection(cancelResponse);
479
- console.log("Have sent cancel response");
480
- await this.waitForCancelResponseCompleted();
481
- }
482
- async initializeVoiceSession(customResponseMessage) {
483
- if (!this.assistantVoiceConnection?.ws) {
484
- console.error("No voice connection");
485
- return;
486
- }
487
- await this.parentAssistant.initializeModes();
488
- console.log("======================> initializeVoiceSession current mode", this.parentAssistant.memory.currentMode);
489
- console.log("======================> initializeVoiceSession system prompt", this.parentAssistant.getCurrentSystemPrompt());
490
- console.log("======================> initializeVoiceSession functions", this.parentAssistant.getCurrentModeFunctions());
491
- let chatHistory;
492
- if (this.parentAssistant.memory &&
493
- this.parentAssistant.memory.chatLog &&
494
- this.parentAssistant.memory.chatLog.length > 0) {
495
- chatHistory = JSON.stringify(this.parentAssistant.memory.chatLog
496
- .filter((message) => message.message != "")
497
- .slice(-this.lastNumberOfChatHistoryForInstructions)
498
- .map((message) => ({
499
- role: message.sender,
500
- content: message.message,
501
- })));
502
- }
503
- let instructions = this.parentAssistant.getCurrentSystemPrompt() || "";
504
- //console.log("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< initializeVoiceSession current mode", JSON.stringify(this.parentAssistant.memory, null, 2));
505
- let voiceName = this.voiceConfig.voice;
506
- const subscriptionPlan = await this.parentAssistant.getCurrentSubscriptionPlan();
507
- if (this.parentAssistant.memory.currentMode ===
508
- "agent_direct_connection_mode" &&
509
- subscriptionPlan?.AgentProduct.configuration.avatar?.voiceName) {
510
- voiceName = subscriptionPlan.AgentProduct.configuration.avatar.voiceName;
511
- instructions = `${subscriptionPlan.AgentProduct.configuration.avatar.systemPrompt}\n${instructions}`;
512
- this.parentAssistant.sendAvatarUrlChange(subscriptionPlan.AgentProduct.configuration.avatar.imageUrl, subscriptionPlan.AgentProduct.name);
513
- }
514
- else {
515
- this.parentAssistant.sendAvatarUrlChange(null, null);
516
- }
517
- if (chatHistory) {
518
- instructions += `\n\n<ImportantPreviousChatHistory>\n${chatHistory}\n</ImportantPreviousChatHistory>`;
519
- }
520
- if (this.DEBUG) {
521
- console.log("initializeVoiceSession final instructions", instructions);
522
- }
523
- // Then update the session with full configuration
524
- const sessionConfig = {
525
- type: "session.update",
526
- event_id: `initializeVoiceSession_${this.getRandomStringAscii(10)}`,
527
- session: {
528
- ...this.voiceConfig,
529
- voice: voiceName,
530
- instructions: instructions,
531
- //@ts-ignore
532
- tools: this.parentAssistant.getCurrentModeFunctions(),
533
- tool_choice: "auto",
534
- temperature: 0.72,
535
- input_audio_transcription: {
536
- model: "whisper-1",
537
- },
538
- turn_detection: {
539
- type: "server_vad",
540
- threshold: 0.5,
541
- prefix_padding_ms: 300,
542
- silence_duration_ms: 500,
543
- },
544
- },
545
- };
546
- if (this.DEBUG) {
547
- console.log("Sending session config to server:", JSON.stringify(sessionConfig, null, 2));
548
- }
549
- this.sendToVoiceConnection(sessionConfig);
550
- setTimeout(() => {
551
- if (this.exitMessageFromDirectAgentConversation &&
552
- !this.directAgentVoiceConnection) {
553
- this.sendCancelResponse();
554
- setTimeout(() => {
555
- if (this.exitMessageFromDirectAgentConversation) {
556
- this.triggerResponse(this.exitMessageFromDirectAgentConversation, true);
557
- this.exitMessageFromDirectAgentConversation = undefined;
558
- }
559
- }, 250);
560
- }
561
- else if (!customResponseMessage) {
562
- this.triggerResponse("Say hi and offer to show the agents", false);
563
- }
564
- else {
565
- this.triggerResponse(customResponseMessage, false);
566
- }
567
- }, 200);
568
- }
569
- async triggerResponse(message, cancelResponse = true) {
570
- console.log("triggerResponse: ", message);
571
- const createResponse = {
572
- type: "response.create",
573
- event_id: `triggerResponse_${this.getRandomStringAscii(10)}`,
574
- response: {
575
- modalities: this.voiceConfig.modalities,
576
- instructions: message,
577
- },
578
- };
579
- if (cancelResponse) {
580
- await this.sendCancelResponse();
581
- }
582
- this.sendToVoiceConnection(createResponse);
583
- }
584
- // Handle voice-specific events
585
- async handleVoiceSessionCreated(event) {
586
- console.log("Voice session created:", event.session.id);
587
- // Additional session initialization if needed
588
- }
589
- async handleVoiceSessionError(event) {
590
- console.error("Voice session error:", event.error);
591
- this.sendToClient("system", "Voice processing error occurred", "error");
592
- }
593
- async handleVoiceResponseStatus(event) {
594
- switch (event.type) {
595
- case "response.generating.started":
596
- this.sendToClient("assistant", "", "start");
597
- break;
598
- case "response.generating.completed":
599
- this.sendToClient("assistant", "", "end");
600
- break;
601
- }
602
- }
603
- // Override the streamWebSocketResponses method to handle both modes
604
- async streamWebSocketResponses(stream) {
605
- if (this.voiceEnabled) {
606
- // For voice mode, responses are handled through the WebSocket event handlers
607
- return;
608
- }
609
- // Otherwise, use the original implementation
610
- return super.streamWebSocketResponses(stream);
611
- }
612
- // Method to update voice configuration
613
- async updateVoiceConfig(config) {
614
- this.voiceConfig = {
615
- ...this.voiceConfig,
616
- ...config,
617
- };
618
- }
619
- }